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:
claude BotandClaude Opus 5.5 committed 2026-10-08 07:59:57 +02:00
1 parent 85946ab3a2
commit af53e30e33
3 files changed
+49 -4

No files matched your search

+22
View File
@@ -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 },
});
}