@excalidraw/excalidraw 0.17.1-1d71f84 → 0.17.1-1ed53b1
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/CHANGELOG.md +14 -2
- package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js → blockDiagram-91b80b7a-H47FTXHA.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js → c4Diagram-b2a90758-NNJK6GKC.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js → chunk-4KQVEBHW.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js → chunk-53YI56GV.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js → chunk-A2WCJI4I.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js → chunk-EFLPX7NE.js} +6 -6
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-AK7SWNLN.js → chunk-JKPJV7MZ.js} +6 -4
- package/dist/browser/dev/excalidraw-assets-dev/chunk-JKPJV7MZ.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js → chunk-JYIQCNWV.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js → chunk-LVIQQW6F.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-RWZVJAQU.js → chunk-OKAZAA6U.js} +4494 -2647
- package/dist/browser/dev/excalidraw-assets-dev/chunk-OKAZAA6U.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js → chunk-PXLO3FOU.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js → chunk-TO2AW5PW.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js → chunk-VURILHLY.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js → chunk-ZAYGSUHF.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{chunk-Z3PH3V2B.js → chunk-ZQR5ML6Y.js} +26 -26
- package/dist/browser/dev/excalidraw-assets-dev/chunk-ZQR5ML6Y.js.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js → classDiagram-30eddba6-CUYIJICN.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js → classDiagram-v2-f2df5561-K6WW6K73.js} +8 -8
- package/dist/browser/dev/excalidraw-assets-dev/{dist-Z46EOVOL.js → dist-ITJNUBZF.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js → en-BF4XUPIZ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js → erDiagram-47591fe2-XGAD7EEP.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js → flowDiagram-5540d9b9-B6EOVNNO.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js → flowDiagram-v2-3b53844e-NUG24FJH.js} +9 -9
- package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js → flowchart-elk-definition-5fe447d6-25Y7PCBL.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js → ganttDiagram-9a3bba1f-GNL6ZDTC.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js → gitGraphDiagram-96e6b4ee-HNW52NVO.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js → image-LVS32KQQ.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{image-OFRRV5MB.css → image-O66MQ7WQ.css} +1 -1
- package/dist/browser/dev/excalidraw-assets-dev/image-O66MQ7WQ.css.map +7 -0
- package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js → infoDiagram-bcd20f53-FWEUVFLT.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js → journeyDiagram-4fe6b3dc-RZIUI7UG.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js → mindmap-definition-f354de21-GBVN45GU.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js → pieDiagram-79897490-ECENNII6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js → quadrantDiagram-62f64e94-ZMEOFVNL.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js → requirementDiagram-05bf5f74-FHZSFHCR.js} +4 -4
- package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js → sankeyDiagram-97764748-VDKIKTA6.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js → sequenceDiagram-acc0e65c-6JUSPVKX.js} +3 -3
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js → stateDiagram-0ff1cf1a-L3AKWENF.js} +5 -5
- package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js → stateDiagram-v2-9a9d610d-NU3GGMCH.js} +8 -8
- package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js → timeline-definition-fea2a41d-JGP7XCHW.js} +2 -2
- package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js → xychartDiagram-ab372869-HLFHHF2I.js} +3 -3
- package/dist/browser/dev/index.css +72 -28
- package/dist/browser/dev/index.css.map +3 -3
- package/dist/browser/dev/index.js +2064 -1830
- package/dist/browser/dev/index.js.map +4 -4
- package/dist/browser/prod/excalidraw-assets/{blockDiagram-91b80b7a-ONPS22AM.js → blockDiagram-91b80b7a-FVCRVGN5.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{c4Diagram-b2a90758-XMIQY7ZT.js → c4Diagram-b2a90758-56CXO7GA.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-GCHQBOKV.js → chunk-635MQ3CK.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-P5M3G2RP.js → chunk-AIKXYJX3.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-E2YLWFZX.js → chunk-CR7VMNWC.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-WEYK4A2L.js → chunk-FFF2CSVG.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-R3HAIP6R.js → chunk-G4WDCSPE.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-HFOXJM22.js → chunk-HKZSHFLX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-XIMFFJTE.js → chunk-IKCDYWMW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-AHLLBBVJ.js → chunk-L5DS24G6.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-CQJF3C6G.js → chunk-MUNOKHUD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{chunk-CTYINSWT.js → chunk-O4AI3NNG.js} +2 -2
- package/dist/browser/prod/excalidraw-assets/{chunk-NI6SYCUG.js → chunk-QOQYOOQ4.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/chunk-SXBDZOS3.js +55 -0
- package/dist/browser/prod/excalidraw-assets/{chunk-I2PZFXTK.js → chunk-ZTIWFPBM.js} +21 -21
- package/dist/browser/prod/excalidraw-assets/{classDiagram-30eddba6-IEJXXCVX.js → classDiagram-30eddba6-BCUTAUMD.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{classDiagram-v2-f2df5561-7LZDSWOS.js → classDiagram-v2-f2df5561-6SOXSGQ2.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{dist-PIPZXALV.js → dist-54276HPL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{en-LROPV2RN.js → en-N7CLNF6C.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{erDiagram-47591fe2-E5V666CF.js → erDiagram-47591fe2-RE6HB7RM.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-5540d9b9-GMBRCYVF.js → flowDiagram-5540d9b9-ZNJZBERW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowDiagram-v2-3b53844e-Z4HUWP6B.js → flowDiagram-v2-3b53844e-LY44JLQJ.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{flowchart-elk-definition-5fe447d6-5ZCYTX5N.js → flowchart-elk-definition-5fe447d6-TMTJ6Z7O.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{ganttDiagram-9a3bba1f-WM32OMT5.js → ganttDiagram-9a3bba1f-5O6EA6LX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{gitGraphDiagram-96e6b4ee-CAKZ2U6E.js → gitGraphDiagram-96e6b4ee-UHYNM5DI.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/image-VAGBVQ3G.js +1 -0
- package/dist/browser/prod/excalidraw-assets/{infoDiagram-bcd20f53-MUIKXGC4.js → infoDiagram-bcd20f53-BP77NQEH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{journeyDiagram-4fe6b3dc-NYRV4HK2.js → journeyDiagram-4fe6b3dc-XMGKCMES.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{mindmap-definition-f354de21-MY55DRSM.js → mindmap-definition-f354de21-ZQRRBRWF.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{pieDiagram-79897490-47L6J6L2.js → pieDiagram-79897490-IGXEC2KX.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{quadrantDiagram-62f64e94-DF5C2GDT.js → quadrantDiagram-62f64e94-WTHHDYJL.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{requirementDiagram-05bf5f74-C4IMUBDN.js → requirementDiagram-05bf5f74-MV4OFRVW.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sankeyDiagram-97764748-YHW7EUST.js → sankeyDiagram-97764748-ZGYUHEJT.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{sequenceDiagram-acc0e65c-H3XEHT32.js → sequenceDiagram-acc0e65c-IBSENK6W.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-0ff1cf1a-Z5WB6Q3P.js → stateDiagram-0ff1cf1a-DB73XNZH.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{stateDiagram-v2-9a9d610d-T7OZETQC.js → stateDiagram-v2-9a9d610d-2OOBUPNR.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{timeline-definition-fea2a41d-VVC22BWF.js → timeline-definition-fea2a41d-P3NQQVDU.js} +1 -1
- package/dist/browser/prod/excalidraw-assets/{xychartDiagram-ab372869-JAXODQF7.js → xychartDiagram-ab372869-HI3XLK3Y.js} +1 -1
- package/dist/browser/prod/index.css +1 -1
- package/dist/browser/prod/index.js +24 -24
- package/dist/dev/{en-II4GK66F.json → en-UQDDYCH7.json} +5 -3
- package/dist/dev/index.css +72 -28
- package/dist/dev/index.css.map +3 -3
- package/dist/dev/index.js +5352 -3354
- package/dist/dev/index.js.map +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.d.ts +4 -4
- package/dist/excalidraw/actions/actionAddToLibrary.js +4 -3
- package/dist/excalidraw/actions/actionAlign.d.ts +22 -22
- package/dist/excalidraw/actions/actionAlign.js +7 -6
- package/dist/excalidraw/actions/actionBoundText.d.ts +10 -10
- package/dist/excalidraw/actions/actionBoundText.js +8 -4
- package/dist/excalidraw/actions/actionCanvas.d.ts +52 -52
- package/dist/excalidraw/actions/actionCanvas.js +19 -14
- package/dist/excalidraw/actions/actionClipboard.d.ts +24 -24
- package/dist/excalidraw/actions/actionClipboard.js +14 -13
- package/dist/excalidraw/actions/actionDeleteSelected.d.ts +10 -10
- package/dist/excalidraw/actions/actionDeleteSelected.js +6 -3
- package/dist/excalidraw/actions/actionDistribute.d.ts +10 -10
- package/dist/excalidraw/actions/actionDistribute.js +3 -2
- package/dist/excalidraw/actions/actionDuplicateSelection.d.ts +7 -8
- package/dist/excalidraw/actions/actionDuplicateSelection.js +7 -3
- package/dist/excalidraw/actions/actionElementLock.d.ts +9 -9
- package/dist/excalidraw/actions/actionElementLock.js +3 -2
- package/dist/excalidraw/actions/actionExport.d.ts +33 -33
- package/dist/excalidraw/actions/actionExport.js +15 -11
- package/dist/excalidraw/actions/actionFinalize.d.ts +9 -9
- package/dist/excalidraw/actions/actionFinalize.js +9 -5
- package/dist/excalidraw/actions/actionFlip.d.ts +10 -10
- package/dist/excalidraw/actions/actionFlip.js +12 -12
- package/dist/excalidraw/actions/actionFrame.d.ts +16 -171
- package/dist/excalidraw/actions/actionFrame.js +7 -6
- package/dist/excalidraw/actions/actionGroup.d.ts +12 -322
- package/dist/excalidraw/actions/actionGroup.js +9 -11
- package/dist/excalidraw/actions/actionHistory.d.ts +4 -3
- package/dist/excalidraw/actions/actionHistory.js +27 -28
- package/dist/excalidraw/actions/actionLinearEditor.d.ts +6 -4
- package/dist/excalidraw/actions/actionLinearEditor.js +21 -5
- package/dist/excalidraw/actions/actionLink.d.ts +5 -5
- package/dist/excalidraw/actions/actionLink.js +2 -1
- package/dist/excalidraw/actions/actionMenu.d.ts +8 -8
- package/dist/excalidraw/actions/actionMenu.js +4 -3
- package/dist/excalidraw/actions/actionNavigate.d.ts +4 -4
- package/dist/excalidraw/actions/actionNavigate.js +3 -2
- package/dist/excalidraw/actions/actionProperties.d.ts +34 -34
- package/dist/excalidraw/actions/actionProperties.js +18 -13
- package/dist/excalidraw/actions/actionSelectAll.d.ts +5 -5
- package/dist/excalidraw/actions/actionSelectAll.js +2 -1
- package/dist/excalidraw/actions/actionStyles.d.ts +9 -12
- package/dist/excalidraw/actions/actionStyles.js +4 -3
- package/dist/excalidraw/actions/actionToggleGridMode.d.ts +7 -5
- package/dist/excalidraw/actions/actionToggleGridMode.js +6 -2
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleObjectsSnapMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleStats.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleStats.js +2 -1
- package/dist/excalidraw/actions/actionToggleViewMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleViewMode.js +2 -1
- package/dist/excalidraw/actions/actionToggleZenMode.d.ts +4 -4
- package/dist/excalidraw/actions/actionToggleZenMode.js +2 -1
- package/dist/excalidraw/actions/actionZindex.d.ts +23 -19
- package/dist/excalidraw/actions/actionZindex.js +9 -4
- package/dist/excalidraw/actions/manager.d.ts +5 -5
- package/dist/excalidraw/actions/register.d.ts +1 -1
- package/dist/excalidraw/actions/shortcuts.d.ts +2 -2
- package/dist/excalidraw/actions/shortcuts.js +1 -1
- package/dist/excalidraw/actions/types.d.ts +7 -7
- package/dist/excalidraw/align.d.ts +1 -1
- package/dist/excalidraw/analytics.js +1 -1
- package/dist/excalidraw/animated-trail.d.ts +2 -2
- package/dist/excalidraw/appState.d.ts +5 -5
- package/dist/excalidraw/change.d.ts +191 -0
- package/dist/excalidraw/change.js +894 -0
- package/dist/excalidraw/charts.d.ts +1 -1
- package/dist/excalidraw/clients.d.ts +2 -2
- package/dist/excalidraw/clients.js +1 -1
- package/dist/excalidraw/clipboard.d.ts +3 -3
- package/dist/excalidraw/colors.d.ts +1 -1
- package/dist/excalidraw/components/Actions.d.ts +3 -3
- package/dist/excalidraw/components/Actions.js +8 -5
- package/dist/excalidraw/components/App.d.ts +27 -13
- package/dist/excalidraw/components/App.js +362 -157
- package/dist/excalidraw/components/ColorPicker/ColorInput.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/ColorInput.js +1 -1
- package/dist/excalidraw/components/ColorPicker/ColorPicker.d.ts +4 -4
- package/dist/excalidraw/components/ColorPicker/ColorPicker.js +1 -1
- package/dist/excalidraw/components/ColorPicker/Picker.d.ts +3 -3
- package/dist/excalidraw/components/ColorPicker/PickerColorList.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/PickerHeading.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/ShadeList.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/TopPicks.d.ts +1 -1
- package/dist/excalidraw/components/ColorPicker/colorPickerUtils.d.ts +2 -2
- package/dist/excalidraw/components/ColorPicker/colorPickerUtils.js +1 -1
- package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.d.ts +2 -2
- package/dist/excalidraw/components/ColorPicker/keyboardNavHandlers.js +1 -1
- package/dist/excalidraw/components/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/excalidraw/components/CommandPalette/CommandPalette.js +28 -13
- package/dist/excalidraw/components/CommandPalette/defaultCommandPaletteItems.d.ts +1 -1
- package/dist/excalidraw/components/CommandPalette/types.d.ts +3 -3
- package/dist/excalidraw/components/ConfirmDialog.d.ts +1 -1
- package/dist/excalidraw/components/ContextMenu.d.ts +2 -2
- package/dist/excalidraw/components/ContextMenu.js +1 -1
- package/dist/excalidraw/components/DarkModeToggle.d.ts +1 -1
- package/dist/excalidraw/components/DarkModeToggle.js +3 -1
- package/dist/excalidraw/components/DefaultSidebar.d.ts +2 -2
- package/dist/excalidraw/components/DialogActionButton.d.ts +1 -1
- package/dist/excalidraw/components/EyeDropper.d.ts +2 -2
- package/dist/excalidraw/components/FollowMode/FollowMode.d.ts +1 -1
- package/dist/excalidraw/components/HelpDialog.js +8 -6
- package/dist/excalidraw/components/HintViewer.d.ts +1 -1
- package/dist/excalidraw/components/ImageExportDialog.d.ts +1 -1
- package/dist/excalidraw/components/InitializeApp.d.ts +2 -2
- package/dist/excalidraw/components/JSONExportDialog.d.ts +3 -3
- package/dist/excalidraw/components/LayerUI.d.ts +4 -4
- package/dist/excalidraw/components/LibraryMenu.d.ts +2 -2
- package/dist/excalidraw/components/LibraryMenuBrowseButton.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuControlButtons.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuHeaderContent.d.ts +2 -2
- package/dist/excalidraw/components/LibraryMenuItems.d.ts +1 -1
- package/dist/excalidraw/components/LibraryMenuSection.d.ts +5 -4
- package/dist/excalidraw/components/LibraryUnit.d.ts +2 -2
- package/dist/excalidraw/components/LoadingMessage.d.ts +1 -1
- package/dist/excalidraw/components/MagicSettings.js +2 -2
- package/dist/excalidraw/components/MobileMenu.d.ts +3 -3
- package/dist/excalidraw/components/Modal.d.ts +1 -1
- package/dist/excalidraw/components/OverwriteConfirm/OverwriteConfirmState.d.ts +1 -1
- package/dist/excalidraw/components/PasteChartDialog.d.ts +1 -1
- package/dist/excalidraw/components/PublishLibrary.d.ts +1 -1
- package/dist/excalidraw/components/RadioGroup.d.ts +2 -1
- package/dist/excalidraw/components/RadioGroup.js +1 -1
- package/dist/excalidraw/components/SVGLayer.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/Sidebar.d.ts +2 -2
- package/dist/excalidraw/components/Sidebar/Sidebar.js +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTab.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTabTrigger.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/SidebarTrigger.d.ts +1 -1
- package/dist/excalidraw/components/Sidebar/common.d.ts +1 -1
- package/dist/excalidraw/components/Stack.d.ts +2 -2
- package/dist/excalidraw/components/Stats.d.ts +2 -2
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/MermaidToExcalidraw.js +6 -2
- package/dist/excalidraw/components/TTDDialog/TTDDialog.js +2 -2
- package/dist/excalidraw/components/TTDDialog/TTDDialogInput.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanel.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogPanels.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTabs.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/TTDDialogTrigger.d.ts +1 -1
- package/dist/excalidraw/components/TTDDialog/common.d.ts +4 -4
- package/dist/excalidraw/components/TextField.d.ts +1 -1
- package/dist/excalidraw/components/Toast.d.ts +1 -1
- package/dist/excalidraw/components/ToolButton.d.ts +4 -2
- package/dist/excalidraw/components/ToolButton.js +1 -1
- package/dist/excalidraw/components/Trans.d.ts +1 -1
- package/dist/excalidraw/components/UserList.d.ts +1 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.d.ts +2 -1
- package/dist/excalidraw/components/canvases/InteractiveCanvas.js +1 -0
- package/dist/excalidraw/components/canvases/StaticCanvas.d.ts +1 -1
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItem.js +2 -2
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.d.ts +18 -0
- package/dist/excalidraw/components/dropdownMenu/DropdownMenuItemContentRadio.js +9 -0
- package/dist/excalidraw/components/footer/Footer.d.ts +2 -2
- package/dist/excalidraw/components/hyperlink/Hyperlink.d.ts +2 -2
- package/dist/excalidraw/components/hyperlink/Hyperlink.js +3 -3
- package/dist/excalidraw/components/hyperlink/helpers.d.ts +3 -3
- package/dist/excalidraw/components/hyperlink/helpers.js +2 -3
- package/dist/excalidraw/components/icons.d.ts +6 -1
- package/dist/excalidraw/components/icons.js +19 -5
- package/dist/excalidraw/components/main-menu/DefaultItems.d.ts +12 -2
- package/dist/excalidraw/components/main-menu/DefaultItems.js +38 -7
- package/dist/excalidraw/constants.d.ts +5 -5
- package/dist/excalidraw/constants.js +6 -3
- package/dist/excalidraw/context/ui-appState.d.ts +1 -1
- package/dist/excalidraw/cursor.d.ts +1 -1
- package/dist/excalidraw/data/EditorLocalStorage.d.ts +2 -2
- package/dist/excalidraw/data/blob.d.ts +5 -5
- package/dist/excalidraw/data/filesystem.d.ts +2 -1
- package/dist/excalidraw/data/index.d.ts +4 -4
- package/dist/excalidraw/data/json.d.ts +3 -3
- package/dist/excalidraw/data/library.d.ts +3 -3
- package/dist/excalidraw/data/magic.d.ts +3 -3
- package/dist/excalidraw/data/magic.js +2 -1
- package/dist/excalidraw/data/reconcile.d.ts +6 -0
- package/dist/excalidraw/data/reconcile.js +49 -0
- package/dist/excalidraw/data/resave.d.ts +2 -2
- package/dist/excalidraw/data/restore.d.ts +5 -5
- package/dist/excalidraw/data/restore.js +6 -7
- package/dist/excalidraw/data/transform.d.ts +4 -4
- package/dist/excalidraw/data/transform.js +12 -3
- package/dist/excalidraw/data/types.d.ts +3 -3
- package/dist/excalidraw/data/url.d.ts +1 -0
- package/dist/excalidraw/data/url.js +4 -1
- package/dist/excalidraw/element/ElementCanvasButtons.d.ts +1 -1
- package/dist/excalidraw/element/binding.d.ts +50 -9
- package/dist/excalidraw/element/binding.js +712 -155
- package/dist/excalidraw/element/bounds.d.ts +3 -4
- package/dist/excalidraw/element/bounds.js +0 -3
- package/dist/excalidraw/element/collision.d.ts +14 -19
- package/dist/excalidraw/element/collision.js +36 -713
- package/dist/excalidraw/element/containerCache.d.ts +1 -1
- package/dist/excalidraw/element/dragElements.d.ts +3 -3
- package/dist/excalidraw/element/embeddable.d.ts +9 -6
- package/dist/excalidraw/element/embeddable.js +98 -62
- package/dist/excalidraw/element/image.d.ts +2 -2
- package/dist/excalidraw/element/index.d.ts +1 -2
- package/dist/excalidraw/element/index.js +0 -1
- package/dist/excalidraw/element/linearElementEditor.d.ts +12 -12
- package/dist/excalidraw/element/linearElementEditor.js +7 -5
- package/dist/excalidraw/element/mutateElement.d.ts +3 -4
- package/dist/excalidraw/element/newElement.d.ts +4 -4
- package/dist/excalidraw/element/newElement.js +2 -1
- package/dist/excalidraw/element/resizeElements.d.ts +4 -4
- package/dist/excalidraw/element/resizeElements.js +110 -86
- package/dist/excalidraw/element/resizeTest.d.ts +7 -7
- package/dist/excalidraw/element/resizeTest.js +55 -8
- package/dist/excalidraw/element/showSelectedShapeActions.d.ts +2 -2
- package/dist/excalidraw/element/sizeHelpers.d.ts +2 -2
- package/dist/excalidraw/element/sizeHelpers.js +3 -0
- package/dist/excalidraw/element/sortElements.d.ts +1 -1
- package/dist/excalidraw/element/textElement.d.ts +5 -6
- package/dist/excalidraw/element/textElement.js +5 -34
- package/dist/excalidraw/element/textWysiwyg.d.ts +2 -2
- package/dist/excalidraw/element/transformHandles.d.ts +24 -6
- package/dist/excalidraw/element/transformHandles.js +24 -3
- package/dist/excalidraw/element/typeChecks.d.ts +4 -4
- package/dist/excalidraw/element/types.d.ts +26 -10
- package/dist/excalidraw/emitter.d.ts +1 -1
- package/dist/excalidraw/errors.d.ts +3 -0
- package/dist/excalidraw/errors.js +3 -0
- package/dist/excalidraw/fractionalIndex.d.ts +40 -0
- package/dist/excalidraw/fractionalIndex.js +241 -0
- package/dist/excalidraw/frame.d.ts +4 -4
- package/dist/excalidraw/gatransforms.d.ts +1 -1
- package/dist/excalidraw/gesture.d.ts +1 -1
- package/dist/excalidraw/groups.d.ts +5 -3
- package/dist/excalidraw/groups.js +17 -0
- package/dist/excalidraw/history.d.ts +35 -47
- package/dist/excalidraw/history.js +100 -167
- package/dist/excalidraw/hooks/useCreatePortalContainer.js +2 -1
- package/dist/excalidraw/hooks/useEmitter.d.ts +2 -0
- package/dist/excalidraw/hooks/useEmitter.js +13 -0
- package/dist/excalidraw/hooks/useLibraryItemSvg.d.ts +1 -1
- package/dist/excalidraw/i18n.d.ts +1 -1
- package/dist/excalidraw/index.d.ts +3 -1
- package/dist/excalidraw/index.js +2 -0
- package/dist/excalidraw/jotai.d.ts +1 -1
- package/dist/excalidraw/laser-trails.d.ts +3 -2
- package/dist/excalidraw/locales/en.json +5 -3
- package/dist/excalidraw/math.d.ts +2 -2
- package/dist/excalidraw/points.d.ts +1 -1
- package/dist/excalidraw/queue.d.ts +1 -1
- package/dist/excalidraw/renderer/helpers.d.ts +2 -2
- package/dist/excalidraw/renderer/helpers.js +2 -2
- package/dist/excalidraw/renderer/interactiveScene.d.ts +2 -2
- package/dist/excalidraw/renderer/interactiveScene.js +8 -7
- package/dist/excalidraw/renderer/renderElement.d.ts +3 -3
- package/dist/excalidraw/renderer/renderElement.js +5 -5
- package/dist/excalidraw/renderer/renderSnaps.d.ts +1 -1
- package/dist/excalidraw/renderer/renderSnaps.js +2 -1
- package/dist/excalidraw/renderer/staticScene.d.ts +1 -1
- package/dist/excalidraw/renderer/staticScene.js +14 -3
- package/dist/excalidraw/renderer/staticSvgScene.d.ts +4 -4
- package/dist/excalidraw/renderer/staticSvgScene.js +10 -0
- package/dist/excalidraw/scene/Fonts.d.ts +1 -1
- package/dist/excalidraw/scene/Renderer.d.ts +3 -3
- package/dist/excalidraw/scene/Scene.d.ts +9 -8
- package/dist/excalidraw/scene/Scene.js +31 -16
- package/dist/excalidraw/scene/Shape.d.ts +1 -1
- package/dist/excalidraw/scene/ShapeCache.d.ts +4 -4
- package/dist/excalidraw/scene/comparisons.d.ts +2 -2
- package/dist/excalidraw/scene/export.d.ts +2 -2
- package/dist/excalidraw/scene/export.js +5 -4
- package/dist/excalidraw/scene/scroll.d.ts +2 -2
- package/dist/excalidraw/scene/scrollbars.d.ts +3 -3
- package/dist/excalidraw/scene/selection.d.ts +2 -2
- package/dist/excalidraw/scene/types.d.ts +5 -4
- package/dist/excalidraw/scene/zoom.d.ts +1 -1
- package/dist/excalidraw/snapping.d.ts +4 -4
- package/dist/excalidraw/store.d.ts +99 -0
- package/dist/excalidraw/store.js +269 -0
- package/dist/excalidraw/types.d.ts +33 -19
- package/dist/excalidraw/utils.d.ts +11 -4
- package/dist/excalidraw/utils.js +8 -0
- package/dist/excalidraw/zindex.d.ts +4 -4
- package/dist/excalidraw/zindex.js +9 -13
- package/dist/prod/{en-II4GK66F.json → en-UQDDYCH7.json} +5 -3
- package/dist/prod/index.css +1 -1
- package/dist/prod/index.js +44 -44
- package/dist/utils/bbox.d.ts +2 -2
- package/dist/utils/collision.d.ts +4 -0
- package/dist/utils/collision.js +48 -0
- package/dist/utils/export.d.ts +2 -2
- package/dist/utils/geometry/geometry.d.ts +71 -0
- package/dist/utils/geometry/geometry.js +674 -0
- package/dist/utils/geometry/shape.d.ts +56 -0
- package/dist/utils/geometry/shape.js +168 -0
- package/dist/utils/withinBounds.d.ts +1 -1
- package/history.ts +163 -218
- package/package.json +2 -1
- package/dist/browser/dev/excalidraw-assets-dev/chunk-AK7SWNLN.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-RWZVJAQU.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/chunk-Z3PH3V2B.js.map +0 -7
- package/dist/browser/dev/excalidraw-assets-dev/image-OFRRV5MB.css.map +0 -7
- package/dist/browser/prod/excalidraw-assets/chunk-LL4GORAM.js +0 -55
- package/dist/browser/prod/excalidraw-assets/image-EFCJDJH3.js +0 -1
- /package/dist/browser/dev/excalidraw-assets-dev/{blockDiagram-91b80b7a-ACFH36JV.js.map → blockDiagram-91b80b7a-H47FTXHA.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{c4Diagram-b2a90758-QZ27YR47.js.map → c4Diagram-b2a90758-NNJK6GKC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-HO2HMSK7.js.map → chunk-4KQVEBHW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-USGV265L.js.map → chunk-53YI56GV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-EDFX3S7X.js.map → chunk-A2WCJI4I.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-IX4V72YG.js.map → chunk-EFLPX7NE.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-MXVETLVM.js.map → chunk-JYIQCNWV.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-YZIOORVX.js.map → chunk-LVIQQW6F.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-6U7GQNJT.js.map → chunk-PXLO3FOU.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-7DACDEY3.js.map → chunk-TO2AW5PW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-NJ77ZFNJ.js.map → chunk-VURILHLY.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{chunk-2T2GU7NF.js.map → chunk-ZAYGSUHF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-30eddba6-QSLMH4JW.js.map → classDiagram-30eddba6-CUYIJICN.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{classDiagram-v2-f2df5561-DY4DYQ5P.js.map → classDiagram-v2-f2df5561-K6WW6K73.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{dist-Z46EOVOL.js.map → dist-ITJNUBZF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{en-5TCZHGGJ.js.map → en-BF4XUPIZ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{erDiagram-47591fe2-SOOJRTCB.js.map → erDiagram-47591fe2-XGAD7EEP.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-5540d9b9-AHGL4KPK.js.map → flowDiagram-5540d9b9-B6EOVNNO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowDiagram-v2-3b53844e-56LDZZWY.js.map → flowDiagram-v2-3b53844e-NUG24FJH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{flowchart-elk-definition-5fe447d6-27LUKRI6.js.map → flowchart-elk-definition-5fe447d6-25Y7PCBL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{ganttDiagram-9a3bba1f-EHGYGNG6.js.map → ganttDiagram-9a3bba1f-GNL6ZDTC.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{gitGraphDiagram-96e6b4ee-AJQNBDW5.js.map → gitGraphDiagram-96e6b4ee-HNW52NVO.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{image-EDKQZH7Z.js.map → image-LVS32KQQ.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{infoDiagram-bcd20f53-SWLLQVES.js.map → infoDiagram-bcd20f53-FWEUVFLT.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{journeyDiagram-4fe6b3dc-7UAVCWOZ.js.map → journeyDiagram-4fe6b3dc-RZIUI7UG.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{mindmap-definition-f354de21-SROW5KGM.js.map → mindmap-definition-f354de21-GBVN45GU.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{pieDiagram-79897490-QKCI6NCB.js.map → pieDiagram-79897490-ECENNII6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{quadrantDiagram-62f64e94-LNYJZFC5.js.map → quadrantDiagram-62f64e94-ZMEOFVNL.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{requirementDiagram-05bf5f74-ZZD7ZHFA.js.map → requirementDiagram-05bf5f74-FHZSFHCR.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sankeyDiagram-97764748-L75ZZ4UM.js.map → sankeyDiagram-97764748-VDKIKTA6.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{sequenceDiagram-acc0e65c-6PCU7TDK.js.map → sequenceDiagram-acc0e65c-6JUSPVKX.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-0ff1cf1a-WM76WOPR.js.map → stateDiagram-0ff1cf1a-L3AKWENF.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{stateDiagram-v2-9a9d610d-N4HZW3O2.js.map → stateDiagram-v2-9a9d610d-NU3GGMCH.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{timeline-definition-fea2a41d-ZHGCAXGP.js.map → timeline-definition-fea2a41d-JGP7XCHW.js.map} +0 -0
- /package/dist/browser/dev/excalidraw-assets-dev/{xychartDiagram-ab372869-2DLOVRAZ.js.map → xychartDiagram-ab372869-HLFHHF2I.js.map} +0 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { getDefaultAppState } from "./appState";
|
|
2
|
+
import { AppStateChange, ElementsChange } from "./change";
|
|
3
|
+
import { ENV } from "./constants";
|
|
4
|
+
import { newElementWith } from "./element/mutateElement";
|
|
5
|
+
import { deepCopyElement } from "./element/newElement";
|
|
6
|
+
import { Emitter } from "./emitter";
|
|
7
|
+
import { isShallowEqual } from "./utils";
|
|
8
|
+
// hidden non-enumerable property for runtime checks
|
|
9
|
+
const hiddenObservedAppStateProp = "__observedAppState";
|
|
10
|
+
export const getObservedAppState = (appState) => {
|
|
11
|
+
const observedAppState = {
|
|
12
|
+
name: appState.name,
|
|
13
|
+
editingGroupId: appState.editingGroupId,
|
|
14
|
+
viewBackgroundColor: appState.viewBackgroundColor,
|
|
15
|
+
selectedElementIds: appState.selectedElementIds,
|
|
16
|
+
selectedGroupIds: appState.selectedGroupIds,
|
|
17
|
+
editingLinearElementId: appState.editingLinearElement?.elementId || null,
|
|
18
|
+
selectedLinearElementId: appState.selectedLinearElement?.elementId || null,
|
|
19
|
+
};
|
|
20
|
+
Reflect.defineProperty(observedAppState, hiddenObservedAppStateProp, {
|
|
21
|
+
value: true,
|
|
22
|
+
enumerable: false,
|
|
23
|
+
});
|
|
24
|
+
return observedAppState;
|
|
25
|
+
};
|
|
26
|
+
const isObservedAppState = (appState) => !!Reflect.get(appState, hiddenObservedAppStateProp);
|
|
27
|
+
export const StoreAction = {
|
|
28
|
+
CAPTURE: "capture",
|
|
29
|
+
UPDATE: "update",
|
|
30
|
+
NONE: "none",
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Represent an increment to the Store.
|
|
34
|
+
*/
|
|
35
|
+
class StoreIncrementEvent {
|
|
36
|
+
elementsChange;
|
|
37
|
+
appStateChange;
|
|
38
|
+
constructor(elementsChange, appStateChange) {
|
|
39
|
+
this.elementsChange = elementsChange;
|
|
40
|
+
this.appStateChange = appStateChange;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class Store {
|
|
44
|
+
onStoreIncrementEmitter = new Emitter();
|
|
45
|
+
scheduledActions = new Set();
|
|
46
|
+
_snapshot = Snapshot.empty();
|
|
47
|
+
get snapshot() {
|
|
48
|
+
return this._snapshot;
|
|
49
|
+
}
|
|
50
|
+
set snapshot(snapshot) {
|
|
51
|
+
this._snapshot = snapshot;
|
|
52
|
+
}
|
|
53
|
+
// TODO: Suspicious that this is called so many places. Seems error-prone.
|
|
54
|
+
shouldCaptureIncrement = () => {
|
|
55
|
+
this.scheduleAction(StoreAction.CAPTURE);
|
|
56
|
+
};
|
|
57
|
+
shouldUpdateSnapshot = () => {
|
|
58
|
+
this.scheduleAction(StoreAction.UPDATE);
|
|
59
|
+
};
|
|
60
|
+
scheduleAction = (action) => {
|
|
61
|
+
this.scheduledActions.add(action);
|
|
62
|
+
this.satisfiesScheduledActionsInvariant();
|
|
63
|
+
};
|
|
64
|
+
commit = (elements, appState) => {
|
|
65
|
+
try {
|
|
66
|
+
// Capture has precedence since it also performs update
|
|
67
|
+
if (this.scheduledActions.has(StoreAction.CAPTURE)) {
|
|
68
|
+
this.captureIncrement(elements, appState);
|
|
69
|
+
}
|
|
70
|
+
else if (this.scheduledActions.has(StoreAction.UPDATE)) {
|
|
71
|
+
this.updateSnapshot(elements, appState);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
this.satisfiesScheduledActionsInvariant();
|
|
76
|
+
// Defensively reset all scheduled actions, potentially cleans up other runtime garbage
|
|
77
|
+
this.scheduledActions = new Set();
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
captureIncrement = (elements, appState) => {
|
|
81
|
+
const prevSnapshot = this.snapshot;
|
|
82
|
+
const nextSnapshot = this.snapshot.maybeClone(elements, appState);
|
|
83
|
+
// Optimisation, don't continue if nothing has changed
|
|
84
|
+
if (prevSnapshot !== nextSnapshot) {
|
|
85
|
+
// Calculate and record the changes based on the previous and next snapshot
|
|
86
|
+
const elementsChange = nextSnapshot.meta.didElementsChange
|
|
87
|
+
? ElementsChange.calculate(prevSnapshot.elements, nextSnapshot.elements)
|
|
88
|
+
: ElementsChange.empty();
|
|
89
|
+
const appStateChange = nextSnapshot.meta.didAppStateChange
|
|
90
|
+
? AppStateChange.calculate(prevSnapshot.appState, nextSnapshot.appState)
|
|
91
|
+
: AppStateChange.empty();
|
|
92
|
+
if (!elementsChange.isEmpty() || !appStateChange.isEmpty()) {
|
|
93
|
+
// Notify listeners with the increment
|
|
94
|
+
this.onStoreIncrementEmitter.trigger(new StoreIncrementEvent(elementsChange, appStateChange));
|
|
95
|
+
}
|
|
96
|
+
// Update snapshot
|
|
97
|
+
this.snapshot = nextSnapshot;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
updateSnapshot = (elements, appState) => {
|
|
101
|
+
const nextSnapshot = this.snapshot.maybeClone(elements, appState);
|
|
102
|
+
if (this.snapshot !== nextSnapshot) {
|
|
103
|
+
// Update snapshot
|
|
104
|
+
this.snapshot = nextSnapshot;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
filterUncomittedElements = (prevElements, nextElements) => {
|
|
108
|
+
for (const [id, prevElement] of prevElements.entries()) {
|
|
109
|
+
const nextElement = nextElements.get(id);
|
|
110
|
+
if (!nextElement) {
|
|
111
|
+
// Nothing to care about here, elements were forcefully deleted
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const elementSnapshot = this.snapshot.elements.get(id);
|
|
115
|
+
// Checks for in progress async user action
|
|
116
|
+
if (!elementSnapshot) {
|
|
117
|
+
// Detected yet uncomitted local element
|
|
118
|
+
nextElements.delete(id);
|
|
119
|
+
}
|
|
120
|
+
else if (elementSnapshot.version < prevElement.version) {
|
|
121
|
+
// Element was already commited, but the snapshot version is lower than current current local version
|
|
122
|
+
nextElements.set(id, elementSnapshot);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return nextElements;
|
|
126
|
+
};
|
|
127
|
+
clear = () => {
|
|
128
|
+
this.snapshot = Snapshot.empty();
|
|
129
|
+
this.scheduledActions = new Set();
|
|
130
|
+
};
|
|
131
|
+
satisfiesScheduledActionsInvariant = () => {
|
|
132
|
+
if (!(this.scheduledActions.size >= 0 && this.scheduledActions.size <= 3)) {
|
|
133
|
+
const message = `There can be at most three store actions scheduled at the same time, but there are "${this.scheduledActions.size}".`;
|
|
134
|
+
console.error(message, this.scheduledActions.values());
|
|
135
|
+
if (import.meta.env.DEV || import.meta.env.MODE === ENV.TEST) {
|
|
136
|
+
throw new Error(message);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export class Snapshot {
|
|
142
|
+
elements;
|
|
143
|
+
appState;
|
|
144
|
+
meta;
|
|
145
|
+
constructor(elements, appState, meta = {
|
|
146
|
+
didElementsChange: false,
|
|
147
|
+
didAppStateChange: false,
|
|
148
|
+
isEmpty: false,
|
|
149
|
+
}) {
|
|
150
|
+
this.elements = elements;
|
|
151
|
+
this.appState = appState;
|
|
152
|
+
this.meta = meta;
|
|
153
|
+
}
|
|
154
|
+
static empty() {
|
|
155
|
+
return new Snapshot(new Map(), getObservedAppState(getDefaultAppState()), { didElementsChange: false, didAppStateChange: false, isEmpty: true });
|
|
156
|
+
}
|
|
157
|
+
isEmpty() {
|
|
158
|
+
return this.meta.isEmpty;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Efficiently clone the existing snapshot, only if we detected changes.
|
|
162
|
+
*
|
|
163
|
+
* @returns same instance if there are no changes detected, new instance otherwise.
|
|
164
|
+
*/
|
|
165
|
+
maybeClone(elements, appState) {
|
|
166
|
+
const nextElementsSnapshot = this.maybeCreateElementsSnapshot(elements);
|
|
167
|
+
const nextAppStateSnapshot = this.maybeCreateAppStateSnapshot(appState);
|
|
168
|
+
let didElementsChange = false;
|
|
169
|
+
let didAppStateChange = false;
|
|
170
|
+
if (this.elements !== nextElementsSnapshot) {
|
|
171
|
+
didElementsChange = true;
|
|
172
|
+
}
|
|
173
|
+
if (this.appState !== nextAppStateSnapshot) {
|
|
174
|
+
didAppStateChange = true;
|
|
175
|
+
}
|
|
176
|
+
if (!didElementsChange && !didAppStateChange) {
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
const snapshot = new Snapshot(nextElementsSnapshot, nextAppStateSnapshot, {
|
|
180
|
+
didElementsChange,
|
|
181
|
+
didAppStateChange,
|
|
182
|
+
});
|
|
183
|
+
return snapshot;
|
|
184
|
+
}
|
|
185
|
+
maybeCreateAppStateSnapshot(appState) {
|
|
186
|
+
if (!appState) {
|
|
187
|
+
return this.appState;
|
|
188
|
+
}
|
|
189
|
+
// Not watching over everything from the app state, just the relevant props
|
|
190
|
+
const nextAppStateSnapshot = !isObservedAppState(appState)
|
|
191
|
+
? getObservedAppState(appState)
|
|
192
|
+
: appState;
|
|
193
|
+
const didAppStateChange = this.detectChangedAppState(nextAppStateSnapshot);
|
|
194
|
+
if (!didAppStateChange) {
|
|
195
|
+
return this.appState;
|
|
196
|
+
}
|
|
197
|
+
return nextAppStateSnapshot;
|
|
198
|
+
}
|
|
199
|
+
detectChangedAppState(nextObservedAppState) {
|
|
200
|
+
return !isShallowEqual(this.appState, nextObservedAppState, {
|
|
201
|
+
selectedElementIds: isShallowEqual,
|
|
202
|
+
selectedGroupIds: isShallowEqual,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
maybeCreateElementsSnapshot(elements) {
|
|
206
|
+
if (!elements) {
|
|
207
|
+
return this.elements;
|
|
208
|
+
}
|
|
209
|
+
const didElementsChange = this.detectChangedElements(elements);
|
|
210
|
+
if (!didElementsChange) {
|
|
211
|
+
return this.elements;
|
|
212
|
+
}
|
|
213
|
+
const elementsSnapshot = this.createElementsSnapshot(elements);
|
|
214
|
+
return elementsSnapshot;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Detect if there any changed elements.
|
|
218
|
+
*
|
|
219
|
+
* NOTE: we shouldn't just use `sceneVersionNonce` instead, as we need to call this before the scene updates.
|
|
220
|
+
*/
|
|
221
|
+
detectChangedElements(nextElements) {
|
|
222
|
+
if (this.elements === nextElements) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
if (this.elements.size !== nextElements.size) {
|
|
226
|
+
return true;
|
|
227
|
+
}
|
|
228
|
+
// loop from right to left as changes are likelier to happen on new elements
|
|
229
|
+
const keys = Array.from(nextElements.keys());
|
|
230
|
+
for (let i = keys.length - 1; i >= 0; i--) {
|
|
231
|
+
const prev = this.elements.get(keys[i]);
|
|
232
|
+
const next = nextElements.get(keys[i]);
|
|
233
|
+
if (!prev ||
|
|
234
|
+
!next ||
|
|
235
|
+
prev.id !== next.id ||
|
|
236
|
+
prev.versionNonce !== next.versionNonce) {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Perform structural clone, cloning only elements that changed.
|
|
244
|
+
*/
|
|
245
|
+
createElementsSnapshot(nextElements) {
|
|
246
|
+
const clonedElements = new Map();
|
|
247
|
+
for (const [id, prevElement] of this.elements.entries()) {
|
|
248
|
+
// Clone previous elements, never delete, in case nextElements would be just a subset of previous elements
|
|
249
|
+
// i.e. during collab, persist or whenenever isDeleted elements get cleared
|
|
250
|
+
if (!nextElements.get(id)) {
|
|
251
|
+
// When we cannot find the prev element in the next elements, we mark it as deleted
|
|
252
|
+
clonedElements.set(id, newElementWith(prevElement, { isDeleted: true }));
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
clonedElements.set(id, prevElement);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
for (const [id, nextElement] of nextElements.entries()) {
|
|
259
|
+
const prevElement = clonedElements.get(id);
|
|
260
|
+
// At this point our elements are reconcilled already, meaning the next element is always newer
|
|
261
|
+
if (!prevElement || // element was added
|
|
262
|
+
(prevElement && prevElement.versionNonce !== nextElement.versionNonce) // element was updated
|
|
263
|
+
) {
|
|
264
|
+
clonedElements.set(id, deepCopyElement(nextElement));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return clonedElements;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement } from "./element/types";
|
|
3
|
-
import { Action } from "./actions/types";
|
|
4
|
-
import { Point as RoughPoint } from "roughjs/bin/geometry";
|
|
5
|
-
import { LinearElementEditor } from "./element/linearElementEditor";
|
|
6
|
-
import { SuggestedBinding } from "./element/binding";
|
|
7
|
-
import { ImportedDataState } from "./data/types";
|
|
1
|
+
import type React from "react";
|
|
2
|
+
import type { PointerType, ExcalidrawLinearElement, NonDeletedExcalidrawElement, NonDeleted, TextAlign, ExcalidrawElement, GroupId, ExcalidrawBindableElement, Arrowhead, ChartType, FontFamilyValues, FileId, ExcalidrawImageElement, Theme, StrokeRoundness, ExcalidrawEmbeddableElement, ExcalidrawMagicFrameElement, ExcalidrawFrameLikeElement, ExcalidrawElementType, ExcalidrawIframeLikeElement, OrderedExcalidrawElement } from "./element/types";
|
|
3
|
+
import type { Action } from "./actions/types";
|
|
4
|
+
import type { Point as RoughPoint } from "roughjs/bin/geometry";
|
|
5
|
+
import type { LinearElementEditor } from "./element/linearElementEditor";
|
|
6
|
+
import type { SuggestedBinding } from "./element/binding";
|
|
7
|
+
import type { ImportedDataState } from "./data/types";
|
|
8
8
|
import type App from "./components/App";
|
|
9
9
|
import type { throttleRAF } from "./utils";
|
|
10
|
-
import { Spreadsheet } from "./charts";
|
|
11
|
-
import { Language } from "./i18n";
|
|
12
|
-
import { ClipboardData } from "./clipboard";
|
|
13
|
-
import { isOverScrollBars } from "./scene/scrollbars";
|
|
14
|
-
import { MaybeTransformHandleType } from "./element/transformHandles";
|
|
15
|
-
import Library from "./data/library";
|
|
10
|
+
import type { Spreadsheet } from "./charts";
|
|
11
|
+
import type { Language } from "./i18n";
|
|
12
|
+
import type { ClipboardData } from "./clipboard";
|
|
13
|
+
import type { isOverScrollBars } from "./scene/scrollbars";
|
|
14
|
+
import type { MaybeTransformHandleType } from "./element/transformHandles";
|
|
15
|
+
import type Library from "./data/library";
|
|
16
16
|
import type { FileSystemHandle } from "./data/filesystem";
|
|
17
17
|
import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
|
|
18
|
-
import { ContextMenuItems } from "./components/ContextMenu";
|
|
19
|
-
import { SnapLine } from "./snapping";
|
|
20
|
-
import { Merge, MaybePromise, ValueOf } from "./utility-types";
|
|
18
|
+
import type { ContextMenuItems } from "./components/ContextMenu";
|
|
19
|
+
import type { SnapLine } from "./snapping";
|
|
20
|
+
import type { Merge, MaybePromise, ValueOf } from "./utility-types";
|
|
21
|
+
import type { StoreActionType } from "./store";
|
|
21
22
|
export type Point = Readonly<RoughPoint>;
|
|
22
23
|
export type SocketId = string & {
|
|
23
24
|
_brand: "SocketId";
|
|
@@ -134,6 +135,18 @@ export type InteractiveCanvasAppState = Readonly<_CommonCanvasAppState & {
|
|
|
134
135
|
snapLines: AppState["snapLines"];
|
|
135
136
|
zenModeEnabled: AppState["zenModeEnabled"];
|
|
136
137
|
}>;
|
|
138
|
+
export type ObservedAppState = ObservedStandaloneAppState & ObservedElementsAppState;
|
|
139
|
+
export type ObservedStandaloneAppState = {
|
|
140
|
+
name: AppState["name"];
|
|
141
|
+
viewBackgroundColor: AppState["viewBackgroundColor"];
|
|
142
|
+
};
|
|
143
|
+
export type ObservedElementsAppState = {
|
|
144
|
+
editingGroupId: AppState["editingGroupId"];
|
|
145
|
+
selectedElementIds: AppState["selectedElementIds"];
|
|
146
|
+
selectedGroupIds: AppState["selectedGroupIds"];
|
|
147
|
+
editingLinearElementId: LinearElementEditor["elementId"] | null;
|
|
148
|
+
selectedLinearElementId: LinearElementEditor["elementId"] | null;
|
|
149
|
+
};
|
|
137
150
|
export interface AppState {
|
|
138
151
|
contextMenu: {
|
|
139
152
|
items: ContextMenuItems;
|
|
@@ -331,7 +344,7 @@ export type OnUserFollowedPayload = {
|
|
|
331
344
|
action: "FOLLOW" | "UNFOLLOW";
|
|
332
345
|
};
|
|
333
346
|
export interface ExcalidrawProps {
|
|
334
|
-
onChange?: (elements: readonly
|
|
347
|
+
onChange?: (elements: readonly OrderedExcalidrawElement[], appState: AppState, files: BinaryFiles) => void;
|
|
335
348
|
initialData?: MaybePromise<ExcalidrawInitialDataState | null>;
|
|
336
349
|
excalidrawAPI?: (api: ExcalidrawImperativeAPI) => void;
|
|
337
350
|
isCollaborating?: boolean;
|
|
@@ -377,7 +390,7 @@ export type SceneData = {
|
|
|
377
390
|
elements?: ImportedDataState["elements"];
|
|
378
391
|
appState?: ImportedDataState["appState"];
|
|
379
392
|
collaborators?: Map<SocketId, Collaborator>;
|
|
380
|
-
|
|
393
|
+
storeAction?: StoreActionType;
|
|
381
394
|
};
|
|
382
395
|
export declare enum UserIdleState {
|
|
383
396
|
ACTIVE = "active",
|
|
@@ -449,6 +462,7 @@ export type AppClassProperties = {
|
|
|
449
462
|
setOpenDialog: App["setOpenDialog"];
|
|
450
463
|
insertEmbeddableElement: App["insertEmbeddableElement"];
|
|
451
464
|
onMagicframeToolSelect: App["onMagicframeToolSelect"];
|
|
465
|
+
getElementShape: App["getElementShape"];
|
|
452
466
|
getName: App["getName"];
|
|
453
467
|
};
|
|
454
468
|
export type PointerDownState = Readonly<{
|
|
@@ -550,7 +564,7 @@ export type Device = Readonly<{
|
|
|
550
564
|
};
|
|
551
565
|
isTouchScreen: boolean;
|
|
552
566
|
}>;
|
|
553
|
-
type FrameNameBounds = {
|
|
567
|
+
export type FrameNameBounds = {
|
|
554
568
|
x: number;
|
|
555
569
|
y: number;
|
|
556
570
|
width: number;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EVENT } from "./constants";
|
|
2
|
-
import { FontFamilyValues, FontString } from "./element/types";
|
|
3
|
-
import { ActiveTool, AppState, ToolType, UnsubscribeCallback, Zoom } from "./types";
|
|
4
|
-
import { MaybePromise } from "./utility-types";
|
|
1
|
+
import type { EVENT } from "./constants";
|
|
2
|
+
import type { FontFamilyValues, FontString } from "./element/types";
|
|
3
|
+
import type { ActiveTool, AppState, ToolType, UnsubscribeCallback, Zoom } from "./types";
|
|
4
|
+
import type { MaybePromise } from "./utility-types";
|
|
5
5
|
export declare const setDateTimeForTests: (dateTime: string) => void;
|
|
6
6
|
export declare const getDateTime: () => string;
|
|
7
7
|
export declare const capitalizeString: (str: string) => string;
|
|
@@ -160,7 +160,14 @@ export declare const arrayToMap: <T extends string | {
|
|
|
160
160
|
export declare const arrayToMapWithIndex: <T extends {
|
|
161
161
|
id: string;
|
|
162
162
|
}>(elements: readonly T[]) => Map<string, [element: T, index: number]>;
|
|
163
|
+
/**
|
|
164
|
+
* Transform array into an object, use only when array order is irrelevant.
|
|
165
|
+
*/
|
|
166
|
+
export declare const arrayToObject: <T>(array: readonly T[], groupBy?: ((value: T) => string) | undefined) => {
|
|
167
|
+
[key: string]: T;
|
|
168
|
+
};
|
|
163
169
|
export declare const isTestEnv: () => boolean;
|
|
170
|
+
export declare const isDevEnv: () => boolean;
|
|
164
171
|
export declare const wrapEvent: <T extends Event>(name: EVENT, nativeEvent: T) => CustomEvent<{
|
|
165
172
|
nativeEvent: T;
|
|
166
173
|
}>;
|
package/dist/excalidraw/utils.js
CHANGED
|
@@ -445,7 +445,15 @@ export const arrayToMapWithIndex = (elements) => elements.reduce((acc, element,
|
|
|
445
445
|
acc.set(element.id, [element, idx]);
|
|
446
446
|
return acc;
|
|
447
447
|
}, new Map());
|
|
448
|
+
/**
|
|
449
|
+
* Transform array into an object, use only when array order is irrelevant.
|
|
450
|
+
*/
|
|
451
|
+
export const arrayToObject = (array, groupBy) => array.reduce((acc, value) => {
|
|
452
|
+
acc[groupBy ? groupBy(value) : String(value)] = value;
|
|
453
|
+
return acc;
|
|
454
|
+
}, {});
|
|
448
455
|
export const isTestEnv = () => import.meta.env.MODE === "test";
|
|
456
|
+
export const isDevEnv = () => import.meta.env.MODE === "development";
|
|
449
457
|
export const wrapEvent = (name, nativeEvent) => {
|
|
450
458
|
return new CustomEvent(name, {
|
|
451
459
|
detail: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ExcalidrawElement } from "./element/types";
|
|
2
|
-
import { AppState } from "./types";
|
|
3
|
-
export declare const moveOneLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
4
|
-
export declare const moveOneRight: (allElements: readonly ExcalidrawElement[], appState: AppState) => ExcalidrawElement[];
|
|
1
|
+
import type { ExcalidrawElement } from "./element/types";
|
|
2
|
+
import type { AppState } from "./types";
|
|
3
|
+
export declare const moveOneLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[];
|
|
4
|
+
export declare const moveOneRight: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[];
|
|
5
5
|
export declare const moveAllLeft: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[] | ExcalidrawElement[];
|
|
6
6
|
export declare const moveAllRight: (allElements: readonly ExcalidrawElement[], appState: AppState) => readonly ExcalidrawElement[] | ExcalidrawElement[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { bumpVersion } from "./element/mutateElement";
|
|
2
1
|
import { isFrameLikeElement } from "./element/typeChecks";
|
|
2
|
+
import { syncMovedIndices } from "./fractionalIndex";
|
|
3
3
|
import { getElementsInGroup } from "./groups";
|
|
4
4
|
import { getSelectedElements } from "./scene";
|
|
5
5
|
import Scene from "./scene/Scene";
|
|
@@ -173,9 +173,9 @@ containingFrame) => {
|
|
|
173
173
|
const getTargetElementsMap = (elements, indices) => {
|
|
174
174
|
return indices.reduce((acc, index) => {
|
|
175
175
|
const element = elements[index];
|
|
176
|
-
acc
|
|
176
|
+
acc.set(element.id, element);
|
|
177
177
|
return acc;
|
|
178
|
-
},
|
|
178
|
+
}, new Map());
|
|
179
179
|
};
|
|
180
180
|
const shiftElementsByOne = (elements, appState, direction) => {
|
|
181
181
|
const indicesToMove = getIndicesToMove(elements, appState);
|
|
@@ -226,12 +226,8 @@ const shiftElementsByOne = (elements, appState, direction) => {
|
|
|
226
226
|
...trailingElements,
|
|
227
227
|
];
|
|
228
228
|
});
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
return bumpVersion(element);
|
|
232
|
-
}
|
|
233
|
-
return element;
|
|
234
|
-
});
|
|
229
|
+
syncMovedIndices(elements, targetElementsMap);
|
|
230
|
+
return elements;
|
|
235
231
|
};
|
|
236
232
|
const shiftElementsToEnd = (elements, appState, direction, containingFrame, elementsToBeMoved) => {
|
|
237
233
|
const indicesToMove = getIndicesToMove(elements, appState, elementsToBeMoved);
|
|
@@ -279,12 +275,10 @@ const shiftElementsToEnd = (elements, appState, direction, containingFrame, elem
|
|
|
279
275
|
displacedElements.push(elements[index]);
|
|
280
276
|
}
|
|
281
277
|
}
|
|
282
|
-
const targetElements =
|
|
283
|
-
return bumpVersion(element);
|
|
284
|
-
});
|
|
278
|
+
const targetElements = Array.from(targetElementsMap.values());
|
|
285
279
|
const leadingElements = elements.slice(0, leadingIndex);
|
|
286
280
|
const trailingElements = elements.slice(trailingIndex + 1);
|
|
287
|
-
|
|
281
|
+
const nextElements = direction === "left"
|
|
288
282
|
? [
|
|
289
283
|
...leadingElements,
|
|
290
284
|
...targetElements,
|
|
@@ -297,6 +291,8 @@ const shiftElementsToEnd = (elements, appState, direction, containingFrame, elem
|
|
|
297
291
|
...targetElements,
|
|
298
292
|
...trailingElements,
|
|
299
293
|
];
|
|
294
|
+
syncMovedIndices(nextElements, targetElementsMap);
|
|
295
|
+
return nextElements;
|
|
300
296
|
};
|
|
301
297
|
function shiftElementsAccountingForFrames(allElements, appState, direction, shiftFunction) {
|
|
302
298
|
const elementsToMove = arrayToMap(getSelectedElements(allElements, appState, {
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"group": "Group selection",
|
|
88
88
|
"ungroup": "Ungroup selection",
|
|
89
89
|
"collaborators": "Collaborators",
|
|
90
|
-
"
|
|
90
|
+
"toggleGrid": "Toggle grid",
|
|
91
91
|
"addToLibrary": "Add to library",
|
|
92
92
|
"removeFromLibrary": "Remove from library",
|
|
93
93
|
"libraryLoadingMessage": "Loading library…",
|
|
@@ -110,6 +110,7 @@
|
|
|
110
110
|
"showStroke": "Show stroke color picker",
|
|
111
111
|
"showBackground": "Show background color picker",
|
|
112
112
|
"toggleTheme": "Toggle light/dark theme",
|
|
113
|
+
"theme": "Theme",
|
|
113
114
|
"personalLib": "Personal Library",
|
|
114
115
|
"excalidrawLib": "Excalidraw Library",
|
|
115
116
|
"decreaseFontSize": "Decrease font size",
|
|
@@ -128,7 +129,7 @@
|
|
|
128
129
|
},
|
|
129
130
|
"lineEditor": {
|
|
130
131
|
"edit": "Edit line",
|
|
131
|
-
"
|
|
132
|
+
"editArrow": "Edit arrow"
|
|
132
133
|
},
|
|
133
134
|
"elementLock": {
|
|
134
135
|
"lock": "Lock",
|
|
@@ -180,6 +181,7 @@
|
|
|
180
181
|
"fullScreen": "Full screen",
|
|
181
182
|
"darkMode": "Dark mode",
|
|
182
183
|
"lightMode": "Light mode",
|
|
184
|
+
"systemMode": "System mode",
|
|
183
185
|
"zenMode": "Zen mode",
|
|
184
186
|
"objectsSnapMode": "Snap to objects",
|
|
185
187
|
"exitZenMode": "Exit zen mode",
|
|
@@ -560,6 +562,6 @@
|
|
|
560
562
|
"noMatch": "No matching commands..."
|
|
561
563
|
},
|
|
562
564
|
"itemNotAvailable": "Command is not available...",
|
|
563
|
-
"shortcutHint": "For Command palette, use {{
|
|
565
|
+
"shortcutHint": "For Command palette, use {{shortcut}}"
|
|
564
566
|
}
|
|
565
567
|
}
|