@forsion/unit 2.13.4 → 2.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/main.mjs +129 -10
- package/package.json +1 -1
- package/release.json +6 -5
- package/web/assets/ArtificialView-DHqb9CTL.js +1 -0
- package/web/assets/AutomationBuilder-CzBKmOiw.js +1 -0
- package/web/assets/CalendarConfigView-Blw47NCs.js +1 -0
- package/web/assets/CalendarSide-CFSzme3H.js +1 -0
- package/web/assets/CalendarView-B8sQfgZt.js +3 -0
- package/web/assets/CalendarView-t91KpUG7.css +1 -0
- package/web/assets/CapabilityMenu-Dzn6RbB1.js +1 -0
- package/web/assets/Chrome-owLewFu4.js +1 -0
- package/web/assets/{CodeView-GZ0BAgoW.js → CodeView-E18NDilX.js} +3 -3
- package/web/assets/CtxMenuButtons-CAiwQkOK.js +1 -0
- package/web/assets/DashboardGridView-CBbYKcCo.js +25 -0
- package/web/assets/DashboardGridView-RoVFSkNO.css +1 -0
- package/web/assets/EventCard-D9uQe7g4.js +1 -0
- package/web/assets/ExcalidrawCanvas-BSOERegJ.js +1 -0
- package/web/assets/ExcalidrawCanvas-BgcFPMpU.css +1 -0
- package/web/assets/FloatingToc-iK08Qpjc.js +1 -0
- package/web/assets/{GitCloneDialog-Bj9G3o-n.css → GitCloneDialog-DOxZk2K0.css} +1 -1
- package/web/assets/GitCloneDialog-DfY0kqhP.js +1 -0
- package/web/assets/HomepageView-BCqFe1Ym.js +4 -0
- package/web/assets/HomepageView-Bx8FbWlY.css +1 -0
- package/web/assets/ImageStudioPanels-DdwihAkT.js +3 -0
- package/web/assets/ImageStudioView-gJSYrmu1.js +1 -0
- package/web/assets/InlineAiPanel-CjYOW0_0.js +1 -0
- package/web/assets/InlineFiles-3g2jMUeA.js +1 -0
- package/web/assets/{MarkdownBlock-DQTuoen3.css → MarkdownBlock-Cqfk5DhC.css} +1 -1
- package/web/assets/MarkdownBlock-DjsGkPZ_.js +58 -0
- package/web/assets/{ModelPill-CzdNh7Mt.css → ModelPill-BiUsuhy3.css} +1 -1
- package/web/assets/ModelPill-DgyXBsL9.js +2 -0
- package/web/assets/MuseLibraryView-D_HBijmU.js +2 -0
- package/web/assets/MuseView-BVDlmM6i.js +7 -0
- package/web/assets/{PageHistoryPanel-Bn4-XmdK.js → PageHistoryPanel-B1EAPZeX.js} +2 -2
- package/web/assets/{PdfAnnotator-Cq8cklTz.js → PdfAnnotator-bdB9evsY.js} +3 -3
- package/web/assets/PenRow-DCOIGlfY.js +1 -0
- package/web/assets/PluginToolCard-BXE5vA1h.js +2 -0
- package/web/assets/PluginToolCard-BmTRr5JT.css +1 -0
- package/web/assets/ProductView-l5Q7uBy6.js +1 -0
- package/web/assets/SettingsPage-fjxfS_Mt.js +3 -0
- package/web/assets/StudioGuestSurface-360CWUwf.js +1 -0
- package/web/assets/TodoListView-BsPt2GUU.js +1 -0
- package/web/assets/Tooltip-CuXpWtdJ.js +1 -0
- package/web/assets/UnifiedPage-6xbFLtXT.js +712 -0
- package/web/assets/UnifiedPage-CTmQpf2T.css +1 -0
- package/web/assets/{ViewSelectionBar-35x8TiLA.js → ViewSelectionBar-C5FDh7fO.js} +2 -2
- package/web/assets/appStore-BskcSDl6.js +455 -0
- package/web/assets/appStore-iy8_Tmac.css +1 -0
- package/web/assets/arrow-up-right-DEykpgsH.js +1 -0
- package/web/assets/{artificial-BzLFkChP.css → artificial-BubVxExB.css} +1 -1
- package/web/assets/astryxBridge-B2IZdPvo.js +69 -0
- package/web/assets/astryxBridge-djzCiy4v.css +1 -0
- package/web/assets/automationListSource-Cm09JKkK.js +1 -0
- package/web/assets/boardSurface-Dv-aVaUJ.js +1 -0
- package/web/assets/calendarNavStore-FKStA7Hh.js +1 -0
- package/web/assets/canvasPrefs-CMulOS0k.js +1 -0
- package/web/assets/chatBoxSurface-BR_G6cxG.js +1 -0
- package/web/assets/chevron-up-C_EDOZzI.js +1 -0
- package/web/assets/{client-CaivGZFR.js → client-DD5czSuF.js} +5 -5
- package/web/assets/code-xml-vTB4LtTf.js +1 -0
- package/web/assets/{codeStudioStore-DhyMazGT.js → codeStudioStore-OswE1_s0.js} +8 -8
- package/web/assets/codingNavigation-BrkLENBZ.css +1 -0
- package/web/assets/contextMenuSurface-DqdYEGuH.js +1 -0
- package/web/assets/copy-plus-CVHqDNny.js +1 -0
- package/web/assets/create-DZWy4zBR.js +14 -0
- package/web/assets/dashboardSurface-Co4byEQm.js +1 -0
- package/web/assets/dbStore-Bc2lC8ZI.js +2 -0
- package/web/assets/deskCapture-BfTzH2aO.js +1 -0
- package/web/assets/{diff2html-Daje9Kkm.js → diff2html-0MkNy2ws.js} +2 -2
- package/web/assets/{docx-preview-CABR7n30.js → docx-preview-CwNWZegI.js} +1 -1
- package/web/assets/draft-DTzuTatQ.js +2 -0
- package/web/assets/drawingStore-BD5m2eqn.js +7 -0
- package/web/assets/file-down-Cjo_T6By.js +1 -0
- package/web/assets/floatingTocSurface-D3IIVNnq.js +1 -0
- package/web/assets/foldActions-utwZpRrA.js +1 -0
- package/web/assets/folder-DiaFWdCg.js +1 -0
- package/web/assets/folder-minus-DUEOcs12.js +1 -0
- package/web/assets/folder-plus-Cmhq0GcR.js +1 -0
- package/web/assets/gestures-Bx9M0le5.js +1 -0
- package/web/assets/git-branch-DzGWffyD.js +1 -0
- package/web/assets/homeCardStatus-NAk4A77P.js +1 -0
- package/web/assets/i18n-CAf4PT1o.css +1 -0
- package/web/assets/i18n.generated-D4-Wu9Wh.js +15 -0
- package/web/assets/imageStudio-CwG21Bat.css +1 -0
- package/web/assets/imageStudio-D67oElIb.js +4 -0
- package/web/assets/index-3VWZ1rsL.js +13 -0
- package/web/assets/index-58wBjkHy.js +3 -0
- package/web/assets/index-B9_zH7f5.js +1 -0
- package/web/assets/index-BQrMYjou.js +1 -0
- package/web/assets/index-BWrWMYua.js +1 -0
- package/web/assets/index-BdLJBf4-.js +1 -0
- package/web/assets/index-Bf3W92Hb.js +1 -0
- package/web/assets/index-BjmPaLFA.js +1 -0
- package/web/assets/index-Bv-vJTzF.js +7 -0
- package/web/assets/index-C7yb62gg.js +1 -0
- package/web/assets/index-C9gBBMYv.js +1 -0
- package/web/assets/index-CiQ59Kib.js +1 -0
- package/web/assets/{index-gt5JBIFf.js → index-CzTUjEMt.js} +2 -2
- package/web/assets/index-D4Qx6o3E.js +1 -0
- package/web/assets/index-DDBcn3UD.js +1 -0
- package/web/assets/index-DEADY94l.js +1 -0
- package/web/assets/index-DGTKsPAQ.js +1 -0
- package/web/assets/index-DRwDqvjf.js +1 -0
- package/web/assets/{index-BGfvNj7R.js → index-DexVkoxH.js} +2 -2
- package/web/assets/{index-O05r2Ty6.js → index-IMOhRWY8.js} +1 -1
- package/web/assets/index-XjvpYHIo.js +1 -0
- package/web/assets/index-YuejkHoJ.js +3412 -0
- package/web/assets/index-pH0266gX.js +1 -0
- package/web/assets/index-sQl_bGM_.js +1 -0
- package/web/assets/index-vbNFy5lS.js +1 -0
- package/web/assets/{invitePage-Bgveo6Hj.js → invitePage-BT_rFfab.js} +1 -1
- package/web/assets/{ipc-B6hkgxQL.js → ipc-8cxXGSZK.js} +1 -1
- package/web/assets/{jszip.min-eU-k-vEy.js → jszip.min-By4OI3XR.js} +1 -1
- package/web/assets/launchpad-BX4jQyF4.js +2 -0
- package/web/assets/launchpad-C9U9hpWJ.css +1 -0
- package/web/assets/layout-grid-CzxXbCDa.js +1 -0
- package/web/assets/linkFollow-J2c0wSgB.js +8 -0
- package/web/assets/{listFold-M8s5JYEC.js → listFold-B_2Xqxn_.js} +1 -1
- package/web/assets/lock-open-DVWCLSZm.js +1 -0
- package/web/assets/log-out-CdKTS7HC.js +1 -0
- package/web/assets/magnet-BmVcZ9U4.js +1 -0
- package/web/assets/main-BlVApHpj.css +1 -0
- package/web/assets/main-CForzSFD.js +15 -0
- package/web/assets/markdownEditorSurface-BiDH0__r.css +1 -0
- package/web/assets/markdownEditorSurface-Bs8FJNHu.js +3 -0
- package/web/assets/mediaPlayer-O9pVRl_k.js +1 -0
- package/web/assets/message-square-plus-CspBv9iG.js +1 -0
- package/web/assets/{messages-CKtabOqy.js → messages-CG7ywZ-K.js} +1 -1
- package/web/assets/minimize-2-Bq4vUin-.js +1 -0
- package/web/assets/mobileEntry-6u7TYC4s.css +1 -0
- package/web/assets/mobileEntry-CptXQ4Ov.js +13 -0
- package/web/assets/modelPickerSurface-C0SkjaPL.js +1 -0
- package/web/assets/nativeDownload-DlnT8U-y.js +1 -0
- package/web/assets/nativeSheetMenu-CVC51DzC.js +1 -0
- package/web/assets/pageStore-BC6Z18n7.css +1 -0
- package/web/assets/pageStore-D_fKLv-o.js +13 -0
- package/web/assets/{pageTree-BYYPgZm_.js → pageTree-DtDKozTg.js} +3 -3
- package/web/assets/pen-line-ho1GgAe2.js +1 -0
- package/web/assets/pen-tool-CV-FKFEZ.js +1 -0
- package/web/assets/pencil-BgF4Kiqp.js +1 -0
- package/web/assets/phoneList-BLVdQcXY.js +1 -0
- package/web/assets/phoneList-BpLxxdq6.css +1 -0
- package/web/assets/pluginChat-C6t6DWhY.js +2 -0
- package/web/assets/react-DOzedx9n.js +1 -0
- package/web/assets/recordSurface-C9SRNjy4.js +1 -0
- package/web/assets/redo-2-DWZTaEz-.js +1 -0
- package/web/assets/rotate-ccw-CyZpL7MX.js +1 -0
- package/web/assets/selectionActions-C2a8ImJm.js +2 -0
- package/web/assets/selectionBarSurface-DaXlyy1s.js +1 -0
- package/web/assets/sessionTitle-BtZ1BteL.js +1 -0
- package/web/assets/settingsPageSurface-Cg8FNZq3.js +1 -0
- package/web/assets/sharePage-vnghra3Q.js +2 -0
- package/web/assets/{shareViewer-BiMqIBxP.js → shareViewer-CWJQHiV-.js} +2 -2
- package/web/assets/star-ZEpUQwnX.js +1 -0
- package/web/assets/tableSurface-DfEdzVDn.js +1 -0
- package/web/assets/tanguProbe-BboOas-a.js +6 -0
- package/web/assets/{terminalView-lbcBgG0c.js → terminalView-xp8ARBLi.js} +3 -3
- package/web/assets/type-CMyP4cKt.js +1 -0
- package/web/assets/undo-2-C4ZCsMsx.js +1 -0
- package/web/assets/{unitAccount-DGwGsmC3.js → unitAccount-DNxfGo3c.js} +1 -1
- package/web/assets/{unitBridge-CE2yAvm0.js → unitBridge-Bq0n1ZM6.js} +1 -1
- package/web/assets/{unitCloudTransport-BGFwkaDM.js → unitCloudTransport-CErylgEO.js} +1 -1
- package/web/assets/unitOwnerAccess-7s-3dfNM.js +1 -0
- package/web/assets/unitShim-BfheyIG8.js +5 -0
- package/web/assets/upload-VtCrluEO.js +1 -0
- package/web/assets/userSpaces-BpeYjLni.js +1 -0
- package/web/assets/viewportLock-B0l1GU_k.css +1 -0
- package/web/assets/viewportLock-cVUalJAI.js +738 -0
- package/web/assets/zoom-in-C7R8s9x-.js +1 -0
- package/web/excalidraw/excalidraw.js +4 -2
- package/web/index.html +12 -13
- package/web/assets/ArtificialView-DLh75dAI.js +0 -1
- package/web/assets/AutomationBuilder-DNWWGnFr.js +0 -1
- package/web/assets/CalendarConfigView-G7je7k9-.js +0 -1
- package/web/assets/CalendarView-B2MtaOJk.js +0 -1
- package/web/assets/CapabilityMenu-DJaZ_Cyt.js +0 -1
- package/web/assets/CheckboxInput-FYXLaZke.js +0 -1
- package/web/assets/Chrome-CFonajM4.js +0 -1
- package/web/assets/DashboardGridView-D9s9pez_.css +0 -1
- package/web/assets/DashboardGridView-Xgw4wa0_.js +0 -17
- package/web/assets/EventCard-_39F_I5M.js +0 -1
- package/web/assets/ExcalidrawCanvas-4uYrLYin.css +0 -1
- package/web/assets/ExcalidrawCanvas-rXujil36.js +0 -1
- package/web/assets/FloatingToc-DNqAkkI0.js +0 -1
- package/web/assets/GitCloneDialog-CQx-O4j1.js +0 -1
- package/web/assets/HomepageView-DcWmTPQO.css +0 -1
- package/web/assets/HomepageView-MYEk3RCs.js +0 -3
- package/web/assets/ImageStudioPanels-4wnb2XF4.js +0 -3
- package/web/assets/ImageStudioView-qrmW8pfx.js +0 -1
- package/web/assets/InlineAiPanel-B3kd1ob2.js +0 -1
- package/web/assets/InlineFiles-Clnqh9jD.js +0 -1
- package/web/assets/MarkdownBlock-DT_wsaja.js +0 -58
- package/web/assets/ModelPill-JaIH3ffZ.js +0 -2
- package/web/assets/MuseLibraryView-DOJVVeU6.js +0 -2
- package/web/assets/MuseView-uxTmjVQa.js +0 -6
- package/web/assets/PenRow-COOYAaxx.js +0 -1
- package/web/assets/ProductView-DPTveulg.js +0 -1
- package/web/assets/RightPanel-BJUacrsf.js +0 -4
- package/web/assets/RightPanel-D0zk1g3I.css +0 -1
- package/web/assets/SketchCard-B_UU5sxV.js +0 -641
- package/web/assets/StudioGuestSurface-yBa4QKfX.js +0 -1
- package/web/assets/TargetHealthNotice-BLzDB-Xl.css +0 -1
- package/web/assets/TargetHealthNotice-CgkdTdhB.js +0 -47
- package/web/assets/TodoListView-CricdCfW.js +0 -1
- package/web/assets/Tooltip-o8ZqIb3L.js +0 -1
- package/web/assets/UnifiedPage-BWAyqj65.js +0 -69
- package/web/assets/UnifiedPage-CWXc_mo1.css +0 -1
- package/web/assets/appStore-CI1_L5OS.js +0 -3357
- package/web/assets/appStore-DQc2marq.css +0 -1
- package/web/assets/approvalText-Cy2UAUAQ.js +0 -2
- package/web/assets/arrow-up-right-BDsMFoNQ.js +0 -1
- package/web/assets/astryxBridge-CF_hpqC2.css +0 -1
- package/web/assets/astryxBridge-CH_c5xjo.js +0 -70
- package/web/assets/automationListSource-CB6AWkL_.js +0 -1
- package/web/assets/boardSurface-CLvEUjbF.js +0 -1
- package/web/assets/book-open-BLzEdGfu.js +0 -1
- package/web/assets/calendarNavStore-BHUNxDx8.js +0 -1
- package/web/assets/canvasPrefs-CvE7mgyq.js +0 -1
- package/web/assets/chatBoxSurface-CuuHLzs5.js +0 -1
- package/web/assets/circle-question-mark-BM4ZRxQS.js +0 -1
- package/web/assets/circle-x-DTcNGZDT.js +0 -1
- package/web/assets/code-xml-AE3mT4T5.js +0 -1
- package/web/assets/codingNavigation-B0kVsy4x.js +0 -53
- package/web/assets/codingNavigation-DHCidM4N.css +0 -1
- package/web/assets/create-1JI2I47p.js +0 -14
- package/web/assets/dashboardSurface-CIE5HybN.js +0 -1
- package/web/assets/deskCapture-COW7aG5Y.js +0 -1
- package/web/assets/emoji-DZ9CA_3l.css +0 -1
- package/web/assets/emoji-DphwSxPx.js +0 -1
- package/web/assets/floatingTocSurface-BOm2QYBK.js +0 -1
- package/web/assets/foldActions-DNbJPlPl.js +0 -1
- package/web/assets/folder-DotgUhYD.js +0 -1
- package/web/assets/folder-plus-aJgL9NeP.js +0 -1
- package/web/assets/gestures-dqncPOwo.js +0 -1
- package/web/assets/git-branch-CwR2qic6.js +0 -1
- package/web/assets/hack2gate-dark-Dx2RtDRI.jpg +0 -0
- package/web/assets/hack2gate-light-DRKq9tyS.jpg +0 -0
- package/web/assets/hand-XNkzNiW2.js +0 -1
- package/web/assets/hard-drive-CfWKRoAE.js +0 -1
- package/web/assets/i18n-CykmULlm.css +0 -1
- package/web/assets/i18n.generated-BwynSSMk.js +0 -15
- package/web/assets/imageStudio-CWgLpC_d.js +0 -2
- package/web/assets/imageStudio-DZ0qGU2s.css +0 -1
- package/web/assets/index-B65ULikK.js +0 -1
- package/web/assets/index-BIIeiIap.js +0 -1
- package/web/assets/index-BOzsniE1.js +0 -297
- package/web/assets/index-BfrjVzia.js +0 -13
- package/web/assets/index-Bi9UtjVz.js +0 -1
- package/web/assets/index-C1uilc9i.js +0 -1
- package/web/assets/index-C3Dc3Ivz.js +0 -1
- package/web/assets/index-CJF_Ld1Y.js +0 -1
- package/web/assets/index-CMARP4oV.js +0 -1
- package/web/assets/index-C_RsQVNm.js +0 -7
- package/web/assets/index-ChyxZMm8.js +0 -1
- package/web/assets/index-CoKcOaZg.js +0 -1
- package/web/assets/index-CuviSCbk.js +0 -1
- package/web/assets/index-Cw43kua8.js +0 -1
- package/web/assets/index-D1fu6XQN.js +0 -3
- package/web/assets/index-DG-hXb63.js +0 -1
- package/web/assets/index-DjnTfJpN.js +0 -1
- package/web/assets/index-Dtw0abst.js +0 -1
- package/web/assets/index-W3ErfZiX.js +0 -1
- package/web/assets/index-Yc56b3XX.js +0 -1
- package/web/assets/index-d4jCdYJH.js +0 -1
- package/web/assets/index-siHtlYTM.js +0 -1
- package/web/assets/launchpad-C2c1MSVX.css +0 -1
- package/web/assets/layout-grid-CraV7nhh.js +0 -1
- package/web/assets/linkFollow-BpvDWzUx.js +0 -8
- package/web/assets/list-tree-cLJw-jYQ.js +0 -1
- package/web/assets/lock-DBkXXwaI.js +0 -1
- package/web/assets/lock-open-C-9-AWct.js +0 -1
- package/web/assets/log-out-C8bDXj9P.js +0 -1
- package/web/assets/main-BiS_5wrB.css +0 -1
- package/web/assets/main-CMk6twzA.js +0 -20
- package/web/assets/markdownEditorSurface-Bql20IAf.css +0 -1
- package/web/assets/markdownEditorSurface-DgQ0TUWH.js +0 -3
- package/web/assets/message-square-plus-8pfimvem.js +0 -1
- package/web/assets/minus-CfA9fAN3.js +0 -1
- package/web/assets/mobileEntry-DS1vohuL.css +0 -1
- package/web/assets/mobileEntry-NcMcK0LV.js +0 -13
- package/web/assets/nativeDownload-CNtwSCy0.js +0 -1
- package/web/assets/pageChrome-BR4cfIaA.js +0 -1
- package/web/assets/pageChrome-BbUhILy0.css +0 -1
- package/web/assets/pen-tool-C5ftHCnm.js +0 -1
- package/web/assets/pencil-ehhM9_9k.js +0 -1
- package/web/assets/phoneList-B6gwUJZF.js +0 -9
- package/web/assets/phoneList-iRdfiKA8.css +0 -1
- package/web/assets/pluginChat-DTTWWiUS.js +0 -2
- package/web/assets/redo-2-DCEAgQlN.js +0 -1
- package/web/assets/rotate-ccw-DdkrbRAB.js +0 -1
- package/web/assets/selectionActions-BQD2kox1.js +0 -2
- package/web/assets/selectionBarSurface-CzUZmJDJ.js +0 -1
- package/web/assets/server-Ddu9f1k3.js +0 -1
- package/web/assets/sharePage-CNrm2xTC.js +0 -2
- package/web/assets/star-Dxv7XANS.js +0 -1
- package/web/assets/tableSurface-Bly1iCXc.js +0 -1
- package/web/assets/terminal-CAmmC9cV.js +0 -1
- package/web/assets/type-Dz6rnTvG.js +0 -1
- package/web/assets/undo-2-B7izWNb_.js +0 -1
- package/web/assets/unitOwnerAccess-D4nKS6Gg.js +0 -1
- package/web/assets/unitShim-2_2hhGxS.js +0 -5
- package/web/assets/upload-DqpRRAhG.js +0 -1
- package/web/assets/userSpaces-VFu4s05v.js +0 -1
- package/web/assets/viewportLock-3AOdDmwi.js +0 -631
- package/web/assets/viewportLock-djvL8fUQ.css +0 -1
- package/web/assets/zoom-in-Bf-eKTnH.js +0 -1
|
@@ -480,7 +480,7 @@ ${N}
|
|
|
480
480
|
|
|
481
481
|
The exception/error is: ${J}
|
|
482
482
|
|
|
483
|
-
Please fix the Mermaid syntax and regenerate a valid diagram.`;await h({prompt:H,isRepairFlow:!0})},W=async K=>{let N=l.messages.findIndex(J=>J.id===K.id);if(N>0){let J=l.messages[N-1];J.type==="user"&&typeof J.content=="string"&&(d(),await h({prompt:J.content,isRepairFlow:!0}))}},q=()=>{gD({app:a,data:E})},T=K=>{let N=l.messages.findIndex(H=>H.id===K&&H.type==="assistant"),J=l.messages.slice(0,N-1);I({...l,messages:J})},F=K=>{I(N=>({...N,currentPrompt:K}))};return(0,Sp.jsxs)("div",{className:`ttd-dialog-layout ${c?"ttd-dialog-layout--split":"ttd-dialog-layout--chat-only"}`,children:[(0,Sp.jsx)(oQA,{chatId:l.id,messages:l.messages,currentPrompt:l.currentPrompt,onPromptChange:F,onGenerate:h,isGenerating:B?.isGenerating??!1,generatedResponse:B?.content,isMenuOpen:u,onMenuToggle:D,onMenuClose:S,onNewChat:b,onRestoreChat:m,onDeleteChat:w,savedChats:C,activeSessionId:l.id,onAbort:p,onMermaidTabClick:v,onAiRepairClick:R,onDeleteMessage:T,onInsertMessage:x,onRetry:W,onViewAsMermaid:U,renderWarning:o,renderWelcomeScreen:t}),c&&(0,Sp.jsx)(iQA,{canvasRef:n,hideErrorDetails:B?.errorType==="parse",error:g,loaded:A.loaded,onInsert:q})]})},nTA=({mermaidToExcalidrawLib:A,onTextSubmit:e,renderWelcomeScreen:t,renderWarning:o,persistenceAdapter:i})=>(0,Sp.jsx)(rTA,{mermaidToExcalidrawLib:A,onTextSubmit:e,renderWelcomeScreen:t,renderWarning:o,persistenceAdapter:i}),rQA=nTA;Q();var zJ=G(nA(),1);X();var sQA=G(_(),1),nQA=A=>{let e=Ye(),t=(0,zJ.useRef)(null),o=(0,zJ.useRef)(0);return(0,sQA.jsx)(ra.Root,{ref:t,className:"ttd-dialog-tabs-root",value:A.tab,onValueChange:i=>{if(!i)return;let a=t.current?.closest(".Modal__content");if(a){let r=a.offsetHeight||0;r>o.current&&(o.current=r,a.style.minHeight=`min(${o.current}px, 100%)`)}A.dialog==="ttd"&&cy(["text-to-diagram","mermaid"],i)&&e({openDialog:{name:A.dialog,tab:i}})},children:A.children})};nQA.displayName="TTDDialogTabs";var gQA=nQA;Q();var lQA=G(_(),1),OJ=({children:A,...e})=>(0,lQA.jsx)(ra.List,{className:"ttd-dialog-triggers",...e,children:A});OJ.displayName="TTDDialogTabTriggers";Q();var qJ=G(_(),1),kU=({children:A,tab:e,onSelect:t,...o})=>(0,qJ.jsx)(ra.Trigger,{value:e,asChild:!0,onSelect:t,children:(0,qJ.jsx)("button",{type:"button",className:"ttd-dialog-tab-trigger",...o,children:A})});kU.displayName="TTDDialogTabTrigger";Q();var IQA=G(_(),1),LU=({tab:A,children:e,...t})=>(0,IQA.jsx)(ra.Content,{...t,value:A,children:e});LU.displayName="TTDDialogTab";Hk();var yr=G(_(),1),ID=A=>{let e=Ee();return e.openDialog?.name!=="ttd"?null:(0,yr.jsx)(gTA,{...A,tab:e.openDialog.tab})};ID.WelcomeMessage=fU;var gTA=Ic("TTDDialogBase",({tab:A,...e})=>{let t=Rt(),[o,i]=(0,SU.useState)({loaded:!1,api:Promise.resolve({})});if((0,SU.useEffect)(()=>{let r=!0;return(async()=>{try{let g=await EN();r&&g.loaded?i(g):r&&t.setOpenDialog(null)}catch{r&&t.setOpenDialog(null)}})(),()=>{r=!1}},[t]),!o.loaded)return null;let a=t.state;return(0,yr.jsx)(ei,{className:"ttd-dialog",onCloseRequest:()=>{t.setOpenDialog(null)},size:1520,title:!1,...e,autofocus:!1,children:(0,yr.jsxs)(gQA,{dialog:"ttd",tab:A,children:["__fallback"in e&&e.__fallback?(0,yr.jsx)("p",{className:"dialog-mermaid-title",children:L("mermaid.title")}):(0,yr.jsxs)(OJ,{children:[(0,yr.jsx)(kU,{tab:"text-to-diagram",children:(0,yr.jsxs)("div",{className:"ttd-dialog-tab-trigger__content",children:[L("labels.textToDiagram"),(0,yr.jsx)("div",{className:"ttd-dialog-tab-trigger__badge",children:L("chat.aiBeta")})]})}),(0,yr.jsx)(kU,{tab:"mermaid",children:L("mermaid.label")})]}),!("__fallback"in e)&&(0,yr.jsx)(LU,{className:"ttd-dialog-content",tab:"text-to-diagram",children:(0,yr.jsx)(rQA,{mermaidToExcalidrawLib:o,onTextSubmit:e.onTextSubmit,renderWelcomeScreen:e.renderWelcomeScreen,renderWarning:e.renderWarning,persistenceAdapter:e.persistenceAdapter})}),(0,yr.jsx)(LU,{className:"ttd-dialog-content",tab:"mermaid",children:(0,yr.jsx)(_EA,{mermaidToExcalidrawLib:o,isActive:A==="mermaid",selectedElements:t.scene.getSelectedElements(a)})})]})})});Q();var mB=G(nA(),1);X();O();Qt();var Ng=G(_(),1),sTA=({sourceElementId:A,onClose:e,appState:t,scene:o,generateLinkForSelection:i=F0})=>{let a=o.getNonDeletedElementsMap(),r=a.get(A)?.link??null,[n,g]=(0,mB.useState)(r),[s,l]=(0,mB.useState)(!1);(0,mB.useEffect)(()=>{let c=WA(a,t),C=r;if(c.length>0&&i){let B=R0(c,t);B&&(C=ai(i(B.id,B.type)))}g(C)},[a,t,t.selectedElementIds,r,i]);let I=(0,mB.useCallback)(()=>{if(n&&n!==a.get(A)?.link){let c=a.get(A);c&&o.mutateElement(c,{link:n})}if(!n&&s&&A){let c=a.get(A);c&&o.mutateElement(c,{link:null})}e?.()},[A,n,a,s,o,e]);return(0,mB.useEffect)(()=>{let c=C=>{t.openDialog?.name==="elementLinkSelector"&&C.key===z.ENTER&&I(),t.openDialog?.name==="elementLinkSelector"&&C.key===z.ESCAPE&&e?.()};return window.addEventListener("keydown",c),()=>{window.removeEventListener("keydown",c)}},[t,e,I]),(0,Ng.jsxs)("div",{className:"ElementLinkDialog",children:[(0,Ng.jsxs)("div",{className:"ElementLinkDialog__header",children:[(0,Ng.jsx)("h2",{children:L("elementLink.title")}),(0,Ng.jsx)("p",{children:L("elementLink.desc")})]}),(0,Ng.jsxs)("div",{className:"ElementLinkDialog__input",children:[(0,Ng.jsx)(XC,{value:n??"",onChange:c=>{s||l(!0),g(c)},onKeyDown:c=>{c.key===z.ENTER&&I()},className:"ElementLinkDialog__input-field",selectOnRender:!0}),r&&n&&(0,Ng.jsx)(PA,{type:"button",title:L("buttons.remove"),"aria-label":L("buttons.remove"),label:L("buttons.remove"),onClick:()=>{g(null),l(!0)},className:"ElementLinkDialog__remove",icon:ba})]}),(0,Ng.jsxs)("div",{className:"ElementLinkDialog__actions",children:[(0,Ng.jsx)(nc,{label:L("buttons.cancel"),onClick:()=>{e?.()},style:{marginRight:10}}),(0,Ng.jsx)(nc,{label:L("buttons.confirm"),onClick:I,actionType:"primary"})]})]})},cQA=sTA;Q();var xU=G(nA(),1);var xp=G(_(),1),CQA=({children:A,onClose:e})=>{let[t,o]=(0,xU.useState)(!!A),{container:i}=Gt(),a=xU.default.useCallback(()=>{o(!1),e&&e(),i?.focus()},[e,i]);return(0,xp.jsx)(xp.Fragment,{children:t&&(0,xp.jsx)(ei,{size:"small",onCloseRequest:a,title:L("errorDialog.title"),children:(0,xp.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:A})})})};Q();var BQA=G(nA(),1);X();X();var hA=G(_(),1),lTA=()=>(0,hA.jsxs)("div",{className:"HelpDialog__header",children:[(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://github.com/zsviczian/obsidian-excalidraw-plugin/#readme",target:"_blank",rel:"noopener",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:mN}),L("helpDialog.documentation")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://www.youtube.com/@VisualPKM",target:"_blank",rel:"noopener",children:["Visual PKM YouTube",(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:mN}),L("helpDialog.blog")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",target:"_blank",rel:"noopener noreferrer",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:qk}),L("helpDialog.github")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://youtube.com/@excalidraw",target:"_blank",rel:"noopener noreferrer",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:voA}),"YouTube"]})]}),ITA=A=>(0,hA.jsxs)(hA.Fragment,{children:[(0,hA.jsx)("h3",{children:A.title}),(0,hA.jsx)("div",{className:"HelpDialog__islands-container",children:A.children})]}),jJ=A=>(0,hA.jsxs)("div",{className:`HelpDialog__island ${A.className}`,children:[(0,hA.jsx)("h4",{className:"HelpDialog__island-title",children:A.caption}),(0,hA.jsx)("div",{className:"HelpDialog__island-content",children:A.children})]});function*cTA(A,e){let t=!0;for(let o of A)t||(yield e),t=!1,yield o}var CTA=A=>A.replace(/\b[a-z]\b/,e=>e.toUpperCase()),HA=({label:A,shortcuts:e,isOr:t=!0})=>{let o=e.map(i=>(i.endsWith("++")?[...i.slice(0,-2).split("+"),"+"]:i.split("+")).map(r=>(0,hA.jsx)(BTA,{children:CTA(r)},r)));return(0,hA.jsxs)("div",{className:"HelpDialog__shortcut",children:[(0,hA.jsx)("div",{children:A}),(0,hA.jsx)("div",{className:"HelpDialog__key-container",children:[...cTA(o,t?L("helpDialog.or"):"")]})]})},BTA=A=>(0,hA.jsx)("kbd",{className:"HelpDialog__key",...A}),dQA=({onClose:A})=>{let e=Wt(),t=BQA.default.useCallback(()=>{A&&A()},[A]);return(0,hA.jsx)(hA.Fragment,{children:(0,hA.jsxs)(ei,{onCloseRequest:t,title:L("helpDialog.title"),className:"HelpDialog",children:[(0,hA.jsx)(lTA,{}),(0,hA.jsxs)(ITA,{title:L("helpDialog.shortcuts"),children:[(0,hA.jsxs)(jJ,{className:"HelpDialog__island--tools",caption:L("helpDialog.tools"),children:[(0,hA.jsx)(HA,{label:L("toolBar.hand"),shortcuts:[z.H]}),(0,hA.jsx)(HA,{label:L("toolBar.selection"),shortcuts:[z.V,z[1]]}),(0,hA.jsx)(HA,{label:L("toolBar.rectangle"),shortcuts:[z.R,z[2]]}),(0,hA.jsx)(HA,{label:L("toolBar.diamond"),shortcuts:[z.D,z[3]]}),(0,hA.jsx)(HA,{label:L("toolBar.ellipse"),shortcuts:[z.O,z[4]]}),(0,hA.jsx)(HA,{label:L("toolBar.arrow"),shortcuts:[z.A,z[5]]}),(0,hA.jsx)(HA,{label:L("toolBar.line"),shortcuts:[z.L,z[6]]}),(0,hA.jsx)(HA,{label:L("toolBar.freedraw"),shortcuts:[z.P,z[7]]}),(0,hA.jsx)(HA,{label:L("toolBar.text"),shortcuts:[z.T,z[8]]}),(0,hA.jsx)(HA,{label:L("toolBar.image"),shortcuts:[z[9]]}),(0,hA.jsx)(HA,{label:L("toolBar.eraser"),shortcuts:[z.E,z[0]]}),(0,hA.jsx)(HA,{label:L("toolBar.frame"),shortcuts:[z.F]}),(0,hA.jsx)(HA,{label:L("toolBar.laser"),shortcuts:[z.K]}),(0,hA.jsx)(HA,{label:L("toolBar.bucketfill"),shortcuts:[z.B]}),(0,hA.jsx)(HA,{label:L("labels.eyeDropper"),shortcuts:[z.I,"Shift+S","Shift+G"]}),(0,hA.jsx)(HA,{label:L("helpDialog.editLineArrowPoints"),shortcuts:[gA("CtrlOrCmd+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.editText"),shortcuts:[gA("Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.textNewLine"),shortcuts:[gA("Enter"),gA("Shift+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.textFinish"),shortcuts:[gA("Esc"),gA("CtrlOrCmd+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.curvedArrow"),shortcuts:["A",L("helpDialog.click"),L("helpDialog.click"),L("helpDialog.click")],isOr:!1}),(0,hA.jsx)(HA,{label:L("helpDialog.curvedLine"),shortcuts:["L",L("helpDialog.click"),L("helpDialog.click"),L("helpDialog.click")],isOr:!1}),(0,hA.jsx)(HA,{label:L("helpDialog.cropStart"),shortcuts:[L("helpDialog.doubleClick"),gA("Enter")],isOr:!0}),(0,hA.jsx)(HA,{label:L("helpDialog.cropFinish"),shortcuts:[gA("Enter"),gA("Escape")],isOr:!0}),(0,hA.jsx)(HA,{label:L("toolBar.lock"),shortcuts:[z.Q]}),(0,hA.jsx)(HA,{label:L("helpDialog.preventBinding"),shortcuts:[gA("CtrlOrCmd")]}),(0,hA.jsx)(HA,{label:L("toolBar.link"),shortcuts:[gA("CtrlOrCmd+K")]}),(0,hA.jsx)(HA,{label:L("toolBar.convertElementType"),shortcuts:["Tab","Shift+Tab"],isOr:!0})]}),(0,hA.jsxs)(jJ,{className:"HelpDialog__island--view",caption:L("helpDialog.view"),children:[(0,hA.jsx)(HA,{label:L("buttons.zoomIn"),shortcuts:[gA("CtrlOrCmd++")]}),(0,hA.jsx)(HA,{label:L("buttons.zoomOut"),shortcuts:[gA("CtrlOrCmd+-")]}),(0,hA.jsx)(HA,{label:L("buttons.resetZoom"),shortcuts:[gA("CtrlOrCmd+0")]}),(0,hA.jsx)(HA,{label:L("helpDialog.zoomToFit"),shortcuts:["Shift+1"]}),(0,hA.jsx)(HA,{label:L("helpDialog.zoomToSelection"),shortcuts:["Shift+2"]}),(0,hA.jsx)(HA,{label:L("helpDialog.movePageUpDown"),shortcuts:["PgUp/PgDn"]}),(0,hA.jsx)(HA,{label:L("helpDialog.movePageLeftRight"),shortcuts:["Shift+PgUp/PgDn"]}),(0,hA.jsx)(HA,{label:L("buttons.zenMode"),shortcuts:[gA("Alt+Z")]}),(0,hA.jsx)(HA,{label:L("buttons.objectsSnapMode"),shortcuts:[gA("Alt+S")]}),(0,hA.jsx)(HA,{label:L("labels.toggleGrid"),shortcuts:[gA("CtrlOrCmd+'")]}),(0,hA.jsx)(HA,{label:L("labels.viewMode"),shortcuts:[gA("Alt+R")]}),e.isActionEnabled(WC)&&(0,hA.jsx)(HA,{label:L("labels.toggleTheme"),shortcuts:[gA("Alt+Shift+D")]}),(0,hA.jsx)(HA,{label:L("stats.fullTitle"),shortcuts:[gA("Alt+/")]}),(0,hA.jsx)(HA,{label:L("search.title"),shortcuts:[Vt("searchMenu")]}),(0,hA.jsx)(HA,{label:L("commandPalette.title"),shortcuts:uI?[Vt("commandPalette")]:[Vt("commandPalette"),Vt("commandPalette",1)]})]}),(0,hA.jsxs)(jJ,{className:"HelpDialog__island--editor",caption:L("helpDialog.editor"),children:[(0,hA.jsx)(HA,{label:L("helpDialog.createFlowchart"),shortcuts:[gA("CtrlOrCmd+Arrow Key")],isOr:!0}),(0,hA.jsx)(HA,{label:L("helpDialog.navigateFlowchart"),shortcuts:[gA("Alt+Arrow Key")],isOr:!0}),(0,hA.jsx)(HA,{label:L("labels.moveCanvas"),shortcuts:[gA(`Space+${L("helpDialog.drag")}`),gA(`Wheel+${L("helpDialog.drag")}`)],isOr:!0}),(0,hA.jsx)(HA,{label:L("buttons.clearReset"),shortcuts:[gA("CtrlOrCmd+Delete")]}),(0,hA.jsx)(HA,{label:L("labels.delete"),shortcuts:[gA("Delete")]}),(0,hA.jsx)(HA,{label:L("labels.cut"),shortcuts:[gA("CtrlOrCmd+X")]}),(0,hA.jsx)(HA,{label:L("labels.copy"),shortcuts:[gA("CtrlOrCmd+C")]}),(0,hA.jsx)(HA,{label:L("labels.paste"),shortcuts:[gA("CtrlOrCmd+V")]}),(0,hA.jsx)(HA,{label:L("labels.pasteAsPlaintext"),shortcuts:[gA("CtrlOrCmd+Shift+V")]}),(0,hA.jsx)(HA,{label:L("labels.selectAll"),shortcuts:[gA("CtrlOrCmd+A")]}),(0,hA.jsx)(HA,{label:L("labels.multiSelect"),shortcuts:[gA(`Shift+${L("helpDialog.click")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.deepSelect"),shortcuts:[gA(`CtrlOrCmd+${L("helpDialog.click")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.deepBoxSelect"),shortcuts:[gA(`CtrlOrCmd+${L("helpDialog.drag")}`)]}),(du||uI)&&(0,hA.jsx)(HA,{label:L("labels.copyAsPng"),shortcuts:[gA("Shift+Alt+C")]}),(0,hA.jsx)(HA,{label:L("labels.copyStyles"),shortcuts:[gA("CtrlOrCmd+Alt+C")]}),(0,hA.jsx)(HA,{label:L("labels.pasteStyles"),shortcuts:[gA("CtrlOrCmd+Alt+V")]}),(0,hA.jsx)(HA,{label:L("labels.sendToBack"),shortcuts:[Fa?gA("CtrlOrCmd+Alt+["):gA("CtrlOrCmd+Shift+[")]}),(0,hA.jsx)(HA,{label:L("labels.bringToFront"),shortcuts:[Fa?gA("CtrlOrCmd+Alt+]"):gA("CtrlOrCmd+Shift+]")]}),(0,hA.jsx)(HA,{label:L("labels.sendBackward"),shortcuts:[gA("CtrlOrCmd+[")]}),(0,hA.jsx)(HA,{label:L("labels.bringForward"),shortcuts:[gA("CtrlOrCmd+]")]}),(0,hA.jsx)(HA,{label:L("labels.alignTop"),shortcuts:[gA("CtrlOrCmd+Shift+Up")]}),(0,hA.jsx)(HA,{label:L("labels.alignBottom"),shortcuts:[gA("CtrlOrCmd+Shift+Down")]}),(0,hA.jsx)(HA,{label:L("labels.alignLeft"),shortcuts:[gA("CtrlOrCmd+Shift+Left")]}),(0,hA.jsx)(HA,{label:L("labels.alignRight"),shortcuts:[gA("CtrlOrCmd+Shift+Right")]}),(0,hA.jsx)(HA,{label:L("labels.duplicateSelection"),shortcuts:[gA("CtrlOrCmd+D"),gA(`Alt+${L("helpDialog.drag")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.toggleElementLock"),shortcuts:[gA("CtrlOrCmd+Shift+L")]}),(0,hA.jsx)(HA,{label:L("buttons.undo"),shortcuts:[gA("CtrlOrCmd+Z")]}),(0,hA.jsx)(HA,{label:L("buttons.redo"),shortcuts:b3?[gA("CtrlOrCmd+Y"),gA("CtrlOrCmd+Shift+Z")]:[gA("CtrlOrCmd+Shift+Z")]}),(0,hA.jsx)(HA,{label:L("labels.group"),shortcuts:[gA("CtrlOrCmd+G")]}),(0,hA.jsx)(HA,{label:L("labels.ungroup"),shortcuts:[gA("CtrlOrCmd+Shift+G")]}),(0,hA.jsx)(HA,{label:L("labels.flipHorizontal"),shortcuts:[gA("Shift+H")]}),(0,hA.jsx)(HA,{label:L("labels.flipVertical"),shortcuts:[gA("Shift+V")]}),(0,hA.jsx)(HA,{label:L("labels.showStroke"),shortcuts:[gA("S")]}),(0,hA.jsx)(HA,{label:L("labels.showBackground"),shortcuts:[gA("G")]}),(0,hA.jsx)(HA,{label:L("labels.showFonts"),shortcuts:[gA("Shift+F")]}),(0,hA.jsx)(HA,{label:L("labels.decreaseFontSize"),shortcuts:[gA("CtrlOrCmd+Shift+<")]}),(0,hA.jsx)(HA,{label:L("labels.increaseFontSize"),shortcuts:[gA("CtrlOrCmd+Shift+>")]})]})]})]})})};Q();var En=G(nA(),1);X();Ka();PI();Q();var Gp=G(nA(),1),dTA=2e3,EQA=()=>{let[A,e]=(0,Gp.useState)(null),t=(0,Gp.useRef)(0),o=()=>{clearTimeout(t.current),e("success"),t.current=window.setTimeout(()=>{e(null)},dTA)},i=(0,Gp.useCallback)(()=>{e(null)},[]);return{copyStatus:A,resetCopyStatus:i,onCopy:o}};Qt();Q();var VJ=G(_(),1),cD=({title:A,name:e,checked:t,onChange:o,disabled:i=!1})=>(0,VJ.jsx)("div",{className:iA("Switch",{toggled:t,disabled:i}),children:(0,VJ.jsx)("input",{name:e,id:e,title:A,type:"checkbox",checked:t,disabled:i,onChange:()=>o(!t),onKeyDown:a=>{a.key===" "&&o(!t)}})});var rt=G(_(),1),ETA=()=>(0,rt.jsxs)("div",{children:[(0,rt.jsx)("h3",{children:L("canvasError.cannotShowPreview")}),(0,rt.jsx)("p",{children:(0,rt.jsx)("span",{children:L("canvasError.canvasTooBig")})}),(0,rt.jsxs)("em",{children:["(",L("canvasError.canvasTooBigTip"),")"]})]}),QTA=({appStateSnapshot:A,elementsSnapshot:e,files:t,actionManager:o,onExportImage:i,name:a,exportWithDarkMode:r})=>{let n=Et(e,A),[g,s]=(0,En.useState)(a),[l,I]=(0,En.useState)(n),[c,C]=(0,En.useState)(A.exportBackground),[B,d]=(0,En.useState)(A.exportEmbedScene),[E,h]=(0,En.useState)(A.exportScale),p=(0,En.useRef)(null),u=(0,En.useRef)(0),[m,w]=(0,En.useState)(null),{onCopy:b,copyStatus:D,resetCopyStatus:S}=EQA();(0,En.useEffect)(()=>{S()},[g,c,r,E,B,S]);let{exportedElements:U,exportingFrame:v}=AE(e,A,l);return(0,En.useEffect)(()=>{let x=p.current;if(!x)return;let R=x.offsetWidth,W=x.offsetHeight;if(!R)return;let q=++u.current,T=()=>q!==u.current;return ac({elements:U,appState:{...A,name:g,exportBackground:c,exportWithDarkMode:r,exportScale:E,exportEmbedScene:B},files:t,exportPadding:BI,maxWidthOrHeight:Math.max(R,W),exportingFrame:v}).then(async F=>{if(!T()){try{await Ld(F)}catch(K){throw K.name==="CANVAS_POSSIBLY_TOO_BIG"?new Error(L("canvasError.canvasTooBig")):K}T()||(w(null),x.replaceChildren(F))}}).catch(F=>{T()||(console.error(F),w(F))}),()=>{u.current+=1}},[A,t,U,v,g,c,r,E,B]),(0,rt.jsxs)("div",{className:"ImageExportModal",children:[(0,rt.jsx)("h3",{children:L("imageExportDialog.header")}),(0,rt.jsxs)("div",{className:"ImageExportModal__preview",children:[(0,rt.jsx)("div",{className:"ImageExportModal__preview__canvas",ref:p,children:m&&(0,rt.jsx)(ETA,{})}),(0,rt.jsx)("div",{className:"ImageExportModal__preview__filename",children:!ag&&(0,rt.jsx)("input",{type:"text",className:"TextInput",value:g,style:{width:"30ch"},onChange:x=>{s(x.target.value),o.executeAction(z1,"ui",x.target.value)}})})]}),(0,rt.jsxs)("div",{className:"ImageExportModal__settings",children:[(0,rt.jsx)("h3",{children:L("imageExportDialog.header")}),n&&(0,rt.jsx)(CD,{label:L("imageExportDialog.label.onlySelected"),name:"exportOnlySelected",children:(0,rt.jsx)(cD,{name:"exportOnlySelected",checked:l,onChange:x=>{I(x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.withBackground"),name:"exportBackgroundSwitch",children:(0,rt.jsx)(cD,{name:"exportBackgroundSwitch",checked:c,onChange:x=>{C(x),o.executeAction(O1,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.darkMode"),name:"exportDarkModeSwitch",children:(0,rt.jsx)(cD,{name:"exportDarkModeSwitch",checked:r,onChange:x=>{o.executeAction(kgA,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.embedScene"),tooltip:L("imageExportDialog.tooltip.embedScene"),name:"exportEmbedSwitch",children:(0,rt.jsx)(cD,{name:"exportEmbedSwitch",checked:B,onChange:x=>{d(x),o.executeAction($S,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.scale"),name:"exportScale",children:(0,rt.jsx)(IG,{name:"exportScale",value:E,onChange:x=>{h(x),o.executeAction(DgA,"ui",x)},choices:i3.map(x=>({value:x,label:`${x}\xD7`}))})}),(0,rt.jsxs)("div",{className:"ImageExportModal__settings__buttons",children:[(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.exportToPng"),onClick:()=>i(_D.png,U,{exportingFrame:v}),icon:JN,children:L("imageExportDialog.button.exportToPng")}),(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.exportToSvg"),onClick:()=>i(_D.svg,U,{exportingFrame:v}),icon:JN,children:L("imageExportDialog.button.exportToSvg")}),(du||uI)&&(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.copyPngToClipboard"),status:D,onClick:async()=>{await i(_D.clipboard,U,{exportingFrame:v}),b()},icon:Mh,children:L("imageExportDialog.button.copyPngToClipboard")})]})]})]})},CD=({label:A,children:e,tooltip:t,name:o})=>(0,rt.jsxs)("div",{className:"ImageExportModal__settings__setting",title:A,children:[(0,rt.jsxs)("label",{htmlFor:o,className:"ImageExportModal__settings__setting__label",children:[A,t&&(0,rt.jsx)(Jl,{label:t,long:!0,children:CoA})]}),(0,rt.jsx)("div",{className:"ImageExportModal__settings__setting__content",children:e})]}),QQA=({elements:A,appState:e,files:t,actionManager:o,onExportImage:i,onCloseRequest:a,name:r})=>{let[{appStateSnapshot:n,elementsSnapshot:g}]=(0,En.useState)(()=>({appStateSnapshot:Fr(e),elementsSnapshot:Fr(A)}));return(0,rt.jsx)(ei,{onCloseRequest:a,size:"wide",title:!1,children:(0,rt.jsx)(QTA,{elementsSnapshot:g,appStateSnapshot:n,files:t,actionManager:o,onExportImage:i,name:r,exportWithDarkMode:e.exportWithDarkMode})})};Q();var uQA=G(nA(),1);X();PI();Q();var hQA=G(_(),1),XJ={primary:{base:"var(--color-primary)",darker:"var(--color-primary-darker)",darkest:"var(--color-primary-darkest)"},lime:{base:"#74b816",darker:"#66a80f",darkest:"#5c940d"},pink:{base:"#d6336c",darker:"#c2255c",darkest:"#a61e4d"}},$J=({children:A,color:e})=>(0,hQA.jsx)("div",{className:"Card",style:{"--card-color":XJ[e].base,"--card-color-darker":XJ[e].darker,"--card-color-darkest":XJ[e].darkest},children:A});var Oi=G(_(),1),hTA=({elements:A,appState:e,setAppState:t,files:o,actionManager:i,exportOpts:a,canvas:r,onCloseRequest:n})=>{let{onExportToBackend:g}=a;return(0,Oi.jsx)("div",{className:"ExportDialog ExportDialog--json",children:(0,Oi.jsxs)("div",{className:"ExportDialog-cards",children:[a.saveFileToDisk&&(0,Oi.jsxs)($J,{color:"lime",children:[(0,Oi.jsx)("div",{className:"Card-icon",children:ctA}),(0,Oi.jsx)("h2",{children:L("exportDialog.disk_title")}),(0,Oi.jsxs)("div",{className:"Card-details",children:[L("exportDialog.disk_details"),!ag&&i.renderAction("changeProjectName")]}),(0,Oi.jsx)(PA,{className:"Card-button",type:"button",title:L("exportDialog.disk_button"),"aria-label":L("exportDialog.disk_button"),showAriaLabel:!0,onClick:()=>{i.executeAction(Jf,"ui")}})]}),g&&(0,Oi.jsxs)($J,{color:"pink",children:[(0,Oi.jsx)("div",{className:"Card-icon",children:$w}),(0,Oi.jsx)("h2",{children:L("exportDialog.link_title")}),(0,Oi.jsx)("div",{className:"Card-details",children:L("exportDialog.link_details")}),(0,Oi.jsx)(PA,{className:"Card-button",type:"button",title:L("exportDialog.link_button"),"aria-label":L("exportDialog.link_button"),showAriaLabel:!0,onClick:async()=>{try{ye("export","link",`ui (${AP()})`),await g(A,e,o),n()}catch(s){t({errorMessage:s.message})}}})]}),a.renderCustomUI&&a.renderCustomUI(A,e,o,r)]})})},pQA=({elements:A,appState:e,files:t,actionManager:o,exportOpts:i,canvas:a,setAppState:r})=>{let n=uQA.default.useCallback(()=>{r({openDialog:null})},[r]);return(0,Oi.jsx)(Oi.Fragment,{children:e.openDialog?.name==="jsonExport"&&(0,Oi.jsx)(ei,{onCloseRequest:n,title:L("buttons.export"),children:(0,Oi.jsx)(hTA,{elements:A,appState:e,setAppState:r,files:t,actionManager:o,onCloseRequest:n,exportOpts:i,canvas:a})})})};Q();var wQA=G(_(),1),mQA=A=>(0,wQA.jsx)(PA,{className:iA("ToolIcon__LaserPointer",{"is-mobile":A.isMobile}),type:"toggle",size:"small",icon:Rl,checked:A.checked,title:`${A.title}`,"aria-label":`${A.title}`,"data-testid":"toolbar-LaserPointer",onSelect:()=>A.onChange?.()});Q();var AT=G(nA(),1);X();Q();X();O();O();Qs();var GU=G(_(),1),Lt=A=>Array.isArray(A)?`<kbd>${A.map(gA).join(" + ")}</kbd>`:`<kbd>${gA(A)}</kbd>`,uTA=({appState:A,isMobile:e,editorInterface:t,app:o})=>{let{activeTool:i,isResizing:a,isRotating:r,lastPointerDownWith:n}=A,g=A.multiElement!==null;if(A.openSidebar?.name===Xi.name&&A.openSidebar.tab===EI&&A.searchMatches?.matches.length)return L("hints.dismissSearch",{shortcut:Lt("Escape")});if(A.openSidebar&&!t.canFitSidebar)return null;if(ig(A))return L("hints.eraserRevert",{shortcut:Lt("Alt")});let s=o.scene.getSelectedElements(A);if(A.selectedLinearElement?.isDragging&&s[0]?.type==="arrow")return L("hints.arrowBindModifiers",{shortcut_1:Lt("Ctrl"),shortcut_2:Lt("Alt")});if(i.type==="arrow"||i.type==="line")return g?L("hints.linearElementMulti",{shortcut_1:Lt("Escape"),shortcut_2:Lt("Enter")}):i.type==="arrow"?L("hints.arrowTool",{shortcut:Lt("A")}):L("hints.linearElement");if(i.type==="freedraw")return L("hints.freeDraw");if(i.type==="text")return L("hints.text");if(i.type==="embeddable")return L("hints.embeddable");if(i.type==="autoshape")return L("hints.autoshape");if(a&&n==="mouse"&&s.length===1){let l=s[0];return FA(l)&&l.points.length===2?L("hints.lockAngle",{shortcut:Lt("Shift")}):xe(l)?L("hints.resizeImage",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")}):L("hints.resize",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")})}if(r&&n==="mouse")return L("hints.rotate",{shortcut:Lt("Shift")});if(s.length===1&&cA(s[0]))return L("hints.text_selected",{shortcut:Lt("Enter")});if(A.editingTextElement)return L("hints.text_editing",{shortcut_1:Lt("Escape"),shortcut_2:Lt(["CtrlOrCmd","Enter"])});if(A.croppingElementId)return L("hints.leaveCropEditor",{shortcut_1:Lt("Enter"),shortcut_2:Lt("Escape")});if(s.length===1&&xe(s[0]))return L("hints.enterCropEditor",{shortcut:Lt("Enter")});if(i.type==="selection"){if(A.selectionElement&&!s.length&&!A.editingTextElement&&!A.selectedLinearElement?.isEditing)return L("hints.deepBoxSelect",{shortcut:Lt("CtrlOrCmd")});if(eB(o)&&A.selectedElementsAreBeingDragged)return L("hints.disableSnapping",{shortcut:Lt("CtrlOrCmd")});if(!s.length&&!e)return L("hints.canvasPanning",{shortcut_1:Lt(L("keys.mmb")),shortcut_2:Lt("Space")});if(s.length===1){if(FA(s[0]))return bA(s[0])&&A.selectedLinearElement?.elementId===s[0].id&&(A.selectedLinearElement.hoverPointIndex===0||A.selectedLinearElement.hoverPointIndex===s[0].points.length-1)?L("hints.toggleArrowhead"):A.selectedLinearElement?.isEditing?A.selectedLinearElement.selectedPointsIndices?L("hints.lineEditor_pointSelected",{shortcut_1:Lt("Delete"),shortcut_2:Lt(["CtrlOrCmd","D"])}):L("hints.lineEditor_nothingSelected",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")}):ke(s[0])?L("hints.lineEditor_line_info",{shortcut:Lt("Enter")}):L("hints.lineEditor_info",{shortcut_1:Lt("CtrlOrCmd"),shortcut_2:Lt(["CtrlOrCmd","Enter"])});if(!A.newElement&&!A.selectedElementsAreBeingDragged&&sl(s[0])){let l=L("hints.bindTextToElement",{shortcut:Lt("Enter")}),I=L("hints.createFlowchart",{shortcut:Lt(["CtrlOrCmd","\u2191\u2193"])});return FQ(s[0])?UZ(s[0],o.scene.getNonDeletedElementsMap())?[l,I]:[l,I]:l}}}return null},fQA=({appState:A,isMobile:e,editorInterface:t,app:o})=>{let i=uTA({appState:A,isMobile:e,editorInterface:t,app:o});if(!i)return null;let r=(Array.isArray(i)?i.map(n=>n.replace(/\. ?$/,"")).join(", "):i).split(/(<kbd>[^<]+<\/kbd>)/g).map((n,g)=>{if(g%2===1){let s=n[0]==="<"&&n.match(/^<kbd>([^<]+)<\/kbd>$/);return(0,GU.jsx)("kbd",{children:s?s[1]:n},g)}return n});return(0,GU.jsx)("div",{className:"HintViewer",children:(0,GU.jsx)("span",{children:r})})};Q();var DQA=G(_(),1),bQA=A=>(0,DQA.jsx)(PA,{className:iA("ToolIcon__lock",{"is-mobile":A.isMobile}),type:"toggle",icon:A.checked?Uh:Gd,checked:A.checked,disabled:A.disabled,title:`${A.title} \u2014 Q`,"aria-label":`${A.title}`,"data-testid":"toolbar-lock",onSelect:()=>A.onChange?.()});var Te=G(_(),1),pTA=({app:A,activeTool:e,setAppState:t})=>{let[o,i]=(0,AT.useState)(!1),a=mi()==="full",{TTDDialogTriggerTunnel:r}=Mt(),n=e.type==="frame",g=e.type==="autoshape",s=e.type==="laser",l=e.type==="bucketfill",I=a&&e.type==="lasso"&&A.state.preferredSelectionTool.type!=="lasso",c=e.type==="embeddable";return(0,Te.jsxs)(ae,{open:o,children:[(0,Te.jsx)(ae.Trigger,{className:iA("App-toolbar__extra-tools-trigger",{"App-toolbar__extra-tools-trigger--selected":n||c||a&&g||I||l||s&&!A.props.isCollaborating}),onToggle:()=>{i(!o),t({openMenu:null,openPopup:null})},title:L("toolBar.extraTools"),children:n?Fl:c?bC:a&&g?Rd:s&&!A.props.isCollaborating?Rl:I?qw:l?zr:xd}),(0,Te.jsxs)(ae.Content,{onClickOutside:()=>i(!1),onSelect:()=>i(!1),className:"App-toolbar__extra-tools-dropdown",children:[(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"frame"}),icon:Fl,shortcut:z.F.toLocaleUpperCase(),"data-testid":"toolbar-frame",selected:n,disabled:Ai(A,"frame"),children:L("toolBar.frame")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"embeddable"}),icon:bC,"data-testid":"toolbar-embeddable",selected:c,disabled:Ai(A,"embeddable"),children:L("toolBar.embeddable")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"autoshape"}),icon:Rd,shortcut:Nf("autoshape"),"data-testid":"toolbar-autoshape",selected:g,disabled:Ai(A,"autoshape"),children:L("toolBar.autoshape")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"laser"}),icon:Rl,"data-testid":"toolbar-laser",selected:s,shortcut:z.K.toLocaleUpperCase(),disabled:Ai(A,"laser"),children:L("toolBar.laser")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"bucketfill"}),icon:zr,"data-testid":"toolbar-bucketfill",selected:l,shortcut:z.B.toLocaleUpperCase(),disabled:Ai(A,"bucketfill"),children:L("toolBar.bucketfill")}),a&&(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"lasso"}),icon:qw,"data-testid":"toolbar-lasso",selected:I,disabled:Ai(A,"lasso"),children:L("toolBar.lasso")}),(0,Te.jsx)("div",{style:{margin:"6px 0",fontSize:14,fontWeight:600},children:"Generate"}),A.props.aiEnabled!==!1&&(0,Te.jsx)(r.Out,{}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setOpenDialog({name:"ttd",tab:"mermaid"}),icon:Nh,"data-testid":"toolbar-embeddable",children:L("toolBar.mermaidToExcalidraw")}),A.props.aiEnabled!==!1&&A.plugins.diagramToCode&&(0,Te.jsx)(ae.Item,{onSelect:()=>A.onMagicframeToolSelect(),icon:vd,"data-testid":"toolbar-magicframe",badge:(0,Te.jsx)(ae.Item.Badge,{children:"AI"}),disabled:Ai(A,"magicframe"),children:L("toolBar.magicframe")})]})]})},UU=({app:A,appState:e,setAppState:t,UIOptions:o,onPenModeToggle:i,onLockToggle:a,heading:r})=>{let n=Je(),g=mi()==="compact",[s,l]=(0,AT.useState)(!1),I=e.activeTool,c={app:A,activeTool:I};return(0,Te.jsxs)(ao,{padding:1,className:iA("App-toolbar",{"zen-mode":e.zenModeEnabled,"App-toolbar--compact":g}),"data-viewport-ui":"top",children:[(0,Te.jsx)(fQA,{appState:e,isMobile:n.formFactor==="phone",editorInterface:n,app:A}),r,(0,Te.jsxs)(bi.Row,{gap:g?.5:1,children:[!g&&(0,Te.jsx)(Vu,{checked:e.penMode,onChange:()=>i(null),title:L("toolBar.penMode"),penDetected:e.penDetected}),A.props.activeTool==null&&(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)(bQA,{checked:e.activeTool.locked,onChange:a,title:L("toolBar.lock"),disabled:A.props.activeTool!=null}),(0,Te.jsx)("div",{className:"App-toolbar__divider",style:{marginRight:"0.25rem"}})]}),(0,Te.jsx)(TS,{...c,hideKeyBinding:!0}),g?(0,Te.jsx)(WS,{...c,setAppState:t}):e.preferredSelectionTool.type==="lasso"?(0,Te.jsx)(IgA,{...c}):(0,Te.jsx)(lgA,{...c}),(0,Te.jsx)(ogA,{...c}),(0,Te.jsx)(igA,{...c}),(0,Te.jsx)(agA,{...c}),(0,Te.jsx)(rgA,{...c}),(0,Te.jsx)(ngA,{...c}),g?(0,Te.jsx)(_S,{...c}):(0,Te.jsx)(ggA,{...c}),(0,Te.jsx)(PS,{...c}),o.tools?.image!==!1&&(0,Te.jsx)(rG,{app:A,open:s,onToggle:()=>l(!s),onClose:()=>l(!1)}),(0,Te.jsx)(ZS,{...c}),(0,Te.jsx)("div",{className:"App-toolbar__divider",style:{marginLeft:"0.25rem"}}),(0,Te.jsx)(pTA,{app:A,activeTool:I,setAppState:t})]})]})};Q();O();O();Qt();var Ut=G(_(),1),yQA=({appState:A,elements:e,actionManager:t,setAppState:o,onLockToggle:i,onPenModeToggle:a,renderTopRightUI:r,renderCustomStats:n,renderSidebars:g,editorInterface:s,renderWelcomeScreen:l,UIOptions:I,app:c})=>{let{WelcomeScreenCenterTunnel:C,MainMenuTunnel:B,DefaultSidebarTriggerTunnel:d}=Mt(),E=()=>{let p=A.stats.open&&!A.zenModeEnabled&&!A.viewModeEnabled;return(0,Ut.jsxs)(ju,{side:"top",className:"App-top-bar",sidepanelOpen:!!A.openSidebar,children:[l&&(0,Ut.jsx)(C.Out,{}),(0,Ut.jsx)(aB,{heading:"shapes",children:u=>(0,Ut.jsx)(bi.Col,{gap:4,align:"center",children:(0,Ut.jsxs)(bi.Row,{gap:1,className:"App-toolbar-container",children:[(0,Ut.jsx)(UU,{app:c,appState:A,setAppState:o,UIOptions:I,onPenModeToggle:a,onLockToggle:i,heading:u}),(0,Ut.jsxs)("div",{className:"tray-misc-tools-container",style:document.body?.classList.contains("mod-rtl")?{right:"inherit",left:"calc(var(--editor-container-padding) * -1)"}:void 0,children:[!A.viewModeEnabled&&r?.(s.formFactor==="phone",A),!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&(0,Ut.jsx)(d.Out,{})]})]})})}),(0,Ut.jsx)("div",{className:iA("layer-ui__wrapper__top-right zen-mode-transition",{"transition-right":A.zenModeEnabled}),style:{marginRight:"4rem"},children:p&&(0,Ut.jsx)(_l,{app:c,onClose:()=>{t.executeAction(pg)},renderCustomStats:n})})]})},h=()=>{if(A.viewModeEnabled)return;if(A.openDialog?.name==="elementLinkSelector")return(0,Ut.jsx)("div",{className:"App-toolbar-content",children:(0,Ut.jsx)(B.Out,{})});let p=Bd(A,_A(e)),u=Et(_A(e),A);return(0,Ut.jsxs)("div",{className:"App-toolbar-content",children:[(0,Ut.jsx)(B.Out,{}),p?t.renderAction("toggleTrayEditMenu"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),u||A.multiElement?t.renderAction(A.multiElement?"finalize":"duplicateSelection"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),u?t.renderAction("deleteSelectedElements"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),(0,Ut.jsxs)("div",{children:[t.renderAction("undo"),t.renderAction("redo")]})]})};return(0,Ut.jsxs)(Ut.Fragment,{children:[g(),!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&E(),(0,Ut.jsxs)("div",{className:"App-bottom-bar",style:{marginBottom:qa+Mn,marginLeft:qa+Mn*2,marginRight:qa+Mn*2},children:[(0,Ut.jsxs)(ao,{padding:0,children:[A.openMenu==="shape"&&!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&Bd(A,e)?(0,Ut.jsx)(aB,{className:"App-tray-menu",heading:"selectedShapeActions",style:{maxHeight:c.state.height*.8},children:(0,Ut.jsx)(Sx,{appState:A,elementsMap:c.scene.getNonDeletedElementsMap(),renderAction:t.renderAction,app:c})}):null,(0,Ut.jsxs)("footer",{className:"App-toolbar",children:[h(),A.scrolledOutside&&!A.openMenu&&!A.openSidebar&&(0,Ut.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{o(p=>({...Bs(e,p)}))},children:L("buttons.scrollBackToContent")})]})]}),(0,Ut.jsx)(ao,{padding:1,style:{marginLeft:"4px"},children:(0,Ut.jsx)(xx,{renderAction:t.renderAction,trayMode:!0})})]})]})};var MA=G(_(),1),mTA=({UIOptions:A})=>(0,MA.jsxs)(ya,{__fallback:!0,children:[(0,MA.jsx)(ya.DefaultItems.LoadScene,{}),(0,MA.jsx)(ya.DefaultItems.SaveToActiveFile,{}),A.canvasActions.export&&(0,MA.jsx)(ya.DefaultItems.Export,{}),A.canvasActions.saveAsImage&&(0,MA.jsx)(ya.DefaultItems.SaveAsImage,{}),(0,MA.jsx)(ya.DefaultItems.SearchMenu,{}),(0,MA.jsx)(ya.DefaultItems.Help,{}),(0,MA.jsx)(ya.DefaultItems.ClearCanvas,{}),(0,MA.jsx)(ya.Separator,{}),(0,MA.jsx)(ya.Group,{title:"Excalidraw links",children:(0,MA.jsx)(ya.DefaultItems.Socials,{})}),(0,MA.jsx)(ya.Separator,{}),(0,MA.jsx)(ya.DefaultItems.ToggleTheme,{allowSystemTheme:!1}),(0,MA.jsx)(ya.DefaultItems.ChangeCanvasBackground,{})]}),wTA=()=>(0,MA.jsxs)(BG,{__fallback:!0,children:[(0,MA.jsx)(BG.Actions.SaveToDisk,{}),(0,MA.jsx)(BG.Actions.ExportToImage,{})]}),fTA=({actionManager:A,appState:e,files:t,setAppState:o,elements:i,canvas:a,onLockToggle:r,onPenModeToggle:n,showExitZenModeBtn:g,renderTopLeftUI:s,renderTopRightUI:l,renderCustomStats:I,UIOptions:c,onExportImage:C,renderWelcomeScreen:B,children:d,app:E,defaultUIEnabled:h,zoomUIEnabled:p,scrollBackToContentUIEnabled:u,isCollaborating:m,generateLinkForSelection:w,currentUserControls:b})=>{let D=Je(),S=Da(),v=mi()==="compact",x=NIA(),R=v?{menuTopGap:4,toolbarColGap:4,toolbarRowGap:1,toolbarInnerRowGap:.5,islandPadding:1,collabMarginLeft:8}:{menuTopGap:6,toolbarColGap:4,toolbarRowGap:1,toolbarInnerRowGap:1,islandPadding:1,collabMarginLeft:8},W=x.tunnelsJotai.Provider,[q,T]=ne(en),F=()=>c.canvasActions.export?(0,MA.jsx)(pQA,{elements:i,appState:e,files:t,actionManager:A,exportOpts:c.canvasActions.export,canvas:a,setAppState:o}):null,K=()=>!c.canvasActions.saveAsImage||e.openDialog?.name!=="imageExport"?null:(0,MA.jsx)(QQA,{elements:i,appState:e,files:t,actionManager:A,onExportImage:C,onCloseRequest:()=>o({openDialog:null}),name:E.getName()}),N=()=>(0,MA.jsxs)("div",{style:{position:"relative"},children:[(0,MA.jsxs)("div",{className:"excalidraw-ui-top-left",children:[s?.(!1,e),(0,MA.jsx)(x.MainMenuTunnel.Out,{})]}),B&&(0,MA.jsx)(x.WelcomeScreenMenuHintTunnel.Out,{})]}),J=()=>(0,MA.jsx)(aB,{heading:"selectedShapeActions",className:iA("selected-shape-actions zen-mode-transition",{"transition-left":e.zenModeEnabled}),children:v?(0,MA.jsx)(ao,{className:iA("compact-shape-actions-island"),padding:0,"data-viewport-ui":"side","data-viewport-ui-name":"stylesPanel",style:{maxHeight:`${e.height-166}px`},children:(0,MA.jsx)(jsA,{appState:e,elementsMap:E.scene.getNonDeletedElementsMap(),renderAction:A.renderAction,app:E,setAppState:o})}):(0,MA.jsx)(ao,{className:wt.SHAPE_ACTIONS_MENU,padding:2,style:{maxHeight:`${e.height-166}px`},"data-viewport-ui":"side","data-viewport-ui-name":"stylesPanel",children:(0,MA.jsx)(Sx,{appState:e,elementsMap:E.scene.getNonDeletedElementsMap(),renderAction:A.renderAction,app:E})})}),H=()=>{let he=h&&Bd(e,i);if(e.viewModeEnabled)return null;let ce=h&&e.stats.open&&!e.zenModeEnabled&&!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector";return(0,MA.jsx)(ju,{side:"top",sidepanelOpen:!!e.openSidebar,children:(0,MA.jsxs)("div",{className:"App-menu App-menu_top",children:[(0,MA.jsxs)(bi.Col,{gap:R.menuTopGap,className:iA("App-menu_top__left"),children:[N(),h&&(0,MA.jsx)("div",{className:iA("selected-shape-actions-container",{"selected-shape-actions-container--compact":v}),children:he&&J()}),h&&v&&!e.viewModeEnabled&&he&&(0,MA.jsx)(Vu,{checked:e.penMode,onChange:()=>n(null),title:L("toolBar.penMode"),isMobile:!0,penDetected:e.penDetected})]}),h&&!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(0,MA.jsx)(aB,{heading:"shapes",className:"shapes-section",children:oe=>(0,MA.jsxs)("div",{style:{position:"relative"},children:[B&&(0,MA.jsx)(x.WelcomeScreenToolbarHintTunnel.Out,{}),(0,MA.jsx)(bi.Col,{gap:R.toolbarColGap,align:"start",children:(0,MA.jsxs)(bi.Row,{gap:R.toolbarRowGap,className:iA("App-toolbar-container",{"zen-mode":e.zenModeEnabled}),children:[(0,MA.jsx)(UU,{app:E,appState:e,setAppState:o,UIOptions:c,onPenModeToggle:n,onLockToggle:r,heading:oe}),m&&(0,MA.jsx)(ao,{style:{marginLeft:R.collabMarginLeft,alignSelf:"center",height:"fit-content"},children:(0,MA.jsx)(mQA,{title:L("toolBar.laser"),checked:e.activeTool.type===po.laser,onChange:()=>E.setActiveTool({type:po.laser}),isMobile:!0})})]})})]})}),(0,MA.jsxs)("div",{className:iA("mobile-misc-tools-container zen-mode-transition",{"transition-right":e.zenModeEnabled,"layer-ui__wrapper__top-right--compact":v}),style:document.body?.classList.contains("mod-rtl")?{right:"inherit",left:"calc(var(--editor-container-padding) * -1)"}:void 0,children:[h&&e.collaborators.size>0&&(0,MA.jsx)(gG,{collaborators:e.collaborators,userToFollow:S.userToFollow?.socketId||null,currentUserControls:b}),!e.viewModeEnabled&&l?.(aA,e),!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(!OA||e.openSidebar?.name!==Xi.name)&&(0,MA.jsx)(x.DefaultSidebarTriggerTunnel.Out,{}),ce&&(0,MA.jsx)(_l,{app:E,onClose:()=>{A.executeAction(pg)},renderCustomStats:I})]})]})})},j=D.formFactor==="phone"?sm("phone"):null,AA=!(e.viewModeEnabled||e.zenModeEnabled)&&(!j&&D.desktopUIMode==="tray"||j==="tray"),aA=j==="mobile",lA=AA||aA,uA=()=>h?(0,MA.jsx)(pb,{__fallback:!0,onDock:he=>{ye("sidebar",`toggleDock (${he?"dock":"undock"})`,`(${aA?"mobile":"desktop"})`)}}):null,OA=j0(hb),xA=!!(e.openSidebar&&OA&&D.canFitSidebar),pe=(0,MA.jsxs)(MA.Fragment,{children:[d,h&&(0,MA.jsxs)(MA.Fragment,{children:[(0,MA.jsx)(mTA,{UIOptions:c}),(0,MA.jsx)(pb.Trigger,{__fallback:!0,icon:zoA,title:$i(L("toolBar.library")),onToggle:he=>{he&&ye("sidebar",`${Xi.name} (open)`,`button (${aA?"mobile":"desktop"})`)},tab:Xi.defaultTab})]}),(0,MA.jsx)(wTA,{}),e.openDialog?.name==="ttd"&&(0,MA.jsx)(ID,{__fallback:!0}),h&&e.isLoading&&(0,MA.jsx)(aG,{delay:250}),h&&e.errorMessage&&(0,MA.jsx)(CQA,{onClose:()=>o({errorMessage:null}),children:e.errorMessage}),h&&q&&D.formFactor!=="phone"&&(0,MA.jsx)(dnA,{colorPickerType:q.colorPickerType,onCancel:()=>{T(null)},onChange:(he,ce,oe,{altKey:me})=>{if(!(he!=="elementBackground"&&he!=="elementStroke"))if(oe.length){for(let We of oe)it(We,QA(i),{[me&&q.swapPreviewOnAlt?he==="elementBackground"?"strokeColor":"backgroundColor":he==="elementBackground"?"backgroundColor":"strokeColor"]:ce}),It.delete(We);E.scene.triggerUpdate()}else o(he==="elementBackground"?{currentItemBackgroundColor:ce}:{currentItemStrokeColor:ce})},onSelect:(he,ce)=>{T(oe=>oe?.keepOpenOnAlt&&ce.altKey?oe:null),q?.onSelect?.(he,ce)}}),e.openDialog?.name==="help"&&(0,MA.jsx)(dQA,{onClose:()=>{o({openDialog:null})}}),(0,MA.jsx)(tlA,{}),h&&e.openDialog?.name==="elementLinkSelector"&&(0,MA.jsx)(cQA,{sourceElementId:e.openDialog.sourceElementId,onClose:()=>{o({openDialog:null})},scene:E.scene,appState:e,generateLinkForSelection:w}),(0,MA.jsx)(x.OverwriteConfirmDialogTunnel.Out,{}),K(),F(),h&&e.openDialog?.name==="charts"&&(0,MA.jsx)(BcA,{data:e.openDialog.data,rawText:e.openDialog.rawText,onClose:()=>o({openDialog:null})}),AA&&(0,MA.jsx)(yQA,{app:E,appState:e,elements:i,actionManager:A,renderJSONExportDialog:F,renderImageExportDialog:K,setAppState:o,onLockToggle:r,onPenModeToggle:n,renderTopRightUI:l,renderCustomStats:I,renderSidebars:uA,editorInterface:D,renderWelcomeScreen:B,UIOptions:c}),aA&&(0,MA.jsx)(CcA,{app:E,appState:e,elements:i,actionManager:A,renderJSONExportDialog:F,renderImageExportDialog:K,setAppState:o,onPenModeToggle:n,renderTopLeftUI:s,renderTopRightUI:l,renderSidebars:uA,renderWelcomeScreen:B,defaultUIEnabled:h,scrollBackToContentUIEnabled:u}),!lA&&(0,MA.jsxs)(MA.Fragment,{children:[S.viewportStatusFrame?.border&&(0,MA.jsx)(AG,{border:S.viewportStatusFrame.border,style:xA?{right:"calc(var(--right-sidebar-width) - var(--space-factor) * 2)"}:void 0}),(0,MA.jsxs)("div",{className:"layer-ui__wrapper",children:[B&&(0,MA.jsx)(x.WelcomeScreenCenterTunnel.Out,{}),H(),(0,MA.jsx)(hcA,{appState:e,actionManager:A,showExitZenModeBtn:g,renderWelcomeScreen:B,defaultUIEnabled:h,zoomUIEnabled:p}),(e.toast||u&&e.scrolledOutside||S.viewportStatusFrame?.label)&&(0,MA.jsxs)("div",{className:"floating-status-stack",children:[e.toast&&(0,MA.jsx)(OS,{message:e.toast.message,onClose:()=>o({toast:null}),duration:e.toast.duration,closable:e.toast.closable}),!e.toast&&u&&e.scrolledOutside&&(0,MA.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{o(he=>({...Bs(i,he)}))},children:L("buttons.scrollBackToContent")}),S.viewportStatusFrame?.label&&(0,MA.jsx)(eG,{label:S.viewportStatusFrame.label,border:S.viewportStatusFrame.border})]})]}),uA()]})]});return(0,MA.jsx)(S1.Provider,{value:e,children:(0,MA.jsx)(W,{children:(0,MA.jsx)(iH.Provider,{value:x,children:pe})})})},kQA=A=>{let{cursorButton:e,scrollX:t,scrollY:o,shouldCacheIgnoreZoom:i,snapLines:a,originSnapOffset:r,suggestedBinding:n,frameToHighlight:g,elementsToHighlight:s,...l}=A;return l},bTA=(A,e)=>{if(A.children!==e.children)return!1;let{canvas:t,appState:o,...i}=A,{canvas:a,appState:r,...n}=e;return Tt(kQA(o),kQA(r),{selectedElementIds:Tt,selectedGroupIds:Tt})&&Tt(i,n)},SQA=LQA.default.memo(fTA,bTA);Q();var xQA=G(_(),1),FU=A=>(0,xQA.jsx)(PA,{className:iA("ToolIcon__MagicButton",{"is-mobile":A.isMobile}),type:"toggle",size:"small",icon:A.icon,checked:A.checked,title:`${A.title}`,"aria-label":`${A.title}`,onSelect:()=>A.onChange?.()});Q();var RU=G(nA(),1);var eT=G(_(),1),GQA=({trails:A})=>{let e=(0,RU.useRef)(null);return(0,RU.useEffect)(()=>{if(e.current)for(let t of A)t.start(e.current);return()=>{for(let t of A)t.stop()}},A),(0,eT.jsx)("div",{className:"SVGLayer",children:(0,eT.jsx)("svg",{ref:e})})};Q();Q();var _E=G(nA(),1);X();Q();VA();X();O();O();O();O();Q();VA();X();var DTA="#ff6b6b",yTA="#ff0000",UQA=1,FQA=2,RQA=(A,e)=>{if(!e.snapLines.length)return;let t=e.theme===EA.LIGHT||e.zenModeEnabled?DTA:yTA,o=(e.zenModeEnabled?UQA*1.5:UQA)/e.zoom.value;A.save(),A.translate(e.scrollX,e.scrollY);for(let i of e.snapLines)i.type==="pointer"?(A.lineWidth=o,A.strokeStyle=t,LTA(i,A,e)):i.type==="gap"?(A.lineWidth=o,A.strokeStyle=t,STA(i.points[0],i.points[1],i.direction,e,A)):i.type==="points"&&(A.lineWidth=o,A.strokeStyle=t,kTA(i,A,e));A.restore()},kTA=(A,e,t)=>{if(!t.zenModeEnabled){let o=A.points[0],i=A.points[A.points.length-1];Yg(o,i,e)}for(let o of A.points)vQA(o,t,e)},LTA=(A,e,t)=>{vQA(A.points[0],t,e),t.zenModeEnabled||Yg(A.points[0],A.points[1],e)},vQA=([A,e],t,o)=>{o.save();let i=(t.zenModeEnabled?FQA*1.5:FQA)/t.zoom.value;o.beginPath(),o.moveTo(A-i,e-i),o.lineTo(A+i,e+i),o.moveTo(A+i,e-i),o.lineTo(A-i,e+i),o.stroke(),o.restore()},Yg=(A,e,t)=>{t.beginPath(),t.lineTo(A[0],A[1]),t.lineTo(e[0],e[1]),t.stroke()},STA=(A,e,t,o,i)=>{let a=8/o.zoom.value,r=a/2,n=a/4;if(t==="horizontal"){let g=[(A[0]+e[0])/2,A[1]];o.zenModeEnabled||Yg(k(A[0],A[1]-a),k(A[0],A[1]+a),i),Yg(k(g[0]-n,g[1]-r),k(g[0]-n,g[1]+r),i),Yg(k(g[0]+n,g[1]-r),k(g[0]+n,g[1]+r),i),o.zenModeEnabled||(Yg(k(e[0],e[1]-a),k(e[0],e[1]+a),i),Yg(A,e,i))}else{let g=[A[0],(A[1]+e[1])/2];o.zenModeEnabled||Yg(k(A[0]-a,A[1]),k(A[0]+a,A[1]),i),Yg(k(g[0]-r,g[1]-n),k(g[0]+r,g[1]-n),i),Yg(k(g[0]-r,g[1]+n),k(g[0]+r,g[1]+n),i),o.zenModeEnabled||(Yg(k(e[0]-a,e[1]),k(e[0]+a,e[1]),i),Yg(A,e,i))}};Dk();var xTA=(A,e)=>{UA(e.selectedLinearElement,"selectedLinearElement is null");let{segmentMidPointHoveredCoords:t}=e.selectedLinearElement;UA(t,"midPointCoords is null"),vU(t,A,e)},GTA=(A,e,t)=>{let{elementId:o,hoverPointIndex:i}=e.selectedLinearElement;if(e.selectedLinearElement?.isEditing&&e.selectedLinearElement?.selectedPointsIndices?.includes(i)||e.selectedLinearElement?.isDragging)return;let a=rA.getElement(o,t);if(!a)return;let r=rA.getPointAtIndexGlobalCoordinates(a,i,t);vU(r,A,e)},vU=(A,e,t)=>{e.save(),e.translate(t.scrollX,t.scrollY),e.fillStyle="rgba(105, 101, 219, 0.4)",vw(e,A[0],A[1],rA.POINT_HANDLE_SIZE/t.zoom.value,!1),e.restore()},UTA=(A,e,t)=>{let{elementId:o,anchor:i}=e.hoveredArrowTextAnchor,a=t.get(o);if(!a||!bA(a)||a.isDeleted)return;let r=i==="label"?rA.getBoundTextElementCenter(a,t):rA.getPointAtIndexGlobalCoordinates(a,i==="start"?0:-1,t);vU(r,A,e)},tT=(A,e,t,o,i,a,r)=>{A.strokeStyle="#5e5ad8",A.setLineDash([]),A.fillStyle="rgba(255, 255, 255, 0.9)",i?A.fillStyle="rgba(134, 131, 226, 0.9)":a&&(A.fillStyle="rgba(177, 151, 252, 0.7)"),vw(A,t[0],t[1],(r?o*(e.selectedLinearElement?.isEditing?1.5:2):o)/e.zoom.value,!a,!r||i)},FTA=(A,e,t,o,i,a=!1)=>{let r=e.element.frameId&&t.get(e.element.frameId);if(r&&mA(r)){A.translate(r.x,r.y);let n=tl(o.viewBackgroundColor);A.fillStyle=n??"rgba(0,0,0,.05)",A.beginPath(),fe.radius&&A.roundRect?A.roundRect(-1,-1,r.width+1,r.height+1,fe.radius/o.zoom.value):A.rect(-1,-1,r.width+1,r.height+1),A.clip(),A.translate(-r.x,-r.y)}switch(e.element.type){case"magicframe":case"frame":A.save();let n=tl(o.viewBackgroundColor);A.translate(e.element.x,e.element.y),A.lineWidth=1.5*fe.strokeWidth/o.zoom.value,A.strokeStyle=n??(o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)"),fe.radius&&A.roundRect?(A.beginPath(),A.roundRect(0,0,e.element.width,e.element.height,fe.radius/o.zoom.value),A.stroke(),A.closePath()):A.strokeRect(0,0,e.element.width,e.element.height),A.restore();break;default:A.save();let g=tl(o.viewBackgroundColor),s=ze(e.element,t);switch(A.translate(s[0],s[1]),A.rotate(e.element.angle),A.translate(-s[0],-s[1]),A.translate(e.element.x,e.element.y),A.lineWidth=1.5*zA(1.75,e.element.strokeWidth,10)/Math.max(.25,o.zoom.value),A.strokeStyle=g??(o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)"),e.element.type){case"ellipse":A.beginPath(),A.ellipse(e.element.width/2,e.element.height/2,e.element.width/2,e.element.height/2,0,0,2*Math.PI),A.closePath(),A.stroke();break;case"diamond":{let[l,I]=as(e.element);l.forEach(c=>{A.beginPath(),A.moveTo(c[0][0]-e.element.x,c[0][1]-e.element.y),A.lineTo(c[1][0]-e.element.x,c[1][1]-e.element.y),A.stroke()}),I.forEach(c=>{let[C,B,d,E]=c;A.beginPath(),A.moveTo(C[0]-e.element.x,C[1]-e.element.y),A.bezierCurveTo(B[0]-e.element.x,B[1]-e.element.y,d[0]-e.element.x,d[1]-e.element.y,E[0]-e.element.x,E[1]-e.element.y),A.stroke()})}break;default:{let[l,I]=ll(e.element);l.forEach(c=>{A.beginPath(),A.moveTo(c[0][0]-e.element.x,c[0][1]-e.element.y),A.lineTo(c[1][0]-e.element.x,c[1][1]-e.element.y),A.stroke()}),I.forEach(c=>{let[C,B,d,E]=c;A.beginPath(),A.moveTo(C[0]-e.element.x,C[1]-e.element.y),A.bezierCurveTo(B[0]-e.element.x,B[1]-e.element.y,d[0]-e.element.x,d[1]-e.element.y,E[0]-e.element.x,E[1]-e.element.y),A.stroke()})}break}A.restore();break}if(o.isMidpointSnappingEnabled&&!o.gridModeEnabled&&!a&&(mA(e.element)||bt(e.element))){let n=o.selectedLinearElement,g=n?.elementId&&rA.getElement(n?.elementId,t),s=i&&Aa({point:i,element:e.element,elementsMap:t,threshold:0,overrideShouldTestInside:!0}),l=g&&kA(g)||o.activeTool.type==="arrow"&&o.currentItemArrowType==="elbow";if(!s||l){A.save();let I=ze(e.element,t),c;if(e.element.type==="diamond"){let E=ze(e.element,t);c=Zy(e.element).map(h=>{let p=wn(h,.5),u=$(p,E,e.element.angle);return k(u[0],u[1])})}else c=[{x:e.element.width,y:e.element.height/2},{x:e.element.width/2,y:e.element.height},{x:0,y:e.element.height/2},{x:e.element.width/2,y:0}].map(h=>{let p=k(h.x+e.element.x,h.y+e.element.y),u=$(p,I,e.element.angle);return k(u[0],u[1])});let C=i&&c.reduce((E,h,p)=>{let u=ZA(h,i);return p===-1||u<E.distance?{idx:p,distance:u}:E},{idx:-1,distance:1/0}),B=4/o.zoom.value,d=Mi(o.zoom)+e.element.strokeWidth/2;c.forEach((E,h)=>{let p=(!s||l)&&C?.idx===h&&C.distance<=d,u=!p&&(l||h===C?.idx&&C.distance<=d*2);p?(A.fillStyle=o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)",A.beginPath(),A.arc(E[0],E[1],B,0,2*Math.PI),A.fill()):u&&(A.fillStyle=o.theme===EA.DARK?"rgba(0, 0, 0, 0.8)":"rgba(65, 65, 65, 0.5)",A.beginPath(),A.arc(E[0],E[1],B,0,2*Math.PI),A.fill())}),A.restore()}}},RTA=(A,e,t,o,i,a,r)=>{let n=A.state.bindMode==="orbit"&&A.bindModeHandler!==null,g=Rc-(r?.runtime??(n?0:Rc)),s=zA(1/Rc*g,1e-4,1),l=t.strokeWidth/2,I=t.frameId&&o.get(t.frameId);switch(I&&mA(I)&&(e.translate(I.x,I.y),e.beginPath(),fe.radius&&e.roundRect?e.roundRect(-1,-1,I.width+1,I.height+1,fe.radius/i.zoom.value):e.rect(-1,-1,I.width+1,I.height+1),e.clip(),e.translate(-I.x,-I.y)),t.type){case"magicframe":case"frame":e.save(),e.translate(t.x,t.y);let C=tl(i.viewBackgroundColor,s);e.lineWidth=1.5*fe.strokeWidth/i.zoom.value,e.strokeStyle=C??(i.theme===EA.DARK?`rgba(3, 93, 161, ${s})`:`rgba(106, 189, 252, ${s})`),fe.radius&&e.roundRect?(e.beginPath(),e.roundRect(0,0,t.width,t.height,fe.radius/i.zoom.value),e.stroke(),e.closePath()):e.strokeRect(0,0,t.width,t.height),e.restore();break;default:e.save();let B=ze(t,o),d=B[0]+i.scrollX,E=B[1]+i.scrollY;e.translate(d,E),e.rotate(t.angle),e.translate(-d,-E),e.translate(t.x+i.scrollX-l,t.y+i.scrollY-l);let h=tl(i.viewBackgroundColor,s/2);switch(e.lineWidth=1.5*zA(2.5,t.strokeWidth*1.75,10)/Math.max(.25,i.zoom.value),e.strokeStyle=h??(i.theme===EA.DARK?`rgba(3, 93, 161, ${s/2})`:`rgba(106, 189, 252, ${s/2})`),t.type){case"ellipse":e.beginPath(),e.ellipse((t.width+l*2)/2,(t.height+l*2)/2,(t.width+l*2)/2,(t.height+l*2)/2,0,0,2*Math.PI),e.closePath(),e.stroke();break;case"diamond":{let[p,u]=as(t,l);p.forEach(m=>{e.beginPath(),e.moveTo(m[0][0]-t.x+l,m[0][1]-t.y+l),e.lineTo(m[1][0]-t.x+l,m[1][1]-t.y+l),e.stroke()}),u.forEach(m=>{let[w,b,D,S]=m;e.beginPath(),e.moveTo(w[0]-t.x+l,w[1]-t.y+l),e.bezierCurveTo(b[0]-t.x+l,b[1]-t.y+l,D[0]-t.x+l,D[1]-t.y+l,S[0]-t.x+l,S[1]-t.y+l),e.stroke()})}break;default:{let[p,u]=ll(t,l);p.forEach(m=>{e.beginPath(),e.moveTo(m[0][0]-t.x+l,m[0][1]-t.y+l),e.lineTo(m[1][0]-t.x+l,m[1][1]-t.y+l),e.stroke()}),u.forEach(m=>{let[w,b,D,S]=m;e.beginPath(),e.moveTo(w[0]-t.x+l,w[1]-t.y+l),e.bezierCurveTo(b[0]-t.x+l,b[1]-t.y+l,D[0]-t.x+l,D[1]-t.y+l,S[0]-t.x+l,S[1]-t.y+l),e.stroke()})}break}e.restore();break}if(!n||(r?.runtime??0)>Rc)return;let c=.5*(Math.min(t.width,t.height)/2);if(!mA(t)){e.save(),e.translate(t.x+i.scrollX,t.y+i.scrollY);let C=1/Rc*g;e.strokeStyle="rgba(0, 0, 0, 0.2)",e.lineWidth=1/i.zoom.value,e.setLineDash([4/i.zoom.value,4/i.zoom.value]),e.lineDashOffset=-C*10/i.zoom.value,e.beginPath(),e.ellipse(t.width/2,t.height/2,c,c,0,0,2*Math.PI),e.stroke();let B=tl(i.viewBackgroundColor);if(e.fillStyle=B??"rgba(128,128,128,.1)",e.beginPath(),e.ellipse(t.width/2,t.height/2,c*(1-s),c*(1-s),0,0,2*Math.PI),e.fill(),e.restore(),i.isMidpointSnappingEnabled&&!i.gridModeEnabled&&(!A.lastPointerMoveEvent||!Ra(A.lastPointerMoveEvent))){e.save(),e.translate(t.x+i.scrollX,t.y+i.scrollY);let d=5/i.zoom.value,E=5/i.zoom.value,h=d+E,p;if(t.type==="diamond"){let[,u]=as(t),m=ze(t,o);p=u.map(w=>{let b=wn(w,.5),D=$(b,m,t.angle);return{x:D[0]-t.x,y:D[1]-t.y}})}else{let u=ze(t,o);p=[{x:t.width/2,y:0},{x:t.width,y:t.height/2},{x:t.width/2,y:t.height},{x:0,y:t.height/2}].map(w=>{let b=k(w.x+t.x,w.y+t.y),D=$(b,u,t.angle);return{x:D[0]-t.x,y:D[1]-t.y}})}p.forEach(u=>{e.clearRect(u.x-h,u.y-h,h*2,h*2)}),e.fillStyle=i.theme===EA.DARK?`rgba(3, 93, 161, ${s})`:`rgba(106, 189, 252, ${s})`,p.forEach(u=>{e.beginPath(),e.arc(u.x,u.y,d,0,2*Math.PI),e.fill()}),e.restore()}}return{runtime:(r?.runtime??0)+a}},vTA=(A,e,t,o,i,a,r)=>{if(t===null)return;if(ii("COMPLEX_BINDINGS"))return RTA(A,e,t.element,o,i,a,r);e.save(),e.translate(i.scrollX,i.scrollY);let n=A.lastPointerMoveCoords?k(A.lastPointerMoveCoords.x,A.lastPointerMoveCoords.y):null,g=!!A.lastPointerMoveEvent&&Ra(A.lastPointerMoveEvent);FTA(e,t,o,i,n,g),e.restore()},HQA=(A,e,t)=>{let{angle:o,x1:i,y1:a,x2:r,y2:n,selectionColors:g,cx:s,cy:l,dashed:I,activeEmbeddable:c}=t,C=r-i,B=n-a,E=(t.padding??Wn*2)/e.zoom.value,h=8/e.zoom.value,p=4/e.zoom.value;A.save(),A.translate(e.scrollX,e.scrollY);let u=c||e.highlightSearchResult;A.lineWidth=(u?4:1.5)/e.zoom.value;let m=g.length;for(let w=0;w<m;++w)A.strokeStyle=g[w],I&&A.setLineDash([h,p+(h+p)*(m-1)]),A.lineDashOffset=(h+p)*w,Mw(A,i-E,a-E,C+E*2,B+E*2,s,l,o);A.restore()},MTA=(A,e,t,o)=>{let[i,a,r,n]=qA(t,o),g=r-i,s=n-a,l=tl(e.viewBackgroundColor);A.strokeStyle=l??"rgb(0,118,255)",A.lineWidth=fe.strokeWidth/e.zoom.value,A.save(),A.translate(e.scrollX,e.scrollY),Mw(A,i,a,g,s,i+g/2,a+s/2,t.angle,!1,fe.radius/e.zoom.value),A.restore()},MQA=(A,e,t,o)=>{let i=tl(e.viewBackgroundColor),{colors:a=[i],dashed:r=!1}=o||{},n=t.filter(I=>I.groupIds.length===0),g=t.filter(I=>I.groupIds.length>0),s=I=>{let[c,C,B,d]=$A(I);return{angle:0,x1:c,x2:B,y1:C,y2:d,selectionColors:a,dashed:r,cx:c+(B-c)/2,cy:C+(d-C)/2,activeEmbeddable:!1}},l=I=>{let c=be(t,I);return s(c)};Object.entries(GI(g,e)).filter(([I,c])=>c).map(([I,c])=>I).map(I=>l(I)).concat(n.map(I=>s([I]))).forEach(I=>HQA(A,e,I))},oT=(A,e,t,o)=>{if(!e.selectedLinearElement)return;A.save(),A.translate(e.scrollX,e.scrollY),A.lineWidth=1/e.zoom.value;let i=rA.getPointsGlobalCoordinates(t,o),{POINT_HANDLE_SIZE:a}=rA,r=e.selectedLinearElement?.isEditing?a:a/2,n=kA(t),g=ke(t);if(i.forEach((s,l)=>{if(n&&l!==0&&l!==i.length-1)return;let I=l>0&&(l!==i.length-1||!g||!t.polygon)&&Jt(s,l===i.length-1?i[0]:i[l-1],2/e.zoom.value),c=!!e.selectedLinearElement?.isEditing&&!!e.selectedLinearElement?.selectedPointsIndices?.includes(l);g&&t.polygon&&!c&&l===t.points.length-1&&e.selectedLinearElement?.isEditing&&e.selectedLinearElement?.selectedPointsIndices?.includes(0)&&(c=!0),tT(A,e,s,r,c,!1,I)}),kA(t)){let s=t.fixedSegments?.map(l=>l.index)||[];i.slice(0,-1).forEach((l,I)=>{rA.isSegmentTooShort(t,i[I+1],i[I],I,e.zoom,o)||tT(A,e,k((l[0]+i[I+1][0])/2,(l[1]+i[I+1][1])/2),a/2,!1,!s.includes(I+1),!1)})}else rA.getEditorMidPoints(t,o,e).filter((l,I,c)=>l!==null&&!(kA(t)&&(I===0||I===c.length-1))).forEach(l=>{(e.selectedLinearElement?.isEditing||i.length===2)&&tT(A,e,l,a/2,!1,!0,!1)});A.restore()},NTA=(A,e,t,o)=>{A.save(),A.translate(e.scrollX,e.scrollY),A.strokeStyle="rgba(134, 131, 226, 0.6)",A.lineWidth=1/e.zoom.value,A.setLineDash([4/e.zoom.value,4/e.zoom.value]),A.beginPath(),A.moveTo(t[0],t[1]),A.lineTo(o[0],o[1]),A.stroke(),A.restore()},YTA=(A,e,t,o,i)=>{A.save(),A.translate(e.scrollX,e.scrollY),A.strokeStyle="rgba(134, 131, 226, 0.6)",A.lineWidth=1/e.zoom.value,A.setLineDash([]),A.fillStyle=i?"rgba(134, 131, 226, 0.9)":"rgba(255, 255, 255, 0.9)",vw(A,t[0],t[1],o/e.zoom.value,!0,!0),A.restore()},NQA=({arrow:A,appState:e,type:t,context:o,elementsMap:i})=>{let a=t==="start"?A.startBinding:A.endBinding,r=a?.elementId&&i.get(a.elementId);if(!r||!bt(r)||r.isDeleted)return;let n=Ni(a.fixedPoint,r,i);if(!nh(n,A,r,i,e,t))return;let g=e.selectedLinearElement,s=!!g?.isDragging,l=t==="start"?0:A.points.length-1,I=!!g?.selectedPointsIndices?.includes(l);if(g?.hoveredFocusPointBinding===t&&!g.draggedFocusPointBinding&&vU(n,o,e),!(I&&s)){let c=Ni(a.fixedPoint,r,i),C=g?.hoveredFocusPointBinding===t,B=rA.getPointAtIndexGlobalCoordinates(A,l,i);NTA(o,e,B,c),YTA(o,e,c,id/1.5,C)}},YQA=(A,e,t,o,i)=>{Object.keys(o).forEach(a=>{let r=o[a];if(r!==void 0){let[n,g,s,l]=r;A.save(),A.lineWidth=1.5/t.zoom.value,e.selectionColor&&(A.strokeStyle=e.selectionColor),a==="rotation"?vw(A,n+s/2,g+l/2,s/2,!0):A.roundRect?(A.beginPath(),A.roundRect(n,g,s,l,2/t.zoom.value),A.fill(),A.stroke()):Mw(A,n,g,s,l,n+s/2,g+l/2,i,!0),A.restore()}})},HTA=(A,e,t,o,i)=>{let[a,r,,,n,g]=qA(o,i),s=3,l=20,I=s/t.zoom.value,c=I/2,C=n-a+I,B=g-r+I,d=Math.min(l/t.zoom.value,C),E=Math.min(l/t.zoom.value,B);A.save(),A.fillStyle=e.selectionColor,A.strokeStyle=e.selectionColor,A.lineWidth=I,[[[-C,-B],[0,c],[d,c],[c,0],[c,E]],[[C-c,-B],[c,c],[-d+c,c],[0,0],[0,E]],[[-C,B],[0,-c],[d,-c],[c,0],[c,-E]],[[C-c,B],[c,-c],[-d+c,-c],[0,0],[0,-E]]].forEach(p=>{let[[u,m],[w,b],[D,S],[U,v],[x,R]]=p;A.save(),A.translate(n,g),A.rotate(o.angle),A.beginPath(),A.moveTo(u+w,m+b),A.lineTo(u+D,m+S),A.stroke(),A.beginPath(),A.moveTo(u+U,m+v),A.lineTo(u+x,m+R),A.stroke(),A.restore()}),A.restore()},KTA=(A,e,t,o)=>{e.save();let i=_Y(t.zoom.value),a=A.width+i*2,r=A.height+i*2,n=A.x+A.width/2,g=A.y+A.height/2,s=-(A.width/2+i),l=-(A.height/2+i);e.translate(n+t.scrollX,g+t.scrollY),e.rotate(A.angle),e.lineWidth=1.5/t.zoom.value,e.strokeStyle=o,e.globalAlpha=.5,e.setLineDash([6/t.zoom.value,4/t.zoom.value]),e.strokeRect(s,l,a,r),e.restore()},JTA=(A,e,t,o,i)=>{let a=zY(A,t.zoom.value,i);a&&(e.save(),e.globalAlpha=.5,e.lineWidth=1.5/t.zoom.value,e.lineCap="round",e.strokeStyle=o,e.beginPath(),e.moveTo(a.start[0]+t.scrollX,a.start[1]+t.scrollY),e.lineTo(a.end[0]+t.scrollX,a.end[1]+t.scrollY),e.stroke(),e.restore())},TTA=({app:A,canvas:e,elementsMap:t,visibleElements:o,selectedElements:i,allElementsMap:a,scale:r,appState:n,renderConfig:g,editorInterface:s,animationState:l,deltaTime:I})=>{if(e===null)return{};let[c,C]=bh(e,r),B=l,d=Dh({canvas:e,scale:r,normalizedWidth:c,normalizedHeight:C});d.save(),d.scale(n.zoom.value,n.zoom.value);let E;if(o.forEach(b=>{n.selectedLinearElement?.isEditing&&n.selectedLinearElement.elementId===b.id&&b&&(E=b)}),E&&oT(d,n,E,t),n.selectionElement&&!n.isCropping)try{U4(n.selectionElement,d,n,g.selectionColor)}catch(b){console.error(b)}let h=_m(i,n);if(h&&!h.autoResize&&JTA(h,d,n,g.selectionColor,s.formFactor),n.editingTextElement){let b=a.get(n.editingTextElement.id);b&&!b.autoResize&&KTA(b,d,n,g.selectionColor)}if(n.isBindingEnabled&&n.suggestedBinding?B={...l,bindingHighlight:vTA(A,d,n.suggestedBinding,a,n,I,l?.bindingHighlight)}:B={...l,bindingHighlight:void 0},n.hoveredArrowTextAnchor&&UTA(d,n,a),n.frameToHighlight&&MTA(d,n,n.frameToHighlight,t),n.elementsToHighlight&&MQA(d,n,n.elementsToHighlight),n.activeLockedId){let b=a.get(n.activeLockedId),D=b?[b]:be(a,n.activeLockedId);MQA(d,n,D,{colors:["#ced4da"],dashed:!0})}let p=i.some(b=>mA(b));i.length===1&&n.selectedLinearElement?.isEditing&&n.selectedLinearElement.elementId===i[0].id&&oT(d,n,i[0],t);let u=n.selectedLinearElement,m=u&&rA.getElement(u.elementId,a);if(m&&(n.selectedLinearElement.isDragging||(u.segmentMidPointHoveredCoords?xTA(d,n):(kA(m)?u.hoverPointIndex===0||u.hoverPointIndex===m.points.length-1:u.hoverPointIndex>=0)&>A(d,n,t)),bA(m)&&(NQA({arrow:m,elementsMap:a,appState:n,context:d,type:"start"}),NQA({arrow:m,elementsMap:a,appState:n,context:d,type:"end"}))),!n.multiElement&&!n.newElement&&!n.selectedLinearElement?.isEditing){let b=Z0(i,n,s),D=i.length===1&&FA(i[0]);D&&n.selectedLinearElement?.elementId===i[0].id&&!i[0].locked&&oT(d,n,i[0],t);let S=g.selectionColor||"#000";if(b){let U=QA(i),v=[];for(let R of t.values()){let W=[],q=g.remoteSelectedElementIds.get(R.id);if(D&&kA(R)&&(R.startBinding||R.endBinding)||(U.has(R.id)&&!Tm(n,R)&&W.push(S),q&&W.push(...q.map(T=>aE(T,n.collaborators.get(T))))),W.length){let[T,F,K,N,J,H]=qA(R,t,!0);v.push({angle:R.angle,x1:T,y1:F,x2:K,y2:N,selectionColors:R.locked?["#ced4da"]:W,dashed:!!q||R.locked,cx:J,cy:H,activeEmbeddable:n.activeEmbeddable?.element===R&&n.activeEmbeddable.state==="active",padding:R.id===n.croppingElementId||xe(R)?0:void 0})}}let x=R=>{let W=be(t,R),[q,T,F,K]=$A(W);v.push({angle:0,x1:q,x2:F,y1:T,y2:K,selectionColors:W.some(N=>N.locked)?["#ced4da"]:["#000"],dashed:!0,cx:q+(F-q)/2,cy:T+(K-T)/2,activeEmbeddable:!1})};for(let R of $n(n))x(R);n.editingGroupId&&x(n.editingGroupId),v.forEach(R=>HQA(d,n,R))}if(d.save(),d.translate(n.scrollX,n.scrollY),i.length===1){d.fillStyle="#fff";let U=P0(i[0],n.zoom,t,"mouse",Cd(s));if(!n.viewModeEnabled&&b&&!cA(n.editingTextElement)&&!n.croppingElementId&&YQA(d,g,n,U,i[0].angle),n.croppingElementId&&!n.isCropping){let v=t.get(n.croppingElementId);v&&xe(v)&&HTA(d,g,n,v,t)}}else if(i.length>1&&!n.isRotating&&!i.some(U=>U.locked)){let U=Wn*2/n.zoom.value;d.fillStyle="#fff";let[v,x,R,W]=$A(i,t),q=d.getLineDash();d.setLineDash([2/n.zoom.value]);let T=d.lineWidth;d.lineWidth=1/n.zoom.value,d.strokeStyle=S,Mw(d,v-U,x-U,R-v+U*2,W-x+U*2,(v+R)/2,(x+W)/2,0),d.lineWidth=T,d.setLineDash(q);let F=gw([v,x,R,W,(v+R)/2,(x+W)/2],0,n.zoom,"mouse",p?{...Cd(s),rotation:!0}:Cd(s));i.some(K=>!K.locked)&&YQA(d,g,n,F,0)}d.restore()}n.searchMatches?.matches.forEach(({id:b,focus:D,matchedLines:S})=>{let U=t.get(b);if(U){let[v,x,,,R,W]=qA(U,t,!0);d.save(),n.theme===EA.LIGHT?D?d.fillStyle="rgba(255, 124, 0, 0.4)":d.fillStyle="rgba(255, 226, 0, 0.4)":D?d.fillStyle="rgba(229, 82, 0, 0.4)":d.fillStyle="rgba(99, 52, 0, 0.4)";let q=mA(U)?n.zoom.value:1;d.translate(n.scrollX,n.scrollY),d.translate(R,W),d.rotate(U.angle),S.forEach(T=>{(T.showOnCanvas||D)&&d.fillRect(v+T.offsetX/q-R,x+T.offsetY/q-W,T.width/q,T.height/q)}),d.restore()}}),RQA(d,n),d.restore(),GgA({context:d,renderConfig:g,appState:n,normalizedWidth:c,normalizedHeight:C});let w;return g.renderScrollbars&&(w=RlA(t,c,C,n),d.save(),d.fillStyle=FlA,d.strokeStyle="rgba(255,255,255,0.8)",[w.horizontal,w.vertical].forEach(b=>{b&&Ax(d,b.x,b.y,b.width,b.height,qa/2)}),d.restore()),{scrollBars:w,animationState:B}},KQA=A=>{A.renderConfig.selectionColor=tl(A.appState.viewBackgroundColor);let e=TTA(A);return A.callback(e),e};var PQA=G(_(),1),JQA="animateInteractiveScene",PTA=A=>{let e=(0,_E.useRef)(!1),t=(0,_E.useRef)(null);return(0,_E.useEffect)(()=>{if(!e.current){e.current=!0;return}let o=new Map,i=new Map,a=new Map,r=new Map,n=new Map;A.appState.collaborators.forEach((s,l)=>{if(s.selectedElementIds)for(let I of Object.keys(s.selectedElementIds))a.has(I)||a.set(I,[]),a.get(I).push(l);!s.pointer||s.pointer.renderCursor===!1||(s.username&&r.set(l,s.username),s.userState&&n.set(l,s.userState),i.set(l,oi({sceneX:s.pointer.x,sceneY:s.pointer.y},A.appState)),o.set(l,s.button))});let g=A.containerRef?.current&&getComputedStyle(A.containerRef.current).getPropertyValue("--color-selection")||"#6965db";t.current={app:A.app,canvas:A.canvas,elementsMap:A.elementsMap,visibleElements:A.visibleElements,selectedElements:A.selectedElements,allElementsMap:A.allElementsMap,scale:window.devicePixelRatio,appState:A.appState,renderConfig:{remotePointerViewportCoords:i,remotePointerButton:o,remoteSelectedElementIds:a,remotePointerUsernames:r,remotePointerUserStates:n,selectionColor:g,renderScrollbars:A.renderScrollbars,lastViewportPosition:A.app.viewport.lastPosition},editorInterface:A.editorInterface,callback:A.renderInteractiveSceneCallback,animationState:{bindingHighlight:void 0},deltaTime:0},yi.running(JQA)||yi.start(JQA,({deltaTime:s,state:l})=>{let I=KQA({...t.current,deltaTime:s,animationState:l}).animationState;if(I){for(let c in I)if(I[c]!==void 0)return I}})}),(0,PQA.jsx)("canvas",{className:"excalidraw__canvas interactive",style:{width:A.appState.width,height:A.appState.height},width:A.appState.width*A.scale,height:A.appState.height*A.scale,ref:A.handleCanvasRef,onContextMenu:A.onContextMenu,onClick:A.onClick,onPointerMove:A.onPointerMove,onPointerUp:A.onPointerUp,onPointerCancel:A.onPointerCancel,onTouchMove:A.onTouchMove,onPointerDown:A.onPointerDown,onDoubleClick:A.onDoubleClick,children:L("labels.drawingCanvas")})},TQA=A=>({zoom:A.zoom,scrollX:A.scrollX,scrollY:A.scrollY,width:A.width,height:A.height,viewModeEnabled:A.viewModeEnabled,activeTool:A.activeTool,openDialog:A.openDialog,editingGroupId:A.editingGroupId,selectedElementIds:A.selectedElementIds,frameToHighlight:A.frameToHighlight,offsetLeft:A.offsetLeft,offsetTop:A.offsetTop,theme:A.theme,selectionElement:A.selectionElement,selectedGroupIds:A.selectedGroupIds,selectedLinearElement:A.selectedLinearElement,multiElement:A.multiElement,newElement:A.newElement,isBindingEnabled:A.isBindingEnabled,isMidpointSnappingEnabled:A.isMidpointSnappingEnabled,gridModeEnabled:A.gridModeEnabled,suggestedBinding:A.suggestedBinding,hoveredArrowTextAnchor:A.hoveredArrowTextAnchor,isRotating:A.isRotating,elementsToHighlight:A.elementsToHighlight,collaborators:A.collaborators,activeEmbeddable:A.activeEmbeddable,snapLines:A.snapLines,zenModeEnabled:A.zenModeEnabled,editingTextElement:A.editingTextElement,viewBackgroundColor:A.viewBackgroundColor,gridColor:A.gridColor,gridDirection:A.gridDirection,highlightSearchResult:A.highlightSearchResult,isCropping:A.isCropping,croppingElementId:A.croppingElementId,searchMatches:A.searchMatches,activeLockedId:A.activeLockedId,hoveredElementIds:A.hoveredElementIds,frameRendering:A.frameRendering,frameColor:A.frameColor,shouldCacheIgnoreZoom:A.shouldCacheIgnoreZoom,exportScale:A.exportScale,currentItemArrowType:A.currentItemArrowType}),ZTA=(A,e)=>A.selectionNonce!==e.selectionNonce||A.canvasNonce!==e.canvasNonce||A.scale!==e.scale||A.elementsMap!==e.elementsMap||A.visibleElements!==e.visibleElements||A.selectedElements!==e.selectedElements||A.renderScrollbars!==e.renderScrollbars||A.interactionEnabled!==e.interactionEnabled||A.navigationEnabled!==e.navigationEnabled?!1:Tt(TQA(A.appState),TQA(e.appState)),iT=_E.default.memo(PTA,ZTA);Q();var wB=G(nA(),1);X();Nw();var WQA=G(_(),1),WTA=A=>{let e=(0,wB.useRef)(null),t=(0,wB.useRef)(!1);return(0,wB.useEffect)(()=>{A.canvas.style.width=`${A.appState.width}px`,A.canvas.style.height=`${A.appState.height}px`,A.canvas.width=A.appState.width*A.scale,A.canvas.height=A.appState.height*A.scale},[A.appState.height,A.appState.width,A.canvas,A.scale]),(0,wB.useEffect)(()=>{let o=e.current;if(!o)return;let i=A.canvas;t.current||(t.current=!0,o.replaceChildren(i),i.classList.add("excalidraw__canvas","static")),kk({canvas:i,rc:A.rc,scale:A.scale,elementsMap:A.elementsMap,allElementsMap:A.allElementsMap,visibleElements:A.visibleElements,appState:A.appState,renderConfig:A.renderConfig},Ku())}),(0,WQA.jsx)("div",{className:"excalidraw__canvas-wrapper",ref:e})},ZQA=A=>({zoom:A.zoom,scrollX:A.scrollX,scrollY:A.scrollY,width:A.width,height:A.height,viewModeEnabled:A.viewModeEnabled,openDialog:A.openDialog,hoveredElementIds:A.hoveredElementIds,offsetLeft:A.offsetLeft,offsetTop:A.offsetTop,theme:A.theme,shouldCacheIgnoreZoom:A.shouldCacheIgnoreZoom,viewBackgroundColor:A.viewBackgroundColor,exportScale:A.exportScale,selectedElementsAreBeingDragged:A.selectedElementsAreBeingDragged,gridSize:A.gridSize,gridStep:A.gridStep,frameRendering:A.frameRendering,selectedElementIds:A.selectedElementIds,frameToHighlight:A.frameToHighlight,editingGroupId:A.editingGroupId,currentHoveredFontFamily:A.currentHoveredFontFamily,croppingElementId:A.croppingElementId,linkOpacity:A.linkOpacity,gridColor:A.gridColor,gridDirection:A.gridDirection,frameColor:A.frameColor,suggestedBinding:A.suggestedBinding}),_TA=(A,e)=>A.canvasNonce!==e.canvasNonce||A.scale!==e.scale||A.elementsMap!==e.elementsMap||A.visibleElements!==e.visibleElements?!1:Tt(ZQA(A.appState),ZQA(e.appState))&&Tt(A.renderConfig,e.renderConfig),aT=wB.default.memo(WTA,_TA);Q();var MU=G(nA(),1);Q();X();O();Dk();Nw();var _QA=({canvas:A,rc:e,newElement:t,elementsMap:o,allElementsMap:i,scale:a,appState:r,renderConfig:n})=>{if(A){let[g,s]=bh(A,a),{isHighlighterPenDrawing:l=!1}=n,I=Dh({canvas:A,scale:a,normalizedWidth:g,normalizedHeight:s,theme:r.theme,viewBackgroundColor:l?r.viewBackgroundColor:"transparent"});if(I.save(),I.scale(r.zoom.value,r.zoom.value),t&&t.type!=="selection"){if(sr(t))return;if((t.frameId||r.frameToHighlight?.id)&&r.frameRendering.enabled&&r.frameRendering.clip){let B=$Q(t,o,r);B&&$m(t,B,r,o)&&yk(B,I,n,r)}FI(t,o,i,e,I,n,r)}else I.clearRect(0,0,g,s);I.restore()}},zTA=Nc(A=>{_QA(A)}),zQA=(A,e)=>{if(e){zTA(A);return}_QA(A)};var OQA=G(_(),1),OTA=A=>{let e=(0,MU.useRef)(null);return(0,MU.useEffect)(()=>{e.current&&zQA({canvas:e.current,scale:A.scale,newElement:A.newElement,elementsMap:A.elementsMap,allElementsMap:A.allElementsMap,rc:A.rc,renderConfig:A.renderConfig,appState:A.appState},Ku())}),(0,OQA.jsx)("canvas",{className:"excalidraw__canvas",style:{width:A.appState.width,height:A.appState.height},width:A.appState.width*A.scale,height:A.appState.height*A.scale,ref:e})},rT=OTA;bk();Q();var mc=G(nA(),1);X();var $QA=G(_(),1),qQA=700,qTA=100,jTA=16,VTA=5*60*1e3,VQA=Ge(null),jQA=A=>A===to.elbow?kC:A===to.round?LC:yC,NU=class{constructor(e){M(this,"app");M(this,"lastShownAt",0);M(this,"show",e=>{let{x:t,y:o}=this.app.viewport.lastPosition;t===0&&o===0||(this.lastShownAt=Date.now(),this.app.updateEditorAtom(VQA,{content:e,nonce:Math.random()}))});M(this,"isOnCooldown",()=>Date.now()-this.lastShownAt<VTA);M(this,"onArrowTypeCycled",e=>{this.show(jQA(e))});M(this,"onToolShortcut",(e,t)=>{(t==="digit"||!this.isOnCooldown())&&this.show(e==="line"?Fh:jQA(this.app.state.currentItemArrowType))});this.app=e}},XQA=()=>{let[A,e]=ne(VQA),t=Rt(),{container:o}=Gt(),i=(0,mc.useRef)(null),[a,r]=(0,mc.useState)(!1),n=A?.nonce;return(0,mc.useLayoutEffect)(()=>{if(n==null||!o)return;let g=(l,I)=>{let c=i.current;if(!c)return;let{left:C,top:B}=ES({cursor:{x:l,y:I},element:{width:c.offsetWidth,height:c.offsetHeight},container:o.getBoundingClientRect(),gap:jTA});c.style.transform=`translate(${C}px, ${B}px)`};g(t.viewport.lastPosition.x,t.viewport.lastPosition.y);let s=l=>{g(l.clientX,l.clientY)};return window.addEventListener("pointermove",s),()=>{window.removeEventListener("pointermove",s)}},[n,o,t]),(0,mc.useEffect)(()=>()=>{e(null)},[e]),(0,mc.useEffect)(()=>{if(n==null)return;r(!1);let g=window.setTimeout(()=>{r(!0)},qQA),s=window.setTimeout(()=>{e(null)},qQA+qTA),l=()=>{e(null)};return window.addEventListener("pointerdown",l,{capture:!0}),()=>{window.clearTimeout(g),window.clearTimeout(s),window.removeEventListener("pointerdown",l,{capture:!0})}},[n,e]),A?(0,$QA.jsx)("div",{ref:i,className:iA("CursorHint",{"CursorHint--fade-out":a}),"data-testid":"cursor-hint",children:A.content}):null};Q();var YU=class{constructor(e){this.getState=e;M(this,"listeners",[]);M(this,"onStateChange",(e,t,o)=>{let{predicate:i,getValue:a,callback:r,once:n,matchesImmediately:g}=this.normalize(e,t,o);return r?g&&(queueMicrotask(()=>{let s=this.getState();r(a(s),s)}),n)?()=>{}:this.subscribe({predicate:i,getValue:a,callback:r,once:n}):g?Promise.resolve(a(this.getState())):new Promise(s=>{this.subscribe({predicate:i,getValue:a,callback:l=>s(l),once:!0})})})}isStateChangePredicateOptions(e){return typeof e=="object"&&!Array.isArray(e)&&"predicate"in e}subscribe(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}normalize(e,t,o){let i,a,r=t,n=o?.once??!1,g=!1;if(this.isStateChangePredicateOptions(e)){let{predicate:s,callback:l,once:I}=e;i=s,a=c=>c,r=l?(c,C)=>l(C):void 0,n=I??!1,g=s(this.getState())}else if(typeof e=="function"){let s=e;i=(l,I)=>s(l)!==s(I),a=l=>s(l)}else if(Array.isArray(e)){let s=e;i=(l,I)=>s.some(c=>l[c]!==I[c]),a=l=>l}else{let s=e;i=(l,I)=>l[s]!==I[s],a=l=>l[s]}return{predicate:i,getValue:a,callback:r,once:n,matchesImmediately:g}}flush(e){if(!this.listeners.length)return;let t=this.getState(),o=[];for(let i of this.listeners)i.predicate(t,e)?(i.callback(i.getValue(t),t),i.once||o.push(i)):o.push(i);this.listeners=o}clear(){this.listeners=[]}};Q();O();X();var AhA=G($g(),1);var thA=G(_(),1),XTA=({app:A,activeLockedId:e})=>{let t=A.scene.getElement(e);t&&!St(t)&&console.error("[NONDELETED][INVARIANT] UnlockPopup: activeLockedId points to a deleted element");let o=t&&St(t)?t:null,i=o?[o]:be(A.scene.getNonDeletedElementsMap(),e);if(i.length===0)return null;let[a,r]=$A(i),{x:n,y:g}=oi({sceneX:a,sceneY:r},A.state);return(0,thA.jsx)("div",{className:"UnlockPopup",style:{bottom:`${A.state.height+12-g+A.state.offsetTop}px`,left:`${n-A.state.offsetLeft}px`},onClick:()=>{(0,AhA.flushSync)(()=>{let s=GI(i,A.state);A.setState({selectedElementIds:i.reduce((l,I)=>({...l,[I.id]:!0}),{}),selectedGroupIds:s,activeLockedId:null})}),A.actionManager.executeAction(zf)},title:L("labels.elementLock.unlock"),children:OeA})},ehA=XTA;_r();X();var Ue=G(_(),1),ahA=_o.default.createContext(null),rhA=_o.default.createContext(null),gT={formFactor:"desktop",desktopUIMode:"full",userAgent:_F(typeof navigator<"u"?navigator.userAgent:""),isTouchScreen:!1,canFitSidebar:!1,isLandscape:!0},lT=_o.default.createContext(gT);lT.displayName="EditorInterfaceContext";var $TA={"editor:mount":{cardinality:"once",replay:"last"},"editor:initialize":{cardinality:"once",replay:"last"},"editor:unmount":{cardinality:"once",replay:"last"}},IT=_o.default.createContext({container:null,id:null});IT.displayName="ExcalidrawContainerContext";var cT=_o.default.createContext([]);cT.displayName="ExcalidrawElementsContext";var CT=_o.default.createContext({...Ir(),width:0,height:0,offsetLeft:0,offsetTop:0});CT.displayName="ExcalidrawAppStateContext";var BT=_o.default.createContext(()=>{console.warn("Uninitialized ExcalidrawSetAppStateContext context!")});BT.displayName="ExcalidrawSetAppStateContext";var dT=_o.default.createContext(null);dT.displayName="ExcalidrawActionManagerContext";var zE=_o.default.createContext(null);zE.displayName="ExcalidrawAPIContext";var TU=_o.default.createContext(null);TU.displayName="ExcalidrawAPISetContext";var Rt=()=>(0,_o.useContext)(ahA),Da=()=>(0,_o.useContext)(rhA),Je=()=>(0,_o.useContext)(lT),mi=()=>pI(Je()),Gt=()=>(0,_o.useContext)(IT),YC=()=>(0,_o.useContext)(cT),hg=()=>(0,_o.useContext)(CT),Ye=()=>(0,_o.useContext)(BT),Wt=()=>(0,_o.useContext)(dT),Mf=()=>(0,_o.useContext)(zE),BD=!1,dD=0,ED=null,wc=!1,qs=!1,HU=!1,QD={horizontal:null,vertical:null},fB=0,hD=!1,nT=new Map,A8A=4,KU=!1,JU=0,ohA=!1,Up=null,ve={pointers:new Map,lastCenter:null,initialDistance:null,initialScale:null},sT=class A extends _o.default.Component{constructor(t){super(t);M(this,"canvas");M(this,"interactiveCanvas",null);M(this,"sessionExportThemeOverride");M(this,"rc");M(this,"unmounted",!1);M(this,"actionManager");M(this,"editorInterface",gT);M(this,"stylesPanelMode",pI(gT));M(this,"excalidrawContainerRef",_o.default.createRef());M(this,"scene");M(this,"fonts");M(this,"renderer");M(this,"visibleElements");M(this,"hasRenderableElements",!1);M(this,"resizeObserver");M(this,"library");M(this,"libraryItemsFromStorage");M(this,"id");M(this,"store");M(this,"history");M(this,"shouldRenderAllEmbeddables",!1);M(this,"excalidrawContainerValue");M(this,"files",{});M(this,"imageCache",new Map);M(this,"iFrameRefs",new Map);M(this,"embedsValidationStatus",new Map);M(this,"initializedEmbeds",new Set);M(this,"elementsPendingErasure",new Set);M(this,"_initialized",!1);M(this,"editorLifecycleEvents",new uy($TA));M(this,"onEvent",this.editorLifecycleEvents.on.bind(this.editorLifecycleEvents));M(this,"appStateObserver",new YU(()=>this.state));M(this,"onStateChange",this.appStateObserver.onStateChange);M(this,"bucketFill",new zx(this));M(this,"flowchart",new Vx(this));M(this,"cursor",new Ox(this));M(this,"arrowText",new _x(this));M(this,"viewport",new $x(this,{getContainer:()=>this.excalidrawContainerRef.current,getStylesPanelMode:()=>this.stylesPanelMode,isGestureActive:()=>ve.pointers.size>=2||qs}));M(this,"bindModeHandler",null);M(this,"textWysiwygSubmitHandler",null);M(this,"hitLinkElement");M(this,"lastPointerDownEvent",null);M(this,"lastPointerUpEvent",null);M(this,"lastPointerUpIsDoubleClick",!1);M(this,"lastPointerMoveEvent",null);M(this,"lastPointerMoveCoords",null);M(this,"lastCompletedCanvasClicks",[]);M(this,"previousPointerMoveCoords",null);M(this,"allowMobileMode",!0);M(this,"drawShape",new jx(this));M(this,"laserTrails",new Nx(this));M(this,"eraserTrail",new Hx(this));M(this,"lassoTrail",new Yx(this));M(this,"cursorHints",new NU(this));M(this,"onChangeEmitter",new Ri);M(this,"onPointerDownEmitter",new Ri);M(this,"onPointerUpEmitter",new Ri);M(this,"onUserFollowEmitter",new Ri);M(this,"onScrollChangeEmitter",new Ri);M(this,"missingPointerEventCleanupEmitter",new Ri);M(this,"onRemoveEventListenersEmitter",new Ri);M(this,"api");M(this,"isToolSupported",(t,o=this.props)=>{if(o.UIOptions.tools?.[t]===!1)return!1;if(this.isInteractionEnabled(o))return!0;let i=typeof o.interaction=="object"&&o.interaction!==null?o.interaction.enabled?.tools:void 0;return t==="laser"?i?.laser===!0:t==="custom"?i?.custom===!0:!1});M(this,"updateEditorAtom",(t,...o)=>{let i=wo.set(t,...o);return this.triggerRender(),i});M(this,"previousHoveredBindableElement",null);M(this,"getEffectiveGridSize",()=>eB(this)?this.state.gridSize:null);M(this,"getTextCreationGridPoint",(t,o)=>{let i=this.getEffectiveGridSize();if(i===null)return null;let a=r=>Math.floor(r/i)*i;return{x:a(t),y:a(o)}});M(this,"handleIframeLikeElementHover",({hitElement:t,scenePointer:o,moveEvent:i})=>t&&Oo(t)&&(this.state.viewModeEnabled||this.state.activeTool.type==="laser"||this.isIframeLikeElementCenter(t,i,o.x,o.y))?(this.cursor.set(Xe.POINTER),this.setState({activeEmbeddable:{element:t,state:"hover"}}),!0):(this.state.activeEmbeddable?.state==="hover"&&this.setState({activeEmbeddable:null}),!1));M(this,"isDoubleClick",(t,o)=>t!=null&&o.timeStamp-t.timeStamp<=HF);M(this,"updateEmbedValidationStatus",(t,o)=>{this.embedsValidationStatus.set(t.id,o),It.delete(t)});M(this,"updateEmbeddables",()=>{let t=new Set,o=!1;this.scene.getNonDeletedElements().filter(i=>{if(ni(i)){if(t.add(i.id),!this.embedsValidationStatus.has(i.id)){o=!0;let a=rh(i.link,this.props.validateEmbeddable);this.updateEmbedValidationStatus(i,a)}}else is(i)&&t.add(i.id);return!1}),o&&this.scene.triggerUpdate(),this.iFrameRefs.forEach((i,a)=>{t.has(a)||this.iFrameRefs.delete(a)})});M(this,"getFrameNameDOMId",t=>`${this.id}-frame-name-${t.id}`);M(this,"frameNameBoundsCache",{get:t=>{let o=this.frameNameBoundsCache._cache.get(t.id);if(!o||o.zoom!==this.state.zoom.value||o.versionNonce!==t.versionNonce){let i=document.getElementById(this.getFrameNameDOMId(t));if(i){let a=i.getBoundingClientRect(),r=He({clientX:a.x,clientY:a.y},this.state),n=He({clientX:a.right,clientY:a.bottom},this.state);return o={x:r.x,y:r.y,width:n.x-r.x,height:n.y-r.y,zoom:this.state.zoom.value,versionNonce:t.versionNonce},this.frameNameBoundsCache._cache.set(t.id,o),o}return null}return o},_cache:new Map});M(this,"resetEditingFrame",t=>{t&&this.scene.mutateElement(t,{name:t.name?.trim()||null}),this.setState({editingFrame:null})});M(this,"renderFrameNames",()=>{if(!this.state.frameRendering.enabled||!this.state.frameRendering.name)return this.state.editingFrame&&this.resetEditingFrame(null),null;let t=this.state.theme===EA.DARK,o=this.state.frameRendering.markerName&&this.state.frameRendering.markerEnabled?this.scene.getNonDeletedFramesLikes():this.scene.getNonDeletedFramesLikes().filter(a=>a.frameRole!=="marker"),i=o.length>0&&this.state.searchMatches?.focusedId&&mA(this.scene.getElement(this.state.searchMatches.focusedId))?this.state.searchMatches.matches.find(a=>a.focus):null;return o.map(a=>{if(!gd(a,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap()))return this.state.editingFrame===a.id&&this.resetEditingFrame(a),null;let{x:r,y:n}=oi({sceneX:a.x,sceneY:a.y},this.state),g=6,s,l=Aw(a);if(a.id===this.state.editingFrame){let I=l;s=(0,Ue.jsx)("input",{autoFocus:!0,value:I,onChange:c=>{this.scene.mutateElement(a,{name:c.target.value})},onFocus:c=>c.target.select(),onBlur:()=>this.resetEditingFrame(a),onKeyDown:c=>{(c.key===z.ESCAPE||c.key===z.ENTER)&&this.resetEditingFrame(a)},style:{background:Fe(this.state.viewBackgroundColor,t),zIndex:2,border:"none",display:"block",padding:`${g}px`,borderRadius:4,boxShadow:"inset 0 0 0 2px var(--color-on-primary-container)",fontFamily:"Assistant",fontSize:`${fe.nameFontSize}px`,transform:`translate(-${g}px, ${g}px)`,color:t?fe.nameColorDarkTheme:fe.nameColorLightTheme,overflow:"hidden",maxWidth:`${keA().clientWidth-r-g}px`},size:I.length+1||1,dir:"auto",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off"})}else s=l;return(0,Ue.jsx)("div",{id:this.getFrameNameDOMId(a),className:wt.FRAME_NAME,style:{position:"absolute",bottom:`${this.state.height+fe.nameOffsetY-n+this.state.offsetTop}px`,left:`${r-this.state.offsetLeft}px`,zIndex:2,fontSize:fe.nameFontSize,color:this.state.frameColor?.nameColor??(t?fe.nameColorDarkTheme:fe.nameColorLightTheme),lineHeight:fe.nameLineHeight,width:"max-content",maxWidth:i?.id===a.id&&i?.focus?"none":`${a.width*this.state.zoom.value}px`,overflow:a.id===this.state.editingFrame?"visible":"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",cursor:Xe.MOVE,pointerEvents:this.state.viewModeEnabled?MB.disabled:MB.enabled},onPointerDown:I=>this.handleCanvasPointerDown(I),onWheel:I=>this.handleWheel(I),onContextMenu:this.handleCanvasContextMenu,onDoubleClick:()=>{this.setState({editingFrame:a.id})},children:s},a.id)})});M(this,"focusContainer",()=>{this.excalidrawContainerRef.current?.focus()});M(this,"getSceneElementsIncludingDeleted",()=>this.scene.getElementsIncludingDeleted());M(this,"getSceneElementsMapIncludingDeleted",()=>this.scene.getElementsMapIncludingDeleted());M(this,"getSceneElements",()=>this.scene.getNonDeletedElements());M(this,"onInsertElements",t=>{this.addElementsFromPasteOrLibrary({elements:t,position:"center",files:null})});M(this,"onExportImage",async(t,o,i)=>{ye("export",t,"ui");let a=await eE(t,o,this.state,this.files,{exportBackground:this.state.exportBackground,name:this.getName(),viewBackgroundColor:this.state.viewBackgroundColor,exportingFrame:i.exportingFrame}).catch(W3).catch(r=>{console.error(r),this.setState({errorMessage:r.message})});this.state.exportEmbedScene&&a&&fh(a)&&this.setState({fileHandle:a})});M(this,"magicGenerations",new Map);M(this,"updateMagicGeneration",({frameElement:t,data:o})=>{o.status==="pending"?this.scene.mutateElement(t,{customData:{generationData:void 0}},{informMutation:!1,isDragging:!1}):this.scene.mutateElement(t,{customData:{generationData:o}},{informMutation:!1,isDragging:!1}),this.magicGenerations.set(t.id,o),this.triggerRender()});M(this,"plugins",{});M(this,"onMagicframeToolSelect",()=>{let t=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds});if(t.length===0)this.setActiveTool({type:po.magicframe}),ye("ai","tool-select (empty-selection)","d2c");else{let o=t.length===1&&UQ(t[0])&&t[0];if(!o&&t.some(a=>mA(a)||a.frameId)){this.setActiveTool({type:po.magicframe});return}ye("ai","tool-select (existing selection)","d2c");let i;if(o)i=o;else{let[a,r,n,g]=$A(t),s=50;i=aw({...fe,x:a-s,y:r-s,width:n-a+s*2,height:g-r+s*2,opacity:100,locked:!1}),this.insertNewElement(i);for(let l of t)this.scene.mutateElement(l,{frameId:i.id});this.setState({selectedElementIds:{[i.id]:!0}})}this.onMagicFrameGenerate(i,"upstream")}});M(this,"openEyeDropper",({type:t})=>{this.updateEditorAtom(en,{swapPreviewOnAlt:!0,colorPickerType:t==="stroke"?"elementStroke":"elementBackground",onSelect:(o,i)=>{let a=t==="background"&&i.altKey||t==="stroke"&&!i.altKey;!this.scene.getSelectedElements(this.state).length||this.state.activeTool.type!=="selection"?a?this.syncActionResult({appState:{...this.state,currentItemStrokeColor:o},captureUpdate:tA.IMMEDIATELY}):this.syncActionResult({appState:{...this.state,currentItemBackgroundColor:o},captureUpdate:tA.IMMEDIATELY}):this.updateScene({elements:this.scene.getElementsIncludingDeleted().map(n=>this.state.selectedElementIds[n.id]?YA(n,{[a?"strokeColor":"backgroundColor"]:o}):n),captureUpdate:tA.IMMEDIATELY})},keepOpenOnAlt:!1})});M(this,"dismissLinearEditor",()=>{setTimeout(()=>{this.state.selectedLinearElement?.isEditing&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isEditing:!1}})})});M(this,"syncActionResult",Bo(t=>{if(this.unmounted||t===!1)return;this.store.scheduleAction(t.captureUpdate);let o=!1,i=null;if(t.elements&&(this.scene.replaceAllElements(t.elements),o=!0),t.files&&(this.addMissingFiles(t.files,t.replaceFiles),this.addNewImagesToImageCache()),t.appState||i||this.state.contextMenu){let a=t?.appState?.viewModeEnabled||!1,r=t?.appState?.zenModeEnabled||!1,n=t?.appState?.theme||this.props.theme||EA.LIGHT,g=t?.appState?.name??this.state.name,s=t?.appState?.errorMessage??this.state.errorMessage;if(typeof this.props.viewModeEnabled<"u"&&(a=this.props.viewModeEnabled),this.isInteractionEnabled()||(a=!0),typeof this.props.zenModeEnabled<"u"&&(r=this.props.zenModeEnabled),i=t.appState?.editingTextElement||null,t.elements&&i){let l=i.id,I=t.elements.find(c=>c.id===l);i=I&&St(I)&&cA(I)?I:null}this.setState(l=>{let I=t.appState||{};return{...l,...I,contextMenu:null,editingTextElement:i,viewModeEnabled:a,zenModeEnabled:r,theme:n,name:g,errorMessage:s}}),o=!0}o||this.scene.triggerUpdate()}));M(this,"scheduleCapture",()=>this.store.scheduleCapture());M(this,"onBlur",Bo(()=>{wc=!1,this.setState({isBindingEnabled:this.state.bindingPreference==="enabled"})}));M(this,"onUnload",()=>{this.onBlur()});M(this,"disableEvent",t=>{t.preventDefault()});M(this,"preventBrowserZoomWheel",t=>{t[z.CTRL_OR_CMD]&&t.preventDefault()});M(this,"handleNavigationModeKeyDown",t=>{if(wC()&&t.key.toLowerCase()==="m"){this.onKeyDown(t);return}if(this.maybeHandlePageScrollKeyDown(t)){t.preventDefault();return}this.actionManager.handleKeyDown(t)});M(this,"maybeHandlePageScrollKeyDown",t=>{if(t.key!==z.PAGE_UP&&t.key!==z.PAGE_DOWN)return!1;let o=(t.shiftKey?this.state.width:this.state.height)/this.state.zoom.value;return t.key===z.PAGE_DOWN&&(o=-o),t.shiftKey?this.viewport.translate(i=>({scrollX:i.scrollX+o})):this.viewport.translate(i=>({scrollY:i.scrollY+o})),!0});M(this,"preventBrowserZoomKeyDown",t=>{t[z.CTRL_OR_CMD]&&(t.code===Ce.EQUAL||t.code===Ce.MINUS||t.code===Ce.ZERO||t.code===Ce.NUM_ADD||t.code===Ce.NUM_SUBTRACT||t.code===Ce.NUM_ZERO)&&t.preventDefault()});M(this,"terminateActiveInteraction",()=>{if(this.maybeCleanupAfterMissingPointerUp(null),wc=!1,qs=!1,HU=!1,Up=null,ve.pointers.clear(),ve.lastCenter=null,ve.initialDistance=null,ve.initialScale=null,clearTimeout(dD),dD=0,A.resetTapTwice(),this.resetContextMenuTimer(),clearTimeout(JU),JU=0,KU=!1,this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.flowchart.clear(),wo.set(en,null),wo.set(mg,null),this.state.editingFrame){let t=this.scene.getNonDeletedElement(this.state.editingFrame);this.resetEditingFrame(t&&mA(t)?t:null)}queueMicrotask(()=>{(!this.isInteractionEnabled()||this.state.viewModeEnabled)&&this.textWysiwygSubmitHandler?.()}),this.setState({contextMenu:null,openMenu:null,openPopup:null,cursorButton:"up",bindMode:"orbit",activeEmbeddable:null,activeLockedId:null,selectedElementsAreBeingDragged:!1,selectionElement:null,resizingElement:null,isResizing:!1,isRotating:!1,isCropping:!1,croppingElementId:null,suggestedBinding:null,frameToHighlight:null,elementsToHighlight:null,snapLines:[],showHyperlinkPopup:!1}),this.deselectElements(),this.isInteractionEnabled()||(this.setState({originSnapOffset:null}),this.cursor.reset())});M(this,"handleInteractionStateChange",(t,o)=>{let i=this.isInteractionEnabled(t),a=i!==this.isInteractionEnabled(),r=t.viewModeEnabled!==this.props.viewModeEnabled,n=this.state.viewModeEnabled;this.isInteractionEnabled()?(r||a)&&(n=!!this.props.viewModeEnabled):n=!0,n!==this.state.viewModeEnabled&&this.setState({viewModeEnabled:n});let g=i&&!o.viewModeEnabled,s=this.isInteractionEnabled()&&!this.state.viewModeEnabled;(a&&!this.isInteractionEnabled()||g&&!s)&&this.terminateActiveInteraction(),a&&this.addEventListeners(),this.isLinksEnabled(t)!==this.isLinksEnabled()&&(this.isLinksEnabled()||(this.hitLinkElement=void 0,rx(),this.cursor.reset())),this.isEmbedsEnabled(t)!==this.isEmbedsEnabled()&&(this.isEmbedsEnabled()||this.setState({activeEmbeddable:null})),this.isToolSupported(o.activeTool.type,t)!==this.isToolSupported(this.state.activeTool.type)&&(this.isToolSupported(this.state.activeTool.type)||this.laserTrails.endPath(),this.cursor.reset()),!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)&&this.state.activeTool.type!=="selection"&&this.setState({activeTool:oo(this.state,{type:"selection"})}),(this.isBrowserZoomEnabled(t)!==this.isBrowserZoomEnabled()||this.isNavigationEnabled(t)!==this.isNavigationEnabled())&&(this.addEventListeners(),this.cursor.reset()),o.viewModeEnabled!==this.state.viewModeEnabled&&(this.isInteractionEnabled()&&this.addEventListeners(),this.state.viewModeEnabled||this.deselectElements(),this.cursor.reset())});M(this,"isSameForcedTool",(t,o)=>t?.type===o?.type&&(t?.type==="custom"?t.customType??null:null)===(o?.type==="custom"?o.customType??null:null));M(this,"handleForcedToolChange",(t,o)=>{let i=this.props.activeTool;if(!i)return;let a=!this.isSameForcedTool(t.activeTool,i);if(i.type==="image"){a&&console.warn('"image" tool cannot be forced via "props.activeTool"');return}this.isSameForcedTool(i,this.state.activeTool)||(a||o.activeTool!==this.state.activeTool||this.isToolSupported(i.type,t)!==this.isToolSupported(i.type,this.props))&&this.setActiveTool(i)});M(this,"resetHistory",()=>{this.history.clear()});M(this,"undo",()=>this.actionManager.executeAction(this.actionManager.actions.undo,"api"));M(this,"redo",()=>this.actionManager.executeAction(this.actionManager.actions.redo,"api"));M(this,"resetStore",()=>{this.store.clear()});M(this,"resetScene",Bo(t=>{this.scene.replaceAllElements([]),this.setState(o=>({...Ir(),isLoading:t?.resetLoadingState?!1:o.isLoading,theme:this.state.theme})),this.resetStore(),this.resetHistory()}));M(this,"initializeScene",async()=>{"launchQueue"in window&&"LaunchParams"in window&&window.launchQueue.setConsumer(async g=>{if(!g.files.length)return;let s=g.files[0],l=await s.getFile();this.loadFileToCanvas(new File([l],l.name||"",{type:l.type}),s)}),this.props.theme&&this.setState({theme:this.props.theme}),this.state.isLoading||this.setState({isLoading:!0});let t=null;try{typeof this.props.initialData=="function"?t=await this.props.initialData()||null:t=await this.props.initialData||null,t?.libraryItems&&this.library.updateLibrary({libraryItems:t.libraryItems,merge:!0}).catch(g=>{console.error(g)})}catch(g){console.error(g),t={appState:{errorMessage:g.message||"Encountered an error during importing or restoring scene data"}}}let o=hs(t?.elements,null,{repairBindings:!0,deleteInvisibleElements:!0}),i=_I(t?.appState,null),a=i.activeTool;i.preferredSelectionTool.initialized||(i.preferredSelectionTool={type:this.editorInterface.formFactor==="phone"?"lasso":"selection",initialized:!0}),i={...i,theme:this.props.theme||i.theme,openSidebar:i?.openSidebar||this.state.openSidebar,activeTool:a.type==="image"||a.type==="lasso"||a.type==="selection"?{...a,type:i.preferredSelectionTool.type}:i.activeTool,isLoading:!1,toast:this.state.toast};let r={...i,width:this.state.width,height:this.state.height,offsetTop:this.state.offsetTop,offsetLeft:this.state.offsetLeft},n=this.props.initialState?.viewport;if(n){let g=o.filter(I=>!I.isDeleted),s=QA(g),l=this.viewport.resolveInitialViewport(n,s,r);l&&(i={...i,...l})}else t?.scrollToContent&&(i={...i,...Bs(o,r)});this.resetStore(),this.resetHistory(),this.syncActionResult({elements:o,appState:i,files:t?.files,captureUpdate:tA.NEVER}),this.clearImageShapeCache(),this.fonts.loadSceneFonts().then(g=>{this.fonts.onLoaded(g)}),bl(window.location.href)&&this.viewport.setViewport({target:window.location.href,fit:"scale-down",animation:!1})});M(this,"getFormFactor",(t,o)=>this.props.UIOptions.getFormFactor?.(t,o)==="phone"&&!this.allowMobileMode?lm(t,o,this.allowMobileMode):this.props.UIOptions.getFormFactor?.(t,o)??lm(t,o,this.allowMobileMode));M(this,"refreshEditorInterface",()=>{let t=this.excalidrawContainerRef.current;if(!t)return;let{width:o,height:i}=t.getBoundingClientRect(),a=k3(),r=_F(typeof navigator<"u"?navigator.userAgent:""),n=this.props.UIOptions.dockedSidebarBreakpoint!=null?this.props.UIOptions.dockedSidebarBreakpoint:f3,g=wQ(this.editorInterface,{desktopUIMode:a??this.editorInterface.desktopUIMode,formFactor:this.getFormFactor(o,i),userAgent:r,canFitSidebar:o>n,isLandscape:o>i});this.editorInterface=g,this.reconcileStylesPanelMode(g)});M(this,"reconcileStylesPanelMode",t=>{let o=pI(t);if(o===this.stylesPanelMode)return;let i=this.stylesPanelMode;this.stylesPanelMode=o,this.viewport.invalidateUIOffset("stylesPanel"),(i!=="full"&&o==="full"||i!=="tray"&&o==="tray")&&this.setState(a=>({preferredSelectionTool:{type:"selection",initialized:!0}}))});M(this,"setDesktopUIMode",t=>{let o=t;this.editorInterface=wQ(this.editorInterface,{desktopUIMode:o}),this.reconcileStylesPanelMode(this.editorInterface),this.refreshEditorInterface(),this.triggerRender(!0)});M(this,"isTouchScreen",()=>this.editorInterface.isTouchScreen);M(this,"isTrayModeEnabled",()=>this.editorInterface.desktopUIMode==="tray");M(this,"onResize",Bo(()=>{this.scene.getElementsIncludingDeleted().forEach(t=>It.delete(t)),this.refreshEditorInterface(),this.updateDOMRect(),this.setState({})}));M(this,"onFullscreenChange",()=>{!document.fullscreenElement&&this.state.activeEmbeddable?.state==="active"&&this.setState({activeEmbeddable:null})});M(this,"renderInteractiveSceneCallback",({scrollBars:t})=>{document.querySelector(".excalidraw")&&(t&&(QD=t),this.scheduleImageRefresh())});M(this,"onScroll",Xg(()=>{let{offsetTop:t,offsetLeft:o}=this.getCanvasOffsets();this.setState(i=>i.offsetLeft===o&&i.offsetTop===t?null:{offsetTop:t,offsetLeft:o})},t3));M(this,"onCut",Bo(t=>{!this.isInteractionEnabled()||!this.excalidrawContainerRef.current?.contains(document.activeElement)||va(t.target)||(this.actionManager.executeAction(ex,"keyboard",t),t.preventDefault(),t.stopPropagation())}));M(this,"onCopy",Bo(t=>{!this.isInteractionEnabled()||!this.excalidrawContainerRef.current?.contains(document.activeElement)||va(t.target)||(this.actionManager.executeAction(pu,"keyboard",t),t.preventDefault(),t.stopPropagation())}));M(this,"onTouchStart",t=>{if(this.isInteractionEnabled()){if(dQ&&t.preventDefault(),!BD){BD=!0,t.touches.length===1&&(ED={x:t.touches[0].clientX,y:t.touches[0].clientY}),clearTimeout(dD),dD=window.setTimeout(A.resetTapTwice,HF);return}if(BD&&t.touches.length===1&&ED){let o=t.touches[0];ZA(k(o.clientX,o.clientY),k(ED.x,ED.y))<=TF&&(this.lassoTrail.endPath(),this.deselectElements(),this.handleCanvasDoubleClick({clientX:o.clientX,clientY:o.clientY,type:"touch",altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1})),BD=!1,clearTimeout(dD)}t.touches.length===2&&this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null})}});M(this,"onTouchEnd",t=>{this.isInteractionEnabled()&&(this.resetContextMenuTimer(),t.touches.length>0?this.setState({previousSelectedElementIds:{},selectedElementIds:At(this.state.previousSelectedElementIds,this.state)}):ve.pointers.clear())});M(this,"pasteFromClipboard",Bo(async t=>{if(!this.isInteractionEnabled())return;let o=!!KU,i=document.activeElement,a=this.excalidrawContainerRef.current?.contains(i);if(t&&!a)return;let r=document.elementFromPoint(this.viewport.lastPosition.x,this.viewport.lastPosition.y);if(t&&(!(r instanceof HTMLCanvasElement)||va(i)))return;let n=await Eu(t),g=n.getFiles(),s=await VS(n,o);if(this.props.onPaste)try{if(await this.props.onPaste(s,t,g)===!1)return}catch(l){console.error(l)}await this.insertClipboardContent(s,g,o),this.setActiveTool({type:this.state.preferredSelectionTool.type},{keepSelection:!0}),t?.preventDefault()}));M(this,"addElementsFromPasteOrLibrary",t=>{let o=hs(t.elements,null,{deleteInvisibleElements:!0}),[i,a,r,n]=$A(o),g=Fi(i,r)/2,s=Fi(a,n)/2,l=typeof t.position=="object"?t.position.clientX:t.position==="cursor"?this.viewport.lastPosition.x:this.state.width/2+this.state.offsetLeft,I=typeof t.position=="object"?t.position.clientY:t.position==="cursor"?this.viewport.lastPosition.y:this.state.height/2+this.state.offsetTop,{x:c,y:C}=He({clientX:l,clientY:I},this.state),B=c-g,d=C-s,[E,h]=lo(B,d,this.getEffectiveGridSize()),{duplicatedElements:p}=tC({type:"everything",elements:o.map(S=>YA(S,{x:S.x+E-i,y:S.y+h-a})),randomizeSeed:!t.retainSeed,preserveFrameChildrenOrder:t.preserveFrameChildrenOrder}),u=this.scene.getElementsIncludingDeleted(),m=[...u,...p];m=this.props.onDuplicate?.(m,u)||m,To(m,QA(p));let b=this.getTopLayerFrameAtSceneCoords({x:c,y:C});if(b){let S=m4(p,b);m=ld(m,S,b)}this.scene.replaceAllElements(m),p.forEach(S=>{if(cA(S)&&we(S)){let U=ot(S,this.scene.getElementsMapIncludingDeleted());Io(S,U,this.scene)}}),Vo.loadElementsFonts(p).then(S=>{this.fonts.onLoaded(S)}),t.files&&this.addMissingFiles(t.files);let D=WQ(p);this.store.scheduleCapture(),this.setState({...this.state,openSidebar:this.state.openSidebar&&this.editorInterface.canFitSidebar&&wo.get(hb)?this.state.openSidebar:null,...Wm(D,this.scene.getNonDeletedElements(),this.state)},()=>{t.files&&this.addNewImagesToImageCache()}),this.setActiveTool({type:this.state.preferredSelectionTool.type},{keepSelection:!0}),t.fit&&this.viewport.setViewport({target:p,fit:t.fit,animation:!1,offsets:{ui:!0}})});M(this,"setAppState",(t,o)=>{this.setState(t,o)});M(this,"removePointer",t=>{fB&&this.resetContextMenuTimer(),t.type==="pointercancel"&&this.bucketFill.cancel();let o=ve.pointers.size>=2;ve.pointers.delete(t.pointerId),o&&ve.pointers.size<2&&this.state.scrollConstraints&&this.viewport.releaseOverscroll()});M(this,"toggleLock",(t="ui")=>{this.props.activeTool||(this.state.activeTool.locked||ye("toolbar","toggleLock",`${t} (${this.editorInterface.formFactor==="phone"?"mobile":"desktop"})`),this.setState(o=>({activeTool:{...o.activeTool,...oo(this.state,o.activeTool.locked?{type:this.state.preferredSelectionTool.type}:o.activeTool),locked:!o.activeTool.locked}})))});M(this,"updateFrameRendering",t=>{this.setState(o=>{let i=typeof t=="function"?t(o.frameRendering):t;return{frameRendering:{enabled:i?.enabled??o.frameRendering.enabled,clip:i?.clip??o.frameRendering.clip,name:i?.name??o.frameRendering.name,outline:i?.outline??o.frameRendering.outline,markerName:i?.markerName??o.frameRendering.markerName,markerEnabled:i?.markerEnabled??o.frameRendering.markerEnabled}}})});M(this,"togglePenMode",t=>{this.setState(o=>({penMode:t??!o.penMode,penDetected:!0,currentItemStrokeVariability:o.penDetected?o.currentItemStrokeVariability:"variable"}))});M(this,"revealIfHidden",t=>{!t.length||b0(t,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap(),this.viewport.getOffsets())||this.viewport.setViewport({target:$A(t),fit:"scale-down",animation:{duration:300},offsets:{ui:!0}})});M(this,"emitUserFollowIntent",t=>{this.onUserFollowEmitter.trigger(t),this.props.onUserFollow?.(t)});M(this,"requestUnfollow",()=>{this.props.userToFollow&&this.emitUserFollowIntent({userToFollow:this.props.userToFollow,action:"UNFOLLOW"})});M(this,"setForceRenderAllEmbeddables",t=>{this.shouldRenderAllEmbeddables=t,t&&this.setState({})});M(this,"zoomToFit",(t=this.scene.getNonDeletedElements(),o,i=.03)=>{typeof o>"u"&&(o=Kk()),t||(t=this.scene.getNonDeletedElements()),t.length===0&&(o=1),this.setState(Z1(t,this.state,!1,this,o,i).appState)});M(this,"getColorAtScenePoint",({sceneX:t,sceneY:o})=>{if(!this.canvas)return console.error("Canvas not available"),null;let{x:i,y:a}=oi({sceneX:t,sceneY:o},this.state),r=this.canvas.getContext("2d");if(!r)return console.error("2D context not available"),null;let n=r.getImageData(i,a,1,1).data,[g,s,l,I]=n;return I===0?this.state.theme==="light"?"rgba(255,255,255,1)":"rgba(0,0,0,1)":`rgba(${g}, ${s}, ${l}, ${I/255})`});M(this,"startLineEditor",(t,o=null)=>{!t||!FA(t)||t.isDeleted||this.setState({selectedElementIds:{[t.id]:!0}},()=>{let i=new rA(t,this.scene.getNonDeletedElementsMap());this.setState({selectedLinearElement:{...i,isEditing:!0,selectedPointsIndices:o}})})});M(this,"refreshAllArrows",()=>{JeA(this.scene,this.store)});M(this,"updateContainerSize",Bo(t=>{t.forEach(o=>{let[i,a,r,n]=gl(o,o.width,o.height,!0),[g,s]=$(k(r,n),k((i+r)/2,(a+n)/2),o.angle),{nextWidth:l,nextHeight:I}=_v(o,o,"se",g,s);vI(l,I,o,o,this.scene.getElementsMapIncludingDeleted(),this.scene,"se",{shouldMaintainAspectRatio:!0,shouldResizeFromCenter:!1})})}));M(this,"setToast",t=>{this.setState({toast:t})});M(this,"restoreFileFromShare",async()=>{try{let t=await caches.open("web-share-target"),o=await t.match("shared-file");if(o){let i=await o.blob(),a=new File([i],i.name||"",{type:i.type});this.loadFileToCanvas(a,null),await t.delete("shared-file"),window.history.replaceState(null,om,window.location.pathname)}}catch(t){this.setState({errorMessage:t.message})}});M(this,"addFiles",Bo(t=>{let{addedFiles:o}=this.addMissingFiles(t,void 0,!0);this.clearImageShapeCache(o),this.scene.triggerUpdate(),this.addNewImagesToImageCache()}));M(this,"setMobileModeAllowed",t=>{this.allowMobileMode=t,this.refreshEditorInterface(),this.triggerRender(),this.setDesktopUIMode(this.editorInterface.desktopUIMode)});M(this,"debounceClearHighlightSearchResults",!1);M(this,"selectElements",(t,o=!1)=>{o&&(this.debounceClearHighlightSearchResults=!0,setTimeout(()=>{this.debounceClearHighlightSearchResults=!1},500)),this.updateScene({appState:{...this.state,editingGroupId:null,selectedElementIds:t.reduce((i,a)=>(i[a.id]=!0,i),{}),highlightSearchResult:o},captureUpdate:tA.NEVER,forceFlushSync:!0})});M(this,"bringToFront",t=>{this.selectElements(t),this.updateScene(lL.perform(this.scene.getNonDeletedElements(),this.state))});M(this,"bringForward",t=>{this.selectElements(t),this.updateScene(gL.perform(this.scene.getNonDeletedElements(),this.state,void 0,this))});M(this,"sendToBack",t=>{this.selectElements(t),this.updateScene(sL.perform(this.scene.getNonDeletedElements(),this.state))});M(this,"sendBackward",t=>{this.selectElements(t),this.updateScene(nL.perform(this.scene.getNonDeletedElements(),this.state,void 0,this))});M(this,"addMissingFiles",(t,o=!1,i=!1)=>{let a=o?{}:{...this.files},r={},n=Array.isArray(t)?t:Object.values(t);for(let g of n)if(!(!i&&a[g.id])&&(r[g.id]=g,a[g.id]=g,g.mimeType===LA.svg))try{let s=Nz(Tv(Yz(g.dataURL)),LA.svg);g.dataURL!==s&&(g.version=(g.version??1)+1,g.dataURL=s)}catch(s){console.error(s)}return this.files=a,{addedFiles:r}});M(this,"updateScene",Bo(t=>{let{elements:o,appState:i,collaborators:a,captureUpdate:r}=t;if(r){let n=o||void 0,g=i?rC({...this.store.snapshot.appState,...i}):void 0;this.store.scheduleMicroAction({action:r,elements:n,appState:g})}t.forceFlushSync===!0?(0,$a.flushSync)(()=>{i&&this.setState(i)}):i&&this.setState(i),o&&this.scene.replaceAllElements(o),a&&(this.laserTrails.updateCollabTrails(a),this.setState({collaborators:a}))}));M(this,"applyDeltas",(t,o)=>{let i=nC.squash(...t),a={...this.state},r=new Map(this.scene.getElementsMapIncludingDeleted());return nC.applyTo(i,r,a,o)});M(this,"mutateElement",(t,o,i=!0)=>this.scene.mutateElement(t,o,{informMutation:i,isDragging:!1}));M(this,"triggerRender",t=>{t===!0?this.scene.triggerUpdate():this.setState({})});M(this,"toggleSidebar",({name:t,tab:o,force:i})=>{let a;i===void 0?a=this.state.openSidebar?.name===t&&this.state.openSidebar?.tab===o?null:t:a=i?t:null;let r=a?{name:a}:null;return r&&o&&(r.tab=o),this.setState({openSidebar:r}),!!a});M(this,"updateCurrentCursorPosition",Bo(t=>{this.viewport.lastPosition.x=t.clientX,this.viewport.lastPosition.y=t.clientY}));M(this,"onKeyDown",Bo(t=>{if(!this.isInteractionEnabled()&&!(wC()&&t.key.toLowerCase()==="m"))return;if(this.state.activeTool.type==="selection"&&this.state.resizingElement&&(t.shiftKey||t.altKey)){t.stopPropagation();return}if("Proxy"in window&&(!t.shiftKey&&/^[A-Z]$/.test(t.key)||t.shiftKey&&/^[a-z]$/.test(t.key))&&(t=new Proxy(t,{get(n,g){let s=n[g];return typeof s=="function"?s.bind(n):g==="key"?t.shiftKey?n.key.toUpperCase():n.key.toLowerCase():s}})),!cm(t.target)){if((t.key===z.ESCAPE||t.key===z.ENTER)&&this.state.croppingElementId){this.finishImageCropping();return}let n=WA(this.scene.getNonDeletedElementsMap(),this.state);if(n.length===1&&xe(n[0])&&t.key===z.ENTER){this.startImageCropping(n[0]);return}if(t.key===z.ESCAPE)this.updateEditorAtom(mg,null);else if(t.key===z.TAB&&(document.activeElement===this.excalidrawContainerRef?.current||document.activeElement?.classList.contains(wt.CONVERT_ELEMENT_TYPE_POPUP))){t.preventDefault();let g=bu(n);wo.get(mg)?.type==="panel"&&QY(this,{conversionType:g,direction:t.shiftKey?"left":"right"})&&this.store.scheduleCapture(),g&&this.updateEditorAtom(mg,{type:"panel"})}if(this.flowchart.handleKeyEvent(t))return}if(t[z.CTRL_OR_CMD]&&t.key===z.P&&!t.shiftKey&&!t.altKey){this.setToast({message:L("commandPalette.shortcutHint",{shortcut:Vt("commandPalette")})}),t.preventDefault();return}if(t[z.CTRL_OR_CMD]&&t.key.toLowerCase()===z.V&&(KU=t.shiftKey,clearTimeout(JU),JU=window.setTimeout(()=>{KU=!1},100)),t[z.CTRL_OR_CMD]&&va(t.target)&&(t.code===Ce.MINUS||t.code===Ce.EQUAL)){t.preventDefault();return}if(va(t.target)&&t.key!==z.ESCAPE||Mc(t.key)&&cm(t.target))return;if(wC()&&t.key.toLowerCase()==="m"&&!this.state.editingTextElement&&!cm(t.target)&&this.excalidrawContainerRef?.current?.contains(document.activeElement)){this.handleCanvasContextMenu({button:xr.MAIN,clientX:this.viewport.lastPosition.x,clientY:this.viewport.lastPosition.y,nativeEvent:new MouseEvent("contextmenu"),preventDefault:()=>t.preventDefault()},!0);return}if(t.key===z.QUESTION_MARK){this.setState({openDialog:{name:"help"}});return}else if(t.key.toLowerCase()===z.E&&t.shiftKey&&t[z.CTRL_OR_CMD]){t.preventDefault(),this.setState({openDialog:{name:"imageExport"}});return}if(this.maybeHandlePageScrollKeyDown(t)){t.preventDefault();return}if(this.state.openDialog?.name==="elementLinkSelector")return;if(t.key===z.ALT)if(this.state.activeTool.type==="bucketfill"){this.bucketFill.openTemporaryEyeDropper(),t.preventDefault();return}else ii("COMPLEX_BINDINGS")?this.handleSkipBindMode():sw({app:this,event:t});if(this.actionManager.handleKeyDown(t))return;let o=this.props.viewModeEnabled===!0;if(!o&&this.state.viewModeEnabled&&t.key===z.ESCAPE){this.setActiveTool({type:"selection"});return}if(!o&&!t.ctrlKey&&!t.altKey&&!t.metaKey&&!this.state.newElement&&!this.state.selectionElement&&!this.state.selectedElementsAreBeingDragged){let n=tgA(t.key,this,t.shiftKey);if(this.state.viewModeEnabled&&!AR(n,["laser","hand"]))return;if(n){if(this.state.activeTool.type!==n&&ye("toolbar",n,`keyboard (${this.editorInterface.formFactor==="phone"?"mobile":"desktop"})`),n==="arrow"&&this.state.activeTool.type==="arrow"){let g=this.state.currentItemArrowType===to.sharp?to.round:this.state.currentItemArrowType===to.round?to.elbow:to.sharp;this.setState({currentItemArrowType:g}),this.cursorHints.onArrowTypeCycled(g)}else(n==="arrow"||n==="line")&&this.cursorHints.onToolShortcut(n,/^\d$/.test(t.key)?"digit":"letter");n==="bucketfill"&&this.state.activeTool.type==="bucketfill"?this.bucketFill.cycleBackgroundColor():n==="lasso"&&this.state.activeTool.type==="laser"?this.setActiveTool({type:this.state.preferredSelectionTool.type}):this.setActiveTool({type:n},{toggle:!0}),t.stopPropagation();return}else if(t.key===z.Q){this.toggleLock("keyboard"),t.stopPropagation();return}}if(this.state.viewModeEnabled){t.key!==z.K&&this.setActiveTool({type:"selection"});return}if(t[z.CTRL_OR_CMD]&&!t.repeat&&(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),(0,$a.flushSync)(()=>{this.setState({isBindingEnabled:this.state.bindingPreference!=="enabled"})}),this.arrowText.refresh(),sw({app:this,event:t})),Mc(t.key)){let n=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0}),g=new Set;n.filter(c=>st(c)).filter(c=>{let C=c.startBinding&&!n.some(d=>d.id===c.startBinding?.elementId),B=c.endBinding&&!n.some(d=>d.id===c.endBinding?.elementId);return C||B}).forEach(c=>g.add(c.id)),n=n.filter(c=>!g.has(c.id));let s=this.getEffectiveGridSize()&&(t.shiftKey?NF:this.getEffectiveGridSize())||(t.shiftKey?_8:NF),l=0,I=0;t.key===z.ARROW_LEFT?l=-s:t.key===z.ARROW_RIGHT?l=s:t.key===z.ARROW_UP?I=-s:t.key===z.ARROW_DOWN&&(I=s),n.forEach(c=>{this.scene.mutateElement(c,{x:c.x+l,y:c.y+I},{informMutation:!1,isDragging:!1}),Ft(c,this.scene,{simultaneouslyUpdated:n})}),this.scene.triggerUpdate(),t.preventDefault()}else if(t.key===z.ENTER){let n=this.scene.getSelectedElements(this.state);if(n.length===1){let g=n[0];if(t[z.CTRL_OR_CMD]||ke(g))FA(g)&&(!this.state.selectedLinearElement?.isEditing||this.state.selectedLinearElement.elementId!==g.id)&&(this.store.scheduleCapture(),kA(g)||this.actionManager.executeAction(Nu));else if(cA(g)||vR(g)){let s;cA(g)||(s=g);let l=jy(g,this.scene.getNonDeletedElementsMap()),I=l.x,c=l.y;this.startTextEditing({sceneX:I,sceneY:c,container:s}),t.preventDefault();return}else mA(g)?this.setState({editingFrame:g.id}):ni(g)&&this.setState({activeEmbeddable:{element:g,state:"active"}})}}if(t.key===z.SPACE&&ve.pointers.size===0&&(wc=!0,this.cursor.set(Xe.GRAB),t.preventDefault()),(t.key===z.G||t.key===z.S)&&!t.altKey&&!t[z.CTRL_OR_CMD]){let n=this.scene.getSelectedElements(this.state);if(this.state.activeTool.type==="selection"&&!n.length)return;t.key===z.G&&(ir(this.state.activeTool.type)||n.some(g=>ir(g.type)))&&(this.setState({openPopup:"elementBackground"}),t.stopPropagation()),t.key===z.S&&(this.setState({openPopup:"elementStroke"}),t.stopPropagation())}if(!t[z.CTRL_OR_CMD]&&t.shiftKey&&t.key.toLowerCase()===z.F){let n=this.scene.getSelectedElements(this.state);if(this.state.activeTool.type==="selection"&&!n.length)return;(this.state.activeTool.type==="text"||n.find(g=>cA(g)||vA(g,this.scene.getNonDeletedElementsMap())))&&(t.preventDefault(),this.setState({openPopup:"fontFamily"}))}t[z.CTRL_OR_CMD]&&(t.key===z.BACKSPACE||t.key===z.DELETE)&&this.updateEditorAtom(CE,"clearCanvas");let i=t.key.toLocaleLowerCase(),a=i===z.S&&t.shiftKey&&!t[z.CTRL_OR_CMD],r=t.key===z.I||i===z.G&&t.shiftKey;(a||r)&&this.openEyeDropper({type:a?"stroke":"background"})}));M(this,"onKeyUp",Bo(t=>{if(this.isInteractionEnabled()){if(t.key===z.SPACE&&(this.state.viewModeEnabled&&this.state.activeTool.type!=="laser"||this.state.openDialog?.name==="elementLinkSelector"?this.cursor.set(Xe.GRAB):Cm(this.state.activeTool.type)?this.cursor.reset():(this.cursor.applyForTool(),this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})),wc=!1),t.key===z.ALT&&(this.bucketFill.closeTemporaryEyeDropper(),sw({app:this,event:t})),(t.key===z.ALT&&this.state.bindMode==="skip"||!t[z.CTRL_OR_CMD]&&!wa(this.state))&&(this.setState({bindMode:"orbit"}),this.lastPointerMoveEvent&&ii("COMPLEX_BINDINGS"))){let o=He({clientX:this.lastPointerMoveEvent.clientX,clientY:this.lastPointerMoveEvent.clientY},this.state),i=si(k(o.x,o.y),this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap());if(this.state.selectedLinearElement){let a=rA.getElement(this.state.selectedLinearElement.elementId,this.scene.getNonDeletedElementsMap());st(a)&&this.handleDelayedBindModeChange(a,i)}}if(!t[z.CTRL_OR_CMD]){let o=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==o&&((0,$a.flushSync)(()=>{this.setState({isBindingEnabled:o})}),this.arrowText.refresh()),sw({app:this,event:t})}if(Mc(t.key)){Hm(this.scene.getSelectedElements(this.state).filter(bA),this.scene,this.state);let o=this.scene.getNonDeletedElementsMap();this.scene.getSelectedElements(this.state).filter(Ky).forEach(i=>{i.startBinding&&this.scene.mutateElement(i,{startBinding:{...i.startBinding,...ss(i,o.get(i.startBinding.elementId),"start",o)}}),i.endBinding&&this.scene.mutateElement(i,{endBinding:{...i.endBinding,...ss(i,o.get(i.endBinding.elementId),"end",o)}})}),this.setState({suggestedBinding:null})}this.flowchart.handleKeyEvent(t)}}));M(this,"setActiveTool",(t,o={})=>{let{keepSelection:i=!1}=o;if(!this.isToolSupported(t.type)){console.warn(this.isInteractionEnabled()?`"${t.type}" tool is disabled via "UIOptions.canvasActions.tools.${t.type}"`:`"${t.type}" tool cannot be activated while the editor is non-interactive (see "interaction.enabled.tools")`);return}if(this.props.activeTool&&!this.isSameForcedTool(this.props.activeTool,t)){console.warn(`"${t.type}" tool activation ignored \u2014 the active tool is controlled by the host via "props.activeTool"`);return}this.drawShape.hasPendingGesture()&&this.actionManager.executeAction(sa);let a=cu.includes(t.type),n=o.toggle===!0&&a&&this.state.activeTool.type===t.type?oo(this.state,{...this.state.activeTool.lastActiveTool||{type:this.state.preferredSelectionTool.type},lastActiveTool:null}):a&&this.state.activeTool.type!==t.type?oo(this.state,{...t,lastActiveTool:this.state.activeTool}):oo(this.state,t);n.type==="hand"?this.cursor.set(Xe.GRAB):wc||this.cursor.applyForTool(n),J3(document.activeElement)&&this.focusContainer(),fR(n.type)||this.setState({suggestedBinding:null}),n.type==="image"&&this.onImageToolbarButtonClick(),setTimeout(()=>{this.setState(g=>{let s={snapLines:g.snapLines.length?[]:g.snapLines,originSnapOffset:null,activeEmbeddable:null,selectedLinearElement:Cm(n.type)?g.selectedLinearElement:null,frameToHighlight:null,hoveredArrowTextAnchor:null};return n.type==="freedraw"&&this.store.scheduleCapture(),n.type==="lasso"?{...g,...s,activeTool:n,...i?{}:{selectedElementIds:At({},g),selectedGroupIds:At({},g),editingGroupId:null,multiElement:null}}:n.type!=="selection"?{...g,...s,activeTool:n,selectedElementIds:At(n.type==="mermaid"?this.state.selectedElementIds:{},g),selectedGroupIds:At({},g),editingGroupId:null,multiElement:null}:{...g,...s,activeTool:n}})})});M(this,"setOpenDialog",t=>{this.setState({openDialog:t})});M(this,"isTouchScreenMultiTouchGesture",()=>ve.pointers.size>=2);M(this,"getName",()=>this.state.name||this.props.name||`${L("labels.untitled")}-${VF()}`);M(this,"onGestureStart",Bo(t=>{if(QN(this.state)){ve.initialScale=null;return}this.isNavigationEnabled()&&(t.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null}),ve.initialScale=this.state.zoom.value)}));M(this,"onGestureChange",Bo(t=>{if(!ve.initialScale||!this.isNavigationEnabled()||(t.preventDefault(),this.isTouchScreenMultiTouchGesture()))return;let o=ve.initialScale;o&&this.viewport.translate(i=>({...lC({viewportX:this.viewport.lastPosition.x,viewportY:this.viewport.lastPosition.y,nextZoom:Zr(o*t.scale)},i)}),{zoomPreConstrained:!0,preserveScrollConstraintsSnapBack:!0})}));M(this,"onGestureEnd",Bo(t=>{this.isNavigationEnabled()&&(t.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({previousSelectedElementIds:{},selectedElementIds:At(this.state.previousSelectedElementIds,this.state)}),ve.initialScale=null)}));M(this,"isHittingTextAutoResizeHandle",(t,o)=>{let i=_m(t,this.state);return!!(i&&!i.isDeleted&&!i.autoResize&&GlA(o,i,this.state.zoom.value,this.editorInterface.formFactor))});M(this,"handleTextAutoResizeHandlePointerDown",(t,o)=>{let i=_m(t,this.state);return!i||!this.isHittingTextAutoResizeHandle(t,o)?!1:(this.actionManager.executeAction(NY,"ui",i),this.cursor.reset(),!0)});M(this,"startTextEditing",({sceneX:t,sceneY:o,insertAtParentCenter:i=!0,container:a,autoEdit:r=!0,initialCaretSceneCoords:n,arrowEndpoint:g})=>{let s=!1,l=g&&this.arrowText.getTextBinding(g,this.getCurrentItemStrokeWidth("text"));l&&(a=null,i=!1,t=l.anchor[0],o=l.anchor[1]);let I=i&&this.getTextWysiwygSnappedToCenterPosition(t,o,this.state,a);a&&I&&(vA(a,this.scene.getNonDeletedElementsMap())||(s=!0));let c=l?null:this.getSelectedTextElement(a)||this.getTextElementAtPosition(t,o),C=c?.fontFamily||this.state.currentItemFontFamily,B=c?.lineHeight||Ko(C),d=vS(this.state.currentItemFontSize,this.state.zoom.value);if(!c&&s&&a&&!bA(a)){let b=zc(se({fontSize:d,fontFamily:C}),B),D=zy(d,B),S=Math.max(a.height,D),U=Math.max(a.width,b);this.scene.mutateElement(a,{height:S,width:U}),t=a.x+U/2,o=a.y+S/2,I&&(I=this.getTextWysiwygSnappedToCenterPosition(t,o,this.state,a))}let E=this.getTextCreationGridPoint(t,o),h=l?{x:t,y:o}:I?{x:I.elementCenterX,y:I.elementCenterY}:c?{x:t,y:o}:{x:E?.x??t,y:E===null?o-kn(d,B)/2:E.y},p=this.getTopLayerFrameAtSceneCoords({x:h.x,y:h.y}),u=p&&(!s||!a||a.frameId===p.id)?p.id:null,m=c||Co({x:h.x,y:h.y,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("text"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,text:"",rawText:"",fontSize:d,fontFamily:C,textAlign:l?.textAlign??(I?"center":this.state.currentItemTextAlign),verticalAlign:l?.verticalAlign??(I?ft.MIDDLE:YB),containerId:s?a?.id:void 0,groupIds:a?.groupIds??[],lineHeight:B,angle:a?bA(a)?0:a.angle:0,frameId:u});if(!c&&s&&a&&this.scene.mutateElement(a,{boundElements:(a.boundElements||[]).concat({type:"text",id:m.id})}),this.setState({editingTextElement:m}),!c)if(a&&s){let w=this.scene.getElementIndex(a.id);this.scene.insertElementsAtIndex([m],w+1)}else this.insertNewElement(m);g&&l&&this.arrowText.bindText(g,m,l.fixedPoint),r||c||a?this.handleTextWysiwyg(m,{isExistingElement:!!c,initialCaretSceneCoords:c?n:null}):this.setState({newElement:m,multiElement:null})});M(this,"debounceDoubleClickTimestamp",0);M(this,"startImageCropping",t=>{this.store.scheduleCapture(),this.setState({croppingElementId:t.id})});M(this,"finishImageCropping",()=>{this.state.croppingElementId&&(this.store.scheduleCapture(),this.setState({croppingElementId:null}))});M(this,"shouldHandleBrowserCanvasDoubleClick",t=>{if(t==="touch"||this.lastCompletedCanvasClicks.length===0)return!0;if(this.lastCompletedCanvasClicks.length<2)return!1;let[o,i]=this.lastCompletedCanvasClicks;return ZA(k(o.x,o.y),k(i.x,i.y))<=TF});M(this,"handleCanvasDoubleClick",t=>{if(!this.isInteractionEnabled()||this.state.editingTextElement||!this.shouldHandleBrowserCanvasDoubleClick(t.type)||this.state.multiElement)return;if(this.state.penMode&&yeA()&&this.lastPointerDownEvent?.pointerType==="touch"&&this.state.activeTool.type!=="selection"){let n=Date.now();if(n-this.debounceDoubleClickTimestamp<200)return;this.debounceDoubleClickTimestamp=n,this.setActiveTool({type:"eraser"},{toggle:!0});return}if(this.state.activeTool.type!==this.state.preferredSelectionTool.type&&this.state.activeTool.type!=="autoshape")return;let o=this.scene.getSelectedElements(this.state),{x:i,y:a}=He(t,this.state);if(o.length===1&&FA(o[0])){let n=o[0];if((t[z.CTRL_OR_CMD]&&Ky(n)||ke(n))&&(!this.state.selectedLinearElement?.isEditing||this.state.selectedLinearElement.elementId!==n.id)){this.actionManager.executeAction(Nu);return}else if(this.state.selectedLinearElement&&kA(o[0])){let g=rA.getSegmentMidpointHitCoords(this.state.selectedLinearElement,{x:i,y:a},this.state,this.scene.getNonDeletedElementsMap()),s=g?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,g,this.scene.getNonDeletedElementsMap()):-1;if(s&&s>-1){this.store.scheduleCapture(),rA.deleteFixedSegment(o[0],this.scene,s);let l=rA.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:i,y:a},this.state,this.scene.getNonDeletedElementsMap()),I=l?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,l,this.scene.getNonDeletedElementsMap()):null;this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,segmentMidpoint:{index:I,value:g,added:!1}},segmentMidPointHoveredCoords:l}});return}}else if(this.state.selectedLinearElement?.isEditing&&this.state.selectedLinearElement.elementId===n.id&&ke(n))return}if(o.length===1&&xe(o[0])){this.startImageCropping(o[0]);return}if(this.cursor.reset(),$n(this.state).length>0){let n=this.getElementAtPosition(i,a),g=n&&tv(n,this.state.selectedGroupIds);if(g){this.store.scheduleCapture(),this.setState(s=>({...s,...So({editingGroupId:g,selectedElementIds:{[n.id]:!0}},this.scene.getNonDeletedElements(),s,this)}));return}}if(this.cursor.reset(),!this.state.viewModeEnabled){let n=this.getElementAtPosition(i,a);if(Oo(n)){this.setState({activeEmbeddable:{element:n,state:"active"}});return}if(!this.state.selectedLinearElement?.isEditing){let g=!t[z.CTRL_OR_CMD]&&this.getTextBindableContainerAtPosition(i,a);if(g&&(this.state.activeTool.type==="autoshape"||Zt(g)||!mt(g.backgroundColor)||Aa({point:k(i,a),element:g,elementsMap:this.scene.getNonDeletedElementsMap(),threshold:this.getElementHitThreshold(g)}))){let s=jy(g,this.scene.getNonDeletedElementsMap());i=s.x,a=s.y}if(HeA()){let s=null,l=this.scene.getSelectedElements(this.state);if(l.length===1?cA(l[0])?s=l[0]:g?s=vA(l[0],this.scene.getNonDeletedElementsMap()):s=this.getTextElementAtPosition(i,a):s=this.getTextElementAtPosition(i,a),!s)return}this.startTextEditing({sceneX:i,sceneY:a,insertAtParentCenter:!t.altKey,container:g||null})}}});M(this,"handleCanvasClick",t=>{if(this.isInteractionEnabled()){if(t.button!==xr.MAIN){this.lastCompletedCanvasClicks=[];return}this.lastCompletedCanvasClicks=[...this.lastCompletedCanvasClicks.slice(-1),{x:t.clientX,y:t.clientY}]}});M(this,"getElementLinkAtPosition",(t,o)=>{if(o&&o.locked)return;let i=this.scene.getNonDeletedElements(),a=-1;for(let r=i.length-1;r>=0;r--){let n=i[r];if(o&&n.id===o.id&&(a=r),(n.link||n.hasTextLink)&&r>=a&&fk(n,this.scene.getNonDeletedElementsMap(),this.state,k(t.x,t.y),this.editorInterface.formFactor==="phone"))return n}});M(this,"handleElementLinkClick",t=>{let o=ZA(k(this.lastPointerDownEvent.clientX,this.lastPointerDownEvent.clientY),k(this.lastPointerUpEvent.clientX,this.lastPointerUpEvent.clientY));if(!this.hitLinkElement||o>Al)return;let i=He(this.lastPointerDownEvent,this.state),a=this.scene.getNonDeletedElementsMap(),r=fk(this.hitLinkElement,a,this.state,k(i.x,i.y),this.editorInterface.formFactor==="phone"),n=He(this.lastPointerUpEvent,this.state),g=fk(this.hitLinkElement,a,this.state,k(n.x,n.y),this.editorInterface.formFactor==="phone");if(r&&g){rx();let s=this.hitLinkElement.link;if(s||this.hitLinkElement.hasTextLink){s=ai(s??"");let l;if(this.props.onLinkOpen&&(l=Iy("excalidraw-link",t.nativeEvent),this.props.onLinkOpen({...this.hitLinkElement,link:s},l)),!l?.defaultPrevented){let I=hy(s)?"_self":"_blank",c=window.open(void 0,I);c&&(c.opener=null,c.location=s)}}}});M(this,"applyElementLinkHoverAffordance",t=>this.hitLinkElement&&!this.state.selectedElementIds[this.hitLinkElement.id]?(this.cursor.set(Xe.POINTER),KgA(this.hitLinkElement,this.state,this.scene.getNonDeletedElementsMap()),this.props.onLinkHover&&this.props.onLinkHover(this.hitLinkElement,t),!0):(rx(),!1));M(this,"maybeHandleElementLinkClick",(t,o)=>{if(this.editorInterface.isTouchScreen){let i=this.getElementAtPosition(o.x,o.y,{includeLockedElements:!0});this.hitLinkElement=this.getElementLinkAtPosition(o,i)}return this.hitLinkElement&&this.lastPointerDownEvent&&!this.state.selectedElementIds[this.hitLinkElement.id]?(this.handleElementLinkClick(t),!0):!1});M(this,"handleInteractiveContentPointerMove",t=>{let o=He(t,this.state),i=this.getElementAtPosition(o.x,o.y,{includeLockedElements:!0});if(this.isEmbedsEnabled()){let a=i?.locked?null:i;if(this.handleIframeLikeElementHover({hitElement:a,scenePointer:o,moveEvent:t}))return}this.hitLinkElement=this.isLinksEnabled()?this.getElementLinkAtPosition(o,i):void 0,this.applyElementLinkHoverAffordance(t)||this.cursor.reset()});M(this,"handleInteractiveContentPointerUp",t=>{if(this.lastPointerUpEvent=t,this.isEmbedsEnabled()&&this.handleIframeLikeCenterClick())return;let o=He(t,this.state);this.isLinksEnabled()&&this.maybeHandleElementLinkClick(t,o)||this.state.activeEmbeddable?.state==="active"&&this.setState({activeEmbeddable:null})});M(this,"getTopLayerFrameAtSceneCoords",(t,o)=>{let i=this.scene.getNonDeletedElementsMap(),a=this.scene.getNonDeletedFramesLikes().filter(g=>!g.locked&&lv(t,g,i)&&g.frameRole!=="marker");if(!a.length)return null;let r=a.at(-1),n=this.getElementsAtPosition(t.x,t.y,{includeLockedElements:!0}).findLast(g=>!o?.excludeElementIds?.[g.id]);if(n){if(mA(n)&&!n.locked)return r;let g=this.scene.getElementIndex(n.id),s=this.scene.getElementIndex(r.id);if(g!==-1&&s!==-1&&g<=s)return r;let l=o?.currentFrameId?a.find(I=>I.id===o.currentFrameId)??null:null;return l||(n.frameId?a.find(I=>I.id===n.frameId)??null:null)}return r});M(this,"updateFrameToHighlight",t=>{this.state.frameToHighlight!==t&&this.setState({frameToHighlight:t})});M(this,"maybeUpdateFrameToHighlightOnPointerMove",(t,o)=>{this.state.newElement||this.state.multiElement||this.state.selectionElement||this.state.selectedElementsAreBeingDragged||this.updateFrameToHighlight(!o&&B5(this.state.activeTool.type)?this.getTopLayerFrameAtSceneCoords(t):null)});M(this,"insertNewElements",(t,o)=>{if(!t.length)return;let i=[];for(let a of t){let r=i[i.length-1];r?.[0].frameId===a.frameId?r.push(a):i.push([a])}for(let a of i){let r=a[0].frameId,n=r?Vm(this.scene.getElementsIncludingDeleted(),r):null;this.scene.insertElementsAtIndex(a,o??n)}});M(this,"insertNewElement",(t,o)=>{this.insertNewElements([t],o);let i=t.frameId?this.scene.getNonDeletedElement(t.frameId):null;this.updateFrameToHighlight(i&&mA(i)?i:null)});M(this,"handleCanvasPointerMove",t=>{if(!this.isInteractionEnabled()){this.isToolSupported(this.state.activeTool.type)&&this.savePointer(t.clientX,t.clientY,this.state.cursorButton),this.isNavigationEnabled()&&this.updateMultiTouchGesture(t),(this.isLinksEnabled()||this.isEmbedsEnabled())&&!qs&&this.handleInteractiveContentPointerMove(t);return}this.savePointer(t.clientX,t.clientY,this.state.cursorButton),this.lastPointerMoveEvent=t.nativeEvent;let o=He(t,this.state),{x:i,y:a}=o;if(this.lastPointerMoveCoords={x:i,y:a},this.updateMultiTouchGesture(t),wc||qs||HU||Uw(this.state))return;let n=OY(QD,t.clientX-this.state.offsetLeft,t.clientY-this.state.offsetTop).isOverEither,g=this.state.activeTool.type==="freedraw"&&t.pointerType==="pen";if(!this.state.newElement&&!this.state.selectionElement&&!this.state.selectedElementsAreBeingDragged&&!this.state.multiElement)if(n){let E=g&&this.interactiveCanvas&&LeA()?"none":Xe.AUTO;this.cursor.set(E)}else this.cursor.applyForTool();if(this.maybeUpdateFrameToHighlightOnPointerMove({x:i,y:a},n),!this.state.newElement&&LlA(this.state.activeTool.type)){let{originOffset:E,snapLines:h}=klA(this.scene.getNonDeletedElements(),this,{x:i,y:a},t,this.scene.getNonDeletedElementsMap());this.setState(p=>{let u=fQ(p.snapLines,h),m=p.originSnapOffset?fQ(p.originSnapOffset,E):E;return p.snapLines===u&&p.originSnapOffset===m?null:{snapLines:u,originSnapOffset:m}})}else!this.state.newElement&&!this.state.selectedElementsAreBeingDragged&&!this.state.selectionElement&&this.setState(E=>E.snapLines.length?{snapLines:[]}:null);if(this.state.selectedLinearElement?.isEditing&&!this.state.selectedLinearElement.isDragging){let E=this.state.newElement?null:rA.handlePointerMoveInEditMode(t,i,a,this);E&&E!==this.state.selectedLinearElement&&(0,$a.flushSync)(()=>{this.setState({selectedLinearElement:E})})}if(bR(this.state.activeTool.type)){let{newElement:E}=this.state;if(!E&&wa(this.state)){let h=k(i,a),p=this.scene.getNonDeletedElementsMap(),u=si(h,this.scene.getNonDeletedElements(),p,Mi(this.state.zoom));u?this.setState({suggestedBinding:{element:u,midPoint:Wc(h,u,p,this.state.zoom)}}):this.state.suggestedBinding&&this.setState({suggestedBinding:null})}}if(this.state.multiElement&&this.state.selectedLinearElement){let{multiElement:E,selectedLinearElement:h}=this.state,{x:p,y:u,points:m}=E,w=m[m.length-1],{lastCommittedPoint:b}=h;if(this.cursor.applyForTool(),w===b)ZA(k(i-p,a-u),w)>=sQ?(this.store.scheduleCapture(),(0,$a.flushSync)(()=>{UA(this.state.selectedLinearElement?.initialState,"initialState must be set"),this.setState({selectedLinearElement:{...this.state.selectedLinearElement,lastCommittedPoint:m[m.length-1],selectedPointsIndices:[E.points.length],initialState:{...this.state.selectedLinearElement.initialState,lastClickedPoint:E.points.length}}})}),this.scene.mutateElement(E,{points:[...m,k(i-p,a-u)]},{informMutation:!1,isDragging:!1})):this.cursor.set(Xe.POINTER);else if(m.length>2&&b&&ZA(k(i-p,a-u),b)<sQ){this.cursor.set(Xe.POINTER),this.scene.mutateElement(E,{points:m.slice(0,-1)},{informMutation:!1,isDragging:!1});let D=E.points.length-1;this.setState({selectedLinearElement:{...h,selectedPointsIndices:h.selectedPointsIndices?[...new Set(h.selectedPointsIndices.map(S=>Math.min(S,D)))]:h.selectedPointsIndices,lastCommittedPoint:E.points[D],initialState:{...h.initialState,lastClickedPoint:D}}})}else{Ci(m,this.state.zoom.value)&&this.cursor.set(Xe.POINTER);let D=this.scene.getNonDeletedElementsMap();if(Ky(E)){let U=si(k(i,a),this.scene.getNonDeletedElements(),D);ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(E,U)}UA(this.state.selectedLinearElement,"Expected selectedLinearElement to be set to operate on a linear element");let S=rA.handlePointerMove(t.nativeEvent,this,i,a,this.state.selectedLinearElement);S&&this.setState(S)}return}if(this.state.activeTool.type==="arrow"&&!this.state.newElement){let E=k(i,a),h=si(E,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),Mi(this.state.zoom)),p=this.scene.getNonDeletedElementsMap();h&&!gi(E,h,p)&&this.setState({suggestedBinding:{element:h,midPoint:Wc(E,h,p,this.state.zoom)}})}let s=!!t.buttons,l=this.state.activeTool.type==="laser";if(s||!l&&this.state.activeTool.type!=="selection"&&this.state.activeTool.type!=="lasso"&&this.state.activeTool.type!=="text"&&this.state.activeTool.type!=="eraser")return;let I=this.scene.getNonDeletedElements(),c=this.scene.getSelectedElements(this.state);if(this.isHittingTextAutoResizeHandle(c,o)){this.cursor.set(Xe.POINTER);return}if(c.length===1&&!n&&!this.state.selectedLinearElement?.isEditing){if(this.state.selectedLinearElement&&this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,i,a),(!this.state.selectedLinearElement||this.state.selectedLinearElement.hoverPointIndex===-1)&&this.state.openDialog?.name!=="elementLinkSelector"&&!(c.length===1&&kA(c[0]))&&!(FA(c[0])&&(this.editorInterface.userAgent.isMobileDevice||c[0].points.length===2))){let E=Xv(I,this.state,i,a,this.state.zoom,t.pointerType,this.scene.getNonDeletedElementsMap(),this.editorInterface);if(E&&E.transformHandleType){this.cursor.set(AM(E));return}}}else if(c.length>1&&!n&&this.state.openDialog?.name!=="elementLinkSelector"){let E=$v($A(c),i,a,this.state.zoom,t.pointerType,this.editorInterface);if(E){this.cursor.set(AM({transformHandleType:E}));return}}if(ig(this.state))return;let C=this.getElementAtPosition(i,a,{preferSelected:!0,includeLockedElements:!0}),B=null;C&&C.locked?B=null:B=C;let d=this.arrowText.updateHoveredAnchor(o);if(this.handleIframeLikeElementHover({hitElement:B,scenePointer:o,moveEvent:t})||(this.hitLinkElement=this.getElementLinkAtPosition(o,C)),!this.applyElementLinkHoverAffordance(t)){if(l)return;B&&(B.link||ni(B))&&this.state.selectedElementIds[B.id]&&!this.state.contextMenu&&!this.state.showHyperlinkPopup?this.setState({showHyperlinkPopup:"info"}):this.state.activeTool.type==="text"?this.cursor.set(d?Xe.POINTER:cA(B)?Xe.TEXT:Xe.CROSSHAIR):!t[z.CTRL_OR_CMD]&&this.isHittingCommonBoundingBoxOfSelectedElements(o,c)?this.cursor.set(Xe.MOVE):this.state.viewModeEnabled?this.cursor.set(Xe.GRAB):this.state.openDialog?.name==="elementLinkSelector"?this.cursor.set(Xe.AUTO):n?this.cursor.set(Xe.AUTO):!t[z.CTRL_OR_CMD]&&B?.id!==this.state.editingTextElement?.id?(B||this.isHittingCommonBoundingBoxOfSelectedElements(o,c))&&!B?.locked&&(!B||!kA(B)||!(B.startBinding||B.endBinding))&&(this.state.activeTool.type!=="lasso"||c.length>0)&&this.cursor.set(Xe.MOVE):this.cursor.set(Xe.AUTO),this.state.selectedLinearElement&&this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,i,a)}this.state.openDialog?.name==="elementLinkSelector"&&B?this.setState(E=>({hoveredElementIds:fQ(E.hoveredElementIds,So({editingGroupId:E.editingGroupId,selectedElementIds:{[B.id]:!0}},this.scene.getNonDeletedElements(),E,this).selectedElementIds)})):this.state.openDialog?.name==="elementLinkSelector"&&!B&&this.setState(E=>({hoveredElementIds:fQ(E.hoveredElementIds,{})}))});M(this,"handleEraser",(t,o)=>{let i=this.eraserTrail.addPointToPath(o.x,o.y,t.altKey);this.elementsPendingErasure=new Set(i),this.triggerRender()});M(this,"handleTouchMove",t=>{this.resetContextMenuTimer(),this.isInteractionEnabled()&&(hD=!0)});M(this,"handleCanvasPointerDown",t=>{if(wC()&&t.pointerType==="mouse"&&t.button===xr.SECONDARY&&!this.state.editingTextElement){let E=h=>{h.preventDefault()};window.addEventListener("contextmenu",E,{once:!0}),this.startRightClickPanning(t);return}if(!!t.target?.closest?.(".excalidraw__embeddable-container")||this.focusContainer(),!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)){(this.isLinksEnabled()||this.isEmbedsEnabled())&&(this.lastPointerDownEvent=t),this.isNavigationEnabled()&&(this.updateGestureOnPointerDown(t),qs||this.handleCanvasPanUsingWheelOrSpaceDrag(t));return}let i=this.scene.getSelectedElements(this.state);if(!t.ctrlKey){let E=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==E&&this.setState({isBindingEnabled:E})}let a=He(t,this.state),{x:r,y:n}=a;this.lastPointerMoveCoords={x:r,y:n};let g=t.target;if(g.setPointerCapture&&g.setPointerCapture(t.pointerId),this.maybeCleanupAfterMissingPointerUp(t.nativeEvent),this.state.activeTool.type!=="laser"&&this.requestUnfollow(),this.state.searchMatches&&(this.setState(E=>({searchMatches:E.searchMatches&&{focusedId:null,matches:E.searchMatches.matches.map(h=>({...h,focus:!1}))}})),this.updateEditorAtom(SH,null)),wo.get(mg)&&this.updateEditorAtom(mg,null),this.state.contextMenu&&this.setState({contextMenu:null}),this.state.snapLines&&this.setAppState({snapLines:[]}),this.state.openPopup&&this.setState({openPopup:null}),this.updateGestureOnPointerDown(t),t.pointerType==="touch"&&this.state.newElement&&this.state.newElement.type==="freedraw"){let E=this.state.newElement;this.updateScene({...E.points.length<10?{elements:this.scene.getElementsIncludingDeleted().filter(h=>h.id!==E.id)}:{},appState:{newElement:null,editingTextElement:null,suggestedBinding:null,selectedElementIds:At(Object.keys(this.state.selectedElementIds).filter(h=>h!==E.id).reduce((h,p)=>(h[p]=this.state.selectedElementIds[p],h),{}),this.state)},captureUpdate:this.state.openDialog?.name==="elementLinkSelector"?tA.EVENTUALLY:tA.NEVER});return}let s=document.getSelection();if(s?.anchorNode&&s.removeAllRanges(),this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(t),!this.state.penDetected&&t.pointerType==="pen"&&this.setState(E=>({penMode:!0,penDetected:!0,currentItemStrokeVariability:"variable"})),!this.editorInterface.isTouchScreen&&["pen","touch"].includes(t.pointerType)&&(this.editorInterface=wQ(this.editorInterface,{isTouchScreen:!0})),qs||(this.lastPointerDownEvent=t,this.setState({lastPointerDownWith:t.pointerType,cursorButton:"down"}),this.savePointer(t.clientX,t.clientY,"down"),this.handleCanvasPanUsingWheelOrSpaceDrag(t)))return;if(t.button===xr.ERASER&&this.isInteractionEnabled()&&!this.props.activeTool&&this.state.activeTool.type!==po.eraser){this.setState({activeTool:oo(this.state,{type:po.eraser,lastActiveTool:this.state.activeTool})},()=>{this.handleCanvasPointerDown(t);let E=()=>{h(),p?.(),ig(this.state)&&this.setState({activeTool:oo(this.state,{...this.state.activeTool.lastActiveTool||{type:po.selection},lastActiveTool:null})})},h=_e(window,"pointerup",E,{once:!0}),p;requestAnimationFrame(()=>{p=this.missingPointerEventCleanupEmitter.once(E)})});return}if(t.button!==xr.MAIN&&t.button!==xr.TOUCH&&t.button!==xr.ERASER||ve.pointers.size>1)return;let l=this.initialPointerDownState(t);if(this.setState({selectedElementsAreBeingDragged:!1}),this.handleTextAutoResizeHandlePointerDown(i,l.origin)||this.handleDraggingScrollBar(t,l)||(this.clearSelectionIfNotUsingSelection(),this.handleSelectionOnPointerDown(t,l))||!(!this.state.penMode||t.pointerType!=="touch"||this.state.activeTool.type==="selection"||this.state.activeTool.type==="lasso"||this.state.activeTool.type==="text"||this.state.activeTool.type==="image"))return;if(this.state.activeTool.type==="lasso"){let E=l.hit.element&&this.isASelectedElement(l.hit.element);(t.altKey&&t[z.CTRL_OR_CMD]&&!l.resize.handleType||!l.hit.hasHitCommonBoundingBoxOfSelectedElements&&!l.resize.handleType&&!E)&&(this.lassoTrail.hasCurrentTrail||this.lassoTrail.startPath(l.origin.x,l.origin.y,t.shiftKey),l.drag.blockDragging=this.editorInterface.formFactor==="desktop"),this.editorInterface.formFactor!=="desktop"&&l.hit.element&&!E&&(this.setState(u=>{let m={...u.selectedElementIds,[l.hit.element.id]:!0},w=[];Object.keys(u.selectedElementIds).forEach(D=>{let S=this.scene.getElement(D);S&&w.push(S)});let b=l.hit.element;if(mA(b))hi(w,b.id).forEach(D=>{delete m[D.id]});else if(b.frameId)m[b.frameId]&&delete m[b.id];else{let D=b.groupIds,S=new Set(D.flatMap(U=>be(this.scene.getNonDeletedElements(),U)).filter(U=>mA(U)).map(U=>U.id));S.size>0&&w.forEach(U=>{U.frameId&&S.has(U.frameId)&&(delete m[U.id],U.groupIds.flatMap(v=>be(this.scene.getNonDeletedElements(),v)).forEach(v=>{delete m[v.id]}))})}return{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),showHyperlinkPopup:b.link||ni(b)?"info":!1}}),l.hit.wasAddedToSelection=!0)}else this.state.activeTool.type==="text"?this.handleTextOnPointerDown(t,l):this.state.activeTool.type==="arrow"||this.state.activeTool.type==="line"?this.handleLinearElementOnPointerDown(t,this.state.activeTool.type,l):this.state.activeTool.type==="freedraw"?this.handleFreeDrawElementOnPointerDown(t,this.state.activeTool.type,l):this.state.activeTool.type==="custom"?this.cursor.applyForTool():this.state.activeTool.type===po.frame||this.state.activeTool.type===po.magicframe?this.createFrameElementOnPointerDown(l,this.state.activeTool.type):this.state.activeTool.type==="laser"?this.laserTrails.startPath(l.lastCoords.x,l.lastCoords.y):this.state.activeTool.type==="autoshape"?this.drawShape.handlePointerDown(l):this.state.activeTool.type===po.bucketfill?this.bucketFill.handlePointerDown(a):this.state.activeTool.type!=="eraser"&&this.state.activeTool.type!=="hand"&&this.state.activeTool.type!=="mermaid"&&this.state.activeTool.type!=="image"&&this.createGenericElementOnPointerDown(this.state.activeTool.type,l);this.props?.onPointerDown?.(this.state.activeTool,l),this.onPointerDownEmitter.trigger(this.state.activeTool,l,t),this.state.activeTool.type==="eraser"&&this.eraserTrail.startPath(l.lastCoords.x,l.lastCoords.y);let c=this.onPointerMoveFromPointerDownHandler(l),C=this.onPointerUpFromPointerDownHandler(l),B=this.onKeyDownFromPointerDownHandler(l),d=this.onKeyUpFromPointerDownHandler(l);this.missingPointerEventCleanupEmitter.once(E=>C(E||t.nativeEvent)),(!this.state.viewModeEnabled||this.isActiveToolPointerCapturing())&&(window.addEventListener("pointermove",c),window.addEventListener("pointerup",C),window.addEventListener("keydown",B),window.addEventListener("keyup",d),l.eventListeners.onMove=c,l.eventListeners.onUp=C,l.eventListeners.onKeyUp=d,l.eventListeners.onKeyDown=B)});M(this,"handleCanvasPointerUp",t=>{if(!this.isInteractionEnabled()){(this.isLinksEnabled()||this.isEmbedsEnabled())&&this.handleInteractiveContentPointerUp(t);return}if(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),this.removePointer(t),this.lastPointerUpIsDoubleClick=this.isDoubleClick(this.lastPointerUpEvent,t),this.lastPointerUpEvent=t,!t.ctrlKey){let r=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==r&&this.setState({isBindingEnabled:r})}let o=He({clientX:t.clientX,clientY:t.clientY},this.state),{x:i,y:a}=o;this.lastPointerMoveCoords={x:i,y:a},!this.handleIframeLikeCenterClick()&&!this.maybeHandleElementLinkClick(t,o)&&this.state.viewModeEnabled&&this.setState({activeEmbeddable:null,selectedElementIds:{}})});M(this,"maybeOpenContextMenuAfterPointerDownOnTouchDevices",t=>{KeA()||t.pointerType==="touch"&&(hD=!1,fB?hD=!0:fB=window.setTimeout(()=>{fB=0,!hD&&!this.state.isResizing&&this.handleCanvasContextMenu(t)},e3))});M(this,"resetContextMenuTimer",()=>{clearTimeout(fB),fB=0,hD=!1});M(this,"maybeCleanupAfterMissingPointerUp",t=>{Up?.(),this.missingPointerEventCleanupEmitter.trigger(t).clear()});M(this,"handleCanvasPanUsingWheelOrSpaceDrag",t=>{if(!(ve.pointers.size<=1&&((t.button===xr.WHEEL||t.button===xr.MAIN&&wc||Uw(this.state)||MeA(this.state,t))&&(this.isInteractionEnabled()||this.isNavigationEnabled())||this.state.viewModeEnabled&&!this.isActiveToolPointerCapturing())))return!1;qs=!0,this.focusContainer(),this.state.editingTextElement||t.preventDefault();let o=!1,i=typeof window===void 0?!1:/Linux/.test(window.navigator.platform);this.cursor.set(Xe.GRABBING);let{clientX:a,clientY:r}=t,n=Ib(s=>{let l=a-s.clientX,I=r-s.clientY;if(a=s.clientX,r=s.clientY,i&&!o&&(Math.abs(l)>1||Math.abs(I)>1)){o=!0;let c=B=>{document.body.removeEventListener("paste",c),B.stopPropagation()},C=()=>{setTimeout(()=>{document.body.removeEventListener("paste",c),window.removeEventListener("pointerup",C)},100)};document.body.addEventListener("paste",c),window.addEventListener("pointerup",C)}this.viewport.translate({scrollX:this.state.scrollX-l/this.state.zoom.value,scrollY:this.state.scrollY-I/this.state.zoom.value})}),g=Bo(Up=()=>{Up=null,qs=!1,wc||this.cursor.reset(),this.setState({cursorButton:"up"},this.viewport.releaseOverscroll),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",g),window.removeEventListener("blur",g),n.flush()});return window.addEventListener("blur",g),window.addEventListener("pointermove",n,{passive:!0}),window.addEventListener("pointerup",g),!0});M(this,"updateMultiTouchGesture",t=>{ve.pointers.has(t.pointerId)&&ve.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY});let o=ve.initialScale;if(ve.pointers.size===2&&ve.lastCenter&&o&&ve.initialDistance){let i=HY(ve.pointers),a=i.x-ve.lastCenter.x,r=i.y-ve.lastCenter.y;ve.lastCenter=i;let n=KY(Array.from(ve.pointers.values())),g=!this.state.allowPinchZoom&&this.state.activeTool.type==="freedraw"&&this.state.penMode?1:n/ve.initialDistance,s=g?Zr(o*g):this.state.zoom.value;this.setState(l=>{let I=lC({viewportX:i.x,viewportY:i.y,nextZoom:s},l),c=I.zoom.value;return this.viewport.translate({zoom:I.zoom,scrollX:I.scrollX+2*a/c,scrollY:I.scrollY+2*r/c,shouldCacheIgnoreZoom:!0},{zoomPreConstrained:!0}),null}),this.viewport.isLockedTransitionPending||this.resetShouldCacheIgnoreZoomDebounced()}else ve.lastCenter=ve.initialDistance=ve.initialScale=null});M(this,"clearSelectionIfNotUsingSelection",()=>{Cm(this.state.activeTool.type)||this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})});M(this,"handleSelectionOnPointerDown",(t,o)=>{if(Cm(this.state.activeTool.type)){let i=this.scene.getNonDeletedElements(),a=this.scene.getNonDeletedElementsMap(),r=this.scene.getSelectedElements(this.state);if(r.length===1&&!this.state.selectedLinearElement?.isEditing&&!kA(r[0])&&!(FA(r[0])&&(this.editorInterface.userAgent.isMobileDevice||r[0].points.length===2))&&!(this.state.selectedLinearElement&&this.state.selectedLinearElement.hoverPointIndex!==-1)){let n=Xv(i,this.state,o.origin.x,o.origin.y,this.state.zoom,t.pointerType,this.scene.getNonDeletedElementsMap(),this.editorInterface);n!=null&&(n.transformHandleType==="rotation"?(this.setState({resizingElement:n.element}),o.resize.handleType=n.transformHandleType):(this.state.croppingElementId||this.setState({resizingElement:n.element}),o.resize.handleType=n.transformHandleType))}else r.length>1&&(o.resize.handleType=$v($A(r),o.origin.x,o.origin.y,this.state.zoom,t.pointerType,this.editorInterface));if(o.resize.handleType)o.resize.isResizing=!0,o.resize.offset=ly(VZ(o.resize.handleType,r,a,o.origin.x,o.origin.y)),r.length===1&&FA(r[0])&&r[0].points.length===2&&(o.resize.arrowDirection=XZ(o.resize.handleType,r[0]));else{if(this.state.selectedLinearElement){let C=this.state.selectedLinearElement,B=rA.handlePointerDown(t,this,this.store,o.origin,C,this.scene);if(B.hitElement&&(o.hit.element=B.hitElement),B.linearElementEditor&&this.setState({selectedLinearElement:B.linearElementEditor}),B.didAddPoint)return!0;let d=this.scene.getNonDeletedElementsMap(),E=rA.getElement(C.elementId,d);if(E&&st(E)){let{hitFocusPoint:h,pointerOffset:p,arrowOtherEndpointInitialBinding:u}=WZ(E,o,d,this.state);if(h)return this.setState({selectedLinearElement:{...C,hoveredFocusPointBinding:h,draggedFocusPointBinding:h,pointerOffset:p,initialState:{...C.initialState,arrowOtherEndpointInitialBinding:u}}}),!1}}let n=this.getElementsAtPosition(o.origin.x,o.origin.y,{includeLockedElements:!0}),g=n.filter(C=>!C.locked),s=this.getElementAtPosition(o.origin.x,o.origin.y,{allHitElements:n});(!s||s.id!==this.state.activeLockedId)&&this.setState({activeLockedId:null});let l=g.some(C=>this.state.selectedElementIds[C.id]);if(!l&&g.length>0?o.hit.element=g[g.length-1]:s&&s.locked&&!l?o.hit.element=null:o.hit.element=o.hit.element??this.getElementAtPosition(o.origin.x,o.origin.y),this.hitLinkElement=this.getElementLinkAtPosition(o.origin,s),this.hitLinkElement)return!0;if(this.state.croppingElementId&&o.hit.element?.id!==this.state.croppingElementId&&this.finishImageCropping(),o.hit.element&&this.getElementLinkAtPosition({x:o.origin.x,y:o.origin.y},o.hit.element))return!1;o.hit.allHitElements=g;let I=o.hit.element,c=o.hit.allHitElements.some(C=>this.isASelectedElement(C));if((I===null||!c)&&!t.shiftKey&&!o.hit.hasHitCommonBoundingBoxOfSelectedElements&&(!this.state.selectedLinearElement?.isEditing||I&&I?.id!==this.state.selectedLinearElement?.elementId)&&this.clearSelection(I),this.state.selectedLinearElement?.isEditing)this.setState(C=>({selectedLinearElement:C.selectedLinearElement?{...C.selectedLinearElement,isEditing:!!I&&I.id===this.state.selectedLinearElement?.elementId}:null,selectedElementIds:C.selectedLinearElement?At({[C.selectedLinearElement.elementId]:!0},this.state):At({},C)}));else if(I!=null){if(t[z.CTRL_OR_CMD])return t.altKey?(this.state.openDialog?.name==="elementLinkSelector"&&this.setOpenDialog(null),this.lassoTrail.startPath(o.origin.x,o.origin.y,t.shiftKey),this.setActiveTool({type:"lasso",fromSelection:!0}),!1):(this.state.selectedElementIds[I.id]||(o.hit.wasAddedToSelection=!0),this.setState(C=>({...a4(C,I),previousSelectedElementIds:this.state.selectedElementIds})),!1);this.state.selectedElementIds[I.id]||(this.state.editingGroupId&&!ad(I,this.state.editingGroupId)&&this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),!c&&!o.hit.hasHitCommonBoundingBoxOfSelectedElements&&(this.setState(C=>{let B={...C.selectedElementIds,[I.id]:!0},d=[];if(Object.keys(C.selectedElementIds).forEach(E=>{let h=this.scene.getElement(E);h&&d.push(h)}),mA(I))hi(d,I.id).forEach(E=>{delete B[E.id]});else if(I.frameId)B[I.frameId]&&delete B[I.id];else{let E=I.groupIds,h=new Set(E.flatMap(p=>be(this.scene.getNonDeletedElements(),p)).filter(p=>mA(p)).map(p=>p.id));h.size>0&&d.forEach(p=>{p.frameId&&h.has(p.frameId)&&(delete B[p.id],p.groupIds.flatMap(u=>be(this.scene.getNonDeletedElements(),u)).forEach(u=>{delete B[u.id]}))})}return C.openDialog?.name==="elementLinkSelector"&&(I.groupIds.some(E=>C.selectedGroupIds[E])||(B={[I.id]:!0})),{...So({editingGroupId:C.editingGroupId,selectedElementIds:B},this.scene.getNonDeletedElements(),C,this),showHyperlinkPopup:I.link||ni(I)?"info":!1}}),o.hit.wasAddedToSelection=!0))}this.setState({previousSelectedElementIds:this.state.selectedElementIds})}}return!1});M(this,"handleTextOnPointerDown",(t,o)=>{if(this.state.editingTextElement)return;let i=o.origin.x,a=o.origin.y;this.setState({hoveredArrowTextAnchor:null});let r=this.arrowText.getBindableEndpointAtPosition(i,a);if(r)this.startTextEditing({sceneX:i,sceneY:a,autoEdit:!1,arrowEndpoint:r});else{let n=this.getElementAtPosition(i,a,{includeBoundTextElement:!0}),g=this.getTextBindableContainerAtPosition(i,a);Zt(n)&&(g=n,i=n.x+n.width/2,a=n.y+n.height/2),this.startTextEditing({sceneX:i,sceneY:a,insertAtParentCenter:!t.altKey,container:g,autoEdit:!1,initialCaretSceneCoords:{x:i,y:a}})}this.isToolLocked()?this.cursor.reset():this.setState({activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>this.cursor.reset())});M(this,"handleFreeDrawElementOnPointerDown",(t,o,i)=>{let[a,r]=lo(i.origin.x,i.origin.y,null),n=this.getTopLayerFrameAtSceneCoords({x:a,y:r}),g=this.state.currentStrokeOptions,s=g?.constantPressure?!1:t.pressure===.5,l=this.state.currentItemStrokeVariability,I=q4({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("freedraw"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:null,simulatePressure:s,strokeOptions:{variability:l,streamline:t.pointerType!=="mouse"?d3:vc},locked:!1,...g?{customData:{strokeOptions:g}}:{},frameId:n?n.id:null,points:[k(0,0)],pressures:s?[]:[t.pressure]});g?.highlighter?this.insertNewElement(I,0):this.insertNewElement(I),this.setState(c=>{let C={...c.selectedElementIds};return delete C[I.id],{selectedElementIds:At(C,c)}}),this.setState({newElement:I,suggestedBinding:null})});M(this,"insertIframeElement",({sceneX:t,sceneY:o,width:i,height:a})=>{let[r,n]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=z4({type:"iframe",x:r,y:n,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("iframe"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("iframe"),opacity:this.state.currentItemOpacity,locked:!1,width:i,height:a});return this.insertNewElement(g),g});M(this,"insertEmbeddableElement",({sceneX:t,sceneY:o,link:i})=>{let[a,r]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=cs(i);if(!n)return;n.error instanceof URIError&&this.setToast({message:L("toast.unrecognizedLinkFormat"),closable:!0});let g=wv({type:"embeddable",x:a,y:r,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("embeddable"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("embeddable"),opacity:this.state.currentItemOpacity,locked:!1,width:n.intrinsicSize.w,height:n.intrinsicSize.h,link:i});return this.insertNewElement(g),g});M(this,"newImagePlaceholder",({sceneX:t,sceneY:o,addToFrameUnderCursor:i=!0})=>{let[a,r]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=i?this.getTopLayerFrameAtSceneCoords({x:a,y:r}):null,g=100/this.state.zoom.value;return y0({type:"image",strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("image"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:null,opacity:this.state.currentItemOpacity,locked:!1,frameId:n?n.id:null,x:a-g/2,y:r-g/2,width:g,height:g})});M(this,"handleLinearElementOnPointerDown",(t,o,i)=>{if(t.ctrlKey&&(0,$a.flushSync)(()=>{this.setState({isBindingEnabled:this.state.bindingPreference!=="enabled"})}),this.state.multiElement){let{multiElement:a,selectedLinearElement:r}=this.state;if(UA(r,"selectedLinearElement is expected to be set"),a.type==="line"&&Ci(a.points,this.state.zoom.value)){(0,$a.flushSync)(()=>{this.setState({selectedLinearElement:{...r,lastCommittedPoint:a.points[a.points.length-1],initialState:{...r.initialState,lastClickedPoint:-1}}})}),this.actionManager.executeAction(sa);return}if(kA(a)&&a.points.length>1){this.actionManager.executeAction(sa,"ui",{event:t.nativeEvent,sceneCoords:{x:i.origin.x,y:i.origin.y}});return}let{x:n,y:g}=a,{lastCommittedPoint:s}=r,l=He(t,this.state),{start:I,end:c}=st(a)&&wa(this.state)?Ym(a,new Map([[a.points.length-1,{point:a.points[a.points.length-1],isDragging:!1}]]),l.x,l.y,this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements(),this.state,{newArrow:!!this.state.newElement,zoom:this.state.zoom}):{end:{mode:void 0}},C=this.scene.getNonDeletedElementsMap(),B=I?.mode!=null&&c.mode!=null&&I.element.id===c.element.id&&!gi(c.focusPoint,c.element,C),d=c.mode==="orbit"&&a.startBinding?.elementId!==c.element?.id,E=s&&ZA(k(i.origin.x-n,i.origin.y-g),s)<sQ;if(d||B||a.points.length>1&&E){this.actionManager.executeAction(sa,"ui",{event:t.nativeEvent,sceneCoords:{x:i.origin.x,y:i.origin.y}});return}this.setState(h=>({selectedElementIds:At({...h.selectedElementIds,[a.id]:!0},h)})),this.cursor.set(Xe.POINTER)}else{let[a,r]=lo(i.origin.x,i.origin.y,t[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=this.getTopLayerFrameAtSceneCoords({x:a,y:r}),{currentItemStartArrowhead:g,currentItemEndArrowhead:s}=this.state,[l,I]=o==="arrow"?[g,s]:[null,null],c=o==="arrow"?lr({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(o),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.state.currentItemArrowType===to.round?{type:je.PROPORTIONAL_RADIUS}:null,startArrowhead:l,endArrowhead:I,locked:!1,frameId:n?n.id:null,elbowed:this.state.currentItemArrowType===to.elbow,fixedSegments:this.state.currentItemArrowType===to.elbow?[]:null}):xo({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(o),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.state.currentItemRoundness==="round"?{type:je.PROPORTIONAL_RADIUS}:null,locked:!1,frameId:n?n.id:null}),C=k(i.origin.x,i.origin.y),B=this.scene.getNonDeletedElementsMap(),d=wa(this.state)?si(C,this.scene.getNonDeletedElements(),B):null;this.scene.mutateElement(c,{points:[k(0,0),k(0,0)]}),this.insertNewElement(c),st(c)&&JQ(c,new Map([[0,{point:k(0,0),isDragging:!1}]]),C[0],C[1],this.scene,this.state,{newArrow:!0,altKey:t.altKey,initialBinding:!0,angleLocked:Ra(t.nativeEvent)}),(0,$a.flushSync)(()=>{this.setState(E=>{let h=null,p=E.selectedElementIds;if(FA(c)){h=new rA(c,this.scene.getNonDeletedElementsMap());let u=c.points.length-1;h={...h,selectedPointsIndices:[u],initialState:{...h.initialState,arrowStartIsInside:t.altKey,lastClickedPoint:u,origin:k(i.origin.x,i.origin.y)}}}return p=this.isToolLocked()?E.selectedElementIds:At({[c.id]:!0},E),{...E,bindMode:"orbit",newElement:c,suggestedBinding:d&&st(c)?{element:d,midPoint:Wc(C,d,B,this.state.zoom)}:null,selectedElementIds:p,selectedLinearElement:h}})}),st(c)&&ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(c,d)}});M(this,"createGenericElementOnPointerDown",(t,o)=>{let[i,a]=lo(o.origin.x,o.origin.y,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),r=this.getTopLayerFrameAtSceneCoords({x:i,y:a}),n={x:i,y:a,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(t),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.getCurrentItemRoundness(t),locked:!1,frameId:r?r.id:null},g;t==="embeddable"?g=wv({type:"embeddable",...n}):g=jo({type:t,...n}),g.type==="selection"?this.setState({selectionElement:g}):(this.insertNewElement(g),this.setState({multiElement:null,newElement:g}))});M(this,"createFrameElementOnPointerDown",(t,o)=>{let[i,a]=lo(t.origin.x,t.origin.y,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),r={x:i,y:a,opacity:this.state.currentItemOpacity,locked:!1,...o==="frame"&&this.state.currentItemFrameRole?{frameRole:this.state.currentItemFrameRole}:{},...fe,...this.state.frameColor?{customData:{frameColor:this.state.frameColor}}:{}},n=o===po.magicframe?aw(r):th(r,this.scene.getNonDeletedElements());this.insertNewElement(n),this.setState({multiElement:null,newElement:n})});M(this,"restoreReadyToEraseElements",()=>{this.elementsPendingErasure=new Set,this.triggerRender()});M(this,"eraseElements",()=>{let t=!1;this.elementsPendingErasure.forEach(i=>{let a=this.scene.getElement(i);if(st(a)){if(a.startBinding){let r=this.scene.getElement(a.startBinding.elementId);it(r,this.scene.getElementsMapIncludingDeleted(),{boundElements:r.boundElements.filter(n=>n.id!==a.id)})}if(a.endBinding){let r=this.scene.getElement(a.endBinding.elementId);it(r,this.scene.getElementsMapIncludingDeleted(),{boundElements:r.boundElements.filter(n=>n.id!==a.id)})}}else bt(a)&&a.boundElements?.forEach(r=>{if(r.type==="arrow"){let n=this.scene.getElement(r.id);n?.startBinding?.elementId===a.id&&it(n,this.scene.getElementsMapIncludingDeleted(),{startBinding:null}),n?.endBinding?.elementId===a.id&&it(n,this.scene.getElementsMapIncludingDeleted(),{endBinding:null})}})});let o=this.scene.getElementsIncludingDeleted().map(i=>this.elementsPendingErasure.has(i.id)||i.frameId&&this.elementsPendingErasure.has(i.frameId)||we(i)&&this.elementsPendingErasure.has(i.containerId)?(t=!0,YA(i,{isDeleted:!0})):i);this.elementsPendingErasure=new Set,t&&(this.store.scheduleCapture(),this.scene.replaceAllElements(o))});M(this,"initializeImage",async(t,o)=>{if(!xh(o))throw new Error(L("errors.unsupportedFileType"));let i=o.type;if(this.cursor.set("wait"),i===LA.svg)try{o=CN(Tv(await o.text()),o.name)}catch(g){throw console.warn(g),new Error(L("errors.svgImageInsertError"))}let a=await(this.props.generateIdForFile?.(o)||Mz(o));if(!a)throw console.warn("Couldn't generate file id or the supplied `generateIdForFile` didn't resolve to one."),new Error(L("errors.imageInsertError"));if(!this.files[a]?.dataURL){let{maxWidthOrHeight:g,maxFileSizeBytes:s}=this.props.imageOptions;try{o=await Nk(o,{maxWidthOrHeight:g})}catch(l){console.error("Error trying to resizing image file on insertion",l)}if(o.size>s)throw new Error(L("errors.fileTooBig",{maxSize:`${Math.trunc(s/1024/1024)}MB`}))}let n=this.files[a]?.dataURL||await Sh(o);return new Promise(async(g,s)=>{try{let l=this.getLatestInitializedImageElement(t,a);if(this.addMissingFiles([{mimeType:i,id:a,dataURL:n,created:Date.now(),lastRetrieved:Date.now(),name:o?.name&&o.name!=="image.png"?o.name:void 0}]),!this.imageCache.get(a)){this.addNewImagesToImageCache();let{erroredFiles:c}=await this.updateImageCache([l]);if(c.size)throw new Error("Image cache update resulted with an error.")}let I=await this.imageCache.get(a)?.image;if(I&&this.state.newElement?.id!==l.id){l=this.getLatestInitializedImageElement(t,a);let c=this.getImageNaturalDimensions(l,I);Object.assign(l,c)}g(l)}catch(l){console.error(l),s(new Error(L("errors.imageInsertError")))}})});M(this,"getLatestInitializedImageElement",(t,o)=>{let i=this.scene.getElement(t.id)??t;return YA(i,{fileId:o})});M(this,"onImageToolbarButtonClick",async()=>{try{let t=this.state.width/2+this.state.offsetLeft,o=this.state.height/2+this.state.offsetTop,{x:i,y:a}=He({clientX:t,clientY:o},this.state),r=await wh({description:"Image",extensions:Object.keys(CI),multiple:!0});this.insertImages(r,i,a)}catch(t){t.name!=="AbortError"?console.error(t):console.warn(t),this.setState({newElement:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>{this.actionManager.executeAction(sa)})}});M(this,"getImageNaturalDimensions",(t,o)=>{let i=Math.max(this.state.height-120,160),a=Math.min(i,Math.floor(this.state.height*.5)/this.state.zoom.value),r=Math.min(o.naturalHeight,a),n=r*(o.naturalWidth/o.naturalHeight),g=t.x+t.width/2-n/2,s=t.y+t.height/2-r/2;return{x:g,y:s,width:n,height:r,crop:null}});M(this,"updateImageCache",async(t,o=this.files)=>{let{updatedFiles:i,erroredFiles:a}=await H0({imageCache:this.imageCache,fileIds:t.map(r=>r.fileId),files:o});return a.size&&(this.store.scheduleAction(tA.NEVER),this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map(r=>ua(r)&&a.has(r.fileId)?YA(r,{status:"error"}):r))),{updatedFiles:i,erroredFiles:a}});M(this,"addNewImagesToImageCache",async(t=K0(this.scene.getNonDeletedElements()),o=this.files)=>{let i=t.filter(a=>!a.isDeleted&&!this.imageCache.has(a.fileId));if(i.length){let{updatedFiles:a}=await this.updateImageCache(i,o);if(a.size)for(let r of i)a.has(r.fileId)&&It.delete(r);a.size&&this.scene.triggerUpdate()}});M(this,"scheduleImageRefresh",(0,ihA.default)(()=>{this.addNewImagesToImageCache()},A3));M(this,"handleInteractiveCanvasRef",t=>{t!==null?(this.interactiveCanvas=t,this.cursor.reset(),this.interactiveCanvas.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.interactiveCanvas.addEventListener("touchend",this.onTouchEnd)):(this.interactiveCanvas?.removeEventListener("touchstart",this.onTouchStart),this.interactiveCanvas?.removeEventListener("touchend",this.onTouchEnd))});M(this,"insertImages",async(t,o,i)=>{let a=50/this.state.zoom.value,r=Pv(t.map(()=>this.newImagePlaceholder({sceneX:o,sceneY:i})),o,i,a);this.insertNewElements(r);let n=await Promise.all(r.map(async(c,C)=>{try{return await this.initializeImage(c,await uC(t[C]))}catch(B){return this.setState({errorMessage:B.message||L("errors.imageInsertError")}),YA(c,{isDeleted:!0})}})),g=QA(n),s=Pv(n.filter(c=>!c.isDeleted),o,i,a),l=QA(s),I=this.scene.getElementsIncludingDeleted().map(c=>l.get(c.id)??g.get(c.id)??c);this.updateScene({appState:{selectedElementIds:At(Object.fromEntries(s.map(c=>[c.id,!0])),this.state)},elements:I,captureUpdate:tA.IMMEDIATELY}),this.setState({},()=>{this.actionManager.executeAction(sa)})});M(this,"handleAppOnDrop",async t=>{if(this.props.onDrop)try{if(await this.props.onDrop(t)===!1)return}catch(I){console.error(I)}if(!this.isInteractionEnabled())return;let{x:o,y:i}=He(t,this.state),a=await Eu(t),r=a.getFiles();if(r.length===1){let{file:I,fileHandle:c}=r[0];if(I&&(I.type===LA.png||I.type===LA.svg))try{let C=await Dd(I,this.state,this.scene.getElementsIncludingDeleted(),c);this.syncActionResult({...C,appState:{...C.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:tA.IMMEDIATELY});return}catch(C){if(C.name!=="EncodingError")throw new Error(L("alerts.couldNotLoadInvalidFile"))}}let n=r.map(I=>I.file).filter(I=>xh(I));if(n.length>0&&this.isToolSupported("image"))return this.insertImages(n,o,i);let g=a.getData(LA.excalidrawlibIds),s=a.getData(LA.excalidrawlib);if(g||s){try{let I=null;if(g){let{itemIds:c}=JSON.parse(g);I=(await this.library.getLatestLibrary()).filter(B=>c.includes(B.id))}else s&&(I=cN(s));I?.length&&(I=I.map(c=>({...c,elements:tC({type:"everything",elements:c.elements,randomizeSeed:!0,preserveFrameChildrenOrder:!0}).duplicatedElements})),this.addElementsFromPasteOrLibrary({elements:Lu(I),position:t,files:null}))}catch(I){this.setState({errorMessage:I.message})}return}if(r.length>0){let{file:I,fileHandle:c}=r[0];I&&await this.loadFileToCanvas(I,c)}let l=a.findByType(LA.text);if(l){let I=l.value;if(I&&rh(I,this.props.validateEmbeddable)&&(/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(I)||cs(I)?.type==="video")){let c=this.insertEmbeddableElement({sceneX:o,sceneY:i,link:ai(I)});c&&(this.store.scheduleCapture(),this.setState({selectedElementIds:{[c.id]:!0}}))}}});M(this,"loadFileToCanvas",async(t,o)=>{t=await uC(t);try{let i=this.scene.getElementsIncludingDeleted(),a;try{a=await _w(t,this.state,i,o)}catch(r){let n=r instanceof ds;if(n&&r.code==="IMAGE_NOT_CONTAINS_SCENE_DATA"&&!this.isToolSupported("image")){this.setState({isLoading:!1,errorMessage:L("errors.imageToolNotSupported")});return}let g=n?L("alerts.cannotRestoreFromImage"):L("alerts.couldNotLoadInvalidFile");this.setState({isLoading:!1,errorMessage:g})}if(!a)return;a.type===LA.excalidraw?(Ya(i.concat(a.data.elements)),this.store.scheduleMicroAction({action:tA.NEVER,elements:i,appState:void 0}),this.setState({isLoading:!0}),this.syncActionResult({...a.data,appState:{...a.data.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:tA.IMMEDIATELY})):a.type===LA.excalidrawlib&&await this.library.updateLibrary({libraryItems:t,merge:!0,openLibraryMenu:!0}).catch(r=>{console.error(r),this.setState({errorMessage:L("errors.importLibraryError")})})}catch(i){this.setState({isLoading:!1,errorMessage:i.message})}});M(this,"handleCanvasContextMenu",(t,o=!1)=>{if(!this.isInteractionEnabled()&&!o||(t.preventDefault(),this.state.disableContextMenu)||wC()&&!o||(t.preventDefault(),!this.isInteractionEnabled())||(this.bucketFill.cancel(),("pointerType"in t.nativeEvent&&t.nativeEvent.pointerType==="touch"||"pointerType"in t.nativeEvent&&t.nativeEvent.pointerType==="pen"&&t.button!==xr.SECONDARY)&&this.state.activeTool.type!==this.state.preferredSelectionTool.type))return;let{x:i,y:a}=He(t,this.state),r=this.getElementAtPosition(i,a,{preferSelected:!0,includeLockedElements:!0}),n=this.scene.getSelectedElements(this.state),g=this.isHittingCommonBoundingBoxOfSelectedElements({x:i,y:a},n),s=r||g?"element":"canvas",l=this.excalidrawContainerRef.current,{top:I,left:c}=l.getBoundingClientRect(),C=t.clientX-c,B=t.clientY-I;ye("contextMenu","openContextMenu",s),this.setState({...r&&!this.state.selectedElementIds[r.id]?{...this.state,...So({editingGroupId:this.state.editingGroupId,selectedElementIds:{[r.id]:!0}},this.scene.getNonDeletedElements(),this.state,this),selectedLinearElement:FA(r)?new rA(r,this.scene.getNonDeletedElementsMap()):null}:this.state,showHyperlinkPopup:!1},()=>{this.setState({contextMenu:{top:B,left:C,items:this.getContextMenuItems(s)}})})});M(this,"maybeDragNewGenericElement",(t,o,i=!0)=>{let a=this.state.selectionElement,r=t.lastCoords;if(a&&t.boxSelection.hasOccurred&&this.state.activeTool.type!=="eraser"){vv({newElement:a,elementType:this.state.activeTool.type,originX:t.origin.x,originY:t.origin.y,x:r.x,y:r.y,width:Fi(t.origin.x,r.x),height:Fi(t.origin.y,r.y),shouldMaintainAspectRatio:EQ(o),shouldResizeFromCenter:!1,scene:this.scene,zoom:this.state.zoom.value,informMutation:!1});return}let n=this.state.newElement;if(!n||this.arrowText.maybeDragNewText(n,r))return;let[g,s]=lo(r.x,r.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),l=ua(n)&&this.imageCache.get(n.fileId)?.image,I=l&&!(l instanceof Promise)?l.width/l.height:null;this.maybeCacheReferenceSnapPoints(o,[n]);let{snapOffset:c,snapLines:C}=ylA(n,this,o,{x:t.originInGrid.x+(this.state.originSnapOffset?.x??0),y:t.originInGrid.y+(this.state.originSnapOffset?.y??0)},{x:g-t.originInGrid.x,y:s-t.originInGrid.y},this.scene.getNonDeletedElementsMap());g+=c.x,s+=c.y,this.setState({snapLines:C}),st(n)||vv({newElement:n,elementType:this.state.activeTool.type,originX:t.originInGrid.x,originY:t.originInGrid.y,x:g,y:s,width:Fi(t.originInGrid.x,g),height:Fi(t.originInGrid.y,s),shouldMaintainAspectRatio:xe(n)?!EQ(o):EQ(o),shouldResizeFromCenter:OF(o),zoom:this.state.zoom.value,scene:this.scene,widthAspectRatio:I,originOffset:this.state.originSnapOffset,informMutation:i}),this.setState({newElement:n}),(this.state.activeTool.type===po.frame||this.state.activeTool.type===po.magicframe)&&this.setState({elementsToHighlight:Kr(this.scene.getNonDeletedElements(),n,this.state,this.scene.getNonDeletedElementsMap())})});M(this,"maybeHandleCrop",(t,o)=>{if(!this.state.croppingElementId)return!1;let i=t.resize.handleType,a=t.lastCoords,[r,n]=lo(a.x-t.resize.offset.x,a.y-t.resize.offset.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(i&&g&&xe(g)){let s=t.originalElements.get(g.id),l=ua(g)&&this.imageCache.get(g.fileId)?.image;if(s&&xe(s)&&l&&!(l instanceof Promise)){let[I,c]=lo(a.x,a.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),C={x:I-t.originInGrid.x,y:c-t.originInGrid.y};this.maybeCacheReferenceSnapPoints(o,[g]);let{snapOffset:B,snapLines:d}=TY([g],[s],this,o,C,i);this.scene.mutateElement(g,n5(g,this.scene.getNonDeletedElementsMap(),i,l.naturalWidth,l.naturalHeight,r+B.x,n+B.y,o.shiftKey?s.width/s.height:void 0)),Ft(g,this.scene),this.setState({isCropping:i&&i!=="rotation",snapLines:d})}return!0}return!1});M(this,"maybeHandleResize",(t,o)=>{let i=this.scene.getSelectedElements(this.state),a=i.filter(mA),r=t.resize.handleType;if(a.length>0&&r==="rotation"||i.length===1&&kA(i[0])||this.state.croppingElementId)return!1;this.setState({isResizing:r&&r!=="rotation",isRotating:r==="rotation",activeEmbeddable:null});let n=t.lastCoords,[g,s]=lo(n.x-t.resize.offset.x,n.y-t.resize.offset.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),l=new Map;if(a.forEach(I=>{hi(this.scene.getNonDeletedElements(),I.id).forEach(C=>{l.set(I.id+C.id,{x:C.x-I.x,y:C.y-I.y})})}),!this.state.selectedElementsAreBeingDragged){let[I,c]=lo(n.x,n.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),C={x:I-t.originInGrid.x,y:c-t.originInGrid.y},B=[...t.originalElements.values()];this.maybeCacheReferenceSnapPoints(o,i);let{snapOffset:d,snapLines:E}=TY(i,WA(B,this.state),this,o,C,r);g+=d.x,s+=d.y,this.setState({snapLines:E})}if(jZ(t.originalElements,r,i,this.scene,Ra(o),OF(o),i.some(I=>xe(I))?!EQ(o):EQ(o),g,s,t.resize.center.x,t.resize.center.y)){let I=new Set;return a.forEach(c=>{Kr(this.scene.getNonDeletedElements(),c,this.state,this.scene.getNonDeletedElementsMap()).forEach(C=>{St(C)?I.add(C):console.error("[NONDELETED][INVARIANT] Skipped highlighting deleted element in resizing frame")})}),this.setState({elementsToHighlight:[...I]}),!0}return!1});M(this,"getContextMenuItems",t=>{let o=[];if(o.push(ox,tx),t==="canvas")return this.state.viewModeEnabled?[...o,mu,OC,AB,pg]:[rY,ki,ox,tx,ix,ki,_N,TgA,ki,mu,Tf,Pf,Zf,OC,AB,pg];if(o.push(ix),this.state.viewModeEnabled)return[pu,...o];let i=this.editorInterface.formFactor==="desktop"?[ki,nL,gL,sL,lL]:[];return[ki,ex,pu,rY,ki,IlA,clA,ClA,ki,RY,ki,...o,ki,q1,j1,ki,X1,NY,nY,gY,MgA,$1,ki,tY,...i,ki,iY,aY,ki,Nu,ki,_f,lx,ki,zN,zf,ki,tf]});M(this,"handleWheel",Bo(t=>{let i=t.composedPath?.()?.some(n=>n instanceof HTMLCanvasElement&&n.classList?.contains("excalidraw__canvas"))||t.target?.closest?.("canvas.excalidraw__canvas")!=null;if(!this.isNavigationEnabled())return;if(!(i||t.target instanceof HTMLTextAreaElement||t.target instanceof HTMLIFrameElement||t.target instanceof HTMLElement&&t.target.classList.contains(wt.FRAME_NAME))){t[z.CTRL_OR_CMD]&&t.preventDefault();return}if(t.preventDefault(),qs)return;let{deltaX:a,deltaY:r}=t;if((t.metaKey||t.ctrlKey)&&!this.state.allowWheelZoom||!(t.metaKey||t.ctrlKey)&&this.state.allowWheelZoom){let n=Math.sign(r),g=zw()*100,s=Math.abs(r),l=r;s>g&&(l=g*n);let I=this.state.zoom.value-l/100;I+=Math.log10(Math.max(1,this.state.zoom.value))*-n*Math.min(1,s/20);let c=this.state.scrollConstraints?.lockZoom?this.state.scrollConstraints.zoom:lQ;I=Math.max(I,c),this.viewport.translate(B=>({...lC({viewportX:this.viewport.lastPosition.x,viewportY:this.viewport.lastPosition.y,nextZoom:Zr(I)},B),shouldCacheIgnoreZoom:!0}),{zoomPreConstrained:!0,preserveScrollConstraintsSnapBack:!0})&&this.resetShouldCacheIgnoreZoomDebounced();return}if(t.shiftKey){this.viewport.translate(({zoom:n,scrollX:g})=>({scrollX:g-(r||a)/n.value}));return}this.viewport.translate(({zoom:n,scrollX:g,scrollY:s})=>({scrollX:g-a/n.value,scrollY:s-r/n.value}))}));M(this,"savePointer",(t,o,i)=>{if(!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)||!t||!o)return;let{x:a,y:r}=He({clientX:t,clientY:o},this.state);isNaN(a)||isNaN(r);let n={x:a,y:r,tool:this.state.activeTool.type==="laser"?"laser":"pointer"};this.props.onPointerUpdate?.({pointer:n,button:i,pointersMap:ve.pointers})});M(this,"resetShouldCacheIgnoreZoomDebounced",Xg(()=>{this.unmounted||this.setState({shouldCacheIgnoreZoom:!1})},300));M(this,"updateDOMRect",t=>{if(this.excalidrawContainerRef?.current){let o=this.excalidrawContainerRef.current,{width:i,height:a,left:r,top:n}=o.getBoundingClientRect(),{width:g,height:s,offsetTop:l,offsetLeft:I}=this.state;if(i===g&&a===s&&r===I&&n===l){t&&t();return}if(i===0||a===0){t&&t();return}this.setState({width:i,height:a,offsetLeft:r,offsetTop:n},()=>{t&&t()}),this.viewport.constrain()}});M(this,"refresh",()=>{this.setState({...this.getCanvasOffsets()})});M(this,"watchState",()=>{});let o=Ir(),{viewModeEnabled:i=!1,zenModeEnabled:a=!1,gridModeEnabled:r=!1,objectsSnapModeEnabled:n=!1,theme:g=o.theme,initState:s,name:l=`${L("labels.untitled")}-${VF()}`}=t,I=null;t.activeTool&&(t.activeTool.type==="image"?console.warn('"image" tool cannot be forced via "props.activeTool"'):this.isToolSupported(t.activeTool.type,t)?I=oo(o,t.activeTool):console.warn(`"${t.activeTool.type}" tool ("props.activeTool") cannot be activated \u2014 disabled via "UIOptions.tools", or not enabled while non-interactive (see "interaction.enabled.tools")`)),this.state={...o,theme:g,exportWithDarkMode:g===EA.DARK,isLoading:!0,...this.getCanvasOffsets(),viewModeEnabled:this.isInteractionEnabled(t)?i:!0,activeTool:I??o.activeTool,zenModeEnabled:a,objectsSnapModeEnabled:n,gridModeEnabled:r??o.gridModeEnabled,name:l,width:window.innerWidth,height:window.innerHeight,...s??{}},this.refreshEditorInterface(),this.stylesPanelMode=pI(this.editorInterface),this.id=hQ(),ZF(),this.library=new asA(this),this.actionManager=new Rx(this.syncActionResult,()=>this.state,()=>this.scene.getElementsIncludingDeleted(),this),this.scene=new RI,this.canvas=document.createElement("canvas"),this.rc=es.canvas(this.canvas),this.renderer=new lb(this.scene),this.visibleElements=[],this.store=new L0(this),this.history=new gb(this.store),this.excalidrawContainerValue={container:this.excalidrawContainerRef.current,id:this.id},this.fonts=new Vo(this.scene),this.history=new gb(this.store),this.actionManager.registerAll(rL),this.actionManager.registerAction(dlA(this.history)),this.actionManager.registerAction(ElA(this.history)),this.api=this.createExcalidrawAPI()}createExcalidrawAPI(){return{isDestroyed:!1,updateScene:this.updateScene,applyDeltas:this.applyDeltas,mutateElement:this.mutateElement,updateLibrary:this.library.updateLibrary,addFiles:this.addFiles,resetScene:this.resetScene,getSceneElementsIncludingDeleted:this.getSceneElementsIncludingDeleted,getSceneElementsMapIncludingDeleted:this.getSceneElementsMapIncludingDeleted,history:{clear:this.resetHistory,undo:this.undo,redo:this.redo},setViewport:this.viewport.setViewport,getViewportOffsets:this.viewport.getOffsets,getSceneElements:this.getSceneElements,getAppState:()=>this.state,getFiles:()=>this.files,getName:this.getName,registerAction:o=>{this.actionManager.registerAction(o)},refresh:this.refresh,setToast:this.setToast,id:this.id,setActiveTool:this.setActiveTool,setCursor:this.cursor.set,resetCursor:this.cursor.reset,getEditorInterface:()=>this.editorInterface,updateFrameRendering:this.updateFrameRendering,toggleSidebar:this.toggleSidebar,onChange:o=>this.onChangeEmitter.on(o),onIncrement:o=>this.store.onStoreIncrementEmitter.on(o),onPointerDown:o=>this.onPointerDownEmitter.on(o),onPointerUp:o=>this.onPointerUpEmitter.on(o),onScrollChange:o=>this.onScrollChangeEmitter.on(o),onUserFollow:o=>this.onUserFollowEmitter.on(o),onStateChange:this.onStateChange,onEvent:this.onEvent,setForceRenderAllEmbeddables:this.setForceRenderAllEmbeddables,zoomToFit:this.zoomToFit,refreshEditorInterface:this.refreshEditorInterface,setDesktopUIMode:this.setDesktopUIMode,setMobileModeAllowed:this.setMobileModeAllowed,isTouchScreen:this.isTouchScreen,isTrayModeEnabled:this.isTrayModeEnabled,getColorAtScenePoint:this.getColorAtScenePoint,startLineEditor:this.startLineEditor,refreshAllArrows:this.refreshAllArrows,updateContainerSize:this.updateContainerSize,selectElements:this.selectElements,sendBackward:this.sendBackward,bringForward:this.bringForward,sendToBack:this.sendToBack,bringToFront:this.bringToFront,getHTMLIFrameElement:o=>this.getHTMLIFrameElement(o)}}isInteractionEnabled(t=this.props){return t.interaction!==!1&&typeof t.interaction!="object"}isLinksEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.links===!0||t.interaction.enabled?.interactiveContent===!0:t.interaction!==!1}isNavigationEnabled(t=this.props){return wC()?!0:typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.navigation===!0:t.interaction!==!1}isEmbedsEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.embeds===!0||t.interaction.enabled?.interactiveContent===!0:t.interaction!==!1}isBrowserZoomEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.browserZoom===!0:!1}isToolLocked(){return this.state.activeTool.locked||this.props.activeTool!=null}isActiveToolPointerCapturing(){return this.isInteractionEnabled()?this.state.activeTool.type==="laser"||this.state.activeTool.type==="custom":this.isToolSupported(this.state.activeTool.type)}isDefaultUIEnabled(t=this.props){return t.ui!==!1&&(typeof t.ui!="object"||t.ui===null)}isUIControlEnabled(t,o=this.props){return typeof o.ui=="object"&&o.ui!==null?o.ui.enabled?.[t]===!0:o.ui!==!1}onWindowMessage(t){if(t.origin!=="https://player.vimeo.com"&&t.origin!=="https://www.youtube.com")return;let o=null;try{o=JSON.parse(t.data)}catch{}if(o)switch(t.origin){case"https://player.vimeo.com":if(o.method==="paused"){let i=null,a=document.body.querySelectorAll("iframe.excalidraw__embeddable");if(!a)break;for(let r of a)r.contentWindow===t.source&&(i=r.contentWindow);i?.postMessage(JSON.stringify({method:o.value?"play":"pause",value:!0}),"*")}break;case"https://www.youtube.com":if(o.event==="infoDelivery"&&o.info&&o.id&&typeof o.info.playerState=="number"){let i=o.id,a=o.info.playerState;Object.values(im).includes(a)&&nT.set(i,a)}break}}handleSkipBindMode(){if(this.state.selectedLinearElement?.initialState&&!this.state.selectedLinearElement.initialState.arrowStartIsInside){UA(this.lastPointerMoveCoords,"Missing last pointer move coords when changing bind skip mode for arrow start");let t=this.scene.getNonDeletedElementsMap(),o=si(k(this.lastPointerMoveCoords.x,this.lastPointerMoveCoords.y),this.scene.getNonDeletedElements(),t),i=rA.getElement(this.state.selectedLinearElement.elementId,t);i?.startBinding&&o?.id===i.startBinding.elementId&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,arrowStartIsInside:!0}}})}if(this.state.bindMode==="orbit"&&(this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),(0,$a.flushSync)(()=>{this.setState({bindMode:"skip"})}),this.lastPointerMoveCoords&&this.state.selectedLinearElement?.selectedPointsIndices&&this.state.selectedLinearElement?.selectedPointsIndices.length)){let{x:t,y:o}=this.lastPointerMoveCoords,i=this.lastPointerMoveEvent??this.lastPointerDownEvent?.nativeEvent;UA(i,"Last event must exist");let a=t-this.state.selectedLinearElement.pointerOffset.x,r=o-this.state.selectedLinearElement.pointerOffset.y,n=this.state.multiElement?rA.handlePointerMove(i,this,a,r,this.state.selectedLinearElement):rA.handlePointDragging(i,this,a,r,this.state.selectedLinearElement);n&&this.setState(n)}}resetDelayedBindMode(){this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.state.bindMode!=="orbit"&&setTimeout(()=>this.setState({bindMode:"orbit"}))}handleDelayedBindModeChange(t,o){if(t.isDeleted||kA(t))return;let i=()=>{if(this.bindModeHandler=null,UA(this.lastPointerMoveCoords,"Expected lastPointerMoveCoords to be set"),!this.state.multiElement){if(!this.state.selectedLinearElement||!this.state.selectedLinearElement.selectedPointsIndices||!this.state.selectedLinearElement.selectedPointsIndices.length)return;let B=this.state.selectedLinearElement.selectedPointsIndices.includes(0),d=this.state.selectedLinearElement.selectedPointsIndices.includes(t.points.length-1);if(!B&&!d||B&&d)return}let{x:I,y:c}=this.lastPointerMoveCoords,C=si(k(I,c),this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap());if(C&&this.state.bindMode!=="skip"){UA(this.state.selectedLinearElement?.elementId===t.id,"The selectedLinearElement is expected to not change while a bind mode timeout is ticking");let B=this.state.selectedLinearElement.initialState.arrowStartIsInside||t.startBinding?.elementId===C.id;(0,$a.flushSync)(()=>{UA(this.state.selectedLinearElement,"this.state.selectedLinearElement must exist"),this.setState({bindMode:"inside",selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,arrowStartIsInside:B}}})});let d=this.lastPointerMoveEvent??this.lastPointerDownEvent?.nativeEvent;UA(d,"Last event must exist");let E=I-this.state.selectedLinearElement.pointerOffset.x,h=c-this.state.selectedLinearElement.pointerOffset.y,p=this.state.multiElement?rA.handlePointerMove(d,this,E,h,this.state.selectedLinearElement):rA.handlePointDragging(d,this,E,h,this.state.selectedLinearElement);p&&this.setState(p)}},a=!1;if(this.state.selectedLinearElement?.selectedPointsIndices){let I=this.scene.getNonDeletedElementsMap(),c=this.state.selectedLinearElement.selectedPointsIndices.includes(0),C=this.state.selectedLinearElement.selectedPointsIndices.includes(t.points.length-1),B=c?o:t.startBinding&&I.get(t.startBinding.elementId),d=C?o:t.endBinding&&I.get(t.endBinding.elementId),E=B&&Ke(B,I),h=d&&Ke(d,I);a=!!(E&&h&&B.id!==d.id&&Hi(E,h))}let r=this.state.selectedLinearElement?.selectedPointsIndices?.includes(0),n=this.state.selectedLinearElement?.selectedPointsIndices?.includes(t.points.length-1),g=r?"startBinding":n?"endBinding":null,s=r?"endBinding":n?"startBinding":null,l=s&&t[s]?.mode==="inside"&&t[s]?.elementId===o?.id||g&&t[g]?.mode==="inside"&&o?.id===t[g]?.elementId;g&&s&&t[g]?.mode==="inside"&&o?.id!==t[g]?.elementId&&t[s]?.elementId!==t[g]?.elementId&&this.scene.mutateElement(t,{[g]:{...t[g],mode:"orbit"}},{informMutation:!1,isDragging:!0}),!o||this.previousHoveredBindableElement&&o.id!==this.previousHoveredBindableElement.id?(this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.state.bindMode==="inside"&&(0,$a.flushSync)(()=>{this.setState({bindMode:"orbit"})}),this.previousHoveredBindableElement=null):!this.bindModeHandler&&(!this.state.newElement||!t.startBinding||a)&&!l&&(this.bindModeHandler=setTimeout(i,Rc)),this.previousHoveredBindableElement=o}cacheEmbeddableRef(t,o){o&&this.iFrameRefs.set(t.id,o)}getHTMLIFrameElement(t){return typeof t=="string"?this.iFrameRefs.get(t):this.iFrameRefs.get(t.id)}handleIframeLikeCenterClick(){if(!this.lastPointerDownEvent||!this.lastPointerUpEvent||this.lastPointerDownEvent.button!==xr.MAIN||wc||!AR(this.state.activeTool.type,["laser","selection","lasso"]))return!1;let t=k(He({clientX:this.lastPointerDownEvent.clientX,clientY:this.lastPointerDownEvent.clientY},this.state)),o=k(He({clientX:this.lastPointerUpEvent.clientX,clientY:this.lastPointerUpEvent.clientY},this.state));if(ZA(t,o)>Al)return!1;let a=this.getElementAtPosition(t[0],t[1]);if(!(a&&this.lastPointerUpEvent.timeStamp-this.lastPointerDownEvent.timeStamp<=300&&ve.pointers.size<2&&Oo(a)&&(this.state.viewModeEnabled||this.state.activeTool.type==="laser"||this.isIframeLikeElementCenter(a,this.lastPointerUpEvent,o[0],o[1]))))return!1;let n=a;if(this.state.activeEmbeddable?.element===n&&this.state.activeEmbeddable?.state==="active"||(setTimeout(()=>{this.setState({activeEmbeddable:{element:n,state:"active"},selectedElementIds:{[n.id]:!0},newElement:null,selectionElement:null})},100),is(n)))return!0;let g=this.getHTMLIFrameElement(n);if(!g?.contentWindow)return!0;if(g.src.includes("youtube")){let s=nT.get(n.id);switch(s||(nT.set(n.id,im.UNSTARTED),g.contentWindow.postMessage(JSON.stringify({event:"listening",id:n.id}),"*")),s){case im.PLAYING:case im.BUFFERING:g.contentWindow?.postMessage(JSON.stringify({event:"command",func:"pauseVideo",args:""}),"*");break;default:g.contentWindow?.postMessage(JSON.stringify({event:"command",func:"playVideo",args:""}),"*")}}return g.src.includes("player.vimeo.com")&&g.contentWindow.postMessage(JSON.stringify({method:"paused"}),"*"),!0}isIframeLikeElementCenter(t,o,i,a){return t&&!o.altKey&&!o.shiftKey&&!o.metaKey&&!o.ctrlKey&&(this.state.activeEmbeddable?.element!==t||this.state.activeEmbeddable?.state==="hover"||!this.state.activeEmbeddable)&&i>=t.x+t.width/3&&i<=t.x+2*t.width/3&&a>=t.y+t.height/3&&a<=t.y+2*t.height/3}renderEmbeddables(){let t=this.state.zoom.value,o=this.state.width,i=this.state.height,a=this.scene.getNonDeletedElements().filter(r=>ni(r)&&this.embedsValidationStatus.get(r.id)===!0||is(r));return(0,Ue.jsx)(Ue.Fragment,{children:a.map(r=>{let{x:n,y:g}=oi({sceneX:r.x,sceneY:r.y},this.state),s=this.shouldRenderAllEmbeddables||gd(r,o,i,this.state,this.scene.getNonDeletedElementsMap()),l=this.initializedEmbeds.has(r.id);if(s&&!l&&this.initializedEmbeds.add(r.id),!(s||l))return null;let c,C=cs(DQ(r.link||""));if(is(r)){c=null;let b=(r.customData?.generationData??this.magicGenerations.get(r.id))||{status:"error",message:"No generation data",code:"ERR_NO_GENERATION_DATA"};if(b.status==="done"){let D=b.html;c={intrinsicSize:{w:r.width,h:r.height},type:"document",srcdoc:()=>D}}else if(b.status==="pending")c={intrinsicSize:{w:r.width,h:r.height},type:"document",srcdoc:()=>ah(`
|
|
483
|
+
Please fix the Mermaid syntax and regenerate a valid diagram.`;await h({prompt:H,isRepairFlow:!0})},W=async K=>{let N=l.messages.findIndex(J=>J.id===K.id);if(N>0){let J=l.messages[N-1];J.type==="user"&&typeof J.content=="string"&&(d(),await h({prompt:J.content,isRepairFlow:!0}))}},q=()=>{gD({app:a,data:E})},T=K=>{let N=l.messages.findIndex(H=>H.id===K&&H.type==="assistant"),J=l.messages.slice(0,N-1);I({...l,messages:J})},F=K=>{I(N=>({...N,currentPrompt:K}))};return(0,Sp.jsxs)("div",{className:`ttd-dialog-layout ${c?"ttd-dialog-layout--split":"ttd-dialog-layout--chat-only"}`,children:[(0,Sp.jsx)(oQA,{chatId:l.id,messages:l.messages,currentPrompt:l.currentPrompt,onPromptChange:F,onGenerate:h,isGenerating:B?.isGenerating??!1,generatedResponse:B?.content,isMenuOpen:u,onMenuToggle:D,onMenuClose:S,onNewChat:b,onRestoreChat:m,onDeleteChat:w,savedChats:C,activeSessionId:l.id,onAbort:p,onMermaidTabClick:v,onAiRepairClick:R,onDeleteMessage:T,onInsertMessage:x,onRetry:W,onViewAsMermaid:U,renderWarning:o,renderWelcomeScreen:t}),c&&(0,Sp.jsx)(iQA,{canvasRef:n,hideErrorDetails:B?.errorType==="parse",error:g,loaded:A.loaded,onInsert:q})]})},nTA=({mermaidToExcalidrawLib:A,onTextSubmit:e,renderWelcomeScreen:t,renderWarning:o,persistenceAdapter:i})=>(0,Sp.jsx)(rTA,{mermaidToExcalidrawLib:A,onTextSubmit:e,renderWelcomeScreen:t,renderWarning:o,persistenceAdapter:i}),rQA=nTA;Q();var zJ=G(nA(),1);X();var sQA=G(_(),1),nQA=A=>{let e=Ye(),t=(0,zJ.useRef)(null),o=(0,zJ.useRef)(0);return(0,sQA.jsx)(ra.Root,{ref:t,className:"ttd-dialog-tabs-root",value:A.tab,onValueChange:i=>{if(!i)return;let a=t.current?.closest(".Modal__content");if(a){let r=a.offsetHeight||0;r>o.current&&(o.current=r,a.style.minHeight=`min(${o.current}px, 100%)`)}A.dialog==="ttd"&&cy(["text-to-diagram","mermaid"],i)&&e({openDialog:{name:A.dialog,tab:i}})},children:A.children})};nQA.displayName="TTDDialogTabs";var gQA=nQA;Q();var lQA=G(_(),1),OJ=({children:A,...e})=>(0,lQA.jsx)(ra.List,{className:"ttd-dialog-triggers",...e,children:A});OJ.displayName="TTDDialogTabTriggers";Q();var qJ=G(_(),1),kU=({children:A,tab:e,onSelect:t,...o})=>(0,qJ.jsx)(ra.Trigger,{value:e,asChild:!0,onSelect:t,children:(0,qJ.jsx)("button",{type:"button",className:"ttd-dialog-tab-trigger",...o,children:A})});kU.displayName="TTDDialogTabTrigger";Q();var IQA=G(_(),1),LU=({tab:A,children:e,...t})=>(0,IQA.jsx)(ra.Content,{...t,value:A,children:e});LU.displayName="TTDDialogTab";Hk();var yr=G(_(),1),ID=A=>{let e=Ee();return e.openDialog?.name!=="ttd"?null:(0,yr.jsx)(gTA,{...A,tab:e.openDialog.tab})};ID.WelcomeMessage=fU;var gTA=Ic("TTDDialogBase",({tab:A,...e})=>{let t=Rt(),[o,i]=(0,SU.useState)({loaded:!1,api:Promise.resolve({})});if((0,SU.useEffect)(()=>{let r=!0;return(async()=>{try{let g=await EN();r&&g.loaded?i(g):r&&t.setOpenDialog(null)}catch{r&&t.setOpenDialog(null)}})(),()=>{r=!1}},[t]),!o.loaded)return null;let a=t.state;return(0,yr.jsx)(ei,{className:"ttd-dialog",onCloseRequest:()=>{t.setOpenDialog(null)},size:1520,title:!1,...e,autofocus:!1,children:(0,yr.jsxs)(gQA,{dialog:"ttd",tab:A,children:["__fallback"in e&&e.__fallback?(0,yr.jsx)("p",{className:"dialog-mermaid-title",children:L("mermaid.title")}):(0,yr.jsxs)(OJ,{children:[(0,yr.jsx)(kU,{tab:"text-to-diagram",children:(0,yr.jsxs)("div",{className:"ttd-dialog-tab-trigger__content",children:[L("labels.textToDiagram"),(0,yr.jsx)("div",{className:"ttd-dialog-tab-trigger__badge",children:L("chat.aiBeta")})]})}),(0,yr.jsx)(kU,{tab:"mermaid",children:L("mermaid.label")})]}),!("__fallback"in e)&&(0,yr.jsx)(LU,{className:"ttd-dialog-content",tab:"text-to-diagram",children:(0,yr.jsx)(rQA,{mermaidToExcalidrawLib:o,onTextSubmit:e.onTextSubmit,renderWelcomeScreen:e.renderWelcomeScreen,renderWarning:e.renderWarning,persistenceAdapter:e.persistenceAdapter})}),(0,yr.jsx)(LU,{className:"ttd-dialog-content",tab:"mermaid",children:(0,yr.jsx)(_EA,{mermaidToExcalidrawLib:o,isActive:A==="mermaid",selectedElements:t.scene.getSelectedElements(a)})})]})})});Q();var mB=G(nA(),1);X();O();Qt();var Ng=G(_(),1),sTA=({sourceElementId:A,onClose:e,appState:t,scene:o,generateLinkForSelection:i=F0})=>{let a=o.getNonDeletedElementsMap(),r=a.get(A)?.link??null,[n,g]=(0,mB.useState)(r),[s,l]=(0,mB.useState)(!1);(0,mB.useEffect)(()=>{let c=WA(a,t),C=r;if(c.length>0&&i){let B=R0(c,t);B&&(C=ai(i(B.id,B.type)))}g(C)},[a,t,t.selectedElementIds,r,i]);let I=(0,mB.useCallback)(()=>{if(n&&n!==a.get(A)?.link){let c=a.get(A);c&&o.mutateElement(c,{link:n})}if(!n&&s&&A){let c=a.get(A);c&&o.mutateElement(c,{link:null})}e?.()},[A,n,a,s,o,e]);return(0,mB.useEffect)(()=>{let c=C=>{t.openDialog?.name==="elementLinkSelector"&&C.key===z.ENTER&&I(),t.openDialog?.name==="elementLinkSelector"&&C.key===z.ESCAPE&&e?.()};return window.addEventListener("keydown",c),()=>{window.removeEventListener("keydown",c)}},[t,e,I]),(0,Ng.jsxs)("div",{className:"ElementLinkDialog",children:[(0,Ng.jsxs)("div",{className:"ElementLinkDialog__header",children:[(0,Ng.jsx)("h2",{children:L("elementLink.title")}),(0,Ng.jsx)("p",{children:L("elementLink.desc")})]}),(0,Ng.jsxs)("div",{className:"ElementLinkDialog__input",children:[(0,Ng.jsx)(XC,{value:n??"",onChange:c=>{s||l(!0),g(c)},onKeyDown:c=>{c.key===z.ENTER&&I()},className:"ElementLinkDialog__input-field",selectOnRender:!0}),r&&n&&(0,Ng.jsx)(PA,{type:"button",title:L("buttons.remove"),"aria-label":L("buttons.remove"),label:L("buttons.remove"),onClick:()=>{g(null),l(!0)},className:"ElementLinkDialog__remove",icon:ba})]}),(0,Ng.jsxs)("div",{className:"ElementLinkDialog__actions",children:[(0,Ng.jsx)(nc,{label:L("buttons.cancel"),onClick:()=>{e?.()},style:{marginRight:10}}),(0,Ng.jsx)(nc,{label:L("buttons.confirm"),onClick:I,actionType:"primary"})]})]})},cQA=sTA;Q();var xU=G(nA(),1);var xp=G(_(),1),CQA=({children:A,onClose:e})=>{let[t,o]=(0,xU.useState)(!!A),{container:i}=Gt(),a=xU.default.useCallback(()=>{o(!1),e&&e(),i?.focus()},[e,i]);return(0,xp.jsx)(xp.Fragment,{children:t&&(0,xp.jsx)(ei,{size:"small",onCloseRequest:a,title:L("errorDialog.title"),children:(0,xp.jsx)("div",{style:{whiteSpace:"pre-wrap"},children:A})})})};Q();var BQA=G(nA(),1);X();X();var hA=G(_(),1),lTA=()=>(0,hA.jsxs)("div",{className:"HelpDialog__header",children:[(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://github.com/zsviczian/obsidian-excalidraw-plugin/#readme",target:"_blank",rel:"noopener",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:mN}),L("helpDialog.documentation")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://www.youtube.com/@VisualPKM",target:"_blank",rel:"noopener",children:["Visual PKM YouTube",(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:mN}),L("helpDialog.blog")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",target:"_blank",rel:"noopener noreferrer",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:qk}),L("helpDialog.github")]}),(0,hA.jsxs)("a",{className:"HelpDialog__btn",href:"https://youtube.com/@excalidraw",target:"_blank",rel:"noopener noreferrer",children:[(0,hA.jsx)("div",{className:"HelpDialog__link-icon",children:voA}),"YouTube"]})]}),ITA=A=>(0,hA.jsxs)(hA.Fragment,{children:[(0,hA.jsx)("h3",{children:A.title}),(0,hA.jsx)("div",{className:"HelpDialog__islands-container",children:A.children})]}),jJ=A=>(0,hA.jsxs)("div",{className:`HelpDialog__island ${A.className}`,children:[(0,hA.jsx)("h4",{className:"HelpDialog__island-title",children:A.caption}),(0,hA.jsx)("div",{className:"HelpDialog__island-content",children:A.children})]});function*cTA(A,e){let t=!0;for(let o of A)t||(yield e),t=!1,yield o}var CTA=A=>A.replace(/\b[a-z]\b/,e=>e.toUpperCase()),HA=({label:A,shortcuts:e,isOr:t=!0})=>{let o=e.map(i=>(i.endsWith("++")?[...i.slice(0,-2).split("+"),"+"]:i.split("+")).map(r=>(0,hA.jsx)(BTA,{children:CTA(r)},r)));return(0,hA.jsxs)("div",{className:"HelpDialog__shortcut",children:[(0,hA.jsx)("div",{children:A}),(0,hA.jsx)("div",{className:"HelpDialog__key-container",children:[...cTA(o,t?L("helpDialog.or"):"")]})]})},BTA=A=>(0,hA.jsx)("kbd",{className:"HelpDialog__key",...A}),dQA=({onClose:A})=>{let e=Wt(),t=BQA.default.useCallback(()=>{A&&A()},[A]);return(0,hA.jsx)(hA.Fragment,{children:(0,hA.jsxs)(ei,{onCloseRequest:t,title:L("helpDialog.title"),className:"HelpDialog",children:[(0,hA.jsx)(lTA,{}),(0,hA.jsxs)(ITA,{title:L("helpDialog.shortcuts"),children:[(0,hA.jsxs)(jJ,{className:"HelpDialog__island--tools",caption:L("helpDialog.tools"),children:[(0,hA.jsx)(HA,{label:L("toolBar.hand"),shortcuts:[z.H]}),(0,hA.jsx)(HA,{label:L("toolBar.selection"),shortcuts:[z.V,z[1]]}),(0,hA.jsx)(HA,{label:L("toolBar.rectangle"),shortcuts:[z.R,z[2]]}),(0,hA.jsx)(HA,{label:L("toolBar.diamond"),shortcuts:[z.D,z[3]]}),(0,hA.jsx)(HA,{label:L("toolBar.ellipse"),shortcuts:[z.O,z[4]]}),(0,hA.jsx)(HA,{label:L("toolBar.arrow"),shortcuts:[z.A,z[5]]}),(0,hA.jsx)(HA,{label:L("toolBar.line"),shortcuts:[z.L,z[6]]}),(0,hA.jsx)(HA,{label:L("toolBar.freedraw"),shortcuts:[z.P,z[7]]}),(0,hA.jsx)(HA,{label:L("toolBar.text"),shortcuts:[z.T,z[8]]}),(0,hA.jsx)(HA,{label:L("toolBar.image"),shortcuts:[z[9]]}),(0,hA.jsx)(HA,{label:L("toolBar.eraser"),shortcuts:[z.E,z[0]]}),(0,hA.jsx)(HA,{label:L("toolBar.frame"),shortcuts:[z.F]}),(0,hA.jsx)(HA,{label:L("toolBar.laser"),shortcuts:[z.K]}),(0,hA.jsx)(HA,{label:L("toolBar.bucketfill"),shortcuts:[z.B]}),(0,hA.jsx)(HA,{label:L("labels.eyeDropper"),shortcuts:[z.I,"Shift+S","Shift+G"]}),(0,hA.jsx)(HA,{label:L("helpDialog.editLineArrowPoints"),shortcuts:[gA("CtrlOrCmd+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.editText"),shortcuts:[gA("Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.textNewLine"),shortcuts:[gA("Enter"),gA("Shift+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.textFinish"),shortcuts:[gA("Esc"),gA("CtrlOrCmd+Enter")]}),(0,hA.jsx)(HA,{label:L("helpDialog.curvedArrow"),shortcuts:["A",L("helpDialog.click"),L("helpDialog.click"),L("helpDialog.click")],isOr:!1}),(0,hA.jsx)(HA,{label:L("helpDialog.curvedLine"),shortcuts:["L",L("helpDialog.click"),L("helpDialog.click"),L("helpDialog.click")],isOr:!1}),(0,hA.jsx)(HA,{label:L("helpDialog.cropStart"),shortcuts:[L("helpDialog.doubleClick"),gA("Enter")],isOr:!0}),(0,hA.jsx)(HA,{label:L("helpDialog.cropFinish"),shortcuts:[gA("Enter"),gA("Escape")],isOr:!0}),(0,hA.jsx)(HA,{label:L("toolBar.lock"),shortcuts:[z.Q]}),(0,hA.jsx)(HA,{label:L("helpDialog.preventBinding"),shortcuts:[gA("CtrlOrCmd")]}),(0,hA.jsx)(HA,{label:L("toolBar.link"),shortcuts:[gA("CtrlOrCmd+K")]}),(0,hA.jsx)(HA,{label:L("toolBar.convertElementType"),shortcuts:["Tab","Shift+Tab"],isOr:!0})]}),(0,hA.jsxs)(jJ,{className:"HelpDialog__island--view",caption:L("helpDialog.view"),children:[(0,hA.jsx)(HA,{label:L("buttons.zoomIn"),shortcuts:[gA("CtrlOrCmd++")]}),(0,hA.jsx)(HA,{label:L("buttons.zoomOut"),shortcuts:[gA("CtrlOrCmd+-")]}),(0,hA.jsx)(HA,{label:L("buttons.resetZoom"),shortcuts:[gA("CtrlOrCmd+0")]}),(0,hA.jsx)(HA,{label:L("helpDialog.zoomToFit"),shortcuts:["Shift+1"]}),(0,hA.jsx)(HA,{label:L("helpDialog.zoomToSelection"),shortcuts:["Shift+2"]}),(0,hA.jsx)(HA,{label:L("helpDialog.movePageUpDown"),shortcuts:["PgUp/PgDn"]}),(0,hA.jsx)(HA,{label:L("helpDialog.movePageLeftRight"),shortcuts:["Shift+PgUp/PgDn"]}),(0,hA.jsx)(HA,{label:L("buttons.zenMode"),shortcuts:[gA("Alt+Z")]}),(0,hA.jsx)(HA,{label:L("buttons.objectsSnapMode"),shortcuts:[gA("Alt+S")]}),(0,hA.jsx)(HA,{label:L("labels.toggleGrid"),shortcuts:[gA("CtrlOrCmd+'")]}),(0,hA.jsx)(HA,{label:L("labels.viewMode"),shortcuts:[gA("Alt+R")]}),e.isActionEnabled(WC)&&(0,hA.jsx)(HA,{label:L("labels.toggleTheme"),shortcuts:[gA("Alt+Shift+D")]}),(0,hA.jsx)(HA,{label:L("stats.fullTitle"),shortcuts:[gA("Alt+/")]}),(0,hA.jsx)(HA,{label:L("search.title"),shortcuts:[Vt("searchMenu")]}),(0,hA.jsx)(HA,{label:L("commandPalette.title"),shortcuts:uI?[Vt("commandPalette")]:[Vt("commandPalette"),Vt("commandPalette",1)]})]}),(0,hA.jsxs)(jJ,{className:"HelpDialog__island--editor",caption:L("helpDialog.editor"),children:[(0,hA.jsx)(HA,{label:L("helpDialog.createFlowchart"),shortcuts:[gA("CtrlOrCmd+Arrow Key")],isOr:!0}),(0,hA.jsx)(HA,{label:L("helpDialog.navigateFlowchart"),shortcuts:[gA("Alt+Arrow Key")],isOr:!0}),(0,hA.jsx)(HA,{label:L("labels.moveCanvas"),shortcuts:[gA(`Space+${L("helpDialog.drag")}`),gA(`Wheel+${L("helpDialog.drag")}`)],isOr:!0}),(0,hA.jsx)(HA,{label:L("buttons.clearReset"),shortcuts:[gA("CtrlOrCmd+Delete")]}),(0,hA.jsx)(HA,{label:L("labels.delete"),shortcuts:[gA("Delete")]}),(0,hA.jsx)(HA,{label:L("labels.cut"),shortcuts:[gA("CtrlOrCmd+X")]}),(0,hA.jsx)(HA,{label:L("labels.copy"),shortcuts:[gA("CtrlOrCmd+C")]}),(0,hA.jsx)(HA,{label:L("labels.paste"),shortcuts:[gA("CtrlOrCmd+V")]}),(0,hA.jsx)(HA,{label:L("labels.pasteAsPlaintext"),shortcuts:[gA("CtrlOrCmd+Shift+V")]}),(0,hA.jsx)(HA,{label:L("labels.selectAll"),shortcuts:[gA("CtrlOrCmd+A")]}),(0,hA.jsx)(HA,{label:L("labels.multiSelect"),shortcuts:[gA(`Shift+${L("helpDialog.click")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.deepSelect"),shortcuts:[gA(`CtrlOrCmd+${L("helpDialog.click")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.deepBoxSelect"),shortcuts:[gA(`CtrlOrCmd+${L("helpDialog.drag")}`)]}),(du||uI)&&(0,hA.jsx)(HA,{label:L("labels.copyAsPng"),shortcuts:[gA("Shift+Alt+C")]}),(0,hA.jsx)(HA,{label:L("labels.copyStyles"),shortcuts:[gA("CtrlOrCmd+Alt+C")]}),(0,hA.jsx)(HA,{label:L("labels.pasteStyles"),shortcuts:[gA("CtrlOrCmd+Alt+V")]}),(0,hA.jsx)(HA,{label:L("labels.sendToBack"),shortcuts:[Fa?gA("CtrlOrCmd+Alt+["):gA("CtrlOrCmd+Shift+[")]}),(0,hA.jsx)(HA,{label:L("labels.bringToFront"),shortcuts:[Fa?gA("CtrlOrCmd+Alt+]"):gA("CtrlOrCmd+Shift+]")]}),(0,hA.jsx)(HA,{label:L("labels.sendBackward"),shortcuts:[gA("CtrlOrCmd+[")]}),(0,hA.jsx)(HA,{label:L("labels.bringForward"),shortcuts:[gA("CtrlOrCmd+]")]}),(0,hA.jsx)(HA,{label:L("labels.alignTop"),shortcuts:[gA("CtrlOrCmd+Shift+Up")]}),(0,hA.jsx)(HA,{label:L("labels.alignBottom"),shortcuts:[gA("CtrlOrCmd+Shift+Down")]}),(0,hA.jsx)(HA,{label:L("labels.alignLeft"),shortcuts:[gA("CtrlOrCmd+Shift+Left")]}),(0,hA.jsx)(HA,{label:L("labels.alignRight"),shortcuts:[gA("CtrlOrCmd+Shift+Right")]}),(0,hA.jsx)(HA,{label:L("labels.duplicateSelection"),shortcuts:[gA("CtrlOrCmd+D"),gA(`Alt+${L("helpDialog.drag")}`)]}),(0,hA.jsx)(HA,{label:L("helpDialog.toggleElementLock"),shortcuts:[gA("CtrlOrCmd+Shift+L")]}),(0,hA.jsx)(HA,{label:L("buttons.undo"),shortcuts:[gA("CtrlOrCmd+Z")]}),(0,hA.jsx)(HA,{label:L("buttons.redo"),shortcuts:b3?[gA("CtrlOrCmd+Y"),gA("CtrlOrCmd+Shift+Z")]:[gA("CtrlOrCmd+Shift+Z")]}),(0,hA.jsx)(HA,{label:L("labels.group"),shortcuts:[gA("CtrlOrCmd+G")]}),(0,hA.jsx)(HA,{label:L("labels.ungroup"),shortcuts:[gA("CtrlOrCmd+Shift+G")]}),(0,hA.jsx)(HA,{label:L("labels.flipHorizontal"),shortcuts:[gA("Shift+H")]}),(0,hA.jsx)(HA,{label:L("labels.flipVertical"),shortcuts:[gA("Shift+V")]}),(0,hA.jsx)(HA,{label:L("labels.showStroke"),shortcuts:[gA("S")]}),(0,hA.jsx)(HA,{label:L("labels.showBackground"),shortcuts:[gA("G")]}),(0,hA.jsx)(HA,{label:L("labels.showFonts"),shortcuts:[gA("Shift+F")]}),(0,hA.jsx)(HA,{label:L("labels.decreaseFontSize"),shortcuts:[gA("CtrlOrCmd+Shift+<")]}),(0,hA.jsx)(HA,{label:L("labels.increaseFontSize"),shortcuts:[gA("CtrlOrCmd+Shift+>")]})]})]})]})})};Q();var En=G(nA(),1);X();Ka();PI();Q();var Gp=G(nA(),1),dTA=2e3,EQA=()=>{let[A,e]=(0,Gp.useState)(null),t=(0,Gp.useRef)(0),o=()=>{clearTimeout(t.current),e("success"),t.current=window.setTimeout(()=>{e(null)},dTA)},i=(0,Gp.useCallback)(()=>{e(null)},[]);return{copyStatus:A,resetCopyStatus:i,onCopy:o}};Qt();Q();var VJ=G(_(),1),cD=({title:A,name:e,checked:t,onChange:o,disabled:i=!1})=>(0,VJ.jsx)("div",{className:iA("Switch",{toggled:t,disabled:i}),children:(0,VJ.jsx)("input",{name:e,id:e,title:A,type:"checkbox",checked:t,disabled:i,onChange:()=>o(!t),onKeyDown:a=>{a.key===" "&&o(!t)}})});var rt=G(_(),1),ETA=()=>(0,rt.jsxs)("div",{children:[(0,rt.jsx)("h3",{children:L("canvasError.cannotShowPreview")}),(0,rt.jsx)("p",{children:(0,rt.jsx)("span",{children:L("canvasError.canvasTooBig")})}),(0,rt.jsxs)("em",{children:["(",L("canvasError.canvasTooBigTip"),")"]})]}),QTA=({appStateSnapshot:A,elementsSnapshot:e,files:t,actionManager:o,onExportImage:i,name:a,exportWithDarkMode:r})=>{let n=Et(e,A),[g,s]=(0,En.useState)(a),[l,I]=(0,En.useState)(n),[c,C]=(0,En.useState)(A.exportBackground),[B,d]=(0,En.useState)(A.exportEmbedScene),[E,h]=(0,En.useState)(A.exportScale),p=(0,En.useRef)(null),u=(0,En.useRef)(0),[m,w]=(0,En.useState)(null),{onCopy:b,copyStatus:D,resetCopyStatus:S}=EQA();(0,En.useEffect)(()=>{S()},[g,c,r,E,B,S]);let{exportedElements:U,exportingFrame:v}=AE(e,A,l);return(0,En.useEffect)(()=>{let x=p.current;if(!x)return;let R=x.offsetWidth,W=x.offsetHeight;if(!R)return;let q=++u.current,T=()=>q!==u.current;return ac({elements:U,appState:{...A,name:g,exportBackground:c,exportWithDarkMode:r,exportScale:E,exportEmbedScene:B},files:t,exportPadding:BI,maxWidthOrHeight:Math.max(R,W),exportingFrame:v}).then(async F=>{if(!T()){try{await Ld(F)}catch(K){throw K.name==="CANVAS_POSSIBLY_TOO_BIG"?new Error(L("canvasError.canvasTooBig")):K}T()||(w(null),x.replaceChildren(F))}}).catch(F=>{T()||(console.error(F),w(F))}),()=>{u.current+=1}},[A,t,U,v,g,c,r,E,B]),(0,rt.jsxs)("div",{className:"ImageExportModal",children:[(0,rt.jsx)("h3",{children:L("imageExportDialog.header")}),(0,rt.jsxs)("div",{className:"ImageExportModal__preview",children:[(0,rt.jsx)("div",{className:"ImageExportModal__preview__canvas",ref:p,children:m&&(0,rt.jsx)(ETA,{})}),(0,rt.jsx)("div",{className:"ImageExportModal__preview__filename",children:!ag&&(0,rt.jsx)("input",{type:"text",className:"TextInput",value:g,style:{width:"30ch"},onChange:x=>{s(x.target.value),o.executeAction(z1,"ui",x.target.value)}})})]}),(0,rt.jsxs)("div",{className:"ImageExportModal__settings",children:[(0,rt.jsx)("h3",{children:L("imageExportDialog.header")}),n&&(0,rt.jsx)(CD,{label:L("imageExportDialog.label.onlySelected"),name:"exportOnlySelected",children:(0,rt.jsx)(cD,{name:"exportOnlySelected",checked:l,onChange:x=>{I(x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.withBackground"),name:"exportBackgroundSwitch",children:(0,rt.jsx)(cD,{name:"exportBackgroundSwitch",checked:c,onChange:x=>{C(x),o.executeAction(O1,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.darkMode"),name:"exportDarkModeSwitch",children:(0,rt.jsx)(cD,{name:"exportDarkModeSwitch",checked:r,onChange:x=>{o.executeAction(kgA,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.embedScene"),tooltip:L("imageExportDialog.tooltip.embedScene"),name:"exportEmbedSwitch",children:(0,rt.jsx)(cD,{name:"exportEmbedSwitch",checked:B,onChange:x=>{d(x),o.executeAction($S,"ui",x)}})}),(0,rt.jsx)(CD,{label:L("imageExportDialog.label.scale"),name:"exportScale",children:(0,rt.jsx)(IG,{name:"exportScale",value:E,onChange:x=>{h(x),o.executeAction(DgA,"ui",x)},choices:i3.map(x=>({value:x,label:`${x}\xD7`}))})}),(0,rt.jsxs)("div",{className:"ImageExportModal__settings__buttons",children:[(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.exportToPng"),onClick:()=>i(_D.png,U,{exportingFrame:v}),icon:JN,children:L("imageExportDialog.button.exportToPng")}),(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.exportToSvg"),onClick:()=>i(_D.svg,U,{exportingFrame:v}),icon:JN,children:L("imageExportDialog.button.exportToSvg")}),(du||uI)&&(0,rt.jsx)(yg,{className:"ImageExportModal__settings__buttons__button",label:L("imageExportDialog.title.copyPngToClipboard"),status:D,onClick:async()=>{await i(_D.clipboard,U,{exportingFrame:v}),b()},icon:Mh,children:L("imageExportDialog.button.copyPngToClipboard")})]})]})]})},CD=({label:A,children:e,tooltip:t,name:o})=>(0,rt.jsxs)("div",{className:"ImageExportModal__settings__setting",title:A,children:[(0,rt.jsxs)("label",{htmlFor:o,className:"ImageExportModal__settings__setting__label",children:[A,t&&(0,rt.jsx)(Jl,{label:t,long:!0,children:CoA})]}),(0,rt.jsx)("div",{className:"ImageExportModal__settings__setting__content",children:e})]}),QQA=({elements:A,appState:e,files:t,actionManager:o,onExportImage:i,onCloseRequest:a,name:r})=>{let[{appStateSnapshot:n,elementsSnapshot:g}]=(0,En.useState)(()=>({appStateSnapshot:Fr(e),elementsSnapshot:Fr(A)}));return(0,rt.jsx)(ei,{onCloseRequest:a,size:"wide",title:!1,children:(0,rt.jsx)(QTA,{elementsSnapshot:g,appStateSnapshot:n,files:t,actionManager:o,onExportImage:i,name:r,exportWithDarkMode:e.exportWithDarkMode})})};Q();var uQA=G(nA(),1);X();PI();Q();var hQA=G(_(),1),XJ={primary:{base:"var(--color-primary)",darker:"var(--color-primary-darker)",darkest:"var(--color-primary-darkest)"},lime:{base:"#74b816",darker:"#66a80f",darkest:"#5c940d"},pink:{base:"#d6336c",darker:"#c2255c",darkest:"#a61e4d"}},$J=({children:A,color:e})=>(0,hQA.jsx)("div",{className:"Card",style:{"--card-color":XJ[e].base,"--card-color-darker":XJ[e].darker,"--card-color-darkest":XJ[e].darkest},children:A});var Oi=G(_(),1),hTA=({elements:A,appState:e,setAppState:t,files:o,actionManager:i,exportOpts:a,canvas:r,onCloseRequest:n})=>{let{onExportToBackend:g}=a;return(0,Oi.jsx)("div",{className:"ExportDialog ExportDialog--json",children:(0,Oi.jsxs)("div",{className:"ExportDialog-cards",children:[a.saveFileToDisk&&(0,Oi.jsxs)($J,{color:"lime",children:[(0,Oi.jsx)("div",{className:"Card-icon",children:ctA}),(0,Oi.jsx)("h2",{children:L("exportDialog.disk_title")}),(0,Oi.jsxs)("div",{className:"Card-details",children:[L("exportDialog.disk_details"),!ag&&i.renderAction("changeProjectName")]}),(0,Oi.jsx)(PA,{className:"Card-button",type:"button",title:L("exportDialog.disk_button"),"aria-label":L("exportDialog.disk_button"),showAriaLabel:!0,onClick:()=>{i.executeAction(Jf,"ui")}})]}),g&&(0,Oi.jsxs)($J,{color:"pink",children:[(0,Oi.jsx)("div",{className:"Card-icon",children:$w}),(0,Oi.jsx)("h2",{children:L("exportDialog.link_title")}),(0,Oi.jsx)("div",{className:"Card-details",children:L("exportDialog.link_details")}),(0,Oi.jsx)(PA,{className:"Card-button",type:"button",title:L("exportDialog.link_button"),"aria-label":L("exportDialog.link_button"),showAriaLabel:!0,onClick:async()=>{try{ye("export","link",`ui (${AP()})`),await g(A,e,o),n()}catch(s){t({errorMessage:s.message})}}})]}),a.renderCustomUI&&a.renderCustomUI(A,e,o,r)]})})},pQA=({elements:A,appState:e,files:t,actionManager:o,exportOpts:i,canvas:a,setAppState:r})=>{let n=uQA.default.useCallback(()=>{r({openDialog:null})},[r]);return(0,Oi.jsx)(Oi.Fragment,{children:e.openDialog?.name==="jsonExport"&&(0,Oi.jsx)(ei,{onCloseRequest:n,title:L("buttons.export"),children:(0,Oi.jsx)(hTA,{elements:A,appState:e,setAppState:r,files:t,actionManager:o,onCloseRequest:n,exportOpts:i,canvas:a})})})};Q();var wQA=G(_(),1),mQA=A=>(0,wQA.jsx)(PA,{className:iA("ToolIcon__LaserPointer",{"is-mobile":A.isMobile}),type:"toggle",size:"small",icon:Rl,checked:A.checked,title:`${A.title}`,"aria-label":`${A.title}`,"data-testid":"toolbar-LaserPointer",onSelect:()=>A.onChange?.()});Q();var AT=G(nA(),1);X();Q();X();O();O();Qs();var GU=G(_(),1),Lt=A=>Array.isArray(A)?`<kbd>${A.map(gA).join(" + ")}</kbd>`:`<kbd>${gA(A)}</kbd>`,uTA=({appState:A,isMobile:e,editorInterface:t,app:o})=>{let{activeTool:i,isResizing:a,isRotating:r,lastPointerDownWith:n}=A,g=A.multiElement!==null;if(A.openSidebar?.name===Xi.name&&A.openSidebar.tab===EI&&A.searchMatches?.matches.length)return L("hints.dismissSearch",{shortcut:Lt("Escape")});if(A.openSidebar&&!t.canFitSidebar)return null;if(ig(A))return L("hints.eraserRevert",{shortcut:Lt("Alt")});let s=o.scene.getSelectedElements(A);if(A.selectedLinearElement?.isDragging&&s[0]?.type==="arrow")return L("hints.arrowBindModifiers",{shortcut_1:Lt("Ctrl"),shortcut_2:Lt("Alt")});if(i.type==="arrow"||i.type==="line")return g?L("hints.linearElementMulti",{shortcut_1:Lt("Escape"),shortcut_2:Lt("Enter")}):i.type==="arrow"?L("hints.arrowTool",{shortcut:Lt("A")}):L("hints.linearElement");if(i.type==="freedraw")return L("hints.freeDraw");if(i.type==="text")return L("hints.text");if(i.type==="embeddable")return L("hints.embeddable");if(i.type==="autoshape")return L("hints.autoshape");if(a&&n==="mouse"&&s.length===1){let l=s[0];return FA(l)&&l.points.length===2?L("hints.lockAngle",{shortcut:Lt("Shift")}):xe(l)?L("hints.resizeImage",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")}):L("hints.resize",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")})}if(r&&n==="mouse")return L("hints.rotate",{shortcut:Lt("Shift")});if(s.length===1&&cA(s[0]))return L("hints.text_selected",{shortcut:Lt("Enter")});if(A.editingTextElement)return L("hints.text_editing",{shortcut_1:Lt("Escape"),shortcut_2:Lt(["CtrlOrCmd","Enter"])});if(A.croppingElementId)return L("hints.leaveCropEditor",{shortcut_1:Lt("Enter"),shortcut_2:Lt("Escape")});if(s.length===1&&xe(s[0]))return L("hints.enterCropEditor",{shortcut:Lt("Enter")});if(i.type==="selection"){if(A.selectionElement&&!s.length&&!A.editingTextElement&&!A.selectedLinearElement?.isEditing)return L("hints.deepBoxSelect",{shortcut:Lt("CtrlOrCmd")});if(eB(o)&&A.selectedElementsAreBeingDragged)return L("hints.disableSnapping",{shortcut:Lt("CtrlOrCmd")});if(!s.length&&!e)return L("hints.canvasPanning",{shortcut_1:Lt(L("keys.mmb")),shortcut_2:Lt("Space")});if(s.length===1){if(FA(s[0]))return bA(s[0])&&A.selectedLinearElement?.elementId===s[0].id&&(A.selectedLinearElement.hoverPointIndex===0||A.selectedLinearElement.hoverPointIndex===s[0].points.length-1)?L("hints.toggleArrowhead"):A.selectedLinearElement?.isEditing?A.selectedLinearElement.selectedPointsIndices?L("hints.lineEditor_pointSelected",{shortcut_1:Lt("Delete"),shortcut_2:Lt(["CtrlOrCmd","D"])}):L("hints.lineEditor_nothingSelected",{shortcut_1:Lt("Shift"),shortcut_2:Lt("Alt")}):ke(s[0])?L("hints.lineEditor_line_info",{shortcut:Lt("Enter")}):L("hints.lineEditor_info",{shortcut_1:Lt("CtrlOrCmd"),shortcut_2:Lt(["CtrlOrCmd","Enter"])});if(!A.newElement&&!A.selectedElementsAreBeingDragged&&sl(s[0])){let l=L("hints.bindTextToElement",{shortcut:Lt("Enter")}),I=L("hints.createFlowchart",{shortcut:Lt(["CtrlOrCmd","\u2191\u2193"])});return FQ(s[0])?UZ(s[0],o.scene.getNonDeletedElementsMap())?[l,I]:[l,I]:l}}}return null},fQA=({appState:A,isMobile:e,editorInterface:t,app:o})=>{let i=uTA({appState:A,isMobile:e,editorInterface:t,app:o});if(!i)return null;let r=(Array.isArray(i)?i.map(n=>n.replace(/\. ?$/,"")).join(", "):i).split(/(<kbd>[^<]+<\/kbd>)/g).map((n,g)=>{if(g%2===1){let s=n[0]==="<"&&n.match(/^<kbd>([^<]+)<\/kbd>$/);return(0,GU.jsx)("kbd",{children:s?s[1]:n},g)}return n});return(0,GU.jsx)("div",{className:"HintViewer",children:(0,GU.jsx)("span",{children:r})})};Q();var DQA=G(_(),1),bQA=A=>(0,DQA.jsx)(PA,{className:iA("ToolIcon__lock",{"is-mobile":A.isMobile}),type:"toggle",icon:A.checked?Uh:Gd,checked:A.checked,disabled:A.disabled,title:`${A.title} \u2014 Q`,"aria-label":`${A.title}`,"data-testid":"toolbar-lock",onSelect:()=>A.onChange?.()});var Te=G(_(),1),pTA=({app:A,activeTool:e,setAppState:t})=>{let[o,i]=(0,AT.useState)(!1),a=mi()==="full",{TTDDialogTriggerTunnel:r}=Mt(),n=e.type==="frame",g=e.type==="autoshape",s=e.type==="laser",l=e.type==="bucketfill",I=a&&e.type==="lasso"&&A.state.preferredSelectionTool.type!=="lasso",c=e.type==="embeddable";return(0,Te.jsxs)(ae,{open:o,children:[(0,Te.jsx)(ae.Trigger,{className:iA("App-toolbar__extra-tools-trigger",{"App-toolbar__extra-tools-trigger--selected":n||c||a&&g||I||l||s&&!A.props.isCollaborating}),onToggle:()=>{i(!o),t({openMenu:null,openPopup:null})},title:L("toolBar.extraTools"),children:n?Fl:c?bC:a&&g?Rd:s&&!A.props.isCollaborating?Rl:I?qw:l?zr:xd}),(0,Te.jsxs)(ae.Content,{onClickOutside:()=>i(!1),onSelect:()=>i(!1),className:"App-toolbar__extra-tools-dropdown",children:[(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"frame"}),icon:Fl,shortcut:z.F.toLocaleUpperCase(),"data-testid":"toolbar-frame",selected:n,disabled:Ai(A,"frame"),children:L("toolBar.frame")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"embeddable"}),icon:bC,"data-testid":"toolbar-embeddable",selected:c,disabled:Ai(A,"embeddable"),children:L("toolBar.embeddable")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"autoshape"}),icon:Rd,shortcut:Nf("autoshape"),"data-testid":"toolbar-autoshape",selected:g,disabled:Ai(A,"autoshape"),children:L("toolBar.autoshape")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"laser"}),icon:Rl,"data-testid":"toolbar-laser",selected:s,shortcut:z.K.toLocaleUpperCase(),disabled:Ai(A,"laser"),children:L("toolBar.laser")}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"bucketfill"}),icon:zr,"data-testid":"toolbar-bucketfill",selected:l,shortcut:z.B.toLocaleUpperCase(),disabled:Ai(A,"bucketfill"),children:L("toolBar.bucketfill")}),a&&(0,Te.jsx)(ae.Item,{onSelect:()=>A.setActiveTool({type:"lasso"}),icon:qw,"data-testid":"toolbar-lasso",selected:I,disabled:Ai(A,"lasso"),children:L("toolBar.lasso")}),(0,Te.jsx)("div",{style:{margin:"6px 0",fontSize:14,fontWeight:600},children:"Generate"}),A.props.aiEnabled!==!1&&(0,Te.jsx)(r.Out,{}),(0,Te.jsx)(ae.Item,{onSelect:()=>A.setOpenDialog({name:"ttd",tab:"mermaid"}),icon:Nh,"data-testid":"toolbar-embeddable",children:L("toolBar.mermaidToExcalidraw")}),A.props.aiEnabled!==!1&&A.plugins.diagramToCode&&(0,Te.jsx)(ae.Item,{onSelect:()=>A.onMagicframeToolSelect(),icon:vd,"data-testid":"toolbar-magicframe",badge:(0,Te.jsx)(ae.Item.Badge,{children:"AI"}),disabled:Ai(A,"magicframe"),children:L("toolBar.magicframe")})]})]})},UU=({app:A,appState:e,setAppState:t,UIOptions:o,onPenModeToggle:i,onLockToggle:a,heading:r})=>{let n=Je(),g=mi()==="compact",[s,l]=(0,AT.useState)(!1),I=e.activeTool,c={app:A,activeTool:I};return(0,Te.jsxs)(ao,{padding:1,className:iA("App-toolbar",{"zen-mode":e.zenModeEnabled,"App-toolbar--compact":g}),"data-viewport-ui":"top",children:[(0,Te.jsx)(fQA,{appState:e,isMobile:n.formFactor==="phone",editorInterface:n,app:A}),r,(0,Te.jsxs)(bi.Row,{gap:g?.5:1,children:[!g&&(0,Te.jsx)(Vu,{checked:e.penMode,onChange:()=>i(null),title:L("toolBar.penMode"),penDetected:e.penDetected}),A.props.activeTool==null&&(0,Te.jsxs)(Te.Fragment,{children:[(0,Te.jsx)(bQA,{checked:e.activeTool.locked,onChange:a,title:L("toolBar.lock"),disabled:A.props.activeTool!=null}),(0,Te.jsx)("div",{className:"App-toolbar__divider",style:{marginRight:"0.25rem"}})]}),(0,Te.jsx)(TS,{...c,hideKeyBinding:!0}),g?(0,Te.jsx)(WS,{...c,setAppState:t}):e.preferredSelectionTool.type==="lasso"?(0,Te.jsx)(IgA,{...c}):(0,Te.jsx)(lgA,{...c}),(0,Te.jsx)(ogA,{...c}),(0,Te.jsx)(igA,{...c}),(0,Te.jsx)(agA,{...c}),(0,Te.jsx)(rgA,{...c}),(0,Te.jsx)(ngA,{...c}),g?(0,Te.jsx)(_S,{...c}):(0,Te.jsx)(ggA,{...c}),(0,Te.jsx)(PS,{...c}),o.tools?.image!==!1&&(0,Te.jsx)(rG,{app:A,open:s,onToggle:()=>l(!s),onClose:()=>l(!1)}),(0,Te.jsx)(ZS,{...c}),(0,Te.jsx)("div",{className:"App-toolbar__divider",style:{marginLeft:"0.25rem"}}),(0,Te.jsx)(pTA,{app:A,activeTool:I,setAppState:t})]})]})};Q();O();O();Qt();var Ut=G(_(),1),yQA=({appState:A,elements:e,actionManager:t,setAppState:o,onLockToggle:i,onPenModeToggle:a,renderTopRightUI:r,renderCustomStats:n,renderSidebars:g,editorInterface:s,renderWelcomeScreen:l,UIOptions:I,app:c})=>{let{WelcomeScreenCenterTunnel:C,MainMenuTunnel:B,DefaultSidebarTriggerTunnel:d}=Mt(),E=()=>{let p=A.stats.open&&!A.zenModeEnabled&&!A.viewModeEnabled;return(0,Ut.jsxs)(ju,{side:"top",className:"App-top-bar",sidepanelOpen:!!A.openSidebar,children:[l&&(0,Ut.jsx)(C.Out,{}),(0,Ut.jsx)(aB,{heading:"shapes",children:u=>(0,Ut.jsx)(bi.Col,{gap:4,align:"center",children:(0,Ut.jsxs)(bi.Row,{gap:1,className:"App-toolbar-container",children:[(0,Ut.jsx)(UU,{app:c,appState:A,setAppState:o,UIOptions:I,onPenModeToggle:a,onLockToggle:i,heading:u}),(0,Ut.jsxs)("div",{className:"tray-misc-tools-container",style:document.body?.classList.contains("mod-rtl")?{right:"inherit",left:"calc(var(--editor-container-padding) * -1)"}:void 0,children:[!A.viewModeEnabled&&r?.(s.formFactor==="phone",A),!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&(0,Ut.jsx)(d.Out,{})]})]})})}),(0,Ut.jsx)("div",{className:iA("layer-ui__wrapper__top-right zen-mode-transition",{"transition-right":A.zenModeEnabled}),style:{marginRight:"4rem"},children:p&&(0,Ut.jsx)(_l,{app:c,onClose:()=>{t.executeAction(pg)},renderCustomStats:n})})]})},h=()=>{if(A.viewModeEnabled)return;if(A.openDialog?.name==="elementLinkSelector")return(0,Ut.jsx)("div",{className:"App-toolbar-content",children:(0,Ut.jsx)(B.Out,{})});let p=Bd(A,_A(e)),u=Et(_A(e),A);return(0,Ut.jsxs)("div",{className:"App-toolbar-content",children:[(0,Ut.jsx)(B.Out,{}),p?t.renderAction("toggleTrayEditMenu"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),u||A.multiElement?t.renderAction(A.multiElement?"finalize":"duplicateSelection"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),u?t.renderAction("deleteSelectedElements"):(0,Ut.jsx)("div",{className:"ToolIcon__icon","aria-hidden":"true"}),(0,Ut.jsxs)("div",{children:[t.renderAction("undo"),t.renderAction("redo")]})]})};return(0,Ut.jsxs)(Ut.Fragment,{children:[g(),!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&E(),(0,Ut.jsxs)("div",{className:"App-bottom-bar",style:{marginBottom:qa+Mn,marginLeft:qa+Mn*2,marginRight:qa+Mn*2},children:[(0,Ut.jsxs)(ao,{padding:0,children:[A.openMenu==="shape"&&!A.viewModeEnabled&&A.openDialog?.name!=="elementLinkSelector"&&Bd(A,e)?(0,Ut.jsx)(aB,{className:"App-tray-menu",heading:"selectedShapeActions",style:{maxHeight:c.state.height*.8},children:(0,Ut.jsx)(Sx,{appState:A,elementsMap:c.scene.getNonDeletedElementsMap(),renderAction:t.renderAction,app:c})}):null,(0,Ut.jsxs)("footer",{className:"App-toolbar",children:[h(),A.scrolledOutside&&!A.openMenu&&!A.openSidebar&&(0,Ut.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{o(p=>({...Bs(e,p)}))},children:L("buttons.scrollBackToContent")})]})]}),(0,Ut.jsx)(ao,{padding:1,style:{marginLeft:"4px"},children:(0,Ut.jsx)(xx,{renderAction:t.renderAction,trayMode:!0})})]})]})};var MA=G(_(),1),mTA=({UIOptions:A})=>(0,MA.jsxs)(ya,{__fallback:!0,children:[(0,MA.jsx)(ya.DefaultItems.LoadScene,{}),(0,MA.jsx)(ya.DefaultItems.SaveToActiveFile,{}),A.canvasActions.export&&(0,MA.jsx)(ya.DefaultItems.Export,{}),A.canvasActions.saveAsImage&&(0,MA.jsx)(ya.DefaultItems.SaveAsImage,{}),(0,MA.jsx)(ya.DefaultItems.SearchMenu,{}),(0,MA.jsx)(ya.DefaultItems.Help,{}),(0,MA.jsx)(ya.DefaultItems.ClearCanvas,{}),(0,MA.jsx)(ya.Separator,{}),(0,MA.jsx)(ya.Group,{title:"Excalidraw links",children:(0,MA.jsx)(ya.DefaultItems.Socials,{})}),(0,MA.jsx)(ya.Separator,{}),(0,MA.jsx)(ya.DefaultItems.ToggleTheme,{allowSystemTheme:!1}),(0,MA.jsx)(ya.DefaultItems.ChangeCanvasBackground,{})]}),wTA=()=>(0,MA.jsxs)(BG,{__fallback:!0,children:[(0,MA.jsx)(BG.Actions.SaveToDisk,{}),(0,MA.jsx)(BG.Actions.ExportToImage,{})]}),fTA=({actionManager:A,appState:e,files:t,setAppState:o,elements:i,canvas:a,onLockToggle:r,onPenModeToggle:n,showExitZenModeBtn:g,renderTopLeftUI:s,renderTopRightUI:l,renderCustomStats:I,UIOptions:c,onExportImage:C,renderWelcomeScreen:B,children:d,app:E,defaultUIEnabled:h,zoomUIEnabled:p,scrollBackToContentUIEnabled:u,isCollaborating:m,generateLinkForSelection:w,currentUserControls:b})=>{let D=Je(),S=Da(),v=mi()==="compact",x=NIA(),R=v?{menuTopGap:4,toolbarColGap:4,toolbarRowGap:1,toolbarInnerRowGap:.5,islandPadding:1,collabMarginLeft:8}:{menuTopGap:6,toolbarColGap:4,toolbarRowGap:1,toolbarInnerRowGap:1,islandPadding:1,collabMarginLeft:8},W=x.tunnelsJotai.Provider,[q,T]=ne(en),F=()=>c.canvasActions.export?(0,MA.jsx)(pQA,{elements:i,appState:e,files:t,actionManager:A,exportOpts:c.canvasActions.export,canvas:a,setAppState:o}):null,K=()=>!c.canvasActions.saveAsImage||e.openDialog?.name!=="imageExport"?null:(0,MA.jsx)(QQA,{elements:i,appState:e,files:t,actionManager:A,onExportImage:C,onCloseRequest:()=>o({openDialog:null}),name:E.getName()}),N=()=>(0,MA.jsxs)("div",{style:{position:"relative"},children:[(0,MA.jsxs)("div",{className:"excalidraw-ui-top-left",children:[s?.(!1,e),(0,MA.jsx)(x.MainMenuTunnel.Out,{})]}),B&&(0,MA.jsx)(x.WelcomeScreenMenuHintTunnel.Out,{})]}),J=()=>(0,MA.jsx)(aB,{heading:"selectedShapeActions",className:iA("selected-shape-actions zen-mode-transition",{"transition-left":e.zenModeEnabled}),children:v?(0,MA.jsx)(ao,{className:iA("compact-shape-actions-island"),padding:0,"data-viewport-ui":"side","data-viewport-ui-name":"stylesPanel",style:{maxHeight:`${e.height-166}px`},children:(0,MA.jsx)(jsA,{appState:e,elementsMap:E.scene.getNonDeletedElementsMap(),renderAction:A.renderAction,app:E,setAppState:o})}):(0,MA.jsx)(ao,{className:wt.SHAPE_ACTIONS_MENU,padding:2,style:{maxHeight:`${e.height-166}px`},"data-viewport-ui":"side","data-viewport-ui-name":"stylesPanel",children:(0,MA.jsx)(Sx,{appState:e,elementsMap:E.scene.getNonDeletedElementsMap(),renderAction:A.renderAction,app:E})})}),H=()=>{let he=h&&Bd(e,i);if(e.viewModeEnabled)return null;let ce=h&&e.stats.open&&!e.zenModeEnabled&&!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector";return(0,MA.jsx)(ju,{side:"top",sidepanelOpen:!!e.openSidebar,children:(0,MA.jsxs)("div",{className:"App-menu App-menu_top",children:[(0,MA.jsxs)(bi.Col,{gap:R.menuTopGap,className:iA("App-menu_top__left"),children:[N(),h&&(0,MA.jsx)("div",{className:iA("selected-shape-actions-container",{"selected-shape-actions-container--compact":v}),children:he&&J()}),h&&v&&!e.viewModeEnabled&&he&&(0,MA.jsx)(Vu,{checked:e.penMode,onChange:()=>n(null),title:L("toolBar.penMode"),isMobile:!0,penDetected:e.penDetected})]}),h&&!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(0,MA.jsx)(aB,{heading:"shapes",className:"shapes-section",children:oe=>(0,MA.jsxs)("div",{style:{position:"relative"},children:[B&&(0,MA.jsx)(x.WelcomeScreenToolbarHintTunnel.Out,{}),(0,MA.jsx)(bi.Col,{gap:R.toolbarColGap,align:"start",children:(0,MA.jsxs)(bi.Row,{gap:R.toolbarRowGap,className:iA("App-toolbar-container",{"zen-mode":e.zenModeEnabled}),children:[(0,MA.jsx)(UU,{app:E,appState:e,setAppState:o,UIOptions:c,onPenModeToggle:n,onLockToggle:r,heading:oe}),m&&(0,MA.jsx)(ao,{style:{marginLeft:R.collabMarginLeft,alignSelf:"center",height:"fit-content"},children:(0,MA.jsx)(mQA,{title:L("toolBar.laser"),checked:e.activeTool.type===po.laser,onChange:()=>E.setActiveTool({type:po.laser}),isMobile:!0})})]})})]})}),(0,MA.jsxs)("div",{className:iA("mobile-misc-tools-container zen-mode-transition",{"transition-right":e.zenModeEnabled,"layer-ui__wrapper__top-right--compact":v}),style:document.body?.classList.contains("mod-rtl")?{right:"inherit",left:"calc(var(--editor-container-padding) * -1)"}:void 0,children:[h&&e.collaborators.size>0&&(0,MA.jsx)(gG,{collaborators:e.collaborators,userToFollow:S.userToFollow?.socketId||null,currentUserControls:b}),!e.viewModeEnabled&&l?.(aA,e),!e.viewModeEnabled&&e.openDialog?.name!=="elementLinkSelector"&&(!OA||e.openSidebar?.name!==Xi.name)&&(0,MA.jsx)(x.DefaultSidebarTriggerTunnel.Out,{}),ce&&(0,MA.jsx)(_l,{app:E,onClose:()=>{A.executeAction(pg)},renderCustomStats:I})]})]})})},j=D.formFactor==="phone"?sm("phone"):null,AA=!(e.viewModeEnabled||e.zenModeEnabled)&&(!j&&D.desktopUIMode==="tray"||j==="tray"),aA=j==="mobile",lA=AA||aA,uA=()=>h?(0,MA.jsx)(pb,{__fallback:!0,onDock:he=>{ye("sidebar",`toggleDock (${he?"dock":"undock"})`,`(${aA?"mobile":"desktop"})`)}}):null,OA=j0(hb),xA=!!(e.openSidebar&&OA&&D.canFitSidebar),pe=(0,MA.jsxs)(MA.Fragment,{children:[d,h&&(0,MA.jsxs)(MA.Fragment,{children:[(0,MA.jsx)(mTA,{UIOptions:c}),(0,MA.jsx)(pb.Trigger,{__fallback:!0,icon:zoA,title:$i(L("toolBar.library")),onToggle:he=>{he&&ye("sidebar",`${Xi.name} (open)`,`button (${aA?"mobile":"desktop"})`)},tab:Xi.defaultTab})]}),(0,MA.jsx)(wTA,{}),e.openDialog?.name==="ttd"&&(0,MA.jsx)(ID,{__fallback:!0}),h&&e.isLoading&&(0,MA.jsx)(aG,{delay:250}),h&&e.errorMessage&&(0,MA.jsx)(CQA,{onClose:()=>o({errorMessage:null}),children:e.errorMessage}),h&&q&&D.formFactor!=="phone"&&(0,MA.jsx)(dnA,{colorPickerType:q.colorPickerType,onCancel:()=>{T(null)},onChange:(he,ce,oe,{altKey:me})=>{if(!(he!=="elementBackground"&&he!=="elementStroke"))if(oe.length){for(let We of oe)it(We,QA(i),{[me&&q.swapPreviewOnAlt?he==="elementBackground"?"strokeColor":"backgroundColor":he==="elementBackground"?"backgroundColor":"strokeColor"]:ce}),It.delete(We);E.scene.triggerUpdate()}else o(he==="elementBackground"?{currentItemBackgroundColor:ce}:{currentItemStrokeColor:ce})},onSelect:(he,ce)=>{T(oe=>oe?.keepOpenOnAlt&&ce.altKey?oe:null),q?.onSelect?.(he,ce)}}),e.openDialog?.name==="help"&&(0,MA.jsx)(dQA,{onClose:()=>{o({openDialog:null})}}),(0,MA.jsx)(tlA,{}),h&&e.openDialog?.name==="elementLinkSelector"&&(0,MA.jsx)(cQA,{sourceElementId:e.openDialog.sourceElementId,onClose:()=>{o({openDialog:null})},scene:E.scene,appState:e,generateLinkForSelection:w}),(0,MA.jsx)(x.OverwriteConfirmDialogTunnel.Out,{}),K(),F(),h&&e.openDialog?.name==="charts"&&(0,MA.jsx)(BcA,{data:e.openDialog.data,rawText:e.openDialog.rawText,onClose:()=>o({openDialog:null})}),AA&&(0,MA.jsx)(yQA,{app:E,appState:e,elements:i,actionManager:A,renderJSONExportDialog:F,renderImageExportDialog:K,setAppState:o,onLockToggle:r,onPenModeToggle:n,renderTopRightUI:l,renderCustomStats:I,renderSidebars:uA,editorInterface:D,renderWelcomeScreen:B,UIOptions:c}),aA&&(0,MA.jsx)(CcA,{app:E,appState:e,elements:i,actionManager:A,renderJSONExportDialog:F,renderImageExportDialog:K,setAppState:o,onPenModeToggle:n,renderTopLeftUI:s,renderTopRightUI:l,renderSidebars:uA,renderWelcomeScreen:B,defaultUIEnabled:h,scrollBackToContentUIEnabled:u}),!lA&&(0,MA.jsxs)(MA.Fragment,{children:[S.viewportStatusFrame?.border&&(0,MA.jsx)(AG,{border:S.viewportStatusFrame.border,style:xA?{right:"calc(var(--right-sidebar-width) - var(--space-factor) * 2)"}:void 0}),(0,MA.jsxs)("div",{className:"layer-ui__wrapper",children:[B&&(0,MA.jsx)(x.WelcomeScreenCenterTunnel.Out,{}),H(),(0,MA.jsx)(hcA,{appState:e,actionManager:A,showExitZenModeBtn:g,renderWelcomeScreen:B,defaultUIEnabled:h,zoomUIEnabled:p}),(e.toast||u&&e.scrolledOutside||S.viewportStatusFrame?.label)&&(0,MA.jsxs)("div",{className:"floating-status-stack",children:[e.toast&&(0,MA.jsx)(OS,{message:e.toast.message,onClose:()=>o({toast:null}),duration:e.toast.duration,closable:e.toast.closable}),!e.toast&&u&&e.scrolledOutside&&(0,MA.jsx)("button",{type:"button",className:"scroll-back-to-content",onClick:()=>{o(he=>({...Bs(i,he)}))},children:L("buttons.scrollBackToContent")}),S.viewportStatusFrame?.label&&(0,MA.jsx)(eG,{label:S.viewportStatusFrame.label,border:S.viewportStatusFrame.border})]})]}),uA()]})]});return(0,MA.jsx)(S1.Provider,{value:e,children:(0,MA.jsx)(W,{children:(0,MA.jsx)(iH.Provider,{value:x,children:pe})})})},kQA=A=>{let{cursorButton:e,scrollX:t,scrollY:o,shouldCacheIgnoreZoom:i,snapLines:a,originSnapOffset:r,suggestedBinding:n,frameToHighlight:g,elementsToHighlight:s,...l}=A;return l},bTA=(A,e)=>{if(A.children!==e.children)return!1;let{canvas:t,appState:o,...i}=A,{canvas:a,appState:r,...n}=e;return Tt(kQA(o),kQA(r),{selectedElementIds:Tt,selectedGroupIds:Tt})&&Tt(i,n)},SQA=LQA.default.memo(fTA,bTA);Q();var xQA=G(_(),1),FU=A=>(0,xQA.jsx)(PA,{className:iA("ToolIcon__MagicButton",{"is-mobile":A.isMobile}),type:"toggle",size:"small",icon:A.icon,checked:A.checked,title:`${A.title}`,"aria-label":`${A.title}`,onSelect:()=>A.onChange?.()});Q();var RU=G(nA(),1);var eT=G(_(),1),GQA=({trails:A})=>{let e=(0,RU.useRef)(null);return(0,RU.useEffect)(()=>{if(e.current)for(let t of A)t.start(e.current);return()=>{for(let t of A)t.stop()}},A),(0,eT.jsx)("div",{className:"SVGLayer",children:(0,eT.jsx)("svg",{ref:e})})};Q();Q();var _E=G(nA(),1);X();Q();VA();X();O();O();O();O();Q();VA();X();var DTA="#ff6b6b",yTA="#ff0000",UQA=1,FQA=2,RQA=(A,e)=>{if(!e.snapLines.length)return;let t=e.theme===EA.LIGHT||e.zenModeEnabled?DTA:yTA,o=(e.zenModeEnabled?UQA*1.5:UQA)/e.zoom.value;A.save(),A.translate(e.scrollX,e.scrollY);for(let i of e.snapLines)i.type==="pointer"?(A.lineWidth=o,A.strokeStyle=t,LTA(i,A,e)):i.type==="gap"?(A.lineWidth=o,A.strokeStyle=t,STA(i.points[0],i.points[1],i.direction,e,A)):i.type==="points"&&(A.lineWidth=o,A.strokeStyle=t,kTA(i,A,e));A.restore()},kTA=(A,e,t)=>{if(!t.zenModeEnabled){let o=A.points[0],i=A.points[A.points.length-1];Yg(o,i,e)}for(let o of A.points)vQA(o,t,e)},LTA=(A,e,t)=>{vQA(A.points[0],t,e),t.zenModeEnabled||Yg(A.points[0],A.points[1],e)},vQA=([A,e],t,o)=>{o.save();let i=(t.zenModeEnabled?FQA*1.5:FQA)/t.zoom.value;o.beginPath(),o.moveTo(A-i,e-i),o.lineTo(A+i,e+i),o.moveTo(A+i,e-i),o.lineTo(A-i,e+i),o.stroke(),o.restore()},Yg=(A,e,t)=>{t.beginPath(),t.lineTo(A[0],A[1]),t.lineTo(e[0],e[1]),t.stroke()},STA=(A,e,t,o,i)=>{let a=8/o.zoom.value,r=a/2,n=a/4;if(t==="horizontal"){let g=[(A[0]+e[0])/2,A[1]];o.zenModeEnabled||Yg(k(A[0],A[1]-a),k(A[0],A[1]+a),i),Yg(k(g[0]-n,g[1]-r),k(g[0]-n,g[1]+r),i),Yg(k(g[0]+n,g[1]-r),k(g[0]+n,g[1]+r),i),o.zenModeEnabled||(Yg(k(e[0],e[1]-a),k(e[0],e[1]+a),i),Yg(A,e,i))}else{let g=[A[0],(A[1]+e[1])/2];o.zenModeEnabled||Yg(k(A[0]-a,A[1]),k(A[0]+a,A[1]),i),Yg(k(g[0]-r,g[1]-n),k(g[0]+r,g[1]-n),i),Yg(k(g[0]-r,g[1]+n),k(g[0]+r,g[1]+n),i),o.zenModeEnabled||(Yg(k(e[0]-a,e[1]),k(e[0]+a,e[1]),i),Yg(A,e,i))}};Dk();var xTA=(A,e)=>{UA(e.selectedLinearElement,"selectedLinearElement is null");let{segmentMidPointHoveredCoords:t}=e.selectedLinearElement;UA(t,"midPointCoords is null"),vU(t,A,e)},GTA=(A,e,t)=>{let{elementId:o,hoverPointIndex:i}=e.selectedLinearElement;if(e.selectedLinearElement?.isEditing&&e.selectedLinearElement?.selectedPointsIndices?.includes(i)||e.selectedLinearElement?.isDragging)return;let a=rA.getElement(o,t);if(!a)return;let r=rA.getPointAtIndexGlobalCoordinates(a,i,t);vU(r,A,e)},vU=(A,e,t)=>{e.save(),e.translate(t.scrollX,t.scrollY),e.fillStyle="rgba(105, 101, 219, 0.4)",vw(e,A[0],A[1],rA.POINT_HANDLE_SIZE/t.zoom.value,!1),e.restore()},UTA=(A,e,t)=>{let{elementId:o,anchor:i}=e.hoveredArrowTextAnchor,a=t.get(o);if(!a||!bA(a)||a.isDeleted)return;let r=i==="label"?rA.getBoundTextElementCenter(a,t):rA.getPointAtIndexGlobalCoordinates(a,i==="start"?0:-1,t);vU(r,A,e)},tT=(A,e,t,o,i,a,r)=>{A.strokeStyle="#5e5ad8",A.setLineDash([]),A.fillStyle="rgba(255, 255, 255, 0.9)",i?A.fillStyle="rgba(134, 131, 226, 0.9)":a&&(A.fillStyle="rgba(177, 151, 252, 0.7)"),vw(A,t[0],t[1],(r?o*(e.selectedLinearElement?.isEditing?1.5:2):o)/e.zoom.value,!a,!r||i)},FTA=(A,e,t,o,i,a=!1)=>{let r=e.element.frameId&&t.get(e.element.frameId);if(r&&mA(r)){A.translate(r.x,r.y);let n=tl(o.viewBackgroundColor);A.fillStyle=n??"rgba(0,0,0,.05)",A.beginPath(),fe.radius&&A.roundRect?A.roundRect(-1,-1,r.width+1,r.height+1,fe.radius/o.zoom.value):A.rect(-1,-1,r.width+1,r.height+1),A.clip(),A.translate(-r.x,-r.y)}switch(e.element.type){case"magicframe":case"frame":A.save();let n=tl(o.viewBackgroundColor);A.translate(e.element.x,e.element.y),A.lineWidth=1.5*fe.strokeWidth/o.zoom.value,A.strokeStyle=n??(o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)"),fe.radius&&A.roundRect?(A.beginPath(),A.roundRect(0,0,e.element.width,e.element.height,fe.radius/o.zoom.value),A.stroke(),A.closePath()):A.strokeRect(0,0,e.element.width,e.element.height),A.restore();break;default:A.save();let g=tl(o.viewBackgroundColor),s=ze(e.element,t);switch(A.translate(s[0],s[1]),A.rotate(e.element.angle),A.translate(-s[0],-s[1]),A.translate(e.element.x,e.element.y),A.lineWidth=1.5*zA(1.75,e.element.strokeWidth,10)/Math.max(.25,o.zoom.value),A.strokeStyle=g??(o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)"),e.element.type){case"ellipse":A.beginPath(),A.ellipse(e.element.width/2,e.element.height/2,e.element.width/2,e.element.height/2,0,0,2*Math.PI),A.closePath(),A.stroke();break;case"diamond":{let[l,I]=as(e.element);l.forEach(c=>{A.beginPath(),A.moveTo(c[0][0]-e.element.x,c[0][1]-e.element.y),A.lineTo(c[1][0]-e.element.x,c[1][1]-e.element.y),A.stroke()}),I.forEach(c=>{let[C,B,d,E]=c;A.beginPath(),A.moveTo(C[0]-e.element.x,C[1]-e.element.y),A.bezierCurveTo(B[0]-e.element.x,B[1]-e.element.y,d[0]-e.element.x,d[1]-e.element.y,E[0]-e.element.x,E[1]-e.element.y),A.stroke()})}break;default:{let[l,I]=ll(e.element);l.forEach(c=>{A.beginPath(),A.moveTo(c[0][0]-e.element.x,c[0][1]-e.element.y),A.lineTo(c[1][0]-e.element.x,c[1][1]-e.element.y),A.stroke()}),I.forEach(c=>{let[C,B,d,E]=c;A.beginPath(),A.moveTo(C[0]-e.element.x,C[1]-e.element.y),A.bezierCurveTo(B[0]-e.element.x,B[1]-e.element.y,d[0]-e.element.x,d[1]-e.element.y,E[0]-e.element.x,E[1]-e.element.y),A.stroke()})}break}A.restore();break}if(o.isMidpointSnappingEnabled&&!o.gridModeEnabled&&!a&&(mA(e.element)||bt(e.element))){let n=o.selectedLinearElement,g=n?.elementId&&rA.getElement(n?.elementId,t),s=i&&Aa({point:i,element:e.element,elementsMap:t,threshold:0,overrideShouldTestInside:!0}),l=g&&kA(g)||o.activeTool.type==="arrow"&&o.currentItemArrowType==="elbow";if(!s||l){A.save();let I=ze(e.element,t),c;if(e.element.type==="diamond"){let E=ze(e.element,t);c=Zy(e.element).map(h=>{let p=wn(h,.5),u=$(p,E,e.element.angle);return k(u[0],u[1])})}else c=[{x:e.element.width,y:e.element.height/2},{x:e.element.width/2,y:e.element.height},{x:0,y:e.element.height/2},{x:e.element.width/2,y:0}].map(h=>{let p=k(h.x+e.element.x,h.y+e.element.y),u=$(p,I,e.element.angle);return k(u[0],u[1])});let C=i&&c.reduce((E,h,p)=>{let u=ZA(h,i);return p===-1||u<E.distance?{idx:p,distance:u}:E},{idx:-1,distance:1/0}),B=4/o.zoom.value,d=Mi(o.zoom)+e.element.strokeWidth/2;c.forEach((E,h)=>{let p=(!s||l)&&C?.idx===h&&C.distance<=d,u=!p&&(l||h===C?.idx&&C.distance<=d*2);p?(A.fillStyle=o.theme===EA.DARK?"rgba(3, 93, 161, 1)":"rgba(106, 189, 252, 1)",A.beginPath(),A.arc(E[0],E[1],B,0,2*Math.PI),A.fill()):u&&(A.fillStyle=o.theme===EA.DARK?"rgba(0, 0, 0, 0.8)":"rgba(65, 65, 65, 0.5)",A.beginPath(),A.arc(E[0],E[1],B,0,2*Math.PI),A.fill())}),A.restore()}}},RTA=(A,e,t,o,i,a,r)=>{let n=A.state.bindMode==="orbit"&&A.bindModeHandler!==null,g=Rc-(r?.runtime??(n?0:Rc)),s=zA(1/Rc*g,1e-4,1),l=t.strokeWidth/2,I=t.frameId&&o.get(t.frameId);switch(I&&mA(I)&&(e.translate(I.x,I.y),e.beginPath(),fe.radius&&e.roundRect?e.roundRect(-1,-1,I.width+1,I.height+1,fe.radius/i.zoom.value):e.rect(-1,-1,I.width+1,I.height+1),e.clip(),e.translate(-I.x,-I.y)),t.type){case"magicframe":case"frame":e.save(),e.translate(t.x,t.y);let C=tl(i.viewBackgroundColor,s);e.lineWidth=1.5*fe.strokeWidth/i.zoom.value,e.strokeStyle=C??(i.theme===EA.DARK?`rgba(3, 93, 161, ${s})`:`rgba(106, 189, 252, ${s})`),fe.radius&&e.roundRect?(e.beginPath(),e.roundRect(0,0,t.width,t.height,fe.radius/i.zoom.value),e.stroke(),e.closePath()):e.strokeRect(0,0,t.width,t.height),e.restore();break;default:e.save();let B=ze(t,o),d=B[0]+i.scrollX,E=B[1]+i.scrollY;e.translate(d,E),e.rotate(t.angle),e.translate(-d,-E),e.translate(t.x+i.scrollX-l,t.y+i.scrollY-l);let h=tl(i.viewBackgroundColor,s/2);switch(e.lineWidth=1.5*zA(2.5,t.strokeWidth*1.75,10)/Math.max(.25,i.zoom.value),e.strokeStyle=h??(i.theme===EA.DARK?`rgba(3, 93, 161, ${s/2})`:`rgba(106, 189, 252, ${s/2})`),t.type){case"ellipse":e.beginPath(),e.ellipse((t.width+l*2)/2,(t.height+l*2)/2,(t.width+l*2)/2,(t.height+l*2)/2,0,0,2*Math.PI),e.closePath(),e.stroke();break;case"diamond":{let[p,u]=as(t,l);p.forEach(m=>{e.beginPath(),e.moveTo(m[0][0]-t.x+l,m[0][1]-t.y+l),e.lineTo(m[1][0]-t.x+l,m[1][1]-t.y+l),e.stroke()}),u.forEach(m=>{let[w,b,D,S]=m;e.beginPath(),e.moveTo(w[0]-t.x+l,w[1]-t.y+l),e.bezierCurveTo(b[0]-t.x+l,b[1]-t.y+l,D[0]-t.x+l,D[1]-t.y+l,S[0]-t.x+l,S[1]-t.y+l),e.stroke()})}break;default:{let[p,u]=ll(t,l);p.forEach(m=>{e.beginPath(),e.moveTo(m[0][0]-t.x+l,m[0][1]-t.y+l),e.lineTo(m[1][0]-t.x+l,m[1][1]-t.y+l),e.stroke()}),u.forEach(m=>{let[w,b,D,S]=m;e.beginPath(),e.moveTo(w[0]-t.x+l,w[1]-t.y+l),e.bezierCurveTo(b[0]-t.x+l,b[1]-t.y+l,D[0]-t.x+l,D[1]-t.y+l,S[0]-t.x+l,S[1]-t.y+l),e.stroke()})}break}e.restore();break}if(!n||(r?.runtime??0)>Rc)return;let c=.5*(Math.min(t.width,t.height)/2);if(!mA(t)){e.save(),e.translate(t.x+i.scrollX,t.y+i.scrollY);let C=1/Rc*g;e.strokeStyle="rgba(0, 0, 0, 0.2)",e.lineWidth=1/i.zoom.value,e.setLineDash([4/i.zoom.value,4/i.zoom.value]),e.lineDashOffset=-C*10/i.zoom.value,e.beginPath(),e.ellipse(t.width/2,t.height/2,c,c,0,0,2*Math.PI),e.stroke();let B=tl(i.viewBackgroundColor);if(e.fillStyle=B??"rgba(128,128,128,.1)",e.beginPath(),e.ellipse(t.width/2,t.height/2,c*(1-s),c*(1-s),0,0,2*Math.PI),e.fill(),e.restore(),i.isMidpointSnappingEnabled&&!i.gridModeEnabled&&(!A.lastPointerMoveEvent||!Ra(A.lastPointerMoveEvent))){e.save(),e.translate(t.x+i.scrollX,t.y+i.scrollY);let d=5/i.zoom.value,E=5/i.zoom.value,h=d+E,p;if(t.type==="diamond"){let[,u]=as(t),m=ze(t,o);p=u.map(w=>{let b=wn(w,.5),D=$(b,m,t.angle);return{x:D[0]-t.x,y:D[1]-t.y}})}else{let u=ze(t,o);p=[{x:t.width/2,y:0},{x:t.width,y:t.height/2},{x:t.width/2,y:t.height},{x:0,y:t.height/2}].map(w=>{let b=k(w.x+t.x,w.y+t.y),D=$(b,u,t.angle);return{x:D[0]-t.x,y:D[1]-t.y}})}p.forEach(u=>{e.clearRect(u.x-h,u.y-h,h*2,h*2)}),e.fillStyle=i.theme===EA.DARK?`rgba(3, 93, 161, ${s})`:`rgba(106, 189, 252, ${s})`,p.forEach(u=>{e.beginPath(),e.arc(u.x,u.y,d,0,2*Math.PI),e.fill()}),e.restore()}}return{runtime:(r?.runtime??0)+a}},vTA=(A,e,t,o,i,a,r)=>{if(t===null)return;if(ii("COMPLEX_BINDINGS"))return RTA(A,e,t.element,o,i,a,r);e.save(),e.translate(i.scrollX,i.scrollY);let n=A.lastPointerMoveCoords?k(A.lastPointerMoveCoords.x,A.lastPointerMoveCoords.y):null,g=!!A.lastPointerMoveEvent&&Ra(A.lastPointerMoveEvent);FTA(e,t,o,i,n,g),e.restore()},HQA=(A,e,t)=>{let{angle:o,x1:i,y1:a,x2:r,y2:n,selectionColors:g,cx:s,cy:l,dashed:I,activeEmbeddable:c}=t,C=r-i,B=n-a,E=(t.padding??Wn*2)/e.zoom.value,h=8/e.zoom.value,p=4/e.zoom.value;A.save(),A.translate(e.scrollX,e.scrollY);let u=c||e.highlightSearchResult;A.lineWidth=(u?4:1.5)/e.zoom.value;let m=g.length;for(let w=0;w<m;++w)A.strokeStyle=g[w],I&&A.setLineDash([h,p+(h+p)*(m-1)]),A.lineDashOffset=(h+p)*w,Mw(A,i-E,a-E,C+E*2,B+E*2,s,l,o);A.restore()},MTA=(A,e,t,o)=>{let[i,a,r,n]=qA(t,o),g=r-i,s=n-a,l=tl(e.viewBackgroundColor);A.strokeStyle=l??"rgb(0,118,255)",A.lineWidth=fe.strokeWidth/e.zoom.value,A.save(),A.translate(e.scrollX,e.scrollY),Mw(A,i,a,g,s,i+g/2,a+s/2,t.angle,!1,fe.radius/e.zoom.value),A.restore()},MQA=(A,e,t,o)=>{let i=tl(e.viewBackgroundColor),{colors:a=[i],dashed:r=!1}=o||{},n=t.filter(I=>I.groupIds.length===0),g=t.filter(I=>I.groupIds.length>0),s=I=>{let[c,C,B,d]=$A(I);return{angle:0,x1:c,x2:B,y1:C,y2:d,selectionColors:a,dashed:r,cx:c+(B-c)/2,cy:C+(d-C)/2,activeEmbeddable:!1}},l=I=>{let c=be(t,I);return s(c)};Object.entries(GI(g,e)).filter(([I,c])=>c).map(([I,c])=>I).map(I=>l(I)).concat(n.map(I=>s([I]))).forEach(I=>HQA(A,e,I))},oT=(A,e,t,o)=>{if(!e.selectedLinearElement)return;A.save(),A.translate(e.scrollX,e.scrollY),A.lineWidth=1/e.zoom.value;let i=rA.getPointsGlobalCoordinates(t,o),{POINT_HANDLE_SIZE:a}=rA,r=e.selectedLinearElement?.isEditing?a:a/2,n=kA(t),g=ke(t);if(i.forEach((s,l)=>{if(n&&l!==0&&l!==i.length-1)return;let I=l>0&&(l!==i.length-1||!g||!t.polygon)&&Jt(s,l===i.length-1?i[0]:i[l-1],2/e.zoom.value),c=!!e.selectedLinearElement?.isEditing&&!!e.selectedLinearElement?.selectedPointsIndices?.includes(l);g&&t.polygon&&!c&&l===t.points.length-1&&e.selectedLinearElement?.isEditing&&e.selectedLinearElement?.selectedPointsIndices?.includes(0)&&(c=!0),tT(A,e,s,r,c,!1,I)}),kA(t)){let s=t.fixedSegments?.map(l=>l.index)||[];i.slice(0,-1).forEach((l,I)=>{rA.isSegmentTooShort(t,i[I+1],i[I],I,e.zoom,o)||tT(A,e,k((l[0]+i[I+1][0])/2,(l[1]+i[I+1][1])/2),a/2,!1,!s.includes(I+1),!1)})}else rA.getEditorMidPoints(t,o,e).filter((l,I,c)=>l!==null&&!(kA(t)&&(I===0||I===c.length-1))).forEach(l=>{(e.selectedLinearElement?.isEditing||i.length===2)&&tT(A,e,l,a/2,!1,!0,!1)});A.restore()},NTA=(A,e,t,o)=>{A.save(),A.translate(e.scrollX,e.scrollY),A.strokeStyle="rgba(134, 131, 226, 0.6)",A.lineWidth=1/e.zoom.value,A.setLineDash([4/e.zoom.value,4/e.zoom.value]),A.beginPath(),A.moveTo(t[0],t[1]),A.lineTo(o[0],o[1]),A.stroke(),A.restore()},YTA=(A,e,t,o,i)=>{A.save(),A.translate(e.scrollX,e.scrollY),A.strokeStyle="rgba(134, 131, 226, 0.6)",A.lineWidth=1/e.zoom.value,A.setLineDash([]),A.fillStyle=i?"rgba(134, 131, 226, 0.9)":"rgba(255, 255, 255, 0.9)",vw(A,t[0],t[1],o/e.zoom.value,!0,!0),A.restore()},NQA=({arrow:A,appState:e,type:t,context:o,elementsMap:i})=>{let a=t==="start"?A.startBinding:A.endBinding,r=a?.elementId&&i.get(a.elementId);if(!r||!bt(r)||r.isDeleted)return;let n=Ni(a.fixedPoint,r,i);if(!nh(n,A,r,i,e,t))return;let g=e.selectedLinearElement,s=!!g?.isDragging,l=t==="start"?0:A.points.length-1,I=!!g?.selectedPointsIndices?.includes(l);if(g?.hoveredFocusPointBinding===t&&!g.draggedFocusPointBinding&&vU(n,o,e),!(I&&s)){let c=Ni(a.fixedPoint,r,i),C=g?.hoveredFocusPointBinding===t,B=rA.getPointAtIndexGlobalCoordinates(A,l,i);NTA(o,e,B,c),YTA(o,e,c,id/1.5,C)}},YQA=(A,e,t,o,i)=>{Object.keys(o).forEach(a=>{let r=o[a];if(r!==void 0){let[n,g,s,l]=r;A.save(),A.lineWidth=1.5/t.zoom.value,e.selectionColor&&(A.strokeStyle=e.selectionColor),a==="rotation"?vw(A,n+s/2,g+l/2,s/2,!0):A.roundRect?(A.beginPath(),A.roundRect(n,g,s,l,2/t.zoom.value),A.fill(),A.stroke()):Mw(A,n,g,s,l,n+s/2,g+l/2,i,!0),A.restore()}})},HTA=(A,e,t,o,i)=>{let[a,r,,,n,g]=qA(o,i),s=3,l=20,I=s/t.zoom.value,c=I/2,C=n-a+I,B=g-r+I,d=Math.min(l/t.zoom.value,C),E=Math.min(l/t.zoom.value,B);A.save(),A.fillStyle=e.selectionColor,A.strokeStyle=e.selectionColor,A.lineWidth=I,[[[-C,-B],[0,c],[d,c],[c,0],[c,E]],[[C-c,-B],[c,c],[-d+c,c],[0,0],[0,E]],[[-C,B],[0,-c],[d,-c],[c,0],[c,-E]],[[C-c,B],[c,-c],[-d+c,-c],[0,0],[0,-E]]].forEach(p=>{let[[u,m],[w,b],[D,S],[U,v],[x,R]]=p;A.save(),A.translate(n,g),A.rotate(o.angle),A.beginPath(),A.moveTo(u+w,m+b),A.lineTo(u+D,m+S),A.stroke(),A.beginPath(),A.moveTo(u+U,m+v),A.lineTo(u+x,m+R),A.stroke(),A.restore()}),A.restore()},KTA=(A,e,t,o)=>{e.save();let i=_Y(t.zoom.value),a=A.width+i*2,r=A.height+i*2,n=A.x+A.width/2,g=A.y+A.height/2,s=-(A.width/2+i),l=-(A.height/2+i);e.translate(n+t.scrollX,g+t.scrollY),e.rotate(A.angle),e.lineWidth=1.5/t.zoom.value,e.strokeStyle=o,e.globalAlpha=.5,e.setLineDash([6/t.zoom.value,4/t.zoom.value]),e.strokeRect(s,l,a,r),e.restore()},JTA=(A,e,t,o,i)=>{let a=zY(A,t.zoom.value,i);a&&(e.save(),e.globalAlpha=.5,e.lineWidth=1.5/t.zoom.value,e.lineCap="round",e.strokeStyle=o,e.beginPath(),e.moveTo(a.start[0]+t.scrollX,a.start[1]+t.scrollY),e.lineTo(a.end[0]+t.scrollX,a.end[1]+t.scrollY),e.stroke(),e.restore())},TTA=({app:A,canvas:e,elementsMap:t,visibleElements:o,selectedElements:i,allElementsMap:a,scale:r,appState:n,renderConfig:g,editorInterface:s,animationState:l,deltaTime:I})=>{if(e===null)return{};let[c,C]=bh(e,r),B=l,d=Dh({canvas:e,scale:r,normalizedWidth:c,normalizedHeight:C});d.save(),d.scale(n.zoom.value,n.zoom.value);let E;if(o.forEach(b=>{n.selectedLinearElement?.isEditing&&n.selectedLinearElement.elementId===b.id&&b&&(E=b)}),E&&oT(d,n,E,t),n.selectionElement&&!n.isCropping)try{U4(n.selectionElement,d,n,g.selectionColor)}catch(b){console.error(b)}let h=_m(i,n);if(h&&!h.autoResize&&JTA(h,d,n,g.selectionColor,s.formFactor),n.editingTextElement){let b=a.get(n.editingTextElement.id);b&&!b.autoResize&&KTA(b,d,n,g.selectionColor)}if(n.isBindingEnabled&&n.suggestedBinding?B={...l,bindingHighlight:vTA(A,d,n.suggestedBinding,a,n,I,l?.bindingHighlight)}:B={...l,bindingHighlight:void 0},n.hoveredArrowTextAnchor&&UTA(d,n,a),n.frameToHighlight&&MTA(d,n,n.frameToHighlight,t),n.elementsToHighlight&&MQA(d,n,n.elementsToHighlight),n.activeLockedId){let b=a.get(n.activeLockedId),D=b?[b]:be(a,n.activeLockedId);MQA(d,n,D,{colors:["#ced4da"],dashed:!0})}let p=i.some(b=>mA(b));i.length===1&&n.selectedLinearElement?.isEditing&&n.selectedLinearElement.elementId===i[0].id&&oT(d,n,i[0],t);let u=n.selectedLinearElement,m=u&&rA.getElement(u.elementId,a);if(m&&(n.selectedLinearElement.isDragging||(u.segmentMidPointHoveredCoords?xTA(d,n):(kA(m)?u.hoverPointIndex===0||u.hoverPointIndex===m.points.length-1:u.hoverPointIndex>=0)&>A(d,n,t)),bA(m)&&(NQA({arrow:m,elementsMap:a,appState:n,context:d,type:"start"}),NQA({arrow:m,elementsMap:a,appState:n,context:d,type:"end"}))),!n.multiElement&&!n.newElement&&!n.selectedLinearElement?.isEditing){let b=Z0(i,n,s),D=i.length===1&&FA(i[0]);D&&n.selectedLinearElement?.elementId===i[0].id&&!i[0].locked&&oT(d,n,i[0],t);let S=g.selectionColor||"#000";if(b){let U=QA(i),v=[];for(let R of t.values()){let W=[],q=g.remoteSelectedElementIds.get(R.id);if(D&&kA(R)&&(R.startBinding||R.endBinding)||(U.has(R.id)&&!Tm(n,R)&&W.push(S),q&&W.push(...q.map(T=>aE(T,n.collaborators.get(T))))),W.length){let[T,F,K,N,J,H]=qA(R,t,!0);v.push({angle:R.angle,x1:T,y1:F,x2:K,y2:N,selectionColors:R.locked?["#ced4da"]:W,dashed:!!q||R.locked,cx:J,cy:H,activeEmbeddable:n.activeEmbeddable?.element===R&&n.activeEmbeddable.state==="active",padding:R.id===n.croppingElementId||xe(R)?0:void 0})}}let x=R=>{let W=be(t,R),[q,T,F,K]=$A(W);v.push({angle:0,x1:q,x2:F,y1:T,y2:K,selectionColors:W.some(N=>N.locked)?["#ced4da"]:["#000"],dashed:!0,cx:q+(F-q)/2,cy:T+(K-T)/2,activeEmbeddable:!1})};for(let R of $n(n))x(R);n.editingGroupId&&x(n.editingGroupId),v.forEach(R=>HQA(d,n,R))}if(d.save(),d.translate(n.scrollX,n.scrollY),i.length===1){d.fillStyle="#fff";let U=P0(i[0],n.zoom,t,"mouse",Cd(s));if(!n.viewModeEnabled&&b&&!cA(n.editingTextElement)&&!n.croppingElementId&&YQA(d,g,n,U,i[0].angle),n.croppingElementId&&!n.isCropping){let v=t.get(n.croppingElementId);v&&xe(v)&&HTA(d,g,n,v,t)}}else if(i.length>1&&!n.isRotating&&!i.some(U=>U.locked)){let U=Wn*2/n.zoom.value;d.fillStyle="#fff";let[v,x,R,W]=$A(i,t),q=d.getLineDash();d.setLineDash([2/n.zoom.value]);let T=d.lineWidth;d.lineWidth=1/n.zoom.value,d.strokeStyle=S,Mw(d,v-U,x-U,R-v+U*2,W-x+U*2,(v+R)/2,(x+W)/2,0),d.lineWidth=T,d.setLineDash(q);let F=gw([v,x,R,W,(v+R)/2,(x+W)/2],0,n.zoom,"mouse",p?{...Cd(s),rotation:!0}:Cd(s));i.some(K=>!K.locked)&&YQA(d,g,n,F,0)}d.restore()}n.searchMatches?.matches.forEach(({id:b,focus:D,matchedLines:S})=>{let U=t.get(b);if(U){let[v,x,,,R,W]=qA(U,t,!0);d.save(),n.theme===EA.LIGHT?D?d.fillStyle="rgba(255, 124, 0, 0.4)":d.fillStyle="rgba(255, 226, 0, 0.4)":D?d.fillStyle="rgba(229, 82, 0, 0.4)":d.fillStyle="rgba(99, 52, 0, 0.4)";let q=mA(U)?n.zoom.value:1;d.translate(n.scrollX,n.scrollY),d.translate(R,W),d.rotate(U.angle),S.forEach(T=>{(T.showOnCanvas||D)&&d.fillRect(v+T.offsetX/q-R,x+T.offsetY/q-W,T.width/q,T.height/q)}),d.restore()}}),RQA(d,n),d.restore(),GgA({context:d,renderConfig:g,appState:n,normalizedWidth:c,normalizedHeight:C});let w;return g.renderScrollbars&&(w=RlA(t,c,C,n),d.save(),d.fillStyle=FlA,d.strokeStyle="rgba(255,255,255,0.8)",[w.horizontal,w.vertical].forEach(b=>{b&&Ax(d,b.x,b.y,b.width,b.height,qa/2)}),d.restore()),{scrollBars:w,animationState:B}},KQA=A=>{A.renderConfig.selectionColor=tl(A.appState.viewBackgroundColor);let e=TTA(A);return A.callback(e),e};var PQA=G(_(),1),JQA="animateInteractiveScene",PTA=A=>{let e=(0,_E.useRef)(!1),t=(0,_E.useRef)(null);return(0,_E.useEffect)(()=>{if(!e.current){e.current=!0;return}let o=new Map,i=new Map,a=new Map,r=new Map,n=new Map;A.appState.collaborators.forEach((s,l)=>{if(s.selectedElementIds)for(let I of Object.keys(s.selectedElementIds))a.has(I)||a.set(I,[]),a.get(I).push(l);!s.pointer||s.pointer.renderCursor===!1||(s.username&&r.set(l,s.username),s.userState&&n.set(l,s.userState),i.set(l,oi({sceneX:s.pointer.x,sceneY:s.pointer.y},A.appState)),o.set(l,s.button))});let g=A.containerRef?.current&&getComputedStyle(A.containerRef.current).getPropertyValue("--color-selection")||"#6965db";t.current={app:A.app,canvas:A.canvas,elementsMap:A.elementsMap,visibleElements:A.visibleElements,selectedElements:A.selectedElements,allElementsMap:A.allElementsMap,scale:window.devicePixelRatio,appState:A.appState,renderConfig:{remotePointerViewportCoords:i,remotePointerButton:o,remoteSelectedElementIds:a,remotePointerUsernames:r,remotePointerUserStates:n,selectionColor:g,renderScrollbars:A.renderScrollbars,lastViewportPosition:A.app.viewport.lastPosition},editorInterface:A.editorInterface,callback:A.renderInteractiveSceneCallback,animationState:{bindingHighlight:void 0},deltaTime:0},yi.running(JQA)||yi.start(JQA,({deltaTime:s,state:l})=>{let I=KQA({...t.current,deltaTime:s,animationState:l}).animationState;if(I){for(let c in I)if(I[c]!==void 0)return I}})}),(0,PQA.jsx)("canvas",{className:"excalidraw__canvas interactive",style:{width:A.appState.width,height:A.appState.height},width:A.appState.width*A.scale,height:A.appState.height*A.scale,ref:A.handleCanvasRef,onContextMenu:A.onContextMenu,onClick:A.onClick,onPointerMove:A.onPointerMove,onPointerUp:A.onPointerUp,onPointerCancel:A.onPointerCancel,onTouchMove:A.onTouchMove,onPointerDown:A.onPointerDown,onDoubleClick:A.onDoubleClick,children:L("labels.drawingCanvas")})},TQA=A=>({zoom:A.zoom,scrollX:A.scrollX,scrollY:A.scrollY,width:A.width,height:A.height,viewModeEnabled:A.viewModeEnabled,activeTool:A.activeTool,openDialog:A.openDialog,editingGroupId:A.editingGroupId,selectedElementIds:A.selectedElementIds,frameToHighlight:A.frameToHighlight,offsetLeft:A.offsetLeft,offsetTop:A.offsetTop,theme:A.theme,selectionElement:A.selectionElement,selectedGroupIds:A.selectedGroupIds,selectedLinearElement:A.selectedLinearElement,multiElement:A.multiElement,newElement:A.newElement,isBindingEnabled:A.isBindingEnabled,isMidpointSnappingEnabled:A.isMidpointSnappingEnabled,gridModeEnabled:A.gridModeEnabled,suggestedBinding:A.suggestedBinding,hoveredArrowTextAnchor:A.hoveredArrowTextAnchor,isRotating:A.isRotating,elementsToHighlight:A.elementsToHighlight,collaborators:A.collaborators,activeEmbeddable:A.activeEmbeddable,snapLines:A.snapLines,zenModeEnabled:A.zenModeEnabled,editingTextElement:A.editingTextElement,viewBackgroundColor:A.viewBackgroundColor,gridColor:A.gridColor,gridDirection:A.gridDirection,highlightSearchResult:A.highlightSearchResult,isCropping:A.isCropping,croppingElementId:A.croppingElementId,searchMatches:A.searchMatches,activeLockedId:A.activeLockedId,hoveredElementIds:A.hoveredElementIds,frameRendering:A.frameRendering,frameColor:A.frameColor,shouldCacheIgnoreZoom:A.shouldCacheIgnoreZoom,exportScale:A.exportScale,currentItemArrowType:A.currentItemArrowType}),ZTA=(A,e)=>A.selectionNonce!==e.selectionNonce||A.canvasNonce!==e.canvasNonce||A.scale!==e.scale||A.elementsMap!==e.elementsMap||A.visibleElements!==e.visibleElements||A.selectedElements!==e.selectedElements||A.renderScrollbars!==e.renderScrollbars||A.interactionEnabled!==e.interactionEnabled||A.navigationEnabled!==e.navigationEnabled?!1:Tt(TQA(A.appState),TQA(e.appState)),iT=_E.default.memo(PTA,ZTA);Q();var wB=G(nA(),1);X();Nw();var WQA=G(_(),1),WTA=A=>{let e=(0,wB.useRef)(null),t=(0,wB.useRef)(!1);return(0,wB.useEffect)(()=>{A.canvas.style.width=`${A.appState.width}px`,A.canvas.style.height=`${A.appState.height}px`,A.canvas.width=A.appState.width*A.scale,A.canvas.height=A.appState.height*A.scale},[A.appState.height,A.appState.width,A.canvas,A.scale]),(0,wB.useEffect)(()=>{let o=e.current;if(!o)return;let i=A.canvas;t.current||(t.current=!0,o.replaceChildren(i),i.classList.add("excalidraw__canvas","static")),kk({canvas:i,rc:A.rc,scale:A.scale,elementsMap:A.elementsMap,allElementsMap:A.allElementsMap,visibleElements:A.visibleElements,appState:A.appState,renderConfig:A.renderConfig},Ku())}),(0,WQA.jsx)("div",{className:"excalidraw__canvas-wrapper",ref:e})},ZQA=A=>({zoom:A.zoom,scrollX:A.scrollX,scrollY:A.scrollY,width:A.width,height:A.height,viewModeEnabled:A.viewModeEnabled,openDialog:A.openDialog,hoveredElementIds:A.hoveredElementIds,offsetLeft:A.offsetLeft,offsetTop:A.offsetTop,theme:A.theme,shouldCacheIgnoreZoom:A.shouldCacheIgnoreZoom,viewBackgroundColor:A.viewBackgroundColor,exportScale:A.exportScale,selectedElementsAreBeingDragged:A.selectedElementsAreBeingDragged,gridSize:A.gridSize,gridStep:A.gridStep,frameRendering:A.frameRendering,selectedElementIds:A.selectedElementIds,frameToHighlight:A.frameToHighlight,editingGroupId:A.editingGroupId,currentHoveredFontFamily:A.currentHoveredFontFamily,croppingElementId:A.croppingElementId,linkOpacity:A.linkOpacity,gridColor:A.gridColor,gridDirection:A.gridDirection,frameColor:A.frameColor,suggestedBinding:A.suggestedBinding}),_TA=(A,e)=>A.canvasNonce!==e.canvasNonce||A.scale!==e.scale||A.elementsMap!==e.elementsMap||A.visibleElements!==e.visibleElements?!1:Tt(ZQA(A.appState),ZQA(e.appState))&&Tt(A.renderConfig,e.renderConfig),aT=wB.default.memo(WTA,_TA);Q();var MU=G(nA(),1);Q();X();O();Dk();Nw();var _QA=({canvas:A,rc:e,newElement:t,elementsMap:o,allElementsMap:i,scale:a,appState:r,renderConfig:n})=>{if(A){let[g,s]=bh(A,a),{isHighlighterPenDrawing:l=!1}=n,I=Dh({canvas:A,scale:a,normalizedWidth:g,normalizedHeight:s,theme:r.theme,viewBackgroundColor:l?r.viewBackgroundColor:"transparent"});if(I.save(),I.scale(r.zoom.value,r.zoom.value),t&&t.type!=="selection"){if(sr(t))return;if((t.frameId||r.frameToHighlight?.id)&&r.frameRendering.enabled&&r.frameRendering.clip){let B=$Q(t,o,r);B&&$m(t,B,r,o)&&yk(B,I,n,r)}FI(t,o,i,e,I,n,r)}else I.clearRect(0,0,g,s);I.restore()}},zTA=Nc(A=>{_QA(A)}),zQA=(A,e)=>{if(e){zTA(A);return}_QA(A)};var OQA=G(_(),1),OTA=A=>{let e=(0,MU.useRef)(null);return(0,MU.useEffect)(()=>{e.current&&zQA({canvas:e.current,scale:A.scale,newElement:A.newElement,elementsMap:A.elementsMap,allElementsMap:A.allElementsMap,rc:A.rc,renderConfig:A.renderConfig,appState:A.appState},Ku())}),(0,OQA.jsx)("canvas",{className:"excalidraw__canvas",style:{width:A.appState.width,height:A.appState.height},width:A.appState.width*A.scale,height:A.appState.height*A.scale,ref:e})},rT=OTA;bk();Q();var mc=G(nA(),1);X();var $QA=G(_(),1),qQA=700,qTA=100,jTA=16,VTA=5*60*1e3,VQA=Ge(null),jQA=A=>A===to.elbow?kC:A===to.round?LC:yC,NU=class{constructor(e){M(this,"app");M(this,"lastShownAt",0);M(this,"show",e=>{let{x:t,y:o}=this.app.viewport.lastPosition;t===0&&o===0||(this.lastShownAt=Date.now(),this.app.updateEditorAtom(VQA,{content:e,nonce:Math.random()}))});M(this,"isOnCooldown",()=>Date.now()-this.lastShownAt<VTA);M(this,"onArrowTypeCycled",e=>{this.show(jQA(e))});M(this,"onToolShortcut",(e,t)=>{(t==="digit"||!this.isOnCooldown())&&this.show(e==="line"?Fh:jQA(this.app.state.currentItemArrowType))});this.app=e}},XQA=()=>{let[A,e]=ne(VQA),t=Rt(),{container:o}=Gt(),i=(0,mc.useRef)(null),[a,r]=(0,mc.useState)(!1),n=A?.nonce;return(0,mc.useLayoutEffect)(()=>{if(n==null||!o)return;let g=(l,I)=>{let c=i.current;if(!c)return;let{left:C,top:B}=ES({cursor:{x:l,y:I},element:{width:c.offsetWidth,height:c.offsetHeight},container:o.getBoundingClientRect(),gap:jTA});c.style.transform=`translate(${C}px, ${B}px)`};g(t.viewport.lastPosition.x,t.viewport.lastPosition.y);let s=l=>{g(l.clientX,l.clientY)};return window.addEventListener("pointermove",s),()=>{window.removeEventListener("pointermove",s)}},[n,o,t]),(0,mc.useEffect)(()=>()=>{e(null)},[e]),(0,mc.useEffect)(()=>{if(n==null)return;r(!1);let g=window.setTimeout(()=>{r(!0)},qQA),s=window.setTimeout(()=>{e(null)},qQA+qTA),l=()=>{e(null)};return window.addEventListener("pointerdown",l,{capture:!0}),()=>{window.clearTimeout(g),window.clearTimeout(s),window.removeEventListener("pointerdown",l,{capture:!0})}},[n,e]),A?(0,$QA.jsx)("div",{ref:i,className:iA("CursorHint",{"CursorHint--fade-out":a}),"data-testid":"cursor-hint",children:A.content}):null};Q();var YU=class{constructor(e){this.getState=e;M(this,"listeners",[]);M(this,"onStateChange",(e,t,o)=>{let{predicate:i,getValue:a,callback:r,once:n,matchesImmediately:g}=this.normalize(e,t,o);return r?g&&(queueMicrotask(()=>{let s=this.getState();r(a(s),s)}),n)?()=>{}:this.subscribe({predicate:i,getValue:a,callback:r,once:n}):g?Promise.resolve(a(this.getState())):new Promise(s=>{this.subscribe({predicate:i,getValue:a,callback:l=>s(l),once:!0})})})}isStateChangePredicateOptions(e){return typeof e=="object"&&!Array.isArray(e)&&"predicate"in e}subscribe(e){return this.listeners.push(e),()=>{this.listeners=this.listeners.filter(t=>t!==e)}}normalize(e,t,o){let i,a,r=t,n=o?.once??!1,g=!1;if(this.isStateChangePredicateOptions(e)){let{predicate:s,callback:l,once:I}=e;i=s,a=c=>c,r=l?(c,C)=>l(C):void 0,n=I??!1,g=s(this.getState())}else if(typeof e=="function"){let s=e;i=(l,I)=>s(l)!==s(I),a=l=>s(l)}else if(Array.isArray(e)){let s=e;i=(l,I)=>s.some(c=>l[c]!==I[c]),a=l=>l}else{let s=e;i=(l,I)=>l[s]!==I[s],a=l=>l[s]}return{predicate:i,getValue:a,callback:r,once:n,matchesImmediately:g}}flush(e){if(!this.listeners.length)return;let t=this.getState(),o=[];for(let i of this.listeners)i.predicate(t,e)?(i.callback(i.getValue(t),t),i.once||o.push(i)):o.push(i);this.listeners=o}clear(){this.listeners=[]}};Q();O();X();var AhA=G($g(),1);var thA=G(_(),1),XTA=({app:A,activeLockedId:e})=>{let t=A.scene.getElement(e);t&&!St(t)&&console.error("[NONDELETED][INVARIANT] UnlockPopup: activeLockedId points to a deleted element");let o=t&&St(t)?t:null,i=o?[o]:be(A.scene.getNonDeletedElementsMap(),e);if(i.length===0)return null;let[a,r]=$A(i),{x:n,y:g}=oi({sceneX:a,sceneY:r},A.state);return(0,thA.jsx)("div",{className:"UnlockPopup",style:{bottom:`${A.state.height+12-g+A.state.offsetTop}px`,left:`${n-A.state.offsetLeft}px`},onClick:()=>{(0,AhA.flushSync)(()=>{let s=GI(i,A.state);A.setState({selectedElementIds:i.reduce((l,I)=>({...l,[I.id]:!0}),{}),selectedGroupIds:s,activeLockedId:null})}),A.actionManager.executeAction(zf)},title:L("labels.elementLock.unlock"),children:OeA})},ehA=XTA;_r();X();var Ue=G(_(),1),ahA=_o.default.createContext(null),rhA=_o.default.createContext(null),gT={formFactor:"desktop",desktopUIMode:"full",userAgent:_F(typeof navigator<"u"?navigator.userAgent:""),isTouchScreen:!1,canFitSidebar:!1,isLandscape:!0},lT=_o.default.createContext(gT);lT.displayName="EditorInterfaceContext";var $TA={"editor:mount":{cardinality:"once",replay:"last"},"editor:initialize":{cardinality:"once",replay:"last"},"editor:unmount":{cardinality:"once",replay:"last"}},IT=_o.default.createContext({container:null,id:null});IT.displayName="ExcalidrawContainerContext";var cT=_o.default.createContext([]);cT.displayName="ExcalidrawElementsContext";var CT=_o.default.createContext({...Ir(),width:0,height:0,offsetLeft:0,offsetTop:0});CT.displayName="ExcalidrawAppStateContext";var BT=_o.default.createContext(()=>{console.warn("Uninitialized ExcalidrawSetAppStateContext context!")});BT.displayName="ExcalidrawSetAppStateContext";var dT=_o.default.createContext(null);dT.displayName="ExcalidrawActionManagerContext";var zE=_o.default.createContext(null);zE.displayName="ExcalidrawAPIContext";var TU=_o.default.createContext(null);TU.displayName="ExcalidrawAPISetContext";var Rt=()=>(0,_o.useContext)(ahA),Da=()=>(0,_o.useContext)(rhA),Je=()=>(0,_o.useContext)(lT),mi=()=>pI(Je()),Gt=()=>(0,_o.useContext)(IT),YC=()=>(0,_o.useContext)(cT),hg=()=>(0,_o.useContext)(CT),Ye=()=>(0,_o.useContext)(BT),Wt=()=>(0,_o.useContext)(dT),Mf=()=>(0,_o.useContext)(zE),BD=!1,dD=0,ED=null,wc=!1,qs=!1,HU=!1,QD={horizontal:null,vertical:null},fB=0,hD=!1,nT=new Map,A8A=4,KU=!1,JU=0,ohA=!1,Up=null,ve={pointers:new Map,lastCenter:null,initialDistance:null,initialScale:null},sT=class A extends _o.default.Component{constructor(t){super(t);M(this,"canvas");M(this,"interactiveCanvas",null);M(this,"sessionExportThemeOverride");M(this,"rc");M(this,"unmounted",!1);M(this,"actionManager");M(this,"editorInterface",gT);M(this,"stylesPanelMode",pI(gT));M(this,"excalidrawContainerRef",_o.default.createRef());M(this,"scene");M(this,"fonts");M(this,"renderer");M(this,"visibleElements");M(this,"hasRenderableElements",!1);M(this,"resizeObserver");M(this,"library");M(this,"libraryItemsFromStorage");M(this,"id");M(this,"store");M(this,"history");M(this,"shouldRenderAllEmbeddables",!1);M(this,"excalidrawContainerValue");M(this,"files",{});M(this,"imageCache",new Map);M(this,"iFrameRefs",new Map);M(this,"embedsValidationStatus",new Map);M(this,"initializedEmbeds",new Set);M(this,"elementsPendingErasure",new Set);M(this,"_initialized",!1);M(this,"editorLifecycleEvents",new uy($TA));M(this,"onEvent",this.editorLifecycleEvents.on.bind(this.editorLifecycleEvents));M(this,"appStateObserver",new YU(()=>this.state));M(this,"onStateChange",this.appStateObserver.onStateChange);M(this,"bucketFill",new zx(this));M(this,"flowchart",new Vx(this));M(this,"cursor",new Ox(this));M(this,"arrowText",new _x(this));M(this,"viewport",new $x(this,{getContainer:()=>this.excalidrawContainerRef.current,getStylesPanelMode:()=>this.stylesPanelMode,isGestureActive:()=>ve.pointers.size>=2||qs}));M(this,"bindModeHandler",null);M(this,"textWysiwygSubmitHandler",null);M(this,"hitLinkElement");M(this,"lastPointerDownEvent",null);M(this,"lastPointerUpEvent",null);M(this,"lastPointerUpIsDoubleClick",!1);M(this,"lastPointerMoveEvent",null);M(this,"lastPointerMoveCoords",null);M(this,"lastCompletedCanvasClicks",[]);M(this,"previousPointerMoveCoords",null);M(this,"allowMobileMode",!0);M(this,"drawShape",new jx(this));M(this,"laserTrails",new Nx(this));M(this,"eraserTrail",new Hx(this));M(this,"lassoTrail",new Yx(this));M(this,"cursorHints",new NU(this));M(this,"onChangeEmitter",new Ri);M(this,"onPointerDownEmitter",new Ri);M(this,"onPointerUpEmitter",new Ri);M(this,"onUserFollowEmitter",new Ri);M(this,"onScrollChangeEmitter",new Ri);M(this,"missingPointerEventCleanupEmitter",new Ri);M(this,"onRemoveEventListenersEmitter",new Ri);M(this,"api");M(this,"isToolSupported",(t,o=this.props)=>{if(o.UIOptions.tools?.[t]===!1)return!1;if(this.isInteractionEnabled(o))return!0;let i=typeof o.interaction=="object"&&o.interaction!==null?o.interaction.enabled?.tools:void 0;return t==="laser"?i?.laser===!0:t==="custom"?i?.custom===!0:!1});M(this,"updateEditorAtom",(t,...o)=>{let i=wo.set(t,...o);return this.triggerRender(),i});M(this,"previousHoveredBindableElement",null);M(this,"getEffectiveGridSize",()=>eB(this)?this.state.gridSize:null);M(this,"getTextCreationGridPoint",(t,o)=>{let i=this.getEffectiveGridSize();if(i===null)return null;let a=r=>Math.floor(r/i)*i;return{x:a(t),y:a(o)}});M(this,"handleIframeLikeElementHover",({hitElement:t,scenePointer:o,moveEvent:i})=>t&&Oo(t)&&(this.state.viewModeEnabled||this.state.activeTool.type==="laser"||this.isIframeLikeElementCenter(t,i,o.x,o.y))?(this.cursor.set(Xe.POINTER),this.setState({activeEmbeddable:{element:t,state:"hover"}}),!0):(this.state.activeEmbeddable?.state==="hover"&&this.setState({activeEmbeddable:null}),!1));M(this,"isDoubleClick",(t,o)=>t!=null&&o.timeStamp-t.timeStamp<=HF);M(this,"updateEmbedValidationStatus",(t,o)=>{this.embedsValidationStatus.set(t.id,o),It.delete(t)});M(this,"updateEmbeddables",()=>{let t=new Set,o=!1;this.scene.getNonDeletedElements().filter(i=>{if(ni(i)){if(t.add(i.id),!this.embedsValidationStatus.has(i.id)){o=!0;let a=rh(i.link,this.props.validateEmbeddable);this.updateEmbedValidationStatus(i,a)}}else is(i)&&t.add(i.id);return!1}),o&&this.scene.triggerUpdate(),this.iFrameRefs.forEach((i,a)=>{t.has(a)||this.iFrameRefs.delete(a)})});M(this,"getFrameNameDOMId",t=>`${this.id}-frame-name-${t.id}`);M(this,"frameNameBoundsCache",{get:t=>{let o=this.frameNameBoundsCache._cache.get(t.id);if(!o||o.zoom!==this.state.zoom.value||o.versionNonce!==t.versionNonce){let i=document.getElementById(this.getFrameNameDOMId(t));if(i){let a=i.getBoundingClientRect(),r=He({clientX:a.x,clientY:a.y},this.state),n=He({clientX:a.right,clientY:a.bottom},this.state);return o={x:r.x,y:r.y,width:n.x-r.x,height:n.y-r.y,zoom:this.state.zoom.value,versionNonce:t.versionNonce},this.frameNameBoundsCache._cache.set(t.id,o),o}return null}return o},_cache:new Map});M(this,"resetEditingFrame",t=>{t&&this.scene.mutateElement(t,{name:t.name?.trim()||null}),this.setState({editingFrame:null})});M(this,"renderFrameNames",()=>{if(!this.state.frameRendering.enabled||!this.state.frameRendering.name)return this.state.editingFrame&&this.resetEditingFrame(null),null;let t=this.state.theme===EA.DARK,o=this.state.frameRendering.markerName&&this.state.frameRendering.markerEnabled?this.scene.getNonDeletedFramesLikes():this.scene.getNonDeletedFramesLikes().filter(a=>a.frameRole!=="marker"),i=o.length>0&&this.state.searchMatches?.focusedId&&mA(this.scene.getElement(this.state.searchMatches.focusedId))?this.state.searchMatches.matches.find(a=>a.focus):null;return o.map(a=>{if(!gd(a,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap()))return this.state.editingFrame===a.id&&this.resetEditingFrame(a),null;let{x:r,y:n}=oi({sceneX:a.x,sceneY:a.y},this.state),g=6,s,l=Aw(a);if(a.id===this.state.editingFrame){let I=l;s=(0,Ue.jsx)("input",{autoFocus:!0,value:I,onChange:c=>{this.scene.mutateElement(a,{name:c.target.value})},onFocus:c=>c.target.select(),onBlur:()=>this.resetEditingFrame(a),onKeyDown:c=>{(c.key===z.ESCAPE||c.key===z.ENTER)&&this.resetEditingFrame(a)},style:{background:Fe(this.state.viewBackgroundColor,t),zIndex:2,border:"none",display:"block",padding:`${g}px`,borderRadius:4,boxShadow:"inset 0 0 0 2px var(--color-on-primary-container)",fontFamily:"Assistant",fontSize:`${fe.nameFontSize}px`,transform:`translate(-${g}px, ${g}px)`,color:t?fe.nameColorDarkTheme:fe.nameColorLightTheme,overflow:"hidden",maxWidth:`${keA().clientWidth-r-g}px`},size:I.length+1||1,dir:"auto",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off"})}else s=l;return(0,Ue.jsx)("div",{id:this.getFrameNameDOMId(a),className:wt.FRAME_NAME,style:{position:"absolute",bottom:`${this.state.height+fe.nameOffsetY-n+this.state.offsetTop}px`,left:`${r-this.state.offsetLeft}px`,zIndex:2,fontSize:fe.nameFontSize,color:this.state.frameColor?.nameColor??(t?fe.nameColorDarkTheme:fe.nameColorLightTheme),lineHeight:fe.nameLineHeight,width:"max-content",maxWidth:i?.id===a.id&&i?.focus?"none":`${a.width*this.state.zoom.value}px`,overflow:a.id===this.state.editingFrame?"visible":"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",cursor:Xe.MOVE,pointerEvents:this.state.viewModeEnabled?MB.disabled:MB.enabled},onPointerDown:I=>this.handleCanvasPointerDown(I),onWheel:I=>this.handleWheel(I),onContextMenu:this.handleCanvasContextMenu,onDoubleClick:()=>{this.setState({editingFrame:a.id})},children:s},a.id)})});M(this,"focusContainer",()=>{this.excalidrawContainerRef.current?.focus()});M(this,"getSceneElementsIncludingDeleted",()=>this.scene.getElementsIncludingDeleted());M(this,"getSceneElementsMapIncludingDeleted",()=>this.scene.getElementsMapIncludingDeleted());M(this,"getSceneElements",()=>this.scene.getNonDeletedElements());M(this,"onInsertElements",t=>{this.addElementsFromPasteOrLibrary({elements:t,position:"center",files:null})});M(this,"onExportImage",async(t,o,i)=>{ye("export",t,"ui");let a=await eE(t,o,this.state,this.files,{exportBackground:this.state.exportBackground,name:this.getName(),viewBackgroundColor:this.state.viewBackgroundColor,exportingFrame:i.exportingFrame}).catch(W3).catch(r=>{console.error(r),this.setState({errorMessage:r.message})});this.state.exportEmbedScene&&a&&fh(a)&&this.setState({fileHandle:a})});M(this,"magicGenerations",new Map);M(this,"updateMagicGeneration",({frameElement:t,data:o})=>{o.status==="pending"?this.scene.mutateElement(t,{customData:{generationData:void 0}},{informMutation:!1,isDragging:!1}):this.scene.mutateElement(t,{customData:{generationData:o}},{informMutation:!1,isDragging:!1}),this.magicGenerations.set(t.id,o),this.triggerRender()});M(this,"plugins",{});M(this,"onMagicframeToolSelect",()=>{let t=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds});if(t.length===0)this.setActiveTool({type:po.magicframe}),ye("ai","tool-select (empty-selection)","d2c");else{let o=t.length===1&&UQ(t[0])&&t[0];if(!o&&t.some(a=>mA(a)||a.frameId)){this.setActiveTool({type:po.magicframe});return}ye("ai","tool-select (existing selection)","d2c");let i;if(o)i=o;else{let[a,r,n,g]=$A(t),s=50;i=aw({...fe,x:a-s,y:r-s,width:n-a+s*2,height:g-r+s*2,opacity:100,locked:!1}),this.insertNewElement(i);for(let l of t)this.scene.mutateElement(l,{frameId:i.id});this.setState({selectedElementIds:{[i.id]:!0}})}this.onMagicFrameGenerate(i,"upstream")}});M(this,"openEyeDropper",({type:t})=>{this.updateEditorAtom(en,{swapPreviewOnAlt:!0,colorPickerType:t==="stroke"?"elementStroke":"elementBackground",onSelect:(o,i)=>{let a=t==="background"&&i.altKey||t==="stroke"&&!i.altKey;!this.scene.getSelectedElements(this.state).length||this.state.activeTool.type!=="selection"?a?this.syncActionResult({appState:{...this.state,currentItemStrokeColor:o},captureUpdate:tA.IMMEDIATELY}):this.syncActionResult({appState:{...this.state,currentItemBackgroundColor:o},captureUpdate:tA.IMMEDIATELY}):this.updateScene({elements:this.scene.getElementsIncludingDeleted().map(n=>this.state.selectedElementIds[n.id]?YA(n,{[a?"strokeColor":"backgroundColor"]:o}):n),captureUpdate:tA.IMMEDIATELY})},keepOpenOnAlt:!1})});M(this,"dismissLinearEditor",()=>{setTimeout(()=>{this.state.selectedLinearElement?.isEditing&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isEditing:!1}})})});M(this,"syncActionResult",Bo(t=>{if(this.unmounted||t===!1)return;this.store.scheduleAction(t.captureUpdate);let o=!1,i=null;if(t.elements&&(this.scene.replaceAllElements(t.elements),o=!0),t.files&&(this.addMissingFiles(t.files,t.replaceFiles),this.addNewImagesToImageCache()),t.appState||i||this.state.contextMenu){let a=t?.appState?.viewModeEnabled||!1,r=t?.appState?.zenModeEnabled||!1,n=t?.appState?.theme||this.props.theme||EA.LIGHT,g=t?.appState?.name??this.state.name,s=t?.appState?.errorMessage??this.state.errorMessage;if(typeof this.props.viewModeEnabled<"u"&&(a=this.props.viewModeEnabled),this.isInteractionEnabled()||(a=!0),typeof this.props.zenModeEnabled<"u"&&(r=this.props.zenModeEnabled),i=t.appState?.editingTextElement||null,t.elements&&i){let l=i.id,I=t.elements.find(c=>c.id===l);i=I&&St(I)&&cA(I)?I:null}this.setState(l=>{let I=t.appState||{};return{...l,...I,contextMenu:null,editingTextElement:i,viewModeEnabled:a,zenModeEnabled:r,theme:n,name:g,errorMessage:s}}),o=!0}o||this.scene.triggerUpdate()}));M(this,"scheduleCapture",()=>this.store.scheduleCapture());M(this,"onBlur",Bo(()=>{wc=!1,this.setState({isBindingEnabled:this.state.bindingPreference==="enabled"})}));M(this,"onUnload",()=>{this.onBlur()});M(this,"disableEvent",t=>{t.preventDefault()});M(this,"preventBrowserZoomWheel",t=>{t[z.CTRL_OR_CMD]&&t.preventDefault()});M(this,"handleNavigationModeKeyDown",t=>{if(wC()&&t.key.toLowerCase()==="m"){this.onKeyDown(t);return}if(this.maybeHandlePageScrollKeyDown(t)){t.preventDefault();return}this.actionManager.handleKeyDown(t)});M(this,"maybeHandlePageScrollKeyDown",t=>{if(t.key!==z.PAGE_UP&&t.key!==z.PAGE_DOWN)return!1;let o=(t.shiftKey?this.state.width:this.state.height)/this.state.zoom.value;return t.key===z.PAGE_DOWN&&(o=-o),t.shiftKey?this.viewport.translate(i=>({scrollX:i.scrollX+o})):this.viewport.translate(i=>({scrollY:i.scrollY+o})),!0});M(this,"preventBrowserZoomKeyDown",t=>{t[z.CTRL_OR_CMD]&&(t.code===Ce.EQUAL||t.code===Ce.MINUS||t.code===Ce.ZERO||t.code===Ce.NUM_ADD||t.code===Ce.NUM_SUBTRACT||t.code===Ce.NUM_ZERO)&&t.preventDefault()});M(this,"terminateActiveInteraction",()=>{if(this.maybeCleanupAfterMissingPointerUp(null),wc=!1,qs=!1,HU=!1,Up=null,ve.pointers.clear(),ve.lastCenter=null,ve.initialDistance=null,ve.initialScale=null,clearTimeout(dD),dD=0,A.resetTapTwice(),this.resetContextMenuTimer(),clearTimeout(JU),JU=0,KU=!1,this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.flowchart.clear(),wo.set(en,null),wo.set(mg,null),this.state.editingFrame){let t=this.scene.getNonDeletedElement(this.state.editingFrame);this.resetEditingFrame(t&&mA(t)?t:null)}queueMicrotask(()=>{(!this.isInteractionEnabled()||this.state.viewModeEnabled)&&this.textWysiwygSubmitHandler?.()}),this.setState({contextMenu:null,openMenu:null,openPopup:null,cursorButton:"up",bindMode:"orbit",activeEmbeddable:null,activeLockedId:null,selectedElementsAreBeingDragged:!1,selectionElement:null,resizingElement:null,isResizing:!1,isRotating:!1,isCropping:!1,croppingElementId:null,suggestedBinding:null,frameToHighlight:null,elementsToHighlight:null,snapLines:[],showHyperlinkPopup:!1}),this.deselectElements(),this.isInteractionEnabled()||(this.setState({originSnapOffset:null}),this.cursor.reset())});M(this,"handleInteractionStateChange",(t,o)=>{let i=this.isInteractionEnabled(t),a=i!==this.isInteractionEnabled(),r=t.viewModeEnabled!==this.props.viewModeEnabled,n=this.state.viewModeEnabled;this.isInteractionEnabled()?(r||a)&&(n=!!this.props.viewModeEnabled):n=!0,n!==this.state.viewModeEnabled&&this.setState({viewModeEnabled:n});let g=i&&!o.viewModeEnabled,s=this.isInteractionEnabled()&&!this.state.viewModeEnabled;(a&&!this.isInteractionEnabled()||g&&!s)&&this.terminateActiveInteraction(),a&&this.addEventListeners(),this.isLinksEnabled(t)!==this.isLinksEnabled()&&(this.isLinksEnabled()||(this.hitLinkElement=void 0,rx(),this.cursor.reset())),this.isEmbedsEnabled(t)!==this.isEmbedsEnabled()&&(this.isEmbedsEnabled()||this.setState({activeEmbeddable:null})),this.isToolSupported(o.activeTool.type,t)!==this.isToolSupported(this.state.activeTool.type)&&(this.isToolSupported(this.state.activeTool.type)||this.laserTrails.endPath(),this.cursor.reset()),!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)&&this.state.activeTool.type!=="selection"&&this.setState({activeTool:oo(this.state,{type:"selection"})}),(this.isBrowserZoomEnabled(t)!==this.isBrowserZoomEnabled()||this.isNavigationEnabled(t)!==this.isNavigationEnabled())&&(this.addEventListeners(),this.cursor.reset()),o.viewModeEnabled!==this.state.viewModeEnabled&&(this.isInteractionEnabled()&&this.addEventListeners(),this.state.viewModeEnabled||this.deselectElements(),this.cursor.reset())});M(this,"isSameForcedTool",(t,o)=>t?.type===o?.type&&(t?.type==="custom"?t.customType??null:null)===(o?.type==="custom"?o.customType??null:null));M(this,"handleForcedToolChange",(t,o)=>{let i=this.props.activeTool;if(!i)return;let a=!this.isSameForcedTool(t.activeTool,i);if(i.type==="image"){a&&console.warn('"image" tool cannot be forced via "props.activeTool"');return}this.isSameForcedTool(i,this.state.activeTool)||(a||o.activeTool!==this.state.activeTool||this.isToolSupported(i.type,t)!==this.isToolSupported(i.type,this.props))&&this.setActiveTool(i)});M(this,"resetHistory",()=>{this.history.clear()});M(this,"undo",()=>this.actionManager.executeAction(this.actionManager.actions.undo,"api"));M(this,"redo",()=>this.actionManager.executeAction(this.actionManager.actions.redo,"api"));M(this,"resetStore",()=>{this.store.clear()});M(this,"resetScene",Bo(t=>{this.scene.replaceAllElements([]),this.setState(o=>({...Ir(),isLoading:t?.resetLoadingState?!1:o.isLoading,theme:this.state.theme})),this.resetStore(),this.resetHistory()}));M(this,"initializeScene",async()=>{"launchQueue"in window&&"LaunchParams"in window&&window.launchQueue.setConsumer(async g=>{if(!g.files.length)return;let s=g.files[0],l=await s.getFile();this.loadFileToCanvas(new File([l],l.name||"",{type:l.type}),s)}),this.props.theme&&this.setState({theme:this.props.theme}),this.state.isLoading||this.setState({isLoading:!0});let t=null;try{typeof this.props.initialData=="function"?t=await this.props.initialData()||null:t=await this.props.initialData||null,t?.libraryItems&&this.library.updateLibrary({libraryItems:t.libraryItems,merge:!0}).catch(g=>{console.error(g)})}catch(g){console.error(g),t={appState:{errorMessage:g.message||"Encountered an error during importing or restoring scene data"}}}let o=hs(t?.elements,null,{repairBindings:!0,deleteInvisibleElements:!0}),i=_I(t?.appState,null),a=i.activeTool;i.preferredSelectionTool.initialized||(i.preferredSelectionTool={type:this.editorInterface.formFactor==="phone"?"lasso":"selection",initialized:!0}),i={...i,theme:this.props.theme||i.theme,openSidebar:i?.openSidebar||this.state.openSidebar,activeTool:a.type==="image"||a.type==="lasso"||a.type==="selection"?{...a,type:i.preferredSelectionTool.type}:i.activeTool,isLoading:!1,toast:this.state.toast};let r={...i,width:this.state.width,height:this.state.height,offsetTop:this.state.offsetTop,offsetLeft:this.state.offsetLeft},n=this.props.initialState?.viewport;if(n){let g=o.filter(I=>!I.isDeleted),s=QA(g),l=this.viewport.resolveInitialViewport(n,s,r);l&&(i={...i,...l})}else t?.scrollToContent&&(i={...i,...Bs(o,r)});this.resetStore(),this.resetHistory(),this.syncActionResult({elements:o,appState:i,files:t?.files,captureUpdate:tA.NEVER}),this.clearImageShapeCache(),this.fonts.loadSceneFonts().then(g=>{this.fonts.onLoaded(g)}),bl(window.location.href)&&this.viewport.setViewport({target:window.location.href,fit:"scale-down",animation:!1})});M(this,"getFormFactor",(t,o)=>this.props.UIOptions.getFormFactor?.(t,o)==="phone"&&!this.allowMobileMode?lm(t,o,this.allowMobileMode):this.props.UIOptions.getFormFactor?.(t,o)??lm(t,o,this.allowMobileMode));M(this,"refreshEditorInterface",()=>{let t=this.excalidrawContainerRef.current;if(!t)return;let{width:o,height:i}=t.getBoundingClientRect(),a=k3(),r=_F(typeof navigator<"u"?navigator.userAgent:""),n=this.props.UIOptions.dockedSidebarBreakpoint!=null?this.props.UIOptions.dockedSidebarBreakpoint:f3,g=wQ(this.editorInterface,{desktopUIMode:a??this.editorInterface.desktopUIMode,formFactor:this.getFormFactor(o,i),userAgent:r,canFitSidebar:o>n,isLandscape:o>i});this.editorInterface=g,this.reconcileStylesPanelMode(g)});M(this,"reconcileStylesPanelMode",t=>{let o=pI(t);if(o===this.stylesPanelMode)return;let i=this.stylesPanelMode;this.stylesPanelMode=o,this.viewport.invalidateUIOffset("stylesPanel"),(i!=="full"&&o==="full"||i!=="tray"&&o==="tray")&&this.setState(a=>({preferredSelectionTool:{type:"selection",initialized:!0}}))});M(this,"setDesktopUIMode",t=>{let o=t;this.editorInterface=wQ(this.editorInterface,{desktopUIMode:o}),this.reconcileStylesPanelMode(this.editorInterface),this.refreshEditorInterface(),this.triggerRender(!0)});M(this,"isTouchScreen",()=>this.editorInterface.isTouchScreen);M(this,"isTrayModeEnabled",()=>this.editorInterface.desktopUIMode==="tray");M(this,"onResize",Bo(()=>{this.scene.getElementsIncludingDeleted().forEach(t=>It.delete(t)),this.refreshEditorInterface(),this.updateDOMRect(),this.setState({})}));M(this,"onFullscreenChange",()=>{!document.fullscreenElement&&this.state.activeEmbeddable?.state==="active"&&this.setState({activeEmbeddable:null})});M(this,"renderInteractiveSceneCallback",({scrollBars:t})=>{document.querySelector(".excalidraw")&&(t&&(QD=t),this.scheduleImageRefresh())});M(this,"onScroll",Xg(()=>{let{offsetTop:t,offsetLeft:o}=this.getCanvasOffsets();this.setState(i=>i.offsetLeft===o&&i.offsetTop===t?null:{offsetTop:t,offsetLeft:o})},t3));M(this,"onCut",Bo(t=>{!this.isInteractionEnabled()||!this.excalidrawContainerRef.current?.contains(document.activeElement)||va(t.target)||(this.actionManager.executeAction(ex,"keyboard",t),t.preventDefault(),t.stopPropagation())}));M(this,"onCopy",Bo(t=>{!this.isInteractionEnabled()||!this.excalidrawContainerRef.current?.contains(document.activeElement)||va(t.target)||(this.actionManager.executeAction(pu,"keyboard",t),t.preventDefault(),t.stopPropagation())}));M(this,"onTouchStart",t=>{if(this.isInteractionEnabled()){if(dQ&&t.preventDefault(),!BD){BD=!0,t.touches.length===1&&(ED={x:t.touches[0].clientX,y:t.touches[0].clientY}),clearTimeout(dD),dD=window.setTimeout(A.resetTapTwice,HF);return}if(BD&&t.touches.length===1&&ED){let o=t.touches[0];ZA(k(o.clientX,o.clientY),k(ED.x,ED.y))<=TF&&(this.lassoTrail.endPath(),this.deselectElements(),this.handleCanvasDoubleClick({clientX:o.clientX,clientY:o.clientY,type:"touch",altKey:!1,ctrlKey:!1,metaKey:!1,shiftKey:!1})),BD=!1,clearTimeout(dD)}t.touches.length===2&&this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null})}});M(this,"onTouchEnd",t=>{this.isInteractionEnabled()&&(this.resetContextMenuTimer(),t.touches.length>0?this.setState({previousSelectedElementIds:{},selectedElementIds:At(this.state.previousSelectedElementIds,this.state)}):ve.pointers.clear())});M(this,"pasteFromClipboard",Bo(async t=>{if(!this.isInteractionEnabled())return;let o=!!KU,i=document.activeElement,a=this.excalidrawContainerRef.current?.contains(i);if(t&&!a)return;let r=document.elementFromPoint(this.viewport.lastPosition.x,this.viewport.lastPosition.y);if(t&&(!(r instanceof HTMLCanvasElement)||va(i)))return;let n=await Eu(t),g=n.getFiles(),s=await VS(n,o);if(this.props.onPaste)try{if(await this.props.onPaste(s,t,g)===!1)return}catch(l){console.error(l)}await this.insertClipboardContent(s,g,o),this.setActiveTool({type:this.state.preferredSelectionTool.type},{keepSelection:!0}),t?.preventDefault()}));M(this,"addElementsFromPasteOrLibrary",t=>{let o=hs(t.elements,null,{deleteInvisibleElements:!0}),[i,a,r,n]=$A(o),g=Fi(i,r)/2,s=Fi(a,n)/2,l=typeof t.position=="object"?t.position.clientX:t.position==="cursor"?this.viewport.lastPosition.x:this.state.width/2+this.state.offsetLeft,I=typeof t.position=="object"?t.position.clientY:t.position==="cursor"?this.viewport.lastPosition.y:this.state.height/2+this.state.offsetTop,{x:c,y:C}=He({clientX:l,clientY:I},this.state),B=c-g,d=C-s,[E,h]=lo(B,d,this.getEffectiveGridSize()),{duplicatedElements:p}=tC({type:"everything",elements:o.map(S=>YA(S,{x:S.x+E-i,y:S.y+h-a})),randomizeSeed:!t.retainSeed,preserveFrameChildrenOrder:t.preserveFrameChildrenOrder}),u=this.scene.getElementsIncludingDeleted(),m=[...u,...p];m=this.props.onDuplicate?.(m,u)||m,To(m,QA(p));let b=this.getTopLayerFrameAtSceneCoords({x:c,y:C});if(b){let S=m4(p,b);m=ld(m,S,b)}this.scene.replaceAllElements(m),p.forEach(S=>{if(cA(S)&&we(S)){let U=ot(S,this.scene.getElementsMapIncludingDeleted());Io(S,U,this.scene)}}),Vo.loadElementsFonts(p).then(S=>{this.fonts.onLoaded(S)}),t.files&&this.addMissingFiles(t.files);let D=WQ(p);this.store.scheduleCapture(),this.setState({...this.state,openSidebar:this.state.openSidebar&&this.editorInterface.canFitSidebar&&wo.get(hb)?this.state.openSidebar:null,...Wm(D,this.scene.getNonDeletedElements(),this.state)},()=>{t.files&&this.addNewImagesToImageCache()}),this.setActiveTool({type:this.state.preferredSelectionTool.type},{keepSelection:!0}),t.fit&&this.viewport.setViewport({target:p,fit:t.fit,animation:!1,offsets:{ui:!0}})});M(this,"setAppState",(t,o)=>{this.setState(t,o)});M(this,"removePointer",t=>{fB&&this.resetContextMenuTimer(),t.type==="pointercancel"&&this.bucketFill.cancel();let o=ve.pointers.size>=2;ve.pointers.delete(t.pointerId),o&&ve.pointers.size<2&&this.state.scrollConstraints&&this.viewport.releaseOverscroll()});M(this,"toggleLock",(t="ui")=>{this.props.activeTool||(this.state.activeTool.locked||ye("toolbar","toggleLock",`${t} (${this.editorInterface.formFactor==="phone"?"mobile":"desktop"})`),this.setState(o=>({activeTool:{...o.activeTool,...oo(this.state,o.activeTool.locked?{type:this.state.preferredSelectionTool.type}:o.activeTool),locked:!o.activeTool.locked}})))});M(this,"updateFrameRendering",t=>{this.setState(o=>{let i=typeof t=="function"?t(o.frameRendering):t;return{frameRendering:{enabled:i?.enabled??o.frameRendering.enabled,clip:i?.clip??o.frameRendering.clip,name:i?.name??o.frameRendering.name,outline:i?.outline??o.frameRendering.outline,markerName:i?.markerName??o.frameRendering.markerName,markerEnabled:i?.markerEnabled??o.frameRendering.markerEnabled}}})});M(this,"togglePenMode",t=>{this.setState(o=>({penMode:t??!o.penMode,penDetected:!0,currentItemStrokeVariability:o.penDetected?o.currentItemStrokeVariability:"variable"}))});M(this,"revealIfHidden",t=>{!t.length||b0(t,this.canvas.width/window.devicePixelRatio,this.canvas.height/window.devicePixelRatio,{offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,zoom:this.state.zoom},this.scene.getNonDeletedElementsMap(),this.viewport.getOffsets())||this.viewport.setViewport({target:$A(t),fit:"scale-down",animation:{duration:300},offsets:{ui:!0}})});M(this,"emitUserFollowIntent",t=>{this.onUserFollowEmitter.trigger(t),this.props.onUserFollow?.(t)});M(this,"requestUnfollow",()=>{this.props.userToFollow&&this.emitUserFollowIntent({userToFollow:this.props.userToFollow,action:"UNFOLLOW"})});M(this,"setForceRenderAllEmbeddables",t=>{this.shouldRenderAllEmbeddables=t,t&&this.setState({})});M(this,"zoomToFit",(t=this.scene.getNonDeletedElements(),o,i=.03)=>{typeof o>"u"&&(o=Kk()),t||(t=this.scene.getNonDeletedElements()),t.length===0&&(o=1),this.setState(Z1(t,this.state,!1,this,o,i).appState)});M(this,"getColorAtScenePoint",({sceneX:t,sceneY:o})=>{if(!this.canvas)return console.error("Canvas not available"),null;let{x:i,y:a}=oi({sceneX:t,sceneY:o},this.state),r=this.canvas.getContext("2d");if(!r)return console.error("2D context not available"),null;let n=r.getImageData(i,a,1,1).data,[g,s,l,I]=n;return I===0?this.state.theme==="light"?"rgba(255,255,255,1)":"rgba(0,0,0,1)":`rgba(${g}, ${s}, ${l}, ${I/255})`});M(this,"startLineEditor",(t,o=null)=>{!t||!FA(t)||t.isDeleted||this.setState({selectedElementIds:{[t.id]:!0}},()=>{let i=new rA(t,this.scene.getNonDeletedElementsMap());this.setState({selectedLinearElement:{...i,isEditing:!0,selectedPointsIndices:o}})})});M(this,"refreshAllArrows",()=>{JeA(this.scene,this.store)});M(this,"updateContainerSize",Bo(t=>{t.forEach(o=>{let[i,a,r,n]=gl(o,o.width,o.height,!0),[g,s]=$(k(r,n),k((i+r)/2,(a+n)/2),o.angle),{nextWidth:l,nextHeight:I}=_v(o,o,"se",g,s);vI(l,I,o,o,this.scene.getElementsMapIncludingDeleted(),this.scene,"se",{shouldMaintainAspectRatio:!0,shouldResizeFromCenter:!1})})}));M(this,"setToast",t=>{this.setState({toast:t})});M(this,"restoreFileFromShare",async()=>{try{let t=await caches.open("web-share-target"),o=await t.match("shared-file");if(o){let i=await o.blob(),a=new File([i],i.name||"",{type:i.type});this.loadFileToCanvas(a,null),await t.delete("shared-file"),window.history.replaceState(null,om,window.location.pathname)}}catch(t){this.setState({errorMessage:t.message})}});M(this,"addFiles",Bo(t=>{let{addedFiles:o}=this.addMissingFiles(t,void 0,!0);this.clearImageShapeCache(o),this.scene.triggerUpdate(),this.addNewImagesToImageCache()}));M(this,"setMobileModeAllowed",t=>{this.allowMobileMode=t,this.refreshEditorInterface(),this.triggerRender(),this.setDesktopUIMode(this.editorInterface.desktopUIMode)});M(this,"debounceClearHighlightSearchResults",!1);M(this,"selectElements",(t,o=!1)=>{o&&(this.debounceClearHighlightSearchResults=!0,setTimeout(()=>{this.debounceClearHighlightSearchResults=!1},500)),this.updateScene({appState:{...this.state,editingGroupId:null,selectedElementIds:t.reduce((i,a)=>(i[a.id]=!0,i),{}),highlightSearchResult:o},captureUpdate:tA.NEVER,forceFlushSync:!0})});M(this,"bringToFront",t=>{this.selectElements(t),this.updateScene(lL.perform(this.scene.getNonDeletedElements(),this.state))});M(this,"bringForward",t=>{this.selectElements(t),this.updateScene(gL.perform(this.scene.getNonDeletedElements(),this.state,void 0,this))});M(this,"sendToBack",t=>{this.selectElements(t),this.updateScene(sL.perform(this.scene.getNonDeletedElements(),this.state))});M(this,"sendBackward",t=>{this.selectElements(t),this.updateScene(nL.perform(this.scene.getNonDeletedElements(),this.state,void 0,this))});M(this,"addMissingFiles",(t,o=!1,i=!1)=>{let a=o?{}:{...this.files},r={},n=Array.isArray(t)?t:Object.values(t);for(let g of n)if(!(!i&&a[g.id])&&(r[g.id]=g,a[g.id]=g,g.mimeType===LA.svg))try{let s=Nz(Tv(Yz(g.dataURL)),LA.svg);g.dataURL!==s&&(g.version=(g.version??1)+1,g.dataURL=s)}catch(s){console.error(s)}return this.files=a,{addedFiles:r}});M(this,"updateScene",Bo(t=>{let{elements:o,appState:i,collaborators:a,captureUpdate:r}=t;if(r){let n=o||void 0,g=i?rC({...this.store.snapshot.appState,...i}):void 0;this.store.scheduleMicroAction({action:r,elements:n,appState:g})}t.forceFlushSync===!0?(0,$a.flushSync)(()=>{i&&this.setState(i)}):i&&this.setState(i),o&&this.scene.replaceAllElements(o),a&&(this.laserTrails.updateCollabTrails(a),this.setState({collaborators:a}))}));M(this,"applyDeltas",(t,o)=>{let i=nC.squash(...t),a={...this.state},r=new Map(this.scene.getElementsMapIncludingDeleted());return nC.applyTo(i,r,a,o)});M(this,"mutateElement",(t,o,i=!0)=>this.scene.mutateElement(t,o,{informMutation:i,isDragging:!1}));M(this,"triggerRender",t=>{t===!0?this.scene.triggerUpdate():this.setState({})});M(this,"toggleSidebar",({name:t,tab:o,force:i})=>{let a;i===void 0?a=this.state.openSidebar?.name===t&&this.state.openSidebar?.tab===o?null:t:a=i?t:null;let r=a?{name:a}:null;return r&&o&&(r.tab=o),this.setState({openSidebar:r}),!!a});M(this,"updateCurrentCursorPosition",Bo(t=>{this.viewport.lastPosition.x=t.clientX,this.viewport.lastPosition.y=t.clientY}));M(this,"onKeyDown",Bo(t=>{if(!this.isInteractionEnabled()&&!(wC()&&t.key.toLowerCase()==="m"))return;if(this.state.activeTool.type==="selection"&&this.state.resizingElement&&(t.shiftKey||t.altKey)){t.stopPropagation();return}if("Proxy"in window&&(!t.shiftKey&&/^[A-Z]$/.test(t.key)||t.shiftKey&&/^[a-z]$/.test(t.key))&&(t=new Proxy(t,{get(n,g){let s=n[g];return typeof s=="function"?s.bind(n):g==="key"?t.shiftKey?n.key.toUpperCase():n.key.toLowerCase():s}})),!cm(t.target)){if((t.key===z.ESCAPE||t.key===z.ENTER)&&this.state.croppingElementId){this.finishImageCropping();return}let n=WA(this.scene.getNonDeletedElementsMap(),this.state);if(n.length===1&&xe(n[0])&&t.key===z.ENTER){this.startImageCropping(n[0]);return}if(t.key===z.ESCAPE)this.updateEditorAtom(mg,null);else if(t.key===z.TAB&&(document.activeElement===this.excalidrawContainerRef?.current||document.activeElement?.classList.contains(wt.CONVERT_ELEMENT_TYPE_POPUP))){t.preventDefault();let g=bu(n);wo.get(mg)?.type==="panel"&&QY(this,{conversionType:g,direction:t.shiftKey?"left":"right"})&&this.store.scheduleCapture(),g&&this.updateEditorAtom(mg,{type:"panel"})}if(this.flowchart.handleKeyEvent(t))return}if(t[z.CTRL_OR_CMD]&&t.key===z.P&&!t.shiftKey&&!t.altKey){this.setToast({message:L("commandPalette.shortcutHint",{shortcut:Vt("commandPalette")})}),t.preventDefault();return}if(t[z.CTRL_OR_CMD]&&t.key.toLowerCase()===z.V&&(KU=t.shiftKey,clearTimeout(JU),JU=window.setTimeout(()=>{KU=!1},100)),t[z.CTRL_OR_CMD]&&va(t.target)&&(t.code===Ce.MINUS||t.code===Ce.EQUAL)){t.preventDefault();return}if(va(t.target)&&t.key!==z.ESCAPE||Mc(t.key)&&cm(t.target))return;if(wC()&&t.key.toLowerCase()==="m"&&!this.state.editingTextElement&&!cm(t.target)&&this.excalidrawContainerRef?.current?.contains(document.activeElement)){this.handleCanvasContextMenu({button:xr.MAIN,clientX:this.viewport.lastPosition.x,clientY:this.viewport.lastPosition.y,nativeEvent:new MouseEvent("contextmenu"),preventDefault:()=>t.preventDefault()},!0);return}if(t.key===z.QUESTION_MARK){this.setState({openDialog:{name:"help"}});return}else if(t.key.toLowerCase()===z.E&&t.shiftKey&&t[z.CTRL_OR_CMD]){t.preventDefault(),this.setState({openDialog:{name:"imageExport"}});return}if(this.maybeHandlePageScrollKeyDown(t)){t.preventDefault();return}if(this.state.openDialog?.name==="elementLinkSelector")return;if(t.key===z.ALT)if(this.state.activeTool.type==="bucketfill"){this.bucketFill.openTemporaryEyeDropper(),t.preventDefault();return}else ii("COMPLEX_BINDINGS")?this.handleSkipBindMode():sw({app:this,event:t});if(this.actionManager.handleKeyDown(t))return;let o=this.props.viewModeEnabled===!0;if(!o&&this.state.viewModeEnabled&&t.key===z.ESCAPE){this.setActiveTool({type:"selection"});return}if(!o&&!t.ctrlKey&&!t.altKey&&!t.metaKey&&!this.state.newElement&&!this.state.selectionElement&&!this.state.selectedElementsAreBeingDragged){let n=tgA(t.key,this,t.shiftKey);if(this.state.viewModeEnabled&&!AR(n,["laser","hand"]))return;if(n){if(this.state.activeTool.type!==n&&ye("toolbar",n,`keyboard (${this.editorInterface.formFactor==="phone"?"mobile":"desktop"})`),n==="arrow"&&this.state.activeTool.type==="arrow"){let g=this.state.currentItemArrowType===to.sharp?to.round:this.state.currentItemArrowType===to.round?to.elbow:to.sharp;this.setState({currentItemArrowType:g}),this.cursorHints.onArrowTypeCycled(g)}else(n==="arrow"||n==="line")&&this.cursorHints.onToolShortcut(n,/^\d$/.test(t.key)?"digit":"letter");n==="bucketfill"&&this.state.activeTool.type==="bucketfill"?this.bucketFill.cycleBackgroundColor():n==="lasso"&&this.state.activeTool.type==="laser"?this.setActiveTool({type:this.state.preferredSelectionTool.type}):this.setActiveTool({type:n},{toggle:!0}),t.stopPropagation();return}else if(t.key===z.Q){this.toggleLock("keyboard"),t.stopPropagation();return}}if(this.state.viewModeEnabled){t.key!==z.K&&this.setActiveTool({type:"selection"});return}if(t[z.CTRL_OR_CMD]&&!t.repeat&&(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),(0,$a.flushSync)(()=>{this.setState({isBindingEnabled:this.state.bindingPreference!=="enabled"})}),this.arrowText.refresh(),sw({app:this,event:t})),Mc(t.key)){let n=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0}),g=new Set;n.filter(c=>st(c)).filter(c=>{let C=c.startBinding&&!n.some(d=>d.id===c.startBinding?.elementId),B=c.endBinding&&!n.some(d=>d.id===c.endBinding?.elementId);return C||B}).forEach(c=>g.add(c.id)),n=n.filter(c=>!g.has(c.id));let s=this.getEffectiveGridSize()&&(t.shiftKey?NF:this.getEffectiveGridSize())||(t.shiftKey?_8:NF),l=0,I=0;t.key===z.ARROW_LEFT?l=-s:t.key===z.ARROW_RIGHT?l=s:t.key===z.ARROW_UP?I=-s:t.key===z.ARROW_DOWN&&(I=s),n.forEach(c=>{this.scene.mutateElement(c,{x:c.x+l,y:c.y+I},{informMutation:!1,isDragging:!1}),Ft(c,this.scene,{simultaneouslyUpdated:n})}),this.scene.triggerUpdate(),t.preventDefault()}else if(t.key===z.ENTER){let n=this.scene.getSelectedElements(this.state);if(n.length===1){let g=n[0];if(t[z.CTRL_OR_CMD]||ke(g))FA(g)&&(!this.state.selectedLinearElement?.isEditing||this.state.selectedLinearElement.elementId!==g.id)&&(this.store.scheduleCapture(),kA(g)||this.actionManager.executeAction(Nu));else if(cA(g)||vR(g)){let s;cA(g)||(s=g);let l=jy(g,this.scene.getNonDeletedElementsMap()),I=l.x,c=l.y;this.startTextEditing({sceneX:I,sceneY:c,container:s}),t.preventDefault();return}else mA(g)?this.setState({editingFrame:g.id}):ni(g)&&this.setState({activeEmbeddable:{element:g,state:"active"}})}}if(t.key===z.SPACE&&ve.pointers.size===0&&(wc=!0,this.cursor.set(Xe.GRAB),t.preventDefault()),(t.key===z.G||t.key===z.S)&&!t.altKey&&!t[z.CTRL_OR_CMD]){let n=this.scene.getSelectedElements(this.state);if(this.state.activeTool.type==="selection"&&!n.length)return;t.key===z.G&&(ir(this.state.activeTool.type)||n.some(g=>ir(g.type)))&&(this.setState({openPopup:"elementBackground"}),t.stopPropagation()),t.key===z.S&&(this.setState({openPopup:"elementStroke"}),t.stopPropagation())}if(!t[z.CTRL_OR_CMD]&&t.shiftKey&&t.key.toLowerCase()===z.F){let n=this.scene.getSelectedElements(this.state);if(this.state.activeTool.type==="selection"&&!n.length)return;(this.state.activeTool.type==="text"||n.find(g=>cA(g)||vA(g,this.scene.getNonDeletedElementsMap())))&&(t.preventDefault(),this.setState({openPopup:"fontFamily"}))}t[z.CTRL_OR_CMD]&&(t.key===z.BACKSPACE||t.key===z.DELETE)&&this.updateEditorAtom(CE,"clearCanvas");let i=t.key.toLocaleLowerCase(),a=i===z.S&&t.shiftKey&&!t[z.CTRL_OR_CMD],r=t.key===z.I||i===z.G&&t.shiftKey;(a||r)&&this.openEyeDropper({type:a?"stroke":"background"})}));M(this,"onKeyUp",Bo(t=>{if(this.isInteractionEnabled()){if(t.key===z.SPACE&&(this.state.viewModeEnabled&&this.state.activeTool.type!=="laser"||this.state.openDialog?.name==="elementLinkSelector"?this.cursor.set(Xe.GRAB):Cm(this.state.activeTool.type)?this.cursor.reset():(this.cursor.applyForTool(),this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})),wc=!1),t.key===z.ALT&&(this.bucketFill.closeTemporaryEyeDropper(),sw({app:this,event:t})),(t.key===z.ALT&&this.state.bindMode==="skip"||!t[z.CTRL_OR_CMD]&&!wa(this.state))&&(this.setState({bindMode:"orbit"}),this.lastPointerMoveEvent&&ii("COMPLEX_BINDINGS"))){let o=He({clientX:this.lastPointerMoveEvent.clientX,clientY:this.lastPointerMoveEvent.clientY},this.state),i=si(k(o.x,o.y),this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap());if(this.state.selectedLinearElement){let a=rA.getElement(this.state.selectedLinearElement.elementId,this.scene.getNonDeletedElementsMap());st(a)&&this.handleDelayedBindModeChange(a,i)}}if(!t[z.CTRL_OR_CMD]){let o=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==o&&((0,$a.flushSync)(()=>{this.setState({isBindingEnabled:o})}),this.arrowText.refresh()),sw({app:this,event:t})}if(Mc(t.key)){Hm(this.scene.getSelectedElements(this.state).filter(bA),this.scene,this.state);let o=this.scene.getNonDeletedElementsMap();this.scene.getSelectedElements(this.state).filter(Ky).forEach(i=>{i.startBinding&&this.scene.mutateElement(i,{startBinding:{...i.startBinding,...ss(i,o.get(i.startBinding.elementId),"start",o)}}),i.endBinding&&this.scene.mutateElement(i,{endBinding:{...i.endBinding,...ss(i,o.get(i.endBinding.elementId),"end",o)}})}),this.setState({suggestedBinding:null})}this.flowchart.handleKeyEvent(t)}}));M(this,"setActiveTool",(t,o={})=>{let{keepSelection:i=!1}=o;if(!this.isToolSupported(t.type)){console.warn(this.isInteractionEnabled()?`"${t.type}" tool is disabled via "UIOptions.canvasActions.tools.${t.type}"`:`"${t.type}" tool cannot be activated while the editor is non-interactive (see "interaction.enabled.tools")`);return}if(this.props.activeTool&&!this.isSameForcedTool(this.props.activeTool,t)){console.warn(`"${t.type}" tool activation ignored \u2014 the active tool is controlled by the host via "props.activeTool"`);return}this.drawShape.hasPendingGesture()&&this.actionManager.executeAction(sa);let a=cu.includes(t.type),n=o.toggle===!0&&a&&this.state.activeTool.type===t.type?oo(this.state,{...this.state.activeTool.lastActiveTool||{type:this.state.preferredSelectionTool.type},lastActiveTool:null}):a&&this.state.activeTool.type!==t.type?oo(this.state,{...t,lastActiveTool:this.state.activeTool}):oo(this.state,t);n.type==="hand"?this.cursor.set(Xe.GRAB):wc||this.cursor.applyForTool(n),J3(document.activeElement)&&this.focusContainer(),fR(n.type)||this.setState({suggestedBinding:null}),n.type==="image"&&this.onImageToolbarButtonClick(),setTimeout(()=>{this.setState(g=>{let s={snapLines:g.snapLines.length?[]:g.snapLines,originSnapOffset:null,activeEmbeddable:null,selectedLinearElement:Cm(n.type)?g.selectedLinearElement:null,frameToHighlight:null,hoveredArrowTextAnchor:null};return n.type==="freedraw"&&this.store.scheduleCapture(),n.type==="lasso"?{...g,...s,activeTool:n,...i?{}:{selectedElementIds:At({},g),selectedGroupIds:At({},g),editingGroupId:null,multiElement:null}}:n.type!=="selection"?{...g,...s,activeTool:n,selectedElementIds:At(n.type==="mermaid"?this.state.selectedElementIds:{},g),selectedGroupIds:At({},g),editingGroupId:null,multiElement:null}:{...g,...s,activeTool:n}})})});M(this,"setOpenDialog",t=>{this.setState({openDialog:t})});M(this,"isTouchScreenMultiTouchGesture",()=>ve.pointers.size>=2);M(this,"getName",()=>this.state.name||this.props.name||`${L("labels.untitled")}-${VF()}`);M(this,"onGestureStart",Bo(t=>{if(QN(this.state)){ve.initialScale=null;return}this.isNavigationEnabled()&&(t.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null}),ve.initialScale=this.state.zoom.value)}));M(this,"onGestureChange",Bo(t=>{if(!ve.initialScale||!this.isNavigationEnabled()||(t.preventDefault(),this.isTouchScreenMultiTouchGesture()))return;let o=ve.initialScale;o&&this.viewport.translate(i=>({...lC({viewportX:this.viewport.lastPosition.x,viewportY:this.viewport.lastPosition.y,nextZoom:Zr(o*t.scale)},i)}),{zoomPreConstrained:!0,preserveScrollConstraintsSnapBack:!0})}));M(this,"onGestureEnd",Bo(t=>{this.isNavigationEnabled()&&(t.preventDefault(),this.isTouchScreenMultiTouchGesture()&&this.setState({previousSelectedElementIds:{},selectedElementIds:At(this.state.previousSelectedElementIds,this.state)}),ve.initialScale=null)}));M(this,"isHittingTextAutoResizeHandle",(t,o)=>{let i=_m(t,this.state);return!!(i&&!i.isDeleted&&!i.autoResize&&GlA(o,i,this.state.zoom.value,this.editorInterface.formFactor))});M(this,"handleTextAutoResizeHandlePointerDown",(t,o)=>{let i=_m(t,this.state);return!i||!this.isHittingTextAutoResizeHandle(t,o)?!1:(this.actionManager.executeAction(NY,"ui",i),this.cursor.reset(),!0)});M(this,"startTextEditing",({sceneX:t,sceneY:o,insertAtParentCenter:i=!0,container:a,autoEdit:r=!0,initialCaretSceneCoords:n,arrowEndpoint:g})=>{let s=!1,l=g&&this.arrowText.getTextBinding(g,this.getCurrentItemStrokeWidth("text"));l&&(a=null,i=!1,t=l.anchor[0],o=l.anchor[1]);let I=i&&this.getTextWysiwygSnappedToCenterPosition(t,o,this.state,a);a&&I&&(vA(a,this.scene.getNonDeletedElementsMap())||(s=!0));let c=l?null:this.getSelectedTextElement(a)||this.getTextElementAtPosition(t,o),C=c?.fontFamily||this.state.currentItemFontFamily,B=c?.lineHeight||Ko(C),d=vS(this.state.currentItemFontSize,this.state.zoom.value);if(!c&&s&&a&&!bA(a)){let b=zc(se({fontSize:d,fontFamily:C}),B),D=zy(d,B),S=Math.max(a.height,D),U=Math.max(a.width,b);this.scene.mutateElement(a,{height:S,width:U}),t=a.x+U/2,o=a.y+S/2,I&&(I=this.getTextWysiwygSnappedToCenterPosition(t,o,this.state,a))}let E=this.getTextCreationGridPoint(t,o),h=l?{x:t,y:o}:I?{x:I.elementCenterX,y:I.elementCenterY}:c?{x:t,y:o}:{x:E?.x??t,y:E===null?o-kn(d,B)/2:E.y},p=this.getTopLayerFrameAtSceneCoords({x:h.x,y:h.y}),u=p&&(!s||!a||a.frameId===p.id)?p.id:null,m=c||Co({x:h.x,y:h.y,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("text"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,text:"",rawText:"",fontSize:d,fontFamily:C,textAlign:l?.textAlign??(I?"center":this.state.currentItemTextAlign),verticalAlign:l?.verticalAlign??(I?ft.MIDDLE:YB),containerId:s?a?.id:void 0,groupIds:a?.groupIds??[],lineHeight:B,angle:a?bA(a)?0:a.angle:0,frameId:u});if(!c&&s&&a&&this.scene.mutateElement(a,{boundElements:(a.boundElements||[]).concat({type:"text",id:m.id})}),this.setState({editingTextElement:m}),!c)if(a&&s){let w=this.scene.getElementIndex(a.id);this.scene.insertElementsAtIndex([m],w+1)}else this.insertNewElement(m);g&&l&&this.arrowText.bindText(g,m,l.fixedPoint),r||c||a?this.handleTextWysiwyg(m,{isExistingElement:!!c,initialCaretSceneCoords:c?n:null}):this.setState({newElement:m,multiElement:null})});M(this,"debounceDoubleClickTimestamp",0);M(this,"startImageCropping",t=>{this.store.scheduleCapture(),this.setState({croppingElementId:t.id})});M(this,"finishImageCropping",()=>{this.state.croppingElementId&&(this.store.scheduleCapture(),this.setState({croppingElementId:null}))});M(this,"shouldHandleBrowserCanvasDoubleClick",t=>{if(t==="touch"||this.lastCompletedCanvasClicks.length===0)return!0;if(this.lastCompletedCanvasClicks.length<2)return!1;let[o,i]=this.lastCompletedCanvasClicks;return ZA(k(o.x,o.y),k(i.x,i.y))<=TF});M(this,"handleCanvasDoubleClick",t=>{if(!this.isInteractionEnabled()||this.state.editingTextElement||!this.shouldHandleBrowserCanvasDoubleClick(t.type)||this.state.multiElement)return;if(this.state.penMode&&yeA()&&this.lastPointerDownEvent?.pointerType==="touch"&&this.state.activeTool.type!=="selection"){let n=Date.now();if(n-this.debounceDoubleClickTimestamp<200)return;this.debounceDoubleClickTimestamp=n,this.setActiveTool({type:"eraser"},{toggle:!0});return}if(this.state.activeTool.type!==this.state.preferredSelectionTool.type&&this.state.activeTool.type!=="autoshape")return;let o=this.scene.getSelectedElements(this.state),{x:i,y:a}=He(t,this.state);if(o.length===1&&FA(o[0])){let n=o[0];if((t[z.CTRL_OR_CMD]&&Ky(n)||ke(n))&&(!this.state.selectedLinearElement?.isEditing||this.state.selectedLinearElement.elementId!==n.id)){this.actionManager.executeAction(Nu);return}else if(this.state.selectedLinearElement&&kA(o[0])){let g=rA.getSegmentMidpointHitCoords(this.state.selectedLinearElement,{x:i,y:a},this.state,this.scene.getNonDeletedElementsMap()),s=g?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,g,this.scene.getNonDeletedElementsMap()):-1;if(s&&s>-1){this.store.scheduleCapture(),rA.deleteFixedSegment(o[0],this.scene,s);let l=rA.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:i,y:a},this.state,this.scene.getNonDeletedElementsMap()),I=l?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,l,this.scene.getNonDeletedElementsMap()):null;this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,segmentMidpoint:{index:I,value:g,added:!1}},segmentMidPointHoveredCoords:l}});return}}else if(this.state.selectedLinearElement?.isEditing&&this.state.selectedLinearElement.elementId===n.id&&ke(n))return}if(o.length===1&&xe(o[0])){this.startImageCropping(o[0]);return}if(this.cursor.reset(),$n(this.state).length>0){let n=this.getElementAtPosition(i,a),g=n&&tv(n,this.state.selectedGroupIds);if(g){this.store.scheduleCapture(),this.setState(s=>({...s,...So({editingGroupId:g,selectedElementIds:{[n.id]:!0}},this.scene.getNonDeletedElements(),s,this)}));return}}if(this.cursor.reset(),!this.state.viewModeEnabled){let n=this.getElementAtPosition(i,a);if(Oo(n)){this.setState({activeEmbeddable:{element:n,state:"active"}});return}if(!this.state.selectedLinearElement?.isEditing){let g=!t[z.CTRL_OR_CMD]&&this.getTextBindableContainerAtPosition(i,a);if(g&&(this.state.activeTool.type==="autoshape"||Zt(g)||!mt(g.backgroundColor)||Aa({point:k(i,a),element:g,elementsMap:this.scene.getNonDeletedElementsMap(),threshold:this.getElementHitThreshold(g)}))){let s=jy(g,this.scene.getNonDeletedElementsMap());i=s.x,a=s.y}if(HeA()){let s=null,l=this.scene.getSelectedElements(this.state);if(l.length===1?cA(l[0])?s=l[0]:g?s=vA(l[0],this.scene.getNonDeletedElementsMap()):s=this.getTextElementAtPosition(i,a):s=this.getTextElementAtPosition(i,a),!s)return}this.startTextEditing({sceneX:i,sceneY:a,insertAtParentCenter:!t.altKey,container:g||null})}}});M(this,"handleCanvasClick",t=>{if(this.isInteractionEnabled()){if(t.button!==xr.MAIN){this.lastCompletedCanvasClicks=[];return}this.lastCompletedCanvasClicks=[...this.lastCompletedCanvasClicks.slice(-1),{x:t.clientX,y:t.clientY}]}});M(this,"getElementLinkAtPosition",(t,o)=>{if(o&&o.locked)return;let i=this.scene.getNonDeletedElements(),a=-1;for(let r=i.length-1;r>=0;r--){let n=i[r];if(o&&n.id===o.id&&(a=r),(n.link||n.hasTextLink)&&r>=a&&fk(n,this.scene.getNonDeletedElementsMap(),this.state,k(t.x,t.y),this.editorInterface.formFactor==="phone"))return n}});M(this,"handleElementLinkClick",t=>{let o=ZA(k(this.lastPointerDownEvent.clientX,this.lastPointerDownEvent.clientY),k(this.lastPointerUpEvent.clientX,this.lastPointerUpEvent.clientY));if(!this.hitLinkElement||o>Al)return;let i=He(this.lastPointerDownEvent,this.state),a=this.scene.getNonDeletedElementsMap(),r=fk(this.hitLinkElement,a,this.state,k(i.x,i.y),this.editorInterface.formFactor==="phone"),n=He(this.lastPointerUpEvent,this.state),g=fk(this.hitLinkElement,a,this.state,k(n.x,n.y),this.editorInterface.formFactor==="phone");if(r&&g){rx();let s=this.hitLinkElement.link;if(s||this.hitLinkElement.hasTextLink){s=ai(s??"");let l;if(this.props.onLinkOpen&&(l=Iy("excalidraw-link",t.nativeEvent),this.props.onLinkOpen({...this.hitLinkElement,link:s},l)),!l?.defaultPrevented){let I=hy(s)?"_self":"_blank",c=window.open(void 0,I);c&&(c.opener=null,c.location=s)}}}});M(this,"applyElementLinkHoverAffordance",t=>this.hitLinkElement&&!this.state.selectedElementIds[this.hitLinkElement.id]?(this.cursor.set(Xe.POINTER),KgA(this.hitLinkElement,this.state,this.scene.getNonDeletedElementsMap()),this.props.onLinkHover&&this.props.onLinkHover(this.hitLinkElement,t),!0):(rx(),!1));M(this,"maybeHandleElementLinkClick",(t,o)=>{if(this.editorInterface.isTouchScreen){let i=this.getElementAtPosition(o.x,o.y,{includeLockedElements:!0});this.hitLinkElement=this.getElementLinkAtPosition(o,i)}return this.hitLinkElement&&this.lastPointerDownEvent&&!this.state.selectedElementIds[this.hitLinkElement.id]?(this.handleElementLinkClick(t),!0):!1});M(this,"handleInteractiveContentPointerMove",t=>{let o=He(t,this.state),i=this.getElementAtPosition(o.x,o.y,{includeLockedElements:!0});if(this.isEmbedsEnabled()){let a=i?.locked?null:i;if(this.handleIframeLikeElementHover({hitElement:a,scenePointer:o,moveEvent:t}))return}this.hitLinkElement=this.isLinksEnabled()?this.getElementLinkAtPosition(o,i):void 0,this.applyElementLinkHoverAffordance(t)||this.cursor.reset()});M(this,"handleInteractiveContentPointerUp",t=>{if(this.lastPointerUpEvent=t,this.isEmbedsEnabled()&&this.handleIframeLikeCenterClick())return;let o=He(t,this.state);this.isLinksEnabled()&&this.maybeHandleElementLinkClick(t,o)||this.state.activeEmbeddable?.state==="active"&&this.setState({activeEmbeddable:null})});M(this,"getTopLayerFrameAtSceneCoords",(t,o)=>{let i=this.scene.getNonDeletedElementsMap(),a=this.scene.getNonDeletedFramesLikes().filter(g=>!g.locked&&lv(t,g,i)&&g.frameRole!=="marker");if(!a.length)return null;let r=a.at(-1),n=this.getElementsAtPosition(t.x,t.y,{includeLockedElements:!0}).findLast(g=>!o?.excludeElementIds?.[g.id]);if(n){if(mA(n)&&!n.locked)return r;let g=this.scene.getElementIndex(n.id),s=this.scene.getElementIndex(r.id);if(g!==-1&&s!==-1&&g<=s)return r;let l=o?.currentFrameId?a.find(I=>I.id===o.currentFrameId)??null:null;return l||(n.frameId?a.find(I=>I.id===n.frameId)??null:null)}return r});M(this,"updateFrameToHighlight",t=>{this.state.frameToHighlight!==t&&this.setState({frameToHighlight:t})});M(this,"maybeUpdateFrameToHighlightOnPointerMove",(t,o)=>{this.state.newElement||this.state.multiElement||this.state.selectionElement||this.state.selectedElementsAreBeingDragged||this.updateFrameToHighlight(!o&&B5(this.state.activeTool.type)?this.getTopLayerFrameAtSceneCoords(t):null)});M(this,"insertNewElements",(t,o)=>{if(!t.length)return;let i=[];for(let a of t){let r=i[i.length-1];r?.[0].frameId===a.frameId?r.push(a):i.push([a])}for(let a of i){let r=a[0].frameId,n=r?Vm(this.scene.getElementsIncludingDeleted(),r):null;this.scene.insertElementsAtIndex(a,o??n)}});M(this,"insertNewElement",(t,o)=>{this.insertNewElements([t],o);let i=t.frameId?this.scene.getNonDeletedElement(t.frameId):null;this.updateFrameToHighlight(i&&mA(i)?i:null)});M(this,"handleCanvasPointerMove",t=>{if(!this.isInteractionEnabled()){this.isToolSupported(this.state.activeTool.type)&&this.savePointer(t.clientX,t.clientY,this.state.cursorButton),this.isNavigationEnabled()&&this.updateMultiTouchGesture(t),(this.isLinksEnabled()||this.isEmbedsEnabled())&&!qs&&this.handleInteractiveContentPointerMove(t);return}this.savePointer(t.clientX,t.clientY,this.state.cursorButton),this.lastPointerMoveEvent=t.nativeEvent;let o=He(t,this.state),{x:i,y:a}=o;if(this.lastPointerMoveCoords={x:i,y:a},this.updateMultiTouchGesture(t),wc||qs||HU||Uw(this.state))return;let n=OY(QD,t.clientX-this.state.offsetLeft,t.clientY-this.state.offsetTop).isOverEither,g=this.state.activeTool.type==="freedraw"&&t.pointerType==="pen";if(!this.state.newElement&&!this.state.selectionElement&&!this.state.selectedElementsAreBeingDragged&&!this.state.multiElement)if(n){let E=g&&this.interactiveCanvas&&LeA()?"none":Xe.AUTO;this.cursor.set(E)}else this.cursor.applyForTool();if(this.maybeUpdateFrameToHighlightOnPointerMove({x:i,y:a},n),!this.state.newElement&&LlA(this.state.activeTool.type)){let{originOffset:E,snapLines:h}=klA(this.scene.getNonDeletedElements(),this,{x:i,y:a},t,this.scene.getNonDeletedElementsMap());this.setState(p=>{let u=fQ(p.snapLines,h),m=p.originSnapOffset?fQ(p.originSnapOffset,E):E;return p.snapLines===u&&p.originSnapOffset===m?null:{snapLines:u,originSnapOffset:m}})}else!this.state.newElement&&!this.state.selectedElementsAreBeingDragged&&!this.state.selectionElement&&this.setState(E=>E.snapLines.length?{snapLines:[]}:null);if(this.state.selectedLinearElement?.isEditing&&!this.state.selectedLinearElement.isDragging){let E=this.state.newElement?null:rA.handlePointerMoveInEditMode(t,i,a,this);E&&E!==this.state.selectedLinearElement&&(0,$a.flushSync)(()=>{this.setState({selectedLinearElement:E})})}if(bR(this.state.activeTool.type)){let{newElement:E}=this.state;if(!E&&wa(this.state)){let h=k(i,a),p=this.scene.getNonDeletedElementsMap(),u=si(h,this.scene.getNonDeletedElements(),p,Mi(this.state.zoom));u?this.setState({suggestedBinding:{element:u,midPoint:Wc(h,u,p,this.state.zoom)}}):this.state.suggestedBinding&&this.setState({suggestedBinding:null})}}if(this.state.multiElement&&this.state.selectedLinearElement){let{multiElement:E,selectedLinearElement:h}=this.state,{x:p,y:u,points:m}=E,w=m[m.length-1],{lastCommittedPoint:b}=h;if(this.cursor.applyForTool(),w===b)ZA(k(i-p,a-u),w)>=sQ?(this.store.scheduleCapture(),(0,$a.flushSync)(()=>{UA(this.state.selectedLinearElement?.initialState,"initialState must be set"),this.setState({selectedLinearElement:{...this.state.selectedLinearElement,lastCommittedPoint:m[m.length-1],selectedPointsIndices:[E.points.length],initialState:{...this.state.selectedLinearElement.initialState,lastClickedPoint:E.points.length}}})}),this.scene.mutateElement(E,{points:[...m,k(i-p,a-u)]},{informMutation:!1,isDragging:!1})):this.cursor.set(Xe.POINTER);else if(m.length>2&&b&&ZA(k(i-p,a-u),b)<sQ){this.cursor.set(Xe.POINTER),this.scene.mutateElement(E,{points:m.slice(0,-1)},{informMutation:!1,isDragging:!1});let D=E.points.length-1;this.setState({selectedLinearElement:{...h,selectedPointsIndices:h.selectedPointsIndices?[...new Set(h.selectedPointsIndices.map(S=>Math.min(S,D)))]:h.selectedPointsIndices,lastCommittedPoint:E.points[D],initialState:{...h.initialState,lastClickedPoint:D}}})}else{Ci(m,this.state.zoom.value)&&this.cursor.set(Xe.POINTER);let D=this.scene.getNonDeletedElementsMap();if(Ky(E)){let U=si(k(i,a),this.scene.getNonDeletedElements(),D);ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(E,U)}UA(this.state.selectedLinearElement,"Expected selectedLinearElement to be set to operate on a linear element");let S=rA.handlePointerMove(t.nativeEvent,this,i,a,this.state.selectedLinearElement);S&&this.setState(S)}return}if(this.state.activeTool.type==="arrow"&&!this.state.newElement){let E=k(i,a),h=si(E,this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap(),Mi(this.state.zoom)),p=this.scene.getNonDeletedElementsMap();h&&!gi(E,h,p)&&this.setState({suggestedBinding:{element:h,midPoint:Wc(E,h,p,this.state.zoom)}})}let s=!!t.buttons,l=this.state.activeTool.type==="laser";if(s||!l&&this.state.activeTool.type!=="selection"&&this.state.activeTool.type!=="lasso"&&this.state.activeTool.type!=="text"&&this.state.activeTool.type!=="eraser")return;let I=this.scene.getNonDeletedElements(),c=this.scene.getSelectedElements(this.state);if(this.isHittingTextAutoResizeHandle(c,o)){this.cursor.set(Xe.POINTER);return}if(c.length===1&&!n&&!this.state.selectedLinearElement?.isEditing){if(this.state.selectedLinearElement&&this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,i,a),(!this.state.selectedLinearElement||this.state.selectedLinearElement.hoverPointIndex===-1)&&this.state.openDialog?.name!=="elementLinkSelector"&&!(c.length===1&&kA(c[0]))&&!(FA(c[0])&&(this.editorInterface.userAgent.isMobileDevice||c[0].points.length===2))){let E=Xv(I,this.state,i,a,this.state.zoom,t.pointerType,this.scene.getNonDeletedElementsMap(),this.editorInterface);if(E&&E.transformHandleType){this.cursor.set(AM(E));return}}}else if(c.length>1&&!n&&this.state.openDialog?.name!=="elementLinkSelector"){let E=$v($A(c),i,a,this.state.zoom,t.pointerType,this.editorInterface);if(E){this.cursor.set(AM({transformHandleType:E}));return}}if(ig(this.state))return;let C=this.getElementAtPosition(i,a,{preferSelected:!0,includeLockedElements:!0}),B=null;C&&C.locked?B=null:B=C;let d=this.arrowText.updateHoveredAnchor(o);if(this.handleIframeLikeElementHover({hitElement:B,scenePointer:o,moveEvent:t})||(this.hitLinkElement=this.getElementLinkAtPosition(o,C)),!this.applyElementLinkHoverAffordance(t)){if(l)return;B&&(B.link||ni(B))&&this.state.selectedElementIds[B.id]&&!this.state.contextMenu&&!this.state.showHyperlinkPopup?this.setState({showHyperlinkPopup:"info"}):this.state.activeTool.type==="text"?this.cursor.set(d?Xe.POINTER:cA(B)?Xe.TEXT:Xe.CROSSHAIR):!t[z.CTRL_OR_CMD]&&this.isHittingCommonBoundingBoxOfSelectedElements(o,c)?this.cursor.set(Xe.MOVE):this.state.viewModeEnabled?this.cursor.set(Xe.GRAB):this.state.openDialog?.name==="elementLinkSelector"?this.cursor.set(Xe.AUTO):n?this.cursor.set(Xe.AUTO):!t[z.CTRL_OR_CMD]&&B?.id!==this.state.editingTextElement?.id?(B||this.isHittingCommonBoundingBoxOfSelectedElements(o,c))&&!B?.locked&&(!B||!kA(B)||!(B.startBinding||B.endBinding))&&(this.state.activeTool.type!=="lasso"||c.length>0)&&this.cursor.set(Xe.MOVE):this.cursor.set(Xe.AUTO),this.state.selectedLinearElement&&this.handleHoverSelectedLinearElement(this.state.selectedLinearElement,i,a)}this.state.openDialog?.name==="elementLinkSelector"&&B?this.setState(E=>({hoveredElementIds:fQ(E.hoveredElementIds,So({editingGroupId:E.editingGroupId,selectedElementIds:{[B.id]:!0}},this.scene.getNonDeletedElements(),E,this).selectedElementIds)})):this.state.openDialog?.name==="elementLinkSelector"&&!B&&this.setState(E=>({hoveredElementIds:fQ(E.hoveredElementIds,{})}))});M(this,"handleEraser",(t,o)=>{let i=this.eraserTrail.addPointToPath(o.x,o.y,t.altKey);this.elementsPendingErasure=new Set(i),this.triggerRender()});M(this,"handleTouchMove",t=>{this.resetContextMenuTimer(),this.isInteractionEnabled()&&(hD=!0)});M(this,"handleCanvasPointerDown",t=>{if(globalThis.__forsionPenInput?.down(t,this.state,ve))return;if(wC()&&t.pointerType==="mouse"&&t.button===xr.SECONDARY&&!this.state.editingTextElement){let E=h=>{h.preventDefault()};window.addEventListener("contextmenu",E,{once:!0}),this.startRightClickPanning(t);return}if(!!t.target?.closest?.(".excalidraw__embeddable-container")||this.focusContainer(),!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)){(this.isLinksEnabled()||this.isEmbedsEnabled())&&(this.lastPointerDownEvent=t),this.isNavigationEnabled()&&(this.updateGestureOnPointerDown(t),qs||this.handleCanvasPanUsingWheelOrSpaceDrag(t));return}let i=this.scene.getSelectedElements(this.state);if(!t.ctrlKey){let E=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==E&&this.setState({isBindingEnabled:E})}let a=He(t,this.state),{x:r,y:n}=a;this.lastPointerMoveCoords={x:r,y:n};let g=t.target;if(g.setPointerCapture&&g.setPointerCapture(t.pointerId),this.maybeCleanupAfterMissingPointerUp(t.nativeEvent),this.state.activeTool.type!=="laser"&&this.requestUnfollow(),this.state.searchMatches&&(this.setState(E=>({searchMatches:E.searchMatches&&{focusedId:null,matches:E.searchMatches.matches.map(h=>({...h,focus:!1}))}})),this.updateEditorAtom(SH,null)),wo.get(mg)&&this.updateEditorAtom(mg,null),this.state.contextMenu&&this.setState({contextMenu:null}),this.state.snapLines&&this.setAppState({snapLines:[]}),this.state.openPopup&&this.setState({openPopup:null}),this.updateGestureOnPointerDown(t),t.pointerType==="touch"&&this.state.newElement&&this.state.newElement.type==="freedraw"){let E=this.state.newElement;this.updateScene({...E.points.length<10?{elements:this.scene.getElementsIncludingDeleted().filter(h=>h.id!==E.id)}:{},appState:{newElement:null,editingTextElement:null,suggestedBinding:null,selectedElementIds:At(Object.keys(this.state.selectedElementIds).filter(h=>h!==E.id).reduce((h,p)=>(h[p]=this.state.selectedElementIds[p],h),{}),this.state)},captureUpdate:this.state.openDialog?.name==="elementLinkSelector"?tA.EVENTUALLY:tA.NEVER});return}let s=document.getSelection();if(s?.anchorNode&&s.removeAllRanges(),this.maybeOpenContextMenuAfterPointerDownOnTouchDevices(t),!this.state.penDetected&&t.pointerType==="pen"&&this.setState(E=>({penMode:!0,penDetected:!0,currentItemStrokeVariability:"variable"})),!this.editorInterface.isTouchScreen&&["pen","touch"].includes(t.pointerType)&&(this.editorInterface=wQ(this.editorInterface,{isTouchScreen:!0})),qs||(this.lastPointerDownEvent=t,this.setState({lastPointerDownWith:t.pointerType,cursorButton:"down"}),this.savePointer(t.clientX,t.clientY,"down"),this.handleCanvasPanUsingWheelOrSpaceDrag(t)))return;if(t.button===xr.ERASER&&this.isInteractionEnabled()&&!this.props.activeTool&&this.state.activeTool.type!==po.eraser){this.setState({activeTool:oo(this.state,{type:po.eraser,lastActiveTool:this.state.activeTool})},()=>{this.handleCanvasPointerDown(t);let E=()=>{h(),p?.(),ig(this.state)&&this.setState({activeTool:oo(this.state,{...this.state.activeTool.lastActiveTool||{type:po.selection},lastActiveTool:null})})},h=_e(window,"pointerup",E,{once:!0}),p;requestAnimationFrame(()=>{p=this.missingPointerEventCleanupEmitter.once(E)})});return}if(t.button!==xr.MAIN&&t.button!==xr.TOUCH&&t.button!==xr.ERASER||ve.pointers.size>1)return;let l=this.initialPointerDownState(t);if(this.setState({selectedElementsAreBeingDragged:!1}),this.handleTextAutoResizeHandlePointerDown(i,l.origin)||this.handleDraggingScrollBar(t,l)||(this.clearSelectionIfNotUsingSelection(),this.handleSelectionOnPointerDown(t,l))||!(!this.state.penMode||t.pointerType!=="touch"||this.state.activeTool.type==="selection"||this.state.activeTool.type==="lasso"||this.state.activeTool.type==="text"||this.state.activeTool.type==="image"))return;if(this.state.activeTool.type==="lasso"){let E=l.hit.element&&this.isASelectedElement(l.hit.element);(t.altKey&&t[z.CTRL_OR_CMD]&&!l.resize.handleType||!l.hit.hasHitCommonBoundingBoxOfSelectedElements&&!l.resize.handleType&&!E)&&(this.lassoTrail.hasCurrentTrail||this.lassoTrail.startPath(l.origin.x,l.origin.y,t.shiftKey),l.drag.blockDragging=this.editorInterface.formFactor==="desktop"),this.editorInterface.formFactor!=="desktop"&&l.hit.element&&!E&&(this.setState(u=>{let m={...u.selectedElementIds,[l.hit.element.id]:!0},w=[];Object.keys(u.selectedElementIds).forEach(D=>{let S=this.scene.getElement(D);S&&w.push(S)});let b=l.hit.element;if(mA(b))hi(w,b.id).forEach(D=>{delete m[D.id]});else if(b.frameId)m[b.frameId]&&delete m[b.id];else{let D=b.groupIds,S=new Set(D.flatMap(U=>be(this.scene.getNonDeletedElements(),U)).filter(U=>mA(U)).map(U=>U.id));S.size>0&&w.forEach(U=>{U.frameId&&S.has(U.frameId)&&(delete m[U.id],U.groupIds.flatMap(v=>be(this.scene.getNonDeletedElements(),v)).forEach(v=>{delete m[v.id]}))})}return{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),showHyperlinkPopup:b.link||ni(b)?"info":!1}}),l.hit.wasAddedToSelection=!0)}else this.state.activeTool.type==="text"?this.handleTextOnPointerDown(t,l):this.state.activeTool.type==="arrow"||this.state.activeTool.type==="line"?this.handleLinearElementOnPointerDown(t,this.state.activeTool.type,l):this.state.activeTool.type==="freedraw"?this.handleFreeDrawElementOnPointerDown(t,this.state.activeTool.type,l):this.state.activeTool.type==="custom"?this.cursor.applyForTool():this.state.activeTool.type===po.frame||this.state.activeTool.type===po.magicframe?this.createFrameElementOnPointerDown(l,this.state.activeTool.type):this.state.activeTool.type==="laser"?this.laserTrails.startPath(l.lastCoords.x,l.lastCoords.y):this.state.activeTool.type==="autoshape"?this.drawShape.handlePointerDown(l):this.state.activeTool.type===po.bucketfill?this.bucketFill.handlePointerDown(a):this.state.activeTool.type!=="eraser"&&this.state.activeTool.type!=="hand"&&this.state.activeTool.type!=="mermaid"&&this.state.activeTool.type!=="image"&&this.createGenericElementOnPointerDown(this.state.activeTool.type,l);this.props?.onPointerDown?.(this.state.activeTool,l),this.onPointerDownEmitter.trigger(this.state.activeTool,l,t),this.state.activeTool.type==="eraser"&&this.eraserTrail.startPath(l.lastCoords.x,l.lastCoords.y);let[c,C]=(globalThis.__forsionPenInput?.wrap??((a,b)=>[a,b]))(this.onPointerMoveFromPointerDownHandler(l),this.onPointerUpFromPointerDownHandler(l),l,t,this.state,A=>He(A,this.state)),B=this.onKeyDownFromPointerDownHandler(l),d=this.onKeyUpFromPointerDownHandler(l);this.missingPointerEventCleanupEmitter.once(E=>C(E||t.nativeEvent)),(!this.state.viewModeEnabled||this.isActiveToolPointerCapturing())&&(window.addEventListener("pointermove",c),window.addEventListener("pointerup",C),window.addEventListener("keydown",B),window.addEventListener("keyup",d),l.eventListeners.onMove=c,l.eventListeners.onUp=C,l.eventListeners.onKeyUp=d,l.eventListeners.onKeyDown=B)});M(this,"handleCanvasPointerUp",t=>{if(!this.isInteractionEnabled()){(this.isLinksEnabled()||this.isEmbedsEnabled())&&this.handleInteractiveContentPointerUp(t);return}if(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),this.removePointer(t),this.lastPointerUpIsDoubleClick=this.isDoubleClick(this.lastPointerUpEvent,t),this.lastPointerUpEvent=t,!t.ctrlKey){let r=this.state.bindingPreference==="enabled";this.state.isBindingEnabled!==r&&this.setState({isBindingEnabled:r})}let o=He({clientX:t.clientX,clientY:t.clientY},this.state),{x:i,y:a}=o;this.lastPointerMoveCoords={x:i,y:a},!this.handleIframeLikeCenterClick()&&!this.maybeHandleElementLinkClick(t,o)&&this.state.viewModeEnabled&&this.setState({activeEmbeddable:null,selectedElementIds:{}})});M(this,"maybeOpenContextMenuAfterPointerDownOnTouchDevices",t=>{KeA()||t.pointerType==="touch"&&(hD=!1,fB?hD=!0:fB=window.setTimeout(()=>{fB=0,!hD&&!this.state.isResizing&&this.handleCanvasContextMenu(t)},e3))});M(this,"resetContextMenuTimer",()=>{clearTimeout(fB),fB=0,hD=!1});M(this,"maybeCleanupAfterMissingPointerUp",t=>{Up?.(),this.missingPointerEventCleanupEmitter.trigger(t).clear()});M(this,"handleCanvasPanUsingWheelOrSpaceDrag",t=>{if(!(ve.pointers.size<=1&&((t.button===xr.WHEEL||t.button===xr.MAIN&&wc||Uw(this.state)||MeA(this.state,t))&&(this.isInteractionEnabled()||this.isNavigationEnabled())||this.state.viewModeEnabled&&!this.isActiveToolPointerCapturing())))return!1;qs=!0,this.focusContainer(),this.state.editingTextElement||t.preventDefault();let o=!1,i=typeof window===void 0?!1:/Linux/.test(window.navigator.platform);this.cursor.set(Xe.GRABBING);let{clientX:a,clientY:r}=t,n=Ib(s=>{let l=a-s.clientX,I=r-s.clientY;if(a=s.clientX,r=s.clientY,i&&!o&&(Math.abs(l)>1||Math.abs(I)>1)){o=!0;let c=B=>{document.body.removeEventListener("paste",c),B.stopPropagation()},C=()=>{setTimeout(()=>{document.body.removeEventListener("paste",c),window.removeEventListener("pointerup",C)},100)};document.body.addEventListener("paste",c),window.addEventListener("pointerup",C)}this.viewport.translate({scrollX:this.state.scrollX-l/this.state.zoom.value,scrollY:this.state.scrollY-I/this.state.zoom.value})}),g=Bo(Up=()=>{Up=null,qs=!1,wc||this.cursor.reset(),this.setState({cursorButton:"up"},this.viewport.releaseOverscroll),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",g),window.removeEventListener("blur",g),n.flush()});return window.addEventListener("blur",g),window.addEventListener("pointermove",n,{passive:!0}),window.addEventListener("pointerup",g),!0});M(this,"updateMultiTouchGesture",t=>{ve.pointers.has(t.pointerId)&&ve.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY});let o=ve.initialScale;if(ve.pointers.size===2&&ve.lastCenter&&o&&ve.initialDistance){let i=HY(ve.pointers),a=i.x-ve.lastCenter.x,r=i.y-ve.lastCenter.y;ve.lastCenter=i;let n=KY(Array.from(ve.pointers.values())),g=!this.state.allowPinchZoom&&this.state.activeTool.type==="freedraw"&&this.state.penMode?1:n/ve.initialDistance,s=g?Zr(o*g):this.state.zoom.value;this.setState(l=>{let I=lC({viewportX:i.x,viewportY:i.y,nextZoom:s},l),c=I.zoom.value;return this.viewport.translate({zoom:I.zoom,scrollX:I.scrollX+2*a/c,scrollY:I.scrollY+2*r/c,shouldCacheIgnoreZoom:!0},{zoomPreConstrained:!0}),null}),this.viewport.isLockedTransitionPending||this.resetShouldCacheIgnoreZoomDebounced()}else ve.lastCenter=ve.initialDistance=ve.initialScale=null});M(this,"clearSelectionIfNotUsingSelection",()=>{Cm(this.state.activeTool.type)||this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})});M(this,"handleSelectionOnPointerDown",(t,o)=>{if(Cm(this.state.activeTool.type)){let i=this.scene.getNonDeletedElements(),a=this.scene.getNonDeletedElementsMap(),r=this.scene.getSelectedElements(this.state);if(r.length===1&&!this.state.selectedLinearElement?.isEditing&&!kA(r[0])&&!(FA(r[0])&&(this.editorInterface.userAgent.isMobileDevice||r[0].points.length===2))&&!(this.state.selectedLinearElement&&this.state.selectedLinearElement.hoverPointIndex!==-1)){let n=Xv(i,this.state,o.origin.x,o.origin.y,this.state.zoom,t.pointerType,this.scene.getNonDeletedElementsMap(),this.editorInterface);n!=null&&(n.transformHandleType==="rotation"?(this.setState({resizingElement:n.element}),o.resize.handleType=n.transformHandleType):(this.state.croppingElementId||this.setState({resizingElement:n.element}),o.resize.handleType=n.transformHandleType))}else r.length>1&&(o.resize.handleType=$v($A(r),o.origin.x,o.origin.y,this.state.zoom,t.pointerType,this.editorInterface));if(o.resize.handleType)o.resize.isResizing=!0,o.resize.offset=ly(VZ(o.resize.handleType,r,a,o.origin.x,o.origin.y)),r.length===1&&FA(r[0])&&r[0].points.length===2&&(o.resize.arrowDirection=XZ(o.resize.handleType,r[0]));else{if(this.state.selectedLinearElement){let C=this.state.selectedLinearElement,B=rA.handlePointerDown(t,this,this.store,o.origin,C,this.scene);if(B.hitElement&&(o.hit.element=B.hitElement),B.linearElementEditor&&this.setState({selectedLinearElement:B.linearElementEditor}),B.didAddPoint)return!0;let d=this.scene.getNonDeletedElementsMap(),E=rA.getElement(C.elementId,d);if(E&&st(E)){let{hitFocusPoint:h,pointerOffset:p,arrowOtherEndpointInitialBinding:u}=WZ(E,o,d,this.state);if(h)return this.setState({selectedLinearElement:{...C,hoveredFocusPointBinding:h,draggedFocusPointBinding:h,pointerOffset:p,initialState:{...C.initialState,arrowOtherEndpointInitialBinding:u}}}),!1}}let n=this.getElementsAtPosition(o.origin.x,o.origin.y,{includeLockedElements:!0}),g=n.filter(C=>!C.locked),s=this.getElementAtPosition(o.origin.x,o.origin.y,{allHitElements:n});(!s||s.id!==this.state.activeLockedId)&&this.setState({activeLockedId:null});let l=g.some(C=>this.state.selectedElementIds[C.id]);if(!l&&g.length>0?o.hit.element=g[g.length-1]:s&&s.locked&&!l?o.hit.element=null:o.hit.element=o.hit.element??this.getElementAtPosition(o.origin.x,o.origin.y),this.hitLinkElement=this.getElementLinkAtPosition(o.origin,s),this.hitLinkElement)return!0;if(this.state.croppingElementId&&o.hit.element?.id!==this.state.croppingElementId&&this.finishImageCropping(),o.hit.element&&this.getElementLinkAtPosition({x:o.origin.x,y:o.origin.y},o.hit.element))return!1;o.hit.allHitElements=g;let I=o.hit.element,c=o.hit.allHitElements.some(C=>this.isASelectedElement(C));if((I===null||!c)&&!t.shiftKey&&!o.hit.hasHitCommonBoundingBoxOfSelectedElements&&(!this.state.selectedLinearElement?.isEditing||I&&I?.id!==this.state.selectedLinearElement?.elementId)&&this.clearSelection(I),this.state.selectedLinearElement?.isEditing)this.setState(C=>({selectedLinearElement:C.selectedLinearElement?{...C.selectedLinearElement,isEditing:!!I&&I.id===this.state.selectedLinearElement?.elementId}:null,selectedElementIds:C.selectedLinearElement?At({[C.selectedLinearElement.elementId]:!0},this.state):At({},C)}));else if(I!=null){if(t[z.CTRL_OR_CMD])return t.altKey?(this.state.openDialog?.name==="elementLinkSelector"&&this.setOpenDialog(null),this.lassoTrail.startPath(o.origin.x,o.origin.y,t.shiftKey),this.setActiveTool({type:"lasso",fromSelection:!0}),!1):(this.state.selectedElementIds[I.id]||(o.hit.wasAddedToSelection=!0),this.setState(C=>({...a4(C,I),previousSelectedElementIds:this.state.selectedElementIds})),!1);this.state.selectedElementIds[I.id]||(this.state.editingGroupId&&!ad(I,this.state.editingGroupId)&&this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),!c&&!o.hit.hasHitCommonBoundingBoxOfSelectedElements&&(this.setState(C=>{let B={...C.selectedElementIds,[I.id]:!0},d=[];if(Object.keys(C.selectedElementIds).forEach(E=>{let h=this.scene.getElement(E);h&&d.push(h)}),mA(I))hi(d,I.id).forEach(E=>{delete B[E.id]});else if(I.frameId)B[I.frameId]&&delete B[I.id];else{let E=I.groupIds,h=new Set(E.flatMap(p=>be(this.scene.getNonDeletedElements(),p)).filter(p=>mA(p)).map(p=>p.id));h.size>0&&d.forEach(p=>{p.frameId&&h.has(p.frameId)&&(delete B[p.id],p.groupIds.flatMap(u=>be(this.scene.getNonDeletedElements(),u)).forEach(u=>{delete B[u.id]}))})}return C.openDialog?.name==="elementLinkSelector"&&(I.groupIds.some(E=>C.selectedGroupIds[E])||(B={[I.id]:!0})),{...So({editingGroupId:C.editingGroupId,selectedElementIds:B},this.scene.getNonDeletedElements(),C,this),showHyperlinkPopup:I.link||ni(I)?"info":!1}}),o.hit.wasAddedToSelection=!0))}this.setState({previousSelectedElementIds:this.state.selectedElementIds})}}return!1});M(this,"handleTextOnPointerDown",(t,o)=>{if(this.state.editingTextElement)return;let i=o.origin.x,a=o.origin.y;this.setState({hoveredArrowTextAnchor:null});let r=this.arrowText.getBindableEndpointAtPosition(i,a);if(r)this.startTextEditing({sceneX:i,sceneY:a,autoEdit:!1,arrowEndpoint:r});else{let n=this.getElementAtPosition(i,a,{includeBoundTextElement:!0}),g=this.getTextBindableContainerAtPosition(i,a);Zt(n)&&(g=n,i=n.x+n.width/2,a=n.y+n.height/2),this.startTextEditing({sceneX:i,sceneY:a,insertAtParentCenter:!t.altKey,container:g,autoEdit:!1,initialCaretSceneCoords:{x:i,y:a}})}this.isToolLocked()?this.cursor.reset():this.setState({activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>this.cursor.reset())});M(this,"handleFreeDrawElementOnPointerDown",(t,o,i)=>{let[a,r]=lo(i.origin.x,i.origin.y,null),n=this.getTopLayerFrameAtSceneCoords({x:a,y:r}),g=this.state.currentStrokeOptions,s=g?.constantPressure?!1:t.pressure===.5,l=this.state.currentItemStrokeVariability,I=q4({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("freedraw"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:null,simulatePressure:s,strokeOptions:{variability:l,streamline:t.pointerType!=="mouse"?d3:vc},locked:!1,...g?{customData:{strokeOptions:g}}:{},frameId:n?n.id:null,points:[k(0,0)],pressures:s?[]:[t.pressure]});g?.highlighter?this.insertNewElement(I,0):this.insertNewElement(I),this.setState(c=>{let C={...c.selectedElementIds};return delete C[I.id],{selectedElementIds:At(C,c)}}),this.setState({newElement:I,suggestedBinding:null})});M(this,"insertIframeElement",({sceneX:t,sceneY:o,width:i,height:a})=>{let[r,n]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=z4({type:"iframe",x:r,y:n,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("iframe"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("iframe"),opacity:this.state.currentItemOpacity,locked:!1,width:i,height:a});return this.insertNewElement(g),g});M(this,"insertEmbeddableElement",({sceneX:t,sceneY:o,link:i})=>{let[a,r]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=cs(i);if(!n)return;n.error instanceof URIError&&this.setToast({message:L("toast.unrecognizedLinkFormat"),closable:!0});let g=wv({type:"embeddable",x:a,y:r,strokeColor:"transparent",backgroundColor:"transparent",fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("embeddable"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:this.getCurrentItemRoundness("embeddable"),opacity:this.state.currentItemOpacity,locked:!1,width:n.intrinsicSize.w,height:n.intrinsicSize.h,link:i});return this.insertNewElement(g),g});M(this,"newImagePlaceholder",({sceneX:t,sceneY:o,addToFrameUnderCursor:i=!0})=>{let[a,r]=lo(t,o,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=i?this.getTopLayerFrameAtSceneCoords({x:a,y:r}):null,g=100/this.state.zoom.value;return y0({type:"image",strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("image"),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,roundness:null,opacity:this.state.currentItemOpacity,locked:!1,frameId:n?n.id:null,x:a-g/2,y:r-g/2,width:g,height:g})});M(this,"handleLinearElementOnPointerDown",(t,o,i)=>{if(t.ctrlKey&&(0,$a.flushSync)(()=>{this.setState({isBindingEnabled:this.state.bindingPreference!=="enabled"})}),this.state.multiElement){let{multiElement:a,selectedLinearElement:r}=this.state;if(UA(r,"selectedLinearElement is expected to be set"),a.type==="line"&&Ci(a.points,this.state.zoom.value)){(0,$a.flushSync)(()=>{this.setState({selectedLinearElement:{...r,lastCommittedPoint:a.points[a.points.length-1],initialState:{...r.initialState,lastClickedPoint:-1}}})}),this.actionManager.executeAction(sa);return}if(kA(a)&&a.points.length>1){this.actionManager.executeAction(sa,"ui",{event:t.nativeEvent,sceneCoords:{x:i.origin.x,y:i.origin.y}});return}let{x:n,y:g}=a,{lastCommittedPoint:s}=r,l=He(t,this.state),{start:I,end:c}=st(a)&&wa(this.state)?Ym(a,new Map([[a.points.length-1,{point:a.points[a.points.length-1],isDragging:!1}]]),l.x,l.y,this.scene.getNonDeletedElementsMap(),this.scene.getNonDeletedElements(),this.state,{newArrow:!!this.state.newElement,zoom:this.state.zoom}):{end:{mode:void 0}},C=this.scene.getNonDeletedElementsMap(),B=I?.mode!=null&&c.mode!=null&&I.element.id===c.element.id&&!gi(c.focusPoint,c.element,C),d=c.mode==="orbit"&&a.startBinding?.elementId!==c.element?.id,E=s&&ZA(k(i.origin.x-n,i.origin.y-g),s)<sQ;if(d||B||a.points.length>1&&E){this.actionManager.executeAction(sa,"ui",{event:t.nativeEvent,sceneCoords:{x:i.origin.x,y:i.origin.y}});return}this.setState(h=>({selectedElementIds:At({...h.selectedElementIds,[a.id]:!0},h)})),this.cursor.set(Xe.POINTER)}else{let[a,r]=lo(i.origin.x,i.origin.y,t[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),n=this.getTopLayerFrameAtSceneCoords({x:a,y:r}),{currentItemStartArrowhead:g,currentItemEndArrowhead:s}=this.state,[l,I]=o==="arrow"?[g,s]:[null,null],c=o==="arrow"?lr({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(o),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.state.currentItemArrowType===to.round?{type:je.PROPORTIONAL_RADIUS}:null,startArrowhead:l,endArrowhead:I,locked:!1,frameId:n?n.id:null,elbowed:this.state.currentItemArrowType===to.elbow,fixedSegments:this.state.currentItemArrowType===to.elbow?[]:null}):xo({type:o,x:a,y:r,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(o),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.state.currentItemRoundness==="round"?{type:je.PROPORTIONAL_RADIUS}:null,locked:!1,frameId:n?n.id:null}),C=k(i.origin.x,i.origin.y),B=this.scene.getNonDeletedElementsMap(),d=wa(this.state)?si(C,this.scene.getNonDeletedElements(),B):null;this.scene.mutateElement(c,{points:[k(0,0),k(0,0)]}),this.insertNewElement(c),st(c)&&JQ(c,new Map([[0,{point:k(0,0),isDragging:!1}]]),C[0],C[1],this.scene,this.state,{newArrow:!0,altKey:t.altKey,initialBinding:!0,angleLocked:Ra(t.nativeEvent)}),(0,$a.flushSync)(()=>{this.setState(E=>{let h=null,p=E.selectedElementIds;if(FA(c)){h=new rA(c,this.scene.getNonDeletedElementsMap());let u=c.points.length-1;h={...h,selectedPointsIndices:[u],initialState:{...h.initialState,arrowStartIsInside:t.altKey,lastClickedPoint:u,origin:k(i.origin.x,i.origin.y)}}}return p=this.isToolLocked()?E.selectedElementIds:At({[c.id]:!0},E),{...E,bindMode:"orbit",newElement:c,suggestedBinding:d&&st(c)?{element:d,midPoint:Wc(C,d,B,this.state.zoom)}:null,selectedElementIds:p,selectedLinearElement:h}})}),st(c)&&ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(c,d)}});M(this,"createGenericElementOnPointerDown",(t,o)=>{let[i,a]=lo(o.origin.x,o.origin.y,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),r=this.getTopLayerFrameAtSceneCoords({x:i,y:a}),n={x:i,y:a,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth(t),strokeStyle:this.state.currentItemStrokeStyle,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,roundness:this.getCurrentItemRoundness(t),locked:!1,frameId:r?r.id:null},g;t==="embeddable"?g=wv({type:"embeddable",...n}):g=jo({type:t,...n}),g.type==="selection"?this.setState({selectionElement:g}):(this.insertNewElement(g),this.setState({multiElement:null,newElement:g}))});M(this,"createFrameElementOnPointerDown",(t,o)=>{let[i,a]=lo(t.origin.x,t.origin.y,this.lastPointerDownEvent?.[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),r={x:i,y:a,opacity:this.state.currentItemOpacity,locked:!1,...o==="frame"&&this.state.currentItemFrameRole?{frameRole:this.state.currentItemFrameRole}:{},...fe,...this.state.frameColor?{customData:{frameColor:this.state.frameColor}}:{}},n=o===po.magicframe?aw(r):th(r,this.scene.getNonDeletedElements());this.insertNewElement(n),this.setState({multiElement:null,newElement:n})});M(this,"restoreReadyToEraseElements",()=>{this.elementsPendingErasure=new Set,this.triggerRender()});M(this,"eraseElements",()=>{let t=!1;this.elementsPendingErasure.forEach(i=>{let a=this.scene.getElement(i);if(st(a)){if(a.startBinding){let r=this.scene.getElement(a.startBinding.elementId);it(r,this.scene.getElementsMapIncludingDeleted(),{boundElements:r.boundElements.filter(n=>n.id!==a.id)})}if(a.endBinding){let r=this.scene.getElement(a.endBinding.elementId);it(r,this.scene.getElementsMapIncludingDeleted(),{boundElements:r.boundElements.filter(n=>n.id!==a.id)})}}else bt(a)&&a.boundElements?.forEach(r=>{if(r.type==="arrow"){let n=this.scene.getElement(r.id);n?.startBinding?.elementId===a.id&&it(n,this.scene.getElementsMapIncludingDeleted(),{startBinding:null}),n?.endBinding?.elementId===a.id&&it(n,this.scene.getElementsMapIncludingDeleted(),{endBinding:null})}})});let o=this.scene.getElementsIncludingDeleted().map(i=>this.elementsPendingErasure.has(i.id)||i.frameId&&this.elementsPendingErasure.has(i.frameId)||we(i)&&this.elementsPendingErasure.has(i.containerId)?(t=!0,YA(i,{isDeleted:!0})):i);this.elementsPendingErasure=new Set,t&&(this.store.scheduleCapture(),this.scene.replaceAllElements(o))});M(this,"initializeImage",async(t,o)=>{if(!xh(o))throw new Error(L("errors.unsupportedFileType"));let i=o.type;if(this.cursor.set("wait"),i===LA.svg)try{o=CN(Tv(await o.text()),o.name)}catch(g){throw console.warn(g),new Error(L("errors.svgImageInsertError"))}let a=await(this.props.generateIdForFile?.(o)||Mz(o));if(!a)throw console.warn("Couldn't generate file id or the supplied `generateIdForFile` didn't resolve to one."),new Error(L("errors.imageInsertError"));if(!this.files[a]?.dataURL){let{maxWidthOrHeight:g,maxFileSizeBytes:s}=this.props.imageOptions;try{o=await Nk(o,{maxWidthOrHeight:g})}catch(l){console.error("Error trying to resizing image file on insertion",l)}if(o.size>s)throw new Error(L("errors.fileTooBig",{maxSize:`${Math.trunc(s/1024/1024)}MB`}))}let n=this.files[a]?.dataURL||await Sh(o);return new Promise(async(g,s)=>{try{let l=this.getLatestInitializedImageElement(t,a);if(this.addMissingFiles([{mimeType:i,id:a,dataURL:n,created:Date.now(),lastRetrieved:Date.now(),name:o?.name&&o.name!=="image.png"?o.name:void 0}]),!this.imageCache.get(a)){this.addNewImagesToImageCache();let{erroredFiles:c}=await this.updateImageCache([l]);if(c.size)throw new Error("Image cache update resulted with an error.")}let I=await this.imageCache.get(a)?.image;if(I&&this.state.newElement?.id!==l.id){l=this.getLatestInitializedImageElement(t,a);let c=this.getImageNaturalDimensions(l,I);Object.assign(l,c)}g(l)}catch(l){console.error(l),s(new Error(L("errors.imageInsertError")))}})});M(this,"getLatestInitializedImageElement",(t,o)=>{let i=this.scene.getElement(t.id)??t;return YA(i,{fileId:o})});M(this,"onImageToolbarButtonClick",async()=>{try{let t=this.state.width/2+this.state.offsetLeft,o=this.state.height/2+this.state.offsetTop,{x:i,y:a}=He({clientX:t,clientY:o},this.state),r=await wh({description:"Image",extensions:Object.keys(CI),multiple:!0});this.insertImages(r,i,a)}catch(t){t.name!=="AbortError"?console.error(t):console.warn(t),this.setState({newElement:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>{this.actionManager.executeAction(sa)})}});M(this,"getImageNaturalDimensions",(t,o)=>{let i=Math.max(this.state.height-120,160),a=Math.min(i,Math.floor(this.state.height*.5)/this.state.zoom.value),r=Math.min(o.naturalHeight,a),n=r*(o.naturalWidth/o.naturalHeight),g=t.x+t.width/2-n/2,s=t.y+t.height/2-r/2;return{x:g,y:s,width:n,height:r,crop:null}});M(this,"updateImageCache",async(t,o=this.files)=>{let{updatedFiles:i,erroredFiles:a}=await H0({imageCache:this.imageCache,fileIds:t.map(r=>r.fileId),files:o});return a.size&&(this.store.scheduleAction(tA.NEVER),this.scene.replaceAllElements(this.scene.getElementsIncludingDeleted().map(r=>ua(r)&&a.has(r.fileId)?YA(r,{status:"error"}):r))),{updatedFiles:i,erroredFiles:a}});M(this,"addNewImagesToImageCache",async(t=K0(this.scene.getNonDeletedElements()),o=this.files)=>{let i=t.filter(a=>!a.isDeleted&&!this.imageCache.has(a.fileId));if(i.length){let{updatedFiles:a}=await this.updateImageCache(i,o);if(a.size)for(let r of i)a.has(r.fileId)&&It.delete(r);a.size&&this.scene.triggerUpdate()}});M(this,"scheduleImageRefresh",(0,ihA.default)(()=>{this.addNewImagesToImageCache()},A3));M(this,"handleInteractiveCanvasRef",t=>{t!==null?(this.interactiveCanvas=t,this.cursor.reset(),this.interactiveCanvas.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.interactiveCanvas.addEventListener("touchend",this.onTouchEnd)):(this.interactiveCanvas?.removeEventListener("touchstart",this.onTouchStart),this.interactiveCanvas?.removeEventListener("touchend",this.onTouchEnd))});M(this,"insertImages",async(t,o,i)=>{let a=50/this.state.zoom.value,r=Pv(t.map(()=>this.newImagePlaceholder({sceneX:o,sceneY:i})),o,i,a);this.insertNewElements(r);let n=await Promise.all(r.map(async(c,C)=>{try{return await this.initializeImage(c,await uC(t[C]))}catch(B){return this.setState({errorMessage:B.message||L("errors.imageInsertError")}),YA(c,{isDeleted:!0})}})),g=QA(n),s=Pv(n.filter(c=>!c.isDeleted),o,i,a),l=QA(s),I=this.scene.getElementsIncludingDeleted().map(c=>l.get(c.id)??g.get(c.id)??c);this.updateScene({appState:{selectedElementIds:At(Object.fromEntries(s.map(c=>[c.id,!0])),this.state)},elements:I,captureUpdate:tA.IMMEDIATELY}),this.setState({},()=>{this.actionManager.executeAction(sa)})});M(this,"handleAppOnDrop",async t=>{if(this.props.onDrop)try{if(await this.props.onDrop(t)===!1)return}catch(I){console.error(I)}if(!this.isInteractionEnabled())return;let{x:o,y:i}=He(t,this.state),a=await Eu(t),r=a.getFiles();if(r.length===1){let{file:I,fileHandle:c}=r[0];if(I&&(I.type===LA.png||I.type===LA.svg))try{let C=await Dd(I,this.state,this.scene.getElementsIncludingDeleted(),c);this.syncActionResult({...C,appState:{...C.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:tA.IMMEDIATELY});return}catch(C){if(C.name!=="EncodingError")throw new Error(L("alerts.couldNotLoadInvalidFile"))}}let n=r.map(I=>I.file).filter(I=>xh(I));if(n.length>0&&this.isToolSupported("image"))return this.insertImages(n,o,i);let g=a.getData(LA.excalidrawlibIds),s=a.getData(LA.excalidrawlib);if(g||s){try{let I=null;if(g){let{itemIds:c}=JSON.parse(g);I=(await this.library.getLatestLibrary()).filter(B=>c.includes(B.id))}else s&&(I=cN(s));I?.length&&(I=I.map(c=>({...c,elements:tC({type:"everything",elements:c.elements,randomizeSeed:!0,preserveFrameChildrenOrder:!0}).duplicatedElements})),this.addElementsFromPasteOrLibrary({elements:Lu(I),position:t,files:null}))}catch(I){this.setState({errorMessage:I.message})}return}if(r.length>0){let{file:I,fileHandle:c}=r[0];I&&await this.loadFileToCanvas(I,c)}let l=a.findByType(LA.text);if(l){let I=l.value;if(I&&rh(I,this.props.validateEmbeddable)&&(/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(I)||cs(I)?.type==="video")){let c=this.insertEmbeddableElement({sceneX:o,sceneY:i,link:ai(I)});c&&(this.store.scheduleCapture(),this.setState({selectedElementIds:{[c.id]:!0}}))}}});M(this,"loadFileToCanvas",async(t,o)=>{t=await uC(t);try{let i=this.scene.getElementsIncludingDeleted(),a;try{a=await _w(t,this.state,i,o)}catch(r){let n=r instanceof ds;if(n&&r.code==="IMAGE_NOT_CONTAINS_SCENE_DATA"&&!this.isToolSupported("image")){this.setState({isLoading:!1,errorMessage:L("errors.imageToolNotSupported")});return}let g=n?L("alerts.cannotRestoreFromImage"):L("alerts.couldNotLoadInvalidFile");this.setState({isLoading:!1,errorMessage:g})}if(!a)return;a.type===LA.excalidraw?(Ya(i.concat(a.data.elements)),this.store.scheduleMicroAction({action:tA.NEVER,elements:i,appState:void 0}),this.setState({isLoading:!0}),this.syncActionResult({...a.data,appState:{...a.data.appState||this.state,isLoading:!1},replaceFiles:!0,captureUpdate:tA.IMMEDIATELY})):a.type===LA.excalidrawlib&&await this.library.updateLibrary({libraryItems:t,merge:!0,openLibraryMenu:!0}).catch(r=>{console.error(r),this.setState({errorMessage:L("errors.importLibraryError")})})}catch(i){this.setState({isLoading:!1,errorMessage:i.message})}});M(this,"handleCanvasContextMenu",(t,o=!1)=>{if(!this.isInteractionEnabled()&&!o||(t.preventDefault(),this.state.disableContextMenu)||wC()&&!o||(t.preventDefault(),!this.isInteractionEnabled())||(this.bucketFill.cancel(),("pointerType"in t.nativeEvent&&t.nativeEvent.pointerType==="touch"||"pointerType"in t.nativeEvent&&t.nativeEvent.pointerType==="pen"&&t.button!==xr.SECONDARY)&&this.state.activeTool.type!==this.state.preferredSelectionTool.type))return;let{x:i,y:a}=He(t,this.state),r=this.getElementAtPosition(i,a,{preferSelected:!0,includeLockedElements:!0}),n=this.scene.getSelectedElements(this.state),g=this.isHittingCommonBoundingBoxOfSelectedElements({x:i,y:a},n),s=r||g?"element":"canvas",l=this.excalidrawContainerRef.current,{top:I,left:c}=l.getBoundingClientRect(),C=t.clientX-c,B=t.clientY-I;ye("contextMenu","openContextMenu",s),this.setState({...r&&!this.state.selectedElementIds[r.id]?{...this.state,...So({editingGroupId:this.state.editingGroupId,selectedElementIds:{[r.id]:!0}},this.scene.getNonDeletedElements(),this.state,this),selectedLinearElement:FA(r)?new rA(r,this.scene.getNonDeletedElementsMap()):null}:this.state,showHyperlinkPopup:!1},()=>{this.setState({contextMenu:{top:B,left:C,items:this.getContextMenuItems(s)}})})});M(this,"maybeDragNewGenericElement",(t,o,i=!0)=>{let a=this.state.selectionElement,r=t.lastCoords;if(a&&t.boxSelection.hasOccurred&&this.state.activeTool.type!=="eraser"){vv({newElement:a,elementType:this.state.activeTool.type,originX:t.origin.x,originY:t.origin.y,x:r.x,y:r.y,width:Fi(t.origin.x,r.x),height:Fi(t.origin.y,r.y),shouldMaintainAspectRatio:EQ(o),shouldResizeFromCenter:!1,scene:this.scene,zoom:this.state.zoom.value,informMutation:!1});return}let n=this.state.newElement;if(!n||this.arrowText.maybeDragNewText(n,r))return;let[g,s]=lo(r.x,r.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),l=ua(n)&&this.imageCache.get(n.fileId)?.image,I=l&&!(l instanceof Promise)?l.width/l.height:null;this.maybeCacheReferenceSnapPoints(o,[n]);let{snapOffset:c,snapLines:C}=ylA(n,this,o,{x:t.originInGrid.x+(this.state.originSnapOffset?.x??0),y:t.originInGrid.y+(this.state.originSnapOffset?.y??0)},{x:g-t.originInGrid.x,y:s-t.originInGrid.y},this.scene.getNonDeletedElementsMap());g+=c.x,s+=c.y,this.setState({snapLines:C}),st(n)||vv({newElement:n,elementType:this.state.activeTool.type,originX:t.originInGrid.x,originY:t.originInGrid.y,x:g,y:s,width:Fi(t.originInGrid.x,g),height:Fi(t.originInGrid.y,s),shouldMaintainAspectRatio:xe(n)?!EQ(o):EQ(o),shouldResizeFromCenter:OF(o),zoom:this.state.zoom.value,scene:this.scene,widthAspectRatio:I,originOffset:this.state.originSnapOffset,informMutation:i}),this.setState({newElement:n}),(this.state.activeTool.type===po.frame||this.state.activeTool.type===po.magicframe)&&this.setState({elementsToHighlight:Kr(this.scene.getNonDeletedElements(),n,this.state,this.scene.getNonDeletedElementsMap())})});M(this,"maybeHandleCrop",(t,o)=>{if(!this.state.croppingElementId)return!1;let i=t.resize.handleType,a=t.lastCoords,[r,n]=lo(a.x-t.resize.offset.x,a.y-t.resize.offset.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),g=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(i&&g&&xe(g)){let s=t.originalElements.get(g.id),l=ua(g)&&this.imageCache.get(g.fileId)?.image;if(s&&xe(s)&&l&&!(l instanceof Promise)){let[I,c]=lo(a.x,a.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),C={x:I-t.originInGrid.x,y:c-t.originInGrid.y};this.maybeCacheReferenceSnapPoints(o,[g]);let{snapOffset:B,snapLines:d}=TY([g],[s],this,o,C,i);this.scene.mutateElement(g,n5(g,this.scene.getNonDeletedElementsMap(),i,l.naturalWidth,l.naturalHeight,r+B.x,n+B.y,o.shiftKey?s.width/s.height:void 0)),Ft(g,this.scene),this.setState({isCropping:i&&i!=="rotation",snapLines:d})}return!0}return!1});M(this,"maybeHandleResize",(t,o)=>{let i=this.scene.getSelectedElements(this.state),a=i.filter(mA),r=t.resize.handleType;if(a.length>0&&r==="rotation"||i.length===1&&kA(i[0])||this.state.croppingElementId)return!1;this.setState({isResizing:r&&r!=="rotation",isRotating:r==="rotation",activeEmbeddable:null});let n=t.lastCoords,[g,s]=lo(n.x-t.resize.offset.x,n.y-t.resize.offset.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),l=new Map;if(a.forEach(I=>{hi(this.scene.getNonDeletedElements(),I.id).forEach(C=>{l.set(I.id+C.id,{x:C.x-I.x,y:C.y-I.y})})}),!this.state.selectedElementsAreBeingDragged){let[I,c]=lo(n.x,n.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),C={x:I-t.originInGrid.x,y:c-t.originInGrid.y},B=[...t.originalElements.values()];this.maybeCacheReferenceSnapPoints(o,i);let{snapOffset:d,snapLines:E}=TY(i,WA(B,this.state),this,o,C,r);g+=d.x,s+=d.y,this.setState({snapLines:E})}if(jZ(t.originalElements,r,i,this.scene,Ra(o),OF(o),i.some(I=>xe(I))?!EQ(o):EQ(o),g,s,t.resize.center.x,t.resize.center.y)){let I=new Set;return a.forEach(c=>{Kr(this.scene.getNonDeletedElements(),c,this.state,this.scene.getNonDeletedElementsMap()).forEach(C=>{St(C)?I.add(C):console.error("[NONDELETED][INVARIANT] Skipped highlighting deleted element in resizing frame")})}),this.setState({elementsToHighlight:[...I]}),!0}return!1});M(this,"getContextMenuItems",t=>{let o=[];if(o.push(ox,tx),t==="canvas")return this.state.viewModeEnabled?[...o,mu,OC,AB,pg]:[rY,ki,ox,tx,ix,ki,_N,TgA,ki,mu,Tf,Pf,Zf,OC,AB,pg];if(o.push(ix),this.state.viewModeEnabled)return[pu,...o];let i=this.editorInterface.formFactor==="desktop"?[ki,nL,gL,sL,lL]:[];return[ki,ex,pu,rY,ki,IlA,clA,ClA,ki,RY,ki,...o,ki,q1,j1,ki,X1,NY,nY,gY,MgA,$1,ki,tY,...i,ki,iY,aY,ki,Nu,ki,_f,lx,ki,zN,zf,ki,tf]});M(this,"handleWheel",Bo(t=>{let i=t.composedPath?.()?.some(n=>n instanceof HTMLCanvasElement&&n.classList?.contains("excalidraw__canvas"))||t.target?.closest?.("canvas.excalidraw__canvas")!=null;if(!this.isNavigationEnabled())return;if(!(i||t.target instanceof HTMLTextAreaElement||t.target instanceof HTMLIFrameElement||t.target instanceof HTMLElement&&t.target.classList.contains(wt.FRAME_NAME))){t[z.CTRL_OR_CMD]&&t.preventDefault();return}if(t.preventDefault(),qs)return;let{deltaX:a,deltaY:r}=t;if((t.metaKey||t.ctrlKey)&&!this.state.allowWheelZoom||!(t.metaKey||t.ctrlKey)&&this.state.allowWheelZoom){let n=Math.sign(r),g=zw()*100,s=Math.abs(r),l=r;s>g&&(l=g*n);let I=this.state.zoom.value-l/100;I+=Math.log10(Math.max(1,this.state.zoom.value))*-n*Math.min(1,s/20);let c=this.state.scrollConstraints?.lockZoom?this.state.scrollConstraints.zoom:lQ;I=Math.max(I,c),this.viewport.translate(B=>({...lC({viewportX:this.viewport.lastPosition.x,viewportY:this.viewport.lastPosition.y,nextZoom:Zr(I)},B),shouldCacheIgnoreZoom:!0}),{zoomPreConstrained:!0,preserveScrollConstraintsSnapBack:!0})&&this.resetShouldCacheIgnoreZoomDebounced();return}if(t.shiftKey){this.viewport.translate(({zoom:n,scrollX:g})=>({scrollX:g-(r||a)/n.value}));return}this.viewport.translate(({zoom:n,scrollX:g,scrollY:s})=>({scrollX:g-a/n.value,scrollY:s-r/n.value}))}));M(this,"savePointer",(t,o,i)=>{if(!this.isInteractionEnabled()&&!this.isToolSupported(this.state.activeTool.type)||!t||!o)return;let{x:a,y:r}=He({clientX:t,clientY:o},this.state);isNaN(a)||isNaN(r);let n={x:a,y:r,tool:this.state.activeTool.type==="laser"?"laser":"pointer"};this.props.onPointerUpdate?.({pointer:n,button:i,pointersMap:ve.pointers})});M(this,"resetShouldCacheIgnoreZoomDebounced",Xg(()=>{this.unmounted||this.setState({shouldCacheIgnoreZoom:!1})},300));M(this,"updateDOMRect",t=>{if(this.excalidrawContainerRef?.current){let o=this.excalidrawContainerRef.current,{width:i,height:a,left:r,top:n}=o.getBoundingClientRect(),{width:g,height:s,offsetTop:l,offsetLeft:I}=this.state;if(i===g&&a===s&&r===I&&n===l){t&&t();return}if(i===0||a===0){t&&t();return}this.setState({width:i,height:a,offsetLeft:r,offsetTop:n},()=>{t&&t()}),this.viewport.constrain()}});M(this,"refresh",()=>{this.setState({...this.getCanvasOffsets()})});M(this,"watchState",()=>{});let o=Ir(),{viewModeEnabled:i=!1,zenModeEnabled:a=!1,gridModeEnabled:r=!1,objectsSnapModeEnabled:n=!1,theme:g=o.theme,initState:s,name:l=`${L("labels.untitled")}-${VF()}`}=t,I=null;t.activeTool&&(t.activeTool.type==="image"?console.warn('"image" tool cannot be forced via "props.activeTool"'):this.isToolSupported(t.activeTool.type,t)?I=oo(o,t.activeTool):console.warn(`"${t.activeTool.type}" tool ("props.activeTool") cannot be activated \u2014 disabled via "UIOptions.tools", or not enabled while non-interactive (see "interaction.enabled.tools")`)),this.state={...o,theme:g,exportWithDarkMode:g===EA.DARK,isLoading:!0,...this.getCanvasOffsets(),viewModeEnabled:this.isInteractionEnabled(t)?i:!0,activeTool:I??o.activeTool,zenModeEnabled:a,objectsSnapModeEnabled:n,gridModeEnabled:r??o.gridModeEnabled,name:l,width:window.innerWidth,height:window.innerHeight,...s??{}},this.refreshEditorInterface(),this.stylesPanelMode=pI(this.editorInterface),this.id=hQ(),ZF(),this.library=new asA(this),this.actionManager=new Rx(this.syncActionResult,()=>this.state,()=>this.scene.getElementsIncludingDeleted(),this),this.scene=new RI,this.canvas=document.createElement("canvas"),this.rc=es.canvas(this.canvas),this.renderer=new lb(this.scene),this.visibleElements=[],this.store=new L0(this),this.history=new gb(this.store),this.excalidrawContainerValue={container:this.excalidrawContainerRef.current,id:this.id},this.fonts=new Vo(this.scene),this.history=new gb(this.store),this.actionManager.registerAll(rL),this.actionManager.registerAction(dlA(this.history)),this.actionManager.registerAction(ElA(this.history)),this.api=this.createExcalidrawAPI()}createExcalidrawAPI(){return{isDestroyed:!1,updateScene:this.updateScene,applyDeltas:this.applyDeltas,mutateElement:this.mutateElement,updateLibrary:this.library.updateLibrary,addFiles:this.addFiles,resetScene:this.resetScene,getSceneElementsIncludingDeleted:this.getSceneElementsIncludingDeleted,getSceneElementsMapIncludingDeleted:this.getSceneElementsMapIncludingDeleted,history:{clear:this.resetHistory,undo:this.undo,redo:this.redo},setViewport:this.viewport.setViewport,getViewportOffsets:this.viewport.getOffsets,getSceneElements:this.getSceneElements,getAppState:()=>this.state,getFiles:()=>this.files,getName:this.getName,registerAction:o=>{this.actionManager.registerAction(o)},refresh:this.refresh,setToast:this.setToast,id:this.id,setActiveTool:this.setActiveTool,setCursor:this.cursor.set,resetCursor:this.cursor.reset,getEditorInterface:()=>this.editorInterface,updateFrameRendering:this.updateFrameRendering,toggleSidebar:this.toggleSidebar,onChange:o=>this.onChangeEmitter.on(o),onIncrement:o=>this.store.onStoreIncrementEmitter.on(o),onPointerDown:o=>this.onPointerDownEmitter.on(o),onPointerUp:o=>this.onPointerUpEmitter.on(o),onScrollChange:o=>this.onScrollChangeEmitter.on(o),onUserFollow:o=>this.onUserFollowEmitter.on(o),onStateChange:this.onStateChange,onEvent:this.onEvent,setForceRenderAllEmbeddables:this.setForceRenderAllEmbeddables,zoomToFit:this.zoomToFit,refreshEditorInterface:this.refreshEditorInterface,setDesktopUIMode:this.setDesktopUIMode,setMobileModeAllowed:this.setMobileModeAllowed,isTouchScreen:this.isTouchScreen,isTrayModeEnabled:this.isTrayModeEnabled,getColorAtScenePoint:this.getColorAtScenePoint,startLineEditor:this.startLineEditor,refreshAllArrows:this.refreshAllArrows,updateContainerSize:this.updateContainerSize,selectElements:this.selectElements,sendBackward:this.sendBackward,bringForward:this.bringForward,sendToBack:this.sendToBack,bringToFront:this.bringToFront,getHTMLIFrameElement:o=>this.getHTMLIFrameElement(o)}}isInteractionEnabled(t=this.props){return t.interaction!==!1&&typeof t.interaction!="object"}isLinksEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.links===!0||t.interaction.enabled?.interactiveContent===!0:t.interaction!==!1}isNavigationEnabled(t=this.props){return wC()?!0:typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.navigation===!0:t.interaction!==!1}isEmbedsEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.embeds===!0||t.interaction.enabled?.interactiveContent===!0:t.interaction!==!1}isBrowserZoomEnabled(t=this.props){return typeof t.interaction=="object"&&t.interaction!==null?t.interaction.enabled?.browserZoom===!0:!1}isToolLocked(){return this.state.activeTool.locked||this.props.activeTool!=null}isActiveToolPointerCapturing(){return this.isInteractionEnabled()?this.state.activeTool.type==="laser"||this.state.activeTool.type==="custom":this.isToolSupported(this.state.activeTool.type)}isDefaultUIEnabled(t=this.props){return t.ui!==!1&&(typeof t.ui!="object"||t.ui===null)}isUIControlEnabled(t,o=this.props){return typeof o.ui=="object"&&o.ui!==null?o.ui.enabled?.[t]===!0:o.ui!==!1}onWindowMessage(t){if(t.origin!=="https://player.vimeo.com"&&t.origin!=="https://www.youtube.com")return;let o=null;try{o=JSON.parse(t.data)}catch{}if(o)switch(t.origin){case"https://player.vimeo.com":if(o.method==="paused"){let i=null,a=document.body.querySelectorAll("iframe.excalidraw__embeddable");if(!a)break;for(let r of a)r.contentWindow===t.source&&(i=r.contentWindow);i?.postMessage(JSON.stringify({method:o.value?"play":"pause",value:!0}),"*")}break;case"https://www.youtube.com":if(o.event==="infoDelivery"&&o.info&&o.id&&typeof o.info.playerState=="number"){let i=o.id,a=o.info.playerState;Object.values(im).includes(a)&&nT.set(i,a)}break}}handleSkipBindMode(){if(this.state.selectedLinearElement?.initialState&&!this.state.selectedLinearElement.initialState.arrowStartIsInside){UA(this.lastPointerMoveCoords,"Missing last pointer move coords when changing bind skip mode for arrow start");let t=this.scene.getNonDeletedElementsMap(),o=si(k(this.lastPointerMoveCoords.x,this.lastPointerMoveCoords.y),this.scene.getNonDeletedElements(),t),i=rA.getElement(this.state.selectedLinearElement.elementId,t);i?.startBinding&&o?.id===i.startBinding.elementId&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,arrowStartIsInside:!0}}})}if(this.state.bindMode==="orbit"&&(this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),(0,$a.flushSync)(()=>{this.setState({bindMode:"skip"})}),this.lastPointerMoveCoords&&this.state.selectedLinearElement?.selectedPointsIndices&&this.state.selectedLinearElement?.selectedPointsIndices.length)){let{x:t,y:o}=this.lastPointerMoveCoords,i=this.lastPointerMoveEvent??this.lastPointerDownEvent?.nativeEvent;UA(i,"Last event must exist");let a=t-this.state.selectedLinearElement.pointerOffset.x,r=o-this.state.selectedLinearElement.pointerOffset.y,n=this.state.multiElement?rA.handlePointerMove(i,this,a,r,this.state.selectedLinearElement):rA.handlePointDragging(i,this,a,r,this.state.selectedLinearElement);n&&this.setState(n)}}resetDelayedBindMode(){this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.state.bindMode!=="orbit"&&setTimeout(()=>this.setState({bindMode:"orbit"}))}handleDelayedBindModeChange(t,o){if(t.isDeleted||kA(t))return;let i=()=>{if(this.bindModeHandler=null,UA(this.lastPointerMoveCoords,"Expected lastPointerMoveCoords to be set"),!this.state.multiElement){if(!this.state.selectedLinearElement||!this.state.selectedLinearElement.selectedPointsIndices||!this.state.selectedLinearElement.selectedPointsIndices.length)return;let B=this.state.selectedLinearElement.selectedPointsIndices.includes(0),d=this.state.selectedLinearElement.selectedPointsIndices.includes(t.points.length-1);if(!B&&!d||B&&d)return}let{x:I,y:c}=this.lastPointerMoveCoords,C=si(k(I,c),this.scene.getNonDeletedElements(),this.scene.getNonDeletedElementsMap());if(C&&this.state.bindMode!=="skip"){UA(this.state.selectedLinearElement?.elementId===t.id,"The selectedLinearElement is expected to not change while a bind mode timeout is ticking");let B=this.state.selectedLinearElement.initialState.arrowStartIsInside||t.startBinding?.elementId===C.id;(0,$a.flushSync)(()=>{UA(this.state.selectedLinearElement,"this.state.selectedLinearElement must exist"),this.setState({bindMode:"inside",selectedLinearElement:{...this.state.selectedLinearElement,initialState:{...this.state.selectedLinearElement.initialState,arrowStartIsInside:B}}})});let d=this.lastPointerMoveEvent??this.lastPointerDownEvent?.nativeEvent;UA(d,"Last event must exist");let E=I-this.state.selectedLinearElement.pointerOffset.x,h=c-this.state.selectedLinearElement.pointerOffset.y,p=this.state.multiElement?rA.handlePointerMove(d,this,E,h,this.state.selectedLinearElement):rA.handlePointDragging(d,this,E,h,this.state.selectedLinearElement);p&&this.setState(p)}},a=!1;if(this.state.selectedLinearElement?.selectedPointsIndices){let I=this.scene.getNonDeletedElementsMap(),c=this.state.selectedLinearElement.selectedPointsIndices.includes(0),C=this.state.selectedLinearElement.selectedPointsIndices.includes(t.points.length-1),B=c?o:t.startBinding&&I.get(t.startBinding.elementId),d=C?o:t.endBinding&&I.get(t.endBinding.elementId),E=B&&Ke(B,I),h=d&&Ke(d,I);a=!!(E&&h&&B.id!==d.id&&Hi(E,h))}let r=this.state.selectedLinearElement?.selectedPointsIndices?.includes(0),n=this.state.selectedLinearElement?.selectedPointsIndices?.includes(t.points.length-1),g=r?"startBinding":n?"endBinding":null,s=r?"endBinding":n?"startBinding":null,l=s&&t[s]?.mode==="inside"&&t[s]?.elementId===o?.id||g&&t[g]?.mode==="inside"&&o?.id===t[g]?.elementId;g&&s&&t[g]?.mode==="inside"&&o?.id!==t[g]?.elementId&&t[s]?.elementId!==t[g]?.elementId&&this.scene.mutateElement(t,{[g]:{...t[g],mode:"orbit"}},{informMutation:!1,isDragging:!0}),!o||this.previousHoveredBindableElement&&o.id!==this.previousHoveredBindableElement.id?(this.bindModeHandler&&(clearTimeout(this.bindModeHandler),this.bindModeHandler=null),this.state.bindMode==="inside"&&(0,$a.flushSync)(()=>{this.setState({bindMode:"orbit"})}),this.previousHoveredBindableElement=null):!this.bindModeHandler&&(!this.state.newElement||!t.startBinding||a)&&!l&&(this.bindModeHandler=setTimeout(i,Rc)),this.previousHoveredBindableElement=o}cacheEmbeddableRef(t,o){o&&this.iFrameRefs.set(t.id,o)}getHTMLIFrameElement(t){return typeof t=="string"?this.iFrameRefs.get(t):this.iFrameRefs.get(t.id)}handleIframeLikeCenterClick(){if(!this.lastPointerDownEvent||!this.lastPointerUpEvent||this.lastPointerDownEvent.button!==xr.MAIN||wc||!AR(this.state.activeTool.type,["laser","selection","lasso"]))return!1;let t=k(He({clientX:this.lastPointerDownEvent.clientX,clientY:this.lastPointerDownEvent.clientY},this.state)),o=k(He({clientX:this.lastPointerUpEvent.clientX,clientY:this.lastPointerUpEvent.clientY},this.state));if(ZA(t,o)>Al)return!1;let a=this.getElementAtPosition(t[0],t[1]);if(!(a&&this.lastPointerUpEvent.timeStamp-this.lastPointerDownEvent.timeStamp<=300&&ve.pointers.size<2&&Oo(a)&&(this.state.viewModeEnabled||this.state.activeTool.type==="laser"||this.isIframeLikeElementCenter(a,this.lastPointerUpEvent,o[0],o[1]))))return!1;let n=a;if(this.state.activeEmbeddable?.element===n&&this.state.activeEmbeddable?.state==="active"||(setTimeout(()=>{this.setState({activeEmbeddable:{element:n,state:"active"},selectedElementIds:{[n.id]:!0},newElement:null,selectionElement:null})},100),is(n)))return!0;let g=this.getHTMLIFrameElement(n);if(!g?.contentWindow)return!0;if(g.src.includes("youtube")){let s=nT.get(n.id);switch(s||(nT.set(n.id,im.UNSTARTED),g.contentWindow.postMessage(JSON.stringify({event:"listening",id:n.id}),"*")),s){case im.PLAYING:case im.BUFFERING:g.contentWindow?.postMessage(JSON.stringify({event:"command",func:"pauseVideo",args:""}),"*");break;default:g.contentWindow?.postMessage(JSON.stringify({event:"command",func:"playVideo",args:""}),"*")}}return g.src.includes("player.vimeo.com")&&g.contentWindow.postMessage(JSON.stringify({method:"paused"}),"*"),!0}isIframeLikeElementCenter(t,o,i,a){return t&&!o.altKey&&!o.shiftKey&&!o.metaKey&&!o.ctrlKey&&(this.state.activeEmbeddable?.element!==t||this.state.activeEmbeddable?.state==="hover"||!this.state.activeEmbeddable)&&i>=t.x+t.width/3&&i<=t.x+2*t.width/3&&a>=t.y+t.height/3&&a<=t.y+2*t.height/3}renderEmbeddables(){let t=this.state.zoom.value,o=this.state.width,i=this.state.height,a=this.scene.getNonDeletedElements().filter(r=>ni(r)&&this.embedsValidationStatus.get(r.id)===!0||is(r));return(0,Ue.jsx)(Ue.Fragment,{children:a.map(r=>{let{x:n,y:g}=oi({sceneX:r.x,sceneY:r.y},this.state),s=this.shouldRenderAllEmbeddables||gd(r,o,i,this.state,this.scene.getNonDeletedElementsMap()),l=this.initializedEmbeds.has(r.id);if(s&&!l&&this.initializedEmbeds.add(r.id),!(s||l))return null;let c,C=cs(DQ(r.link||""));if(is(r)){c=null;let b=(r.customData?.generationData??this.magicGenerations.get(r.id))||{status:"error",message:"No generation data",code:"ERR_NO_GENERATION_DATA"};if(b.status==="done"){let D=b.html;c={intrinsicSize:{w:r.width,h:r.height},type:"document",srcdoc:()=>D}}else if(b.status==="pending")c={intrinsicSize:{w:r.width,h:r.height},type:"document",srcdoc:()=>ah(`
|
|
484
484
|
<style>
|
|
485
485
|
html, body {
|
|
486
486
|
width: 100%;
|
|
@@ -574,6 +574,8 @@ Please fix the Mermaid syntax and regenerate a valid diagram.`;await h({prompt:H
|
|
|
574
574
|
`)}}}else c=C;let B=this.state.activeEmbeddable?.element===r&&this.state.activeEmbeddable?.state==="active",d=this.state.activeEmbeddable?.element===r&&this.state.activeEmbeddable?.state==="hover",E=!is(r)&&this.props.renderWebview&&C?.type!=="document"&&!C?.link?.startsWith?.("https://player.vimeo.com"),[h,p]=r.scale??[1,1],u=`scale(${t*h}, ${t*p})`,m=c?.type==="video",w=zA(m?t:1,.75,A8A);return(0,Ue.jsx)("div",{className:iA("excalidraw__embeddable-container",{"is-hovered":d}),style:{transform:s?`translate(${n-this.state.offsetLeft}px, ${g-this.state.offsetTop}px) ${u}`:"none",display:s?"block":"none",opacity:Bv(r,ui(r,this.scene.getNonDeletedElementsMap()),this.elementsPendingErasure,null,this.state.openDialog?.name==="elementLinkSelector"?ey:1),"--embeddable-radius":`${Mr(Math.min(r.width,r.height),r)/h}px`},children:(0,Ue.jsxs)("div",{className:"excalidraw__embeddable-container__inner",style:{width:s?`${r.width/h}px`:0,height:s?`${r.height/p}px`:0,transform:s?`rotate(${r.angle}rad)`:"none",pointerEvents:B?MB.enabled:MB.disabled},children:[d&&(0,Ue.jsx)("div",{className:"excalidraw__embeddable-hint",children:L("buttons.embeddableInteractionButton")}),(0,Ue.jsx)("div",{className:"excalidraw__embeddable__outer",style:{padding:`${r.strokeWidth/(4*r.scale[0])}px`},children:(0,Ue.jsx)("div",{className:"excalidraw__embeddable__content",style:{width:`${w*100}%`,height:`${w*100}%`,transform:`scale(${1/w})`},children:(ni(r)?this.props.renderEmbeddable?.(r,this.state):null)??(E?(0,Ue.jsx)("webview",{ref:b=>this.cacheEmbeddableRef(r,b),className:"excalidraw__embeddable",src:C?.type==="generic"||C?.type==="video"?C.link:"",title:"Excalidraw Embedded Content",allowFullScreen:!0}):(0,Ue.jsx)("iframe",{ref:b=>this.cacheEmbeddableRef(r,b),className:"excalidraw__embeddable",srcDoc:c?.type==="document"?c.srcdoc(this.state.theme):void 0,src:c?.type!=="document"?c?.link??"":void 0,referrerPolicy:"no-referrer-when-downgrade",title:"Excalidraw Embedded Content",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,sandbox:`${c?.sandbox?.allowSameOrigin?"allow-same-origin":""} allow-scripts allow-forms allow-popups allow-popups-to-escape-sandbox allow-presentation allow-downloads`}))})})]})},r.id)})})}toggleOverscrollBehavior(t){document.documentElement.style.overscrollBehaviorX=t.type==="pointerenter"?"none":"auto"}render(){let t=this.scene.getSelectedElements(this.state),{renderTopRightUI:o,renderTopLeftUI:i,renderCustomStats:a}=this.props,{elementsMap:r,visibleElements:n,canvasNonce:g,newElementCanvasElement:s}=this.renderer.getRenderableElements({zoom:this.state.zoom,offsetLeft:this.state.offsetLeft,offsetTop:this.state.offsetTop,scrollX:this.state.scrollX,scrollY:this.state.scrollY,height:this.state.height,width:this.state.width,editingTextElement:this.state.editingTextElement,newElement:this.state.newElement,selectedElements:t,selectedElementsAreBeingDragged:this.state.selectedElementsAreBeingDragged,frameToHighlight:this.state.frameToHighlight});this.visibleElements=n,this.hasRenderableElements=r.size>0;let l=this.scene.getNonDeletedElementsMap(),I="setPointerCapture"in HTMLElement.prototype?!1:this.state.selectionElement||this.state.newElement||this.state.selectedElementsAreBeingDragged||this.state.resizingElement||this.state.activeTool.type==="laser"&&this.state.cursorButton==="down",c=t[0],C=this.state.newElement?.customData?.strokeOptions?.highlighter,B=wo.get(mg)?.type==="panel";return(0,Ue.jsx)("div",{translate:"no",className:iA("excalidraw excalidraw-container notranslate",this.props.className,{"excalidraw--view-mode":this.state.viewModeEnabled||this.state.openDialog?.name==="elementLinkSelector","excalidraw--mobile":this.editorInterface.formFactor==="phone","excalidraw--tray":!(this.state.viewModeEnabled||this.state.zenModeEnabled)&&this.editorInterface.desktopUIMode==="tray","excalidraw--non-interactive":!this.isInteractionEnabled(),"excalidraw--navigation":!this.isInteractionEnabled()&&this.isNavigationEnabled(),"excalidraw--tools":!this.isInteractionEnabled()&&this.isToolSupported(this.state.activeTool.type),"excalidraw--embeds":!this.isInteractionEnabled()&&this.isEmbedsEnabled(),"excalidraw--allow-browser-zoom":!this.isInteractionEnabled()&&this.isBrowserZoomEnabled(),"excalidraw--ui-hidden":!this.isDefaultUIEnabled(),"excalidraw--mobile-toolbar":this.editorInterface.formFactor==="phone"&&this.isDefaultUIEnabled()&&!this.state.viewModeEnabled,"excalidraw--viewport-status-border":!!this.props.viewportStatusFrame?.border,"excalidraw--viewport-status-label":!!this.props.viewportStatusFrame?.label,"excalidraw--zen-mode":this.state.zenModeEnabled}),style:{"--ui-pointerEvents":I?MB.disabled:MB.enabled,...this.state.dynamicStyle||{},"--right-sidebar-width":`${oH}px`},ref:this.excalidrawContainerRef,onDrop:this.isInteractionEnabled()?this.handleAppOnDrop:void 0,tabIndex:0,onKeyDown:this.props.handleKeyboardGlobally||!this.isInteractionEnabled()?void 0:this.onKeyDown,onPointerEnter:this.isInteractionEnabled()?this.toggleOverscrollBehavior:void 0,onPointerLeave:this.isInteractionEnabled()?this.toggleOverscrollBehavior:void 0,children:(0,Ue.jsx)(zE.Provider,{value:this.api,children:(0,Ue.jsx)(ahA.Provider,{value:this,children:(0,Ue.jsx)(rhA.Provider,{value:this.props,children:(0,Ue.jsx)(IT.Provider,{value:this.excalidrawContainerValue,children:(0,Ue.jsx)(lT.Provider,{value:this.editorInterface,children:(0,Ue.jsx)(BT.Provider,{value:this.setAppState,children:(0,Ue.jsx)(CT.Provider,{value:this.state,children:(0,Ue.jsxs)(cT.Provider,{value:this.scene.getNonDeletedElements(),children:[(0,Ue.jsxs)(dT.Provider,{value:this.actionManager,children:[(0,Ue.jsx)(SQA,{canvas:this.canvas,appState:this.state,defaultUIEnabled:this.isDefaultUIEnabled(),zoomUIEnabled:this.isUIControlEnabled("zoom"),scrollBackToContentUIEnabled:this.isUIControlEnabled("scrollBackToContent"),files:this.files,setAppState:this.setAppState,actionManager:this.actionManager,elements:this.scene.getNonDeletedElements(),onLockToggle:this.toggleLock,onPenModeToggle:this.togglePenMode,langCode:yl().code,renderTopLeftUI:i,renderTopRightUI:o,renderCustomStats:a,showExitZenModeBtn:typeof this.props?.zenModeEnabled>"u"&&this.state.zenModeEnabled,UIOptions:this.props.UIOptions,onExportImage:this.onExportImage,renderWelcomeScreen:!this.state.isLoading&&this.state.showWelcomeScreen&&this.state.activeTool.type===this.state.preferredSelectionTool.type&&!this.state.zenModeEnabled&&!this.scene.getElementsIncludingDeleted().length,app:this,isCollaborating:this.props.isCollaborating,generateLinkForSelection:this.props.generateLinkForSelection,currentUserControls:this.props.currentUserControls,children:this.props.children}),(0,Ue.jsx)("div",{className:"excalidraw-textEditorContainer"}),(0,Ue.jsx)("div",{className:"excalidraw-contextMenuContainer"}),(0,Ue.jsx)("div",{className:"excalidraw-eye-dropper-container"}),(0,Ue.jsx)(GQA,{trails:[this.laserTrails,this.lassoTrail,this.eraserTrail,this.drawShape.trail]}),this.isDefaultUIEnabled()&&(0,Ue.jsx)(XQA,{}),this.isDefaultUIEnabled()&&t.length===1&&this.state.openDialog?.name!=="elementLinkSelector"&&this.state.showHyperlinkPopup&&(0,Ue.jsx)(YgA,{element:c,scene:this.scene,setAppState:this.setAppState,onLinkOpen:this.props.onLinkOpen,setToast:this.setToast,updateEmbedValidationStatus:this.updateEmbedValidationStatus},c.id),this.isDefaultUIEnabled()&&this.props.aiEnabled!==!1&&t.length===1&&UQ(c)&&(0,Ue.jsx)(PY,{element:c,elementsMap:r,children:(0,Ue.jsx)(FU,{title:L("labels.convertToCode"),icon:vd,checked:!1,onChange:()=>this.onMagicFrameGenerate(c,"button")})}),this.isDefaultUIEnabled()&&t.length===1&&is(c)&&c.customData?.generationData?.status==="done"&&(0,Ue.jsxs)(PY,{element:c,elementsMap:r,children:[(0,Ue.jsx)(FU,{title:L("labels.copySource"),icon:Mh,checked:!1,onChange:()=>this.onIframeSrcCopy(c)}),(0,Ue.jsx)(FU,{title:"Enter fullscreen",icon:hoA,checked:!1,onChange:()=>{let d=this.getHTMLIFrameElement(c);if(d)try{d.requestFullscreen(),this.setState({activeEmbeddable:{element:c,state:"active"},selectedElementIds:{[c.id]:!0},newElement:null,selectionElement:null})}catch(E){console.warn(E),this.setState({errorMessage:"Couldn't enter fullscreen"})}}})]}),(this.isDefaultUIEnabled()||wC())&&this.state.contextMenu&&(0,Ue.jsx)(mIA,{items:this.state.contextMenu.items,top:this.state.contextMenu.top,left:this.state.contextMenu.left,actionManager:this.actionManager,onClose:d=>{this.setState({contextMenu:null},()=>{this.focusContainer(),d?.()})}}),s&&C&&(0,Ue.jsx)(rT,{appState:this.state,newElement:s,scale:window.devicePixelRatio,rc:this.rc,elementsMap:r,allElementsMap:l,renderConfig:{imageCache:this.imageCache,isExporting:!1,renderGrid:!1,canvasBackgroundColor:this.state.viewBackgroundColor,embedsValidationStatus:this.embedsValidationStatus,elementsPendingErasure:this.elementsPendingErasure,pendingFlowchartNodes:null,theme:this.state.theme,isHighlighterPenDrawing:C}}),(0,Ue.jsx)(aT,{canvas:this.canvas,rc:this.rc,elementsMap:r,allElementsMap:l,visibleElements:n,canvasNonce:g,selectionNonce:this.state.selectionElement?.versionNonce,scale:window.devicePixelRatio,appState:this.state,renderConfig:{imageCache:this.imageCache,isExporting:!1,renderGrid:eB(this),renderLinks:this.isLinksEnabled(),canvasBackgroundColor:this.state.viewBackgroundColor,embedsValidationStatus:this.embedsValidationStatus,elementsPendingErasure:this.elementsPendingErasure,pendingFlowchartNodes:this.flowchart.pendingNodes,theme:this.state.theme,isHighlighterPenDrawing:C}}),s&&!C&&(0,Ue.jsx)(rT,{appState:this.state,newElement:s,scale:window.devicePixelRatio,rc:this.rc,elementsMap:r,allElementsMap:l,renderConfig:{imageCache:this.imageCache,isExporting:!1,renderGrid:!1,canvasBackgroundColor:this.state.viewBackgroundColor,embedsValidationStatus:this.embedsValidationStatus,elementsPendingErasure:this.elementsPendingErasure,pendingFlowchartNodes:null,theme:this.state.theme,isHighlighterPenDrawing:C}}),(0,Ue.jsx)(iT,{app:this,containerRef:this.excalidrawContainerRef,canvas:this.interactiveCanvas,elementsMap:r,visibleElements:n,allElementsMap:l,selectedElements:t,canvasNonce:g,selectionNonce:this.state.selectionElement?.versionNonce,scale:window.devicePixelRatio,appState:this.state,renderScrollbars:this.props.renderScrollbars===!0,editorInterface:this.editorInterface,interactionEnabled:this.isInteractionEnabled(),navigationEnabled:this.isNavigationEnabled(),renderInteractiveSceneCallback:this.renderInteractiveSceneCallback,handleCanvasRef:this.handleInteractiveCanvasRef,onContextMenu:this.handleCanvasContextMenu,onClick:this.handleCanvasClick,onPointerMove:this.handleCanvasPointerMove,onPointerUp:this.handleCanvasPointerUp,onPointerCancel:this.removePointer,onTouchMove:this.handleTouchMove,onPointerDown:this.handleCanvasPointerDown,onDoubleClick:this.handleCanvasDoubleClick}),this.props.viewportStatusFrame?.border&&this.editorInterface.formFactor==="phone"&&(0,Ue.jsx)(AG,{border:this.props.viewportStatusFrame.border}),this.renderFrameNames(),this.state.activeEmbeddable?.state==="active"&&this.props.renderEmbeddableMenu?.(this.state),this.isDefaultUIEnabled()&&this.state.activeLockedId&&(0,Ue.jsx)(ehA,{app:this,activeLockedId:this.state.activeLockedId}),this.isDefaultUIEnabled()&&B&&(0,Ue.jsx)(jgA,{app:this})]}),this.renderEmbeddables()]})})})})})})})})})}setPlugins(t){Object.assign(this.plugins,t)}async onMagicFrameGenerate(t,o){let i=this.plugins.diagramToCode?.generate;if(!i){this.setState({errorMessage:"No diagram to code plugin found"});return}let a=Ah(this.scene.getNonDeletedElements(),t,this.scene.getNonDeletedElementsMap()).filter(n=>!UQ(n));if(!a.length){o==="button"?(this.setState({errorMessage:"Cannot generate from an empty frame"}),ye("ai","generate (no-children)","d2c")):this.setActiveTool({type:"magicframe"});return}let r=this.insertIframeElement({sceneX:t.x+t.width+30,sceneY:t.y,width:t.width,height:t.height});if(r){this.updateMagicGeneration({frameElement:r,data:{status:"pending"}}),this.setState({selectedElementIds:{[r.id]:!0}}),ye("ai","generate (start)","d2c");try{let{html:n}=await i({frame:t,children:a});if(ye("ai","generate (success)","d2c"),!n.trim()){this.updateMagicGeneration({frameElement:r,data:{status:"error",code:"ERR_OAI",message:"Nothing genereated :("}});return}let g=n.includes("<!DOCTYPE html>")&&n.includes("</html>")?n.slice(n.indexOf("<!DOCTYPE html>"),n.indexOf("</html>")+7):n;this.updateMagicGeneration({frameElement:r,data:{status:"done",html:g}})}catch(n){ye("ai","generate (failed)","d2c"),this.updateMagicGeneration({frameElement:r,data:{status:"error",code:"ERR_OAI",message:n.message||"Unknown error during generation"}})}}}onIframeSrcCopy(t){t.customData?.generationData?.status==="done"&&(ks(t.customData.generationData.html),this.setToast({message:"copied to clipboard",closable:!1,duration:1500}))}clearImageShapeCache(t){let o=t??this.files;this.scene.getNonDeletedElements().forEach(i=>{if(ua(i)&&o[i.fileId]){let a=this.imageCache.get(i.fileId);a&&a.image instanceof Promise&&typeof a.image.cancel=="function"&&a.image.cancel(),this.imageCache.delete(i.fileId),It.delete(i)}})}async componentDidMount(){this.unmounted=!1,this.api=this.createExcalidrawAPI(),this.excalidrawContainerValue.container=this.excalidrawContainerRef.current,this.store.onDurableIncrementEmitter.on(i=>{this.history.record(i.delta)}),this.props.onIncrement&&this.store.onStoreIncrementEmitter.on(i=>{this.props.onIncrement?.(i)}),this.scene.onUpdate(this.triggerRender),this.addEventListeners(),this.props.autoFocus&&this.excalidrawContainerRef.current&&this.focusContainer(),KD&&this.excalidrawContainerRef.current&&(this.resizeObserver=new ResizeObserver(()=>{this.refreshEditorInterface(),this.updateDOMRect()}),this.resizeObserver?.observe(this.excalidrawContainerRef.current)),new URLSearchParams(window.location.search.slice(1)).has("web-share-target")?this.restoreFileFromShare():this.updateDOMRect(this.initializeScene),y3()&&!h5()&&this.setState({errorMessage:(0,Ue.jsx)(EIA,{})});let o={excalidrawAPI:this.api,container:this.excalidrawContainerRef.current};this.editorLifecycleEvents.emit("editor:mount",o),this.props.onMount?.(o),this.props.onExcalidrawAPI?.(this.api)}componentWillUnmount(){this.api={...this.api,isDestroyed:!0};for(let t of Object.keys(this.api))(t.startsWith("get")||t==="onStateChange"||t==="onEvent")&&typeof this.api[t]=="function"&&(this.api[t]=()=>{throw new Error("ExcalidrawAPI is no longer usable after the editor has been unmounted and will return invalid/empty data. You should check for `ExcalidrawAPI.isDestroyed` before calling get* methods on subscribing to state/event changes.")});this.editorLifecycleEvents.emit("editor:unmount"),this.props.onUnmount?.(),this.props.onExcalidrawAPI?.(null),window.launchQueue?.setConsumer(()=>{}),this.renderer.destroy(),this.scene.destroy(),this.scene=new RI,this.fonts=new Vo(this.scene),this.renderer=new lb(this.scene),this.files={};for(let t of this.imageCache.values())t.image instanceof Promise&&typeof t.image.cancel=="function"&&t.image.cancel();this.imageCache.clear(),this.resizeObserver?.disconnect(),this.unmounted=!0,this.viewport.destroy(),this.removeEventListeners(),this.library.destroy(),this.laserTrails.stop(),this.drawShape.stop(),this.eraserTrail.stop(),this.onChangeEmitter.clear(),this.store.onStoreIncrementEmitter.clear(),this.store.onDurableIncrementEmitter.clear(),this.appStateObserver.clear(),this.editorLifecycleEvents.clear(),It.destroy(),bg.destroy(),clearTimeout(fB),Et.clearCache(),So.clearCache(),fB=0,document.documentElement.style.overscrollBehaviorX="",document.body.removeChild(zC()),this.interactiveCanvas=null,this.iFrameRefs.clear(),this.iFrameRefs=null,this.embedsValidationStatus.clear(),this.embedsValidationStatus=null,this.initializedEmbeds.clear(),this.initializedEmbeds=null,this.elementsPendingErasure.clear(),this.elementsPendingErasure=null,this.lastPointerDownEvent=null,this.lastPointerUpEvent=null,this.lastPointerMoveEvent=null,this.actionManager.app=null,this.actionManager.actions={},this.history.clear(),this.store.clear(),this.store=null,this.library=null,this.canvas=null,this.rc=null,this.excalidrawContainerRef.current=void 0,this.excalidrawContainerValue={container:null,id:"unknown"}}removeEventListeners(){this.onRemoveEventListenersEmitter.trigger()}addEventListeners(){if(this.removeEventListeners(),this.onRemoveEventListenersEmitter.once(_e(window,"message",this.onWindowMessage,!1),_e(document,"pointerup",this.removePointer,{passive:!1}),_e(document.fonts,"loadingdone",t=>{let o=t.fontfaces;this.fonts.onLoaded(o)},{passive:!1}),_e(window,"focus",()=>{this.maybeCleanupAfterMissingPointerUp(null),this.triggerRender(!0)},{passive:!1})),!this.isInteractionEnabled()){this.isNavigationEnabled()&&this.onRemoveEventListenersEmitter.once(_e(this.excalidrawContainerRef.current,"wheel",this.handleWheel,{passive:!1}),_e(this.props.handleKeyboardGlobally?document:this.excalidrawContainerRef.current,"keydown",this.handleNavigationModeKeyDown,!1),_e(document,"pointermove",this.updateCurrentCursorPosition,{passive:!1}),_e(document,"gesturestart",this.onGestureStart,!1),_e(document,"gesturechange",this.onGestureChange,!1),_e(document,"gestureend",this.onGestureEnd,!1)),this.isBrowserZoomEnabled()||(this.isNavigationEnabled()||this.onRemoveEventListenersEmitter.once(_e(this.excalidrawContainerRef.current,"wheel",this.preventBrowserZoomWheel,{passive:!1}),_e(this.excalidrawContainerRef.current,"gesturestart",this.disableEvent,!1),_e(this.excalidrawContainerRef.current,"gesturechange",this.disableEvent,!1),_e(this.excalidrawContainerRef.current,"gestureend",this.disableEvent,!1)),this.onRemoveEventListenersEmitter.once(_e(this.props.handleKeyboardGlobally?document:this.excalidrawContainerRef.current,"keydown",this.preventBrowserZoomKeyDown,!1)));return}this.props.handleKeyboardGlobally&&this.onRemoveEventListenersEmitter.once(_e(document,"keydown",this.onKeyDown,!1)),this.onRemoveEventListenersEmitter.once(_e(this.excalidrawContainerRef.current,"wheel",this.handleWheel,{passive:!1}),_e(document,"copy",this.onCopy,{passive:!1}),_e(document,"keyup",this.onKeyUp,{passive:!0}),_e(window,"focus",()=>this.triggerRender(!0),{passive:!0}),_e(document,"pointermove",this.updateCurrentCursorPosition,{passive:!1}),_e(document,"gesturestart",this.onGestureStart,!1),_e(document,"gesturechange",this.onGestureChange,!1),_e(document,"gestureend",this.onGestureEnd,!1)),!this.state.viewModeEnabled&&(this.onRemoveEventListenersEmitter.once(_e(document,"fullscreenchange",this.onFullscreenChange,{passive:!1}),_e(document,"paste",this.pasteFromClipboard,{passive:!1}),_e(document,"cut",this.onCut,{passive:!1}),_e(window,"resize",this.onResize,!1),_e(window,"unload",this.onUnload,!1),_e(window,"blur",this.onBlur,!1),_e(this.excalidrawContainerRef.current,"dragover",this.disableEvent,!1),_e(this.excalidrawContainerRef.current,"drop",this.disableEvent,!1)),this.props.detectScroll&&this.onRemoveEventListenersEmitter.once(_e(z3(this.excalidrawContainerRef.current),"scroll",this.onScroll,{passive:!1})))}componentDidUpdate(t,o){!this._initialized&&!this.state.isLoading&&(this._initialized=!0,this.editorLifecycleEvents.emit("editor:initialize",this.api),this.props.onInitialize?.(this.api)),this.handleInteractionStateChange(t,o),this.handleForcedToolChange(t,o),this.appStateObserver.flush(o),this.updateEmbeddables();let i=this.scene.getElementsIncludingDeleted(),a=this.scene.getElementsMapIncludingDeleted(),r=(this.sessionExportThemeOverride??this.state.theme)===EA.DARK;this.state.exportWithDarkMode!==r&&this.setState({exportWithDarkMode:r}),!this.state.showWelcomeScreen&&!i.length&&this.setState({showWelcomeScreen:!0}),(o.zoom.value!==this.state.zoom.value||o.scrollX!==this.state.scrollX||o.scrollY!==this.state.scrollY)&&(this.props?.onScrollChange?.(this.state.scrollX,this.state.scrollY,this.state.zoom),this.onScrollChangeEmitter.trigger(this.state.scrollX,this.state.scrollY,this.state.zoom)),this.state.highlightSearchResult&&!this.debounceClearHighlightSearchResults&&o.selectedElementIds!==this.state.selectedElementIds&&this.setState({highlightSearchResult:!1}),Object.keys(this.state.selectedElementIds).length&&ig(this.state)&&this.setState({activeTool:oo(this.state,{type:"selection"})}),this.state.activeTool.type==="eraser"&&o.theme!==this.state.theme&&this.cursor.applyForTool(),this.state.activeTool.type==="bucketfill"&&o.currentItemBackgroundColor!==this.state.currentItemBackgroundColor&&this.cursor.applyForTool(),o.activeTool.type==="selection"&&this.state.activeTool.type!=="selection"&&this.state.showHyperlinkPopup&&this.setState({showHyperlinkPopup:!1}),t.langCode!==this.props.langCode&&this.updateLanguage(),ig(o)&&!ig(this.state)&&this.eraserTrail.endPath(),(o.openDialog?.name==="elementLinkSelector"||this.state.openDialog?.name==="elementLinkSelector")&&o.openDialog?.name!==this.state.openDialog?.name&&(this.deselectElements(),this.setState({hoveredElementIds:{}})),t.zenModeEnabled!==this.props.zenModeEnabled&&this.setState({zenModeEnabled:!!this.props.zenModeEnabled}),t.theme!==this.props.theme&&this.props.theme&&this.setState({theme:this.props.theme}),this.excalidrawContainerRef.current?.classList.toggle("theme--dark",this.state.theme===EA.DARK),this.state.selectedLinearElement?.isEditing&&!this.state.selectedElementIds[this.state.selectedLinearElement.elementId]&&setTimeout(()=>{this.state.selectedLinearElement?.isEditing&&this.actionManager.executeAction(sa)});let n=Object.keys(this.state.selectedElementIds);if(n.length){let s=n.filter(l=>{let I=this.scene.getElement(l);return!I||I.isDeleted});s.length&&this.setState(l=>{let I={...l.selectedElementIds};for(let c of s)delete I[c];return{selectedElementIds:At(I,l)}})}if(this.state.editingTextElement){let s=this.scene.getElement(this.state.editingTextElement.id);(!s||s.isDeleted)&&this.setState({editingTextElement:null})}let g=this.state.editingTextElement||this.viewport.isAnimating?!1:!this.visibleElements.length&&this.hasRenderableElements;this.state.scrolledOutside!==g&&this.setState({scrolledOutside:g}),this.store.commit(a,this.state),this.state.isLoading||(this.props.onChange?.(i,this.state,this.files),this.onChangeEmitter.trigger(i,this.state,this.files))}static resetTapTwice(){BD=!1,ED=null}async insertClipboardContent(t,o,i){let{x:a,y:r}=He({clientX:this.viewport.lastPosition.x,clientY:this.viewport.lastPosition.y},this.state);if(t.errorMessage){this.setState({errorMessage:t.errorMessage});return}if(o.length===0&&!i&&t.mixedContent){await this.addElementsFromMixedContentPaste(t.mixedContent,{isPlainPaste:i,sceneX:a,sceneY:r});return}if(!i&&t.text){let l=db(t.text);if(l.ok){this.setState({openDialog:{name:"charts",data:l.data,rawText:t.text}});return}}let n=o.map(l=>l.file);if(n.length===0&&t.text&&!i){let l=t.text.trim();l.startsWith("<svg")&&l.endsWith("</svg>")&&n.push(CN(l))}if(n.length>0){this.isToolSupported("image")?await this.insertImages(n,a,r):this.setState({errorMessage:L("errors.imageToolNotSupported")});return}if(t.elements){let l=t.programmaticAPI?NI(t.elements):t.elements;this.addElementsFromPasteOrLibrary({elements:l,files:t.files||null,position:this.editorInterface.formFactor==="desktop"?"cursor":"center",retainSeed:i,preserveFrameChildrenOrder:!0});return}if(!t.text)return;if(!i&&vlA(t.text)){let I=await(await zI()).api;try{let{elements:c,files:C={}}=await I.parseMermaidToExcalidraw(t.text),B=NI(c,{regenerateIds:!0});this.addElementsFromPasteOrLibrary({elements:B,files:C,position:this.editorInterface.formFactor==="desktop"?"cursor":"center"});return}catch(c){console.warn(`parsing pasted text as mermaid definition failed: ${c.message}`)}}let g=Cy(t.text).split(/\n+/).map(l=>l.trim()).filter(Boolean),s=g.map(l=>LZ(l)).filter(l=>rh(l,this.props.validateEmbeddable)&&(/^(http|https):\/\/[^\s/$.?#].[^\s]*$/.test(l)||cs(l)?.type==="video"));if(!i&&s.length>0&&s.length===g.length){let l=[];for(let I of s){let c=l[l.length-1],C=this.insertEmbeddableElement({sceneX:c?c.x+c.width+20:a,sceneY:r,link:ai(I)});C&&l.push(C)}l.length&&(this.store.scheduleCapture(),this.setState({selectedElementIds:Object.fromEntries(l.map(I=>[I.id,!0]))}));return}this.addTextFromPaste(t.text,i)}async addElementsFromMixedContentPaste(t,{isPlainPaste:o,sceneX:i,sceneY:a}){if(!o&&t.some(r=>r.type==="imageUrl")&&this.isToolSupported("image")){let r=t.filter(l=>l.type==="imageUrl").map(l=>l.value),n=await Promise.all(r.map(async l=>{try{return{file:await Hz(l)}}catch(I){let c=I.message;return I.cause==="FETCH_ERROR"?c=L("errors.failedToFetchImage"):I.cause==="UNSUPPORTED"&&(c=L("errors.unsupportedFileType")),{errorMessage:c}}})),g=n.filter(l=>!!l.file).map(l=>l.file);await this.insertImages(g,i,a);let s=n.find(l=>!!l.errorMessage);s&&s.errorMessage&&this.setState({errorMessage:s.errorMessage})}else{let r=t.filter(n=>n.type==="text");r.length&&this.addTextFromPaste(r.map(n=>n.value).join(`
|
|
575
575
|
|
|
576
576
|
`),o)}}addTextFromPaste(t,o=!1){let{x:i,y:a}=He({clientX:this.viewport.lastPosition.x,clientY:this.viewport.lastPosition.y},this.state),r={x:i,y:a,strokeColor:this.state.currentItemStrokeColor,backgroundColor:this.state.currentItemBackgroundColor,fillStyle:this.state.currentItemFillStyle,strokeWidth:this.getCurrentItemStrokeWidth("text"),strokeStyle:this.state.currentItemStrokeStyle,roundness:null,roughness:this.state.currentItemRoughness,opacity:this.state.currentItemOpacity,text:t,rawText:t,fontSize:vS(this.state.currentItemFontSize,this.state.zoom.value),fontFamily:this.state.currentItemFontFamily,textAlign:el,verticalAlign:YB,locked:!1},n=se({fontSize:r.fontSize,fontFamily:r.fontFamily}),g=Ko(r.fontFamily),[s,,l]=f0(this.state),I=Math.max(Math.min((l-s)*.5,800),200),c=10,C=a,B=o?[t]:t.split(`
|
|
577
|
-
`),d=B.reduce((E,h,p)=>{let u=ns(h).trim();if(u.length){let m=this.getTopLayerFrameAtSceneCoords({x:i,y:C}),w=Me(u,n,g),b=w.width>I,D=b?di(u,n,I):u;w=b?Me(D,n,g):w;let S=i-w.width/2,U=C-w.height/2,v=Co({...r,x:S,y:U,text:D,rawText:u,originalText:u,lineHeight:g,autoResize:!b,frameId:m?m.id:null});E.push(v),C+=v.height+c}else B[p-1]?.trim()&&(C+=kn(r.fontSize,g)+c);return E},[]);d.length!==0&&(this.insertNewElements(d),this.store.scheduleCapture(),this.setState({selectedElementIds:At(Object.fromEntries(d.map(E=>[E.id,!0])),this.state)}),!o&&d.length>1&&ohA===!1&&this.editorInterface.formFactor!=="phone"&&(this.setToast({message:L("toast.pasteAsSingleElement",{shortcut:gA("CtrlOrCmd+Shift+V")}),duration:5e3}),ohA=!0))}handleTextWysiwyg(t,{isExistingElement:o=!1,initialCaretSceneCoords:i=null}){let a=this.scene.getElementsMapIncludingDeleted(),r=(n,g,s,l,I)=>{this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(c=>c.id===t.id&&cA(c)?YA(c,{originalText:n,rawText:s??n,link:l,hasTextLink:I??c.hasTextLink,isDeleted:g??c.isDeleted,...AC(c,ot(c,a),a,n)}):c)])};if(this.props.onBeforeTextEdit){let n=this.props.onBeforeTextEdit(t,o);n&&n!==t.originalText&&this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(g=>g.id===t.id&&cA(g)?(t=YA(g,{originalText:n,rawText:n,isDeleted:!1,...AC(g,ot(g,a),a,n)}),t):g)])}this.textWysiwygSubmitHandler=UlA({canvas:this.canvas,getViewportCoords:(n,g)=>{let{x:s,y:l}=oi({sceneX:n,sceneY:g},this.state);return[s-this.state.offsetLeft,l-this.state.offsetTop]},onChange:Bo(n=>{r(n,!1),St(t)&&Ft(t,this.scene)}),onSubmit:Bo(({viaKeyboard:n,nextOriginalText:g})=>{this.textWysiwygSubmitHandler=null;let s=!g.trim(),l=g,I,c=!1;if(this.props.onBeforeTextSubmit){let B=this.scene.getElementsIncludingDeleted().find(d=>d.id===t.id&&cA(d));if(B){let d=AC(B,ot(B,a),a,g),{updatedNextOriginalText:E,nextLink:h}=this.props.onBeforeTextSubmit(t,d?.text??g,g,s);g=E??g,c=!!h,I=TeA()?h:t.link??void 0}}r(g,s,l,I,c);let C=n&&!this.isToolLocked()&&this.state.activeTool.type!=="autoshape"?t.containerId||(s?null:t.id):null;C&&(0,$a.flushSync)(()=>{this.setState(B=>({selectedElementIds:At({...B.selectedElementIds,[C]:!0},B)}))}),s&&n0(this.scene.getNonDeletedElements(),[t]),(!s||o)&&this.store.scheduleCapture(),(0,$a.flushSync)(()=>{this.setState({newElement:null,editingTextElement:null})}),(this.isToolLocked()||this.state.activeTool.type==="autoshape")&&this.cursor.applyForTool(),this.focusContainer()}),element:t,excalidrawContainer:this.excalidrawContainerRef.current,app:this,initialCaretSceneCoords:i,autoSelect:!this.editorInterface.isTouchScreen}),this.deselectElements(),r(t.originalText,!1)}deselectElements(){this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})}getSelectedTextElement(t){let o=this.scene.getSelectedElements(this.state);if(o.length!==1)return null;let i=o[0];return cA(i)?i:t?vA(i,this.scene.getNonDeletedElementsMap()):null}getSelectedTextEditingContainerAtPosition(t,o){let i=this.scene.getSelectedElements(this.state);if(i.length!==1||!t||t.id!==i[0].id)return null;let a=i[0];if(cA(a))return null;if(!vR(a))return;let r=this.getSelectedTextElement(a),n=this.getTextElementAtPosition(o.x,o.y);if(!(!r||n?.id!==r.id))return a}getTextElementAtPosition(t,o){let i=this.getElementAtPosition(t,o,{includeBoundTextElement:!0});return i&&cA(i)&&!i.isDeleted?i:null}getElementAtPosition(t,o,i){let a=[];if(i&&"allHitElements"in i?a=i?.allHitElements||[]:a=this.getElementsAtPosition(t,o,{includeBoundTextElement:i?.includeBoundTextElement,includeLockedElements:i?.includeLockedElements}),a.length>1){if(i?.preferSelected){for(let n=a.length-1;n>-1;n--)if(this.state.selectedElementIds[a[n].id])return a[n]}let r=a[a.length-1];return Aa({point:k(t,o),element:r,threshold:this.getElementHitThreshold(r)/2,elementsMap:this.scene.getNonDeletedElementsMap(),frameNameBound:mA(r)?this.frameNameBoundsCache.get(r):null})?r:a[a.length-2]}return a.length===1?a[0]:null}getElementsAtPosition(t,o,i){let a=[],r=this.scene.getNonDeletedElementsMap();return(i?.includeBoundTextElement&&i?.includeLockedElements?this.scene.getNonDeletedElements():this.scene.getNonDeletedElements().filter(g=>(i?.includeLockedElements||!g.locked)&&(i?.includeBoundTextElement||!(cA(g)&&g.containerId)))).filter(g=>this.hitElement(t,o,g)).filter(g=>{let s=ui(g,r);return s&&!St(s)&&console.error("[NONDELETED][INVARIANT] Containing frame is deleted"),s&&this.state.frameRendering.enabled&&this.state.frameRendering.clip&&!Oo(g)?lv({x:t,y:o},s,r):!0}).filter(g=>Oo(g)?(a.push(g),!1):!0).concat(a)}getElementHitThreshold(t){return Math.max(t.strokeWidth/2+.1,.85*(YF/this.state.zoom.value))}hitElement(t,o,i,a=!0){return a&&this.state.selectedElementIds[i.id]&&Z0([i],this.state,this.editorInterface)&&td(k(t,o),i,this.scene.getNonDeletedElementsMap(),this.getElementHitThreshold(i))||JR(k(t,o),i,this.scene.getNonDeletedElementsMap())?!0:Aa({point:k(t,o),element:i,threshold:this.getElementHitThreshold(i),elementsMap:this.scene.getNonDeletedElementsMap(),frameNameBound:mA(i)?this.frameNameBoundsCache.get(i):null})}getTextBindableContainerAtPosition(t,o){let i=this.scene.getNonDeletedElements(),a=this.scene.getSelectedElements(this.state);if(a.length===1)return sl(a[0],!1)?a[0]:null;let r=null;for(let n=i.length-1;n>=0;--n){if(i[n].isDeleted)continue;let[g,s,l,I]=qA(i[n],this.scene.getNonDeletedElementsMap());if(bA(i[n])&&Aa({point:k(t,o),element:i[n],elementsMap:this.scene.getNonDeletedElementsMap(),threshold:this.getElementHitThreshold(i[n])})){r=i[n];break}else if(g<t&&t<l&&s<o&&o<I){if(mA(i[n]))continue;r=i[n];break}}return sl(r,!1)?r:null}isEditingTextContent(){return!!this.state.editingTextElement||cA(this.state.newElement)}handleHoverSelectedLinearElement(t,o,i){let a=this.scene.getNonDeletedElementsMap(),r=rA.getElement(t.elementId,a);if(r)if(this.state.selectedLinearElement){let n=-1,g=null;Aa({point:k(o,i),element:r,elementsMap:a,threshold:this.getElementHitThreshold(r)})?(n=rA.getPointIndexUnderCursor(r,a,this.state.zoom,o,i),g=rA.getSegmentMidpointHitCoords(t,{x:o,y:i},this.state,this.scene.getNonDeletedElementsMap()),(kA(r)?n===0||n===r.points.length-1:n>=0)||g?this.cursor.set(Xe.POINTER):this.hitElement(o,i,r)&&(!kA(r)||!(r.startBinding||r.endBinding))&&(this.state.activeTool.type!=="lasso"||Object.keys(this.state.selectedElementIds).length>0)&&this.cursor.set(Xe.MOVE)):this.hitElement(o,i,r)&&(!kA(r)||!(r.startBinding||r.endBinding))&&(this.state.activeTool.type!=="lasso"||Object.keys(this.state.selectedElementIds).length>0)&&this.cursor.set(Xe.MOVE),this.state.selectedLinearElement.hoverPointIndex!==n&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,hoverPointIndex:n}}),rA.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords,g)||this.setState({selectedLinearElement:{...this.state.selectedLinearElement,segmentMidPointHoveredCoords:g}});let s=null,l=r;(l.startBinding||l.endBinding)&&(s=zZ(r,o,i,this.scene,this.state)),this.state.selectedLinearElement.hoveredFocusPointBinding!==s&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!1,hoveredFocusPointBinding:s}}),s&&this.cursor.set(Xe.POINTER)}else this.cursor.set(Xe.AUTO)}startRightClickPanning(t){qs=!0,this.focusContainer(),this.state.editingTextElement||t.preventDefault(),this.cursor.set(Xe.GRABBING);let{clientX:o,clientY:i}=t,a=Ib(n=>{let g=o-n.clientX,s=i-n.clientY;o=n.clientX,i=n.clientY,this.viewport.translate({scrollX:this.state.scrollX-g/this.state.zoom.value,scrollY:this.state.scrollY-s/this.state.zoom.value})}),r=Bo(()=>{qs=!1,this.state.viewModeEnabled?this.cursor.set(Xe.GRAB):this.cursor.applyForTool(),this.setState({cursorButton:"up"}),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",r),window.removeEventListener("blur",r),a.flush()});window.addEventListener("blur",r),window.addEventListener("pointermove",a,{passive:!0}),window.addEventListener("pointerup",r)}updateGestureOnPointerDown(t){ve.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),ve.pointers.size===2&&(QN(this.state)?ve.initialDistance=null:(ve.lastCenter=HY(ve.pointers),ve.initialScale=this.state.zoom.value,ve.initialDistance=KY(Array.from(ve.pointers.values()))))}initialPointerDownState(t){let o=He(t,this.state),i=this.scene.getSelectedElements(this.state),[a,r,n,g]=$A(i),s=i.findIndex(kA)===0;return{origin:o,withCmdOrCtrl:t[z.CTRL_OR_CMD],originInGrid:ly(lo(o.x,o.y,t[z.CTRL_OR_CMD]||s?null:this.getEffectiveGridSize())),scrollbars:OY(QD,t.clientX-this.state.offsetLeft,t.clientY-this.state.offsetTop),lastCoords:{...o},originalElements:this.scene.getNonDeletedElements().reduce((l,I)=>(l.set(I.id,Pr(I)),l),new Map),resize:{handleType:!1,isResizing:!1,offset:{x:0,y:0},arrowDirection:"origin",center:{x:(n+a)/2,y:(g+r)/2}},hit:{element:null,allHitElements:[],wasAddedToSelection:!1,hasBeenDuplicated:!1,hasHitCommonBoundingBoxOfSelectedElements:this.isHittingCommonBoundingBoxOfSelectedElements(o,i)},drag:{hasOccurred:!1,offset:null,origin:{...o},blockDragging:!1},eventListeners:{onMove:null,onUp:null,onKeyUp:null,onKeyDown:null},boxSelection:{hasOccurred:!1}}}handleDraggingScrollBar(t,o){if(!(o.scrollbars.isOverEither&&!this.state.multiElement))return!1;HU=!0,o.lastCoords.x=t.clientX,o.lastCoords.y=t.clientY;let i=Ib(r=>{r.target instanceof HTMLElement&&this.handlePointerMoveOverScrollbars(r,o)}),a=Bo(()=>{Up=null,HU=!1,this.cursor.applyForTool(),this.setState({cursorButton:"up"}),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",a),i.flush()});return Up=a,window.addEventListener("pointermove",i),window.addEventListener("pointerup",a),!0}isASelectedElement(t){return t!=null&&this.state.selectedElementIds[t.id]}isHittingCommonBoundingBoxOfSelectedElements(t,o){if(o.length<2)return!1;let i=Math.max(YF/this.state.zoom.value,1),a=Wn*2/this.state.zoom.value,[r,n,g,s]=$A(o);return t.x>r-a-i&&t.x<g+a+i&&t.y>n-a-i&&t.y<s+a+i}getCurrentItemRoundness(t){return this.state.currentItemRoundness==="round"?{type:vr(t)?je.ADAPTIVE_RADIUS:je.PROPORTIONAL_RADIUS}:null}getCurrentItemStrokeWidth(t){return Ua(t,this.state.currentItemStrokeWidthKey,this.state.currentItemStrokeWidth)}maybeCacheReferenceSnapPoints(t,o,i=!1){gc({event:t,app:this,selectedElements:o})&&(i||!bg.getReferenceSnapPoints())&&bg.setReferenceSnapPoints(blA(this.scene.getNonDeletedElements(),o,this.state,this.scene.getNonDeletedElementsMap()))}maybeCacheVisibleGaps(t,o,i=!1){gc({event:t,app:this,selectedElements:o})&&(i||!bg.getVisibleGaps())&&bg.setVisibleGaps(flA(this.scene.getNonDeletedElements(),o,this.state,this.scene.getNonDeletedElementsMap()))}onKeyDownFromPointerDownHandler(t){return Bo(o=>{this.maybeHandleResize(t,o)||this.maybeDragNewGenericElement(t,o)})}onKeyUpFromPointerDownHandler(t){return Bo(o=>{o.key===z.ALT&&o.preventDefault(),!this.maybeHandleResize(t,o)&&this.maybeDragNewGenericElement(t,o)})}onPointerMoveFromPointerDownHandler(t){return Ib(o=>{if(this.state.contextMenu||this.state.openDialog?.name==="elementLinkSelector")return;let i=He(o,this.state);if(this.state.activeLockedId&&this.setState({activeLockedId:null}),this.state.selectedLinearElement&&this.state.selectedLinearElement.elbowed&&this.state.selectedLinearElement.initialState.segmentMidpoint.index){let[c,C]=lo(i.x,i.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),B=this.state.selectedLinearElement.initialState.segmentMidpoint.index;if(B<0){let E=rA.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:c,y:C},this.state,this.scene.getNonDeletedElementsMap());B=E?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,E,this.scene.getNonDeletedElementsMap()):-1}let d=rA.moveFixedSegment(this.state.selectedLinearElement,B,c,C,this.scene);this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!0,segmentMidPointHoveredCoords:d.segmentMidPointHoveredCoords,initialState:d.initialState}});return}let a=this.previousPointerMoveCoords??t.origin;if(this.previousPointerMoveCoords=i,t.drag.offset===null&&(t.drag.offset=ly(hZ(this.scene.getSelectedElements(this.state),t.origin.x,t.origin.y))),!(o.target instanceof HTMLElement)||this.handlePointerMoveOverScrollbars(o,t))return;if(ig(this.state)){this.handleEraser(o,i);return}if(this.state.activeTool.type==="laser"&&this.laserTrails.addPointToPath(i.x,i.y),this.drawShape.handlePointerMove(i))return;let[n,g]=lo(i.x,i.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize());if(t.resize.isResizing&&(t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeHandleCrop(t,o)||this.maybeHandleResize(t,o)))return!0;let s=this.scene.getNonDeletedElementsMap();if(this.state.selectedLinearElement){let c=this.state.selectedLinearElement;if(c.draggedFocusPointBinding){Y0(c,s,i,this.scene,this.state,this.getEffectiveGridSize(),o.altKey),this.setState({selectedLinearElement:{...c,isDragging:!1,selectedPointsIndices:[],initialState:{...c.initialState,lastClickedPoint:-1}}});return}if(rA.shouldAddMidpoint(this.state.selectedLinearElement,i,this.state,s)){let C=rA.addMidpoint(this.state.selectedLinearElement,i,this,!o[z.CTRL_OR_CMD],this.scene);if(!C)return;(0,$a.flushSync)(()=>{this.state.selectedLinearElement&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:C.pointerDownState,selectedPointsIndices:C.selectedPointsIndices,segmentMidPointHoveredCoords:null,isDragging:!0}})});return}else{if(c.initialState.segmentMidpoint.value!==null&&!c.initialState.segmentMidpoint.added)return;if(c.initialState.lastClickedPoint>-1){let C=rA.getElement(c.elementId,s);if(C?.isDeleted)return;if(st(C)){let d=si(k(i.x,i.y),this.scene.getNonDeletedElements(),s);ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(C,d)}if(o.altKey&&!this.state.selectedLinearElement?.initialState?.arrowStartIsInside&&ii("COMPLEX_BINDINGS")&&this.handleSkipBindMode(),c.initialState.lastClickedPoint===-1)return;let B=rA.handlePointDragging(o,this,i.x,i.y,c);if(B){t.lastCoords.x=i.x,t.lastCoords.y=i.y,t.drag.hasOccurred=!0,(B.suggestedBinding!==this.state.suggestedBinding||!Tt(B.selectedLinearElement?.selectedPointsIndices??[],this.state.selectedLinearElement?.selectedPointsIndices??[])||B.selectedLinearElement?.hoverPointIndex!==this.state.selectedLinearElement?.hoverPointIndex||B.selectedLinearElement?.customLineAngle!==this.state.selectedLinearElement?.customLineAngle||this.state.selectedLinearElement.isDragging!==B.selectedLinearElement?.isDragging||this.state.selectedLinearElement?.initialState?.altFocusPoint!==B.selectedLinearElement?.initialState?.altFocusPoint)&&this.setState(B);return}}}}let l=t.hit.allHitElements.some(c=>this.isASelectedElement(c)),I=this.state.selectedLinearElement?.isEditing&&o.shiftKey&&this.state.selectedLinearElement.elementId===t.hit.element?.id;if((l||t.hit.hasHitCommonBoundingBoxOfSelectedElements)&&!I&&!t.drag.blockDragging){let c=this.scene.getSelectedElements(this.state);if(c.length>0&&c.every(d=>d.locked))return;let B=c.some(d=>mA(d))?null:this.getTopLayerFrameAtSceneCoords(i,{currentFrameId:VQ(c),excludeElementIds:this.state.selectedElementIds});if(this.updateFrameToHighlight(B),t.drag.hasOccurred=!0,this.state.activeTool.type==="lasso"&&this.lassoTrail.hasCurrentTrail&&!(this.editorInterface.formFactor!=="desktop"&&t.hit.element)&&!this.state.activeTool.fromSelection)return;if(this.state.activeTool.type==="lasso"&&c.length>0&&t.drag.hasOccurred&&!this.state.activeTool.fromSelection&&this.lassoTrail.endPath(),c.length>0&&!t.withCmdOrCtrl&&!this.state.editingTextElement&&this.state.activeEmbeddable?.state!=="active"){let d={x:i.x-t.drag.origin.x,y:i.y-t.drag.origin.y},E=[...t.originalElements.values()],h=o.shiftKey;if(h){let m=Math.abs(d.x),w=Math.abs(d.y),b=h&&m<w,D=h&&m>w;b&&(d.x=0),D&&(d.y=0)}if(this.state.croppingElementId){let m=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(m&&xe(m)&&m.crop!==null&&t.hit.element===m){let w=m.crop,b=ua(m)&&this.imageCache.get(m.fileId)?.image;if(b&&!(b instanceof Promise)){let D=or(m),S=dt(i.x-a.x,i.y-a.y);S[0]*=b.naturalWidth/D.width,S[1]*=b.naturalHeight/D.height;let[U,v,x,R,W,q]=qA(m,s),T=KA($(k(U,v),k(W,q),m.angle)),F=KA($(k(x,v),k(W,q),m.angle)),K=KA($(k(U,R),k(W,q),m.angle)),N=ci(Xs(F,T)),J=ci(Xs(K,T)),H=dt(sI(S,N),sI(S,J)),j={...w,x:zA(w.x-H[0]*Math.sign(m.scale[0]),0,b.naturalWidth-w.width),y:zA(w.y-H[1]*Math.sign(m.scale[1]),0,b.naturalHeight-w.height)};this.scene.mutateElement(m,{crop:j});return}}}this.maybeCacheVisibleGaps(o,c),this.maybeCacheReferenceSnapPoints(o,c);let{snapOffset:p,snapLines:u}=DlA(E,d,this,o,this.scene.getNonDeletedElementsMap());if(this.setState({snapLines:u}),this.state.editingFrame||QZ(t,c,d,this.scene,p,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),this.setState({selectedElementsAreBeingDragged:!0,selectionElement:null}),o.altKey&&!t.hit.hasBeenDuplicated){t.hit.hasBeenDuplicated=!0;let m=this.scene.getElementsIncludingDeleted(),w=t.hit.element,b=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});w&&t.hit.wasAddedToSelection&&!b.find(T=>T.id===w.id)&&b.push(w);let D=new Map(b.map(T=>[T.id,T])),{duplicatedElements:S,duplicateElementsMap:U,elementsWithDuplicates:v,origIdToDuplicateId:x}=tC({type:"in-place",elements:m,appState:this.state,randomizeSeed:!0,idsOfElementsToDuplicate:D,overrides:({duplicateElement:T,origElement:F})=>({frameId:T.frameId??F.frameId,seed:zo()})});S.forEach(T=>{t.originalElements.set(T.id,Pr(T))});let R=v.map(T=>{if(D.has(T.id)){let F=t.originalElements.get(T.id);if(F)return YA(T,{x:F.x,y:F.y})}return T}),W=this.props.onDuplicate?.(R,m),q=To(W||R,QA(S));(0,$a.flushSync)(()=>{if(t.hit.element){let T=x.get(t.hit.element.id),F=T&&U.get(T);t.hit.element=F||null}t.hit.allHitElements=t.hit.allHitElements.reduce((T,F)=>{let K=x.get(F.id),N=K&&U.get(K);return N&&T.push(N),T},[]),t.drag.origin=He(o,this.state),this.setState(T=>({...Wm(S,this.scene.getNonDeletedElements(),T)})),this.scene.replaceAllElements(q),b.forEach(T=>{bt(T)&&T.boundElements?.some(F=>F.type==="arrow")&&Ft(T,this.scene)}),this.maybeCacheVisibleGaps(o,b,!0),this.maybeCacheReferenceSnapPoints(o,b,!0)})}return}}if(this.state.selectionElement){if(t.lastCoords.x=i.x,t.lastCoords.y=i.y,o.altKey){this.setActiveTool({type:"lasso",fromSelection:!0},{keepSelection:o.shiftKey}),this.lassoTrail.startPath(t.origin.x,t.origin.y,o.shiftKey),this.setAppState({selectionElement:null});return}this.maybeDragNewGenericElement(t,o)}else if(this.state.activeTool.type==="lasso")!o.altKey&&this.state.activeTool.fromSelection?(this.setActiveTool({type:"selection"}),this.createGenericElementOnPointerDown("selection",t),t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeDragNewGenericElement(t,o),this.lassoTrail.endPath()):this.lassoTrail.addPointToPath(i.x,i.y,o.shiftKey);else{let c=this.state.newElement;if(!c)return;if(c.type==="freedraw"){let C=c.points,B=i.x-c.x,d=i.y-c.y,E=C.length>0&&C[C.length-1];if(!(E&&E[0]===B&&E[1]===d)){let p=this.state.currentStrokeOptions,u=c.simulatePressure?c.pressures:[...c.pressures,p?.constantPressure?1:o.pressure];this.scene.mutateElement(c,{points:[...C,k(B,d)],pressures:u},{informMutation:!1,isDragging:!1}),this.setState({newElement:c})}}else if(FA(c)&&!c.isDeleted){t.drag.hasOccurred=!0;let C=c.points;UA(C.length>1,"Do not create linear elements with less than 2 points");let B=this.state.selectedLinearElement;(!B||B.elementId!==c.id)&&(B=new rA(c,this.scene.getNonDeletedElementsMap())),B&&(B.initialState.lastClickedPoint<0||B.initialState.lastClickedPoint>=C.length)&&(console.warn("Last clicked point is out of bounds. Attempting to fix it."),B={...B,selectedPointsIndices:[C.length-1],initialState:{...B.initialState,prevSelectedPointsIndices:null,lastClickedPoint:C.length-1},hoverPointIndex:C.length-1}),this.setState({newElement:c,...rA.handlePointDragging(o,this,n,g,B)})}else t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeDragNewGenericElement(t,o,!1)}if(this.state.activeTool.type==="selection"){t.boxSelection.hasOccurred=!0;let c=this.scene.getNonDeletedElements();if(this.state.selectedLinearElement?.isEditing)rA.handleBoxSelection(o,this.state,this.setState.bind(this),this.scene.getNonDeletedElementsMap());else{let C=!0;!o.shiftKey&&Et(c,this.state)&&(t.withCmdOrCtrl&&t.hit.element?this.setState(d=>So({...d,selectedElementIds:{[t.hit.element.id]:!0}},this.scene.getNonDeletedElements(),d,this)):C=!1);let B=this.state.selectionElement?Zm(c,this.state.selectionElement,this.scene.getNonDeletedElementsMap(),!1,this.state.boxSelectionMode):[];this.setState(d=>{let E={...C&&d.selectedElementIds,...B.reduce((h,p)=>(h[p.id]=!0,h),{})};return t.hit.element&&(B.length?delete E[t.hit.element.id]:E[t.hit.element.id]=!0),d=C?d:{...d,selectedGroupIds:{},editingGroupId:null},{...So({editingGroupId:d.editingGroupId,selectedElementIds:E},this.scene.getNonDeletedElements(),d,this),selectedLinearElement:B.length===1&&FA(B[0])?new rA(B[0],this.scene.getNonDeletedElementsMap()):null,showHyperlinkPopup:B.length===1&&(B[0].link||ni(B[0]))?"info":!1}})}}})}handlePointerMoveOverScrollbars(t,o){if(o.scrollbars.isOverHorizontal){let i=t.clientX,a=i-o.lastCoords.x;return this.viewport.translate({scrollX:this.state.scrollX-a*(QD.horizontal?.deltaMultiplier||1)/this.state.zoom.value}),o.lastCoords.x=i,!0}if(o.scrollbars.isOverVertical){let i=t.clientY,a=i-o.lastCoords.y;return this.viewport.translate({scrollY:this.state.scrollY-a*(QD.vertical?.deltaMultiplier||1)/this.state.zoom.value}),o.lastCoords.y=i,!0}return!1}onPointerUpFromPointerDownHandler(t){return Bo(o=>{let i=this.scene.getNonDeletedElementsMap();this.removePointer(o),t.drag.blockDragging=!1,t.eventListeners.onMove&&t.eventListeners.onMove.flush(),o.type==="pointerup"&&this.state.activeTool.type===po.bucketfill?this.bucketFill.handlePointerUp():this.bucketFill.cancel();let{newElement:a,resizingElement:r,croppingElementId:n,multiElement:g,activeTool:s,isResizing:l,isRotating:I,isCropping:c}=this.state;this.setState(u=>({isResizing:!1,isRotating:!1,isCropping:!1,resizingElement:null,selectionElement:null,frameToHighlight:null,elementsToHighlight:null,cursorButton:"up",snapLines:fQ(u.snapLines,[]),originSnapOffset:null})),this.lassoTrail.endPath(),this.previousPointerMoveCoords=null,bg.setReferenceSnapPoints(null),bg.setVisibleGaps(null),this.savePointer(o.clientX,o.clientY,"up");let C=t.hit.allHitElements,B=He({clientX:o.clientX,clientY:o.clientY},this.state);if(this.state.activeTool.type==="selection"&&!t.boxSelection.hasOccurred&&!t.resize.isResizing&&!C.some(u=>this.state.selectedElementIds[u.id])){let u=this.getElementAtPosition(B.x,B.y,{includeLockedElements:!0});this.isEditingTextContent()||this.store.scheduleCapture(),u?.locked?this.setState({activeLockedId:u.groupIds.length>0?u.groupIds.at(-1)||"":u.id}):this.setState({activeLockedId:null})}else this.setState({activeLockedId:null});if(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),this.setState({selectedElementsAreBeingDragged:!1,bindMode:"orbit"}),t.drag.hasOccurred&&t.hit?.element?.id){let u=i.get(t.hit.element.id);bt(u)&&u.boundElements?.filter(m=>m.type==="arrow").map(m=>i.get(m.id)).filter(m=>kA(m)).forEach(m=>{m&&this.scene.mutateElement(m,{})})}if(this.state.selectedLinearElement?.isEditing&&!this.state.newElement&&this.state.selectedLinearElement.draggedFocusPointBinding===null)if(!t.boxSelection.hasOccurred&&t.hit?.element?.id!==this.state.selectedLinearElement.elementId&&this.state.selectedLinearElement.draggedFocusPointBinding===null)this.actionManager.executeAction(sa);else{let u=rA.handlePointerUp(o,this.state.selectedLinearElement,this.state,this.scene);this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B}),u!==this.state.selectedLinearElement&&this.setState({selectedLinearElement:u,suggestedBinding:null})}else if(this.state.selectedLinearElement){if(this.state.selectedLinearElement.elbowed){let u=rA.getElement(this.state.selectedLinearElement.elementId,this.scene.getNonDeletedElementsMap());u&&this.scene.mutateElement(u,{})}if(this.state.selectedLinearElement.draggedFocusPointBinding?(_Z(this.state.selectedLinearElement,this.scene),this.setState({selectedLinearElement:{...this.state.selectedLinearElement,draggedFocusPointBinding:null,initialState:{...this.state.selectedLinearElement.initialState,arrowOtherEndpointInitialBinding:null}}})):t.hit?.element?.id!==this.state.selectedLinearElement.elementId?this.scene.getSelectedElements(this.state).length>1&&this.setState({selectedLinearElement:null}):this.state.selectedLinearElement.isDragging&&(this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!1}}),this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B})),this.state.newElement&&this.state.multiElement&&FA(this.state.newElement)&&this.state.selectedLinearElement){let{multiElement:u}=this.state;this.setState({selectedLinearElement:{...this.state.selectedLinearElement,lastCommittedPoint:u.points[u.points.length-1]}})}}if(this.missingPointerEventCleanupEmitter.clear(),window.removeEventListener("pointermove",t.eventListeners.onMove),window.removeEventListener("pointerup",t.eventListeners.onUp),window.removeEventListener("keydown",t.eventListeners.onKeyDown),window.removeEventListener("keyup",t.eventListeners.onKeyUp),this.props?.onPointerUp?.(s,t),this.onPointerUpEmitter.trigger(this.state.activeTool,t,o),a?.type==="freedraw"){let u=He(o,this.state),m=a.points,w=u.x-a.x,b=u.y-a.y;w===m[0][0]&&b===m[0][1]&&(b+=1e-4,w+=1e-4);let D=a.simulatePressure?[]:[...a.pressures,o.pressure];this.scene.mutateElement(a,{points:[...m,k(w,b)],pressures:D}),this.actionManager.executeAction(sa);return}if(FA(a)&&this.state.activeTool.type!=="autoshape"){let u=He(o,this.state),m=ZA(k(u.x,u.y),k(t.origin.x,t.origin.y))*this.state.zoom.value;if((!t.drag.hasOccurred||m<W8)&&a&&!g)if(this.editorInterface.isTouchScreen&&a.points.length>1){let w=Math.min(this.state.width*.7/this.state.zoom.value,100);this.scene.mutateElement(a,{x:a.x-w/2,points:[k(0,0),k(w,0)]},{informMutation:!1,isDragging:!1}),this.actionManager.executeAction(sa)}else this.setState({multiElement:a,newElement:a});else t.drag.hasOccurred&&!g&&(this.store.scheduleCapture(),FA(a)&&this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B}),this.setState({suggestedBinding:null}),this.isToolLocked()?this.setState({newElement:null}):this.setState(w=>({newElement:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type}),selectedElementIds:At({...w.selectedElementIds,[a.id]:!0},w),selectedLinearElement:new rA(a,this.scene.getNonDeletedElementsMap())}),()=>this.cursor.reset()),this.scene.triggerUpdate());return}if(cA(a)){let u=vQ(se({fontSize:a.fontSize,fontFamily:a.fontFamily}),a.lineHeight);a.width<u&&this.scene.mutateElement(a,{autoResize:!0}),this.cursor.reset(),this.handleTextWysiwyg(a,{isExistingElement:!0})}if(s.type!=="selection"&&a&&sr(a)){this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(u=>u.id!==a.id),appState:{newElement:null},captureUpdate:tA.NEVER});return}if(mA(a)){let u=p4(this.scene.getElementsIncludingDeleted(),a,this.scene.getNonDeletedElementsMap());this.scene.replaceAllElements(ld(this.scene.getElementsMapIncludingDeleted(),u,a))}if(a&&(this.scene.mutateElement(a,D0(a),{informMutation:!1,isDragging:!1}),this.scene.triggerUpdate()),t.drag.hasOccurred){let u=He(o,this.state);if(this.state.selectedLinearElement&&this.state.selectedLinearElement.isDragging){let m=this.scene.getElement(this.state.selectedLinearElement.elementId);if(m?.frameId){let w=ui(m,i);w&&m&&(Hr(m,w,this.scene.getNonDeletedElementsMap())||(this.scene.mutateElement(m,{groupIds:[]}),XQ([m],this.scene.getNonDeletedElementsMap()),this.scene.triggerUpdate()))}}else{let m=this.scene.getSelectedElements(this.state),w=this.getTopLayerFrameAtSceneCoords(u,{currentFrameId:VQ(m),excludeElementIds:this.state.selectedElementIds}),b=this.scene.getElementsMapIncludingDeleted(),D=S=>{if(S.length>0){for(let U of S){let v=U.groupIds.indexOf(this.state.editingGroupId);this.scene.mutateElement(U,{groupIds:U.groupIds.slice(0,v)},{informMutation:!1,isDragging:!1})}b.forEach(U=>{U.groupIds.length&&be(b,U.groupIds[U.groupIds.length-1]).length<2&&this.scene.mutateElement(U,{groupIds:[]},{informMutation:!1,isDragging:!1})}),this.setState({editingGroupId:null})}};if(w&&!this.state.selectedElementIds[w.id]){let S=m.filter(U=>Xm(U,b,this.state));this.state.editingGroupId&&D(S),b=ld(b,S,w)}else if(!w&&this.state.editingGroupId){let S=m.filter(U=>U.frameId&&!Xm(U,b,this.state));D(S)}b=ml(b,this.state,this),this.scene.replaceAllElements(b)}}if(r&&this.store.scheduleCapture(),r&&sr(r)&&this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(u=>u.id!==r.id),captureUpdate:tA.NEVER}),t.resize.isResizing){let u=ml(this.scene.getElementsIncludingDeleted(),this.state,this),m=this.scene.getSelectedElements(this.state).filter(mA);for(let w of m)u=pl(u,Kr(this.scene.getElementsIncludingDeleted(),w,this.state,i),w);this.scene.replaceAllElements(u)}let d=t.hit.element;this.state.selectedLinearElement?.elementId!==d?.id&&FA(d)&&this.scene.getSelectedElements(this.state).length===1&&this.setState({selectedLinearElement:new rA(d,this.scene.getNonDeletedElementsMap())}),(!n||n&&(!d&&!c||d&&d.id!==n))&&this.finishImageCropping();let E=this.lastPointerDownEvent,h=this.lastPointerUpEvent||this.lastPointerMoveEvent;if(ig(this.state)&&E&&h){if(this.eraserTrail.endPath(),ZA(k(E.clientX,E.clientY),k(h.clientX,h.clientY))===0){let m=He({clientX:h.clientX,clientY:h.clientY},this.state);this.getElementsAtPosition(m.x,m.y).forEach(b=>this.elementsPendingErasure.add(b.id))}this.eraseElements();return}else this.elementsPendingErasure.size&&this.restoreReadyToEraseElements();if(d&&!t.drag.hasOccurred&&!t.hit.wasAddedToSelection&&(!this.state.selectedLinearElement?.isEditing||!t.boxSelection.hasOccurred)&&this.state.activeTool.type!=="lasso"&&(o.shiftKey&&!this.state.selectedLinearElement?.isEditing?this.state.selectedElementIds[d.id]?Tm(this.state,d)?this.setState(u=>{let m={...u.selectedElementIds};for(let w of d.groupIds.flatMap(b=>be(this.scene.getNonDeletedElements(),b)))delete m[w.id];return{selectedGroupIds:{...u.selectedElementIds,...d.groupIds.map(w=>({[w]:!1})).reduce((w,b)=>({...w,...b}),{})},selectedElementIds:At(m,u)}}):this.state.selectedLinearElement?.isDragging||this.setState(u=>{let m={...u.selectedElementIds};delete m[d.id];let w=WA(this.scene.getNonDeletedElements(),{selectedElementIds:m});return{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),selectedLinearElement:w.length===1&&FA(w[0])?new rA(w[0],this.scene.getNonDeletedElementsMap()):u.selectedLinearElement}}):d.frameId&&this.state.selectedElementIds[d.frameId]?this.setState(u=>{let m={...u.selectedElementIds,[d.id]:!0};return delete m[d.frameId],(this.scene.getElement(d.frameId)?.groupIds??[]).flatMap(w=>be(this.scene.getNonDeletedElements(),w)).forEach(w=>{delete m[w.id]}),{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),showHyperlinkPopup:d.link||ni(d)?"info":!1}}):this.setState(u=>({selectedElementIds:At({...u.selectedElementIds,[d.id]:!0},u)})):this.setState(u=>({...So({editingGroupId:u.editingGroupId,selectedElementIds:{[d.id]:!0}},this.scene.getNonDeletedElements(),u,this),selectedLinearElement:FA(d)&&u.selectedLinearElement?.elementId!==d.id?new rA(d,this.scene.getNonDeletedElementsMap()):u.selectedLinearElement}))),this.state.activeTool.type!=="lasso"&&!(d&&kA(d))&&!t.drag.hasOccurred&&!this.state.isResizing&&(d&&G5({point:k(t.origin.x,t.origin.y),element:d,elementsMap:i,threshold:this.getElementHitThreshold(d),frameNameBound:mA(d)?this.frameNameBoundsCache.get(d):null},i)||!d&&t.hit.hasHitCommonBoundingBoxOfSelectedElements)){this.state.selectedLinearElement?.isEditing?this.actionManager.executeAction(Nu):this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),this.cursor.set(Xe.AUTO);return}let p=this.getSelectedTextEditingContainerAtPosition(d,B);if(s.type===this.state.preferredSelectionTool.type&&!this.state.editingTextElement&&!t.drag.hasOccurred&&!t.hit.wasAddedToSelection&&!o.shiftKey&&!o[z.CTRL_OR_CMD]&&!o.altKey&&o.pointerType!=="touch"&&d&&(cA(d)&&this.state.selectedElementIds[d.id]&&this.scene.getSelectedElements(this.state).length===1||p)){this.startTextEditing({sceneX:B.x,sceneY:B.y,container:p,initialCaretSceneCoords:this.lastPointerUpIsDoubleClick?void 0:B});return}if(!this.isToolLocked()&&s.type!=="freedraw"&&a&&this.setState(u=>({selectedElementIds:At({...u.selectedElementIds,[a.id]:!0},u),showHyperlinkPopup:ni(a)&&!a.link?"editor":u.showHyperlinkPopup})),!this.isEditingTextContent()&&(s.type!=="selection"||Et(this.scene.getNonDeletedElements(),this.state)||!Tt(this.state.previousSelectedElementIds,this.state.selectedElementIds))&&this.store.scheduleCapture(),t.drag.hasOccurred&&!this.state.selectedLinearElement||l||I||c){let u=this.scene.getSelectedElements(this.state).filter(bA);Hm(u,this.scene,this.state)}if(s.type==="laser"){this.laserTrails.endPath();return}if(s.type==="autoshape"){this.actionManager.executeAction(sa);return}!this.isToolLocked()&&s.type!=="freedraw"&&s.type!==po.bucketfill&&(s.type!=="lasso"||s.type==="lasso"&&s.fromSelection)?this.setState({newElement:null,suggestedBinding:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>this.cursor.reset()):this.setState({newElement:null,suggestedBinding:null})})}setSelection(t){let o={},i={};t.forEach(a=>{a.groupIds.length?(o[a.id]=!0,a.groupIds.forEach(r=>{i[r]=!0})):we(a)||(o[a.id]=!0)}),this.setState({previousSelectedElementIds:this.state.selectedElementIds,selectedElementIds:o,selectedGroupIds:i})}clearSelection(t){this.setState(o=>({selectedElementIds:At({},o),activeEmbeddable:null,selectedGroupIds:{},editingGroupId:o.editingGroupId&&t!=null&&ad(t,o.editingGroupId)?o.editingGroupId:null})),this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null,previousSelectedElementIds:this.state.selectedElementIds,selectedLinearElement:null})}getTextWysiwygSnappedToCenterPosition(t,o,i,a){if(a){let r=a.x+a.width/2,n=a.y+a.height/2,g=jy(a,this.scene.getNonDeletedElementsMap());if(g&&(r=g.x,n=g.y),Math.hypot(t-r,o-n)<z8){let{x:I,y:c}=oi({sceneX:r,sceneY:n},i);return{viewportX:I,viewportY:c,elementCenterX:r,elementCenterY:n}}}}getCanvasOffsets(){if(this.excalidrawContainerRef?.current){let t=this.excalidrawContainerRef.current,{left:o,top:i}=t.getBoundingClientRect();return{offsetLeft:o,offsetTop:i}}return{offsetLeft:0,offsetTop:0}}async updateLanguage(){let t=Ed.find(o=>o.code===this.props.langCode)||Cs;await Ak(t),this.setAppState({})}},nhA=sT;Q();var PU=G(nA(),1);var shA=G(_(),1),ghA=A=>{let[e,t]=(0,PU.useState)(!0);return(0,PU.useEffect)(()=>{let o=async()=>{await Ak(i),t(!1)},i=Ed.find(a=>a.code===A.langCode)||Cs;o()},[A.langCode]),e?(0,shA.jsx)(aG,{theme:A.theme}):A.children};Q();var ET=G(_(),1),lhA=({children:A})=>{let{FooterCenterTunnel:e}=Mt(),t=Ee();return(0,ET.jsx)(e.In,{children:(0,ET.jsx)("div",{className:iA("footer-center zen-mode-transition",{"layer-ui__wrapper__footer-left--transition-bottom":t.zenModeEnabled}),children:A})})},IhA=lhA;lhA.displayName="FooterCenter";Q();X();var ZU=G(_(),1),chA=({isCollaborating:A,onSelect:e,editorInterface:t,...o})=>{let i=Ee(),a=t?.formFactor!=="desktop"||i.width<w3;return(0,ZU.jsxs)(la,{...o,className:iA("collab-button",{active:A}),type:"button",onSelect:e,style:{position:"relative",width:a?void 0:"auto"},title:L("labels.liveCollaboration"),children:[a?dtA:L("labels.share"),i.collaborators.size>0&&(0,ZU.jsx)("div",{className:"CollabButton-collaborators",children:i.collaborators.size})]})},ChA=chA;chA.displayName="LiveCollaborationTrigger";Q();Q();Q();var Hg=G(_(),1),e8A=()=>(0,Hg.jsx)("svg",{viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"ExcalidrawLogo-icon",children:(0,Hg.jsx)("path",{d:"M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",fill:"currentColor"})}),t8A=()=>(0,Hg.jsxs)("svg",{viewBox:"0 0 450 55",xmlns:"http://www.w3.org/2000/svg",fill:"none",className:"ExcalidrawLogo-text",children:[(0,Hg.jsx)("path",{d:"M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z",fill:"currentColor",transform:"translate(-144.023 -51.76)"})]}),BhA=({style:A,size:e="small",withText:t})=>(0,Hg.jsxs)("div",{className:`ExcalidrawLogo is-${e}`,style:A,children:[(0,Hg.jsx)(e8A,{}),t&&(0,Hg.jsx)(t8A,{})]});var Kt=G(_(),1),QT=({icon:A,shortcut:e,children:t})=>{let o=Je();return(0,Kt.jsxs)(Kt.Fragment,{children:[(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__icon",children:A}),(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__text",children:t}),e&&o.formFactor!=="phone"&&(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__shortcut",children:e})]})};QT.displayName="WelcomeScreenMenuItemContent";var uD=({onSelect:A,children:e,icon:t,shortcut:o,className:i="",...a})=>(0,Kt.jsx)("button",{...a,type:"button",className:`welcome-screen-menu-item ${i}`,onClick:A,children:(0,Kt.jsx)(QT,{icon:t,shortcut:o,children:e})});uD.displayName="WelcomeScreenMenuItem";var dhA=({children:A,href:e,icon:t,shortcut:o,className:i="",...a})=>(0,Kt.jsx)("a",{...a,className:`welcome-screen-menu-item ${i}`,href:e,target:"_blank",rel:"noopener",children:(0,Kt.jsx)(QT,{icon:t,shortcut:o,children:A})});dhA.displayName="WelcomeScreenMenuItemLink";var Kg=({children:A})=>{let{WelcomeScreenCenterTunnel:e}=Mt();return(0,Kt.jsx)(e.In,{children:(0,Kt.jsx)("div",{className:"welcome-screen-center",children:A||(0,Kt.jsxs)(Kt.Fragment,{children:[(0,Kt.jsx)(hT,{}),(0,Kt.jsx)(uT,{children:L("welcomeScreen.defaults.center_heading")}),(0,Kt.jsxs)(pT,{children:[(0,Kt.jsx)(wT,{}),(0,Kt.jsx)(mT,{})]})]})})})};Kg.displayName="Center";var hT=({children:A})=>(0,Kt.jsx)("div",{className:"welcome-screen-center__logo excalifont welcome-screen-decor",children:A||(0,Kt.jsx)(BhA,{withText:!0})});hT.displayName="Logo";var uT=({children:A,color:e,message:t})=>e&&t?(0,Kt.jsxs)("div",{className:"welcome-screen-center__heading welcome-screen-decor excalifont",style:{color:e,marginTop:"-1.5rem"},children:[A,(0,Kt.jsx)("div",{style:{fontSize:"0.7rem"},children:t})]}):(0,Kt.jsx)("div",{className:"welcome-screen-center__heading welcome-screen-decor excalifont",children:A});uT.displayName="Heading";var pT=({children:A})=>(0,Kt.jsx)("div",{className:"welcome-screen-menu",children:A});pT.displayName="Menu";var mT=()=>{let A=Wt();return(0,Kt.jsx)(uD,{onSelect:()=>A.executeAction(oE),shortcut:"?",icon:Rh,children:L("helpDialog.title")})};mT.displayName="MenuItemHelp";var wT=()=>{let A=Ee(),e=Wt();return A.viewModeEnabled?null:(0,Kt.jsx)(uD,{onSelect:()=>e.executeAction(hu),shortcut:Vt("loadScene"),icon:vh,children:L("buttons.load")})};wT.displayName="MenuItemLoadScene";var EhA=({onSelect:A})=>{let{t:e}=Bt();return(0,Kt.jsx)(uD,{shortcut:null,onSelect:A,icon:Xk,children:e("labels.liveCollaboration")})};EhA.displayName="MenuItemLiveCollaborationTrigger";Kg.Logo=hT;Kg.Heading=uT;Kg.Menu=pT;Kg.MenuItem=uD;Kg.MenuItemLink=dhA;Kg.MenuItemHelp=mT;Kg.MenuItemLoadScene=wT;Kg.MenuItemLiveCollaborationTrigger=EhA;Q();var js=G(_(),1),WU=({children:A})=>{let{WelcomeScreenMenuHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu",children:[qeA,(0,js.jsx)("div",{className:"welcome-screen-decor-hint__label",children:A||L("welcomeScreen.defaults.menuHint")})]})})};WU.displayName="MenuHint";var _U=({children:A})=>{let{WelcomeScreenToolbarHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar",children:[(0,js.jsx)("div",{className:"welcome-screen-decor-hint__label",children:A||L("welcomeScreen.defaults.toolbarHint")}),VeA]})})};_U.displayName="ToolbarHint";var zU=({children:A})=>{let{WelcomeScreenHelpHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help",children:[(0,js.jsx)("div",{children:A||L("welcomeScreen.defaults.helpHint")}),jeA]})})};zU.displayName="HelpHint";var Vs=G(_(),1),OU=A=>(0,Vs.jsx)(Vs.Fragment,{children:A.children||(0,Vs.jsxs)(Vs.Fragment,{children:[(0,Vs.jsx)(Kg,{}),(0,Vs.jsx)(WU,{}),(0,Vs.jsx)(_U,{}),(0,Vs.jsx)(zU,{})]})});OU.displayName="WelcomeScreen";OU.Center=Kg;OU.Hints={MenuHint:WU,ToolbarHint:_U,HelpHint:zU};var QhA=OU;Q();var o8A=()=>{Array.prototype.at||Object.defineProperty(Array.prototype,"at",{value:function(A){if(A=Math.trunc(A)||0,A<0&&(A+=this.length),!(A<0||A>=this.length))return this[A]},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findLast||Object.defineProperty(Array.prototype,"findLast",{value:function(A,e){return this.slice().reverse().find((t,o)=>A.call(e,t,this.length-o-1,this))},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(A,e){for(let t=0;t<this.length;t++)if(A.call(e,this[t],t,this))return t;return-1},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findLastIndex||Object.defineProperty(Array.prototype,"findLastIndex",{value:function(A,e){let t=this.slice().reverse().findIndex((o,i)=>A.call(e,o,this.length-i-1,this));return t===-1?-1:this.length-t-1},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.toReversed||Object.defineProperty(Array.prototype,"toReversed",{value:function(){return this.slice().reverse()},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.toSorted||Object.defineProperty(Array.prototype,"toSorted",{value:function(A){return this.slice().sort(A)},writable:!0,enumerable:!1,configurable:!0}),Element.prototype.replaceChildren||(Element.prototype.replaceChildren=function(...A){this.innerHTML="",this.append(...A)})},hhA=o8A;O();O();O();kh();Q();var uhA=G(yQ(),1);X();O();var i8A=(A,e,t)=>!!(e&&(e.id===A.editingTextElement?.id||e.id===A.resizingElement?.id||e.id===A.newElement?.id||e.version>t.version||e.version===t.version&&e.versionNonce<=t.versionNonce)),a8A=(0,uhA.default)((A,e,t)=>{if($e()||gt()||window?.DEBUG_FRACTIONAL_INDICES){let o=Ya(A.map(i=>({...i})));qm(o,{shouldThrow:gt()||$e(),includeBoundTextValidation:!0,reconciliationContext:{localElements:e,remoteElements:t}})}},1e3*60,{leading:!0,trailing:!1}),phA=(A,e,t)=>{let o=QA(A),i=[],a=new Set;for(let n of e)if(!a.has(n.id)){let g=o.get(n.id),s=i8A(t,g,n);g&&s?(i.push(g),a.add(g.id)):(i.push(n),a.add(n.id))}for(let n of A)a.has(n.id)||(i.push(n),a.add(n.id));let r=OQ(i);return a8A(r,A,e),Ya(r),r};Pt();Ag();Bl();ed();X();X();Yi();Hk();_r();eC();O();Yi();bd();Ka();O();X();O();O();Yv();Q();var qU=G(_(),1),fT=({children:A,icon:e})=>{let{t}=Bt(),{TTDDialogTriggerTunnel:o}=Mt(),i=Ye();return(0,qU.jsx)(o.In,{children:(0,qU.jsx)(ae.Item,{onSelect:()=>{ye("ai","dialog open","ttd"),i({openDialog:{name:"ttd",tab:"text-to-diagram"}})},icon:e??poA,badge:(0,qU.jsx)(ae.Item.Badge,{children:"AI"}),children:A??t("labels.textToDiagram")})})};fT.displayName="TTDDialogTrigger";Q();kl();function r8A(A){let e=A.get("X-Ratelimit-Limit"),t=A.get("X-Ratelimit-Remaining");return{rateLimit:e?parseInt(e,10):void 0,rateLimitRemaining:t?parseInt(t,10):void 0}}async function*n8A(A){let e=new TextDecoder,t="";try{for(;;){let{done:o,value:i}=await A.read();if(o)break;t+=e.decode(i,{stream:!0});let a=t.split(`
|
|
577
|
+
`),d=B.reduce((E,h,p)=>{let u=ns(h).trim();if(u.length){let m=this.getTopLayerFrameAtSceneCoords({x:i,y:C}),w=Me(u,n,g),b=w.width>I,D=b?di(u,n,I):u;w=b?Me(D,n,g):w;let S=i-w.width/2,U=C-w.height/2,v=Co({...r,x:S,y:U,text:D,rawText:u,originalText:u,lineHeight:g,autoResize:!b,frameId:m?m.id:null});E.push(v),C+=v.height+c}else B[p-1]?.trim()&&(C+=kn(r.fontSize,g)+c);return E},[]);d.length!==0&&(this.insertNewElements(d),this.store.scheduleCapture(),this.setState({selectedElementIds:At(Object.fromEntries(d.map(E=>[E.id,!0])),this.state)}),!o&&d.length>1&&ohA===!1&&this.editorInterface.formFactor!=="phone"&&(this.setToast({message:L("toast.pasteAsSingleElement",{shortcut:gA("CtrlOrCmd+Shift+V")}),duration:5e3}),ohA=!0))}handleTextWysiwyg(t,{isExistingElement:o=!1,initialCaretSceneCoords:i=null}){let a=this.scene.getElementsMapIncludingDeleted(),r=(n,g,s,l,I)=>{this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(c=>c.id===t.id&&cA(c)?YA(c,{originalText:n,rawText:s??n,link:l,hasTextLink:I??c.hasTextLink,isDeleted:g??c.isDeleted,...AC(c,ot(c,a),a,n)}):c)])};if(this.props.onBeforeTextEdit){let n=this.props.onBeforeTextEdit(t,o);n&&n!==t.originalText&&this.scene.replaceAllElements([...this.scene.getElementsIncludingDeleted().map(g=>g.id===t.id&&cA(g)?(t=YA(g,{originalText:n,rawText:n,isDeleted:!1,...AC(g,ot(g,a),a,n)}),t):g)])}this.textWysiwygSubmitHandler=UlA({canvas:this.canvas,getViewportCoords:(n,g)=>{let{x:s,y:l}=oi({sceneX:n,sceneY:g},this.state);return[s-this.state.offsetLeft,l-this.state.offsetTop]},onChange:Bo(n=>{r(n,!1),St(t)&&Ft(t,this.scene)}),onSubmit:Bo(({viaKeyboard:n,nextOriginalText:g})=>{this.textWysiwygSubmitHandler=null;let s=!g.trim(),l=g,I,c=!1;if(this.props.onBeforeTextSubmit){let B=this.scene.getElementsIncludingDeleted().find(d=>d.id===t.id&&cA(d));if(B){let d=AC(B,ot(B,a),a,g),{updatedNextOriginalText:E,nextLink:h}=this.props.onBeforeTextSubmit(t,d?.text??g,g,s);g=E??g,c=!!h,I=TeA()?h:t.link??void 0}}r(g,s,l,I,c);let C=n&&!this.isToolLocked()&&this.state.activeTool.type!=="autoshape"?t.containerId||(s?null:t.id):null;C&&(0,$a.flushSync)(()=>{this.setState(B=>({selectedElementIds:At({...B.selectedElementIds,[C]:!0},B)}))}),s&&n0(this.scene.getNonDeletedElements(),[t]),(!s||o)&&this.store.scheduleCapture(),(0,$a.flushSync)(()=>{this.setState({newElement:null,editingTextElement:null})}),(this.isToolLocked()||this.state.activeTool.type==="autoshape")&&this.cursor.applyForTool(),this.focusContainer()}),element:t,excalidrawContainer:this.excalidrawContainerRef.current,app:this,initialCaretSceneCoords:i,autoSelect:!this.editorInterface.isTouchScreen}),this.deselectElements(),r(t.originalText,!1)}deselectElements(){this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null})}getSelectedTextElement(t){let o=this.scene.getSelectedElements(this.state);if(o.length!==1)return null;let i=o[0];return cA(i)?i:t?vA(i,this.scene.getNonDeletedElementsMap()):null}getSelectedTextEditingContainerAtPosition(t,o){let i=this.scene.getSelectedElements(this.state);if(i.length!==1||!t||t.id!==i[0].id)return null;let a=i[0];if(cA(a))return null;if(!vR(a))return;let r=this.getSelectedTextElement(a),n=this.getTextElementAtPosition(o.x,o.y);if(!(!r||n?.id!==r.id))return a}getTextElementAtPosition(t,o){let i=this.getElementAtPosition(t,o,{includeBoundTextElement:!0});return i&&cA(i)&&!i.isDeleted?i:null}getElementAtPosition(t,o,i){let a=[];if(i&&"allHitElements"in i?a=i?.allHitElements||[]:a=this.getElementsAtPosition(t,o,{includeBoundTextElement:i?.includeBoundTextElement,includeLockedElements:i?.includeLockedElements}),a.length>1){if(i?.preferSelected){for(let n=a.length-1;n>-1;n--)if(this.state.selectedElementIds[a[n].id])return a[n]}let r=a[a.length-1];return Aa({point:k(t,o),element:r,threshold:this.getElementHitThreshold(r)/2,elementsMap:this.scene.getNonDeletedElementsMap(),frameNameBound:mA(r)?this.frameNameBoundsCache.get(r):null})?r:a[a.length-2]}return a.length===1?a[0]:null}getElementsAtPosition(t,o,i){let a=[],r=this.scene.getNonDeletedElementsMap();return(i?.includeBoundTextElement&&i?.includeLockedElements?this.scene.getNonDeletedElements():this.scene.getNonDeletedElements().filter(g=>(i?.includeLockedElements||!g.locked)&&(i?.includeBoundTextElement||!(cA(g)&&g.containerId)))).filter(g=>this.hitElement(t,o,g)).filter(g=>{let s=ui(g,r);return s&&!St(s)&&console.error("[NONDELETED][INVARIANT] Containing frame is deleted"),s&&this.state.frameRendering.enabled&&this.state.frameRendering.clip&&!Oo(g)?lv({x:t,y:o},s,r):!0}).filter(g=>Oo(g)?(a.push(g),!1):!0).concat(a)}getElementHitThreshold(t){return Math.max(t.strokeWidth/2+.1,.85*(YF/this.state.zoom.value))}hitElement(t,o,i,a=!0){return a&&this.state.selectedElementIds[i.id]&&Z0([i],this.state,this.editorInterface)&&td(k(t,o),i,this.scene.getNonDeletedElementsMap(),this.getElementHitThreshold(i))||JR(k(t,o),i,this.scene.getNonDeletedElementsMap())?!0:Aa({point:k(t,o),element:i,threshold:this.getElementHitThreshold(i),elementsMap:this.scene.getNonDeletedElementsMap(),frameNameBound:mA(i)?this.frameNameBoundsCache.get(i):null})}getTextBindableContainerAtPosition(t,o){let i=this.scene.getNonDeletedElements(),a=this.scene.getSelectedElements(this.state);if(a.length===1)return sl(a[0],!1)?a[0]:null;let r=null;for(let n=i.length-1;n>=0;--n){if(i[n].isDeleted)continue;let[g,s,l,I]=qA(i[n],this.scene.getNonDeletedElementsMap());if(bA(i[n])&&Aa({point:k(t,o),element:i[n],elementsMap:this.scene.getNonDeletedElementsMap(),threshold:this.getElementHitThreshold(i[n])})){r=i[n];break}else if(g<t&&t<l&&s<o&&o<I){if(mA(i[n]))continue;r=i[n];break}}return sl(r,!1)?r:null}isEditingTextContent(){return!!this.state.editingTextElement||cA(this.state.newElement)}handleHoverSelectedLinearElement(t,o,i){let a=this.scene.getNonDeletedElementsMap(),r=rA.getElement(t.elementId,a);if(r)if(this.state.selectedLinearElement){let n=-1,g=null;Aa({point:k(o,i),element:r,elementsMap:a,threshold:this.getElementHitThreshold(r)})?(n=rA.getPointIndexUnderCursor(r,a,this.state.zoom,o,i),g=rA.getSegmentMidpointHitCoords(t,{x:o,y:i},this.state,this.scene.getNonDeletedElementsMap()),(kA(r)?n===0||n===r.points.length-1:n>=0)||g?this.cursor.set(Xe.POINTER):this.hitElement(o,i,r)&&(!kA(r)||!(r.startBinding||r.endBinding))&&(this.state.activeTool.type!=="lasso"||Object.keys(this.state.selectedElementIds).length>0)&&this.cursor.set(Xe.MOVE)):this.hitElement(o,i,r)&&(!kA(r)||!(r.startBinding||r.endBinding))&&(this.state.activeTool.type!=="lasso"||Object.keys(this.state.selectedElementIds).length>0)&&this.cursor.set(Xe.MOVE),this.state.selectedLinearElement.hoverPointIndex!==n&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,hoverPointIndex:n}}),rA.arePointsEqual(this.state.selectedLinearElement.segmentMidPointHoveredCoords,g)||this.setState({selectedLinearElement:{...this.state.selectedLinearElement,segmentMidPointHoveredCoords:g}});let s=null,l=r;(l.startBinding||l.endBinding)&&(s=zZ(r,o,i,this.scene,this.state)),this.state.selectedLinearElement.hoveredFocusPointBinding!==s&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!1,hoveredFocusPointBinding:s}}),s&&this.cursor.set(Xe.POINTER)}else this.cursor.set(Xe.AUTO)}startRightClickPanning(t){qs=!0,this.focusContainer(),this.state.editingTextElement||t.preventDefault(),this.cursor.set(Xe.GRABBING);let{clientX:o,clientY:i}=t,a=Ib(n=>{let g=o-n.clientX,s=i-n.clientY;o=n.clientX,i=n.clientY,this.viewport.translate({scrollX:this.state.scrollX-g/this.state.zoom.value,scrollY:this.state.scrollY-s/this.state.zoom.value})}),r=Bo(()=>{qs=!1,this.state.viewModeEnabled?this.cursor.set(Xe.GRAB):this.cursor.applyForTool(),this.setState({cursorButton:"up"}),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",r),window.removeEventListener("blur",r),a.flush()});window.addEventListener("blur",r),window.addEventListener("pointermove",a,{passive:!0}),window.addEventListener("pointerup",r)}updateGestureOnPointerDown(t){ve.pointers.set(t.pointerId,{x:t.clientX,y:t.clientY}),ve.pointers.size===2&&(QN(this.state)?ve.initialDistance=null:(ve.lastCenter=HY(ve.pointers),ve.initialScale=this.state.zoom.value,ve.initialDistance=KY(Array.from(ve.pointers.values()))))}initialPointerDownState(t){let o=He(t,this.state),i=this.scene.getSelectedElements(this.state),[a,r,n,g]=$A(i),s=i.findIndex(kA)===0;return{origin:o,withCmdOrCtrl:t[z.CTRL_OR_CMD],originInGrid:ly(lo(o.x,o.y,t[z.CTRL_OR_CMD]||s?null:this.getEffectiveGridSize())),scrollbars:OY(QD,t.clientX-this.state.offsetLeft,t.clientY-this.state.offsetTop),lastCoords:{...o},originalElements:this.scene.getNonDeletedElements().reduce((l,I)=>(l.set(I.id,Pr(I)),l),new Map),resize:{handleType:!1,isResizing:!1,offset:{x:0,y:0},arrowDirection:"origin",center:{x:(n+a)/2,y:(g+r)/2}},hit:{element:null,allHitElements:[],wasAddedToSelection:!1,hasBeenDuplicated:!1,hasHitCommonBoundingBoxOfSelectedElements:this.isHittingCommonBoundingBoxOfSelectedElements(o,i)},drag:{hasOccurred:!1,offset:null,origin:{...o},blockDragging:!1},eventListeners:{onMove:null,onUp:null,onKeyUp:null,onKeyDown:null},boxSelection:{hasOccurred:!1}}}handleDraggingScrollBar(t,o){if(!(o.scrollbars.isOverEither&&!this.state.multiElement))return!1;HU=!0,o.lastCoords.x=t.clientX,o.lastCoords.y=t.clientY;let i=Ib(r=>{r.target instanceof HTMLElement&&this.handlePointerMoveOverScrollbars(r,o)}),a=Bo(()=>{Up=null,HU=!1,this.cursor.applyForTool(),this.setState({cursorButton:"up"}),this.savePointer(t.clientX,t.clientY,"up"),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",a),i.flush()});return Up=a,window.addEventListener("pointermove",i),window.addEventListener("pointerup",a),!0}isASelectedElement(t){return t!=null&&this.state.selectedElementIds[t.id]}isHittingCommonBoundingBoxOfSelectedElements(t,o){if(o.length<2)return!1;let i=Math.max(YF/this.state.zoom.value,1),a=Wn*2/this.state.zoom.value,[r,n,g,s]=$A(o);return t.x>r-a-i&&t.x<g+a+i&&t.y>n-a-i&&t.y<s+a+i}getCurrentItemRoundness(t){return this.state.currentItemRoundness==="round"?{type:vr(t)?je.ADAPTIVE_RADIUS:je.PROPORTIONAL_RADIUS}:null}getCurrentItemStrokeWidth(t){return Ua(t,this.state.currentItemStrokeWidthKey,this.state.currentItemStrokeWidth)}maybeCacheReferenceSnapPoints(t,o,i=!1){gc({event:t,app:this,selectedElements:o})&&(i||!bg.getReferenceSnapPoints())&&bg.setReferenceSnapPoints(blA(this.scene.getNonDeletedElements(),o,this.state,this.scene.getNonDeletedElementsMap()))}maybeCacheVisibleGaps(t,o,i=!1){gc({event:t,app:this,selectedElements:o})&&(i||!bg.getVisibleGaps())&&bg.setVisibleGaps(flA(this.scene.getNonDeletedElements(),o,this.state,this.scene.getNonDeletedElementsMap()))}onKeyDownFromPointerDownHandler(t){return Bo(o=>{this.maybeHandleResize(t,o)||this.maybeDragNewGenericElement(t,o)})}onKeyUpFromPointerDownHandler(t){return Bo(o=>{o.key===z.ALT&&o.preventDefault(),!this.maybeHandleResize(t,o)&&this.maybeDragNewGenericElement(t,o)})}onPointerMoveFromPointerDownHandler(t){return Ib(o=>{if(this.state.contextMenu||this.state.openDialog?.name==="elementLinkSelector")return;let i=He(o,this.state);if(this.state.activeLockedId&&this.setState({activeLockedId:null}),this.state.selectedLinearElement&&this.state.selectedLinearElement.elbowed&&this.state.selectedLinearElement.initialState.segmentMidpoint.index){let[c,C]=lo(i.x,i.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),B=this.state.selectedLinearElement.initialState.segmentMidpoint.index;if(B<0){let E=rA.getSegmentMidpointHitCoords({...this.state.selectedLinearElement,segmentMidPointHoveredCoords:null},{x:c,y:C},this.state,this.scene.getNonDeletedElementsMap());B=E?rA.getSegmentMidPointIndex(this.state.selectedLinearElement,this.state,E,this.scene.getNonDeletedElementsMap()):-1}let d=rA.moveFixedSegment(this.state.selectedLinearElement,B,c,C,this.scene);this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!0,segmentMidPointHoveredCoords:d.segmentMidPointHoveredCoords,initialState:d.initialState}});return}let a=this.previousPointerMoveCoords??t.origin;if(this.previousPointerMoveCoords=i,t.drag.offset===null&&(t.drag.offset=ly(hZ(this.scene.getSelectedElements(this.state),t.origin.x,t.origin.y))),!(o.target instanceof HTMLElement)||this.handlePointerMoveOverScrollbars(o,t))return;if(ig(this.state)){this.handleEraser(o,i);return}if(this.state.activeTool.type==="laser"&&this.laserTrails.addPointToPath(i.x,i.y),this.drawShape.handlePointerMove(i))return;let[n,g]=lo(i.x,i.y,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize());if(t.resize.isResizing&&(t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeHandleCrop(t,o)||this.maybeHandleResize(t,o)))return!0;let s=this.scene.getNonDeletedElementsMap();if(this.state.selectedLinearElement){let c=this.state.selectedLinearElement;if(c.draggedFocusPointBinding){Y0(c,s,i,this.scene,this.state,this.getEffectiveGridSize(),o.altKey),this.setState({selectedLinearElement:{...c,isDragging:!1,selectedPointsIndices:[],initialState:{...c.initialState,lastClickedPoint:-1}}});return}if(rA.shouldAddMidpoint(this.state.selectedLinearElement,i,this.state,s)){let C=rA.addMidpoint(this.state.selectedLinearElement,i,this,!o[z.CTRL_OR_CMD],this.scene);if(!C)return;(0,$a.flushSync)(()=>{this.state.selectedLinearElement&&this.setState({selectedLinearElement:{...this.state.selectedLinearElement,initialState:C.pointerDownState,selectedPointsIndices:C.selectedPointsIndices,segmentMidPointHoveredCoords:null,isDragging:!0}})});return}else{if(c.initialState.segmentMidpoint.value!==null&&!c.initialState.segmentMidpoint.added)return;if(c.initialState.lastClickedPoint>-1){let C=rA.getElement(c.elementId,s);if(C?.isDeleted)return;if(st(C)){let d=si(k(i.x,i.y),this.scene.getNonDeletedElements(),s);ii("COMPLEX_BINDINGS")&&this.handleDelayedBindModeChange(C,d)}if(o.altKey&&!this.state.selectedLinearElement?.initialState?.arrowStartIsInside&&ii("COMPLEX_BINDINGS")&&this.handleSkipBindMode(),c.initialState.lastClickedPoint===-1)return;let B=rA.handlePointDragging(o,this,i.x,i.y,c);if(B){t.lastCoords.x=i.x,t.lastCoords.y=i.y,t.drag.hasOccurred=!0,(B.suggestedBinding!==this.state.suggestedBinding||!Tt(B.selectedLinearElement?.selectedPointsIndices??[],this.state.selectedLinearElement?.selectedPointsIndices??[])||B.selectedLinearElement?.hoverPointIndex!==this.state.selectedLinearElement?.hoverPointIndex||B.selectedLinearElement?.customLineAngle!==this.state.selectedLinearElement?.customLineAngle||this.state.selectedLinearElement.isDragging!==B.selectedLinearElement?.isDragging||this.state.selectedLinearElement?.initialState?.altFocusPoint!==B.selectedLinearElement?.initialState?.altFocusPoint)&&this.setState(B);return}}}}let l=t.hit.allHitElements.some(c=>this.isASelectedElement(c)),I=this.state.selectedLinearElement?.isEditing&&o.shiftKey&&this.state.selectedLinearElement.elementId===t.hit.element?.id;if((l||t.hit.hasHitCommonBoundingBoxOfSelectedElements)&&!I&&!t.drag.blockDragging){let c=this.scene.getSelectedElements(this.state);if(c.length>0&&c.every(d=>d.locked))return;let B=c.some(d=>mA(d))?null:this.getTopLayerFrameAtSceneCoords(i,{currentFrameId:VQ(c),excludeElementIds:this.state.selectedElementIds});if(this.updateFrameToHighlight(B),t.drag.hasOccurred=!0,this.state.activeTool.type==="lasso"&&this.lassoTrail.hasCurrentTrail&&!(this.editorInterface.formFactor!=="desktop"&&t.hit.element)&&!this.state.activeTool.fromSelection)return;if(this.state.activeTool.type==="lasso"&&c.length>0&&t.drag.hasOccurred&&!this.state.activeTool.fromSelection&&this.lassoTrail.endPath(),c.length>0&&!t.withCmdOrCtrl&&!this.state.editingTextElement&&this.state.activeEmbeddable?.state!=="active"){let d={x:i.x-t.drag.origin.x,y:i.y-t.drag.origin.y},E=[...t.originalElements.values()],h=o.shiftKey;if(h){let m=Math.abs(d.x),w=Math.abs(d.y),b=h&&m<w,D=h&&m>w;b&&(d.x=0),D&&(d.y=0)}if(this.state.croppingElementId){let m=this.scene.getNonDeletedElementsMap().get(this.state.croppingElementId);if(m&&xe(m)&&m.crop!==null&&t.hit.element===m){let w=m.crop,b=ua(m)&&this.imageCache.get(m.fileId)?.image;if(b&&!(b instanceof Promise)){let D=or(m),S=dt(i.x-a.x,i.y-a.y);S[0]*=b.naturalWidth/D.width,S[1]*=b.naturalHeight/D.height;let[U,v,x,R,W,q]=qA(m,s),T=KA($(k(U,v),k(W,q),m.angle)),F=KA($(k(x,v),k(W,q),m.angle)),K=KA($(k(U,R),k(W,q),m.angle)),N=ci(Xs(F,T)),J=ci(Xs(K,T)),H=dt(sI(S,N),sI(S,J)),j={...w,x:zA(w.x-H[0]*Math.sign(m.scale[0]),0,b.naturalWidth-w.width),y:zA(w.y-H[1]*Math.sign(m.scale[1]),0,b.naturalHeight-w.height)};this.scene.mutateElement(m,{crop:j});return}}}this.maybeCacheVisibleGaps(o,c),this.maybeCacheReferenceSnapPoints(o,c);let{snapOffset:p,snapLines:u}=DlA(E,d,this,o,this.scene.getNonDeletedElementsMap());if(this.setState({snapLines:u}),this.state.editingFrame||QZ(t,c,d,this.scene,p,o[z.CTRL_OR_CMD]?null:this.getEffectiveGridSize()),this.setState({selectedElementsAreBeingDragged:!0,selectionElement:null}),o.altKey&&!t.hit.hasBeenDuplicated){t.hit.hasBeenDuplicated=!0;let m=this.scene.getElementsIncludingDeleted(),w=t.hit.element,b=this.scene.getSelectedElements({selectedElementIds:this.state.selectedElementIds,includeBoundTextElement:!0,includeElementsInFrames:!0});w&&t.hit.wasAddedToSelection&&!b.find(T=>T.id===w.id)&&b.push(w);let D=new Map(b.map(T=>[T.id,T])),{duplicatedElements:S,duplicateElementsMap:U,elementsWithDuplicates:v,origIdToDuplicateId:x}=tC({type:"in-place",elements:m,appState:this.state,randomizeSeed:!0,idsOfElementsToDuplicate:D,overrides:({duplicateElement:T,origElement:F})=>({frameId:T.frameId??F.frameId,seed:zo()})});S.forEach(T=>{t.originalElements.set(T.id,Pr(T))});let R=v.map(T=>{if(D.has(T.id)){let F=t.originalElements.get(T.id);if(F)return YA(T,{x:F.x,y:F.y})}return T}),W=this.props.onDuplicate?.(R,m),q=To(W||R,QA(S));(0,$a.flushSync)(()=>{if(t.hit.element){let T=x.get(t.hit.element.id),F=T&&U.get(T);t.hit.element=F||null}t.hit.allHitElements=t.hit.allHitElements.reduce((T,F)=>{let K=x.get(F.id),N=K&&U.get(K);return N&&T.push(N),T},[]),t.drag.origin=He(o,this.state),this.setState(T=>({...Wm(S,this.scene.getNonDeletedElements(),T)})),this.scene.replaceAllElements(q),b.forEach(T=>{bt(T)&&T.boundElements?.some(F=>F.type==="arrow")&&Ft(T,this.scene)}),this.maybeCacheVisibleGaps(o,b,!0),this.maybeCacheReferenceSnapPoints(o,b,!0)})}return}}if(this.state.selectionElement){if(t.lastCoords.x=i.x,t.lastCoords.y=i.y,o.altKey){this.setActiveTool({type:"lasso",fromSelection:!0},{keepSelection:o.shiftKey}),this.lassoTrail.startPath(t.origin.x,t.origin.y,o.shiftKey),this.setAppState({selectionElement:null});return}this.maybeDragNewGenericElement(t,o)}else if(this.state.activeTool.type==="lasso")!o.altKey&&this.state.activeTool.fromSelection?(this.setActiveTool({type:"selection"}),this.createGenericElementOnPointerDown("selection",t),t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeDragNewGenericElement(t,o),this.lassoTrail.endPath()):this.lassoTrail.addPointToPath(i.x,i.y,o.shiftKey);else{let c=this.state.newElement;if(!c)return;if(c.type==="freedraw"){let __fp=globalThis.__forsionPenInput?.freedraw(c,t,this.state);if(__fp!==void 0)__fp&&(this.scene.mutateElement(c,__fp,{informMutation:!1,isDragging:!1}),this.setState({newElement:c}));else{let C=c.points,B=i.x-c.x,d=i.y-c.y,E=C.length>0&&C[C.length-1];if(!(E&&E[0]===B&&E[1]===d)){let p=this.state.currentStrokeOptions,u=c.simulatePressure?c.pressures:[...c.pressures,p?.constantPressure?1:o.pressure];this.scene.mutateElement(c,{points:[...C,k(B,d)],pressures:u},{informMutation:!1,isDragging:!1}),this.setState({newElement:c})}}}else if(FA(c)&&!c.isDeleted){t.drag.hasOccurred=!0;let C=c.points;UA(C.length>1,"Do not create linear elements with less than 2 points");let B=this.state.selectedLinearElement;(!B||B.elementId!==c.id)&&(B=new rA(c,this.scene.getNonDeletedElementsMap())),B&&(B.initialState.lastClickedPoint<0||B.initialState.lastClickedPoint>=C.length)&&(console.warn("Last clicked point is out of bounds. Attempting to fix it."),B={...B,selectedPointsIndices:[C.length-1],initialState:{...B.initialState,prevSelectedPointsIndices:null,lastClickedPoint:C.length-1},hoverPointIndex:C.length-1}),this.setState({newElement:c,...rA.handlePointDragging(o,this,n,g,B)})}else t.lastCoords.x=i.x,t.lastCoords.y=i.y,this.maybeDragNewGenericElement(t,o,!1)}if(this.state.activeTool.type==="selection"){t.boxSelection.hasOccurred=!0;let c=this.scene.getNonDeletedElements();if(this.state.selectedLinearElement?.isEditing)rA.handleBoxSelection(o,this.state,this.setState.bind(this),this.scene.getNonDeletedElementsMap());else{let C=!0;!o.shiftKey&&Et(c,this.state)&&(t.withCmdOrCtrl&&t.hit.element?this.setState(d=>So({...d,selectedElementIds:{[t.hit.element.id]:!0}},this.scene.getNonDeletedElements(),d,this)):C=!1);let B=this.state.selectionElement?Zm(c,this.state.selectionElement,this.scene.getNonDeletedElementsMap(),!1,this.state.boxSelectionMode):[];this.setState(d=>{let E={...C&&d.selectedElementIds,...B.reduce((h,p)=>(h[p.id]=!0,h),{})};return t.hit.element&&(B.length?delete E[t.hit.element.id]:E[t.hit.element.id]=!0),d=C?d:{...d,selectedGroupIds:{},editingGroupId:null},{...So({editingGroupId:d.editingGroupId,selectedElementIds:E},this.scene.getNonDeletedElements(),d,this),selectedLinearElement:B.length===1&&FA(B[0])?new rA(B[0],this.scene.getNonDeletedElementsMap()):null,showHyperlinkPopup:B.length===1&&(B[0].link||ni(B[0]))?"info":!1}})}}})}handlePointerMoveOverScrollbars(t,o){if(o.scrollbars.isOverHorizontal){let i=t.clientX,a=i-o.lastCoords.x;return this.viewport.translate({scrollX:this.state.scrollX-a*(QD.horizontal?.deltaMultiplier||1)/this.state.zoom.value}),o.lastCoords.x=i,!0}if(o.scrollbars.isOverVertical){let i=t.clientY,a=i-o.lastCoords.y;return this.viewport.translate({scrollY:this.state.scrollY-a*(QD.vertical?.deltaMultiplier||1)/this.state.zoom.value}),o.lastCoords.y=i,!0}return!1}onPointerUpFromPointerDownHandler(t){return Bo(o=>{let i=this.scene.getNonDeletedElementsMap();this.removePointer(o),t.drag.blockDragging=!1,t.eventListeners.onMove&&t.eventListeners.onMove.flush(),o.type==="pointerup"&&this.state.activeTool.type===po.bucketfill?this.bucketFill.handlePointerUp():this.bucketFill.cancel();let{newElement:a,resizingElement:r,croppingElementId:n,multiElement:g,activeTool:s,isResizing:l,isRotating:I,isCropping:c}=this.state;this.setState(u=>({isResizing:!1,isRotating:!1,isCropping:!1,resizingElement:null,selectionElement:null,frameToHighlight:null,elementsToHighlight:null,cursorButton:"up",snapLines:fQ(u.snapLines,[]),originSnapOffset:null})),this.lassoTrail.endPath(),this.previousPointerMoveCoords=null,bg.setReferenceSnapPoints(null),bg.setVisibleGaps(null),this.savePointer(o.clientX,o.clientY,"up");let C=t.hit.allHitElements,B=He({clientX:o.clientX,clientY:o.clientY},this.state);if(this.state.activeTool.type==="selection"&&!t.boxSelection.hasOccurred&&!t.resize.isResizing&&!C.some(u=>this.state.selectedElementIds[u.id])){let u=this.getElementAtPosition(B.x,B.y,{includeLockedElements:!0});this.isEditingTextContent()||this.store.scheduleCapture(),u?.locked?this.setState({activeLockedId:u.groupIds.length>0?u.groupIds.at(-1)||"":u.id}):this.setState({activeLockedId:null})}else this.setState({activeLockedId:null});if(ii("COMPLEX_BINDINGS")&&this.resetDelayedBindMode(),this.setState({selectedElementsAreBeingDragged:!1,bindMode:"orbit"}),t.drag.hasOccurred&&t.hit?.element?.id){let u=i.get(t.hit.element.id);bt(u)&&u.boundElements?.filter(m=>m.type==="arrow").map(m=>i.get(m.id)).filter(m=>kA(m)).forEach(m=>{m&&this.scene.mutateElement(m,{})})}if(this.state.selectedLinearElement?.isEditing&&!this.state.newElement&&this.state.selectedLinearElement.draggedFocusPointBinding===null)if(!t.boxSelection.hasOccurred&&t.hit?.element?.id!==this.state.selectedLinearElement.elementId&&this.state.selectedLinearElement.draggedFocusPointBinding===null)this.actionManager.executeAction(sa);else{let u=rA.handlePointerUp(o,this.state.selectedLinearElement,this.state,this.scene);this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B}),u!==this.state.selectedLinearElement&&this.setState({selectedLinearElement:u,suggestedBinding:null})}else if(this.state.selectedLinearElement){if(this.state.selectedLinearElement.elbowed){let u=rA.getElement(this.state.selectedLinearElement.elementId,this.scene.getNonDeletedElementsMap());u&&this.scene.mutateElement(u,{})}if(this.state.selectedLinearElement.draggedFocusPointBinding?(_Z(this.state.selectedLinearElement,this.scene),this.setState({selectedLinearElement:{...this.state.selectedLinearElement,draggedFocusPointBinding:null,initialState:{...this.state.selectedLinearElement.initialState,arrowOtherEndpointInitialBinding:null}}})):t.hit?.element?.id!==this.state.selectedLinearElement.elementId?this.scene.getSelectedElements(this.state).length>1&&this.setState({selectedLinearElement:null}):this.state.selectedLinearElement.isDragging&&(this.setState({selectedLinearElement:{...this.state.selectedLinearElement,isDragging:!1}}),this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B})),this.state.newElement&&this.state.multiElement&&FA(this.state.newElement)&&this.state.selectedLinearElement){let{multiElement:u}=this.state;this.setState({selectedLinearElement:{...this.state.selectedLinearElement,lastCommittedPoint:u.points[u.points.length-1]}})}}if(this.missingPointerEventCleanupEmitter.clear(),window.removeEventListener("pointermove",t.eventListeners.onMove),window.removeEventListener("pointerup",t.eventListeners.onUp),window.removeEventListener("keydown",t.eventListeners.onKeyDown),window.removeEventListener("keyup",t.eventListeners.onKeyUp),this.props?.onPointerUp?.(s,t),this.onPointerUpEmitter.trigger(this.state.activeTool,t,o),a?.type==="freedraw"){let u=He(o,this.state),m=a.points,w=u.x-a.x,b=u.y-a.y;w===m[0][0]&&b===m[0][1]&&(b+=1e-4,w+=1e-4);let D=a.simulatePressure?[]:[...a.pressures,o.pressure];this.scene.mutateElement(a,{points:[...m,k(w,b)],pressures:D}),this.actionManager.executeAction(sa);return}if(FA(a)&&this.state.activeTool.type!=="autoshape"){let u=He(o,this.state),m=ZA(k(u.x,u.y),k(t.origin.x,t.origin.y))*this.state.zoom.value;if((!t.drag.hasOccurred||m<W8)&&a&&!g)if(this.editorInterface.isTouchScreen&&a.points.length>1){let w=Math.min(this.state.width*.7/this.state.zoom.value,100);this.scene.mutateElement(a,{x:a.x-w/2,points:[k(0,0),k(w,0)]},{informMutation:!1,isDragging:!1}),this.actionManager.executeAction(sa)}else this.setState({multiElement:a,newElement:a});else t.drag.hasOccurred&&!g&&(this.store.scheduleCapture(),FA(a)&&this.actionManager.executeAction(sa,"ui",{event:o,sceneCoords:B}),this.setState({suggestedBinding:null}),this.isToolLocked()?this.setState({newElement:null}):this.setState(w=>({newElement:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type}),selectedElementIds:At({...w.selectedElementIds,[a.id]:!0},w),selectedLinearElement:new rA(a,this.scene.getNonDeletedElementsMap())}),()=>this.cursor.reset()),this.scene.triggerUpdate());return}if(cA(a)){let u=vQ(se({fontSize:a.fontSize,fontFamily:a.fontFamily}),a.lineHeight);a.width<u&&this.scene.mutateElement(a,{autoResize:!0}),this.cursor.reset(),this.handleTextWysiwyg(a,{isExistingElement:!0})}if(s.type!=="selection"&&a&&sr(a)){this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(u=>u.id!==a.id),appState:{newElement:null},captureUpdate:tA.NEVER});return}if(mA(a)){let u=p4(this.scene.getElementsIncludingDeleted(),a,this.scene.getNonDeletedElementsMap());this.scene.replaceAllElements(ld(this.scene.getElementsMapIncludingDeleted(),u,a))}if(a&&(this.scene.mutateElement(a,D0(a),{informMutation:!1,isDragging:!1}),this.scene.triggerUpdate()),t.drag.hasOccurred){let u=He(o,this.state);if(this.state.selectedLinearElement&&this.state.selectedLinearElement.isDragging){let m=this.scene.getElement(this.state.selectedLinearElement.elementId);if(m?.frameId){let w=ui(m,i);w&&m&&(Hr(m,w,this.scene.getNonDeletedElementsMap())||(this.scene.mutateElement(m,{groupIds:[]}),XQ([m],this.scene.getNonDeletedElementsMap()),this.scene.triggerUpdate()))}}else{let m=this.scene.getSelectedElements(this.state),w=this.getTopLayerFrameAtSceneCoords(u,{currentFrameId:VQ(m),excludeElementIds:this.state.selectedElementIds}),b=this.scene.getElementsMapIncludingDeleted(),D=S=>{if(S.length>0){for(let U of S){let v=U.groupIds.indexOf(this.state.editingGroupId);this.scene.mutateElement(U,{groupIds:U.groupIds.slice(0,v)},{informMutation:!1,isDragging:!1})}b.forEach(U=>{U.groupIds.length&&be(b,U.groupIds[U.groupIds.length-1]).length<2&&this.scene.mutateElement(U,{groupIds:[]},{informMutation:!1,isDragging:!1})}),this.setState({editingGroupId:null})}};if(w&&!this.state.selectedElementIds[w.id]){let S=m.filter(U=>Xm(U,b,this.state));this.state.editingGroupId&&D(S),b=ld(b,S,w)}else if(!w&&this.state.editingGroupId){let S=m.filter(U=>U.frameId&&!Xm(U,b,this.state));D(S)}b=ml(b,this.state,this),this.scene.replaceAllElements(b)}}if(r&&this.store.scheduleCapture(),r&&sr(r)&&this.updateScene({elements:this.scene.getElementsIncludingDeleted().filter(u=>u.id!==r.id),captureUpdate:tA.NEVER}),t.resize.isResizing){let u=ml(this.scene.getElementsIncludingDeleted(),this.state,this),m=this.scene.getSelectedElements(this.state).filter(mA);for(let w of m)u=pl(u,Kr(this.scene.getElementsIncludingDeleted(),w,this.state,i),w);this.scene.replaceAllElements(u)}let d=t.hit.element;this.state.selectedLinearElement?.elementId!==d?.id&&FA(d)&&this.scene.getSelectedElements(this.state).length===1&&this.setState({selectedLinearElement:new rA(d,this.scene.getNonDeletedElementsMap())}),(!n||n&&(!d&&!c||d&&d.id!==n))&&this.finishImageCropping();let E=this.lastPointerDownEvent,h=this.lastPointerUpEvent||this.lastPointerMoveEvent;if(ig(this.state)&&E&&h){if(this.eraserTrail.endPath(),ZA(k(E.clientX,E.clientY),k(h.clientX,h.clientY))===0){let m=He({clientX:h.clientX,clientY:h.clientY},this.state);this.getElementsAtPosition(m.x,m.y).forEach(b=>this.elementsPendingErasure.add(b.id))}this.eraseElements();return}else this.elementsPendingErasure.size&&this.restoreReadyToEraseElements();if(d&&!t.drag.hasOccurred&&!t.hit.wasAddedToSelection&&(!this.state.selectedLinearElement?.isEditing||!t.boxSelection.hasOccurred)&&this.state.activeTool.type!=="lasso"&&(o.shiftKey&&!this.state.selectedLinearElement?.isEditing?this.state.selectedElementIds[d.id]?Tm(this.state,d)?this.setState(u=>{let m={...u.selectedElementIds};for(let w of d.groupIds.flatMap(b=>be(this.scene.getNonDeletedElements(),b)))delete m[w.id];return{selectedGroupIds:{...u.selectedElementIds,...d.groupIds.map(w=>({[w]:!1})).reduce((w,b)=>({...w,...b}),{})},selectedElementIds:At(m,u)}}):this.state.selectedLinearElement?.isDragging||this.setState(u=>{let m={...u.selectedElementIds};delete m[d.id];let w=WA(this.scene.getNonDeletedElements(),{selectedElementIds:m});return{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),selectedLinearElement:w.length===1&&FA(w[0])?new rA(w[0],this.scene.getNonDeletedElementsMap()):u.selectedLinearElement}}):d.frameId&&this.state.selectedElementIds[d.frameId]?this.setState(u=>{let m={...u.selectedElementIds,[d.id]:!0};return delete m[d.frameId],(this.scene.getElement(d.frameId)?.groupIds??[]).flatMap(w=>be(this.scene.getNonDeletedElements(),w)).forEach(w=>{delete m[w.id]}),{...So({editingGroupId:u.editingGroupId,selectedElementIds:m},this.scene.getNonDeletedElements(),u,this),showHyperlinkPopup:d.link||ni(d)?"info":!1}}):this.setState(u=>({selectedElementIds:At({...u.selectedElementIds,[d.id]:!0},u)})):this.setState(u=>({...So({editingGroupId:u.editingGroupId,selectedElementIds:{[d.id]:!0}},this.scene.getNonDeletedElements(),u,this),selectedLinearElement:FA(d)&&u.selectedLinearElement?.elementId!==d.id?new rA(d,this.scene.getNonDeletedElementsMap()):u.selectedLinearElement}))),this.state.activeTool.type!=="lasso"&&!(d&&kA(d))&&!t.drag.hasOccurred&&!this.state.isResizing&&(d&&G5({point:k(t.origin.x,t.origin.y),element:d,elementsMap:i,threshold:this.getElementHitThreshold(d),frameNameBound:mA(d)?this.frameNameBoundsCache.get(d):null},i)||!d&&t.hit.hasHitCommonBoundingBoxOfSelectedElements)){this.state.selectedLinearElement?.isEditing?this.actionManager.executeAction(Nu):this.setState({selectedElementIds:At({},this.state),selectedGroupIds:{},editingGroupId:null,activeEmbeddable:null}),this.cursor.set(Xe.AUTO);return}let p=this.getSelectedTextEditingContainerAtPosition(d,B);if(s.type===this.state.preferredSelectionTool.type&&!this.state.editingTextElement&&!t.drag.hasOccurred&&!t.hit.wasAddedToSelection&&!o.shiftKey&&!o[z.CTRL_OR_CMD]&&!o.altKey&&o.pointerType!=="touch"&&d&&(cA(d)&&this.state.selectedElementIds[d.id]&&this.scene.getSelectedElements(this.state).length===1||p)){this.startTextEditing({sceneX:B.x,sceneY:B.y,container:p,initialCaretSceneCoords:this.lastPointerUpIsDoubleClick?void 0:B});return}if(!this.isToolLocked()&&s.type!=="freedraw"&&a&&this.setState(u=>({selectedElementIds:At({...u.selectedElementIds,[a.id]:!0},u),showHyperlinkPopup:ni(a)&&!a.link?"editor":u.showHyperlinkPopup})),!this.isEditingTextContent()&&(s.type!=="selection"||Et(this.scene.getNonDeletedElements(),this.state)||!Tt(this.state.previousSelectedElementIds,this.state.selectedElementIds))&&this.store.scheduleCapture(),t.drag.hasOccurred&&!this.state.selectedLinearElement||l||I||c){let u=this.scene.getSelectedElements(this.state).filter(bA);Hm(u,this.scene,this.state)}if(s.type==="laser"){this.laserTrails.endPath();return}if(s.type==="autoshape"){this.actionManager.executeAction(sa);return}!this.isToolLocked()&&s.type!=="freedraw"&&s.type!==po.bucketfill&&(s.type!=="lasso"||s.type==="lasso"&&s.fromSelection)?this.setState({newElement:null,suggestedBinding:null,activeTool:oo(this.state,{type:this.state.preferredSelectionTool.type})},()=>this.cursor.reset()):this.setState({newElement:null,suggestedBinding:null})})}setSelection(t){let o={},i={};t.forEach(a=>{a.groupIds.length?(o[a.id]=!0,a.groupIds.forEach(r=>{i[r]=!0})):we(a)||(o[a.id]=!0)}),this.setState({previousSelectedElementIds:this.state.selectedElementIds,selectedElementIds:o,selectedGroupIds:i})}clearSelection(t){this.setState(o=>({selectedElementIds:At({},o),activeEmbeddable:null,selectedGroupIds:{},editingGroupId:o.editingGroupId&&t!=null&&ad(t,o.editingGroupId)?o.editingGroupId:null})),this.setState({selectedElementIds:At({},this.state),activeEmbeddable:null,previousSelectedElementIds:this.state.selectedElementIds,selectedLinearElement:null})}getTextWysiwygSnappedToCenterPosition(t,o,i,a){if(a){let r=a.x+a.width/2,n=a.y+a.height/2,g=jy(a,this.scene.getNonDeletedElementsMap());if(g&&(r=g.x,n=g.y),Math.hypot(t-r,o-n)<z8){let{x:I,y:c}=oi({sceneX:r,sceneY:n},i);return{viewportX:I,viewportY:c,elementCenterX:r,elementCenterY:n}}}}getCanvasOffsets(){if(this.excalidrawContainerRef?.current){let t=this.excalidrawContainerRef.current,{left:o,top:i}=t.getBoundingClientRect();return{offsetLeft:o,offsetTop:i}}return{offsetLeft:0,offsetTop:0}}async updateLanguage(){let t=Ed.find(o=>o.code===this.props.langCode)||Cs;await Ak(t),this.setAppState({})}},nhA=sT;Q();var PU=G(nA(),1);var shA=G(_(),1),ghA=A=>{let[e,t]=(0,PU.useState)(!0);return(0,PU.useEffect)(()=>{let o=async()=>{await Ak(i),t(!1)},i=Ed.find(a=>a.code===A.langCode)||Cs;o()},[A.langCode]),e?(0,shA.jsx)(aG,{theme:A.theme}):A.children};Q();var ET=G(_(),1),lhA=({children:A})=>{let{FooterCenterTunnel:e}=Mt(),t=Ee();return(0,ET.jsx)(e.In,{children:(0,ET.jsx)("div",{className:iA("footer-center zen-mode-transition",{"layer-ui__wrapper__footer-left--transition-bottom":t.zenModeEnabled}),children:A})})},IhA=lhA;lhA.displayName="FooterCenter";Q();X();var ZU=G(_(),1),chA=({isCollaborating:A,onSelect:e,editorInterface:t,...o})=>{let i=Ee(),a=t?.formFactor!=="desktop"||i.width<w3;return(0,ZU.jsxs)(la,{...o,className:iA("collab-button",{active:A}),type:"button",onSelect:e,style:{position:"relative",width:a?void 0:"auto"},title:L("labels.liveCollaboration"),children:[a?dtA:L("labels.share"),i.collaborators.size>0&&(0,ZU.jsx)("div",{className:"CollabButton-collaborators",children:i.collaborators.size})]})},ChA=chA;chA.displayName="LiveCollaborationTrigger";Q();Q();Q();var Hg=G(_(),1),e8A=()=>(0,Hg.jsx)("svg",{viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:"ExcalidrawLogo-icon",children:(0,Hg.jsx)("path",{d:"M39.9 32.889a.326.326 0 0 0-.279-.056c-2.094-3.083-4.774-6-7.343-8.833l-.419-.472a.212.212 0 0 0-.056-.139.586.586 0 0 0-.167-.111l-.084-.083-.056-.056c-.084-.167-.28-.278-.475-.167-.782.39-1.507.973-2.206 1.528-.92.722-1.842 1.445-2.708 2.25a8.405 8.405 0 0 0-.977 1.028c-.14.194-.028.361.14.444-.615.611-1.23 1.223-1.843 1.861a.315.315 0 0 0-.084.223c0 .083.056.166.111.194l1.09.833v.028c1.535 1.528 4.244 3.611 7.12 5.861.418.334.865.667 1.284 1 .195.223.39.473.558.695.084.11.28.139.391.055.056.056.14.111.196.167a.398.398 0 0 0 .167.056.255.255 0 0 0 .224-.111.394.394 0 0 0 .055-.167c.029 0 .028.028.056.028a.318.318 0 0 0 .224-.084l5.082-5.528a.309.309 0 0 0 0-.444Zm-14.63-1.917a.485.485 0 0 0 .111.14c.586.5 1.2 1 1.843 1.555l-2.569-1.945-.251-.166c-.056-.028-.112-.084-.168-.111l-.195-.167.056-.056.055-.055.112-.111c.866-.861 2.346-2.306 3.1-3.028-.81.805-2.43 3.167-2.095 3.944Zm8.767 6.89-2.122-1.612a44.713 44.713 0 0 0-2.625-2.5c1.145.861 2.122 1.611 2.262 1.75 1.117.972 1.06.806 1.815 1.445l.921.666a1.06 1.06 0 0 1-.251.25Zm.558.416-.056-.028c.084-.055.168-.111.252-.194l-.196.222ZM1.089 5.75c.055.361.14.722.195 1.056.335 1.833.67 3.5 1.284 4.75l.252.944c.084.361.223.806.363.917 1.424 1.25 3.602 3.11 5.947 4.889a.295.295 0 0 0 .363 0s0 .027.028.027a.254.254 0 0 0 .196.084.318.318 0 0 0 .223-.084c2.988-3.305 5.221-6.027 6.813-8.305.112-.111.14-.278.14-.417.111-.111.195-.25.307-.333.111-.111.111-.306 0-.39l-.028-.027c0-.055-.028-.139-.084-.167-.698-.666-1.2-1.138-1.731-1.638-.922-.862-1.871-1.75-3.881-3.75l-.028-.028c-.028-.028-.056-.056-.112-.056-.558-.194-1.703-.389-3.127-.639C6.087 2.223 3.21 1.723.614.944c0 0-.168 0-.196.028l-.083.084c-.028.027-.056.055-.224.11h.056-.056c.028.167.028.278.084.473 0 .055.112.5.112.555l.782 3.556Zm15.496 3.278-.335-.334c.084.112.196.195.335.334Zm-3.546 4.666-.056.056c0-.028.028-.056.056-.056Zm-2.038-10c.168.167.866.834 1.033.973-.726-.334-2.54-1.167-3.379-1.445.838.167 1.983.334 2.346.472ZM1.424 2.306c.419.722.754 3.222 1.089 5.666-.196-.778-.335-1.555-.503-2.278-.251-1.277-.503-2.416-.838-3.416.056 0 .14 0 .252.028Zm-.168-.584c-.112 0-.223-.028-.307-.028 0-.027 0-.055-.028-.055.14 0 .223.028.335.083Zm-1.089.222c0-.027 0-.027 0 0ZM39.453 1.333c.028-.11-.558-.61-.363-.639.42-.027.42-.666 0-.666-.558.028-1.144.166-1.675.25-.977.194-1.982.389-2.96.61-2.205.473-4.383.973-6.561 1.557-.67.194-1.424.333-2.066.666-.224.111-.196.333-.084.472-.056.028-.084.028-.14.056-.195.028-.363.056-.558.083-.168.028-.252.167-.224.334 0 .027.028.083.028.11-1.173 1.556-2.485 3.195-3.909 4.945-1.396 1.611-2.876 3.306-4.356 5.056-4.719 5.5-10.052 11.75-15.943 17.25a.268.268 0 0 0 0 .389c.028.027.056.055.084.055-.084.084-.168.14-.252.222-.056.056-.084.111-.084.167a.605.605 0 0 0-.111.139c-.112.111-.112.305.028.389.111.11.307.11.39-.028.029-.028.029-.056.056-.056a.44.44 0 0 1 .615 0c.335.362.67.723.977 1.028l-.698-.583c-.112-.111-.307-.083-.39.028-.113.11-.085.305.027.389l7.427 6.194c.056.056.112.056.196.056s.14-.028.195-.084l.168-.166c.028.027.083.027.111.027.084 0 .14-.027.196-.083 10.052-10.055 18.15-17.639 27.42-24.417.083-.055.111-.166.111-.25.112 0 .196-.083.251-.194 1.704-5.194 2.039-9.806 2.15-12.083v-.028c0-.028.028-.056.028-.083.028-.056.028-.084.028-.084a1.626 1.626 0 0 0-.111-1.028ZM21.472 9.5c.446-.5.893-1.028 1.34-1.5-2.876 3.778-7.65 9.583-14.408 16.5 4.607-5.083 9.242-10.333 13.068-15ZM5.193 35.778h.084-.084Zm3.462 3.194c-.027-.028-.027-.028 0-.028v.028Zm4.16-3.583c.224-.25.448-.472.699-.722 0 0 0 .027.028.027-.252.223-.475.445-.726.695Zm1.146-1.111c.14-.14.279-.334.446-.5l.028-.028c1.648-1.694 3.351-3.389 5.082-5.111l.028-.028c.419-.333.921-.694 1.368-1.028a379.003 379.003 0 0 0-6.952 6.695ZM24.794 6.472c-.921 1.195-1.954 2.778-2.82 4.028-2.736 3.944-11.532 13.583-11.727 13.75a1976.983 1976.983 0 0 1-8.042 7.639l-.167.167c-.14-.167-.14-.417.028-.556C14.49 19.861 22.03 10.167 25.074 5.917c-.084.194-.14.36-.28.555Zm4.83 5.695c-1.116-.64-1.646-1.64-1.34-2.611l.084-.334c.028-.083.084-.194.14-.277.307-.5.754-.917 1.257-1.167.027 0 .055 0 .083-.028-.028-.056-.028-.139-.028-.222.028-.167.14-.278.335-.278.335 0 1.369.306 1.76.639.111.083.223.194.335.305.14.167.363.445.474.667.056.028.112.306.196.445.056.222.111.472.084.694-.028.028 0 .194-.028.194a2.668 2.668 0 0 1-.363 1.028c-.028.028-.028.056-.056.084l-.028.027c-.14.223-.335.417-.53.556-.643.444-1.369.583-2.095.389 0 0-.195-.084-.28-.111Zm8.154-.834a39.098 39.098 0 0 1-.893 3.167c0 .028-.028.083 0 .111-.056 0-.084.028-.14.056-2.206 1.61-4.356 3.305-6.506 5.028 1.843-1.64 3.686-3.306 5.613-4.945.558-.5.949-1.139 1.06-1.861l.28-1.667v-.055c.14-.334.67-.195.586.166Z",fill:"currentColor"})}),t8A=()=>(0,Hg.jsxs)("svg",{viewBox:"0 0 450 55",xmlns:"http://www.w3.org/2000/svg",fill:"none",className:"ExcalidrawLogo-text",children:[(0,Hg.jsx)("path",{d:"M429.27 96.74c2.47-1.39 4.78-3.02 6.83-4.95 1.43-1.35 2.73-2.86 3.81-4.51-.66.9-1.4 1.77-2.23 2.59-2.91 2.84-5.72 5.09-8.42 6.87h.01ZM343.6 69.36c.33 3.13.58 6.27.79 9.4.09 1.37.18 2.75.25 4.12-.12-4.46-.27-8.93-.5-13.39-.11-2.08-.24-4.16-.4-6.24-.06 1.79-.11 3.85-.13 6.11h-.01ZM378.47 98.34c.01-.37.07-1.13.01-6.51-.11 1.9-.22 3.81-.31 5.71-.07 1.42-.22 2.91-.16 4.35.39.03.78.07 1.17.1-.92-.85-.76-2.01-.72-3.66l.01.01ZM344.09 86.12c-.09-2.41-.22-4.83-.39-7.24v12.21c.15-.05.32-.09.47-.14.05-1.61-.03-3.23-.09-4.83h.01ZM440.69 66.79c-.22-.34-.45-.67-.69-.99-3.71-4.87-9.91-7.14-15.65-8.55-1.05-.26-2.12-.49-3.18-.71 2.29.59 4.48 1.26 6.64 2.02 7.19 2.54 10.57 5.41 12.88 8.23ZM305.09 72.46l1.2 3.6c.84 2.53 1.67 5.06 2.46 7.61.24.78.5 1.57.73 2.36.22-.04.44-.08.67-.12a776.9 776.9 0 0 1-5.01-13.57c-.02.04-.03.09-.05.13v-.01ZM345.49 90.25v.31c1.48-.42 3.05-.83 4.66-1.2-1.56.25-3.12.52-4.66.89ZM371.02 90.22c0-.57-.04-1.14-.11-1.71-.06-.02-.12-.04-.19-.05-.21-.05-.43-.08-.65-.11.42.16.74.88.95 1.87ZM398.93 54.23c-.13 0-.27-.01-.4-.02l.03.4c.11-.15.23-.27.37-.38ZM401.57 62.28v-.15c-1.22-.24-2.86-.61-3.23-1.25-.09-.15-.18-.51-.27-.98-.09.37-.2.73-.33 1.09 1.24.56 2.52.98 3.83 1.29ZM421.73 88.68c-2.97 1.65-6.28 3.12-9.69 3.68v.18c4.72-.14 11.63-3.85 16.33-8.38-2.04 1.75-4.33 3.24-6.63 4.53l-.01-.01ZM411.28 80.92c-.05-1.2-.09-2.4-.15-3.6-.21 5.66-.46 11.38-.47 14.51.24-.02.48-.04.71-.07.15-3.61.05-7.23-.09-10.83v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"M425.38 67.41c-3.5-1.45-7.19-2.57-14.06-3.62.09 1.97.06 4.88-.03 8.12.03.04.06.09.06.15.19 1.36.28 2.73.37 4.1.25 3.77.39 7.55.41 11.33 0 1.38-.01 2.76-.07 4.13 1.4-.25 2.78-.65 4.12-1.15 4.07-1.5 7.94-3.78 11.28-6.54 2.33-1.92 5.13-4.49 5.88-7.58.63-3.53-2.45-6.68-7.97-8.96l.01.02ZM411.35 92.53v-.06l-.34.03c.11.01.22.03.34.03ZM314.26 64.06c-.23-.59-.47-1.17-.7-1.75.57 1.62 1.11 3.25 1.6 4.9l.15.54 2.35 6.05c.32.82.66 1.64.98 2.46-1.38-4.1-2.83-8.17-4.39-12.2h.01ZM156.82 103.07c-.18.13-.38.23-.58.33 1.32-.03 2.66-.2 3.93-.34.86-.09 1.72-.22 2.58-.33-2.12.1-4.12.17-5.94.34h.01ZM210.14 68.88s.03.04.05.07c.18-.31.39-.64.58-.96-.21.3-.42.6-.64.89h.01ZM201.65 82.8c-.5.77-1.02 1.56-1.49 2.37 1.11-1.55 2.21-3.1 3.2-4.59-.23.23-.49.51-.75.79-.32.47-.65.95-.96 1.43ZM194.03 98.66c-.33-.4-.65-.84-1.05-1.17-.24-.2-.07-.49.17-.56-.23-.26-.42-.5-.63-.75 1.51-2.55 3.93-5.87 6.4-9.28-.17-.08-.29-.28-.2-.49.04-.09.09-.17.13-.26-1.21 1.78-2.42 3.55-3.61 5.33-.87 1.31-1.74 2.64-2.54 4-.29.5-.63 1.04-.87 1.61.81.65 1.63 1.27 2.47 1.88-.09-.11-.18-.21-.27-.32v.01ZM307.79 82.93c-1-3.17-2.05-6.32-3.1-9.48-1.62 4.08-3.69 9.17-6.16 15.19 3.32-1.04 6.77-1.87 10.27-2.5-.32-1.08-.67-2.15-1.01-3.21ZM149.5 80.7c.05-1.71.04-3.43 0-5.14-.1 2.26-.16 4.51-.22 6.77-.02.73-.03 1.46-.04 2.19.14-1.27.2-2.55.24-3.82h.02ZM228.98 98.3c.39 1.25.91 3.03.94 3.91.06-.03.12-.07.17-.1.08-1.29-.55-2.65-1.11-3.81ZM307.72 53.36c.81.5 1.53 1.04 2.07 1.49-.38-.8-.78-1.58-1.21-2.35-.17.03-.34.06-.51.11-.43.12-.86.26-1.29.41.35-.01.53.1.94.34ZM283.69 96.14c3.91-7.25 6.89-13.35 8.88-18.15l1.1-2.66c-1.27 2.64-2.56 5.27-3.83 7.9-1.53 3.15-3.06 6.31-4.58 9.47-.87 1.81-1.76 3.62-2.54 5.47.04.02.07.04.11.07.05.05.1.09.15.14.05-.73.27-1.48.71-2.24ZM289.92 103.23s-.04.01-.05.03c0-.02.04-.03.05-.04.05-.05.11-.1.16-.15l.21-.21c-.55 0-1.5-.27-2.55-.72.4.26.8.51 1.22.74.24.13.48.26.73.37.05.02.1.03.14.05a.27.27 0 0 1 .08-.07h.01ZM269.23 68.49c-.39-.19-.82-.48-1.33-.87-3.06-1.56-6.31-2.78-9.36-2.35-3.5.49-5.7 1.11-7.74 2.44 5.71-2.6 12.82-2.07 18.44.79l-.01-.01ZM177.87 53.69l1.06.03c-.96-.22-2-.25-2.89-.3-4.95-.26-9.99.33-14.86 1.19-2.44.43-4.88.95-7.28 1.59 9.09-1.76 15.69-2.77 23.97-2.51ZM219.85 55.51c-.18.12-.36.27-.56.45-.45.53-.86 1.11-1.26 1.66-1.91 2.61-3.71 5.31-5.57 7.95l-.12.18 8.05-10.11c-.18-.05-.36-.1-.55-.13h.01ZM510.71 54.1c.12-.15.29-.3.53-.45.69-.4 3.72-.63 5.87-.74-.36-.02-.73-.04-1.09-.05-1.84-.03-3.67.09-5.49.35.05.3.12.59.18.88v.01ZM510.76 86.02c1.37-3.07 2.49-6.27 3.57-9.46.55-1.64 1.12-3.3 1.6-4.97-1.59 4.01-3.67 9.14-6.2 15.3.24-.08.5-.14.74-.22.1-.22.19-.44.29-.65ZM566.95 75.76c.11-.02.23.03.31.11-.05-.13-.09-.26-.14-.39-.05.09-.11.18-.17.28ZM511.33 86.41c3.08-.89 6.24-1.62 9.46-2.14-1.51-3.98-2.98-7.96-4.39-11.87-.05.15-.09.31-.14.46-1.02 3.32-2.15 6.61-3.39 9.85-.48 1.25-.98 2.49-1.53 3.7h-.01ZM578.24 74.45c.11-.44.23-.87.35-1.31-.31.7-.64 1.39-.97 2.08.09.21.19.4.28.61.12-.46.23-.92.35-1.38h-.01ZM520.62 53.11c-.09 0-.18-.01-.28-.02.38.34.29 1.08.93 2.53l6.65 17.15c2.2 5.68 4.69 11.36 7.41 16.87l1.06 2.17c-2.95-7.05-5.92-14.08-8.87-21.13-1.58-3.79-3.16-7.59-4.7-11.4-.78-1.92-1.73-3.89-2.25-5.91-.03-.1 0-.19.04-.26h.01ZM578.78 77.87c1.45-5.77 3.07-10.43 3.58-13.36.05-.34.16-.88.31-1.55-.67 1.79-1.37 3.56-2.08 5.33-.12.43-.23.86-.35 1.29-.65 2.43-1.29 4.86-1.9 7.3.14.33.29.65.43 1l.01-.01ZM545.3 94.66c.02-.44.03-.83.05-1.12.02-1.01.05-2.02.11-3.02.03-6.66-.46-14.33-1.46-22.8-.13-.42-.27-1.24-.56-2.89 0-.02 0-.04-.01-.06.62 6.61.95 13.25 1.32 19.87.17 3.08.33 6.16.52 9.23.02.25.03.52.04.78l-.01.01ZM580.77 102.81c.13.2.27.38.37.49.27-.11.53-.22.8-.32-.43.09-.82.05-1.17-.16v-.01ZM530.48 104.07h.33c-.36-.13-.71-.32-1.04-.56.14.24.3.47.45.7.06-.08.14-.13.26-.13v-.01ZM542.63 58.82c.06.23.11.47.15.71.14-.33.36-.62.7-.86-.28.05-.57.11-.85.15ZM583.81 57.87c.15-.7.29-1.41.42-2.11-.14.45-.28.9-.42 1.34-.46 1.44-.89 2.89-1.31 4.34.44-1.19.88-2.37 1.31-3.57ZM523.62 91.48c-4.66 1.17-9.05 2.89-14.02 5.27 4.65-1.84 9.48-3.29 14.28-4.63-.09-.22-.17-.41-.26-.64ZM460.64 78.3c-.04-2.9-.11-5.81-.28-8.71-.1-1.68-.17-3.43-.5-5.09-.07.02-.14.03-.2.05.3 6.54.45 12.17.51 17.12.17-.07.34-.14.51-.2 0-1.06-.01-2.11-.03-3.17h-.01ZM470.63 63.24c-3.38-.26-6.81.32-10.1 1.1.41 2.01.47 4.14.57 6.18.18 3.55.25 7.11.27 10.67 3.31-1.38 6.5-3.12 9.3-5.35 1.96-1.56 3.86-3.41 5.02-5.66.73-1.41 1.19-3.22.26-4.65-1.09-1.7-3.46-2.14-5.32-2.29ZM460.29 63.68c1-.24 2.01-.46 3.04-.65-1.15.16-2.37.38-3.71.69v.13c.07-.02.15-.04.22-.05.11-.13.3-.18.45-.11v-.01ZM457.24 100.96c.43-.03.86-.07 1.29-.11.14-.49.27-.99.38-1.49-.44.7-1 1.23-1.67 1.6ZM482.88 104.98c-.18.23-.36.38-.55.47.14.09.27.19.4.28a70.76 70.76 0 0 0 4.37-4.63c.76-.89 1.52-1.81 2.19-2.77-.3-.27-.61-.53-.92-.79-.07 1.94-4.62 6.32-5.49 7.45v-.01Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"M474.36 63.31c-.4-.16-.84-.27-1.29-.37 1.56.42 3.08 1.22 3.76 2.74.62 1.4.32 2.95-.28 4.32.7-1.22.94-2.34.74-3.47-.24-1.33-1.19-2.54-2.93-3.21v-.01ZM477.34 89.18c-1.2-.81-2.4-1.62-3.6-2.42-.14.1-.26.19-.4.29 1.4.67 2.73 1.39 4 2.13ZM465.88 93.85c.37.25.74.5 1.1.75.46.32.92.65 1.38.97-1.57-1.2-2.01-1.61-2.49-1.72h.01ZM574.92 90.06c-2.28-5.21-4.93-11.13-5.67-12.26-.1-.15-1.57-3.01-1.63-3.08 0 0-.01.02-.02.02.4 1.37 1.09 2.69 1.65 3.99 2.14 4.95 4.36 9.86 6.67 14.73.6 1.26 1.21 2.52 1.83 3.78-.75-2.01-1.64-4.45-2.83-7.18ZM448.73 65.29c.1.2.22.38.34.57.22-.02.43-.06.65-.08v-.08c-.14-.05-.25 0-.99-.41ZM460.16 94.81c-.02.31-.06.59-.1.89-.03 1.71-.33 3.43-.79 5.07.15-.02.3-.03.45-.05.01-.04.02-.08.03-.11.09-.34.15-.69.2-1.03.17-1.07.25-2.16.33-3.24.05-.69.08-1.39.12-2.08-.27.1-.27.26-.24.57v-.02Z",transform:"translate(-144.023 -51.76)"}),(0,Hg.jsx)("path",{d:"m328.67 98.12-3.22-6.58c-1.29-2.63-2.53-5.29-3.72-7.97-.25-.85-.52-1.69-.79-2.53-.81-2.57-1.67-5.12-2.55-7.67-1.92-5.53-3.9-11.08-6.32-16.41-.72-1.58-1.46-3.44-2.63-4.79-.03-.17-.16-.29-.34-.36a.282.282 0 0 0-.23-.04c-.06-.01-.12 0-.18.01-.74.06-1.5.38-2.19.61-2.22.77-4.4 1.64-6.63 2.38-.03-.08-.06-.16-.09-.25-.15-.42-.82-.24-.67.19.03.09.07.19.1.28l-.18.06c-.36.11-.28.6 0 .68.18 1.18.63 2.36.98 3.49.03.09.06.17.08.26-.08.23-.17.46-.24.64-.37.98-.79 1.94-1.21 2.9-1.27 2.89-2.62 5.75-3.98 8.6-3.18 6.67-6.44 13.31-9.64 19.97-1.08 2.25-2.2 4.5-3.15 6.81-.13.32.24.5.5.37 1.34 1.33 2.84 2.5 4.4 3.57.65.44 1.31.87 2.01 1.24.4.22.86.48 1.33.5.24.01.35-.19.33-.37.11-.1.21-.21.28-.28.41-.41.81-.84 1.2-1.26.85-.92 1.69-1.87 2.5-2.84 6.31-2.34 12.6-4.31 18.71-5.84 2.14 5.3 3.43 8.43 3.97 9.58.55 1.05 1.15 1.88 1.82 2.52 1.32.56 6.96-.03 9.23-1.96.87-1.28 1.19-2.67.93-4.15-.09-.5-.22-.95-.4-1.33l-.01-.03Zm-20.09-45.61c.43.77.83 1.56 1.21 2.35-.54-.45-1.27-.99-2.07-1.49-.42-.24-.6-.35-.94-.34.43-.15.85-.29 1.29-.41.17-.05.34-.08.51-.11Zm-25.86 45.66c.78-1.85 1.67-3.66 2.54-5.47 1.51-3.16 3.05-6.31 4.58-9.47 1.28-2.63 2.56-5.26 3.83-7.9l-1.1 2.66c-1.99 4.79-4.97 10.9-8.88 18.15-.43.76-.66 1.51-.71 2.24-.05-.05-.1-.09-.15-.14a.259.259 0 0 0-.11-.07Zm6.24 4.71c-.42-.23-.82-.48-1.22-.74 1.05.45 2 .72 2.55.72l-.21.21c-.05.05-.11.1-.16.15-.01.01-.04.03-.05.04 0-.02.03-.02.05-.03a.27.27 0 0 0-.08.07c-.05-.02-.1-.03-.14-.05-.25-.1-.49-.24-.73-.37h-.01Zm15.73-29.43c1.05 3.15 2.1 6.31 3.1 9.48.34 1.06.69 2.13 1.01 3.21-3.5.63-6.95 1.46-10.27 2.5 2.48-6.03 4.54-11.11 6.16-15.19Zm4.79 12.57c-.23-.79-.49-1.58-.73-2.36-.79-2.54-1.63-5.08-2.46-7.61l-1.2-3.6c.02-.04.04-.09.05-.13 1.6 4.45 3.28 9 5.01 13.57l-.67.12v.01Zm5.83-18.27-.15-.54c-.49-1.64-1.03-3.28-1.6-4.9.23.58.47 1.17.7 1.75 1.56 4.03 3.01 8.1 4.39 12.2-.33-.82-.67-1.64-.98-2.46l-2.35-6.05h-.01ZM390.43 79.37c-.13-10.43-.22-17.5-.24-19.97-.24-1.6.21-2.88-.65-3.65-.14-.13-.32-.23-.52-.32h.03c.45 0 .45-.69 0-.7-1.75-.03-3.5-.04-5.25-.14-1.38-.08-2.76-.21-4.15-.31-.07 0-.12.01-.17.04-.21-.07-.47.03-.45.31l.03.45c-.11.14-.19.3-.22.5-.21 1.26-.32 13.67-.36 23.59-.32 5.79-.67 11.57-.97 17.36-.09 1.73-.29 3.54-.21 5.3-.39.02-.38.64.04.69v.12c.05.44.74.45.7 0v-.06c1.1.09 2.2.21 3.3.3 1.14.19 2.44.2 3.29.17 1.73-.05 2.92-.05 3.8-.37.45-.05.9-.11 1.35-.17.44-.06.25-.73-.19-.67h-.01c.24-.32.45-.72.62-1.25.66-1.84.41-6.36.34-11.33l-.13-9.9.02.01Zm-12.26 18.17c.09-1.91.2-3.81.31-5.71.06 5.38 0 6.14-.01 6.51-.05 1.65-.21 2.81.72 3.66-.39-.04-.78-.07-1.17-.1-.06-1.44.09-2.93.16-4.35l-.01-.01ZM588.97 53.85c-2.06-.25-3.17-.51-3.76-.6a.3.3 0 0 1 .04-.08c.22-.39-.39-.75-.6-.35-.56 1.02-.9 2.19-1.26 3.29-.61 1.88-1.17 3.78-1.72 5.68-.63 2.19-1.24 4.39-1.83 6.59-.81 2.03-1.67 4.05-2.61 6.03-1.7-3.64-3.11-6.04-4.03-7.57-2.26-3.74-2.85-5.48-3.57-6.08l.31-.09c.43-.12.25-.8-.19-.67-1.06.3-2.12.6-3.17.95-.93.32-1.85.69-2.76 1.07-.13.05-.19.16-.22.27-.04.02-.08.05-.11.07-.04-.06-.07-.12-.11-.18a.354.354 0 0 0-.48-.12c-.16.09-.22.32-.13.48l.33.54c0 .09.02.18.06.28.51 1.16.78 1.38.72 1.47-2.42 3.44-5.41 7.86-6.2 9.1-1.27 1.97-2.01 3.14-2.45 3.84l-.91-6.56-.43-4.1c-.19-1.85-.37-3.23-.53-4.13-.19-1.1-.3-2.15-.45-3.16-.2-1.36-.29-2.06-.47-2.42h.04c.45.02.45-.68 0-.7-3.43-.16-6.81.94-10.17 1.48-.24-.22-.73-.04-.58.32.24.59.33 1.25.43 1.87.17 1.06.29 2.13.4 3.2.32 3.09.53 6.2.74 9.3.44 6.75.77 13.51 1.17 20.26.11 1.95.13 3.96.46 5.89.05.3.37.31.55.14.74 1.71 2.87 1.27 6.13 1.27 1.34 0 2.39.04 2.99-.11.02.32.48.53.63.18 3.61-8.26 7.41-16.46 12.05-24.2.03-.05.04-.1.05-.15.3.73.64 1.45.94 2.16.97 2.26 1.97 4.52 2.98 6.76 2.26 5.03 4.54 10.07 7.09 14.96.47.9.94 1.79 1.47 2.65.2.32.4.67.66.96-.18.25 0 .68.34.54.91-.38 1.82-.75 2.76-1.07 1.04-.35 2.11-.65 3.17-.95.39-.11.28-.66-.07-.68.62-.4.95-.96.87-1.91-.3-3.34.72-7.47.86-8.52l2.14-11.43c1.75-10.74 3.13-17.51 3.23-20.86.02-.49.08-2.84.13-3.24.17-1.25.48-1-4.96-1.65l.03-.02Zm-46.19 5.67c-.04-.24-.09-.48-.15-.71l.85-.15c-.34.24-.56.53-.7.86Zm1.95 25.12c-.36-6.63-.7-13.26-1.32-19.87 0 .02 0 .04.01.06.29 1.65.44 2.47.56 2.89 1 8.46 1.5 16.14 1.46 22.8-.06.99-.1 2-.11 3.02-.01.29-.03.68-.05 1.12-.01-.26-.03-.53-.04-.78-.19-3.08-.35-6.16-.52-9.23l.01-.01Zm36.4 18.66c-.11-.11-.24-.29-.37-.49.35.21.74.26 1.17.16-.27.11-.53.22-.8.32v.01Zm-.89-33.72c.12-.43.23-.86.35-1.29.71-1.77 1.41-3.55 2.08-5.33-.15.68-.26 1.22-.31 1.55-.5 2.94-2.13 7.59-3.58 13.36-.15-.35-.29-.66-.43-1 .61-2.44 1.25-4.87 1.9-7.3l-.01.01Zm3.56-12.48c.14-.44.28-.89.42-1.34-.13.7-.27 1.41-.42 2.11-.43 1.19-.86 2.38-1.31 3.57.42-1.45.85-2.9 1.31-4.34Zm-5.22 16.05c-.11.44-.23.87-.35 1.31-.12.46-.23.92-.35 1.38-.1-.22-.19-.4-.28-.61.34-.69.66-1.38.97-2.08h.01Zm-11.64 2.62c.06-.1.12-.19.17-.28.05.13.09.26.14.39a.398.398 0 0 0-.31-.11Zm2.3 2.98c-.56-1.3-1.25-2.63-1.65-3.99 0 0 .01-.02.02-.02.06.08 1.52 2.93 1.63 3.08.73 1.13 3.38 7.04 5.67 12.26 1.2 2.73 2.08 5.17 2.83 7.18-.62-1.25-1.23-2.51-1.83-3.78-2.31-4.87-4.53-9.78-6.67-14.73ZM275.92 87.03c-1.06-2.18-1.13-3.45-2.44-2.93-1.52.57-2.94 1.3-4.5 2.1-1.4.72-2.68 1.44-3.92 2.12.01-.25-.24-.5-.51-.34-4.8 2.93-12.41 4.7-17.28 1.31-1.98-1.77-3.32-4.15-3.97-5.78-.29-.95-.49-1.94-.63-2.93-.14-3.34 1.58-6.53 3.9-9.12.8-.79 1.68-1.51 2.66-2.12 3.7-2.3 8.22-3.07 12.51-2.51 2.71.35 5.32 1.24 7.71 2.55.39.22.75-.39.35-.6-.18-.1-.37-.18-.55-.27.56.27 1.03.33 1.51.19l-.48.39c-.15.11-.23.3-.13.48.09.15.33.24.48.13 1.3-.97 2.46-2.09 3.45-3.37.37-.29.64-.6.65-.97v-.02c.08-.33-.03-.7-.21-1.08-.31-.87-.98-2.01-2.19-3.26-2.43-2.52-3.79-3.45-5.68-4.26-1.14-.49-3.12-1.06-4.42-1.23-3.28-.42-10.64-1.21-18.18 4.11-7.74 5.46-11.94 12.3-12.23 20.61-.08 2.06.04 3.98.34 5.71.74 4.18 2.57 8 5.44 11.34 4.26 4.99 9.76 7.52 16.34 7.52 4.85 0 9.69-1.77 14.89-4.62.23-.12.45-.23.68-.35 2.19-1.1 4.37-2.23 6.46-3.5.49-.3 1.03-.61 1.5-.98 1.47-.87 1.11-1.12.49-2.95-.39-1.14-.76-2.7-2.06-5.36l.02-.01Zm-17.38-21.76c3.05-.42 6.31.79 9.36 2.35.51.39.94.68 1.33.87-5.61-2.86-12.72-3.39-18.44-.79 2.05-1.33 4.24-1.95 7.74-2.44l.01.01ZM443.67 72.67c-.4-2.2-1.15-4.33-2.37-6.22-1.49-2.32-3.58-4.19-5.91-5.64-6.17-3.81-13.75-5.11-20.83-6.01-3.23-.41-6.47-.69-9.72-.92l-1.39-.12c-.85-.07-1.52-.1-2.05-.1-1.08-.06-2.17-.12-3.25-.17-.08 0-.14.02-.19.05-.1.05-.18.14-.16.3.27 2.55-.01 5.12-.92 7.52-.15.38.4.56.62.28 1.32.59 2.68 1.05 4.08 1.37 0 2.78-.14 7.58-.33 12.91 0 0 0 .02-.01.03-.61 3.66-.79 7.42-1 11.12-.23 4.01-.43 8.03-.44 12.05 0 .64 0 1.28.03 1.93.02.31 0 .68.15.96.06.11.14.16.24.17-.2.17-.21.54.11.59 3.83.67 7.78.71 11.68.25 2.3-.19 4.87-.65 7.65-1.56 1.85-.54 3.67-1.18 5.43-1.91 7.2-3.02 14.31-8.07 17.35-15.53.76-1.86 1.17-3.8 1.31-5.75.3-1.93.28-3.82-.09-5.58l.01-.02Zm-19.32-15.42c5.74 1.41 11.94 3.68 15.65 8.55.25.32.47.65.69.99-2.3-2.82-5.68-5.69-12.88-8.23-2.16-.76-4.35-1.43-6.64-2.02 1.06.21 2.13.45 3.18.71Zm-25.82-3.04c.13 0 .27.01.4.02-.14.1-.26.23-.37.38 0-.13-.02-.26-.03-.4Zm34.82 22.17c-.75 3.09-3.55 5.66-5.88 7.58-3.35 2.76-7.21 5.03-11.28 6.54-1.33.49-2.71.9-4.12 1.15.06-1.38.08-2.76.07-4.13-.02-3.78-.16-7.56-.41-11.33-.09-1.37-.18-2.74-.37-4.1 0-.06-.03-.11-.06-.15.09-3.25.12-6.16.03-8.12 6.86 1.05 10.56 2.17 14.06 3.62 5.52 2.28 8.59 5.44 7.97 8.96l-.01-.02Zm-22 16.15c-.12 0-.23-.02-.34-.03l.34-.03v.06Zm-.69-.7c0-3.13.26-8.84.47-14.51.06 1.2.11 2.41.15 3.6.15 3.6.25 7.23.09 10.83-.24.03-.48.05-.71.07v.01Zm-12.33-30.94c.37.63 2.01 1.01 3.23 1.25v.15c-1.31-.31-2.59-.73-3.83-1.29.12-.36.23-.72.33-1.09.08.48.18.84.27.98Zm13.7 31.65v-.18c3.41-.56 6.71-2.02 9.69-3.68 2.31-1.28 4.59-2.78 6.63-4.53-4.69 4.53-11.61 8.24-16.33 8.38l.01.01Zm24.07-.75c-2.05 1.93-4.37 3.56-6.83 4.95 2.7-1.78 5.52-4.03 8.42-6.87.82-.82 1.56-1.69 2.23-2.59-1.08 1.65-2.38 3.16-3.81 4.51h-.01ZM187.16 92.14c-.79-2.47-2.1-7.12-3.1-6.87-.19-.01-2.09.77-4.08 1.54-3.06 1.18-5.91 2.13-10.09 2.82-2.74.42-5.87 1.01-10.61 1.06.04-3.34.05-6.01.05-7.99 7.97-.65 12.33-2.11 16.37-3.55 1.11-.39 2.69-1.01 2.63-1.8-.08-.35-.55-1.39-1.17-2.61-.47-1.16-.98-2.31-1.61-3.38-.42-.71-1.04-1.69-1.86-2.06-.11-.08-.22-.13-.29-.12-.02 0-.04 0-.07.01-.19-.04-.39-.05-.6-.01-.17.03-.24.15-.25.28-.04.02-.09.04-.14.05-4.33 1.48-8.85 2.33-13.24 3.61a499.1 499.1 0 0 0-.31-8.19c4.51-.99 8.88-1.38 13.11-1.82 3.68-.38 6.28.12 7.47.34.59.11.9.16 1.16.18h.1c-.1.37.44.66.62.28.02-.04.03-.08.05-.13.15.2.53.22.62-.1.17-.58.19-1.21.21-1.81v-.36c.03-.15.05-.3.07-.45.52-2.47.33-5.09-.64-7.44-.11-.27-.44-.28-.6-.14-.08-.21-.15-.42-.24-.62-.19-.41-.79-.05-.6.35.03.07.05.15.09.22-.98-.42-2.15-.54-3.17-.63-2.17-.19-4.37-.14-6.54 0-5.7.35-11.4 1.3-16.91 2.79-2.08.56-4.13 1.22-6.14 2-4.54 1.05-3.79 1.51-2.17 6.07.18.51.46 1.68.54 1.94.82 2.47 1.08 2.13 3.1 2.13s0 .05 0 .08h.52c-.48 2.66-.51 5.45-.62 8.13-.15 3.48-.22 6.96-.28 10.45 0 .41-.01.82-.02 1.23-.16.29-.33.57-.51.85-.05.38-.09.77-.14 1.18-.42 3.52-.59 6.48-.52 8.8v.34c.02.47.05.76.06.87.16 1.57-.26 3.47 1.35 3.79 1.61.32 3.5.55 4.85.55.11 0 .22-.02.33-.02 1.79.24 3.67.05 5.45-.12 2.85-.28 5.69-.7 8.51-1.19 3.03-.53 6.05-1.14 9.04-1.86 2.4-.58 4.82-1.19 7.13-2.06.51-.19 1.73-.57 2.46-1.14 1.81-.68 2.18-1 1.57-2.67-.23-.62-.48-1.49-.91-2.78l-.03-.02Zm-11.12-38.71c.89.05 1.93.08 2.89.3-.33 0-.68-.02-1.06-.03-8.28-.26-14.88.75-23.97 2.51 2.41-.64 4.85-1.16 7.28-1.59 4.87-.86 9.91-1.45 14.86-1.19Zm-26.53 22.13c.03 1.71.04 3.43 0 5.14-.04 1.27-.11 2.55-.24 3.82 0-.73.02-1.46.04-2.19.05-2.26.12-4.51.22-6.77h-.02Zm6.73 27.85c.2-.1.4-.21.58-.33 1.82-.17 3.82-.24 5.94-.34-.86.11-1.72.24-2.58.33-1.27.14-2.61.31-3.93.34h-.01ZM534.48 85.44c-3.52-8.38-7.07-16.75-10.5-25.17-.63-1.54-1.25-3.09-1.86-4.65-.31-.8-.65-1.6-.87-2.43-.04-.17-.17-.24-.31-.25.1-.2 0-.51-.29-.53-1.59-.08-3.18-.22-4.78-.25-1.96-.03-3.91.13-5.84.42-.31.05-.31.38-.13.56-.03.06-.05.14-.04.22.23 1.54.63 3.06 1.16 4.53.13.35.27.7.41 1.06l-2.68 6.18c-.11.03-.2.09-.25.22-.67 1.9-1.52 3.73-2.34 5.56a536.85 536.85 0 0 1-3.9 8.45c-2.64 5.64-5.34 11.25-7.91 16.93-.44.97-.88 1.94-1.29 2.93-.2.48-.47 1-.55 1.52v.05c-.02.12.02.26.16.34 1.19.73 2.41 1.41 3.66 2.05 1.2.62 2.45 1.25 3.76 1.61.43.12.62-.55.19-.67-1.13-.31-2.2-.83-3.24-1.36 1.09.36 2.1.69 2.75.93 2.82 1.01 2.38 1.1 4.3-3.75 2.1-1.09 4.34-1.96 6.53-2.79 4.35-1.64 8.8-3.03 13.27-4.29.82 2.01 1.77 3.97 2.72 5.92.35.83.62 1.45.79 1.82.22.42.45.8.69 1.15.17.33.33.67.5 1 .42.8.84 1.63 1.4 2.35.23.29.6 0 .55-.31 1.53-.02 3.06-.07 4.58-.27.92-.12 1.82-.32 2.71-.54 1.39-.27 3.85-1.11 3.74-1.42-.67-1.96-1.55-3.87-2.34-5.78-1.57-3.78-3.16-7.56-4.75-11.33v-.01Zm-11.65-26.16c1.54 3.81 3.12 7.6 4.7 11.4 2.94 7.05 5.91 14.09 8.87 21.13l-1.06-2.17c-2.71-5.51-5.2-11.19-7.41-16.87l-6.65-17.15c-.65-1.45-.55-2.19-.93-2.53.09 0 .18.01.28.02a.29.29 0 0 0-.04.26c.52 2.02 1.47 3.98 2.25 5.91h-.01Zm-6.58 13.58c.05-.15.09-.31.14-.46 1.41 3.92 2.88 7.9 4.39 11.87-3.22.52-6.38 1.25-9.46 2.14.55-1.22 1.05-2.46 1.53-3.7 1.24-3.24 2.37-6.53 3.39-9.85h.01Zm-.23-20c.36 0 .73.03 1.09.05-2.15.1-5.18.33-5.87.74-.24.15-.41.3-.53.45-.06-.29-.13-.58-.18-.88 1.82-.26 3.65-.39 5.49-.35v-.01Zm-.09 18.72c-.49 1.67-1.05 3.33-1.6 4.97-1.07 3.19-2.19 6.38-3.57 9.46-.09.21-.19.43-.29.65-.25.07-.5.14-.74.22 2.53-6.16 4.61-11.29 6.2-15.3Zm-6.34 25.16c4.97-2.38 9.37-4.1 14.02-5.27l.26.64c-4.8 1.35-9.63 2.8-14.28 4.63Zm20.17 6.76c.33.23.68.42 1.04.56h-.33c-.12 0-.21.06-.26.13-.15-.23-.31-.45-.45-.7v.01ZM226.57 91.75c-3.55-4.74-6.68-9.11-9.31-12.99 9.2-15.25 10.05-17.81 10.35-18.38.17-.34 1.09-2.27.64-2.53-1.13-.65-1.03-.65-2.97-1.71-1.19-.65-3.04-1.61-4.53-2.12-1.71-.59-1.24-.36-3 2.77-.06.1-.11.2-.17.3-.75 1.02-1.48 2.05-2.2 3.09-1.88 2.71-3.73 5.45-5.69 8.1-3.68-4.91-6.88-8.76-9.51-11.43-.15-.15-.3-.29-.46-.42-1.27-1.28-7.24 3.53-7.93 5.58-.09.09-.19.16-.28.25-.27.26.03.64.33.58.19.65.5 1.29.94 1.91 3.85 5.06 7.19 9.76 9.94 14-1.23 2.61-3.06 5-4.67 7.38l-2.28 3.33c-.5.66-.93 1.23-1.29 1.69-.67.93-2.09 2.61-2.3 3.87-.51.85-1.16 1.84-1.29 2.83-.06.44.61.63.67.19.01-.08.04-.15.06-.22 1.36 1.08 2.76 2.11 4.19 3.11 1.3.91 2.62 1.85 4.04 2.56.21.1.4 0 .48-.17.24.07.48.14.72.2.44.1.62-.57.19-.67-2.02-.48-3.77-1.57-5.23-3.02-.47-.46-.9-.96-1.32-1.46 1.74 1.35 4.2 2.89 5.89 4.14 1.39 1.03 2.85-2.27 4.22-4.2 1.86-2.64 3.96-5.86 5.52-8.29l10.39 14.51c.67.81 1.14 1.21 1.57 1.36-.05.24.12.51.41.4 1.53-.58 3.05-1.19 4.54-1.87 1.52-.69 3.06-1.45 4.36-2.5a.28.28 0 0 0 .12-.23c1.66-1.1.81-1.74-1.41-4.91-1.13-1.58-1.71-2.36-3.7-5.01l-.03-.02Zm2.41 6.54c.56 1.15 1.19 2.52 1.11 3.81-.06.04-.12.07-.17.1-.03-.88-.55-2.66-.94-3.91Zm-16.51-32.73c1.86-2.65 3.65-5.35 5.57-7.95.4-.55.81-1.13 1.26-1.66.19-.18.38-.33.56-.45.18.03.36.08.55.13l-8.05 10.11.12-.18h-.01ZM192.7 95.48c.79-1.37 1.66-2.69 2.54-4 1.19-1.79 2.4-3.56 3.61-5.33-.04.09-.09.17-.13.26-.1.22.03.41.2.49-2.47 3.42-4.89 6.73-6.4 9.28.21.24.4.48.63.75-.24.07-.4.36-.17.56.4.33.72.77 1.05 1.17.09.11.18.21.27.32-.84-.61-1.66-1.24-2.47-1.88.24-.57.58-1.11.87-1.61v-.01Zm7.46-10.32c.47-.81.98-1.59 1.49-2.37.31-.48.64-.95.96-1.43.26-.29.52-.56.75-.79-.99 1.48-2.09 3.03-3.2 4.59Zm10.03-16.22s-.03-.05-.05-.07c.22-.29.43-.59.64-.89-.2.32-.4.65-.58.96h-.01ZM371.54 87.96c-.01-.08-.01-.16-.03-.23-.06-.38-.58-.29-.66.03-.3-.05-.6-.08-.81-.11-1.14-.15-2.29-.19-3.44-.2 1.04-.09 2.09-.18 3.14-.23.45-.02.45-.72 0-.7-6.57.35-13.14 1.23-19.65 2.11-1.53.21-3.05.42-4.57.68-.01 0-.02.01-.04.01-.04-3.33-.13-6.66-.24-9.99-.19-5.7-.4-11.41-.88-17.1-.13-1.51-.23-3.07-.49-4.58 0-.25 0-.48-.02-.68-.06-1.19-.04-2.61-.68-2.78-.16-.07-.72-.16-1.5-.24.22-.17.16-.62-.2-.63-1.19-.04-2.39.09-3.57.23-1.2.14-2.41.32-3.59.6-.16-.1-.41-.06-.5.12-.06.02-.13.03-.19.05-.35.1-.29.55-.03.66-.26.6-.19 2.27-.21 3-.02.66-.66 33.73-.9 40.3-.03.65.06 1.12.04 1.45-.16 3.05.87 4.96 6.34 3.93 1.09-.08 2.75-.77 5.36-1.43 4.13-1.04 5.78-1.52 6.2-1.65 6.43-1.69 6.78-1.97 11.72-2.43.55-.05 4.8-.38 6.03-.3.64.04 1.19.07 1.65.1.09 0 .16-.03.24-.05.1.27.56.33.66-.02.39-1.32.61-2.71.78-4.08.2-1.61.29-3.24.15-4.86.24.03.52-.23.38-.53-.09-.2-.27-.33-.49-.43v-.02Zm-.63.56c.07.57.11 1.14.11 1.71-.21-.99-.53-1.71-.95-1.87.22.03.44.06.65.11.06.01.12.04.19.05Zm-25.41 1.73c1.54-.36 3.1-.64 4.66-.89-1.61.37-3.18.77-4.66 1.2v-.31Zm-.86-7.37c-.07-1.37-.16-2.75-.25-4.12-.21-3.13-.45-6.27-.79-9.4.02-2.25.08-4.31.13-6.11.16 2.08.29 4.16.4 6.24.23 4.46.38 8.93.5 13.39h.01Zm-.94-4c.16 2.41.29 4.83.39 7.24.06 1.6.14 3.22.09 4.83-.15.05-.32.09-.47.14V78.88h-.01ZM483.72 92.83c-3.05-2.28-6.22-4.4-9.38-6.51 8.86-6.49 13.49-12.95 13.73-19.23.04-.76 0-1.5-.13-2.2-.67-3.82-3.5-6.68-8.39-8.48.13.04.27.08.4.13 3.92 1.39 7.74 4.23 8.5 8.56.34 1.95-.05 3.96-.98 5.69-.21.4.39.75.6.35 1.86-3.46 1.46-7.55-.97-10.63-3.53-4.47-9.76-5.88-15.16-6.16-2.32-.12-4.64-.04-6.95.19-6 .32-12.71 1.68-17.63 3.21-.37.11-.67.23-.92.35-.2-.17-.62.02-.57.37v.03c-.64.68-.18 1.64.48 3.21.38.91.67 1.89 1.15 2.58.32.76.68 1.51 1.13 2.19.14.21.38.19.53.07.19-.02.38-.05.57-.08v1.57c-.06.06-.1.13-.11.23-.27 4.18-.34 8.38-.48 12.57l-.3 9.03c-.24 3.91-.44 6.77-.46 7.26-.05.88-.11 1.95.07 2.81-.01.22-.02.43-.04.65 0 .11-.02.23-.03.35 0 .05-.03.27-.01.16-.05.4.5.59.64.28.05.04.12.08.2.08 1.75.13 3.5.28 5.25.3 1.69.02 3.38-.12 5.06-.32.08.23.36.39.55.15.06-.08.11-.17.16-.26.18-.09.24-.32.18-.48.05-.2.1-.4.13-.6.16-.86.25-1.74.33-2.62.11-1.17.17-2.34.23-3.51.15-.01.32-.03.52-.04.36-.03 1.73-.15 2.06-.15.39 0 .7-.02.95-.04 1.76 1.11 3.45 2.35 5.14 3.55 2.83 2.01 5.64 4.04 8.47 6.04 1.42 1 2.85 2 4.29 2.97.1.06.19.07.27.04.08 0 .17-.02.25-.1 1.61-1.56 3.15-3.18 4.6-4.88.75-.88 1.49-1.78 2.15-2.73.01.01.03.02.04.03.34.3.83-.2.49-.49-2.16-1.9-4.34-3.76-6.64-5.48l.03-.01Zm-6.38-3.65a55.72 55.72 0 0 0-4-2.13c.14-.1.26-.19.4-.29 1.2.81 2.4 1.61 3.6 2.42Zm-20.1 11.78c.67-.37 1.23-.91 1.67-1.6-.11.5-.24 1-.38 1.49-.43.04-.86.08-1.29.11Zm2.38-37.24c1.34-.31 2.56-.52 3.71-.69-1.03.19-2.04.41-3.04.65-.14-.07-.34-.02-.45.11-.07.02-.15.04-.22.05v-.13.01Zm.04.84c.07-.02.14-.03.2-.05.34 1.66.41 3.41.5 5.09.17 2.9.24 5.81.28 8.71l.03 3.17c-.17.07-.34.14-.51.2-.06-4.96-.21-10.58-.51-17.12h.01Zm16.04 5.62c-1.16 2.25-3.06 4.1-5.02 5.66-2.8 2.23-5.99 3.97-9.3 5.35-.01-3.56-.09-7.12-.27-10.67-.1-2.04-.16-4.16-.57-6.18 3.3-.78 6.72-1.36 10.1-1.1 1.85.14 4.23.59 5.32 2.29.92 1.43.46 3.24-.26 4.65Zm.85-.18c.6-1.37.9-2.92.28-4.32-.67-1.52-2.2-2.32-3.76-2.74.46.1.89.21 1.29.37 1.74.67 2.69 1.88 2.93 3.21.2 1.13-.05 2.25-.74 3.47V70Zm-27.47-4.14c-.12-.19-.23-.38-.34-.57.74.42.85.36.99.41v.08c-.22.03-.43.06-.65.08Zm11.21 30.46c-.08 1.08-.16 2.17-.33 3.24-.05.35-.11.69-.2 1.03 0 .04-.02.07-.03.11-.15.02-.3.04-.45.05.45-1.64.76-3.36.79-5.07.03-.29.08-.57.1-.89-.03-.31-.03-.47.24-.57-.04.69-.07 1.39-.12 2.08v.02Zm5.6-2.47c.48.11.92.52 2.49 1.72-.46-.32-.92-.65-1.38-.97-.37-.25-.73-.5-1.1-.75h-.01Zm21.23 7.24a70.76 70.76 0 0 1-4.37 4.63c-.14-.09-.27-.19-.4-.28.19-.09.37-.24.55-.47.87-1.14 5.43-5.51 5.49-7.45.31.26.62.53.92.79-.67.97-1.42 1.88-2.19 2.77v.01Z",fill:"currentColor",transform:"translate(-144.023 -51.76)"})]}),BhA=({style:A,size:e="small",withText:t})=>(0,Hg.jsxs)("div",{className:`ExcalidrawLogo is-${e}`,style:A,children:[(0,Hg.jsx)(e8A,{}),t&&(0,Hg.jsx)(t8A,{})]});var Kt=G(_(),1),QT=({icon:A,shortcut:e,children:t})=>{let o=Je();return(0,Kt.jsxs)(Kt.Fragment,{children:[(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__icon",children:A}),(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__text",children:t}),e&&o.formFactor!=="phone"&&(0,Kt.jsx)("div",{className:"welcome-screen-menu-item__shortcut",children:e})]})};QT.displayName="WelcomeScreenMenuItemContent";var uD=({onSelect:A,children:e,icon:t,shortcut:o,className:i="",...a})=>(0,Kt.jsx)("button",{...a,type:"button",className:`welcome-screen-menu-item ${i}`,onClick:A,children:(0,Kt.jsx)(QT,{icon:t,shortcut:o,children:e})});uD.displayName="WelcomeScreenMenuItem";var dhA=({children:A,href:e,icon:t,shortcut:o,className:i="",...a})=>(0,Kt.jsx)("a",{...a,className:`welcome-screen-menu-item ${i}`,href:e,target:"_blank",rel:"noopener",children:(0,Kt.jsx)(QT,{icon:t,shortcut:o,children:A})});dhA.displayName="WelcomeScreenMenuItemLink";var Kg=({children:A})=>{let{WelcomeScreenCenterTunnel:e}=Mt();return(0,Kt.jsx)(e.In,{children:(0,Kt.jsx)("div",{className:"welcome-screen-center",children:A||(0,Kt.jsxs)(Kt.Fragment,{children:[(0,Kt.jsx)(hT,{}),(0,Kt.jsx)(uT,{children:L("welcomeScreen.defaults.center_heading")}),(0,Kt.jsxs)(pT,{children:[(0,Kt.jsx)(wT,{}),(0,Kt.jsx)(mT,{})]})]})})})};Kg.displayName="Center";var hT=({children:A})=>(0,Kt.jsx)("div",{className:"welcome-screen-center__logo excalifont welcome-screen-decor",children:A||(0,Kt.jsx)(BhA,{withText:!0})});hT.displayName="Logo";var uT=({children:A,color:e,message:t})=>e&&t?(0,Kt.jsxs)("div",{className:"welcome-screen-center__heading welcome-screen-decor excalifont",style:{color:e,marginTop:"-1.5rem"},children:[A,(0,Kt.jsx)("div",{style:{fontSize:"0.7rem"},children:t})]}):(0,Kt.jsx)("div",{className:"welcome-screen-center__heading welcome-screen-decor excalifont",children:A});uT.displayName="Heading";var pT=({children:A})=>(0,Kt.jsx)("div",{className:"welcome-screen-menu",children:A});pT.displayName="Menu";var mT=()=>{let A=Wt();return(0,Kt.jsx)(uD,{onSelect:()=>A.executeAction(oE),shortcut:"?",icon:Rh,children:L("helpDialog.title")})};mT.displayName="MenuItemHelp";var wT=()=>{let A=Ee(),e=Wt();return A.viewModeEnabled?null:(0,Kt.jsx)(uD,{onSelect:()=>e.executeAction(hu),shortcut:Vt("loadScene"),icon:vh,children:L("buttons.load")})};wT.displayName="MenuItemLoadScene";var EhA=({onSelect:A})=>{let{t:e}=Bt();return(0,Kt.jsx)(uD,{shortcut:null,onSelect:A,icon:Xk,children:e("labels.liveCollaboration")})};EhA.displayName="MenuItemLiveCollaborationTrigger";Kg.Logo=hT;Kg.Heading=uT;Kg.Menu=pT;Kg.MenuItem=uD;Kg.MenuItemLink=dhA;Kg.MenuItemHelp=mT;Kg.MenuItemLoadScene=wT;Kg.MenuItemLiveCollaborationTrigger=EhA;Q();var js=G(_(),1),WU=({children:A})=>{let{WelcomeScreenMenuHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu",children:[qeA,(0,js.jsx)("div",{className:"welcome-screen-decor-hint__label",children:A||L("welcomeScreen.defaults.menuHint")})]})})};WU.displayName="MenuHint";var _U=({children:A})=>{let{WelcomeScreenToolbarHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar",children:[(0,js.jsx)("div",{className:"welcome-screen-decor-hint__label",children:A||L("welcomeScreen.defaults.toolbarHint")}),VeA]})})};_U.displayName="ToolbarHint";var zU=({children:A})=>{let{WelcomeScreenHelpHintTunnel:e}=Mt();return(0,js.jsx)(e.In,{children:(0,js.jsxs)("div",{className:"excalifont welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help",children:[(0,js.jsx)("div",{children:A||L("welcomeScreen.defaults.helpHint")}),jeA]})})};zU.displayName="HelpHint";var Vs=G(_(),1),OU=A=>(0,Vs.jsx)(Vs.Fragment,{children:A.children||(0,Vs.jsxs)(Vs.Fragment,{children:[(0,Vs.jsx)(Kg,{}),(0,Vs.jsx)(WU,{}),(0,Vs.jsx)(_U,{}),(0,Vs.jsx)(zU,{})]})});OU.displayName="WelcomeScreen";OU.Center=Kg;OU.Hints={MenuHint:WU,ToolbarHint:_U,HelpHint:zU};var QhA=OU;Q();var o8A=()=>{Array.prototype.at||Object.defineProperty(Array.prototype,"at",{value:function(A){if(A=Math.trunc(A)||0,A<0&&(A+=this.length),!(A<0||A>=this.length))return this[A]},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findLast||Object.defineProperty(Array.prototype,"findLast",{value:function(A,e){return this.slice().reverse().find((t,o)=>A.call(e,t,this.length-o-1,this))},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(A,e){for(let t=0;t<this.length;t++)if(A.call(e,this[t],t,this))return t;return-1},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.findLastIndex||Object.defineProperty(Array.prototype,"findLastIndex",{value:function(A,e){let t=this.slice().reverse().findIndex((o,i)=>A.call(e,o,this.length-i-1,this));return t===-1?-1:this.length-t-1},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.toReversed||Object.defineProperty(Array.prototype,"toReversed",{value:function(){return this.slice().reverse()},writable:!0,enumerable:!1,configurable:!0}),Array.prototype.toSorted||Object.defineProperty(Array.prototype,"toSorted",{value:function(A){return this.slice().sort(A)},writable:!0,enumerable:!1,configurable:!0}),Element.prototype.replaceChildren||(Element.prototype.replaceChildren=function(...A){this.innerHTML="",this.append(...A)})},hhA=o8A;O();O();O();kh();Q();var uhA=G(yQ(),1);X();O();var i8A=(A,e,t)=>!!(e&&(e.id===A.editingTextElement?.id||e.id===A.resizingElement?.id||e.id===A.newElement?.id||e.version>t.version||e.version===t.version&&e.versionNonce<=t.versionNonce)),a8A=(0,uhA.default)((A,e,t)=>{if($e()||gt()||window?.DEBUG_FRACTIONAL_INDICES){let o=Ya(A.map(i=>({...i})));qm(o,{shouldThrow:gt()||$e(),includeBoundTextValidation:!0,reconciliationContext:{localElements:e,remoteElements:t}})}},1e3*60,{leading:!0,trailing:!1}),phA=(A,e,t)=>{let o=QA(A),i=[],a=new Set;for(let n of e)if(!a.has(n.id)){let g=o.get(n.id),s=i8A(t,g,n);g&&s?(i.push(g),a.add(g.id)):(i.push(n),a.add(n.id))}for(let n of A)a.has(n.id)||(i.push(n),a.add(n.id));let r=OQ(i);return a8A(r,A,e),Ya(r),r};Pt();Ag();Bl();ed();X();X();Yi();Hk();_r();eC();O();Yi();bd();Ka();O();X();O();O();Yv();Q();var qU=G(_(),1),fT=({children:A,icon:e})=>{let{t}=Bt(),{TTDDialogTriggerTunnel:o}=Mt(),i=Ye();return(0,qU.jsx)(o.In,{children:(0,qU.jsx)(ae.Item,{onSelect:()=>{ye("ai","dialog open","ttd"),i({openDialog:{name:"ttd",tab:"text-to-diagram"}})},icon:e??poA,badge:(0,qU.jsx)(ae.Item.Badge,{children:"AI"}),children:A??t("labels.textToDiagram")})})};fT.displayName="TTDDialogTrigger";Q();kl();function r8A(A){let e=A.get("X-Ratelimit-Limit"),t=A.get("X-Ratelimit-Remaining");return{rateLimit:e?parseInt(e,10):void 0,rateLimitRemaining:t?parseInt(t,10):void 0}}async function*n8A(A){let e=new TextDecoder,t="";try{for(;;){let{done:o,value:i}=await A.read();if(o)break;t+=e.decode(i,{stream:!0});let a=t.split(`
|
|
578
578
|
`);t=a.pop()||"";for(let r of a){let n=r.trim();n&&n.startsWith("data: ")&&(yield n.slice(6))}}}finally{A.releaseLock()}}async function mhA(A){let{url:e,messages:t,onChunk:o,onStreamCreated:i,extractRateLimits:a=!0,signal:r}=A;try{let n="",g={},s=null,l=await fetch(e,{method:"POST",headers:{Accept:"text/event-stream","Content-Type":"application/json"},body:JSON.stringify({messages:t}),signal:r});if(a&&(g=r8A(l.headers)),!l.ok){if(l.status===429)return{...g,error:new eg({message:"Rate limit exceeded",status:429})};let c=await l.text();throw new eg({message:c||"Generation failed...",status:l.status})}let I=l.body?.getReader();if(!I)throw new eg({message:"Couldn't get reader from response body",status:500});i?.();try{for await(let c of n8A(I)){if(c==="[DONE]")break;try{let C=JSON.parse(c);if(C===null)break;switch(C.type){case"content":{let B=C.delta;B&&(n+=B,o?.(B));break}case"error":s=new eg({message:C.error.message,status:500});break;case"done":break}}catch(C){console.warn("Failed to parse SSE data:",c,C)}}}catch(c){c.name==="AbortError"?s=new eg({message:"Request aborted",status:499}):s=new eg({message:c.message||"Streaming error",status:500})}return s?{...g,error:s}:n?{generatedResponse:n,error:null,...g}:{...g,error:new eg({message:"Generation failed...",status:l.status})}}catch(n){return n.name==="AbortError"?{error:new eg({message:"Request aborted",status:499})}:{error:new eg({message:n.message||"Request failed",status:500})}}}Ch();O();O();Q();var whA=G(nA(),1);var fhA=A=>{let e=Rt();return(0,whA.useLayoutEffect)(()=>{e.setPlugins({diagramToCode:{generate:A.generate}})},[e,A.generate]),null};Ka();O();dN();O();var Fp=G(_(),1);hhA();var g8A=({children:A})=>{let[e,t]=(0,Jg.useState)(null);return(0,Fp.jsx)(zE.Provider,{value:e,children:(0,Fp.jsx)(TU.Provider,{value:t,children:A})})},s8A=A=>{let{onExport:e,className:t,onChange:o,onThemeChange:i,onIncrement:a,initialData:r,initialState:n,onExcalidrawAPI:g,onMount:s,onUnmount:l,onInitialize:I,isCollaborating:c=!1,onPointerUpdate:C,renderTopLeftUI:B,renderTopRightUI:d,langCode:E=Cs.code,viewModeEnabled:h,interaction:p,ui:u,activeTool:m,zenModeEnabled:w,gridModeEnabled:b,initState:D,libraryReturnUrl:S,theme:U,name:v,renderCustomStats:x,onPaste:R,onDrop:W,detectScroll:q=!0,handleKeyboardGlobally:T=!1,onLibraryChange:F,autoFocus:K=!1,onBeforeTextEdit:N,onBeforeTextSubmit:J,generateIdForFile:H,onLinkOpen:j,onLinkHover:AA,onViewModeChange:aA,generateLinkForSelection:lA,onPointerDown:uA,onPointerUp:OA,onScrollChange:xA,onUserFollow:pe,userToFollow:he,onDuplicate:ce,children:oe,validateEmbeddable:me,renderEmbeddable:We,renderWebview:Do,renderEmbeddableMenu:$t,renderMermaid:ho,onContextMenu:oI,aiEnabled:Qn,showDeprecatedFonts:Ba,insertLinkAction:iI,renderScrollbars:fc,viewportStatusFrame:pD,currentUserControls:jU,imageOptions:OE}=A,aI=A.UIOptions?.canvasActions,bB={...A.UIOptions,canvasActions:{...KF.canvasActions,...aI},tools:{image:A.UIOptions?.tools?.image??!0}};aI?.export&&(bB.canvasActions.export.saveFileToDisk=aI.export?.saveFileToDisk??KF.canvasActions.export.saveFileToDisk),bB.canvasActions.toggleTheme===null&&(U==null||i)&&(bB.canvasActions.toggleTheme=!0);let bc={maxFileSizeBytes:OE?.maxFileSizeBytes??JB.maxFileSizeBytes,maxWidthOrHeight:OE?.maxWidthOrHeight??JB.maxWidthOrHeight},Rp=(0,Jg.useContext)(TU),da=(0,Jg.useRef)(g);da.current=g;let qE=(0,Jg.useCallback)(jE=>{Rp?.(jE),da.current?.(jE)},[Rp]),vp=typeof p=="object"&&p!==null&&p.enabled?.browserZoom===!0&&p.enabled?.navigation!==!0;return(0,Jg.useEffect)(()=>{if((async()=>{await Promise.resolve().then(()=>G(bhA(),1))})(),vp)return;let mD=VE=>{typeof VE.scale=="number"&&VE.scale!==1&&VE.preventDefault()};return document.addEventListener("touchmove",mD,{passive:!1}),()=>{document.removeEventListener("touchmove",mD)}},[vp]),(0,Fp.jsx)(SW,{store:wo,children:(0,Fp.jsx)(ghA,{langCode:E,theme:U,children:(0,Fp.jsx)(nhA,{onExport:e,className:t,onChange:o,onThemeChange:i,onIncrement:a,initialData:r,initialState:n,onExcalidrawAPI:qE,onMount:s,onUnmount:l,onInitialize:I,isCollaborating:c,onPointerUpdate:C,renderTopLeftUI:B,renderTopRightUI:d,langCode:E,viewModeEnabled:h,interaction:p,ui:u,activeTool:m,zenModeEnabled:w,gridModeEnabled:b,initState:D,libraryReturnUrl:S,theme:U,name:v,renderCustomStats:x,UIOptions:bB,onPaste:R,onDrop:W,detectScroll:q,handleKeyboardGlobally:T,onLibraryChange:F,autoFocus:K,onBeforeTextEdit:N,onBeforeTextSubmit:J,generateIdForFile:H,onLinkOpen:j,onLinkHover:AA,onViewModeChange:aA,generateLinkForSelection:lA,onPointerDown:uA,onPointerUp:OA,onScrollChange:xA,onUserFollow:pe,userToFollow:he,onDuplicate:ce,validateEmbeddable:me,renderEmbeddable:We,renderWebview:Do,renderEmbeddableMenu:$t,renderMermaid:ho,onContextMenu:oI,aiEnabled:Qn!==!1,showDeprecatedFonts:Ba,insertLinkAction:iI,renderScrollbars:fc,viewportStatusFrame:pD,currentUserControls:jU,imageOptions:bc,children:oe})})})},l8A=(A,e)=>{if(A.children!==e.children)return!1;let{initialData:t,UIOptions:o={},imageOptions:i,interaction:a,ui:r,activeTool:n,...g}=A,{initialData:s,UIOptions:l={},imageOptions:I,interaction:c,ui:C,activeTool:B,...d}=e;if(!(n===B||n?.type===B?.type&&(n?.type==="custom"?n.customType:null)===(B?.type==="custom"?B.customType:null))||!(a===c||typeof a=="object"&&a!==null&&typeof c=="object"&&c!==null&&!!a.enabled?.links==!!c.enabled?.links&&!!a.enabled?.embeds==!!c.enabled?.embeds&&!!a.enabled?.interactiveContent==!!c.enabled?.interactiveContent&&!!a.enabled?.navigation==!!c.enabled?.navigation&&!!a.enabled?.browserZoom==!!c.enabled?.browserZoom&&!!a.enabled?.tools?.laser==!!c.enabled?.tools?.laser&&!!a.enabled?.tools?.custom==!!c.enabled?.tools?.custom)||!(r===C||typeof r=="object"&&r!==null&&typeof C=="object"&&C!==null&&!!r.enabled?.zoom==!!C.enabled?.zoom&&!!r.enabled?.scrollBackToContent==!!C.enabled?.scrollBackToContent))return!1;let u=Object.keys(o),m=Object.keys(l);if(u.length!==m.length)return!1;let w=u.every(D=>D==="getFormFactor"?!0:D==="canvasActions"?Object.keys(o.canvasActions).every(U=>U==="export"&&o?.canvasActions?.export&&l?.canvasActions?.export?o.canvasActions.export.saveFileToDisk===l.canvasActions.export.saveFileToDisk:o?.canvasActions?.[U]===l?.canvasActions?.[U]):o[D]===l[D]),b=(i?.maxWidthOrHeight??JB.maxWidthOrHeight)===(I?.maxWidthOrHeight??JB.maxWidthOrHeight)&&(i?.maxFileSizeBytes??JB.maxFileSizeBytes)===(I?.maxFileSizeBytes??JB.maxFileSizeBytes);return w&&b&&Tt(g,d)},DhA=Jg.default.memo(s8A,l8A);DhA.displayName="Excalidraw";function I8A(A){return su(A,!1)}return LpA(c8A);})();
|
|
579
579
|
self.ExcalidrawLib = ExcalidrawLib;
|
|
580
|
+
|
|
581
|
+
;globalThis.__forsionPenPatch=1;
|