Ouverture d'un schéma : cadrage sur l'ensemble du contenu
initialData.scrollToContent centre un seul élément quand le schéma déborde de la fenêtre (calculateScrollCenter → getClosestElementBounds) : le contenu apparaissait à partir du milieu de l'écran. On cadre désormais tout le schéma au premier rendu via scrollToContent(fitToContent), zoom plafonné à 100 %, dans l'éditeur comme dans la vue partagée. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ATA96SLvdmiapoLXgenYrR
This commit is contained in:
1 parent
85946ab3a2
commit
af53e30e33
3 files changed
+49
-4
No files matched your search
@@ -0,0 +1,22 @@
|
||||
import type { ExcalidrawImperativeAPI } from "@excalidraw/excalidraw/types";
|
||||
|
||||
const isMobile = () => window.matchMedia("(max-width: 768px)").matches;
|
||||
|
||||
/**
|
||||
* Cadre tout le schéma dans la zone visible, sans zoomer au-delà de 100 %.
|
||||
*
|
||||
* Remplace `initialData.scrollToContent` : quand le contenu déborde de la
|
||||
* fenêtre, Excalidraw centre alors un seul élément (le plus proche de l'origine)
|
||||
* au lieu de l'ensemble, et le schéma s'affiche à partir du milieu de l'écran.
|
||||
*/
|
||||
export function fitScene(ex: ExcalidrawImperativeAPI) {
|
||||
const elements = ex.getSceneElements();
|
||||
if (elements.length === 0) return;
|
||||
ex.scrollToContent(elements, {
|
||||
fitToContent: true,
|
||||
viewportZoomFactor: 0.9,
|
||||
animate: false,
|
||||
// Barres d'outils d'Excalidraw posées sur le canevas (en haut, et en bas sur mobile).
|
||||
canvasOffsets: { top: 64, bottom: isMobile() ? 64 : 0 },
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user