@tldraw/editor 3.14.0-canary.7cedd47b7a3a → 3.14.0-canary.813644a5fc45

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.
Files changed (163) hide show
  1. package/dist-cjs/index.d.ts +74 -63
  2. package/dist-cjs/index.js +8 -10
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/config/TLSessionStateSnapshot.js +1 -12
  5. package/dist-cjs/lib/config/TLSessionStateSnapshot.js.map +3 -3
  6. package/dist-cjs/lib/editor/Editor.js +81 -77
  7. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  8. package/dist-cjs/lib/editor/bindings/BindingUtil.js.map +2 -2
  9. package/dist-cjs/lib/editor/derivations/bindingsIndex.js +22 -22
  10. package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
  11. package/dist-cjs/lib/editor/derivations/parentsToChildren.js +16 -16
  12. package/dist-cjs/lib/editor/derivations/parentsToChildren.js.map +2 -2
  13. package/dist-cjs/lib/editor/managers/{ClickManager.js → ClickManager/ClickManager.js} +1 -1
  14. package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +7 -0
  15. package/dist-cjs/lib/editor/managers/{EdgeScrollManager.js → EdgeScrollManager/EdgeScrollManager.js} +2 -2
  16. package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +7 -0
  17. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +7 -0
  18. package/dist-cjs/lib/editor/managers/{FontManager.js → FontManager/FontManager.js} +4 -1
  19. package/dist-cjs/lib/editor/managers/FontManager/FontManager.js.map +7 -0
  20. package/dist-cjs/lib/editor/managers/{HistoryManager.js → HistoryManager/HistoryManager.js} +64 -6
  21. package/dist-cjs/lib/editor/managers/HistoryManager/HistoryManager.js.map +7 -0
  22. package/dist-cjs/lib/editor/managers/{ScribbleManager.js → ScribbleManager/ScribbleManager.js} +1 -1
  23. package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +7 -0
  24. package/dist-cjs/lib/editor/managers/{TextManager.js → TextManager/TextManager.js} +73 -42
  25. package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +7 -0
  26. package/dist-cjs/lib/editor/managers/{TickManager.js → TickManager/TickManager.js} +1 -1
  27. package/dist-cjs/lib/editor/managers/TickManager/TickManager.js.map +7 -0
  28. package/dist-cjs/lib/editor/managers/{UserPreferencesManager.js → UserPreferencesManager/UserPreferencesManager.js} +1 -1
  29. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +7 -0
  30. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +1 -1
  31. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +1 -1
  32. package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +1 -1
  33. package/dist-cjs/lib/editor/tools/StateNode.js +3 -3
  34. package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
  35. package/dist-cjs/lib/editor/types/emit-types.js.map +1 -1
  36. package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
  37. package/dist-cjs/lib/exports/getSvgJsx.js.map +1 -1
  38. package/dist-cjs/lib/hooks/useCanvasEvents.js +1 -2
  39. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  40. package/dist-cjs/lib/primitives/Box.js +33 -39
  41. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  42. package/dist-cjs/lib/utils/areShapesContentEqual.js +1 -1
  43. package/dist-cjs/lib/utils/areShapesContentEqual.js.map +2 -2
  44. package/dist-cjs/lib/utils/reorderShapes.js +11 -10
  45. package/dist-cjs/lib/utils/reorderShapes.js.map +2 -2
  46. package/dist-cjs/lib/utils/richText.js +7 -2
  47. package/dist-cjs/lib/utils/richText.js.map +2 -2
  48. package/dist-cjs/version.js +3 -3
  49. package/dist-cjs/version.js.map +1 -1
  50. package/dist-esm/index.d.mts +74 -63
  51. package/dist-esm/index.mjs +12 -10
  52. package/dist-esm/index.mjs.map +2 -2
  53. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs +1 -1
  54. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs.map +2 -2
  55. package/dist-esm/lib/editor/Editor.mjs +81 -77
  56. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  57. package/dist-esm/lib/editor/bindings/BindingUtil.mjs.map +2 -2
  58. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +22 -22
  59. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  60. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +16 -16
  61. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  62. package/dist-esm/lib/editor/managers/{ClickManager.mjs → ClickManager/ClickManager.mjs} +1 -1
  63. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +7 -0
  64. package/dist-esm/lib/editor/managers/{EdgeScrollManager.mjs → EdgeScrollManager/EdgeScrollManager.mjs} +2 -2
  65. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +7 -0
  66. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +7 -0
  67. package/dist-esm/lib/editor/managers/{FontManager.mjs → FontManager/FontManager.mjs} +4 -1
  68. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +7 -0
  69. package/dist-esm/lib/editor/managers/{HistoryManager.mjs → HistoryManager/HistoryManager.mjs} +60 -2
  70. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs.map +7 -0
  71. package/dist-esm/lib/editor/managers/{ScribbleManager.mjs → ScribbleManager/ScribbleManager.mjs} +1 -1
  72. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +7 -0
  73. package/dist-esm/lib/editor/managers/{TextManager.mjs → TextManager/TextManager.mjs} +73 -42
  74. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +7 -0
  75. package/dist-esm/lib/editor/managers/{TickManager.mjs → TickManager/TickManager.mjs} +1 -1
  76. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +7 -0
  77. package/dist-esm/lib/editor/managers/{UserPreferencesManager.mjs → UserPreferencesManager/UserPreferencesManager.mjs} +1 -1
  78. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +7 -0
  79. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +1 -1
  80. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +1 -1
  81. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +1 -1
  82. package/dist-esm/lib/editor/tools/StateNode.mjs +3 -3
  83. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  84. package/dist-esm/lib/exports/getSvgJsx.mjs.map +1 -1
  85. package/dist-esm/lib/hooks/useCanvasEvents.mjs +1 -2
  86. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  87. package/dist-esm/lib/primitives/Box.mjs +33 -39
  88. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  89. package/dist-esm/lib/utils/areShapesContentEqual.mjs +1 -1
  90. package/dist-esm/lib/utils/areShapesContentEqual.mjs.map +2 -2
  91. package/dist-esm/lib/utils/reorderShapes.mjs +11 -10
  92. package/dist-esm/lib/utils/reorderShapes.mjs.map +2 -2
  93. package/dist-esm/lib/utils/richText.mjs +8 -3
  94. package/dist-esm/lib/utils/richText.mjs.map +2 -2
  95. package/dist-esm/version.mjs +3 -3
  96. package/dist-esm/version.mjs.map +1 -1
  97. package/editor.css +433 -482
  98. package/package.json +8 -9
  99. package/src/index.ts +15 -8
  100. package/src/lib/config/TLSessionStateSnapshot.ts +1 -1
  101. package/src/lib/editor/Editor.test.ts +252 -3
  102. package/src/lib/editor/Editor.ts +82 -76
  103. package/src/lib/editor/bindings/BindingUtil.ts +6 -0
  104. package/src/lib/editor/derivations/bindingsIndex.ts +27 -26
  105. package/src/lib/editor/derivations/parentsToChildren.ts +28 -25
  106. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +442 -0
  107. package/src/lib/editor/managers/{ClickManager.ts → ClickManager/ClickManager.ts} +3 -3
  108. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +374 -0
  109. package/src/lib/editor/managers/{EdgeScrollManager.ts → EdgeScrollManager/EdgeScrollManager.ts} +3 -3
  110. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +455 -0
  111. package/src/lib/editor/managers/{FocusManager.ts → FocusManager/FocusManager.ts} +1 -1
  112. package/src/lib/editor/managers/FontManager/FontManager.test.ts +263 -0
  113. package/src/lib/editor/managers/{FontManager.ts → FontManager/FontManager.ts} +5 -2
  114. package/src/lib/editor/managers/{HistoryManager.test.ts → HistoryManager/HistoryManager.test.ts} +388 -1
  115. package/src/lib/editor/managers/{HistoryManager.ts → HistoryManager/HistoryManager.ts} +73 -2
  116. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +624 -0
  117. package/src/lib/editor/managers/{ScribbleManager.ts → ScribbleManager/ScribbleManager.ts} +2 -2
  118. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +485 -0
  119. package/src/lib/editor/managers/TextManager/TextManager.test.ts +407 -0
  120. package/src/lib/editor/managers/{TextManager.ts → TextManager/TextManager.ts} +119 -87
  121. package/src/lib/editor/managers/TickManager/TickManager.test.ts +314 -0
  122. package/src/lib/editor/managers/{TickManager.ts → TickManager/TickManager.ts} +2 -2
  123. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +591 -0
  124. package/src/lib/editor/managers/{UserPreferencesManager.ts → UserPreferencesManager/UserPreferencesManager.ts} +2 -2
  125. package/src/lib/editor/shapes/ShapeUtil.ts +2 -1
  126. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +1 -1
  127. package/src/lib/editor/tools/StateNode.ts +3 -3
  128. package/src/lib/editor/types/emit-types.ts +4 -0
  129. package/src/lib/editor/types/external-content.ts +11 -2
  130. package/src/lib/exports/getSvgJsx.tsx +1 -1
  131. package/src/lib/hooks/useCanvasEvents.ts +0 -1
  132. package/src/lib/primitives/Box.test.ts +588 -7
  133. package/src/lib/primitives/Box.ts +33 -41
  134. package/src/lib/utils/areShapesContentEqual.ts +1 -2
  135. package/src/lib/utils/reorderShapes.ts +10 -13
  136. package/src/lib/utils/richText.ts +10 -4
  137. package/src/version.ts +3 -3
  138. package/dist-cjs/lib/editor/managers/ClickManager.js.map +0 -7
  139. package/dist-cjs/lib/editor/managers/EdgeScrollManager.js.map +0 -7
  140. package/dist-cjs/lib/editor/managers/FocusManager.js.map +0 -7
  141. package/dist-cjs/lib/editor/managers/FontManager.js.map +0 -7
  142. package/dist-cjs/lib/editor/managers/HistoryManager.js.map +0 -7
  143. package/dist-cjs/lib/editor/managers/ScribbleManager.js.map +0 -7
  144. package/dist-cjs/lib/editor/managers/Stack.js +0 -82
  145. package/dist-cjs/lib/editor/managers/Stack.js.map +0 -7
  146. package/dist-cjs/lib/editor/managers/TextManager.js.map +0 -7
  147. package/dist-cjs/lib/editor/managers/TickManager.js.map +0 -7
  148. package/dist-cjs/lib/editor/managers/UserPreferencesManager.js.map +0 -7
  149. package/dist-esm/lib/editor/managers/ClickManager.mjs.map +0 -7
  150. package/dist-esm/lib/editor/managers/EdgeScrollManager.mjs.map +0 -7
  151. package/dist-esm/lib/editor/managers/FocusManager.mjs.map +0 -7
  152. package/dist-esm/lib/editor/managers/FontManager.mjs.map +0 -7
  153. package/dist-esm/lib/editor/managers/HistoryManager.mjs.map +0 -7
  154. package/dist-esm/lib/editor/managers/ScribbleManager.mjs.map +0 -7
  155. package/dist-esm/lib/editor/managers/Stack.mjs +0 -62
  156. package/dist-esm/lib/editor/managers/Stack.mjs.map +0 -7
  157. package/dist-esm/lib/editor/managers/TextManager.mjs.map +0 -7
  158. package/dist-esm/lib/editor/managers/TickManager.mjs.map +0 -7
  159. package/dist-esm/lib/editor/managers/UserPreferencesManager.mjs.map +0 -7
  160. package/src/lib/editor/managers/ScribbleManager.test.ts +0 -32
  161. package/src/lib/editor/managers/Stack.ts +0 -71
  162. /package/dist-cjs/lib/editor/managers/{FocusManager.js → FocusManager/FocusManager.js} +0 -0
  163. /package/dist-esm/lib/editor/managers/{FocusManager.mjs → FocusManager/FocusManager.mjs} +0 -0
@@ -112,19 +112,19 @@ var import_bindingsIndex = require("./derivations/bindingsIndex");
112
112
  var import_notVisibleShapes = require("./derivations/notVisibleShapes");
113
113
  var import_parentsToChildren = require("./derivations/parentsToChildren");
114
114
  var import_shapeIdsInCurrentPage = require("./derivations/shapeIdsInCurrentPage");
115
- var import_ClickManager = require("./managers/ClickManager");
116
- var import_EdgeScrollManager = require("./managers/EdgeScrollManager");
117
- var import_FocusManager = require("./managers/FocusManager");
118
- var import_FontManager = require("./managers/FontManager");
119
- var import_HistoryManager = require("./managers/HistoryManager");
120
- var import_ScribbleManager = require("./managers/ScribbleManager");
115
+ var import_ClickManager = require("./managers/ClickManager/ClickManager");
116
+ var import_EdgeScrollManager = require("./managers/EdgeScrollManager/EdgeScrollManager");
117
+ var import_FocusManager = require("./managers/FocusManager/FocusManager");
118
+ var import_FontManager = require("./managers/FontManager/FontManager");
119
+ var import_HistoryManager = require("./managers/HistoryManager/HistoryManager");
120
+ var import_ScribbleManager = require("./managers/ScribbleManager/ScribbleManager");
121
121
  var import_SnapManager = require("./managers/SnapManager/SnapManager");
122
- var import_TextManager = require("./managers/TextManager");
123
- var import_TickManager = require("./managers/TickManager");
124
- var import_UserPreferencesManager = require("./managers/UserPreferencesManager");
122
+ var import_TextManager = require("./managers/TextManager/TextManager");
123
+ var import_TickManager = require("./managers/TickManager/TickManager");
124
+ var import_UserPreferencesManager = require("./managers/UserPreferencesManager/UserPreferencesManager");
125
125
  var import_RootState = require("./tools/RootState");
126
- var __setMetaKeyTimeout_dec, __setCtrlKeyTimeout_dec, __setAltKeyTimeout_dec, __setShiftKeyTimeout_dec, _getIsReadonly_dec, _getIsFocused_dec, _getSharedOpacity_dec, _getSharedStyles_dec, __getSelectionSharedStyles_dec, __getBindingsIndexCache_dec, _getCurrentPageRenderingShapesSorted_dec, _getCurrentPageShapesSorted_dec, _getCurrentPageShapes_dec, _getCurrentPageBounds_dec, _getCulledShapes_dec, __notVisibleShapes_dec, __getShapeMaskedPageBoundsCache_dec, __getShapeMaskCache_dec, __getShapeClipPathCache_dec, __getShapePageBoundsCache_dec, __getShapePageTransformCache_dec, __getShapeHandlesCache_dec, __getAllAssetsQuery_dec, _getCurrentPageShapeIdsSorted_dec, _getCurrentPageId_dec, _getPages_dec, __getAllPagesQuery_dec, _getRenderingShapes_dec, _getCollaboratorsOnCurrentPage_dec, _getCollaborators_dec, __getCollaboratorsQuery_dec, _getViewportPageBounds_dec, _getViewportScreenCenter_dec, _getViewportScreenBounds_dec, _getZoomLevel_dec, _getCameraForFollowing_dec, _getViewportPageBoundsForFollowing_dec, _getCamera_dec, __unsafe_getCameraId_dec, _getErasingShapes_dec, _getErasingShapeIds_dec, _getHintingShape_dec, _getHintingShapeIds_dec, _getHoveredShape_dec, _getHoveredShapeId_dec, _getRichTextEditor_dec, _getEditingShape_dec, _getEditingShapeId_dec, _getFocusedGroup_dec, _getFocusedGroupId_dec, _getSelectionRotatedScreenBounds_dec, _getSelectionRotatedPageBounds_dec, _getSelectionRotation_dec, _getSelectionPageBounds_dec, _getOnlySelectedShape_dec, _getOnlySelectedShapeId_dec, _getCurrentPageShapesInReadingOrder_dec, _getSelectedShapes_dec, _getSelectedShapeIds_dec, __getCurrentPageStateId_dec, _getCurrentPageState_dec, __getPageStatesQuery_dec, _getPageStates_dec, _getIsMenuOpen_dec, _getOpenMenus_dec, _getInstanceState_dec, _getDocumentSettings_dec, _getCurrentToolId_dec, _getCurrentTool_dec, _getPath_dec, _getCanRedo_dec, _getCanUndo_dec, _getIsShapeHiddenCache_dec, _a, _init;
127
- class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_dec = [import_state.computed], _getCanUndo_dec = [import_state.computed], _getCanRedo_dec = [import_state.computed], _getPath_dec = [import_state.computed], _getCurrentTool_dec = [import_state.computed], _getCurrentToolId_dec = [import_state.computed], _getDocumentSettings_dec = [import_state.computed], _getInstanceState_dec = [import_state.computed], _getOpenMenus_dec = [import_state.computed], _getIsMenuOpen_dec = [import_state.computed], _getPageStates_dec = [import_state.computed], __getPageStatesQuery_dec = [import_state.computed], _getCurrentPageState_dec = [import_state.computed], __getCurrentPageStateId_dec = [import_state.computed], _getSelectedShapeIds_dec = [import_state.computed], _getSelectedShapes_dec = [import_state.computed], _getCurrentPageShapesInReadingOrder_dec = [import_state.computed], _getOnlySelectedShapeId_dec = [import_state.computed], _getOnlySelectedShape_dec = [import_state.computed], _getSelectionPageBounds_dec = [import_state.computed], _getSelectionRotation_dec = [import_state.computed], _getSelectionRotatedPageBounds_dec = [import_state.computed], _getSelectionRotatedScreenBounds_dec = [import_state.computed], _getFocusedGroupId_dec = [import_state.computed], _getFocusedGroup_dec = [import_state.computed], _getEditingShapeId_dec = [import_state.computed], _getEditingShape_dec = [import_state.computed], _getRichTextEditor_dec = [import_state.computed], _getHoveredShapeId_dec = [import_state.computed], _getHoveredShape_dec = [import_state.computed], _getHintingShapeIds_dec = [import_state.computed], _getHintingShape_dec = [import_state.computed], _getErasingShapeIds_dec = [import_state.computed], _getErasingShapes_dec = [import_state.computed], __unsafe_getCameraId_dec = [import_state.computed], _getCamera_dec = [import_state.computed], _getViewportPageBoundsForFollowing_dec = [import_state.computed], _getCameraForFollowing_dec = [import_state.computed], _getZoomLevel_dec = [import_state.computed], _getViewportScreenBounds_dec = [import_state.computed], _getViewportScreenCenter_dec = [import_state.computed], _getViewportPageBounds_dec = [import_state.computed], __getCollaboratorsQuery_dec = [import_state.computed], _getCollaborators_dec = [import_state.computed], _getCollaboratorsOnCurrentPage_dec = [import_state.computed], _getRenderingShapes_dec = [import_state.computed], __getAllPagesQuery_dec = [import_state.computed], _getPages_dec = [import_state.computed], _getCurrentPageId_dec = [import_state.computed], _getCurrentPageShapeIdsSorted_dec = [import_state.computed], __getAllAssetsQuery_dec = [import_state.computed], __getShapeHandlesCache_dec = [import_state.computed], __getShapePageTransformCache_dec = [import_state.computed], __getShapePageBoundsCache_dec = [import_state.computed], __getShapeClipPathCache_dec = [import_state.computed], __getShapeMaskCache_dec = [import_state.computed], __getShapeMaskedPageBoundsCache_dec = [import_state.computed], __notVisibleShapes_dec = [import_state.computed], _getCulledShapes_dec = [import_state.computed], _getCurrentPageBounds_dec = [import_state.computed], _getCurrentPageShapes_dec = [import_state.computed], _getCurrentPageShapesSorted_dec = [import_state.computed], _getCurrentPageRenderingShapesSorted_dec = [import_state.computed], __getBindingsIndexCache_dec = [import_state.computed], __getSelectionSharedStyles_dec = [import_state.computed], _getSharedStyles_dec = [(0, import_state.computed)({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [import_state.computed], _getIsFocused_dec = [import_state.computed], _getIsReadonly_dec = [import_state.computed], __setShiftKeyTimeout_dec = [import_utils.bind], __setAltKeyTimeout_dec = [import_utils.bind], __setCtrlKeyTimeout_dec = [import_utils.bind], __setMetaKeyTimeout_dec = [import_utils.bind], _a) {
126
+ var __setMetaKeyTimeout_dec, __setCtrlKeyTimeout_dec, __setAltKeyTimeout_dec, __setShiftKeyTimeout_dec, _getIsReadonly_dec, _getIsFocused_dec, _getSharedOpacity_dec, _getSharedStyles_dec, __getSelectionSharedStyles_dec, __getBindingsIndexCache_dec, _getCurrentPageRenderingShapesSorted_dec, _getCurrentPageShapesSorted_dec, _getCurrentPageShapes_dec, _getCurrentPageBounds_dec, _getCulledShapes_dec, _getNotVisibleShapes_dec, __getShapeMaskedPageBoundsCache_dec, __getShapeMaskCache_dec, __getShapeClipPathCache_dec, __getShapePageBoundsCache_dec, __getShapePageTransformCache_dec, __getShapeHandlesCache_dec, __getAllAssetsQuery_dec, _getCurrentPageShapeIdsSorted_dec, _getCurrentPageId_dec, _getPages_dec, __getAllPagesQuery_dec, _getRenderingShapes_dec, _getCollaboratorsOnCurrentPage_dec, _getCollaborators_dec, __getCollaboratorsQuery_dec, _getViewportPageBounds_dec, _getViewportScreenCenter_dec, _getViewportScreenBounds_dec, _getZoomLevel_dec, _getCameraForFollowing_dec, _getViewportPageBoundsForFollowing_dec, _getCamera_dec, __unsafe_getCameraId_dec, _getErasingShapes_dec, _getErasingShapeIds_dec, _getHintingShape_dec, _getHintingShapeIds_dec, _getHoveredShape_dec, _getHoveredShapeId_dec, _getRichTextEditor_dec, _getEditingShape_dec, _getEditingShapeId_dec, _getFocusedGroup_dec, _getFocusedGroupId_dec, _getSelectionRotatedScreenBounds_dec, _getSelectionRotatedPageBounds_dec, _getSelectionRotation_dec, _getSelectionPageBounds_dec, _getOnlySelectedShape_dec, _getOnlySelectedShapeId_dec, _getCurrentPageShapesInReadingOrder_dec, _getSelectedShapes_dec, _getSelectedShapeIds_dec, __getCurrentPageStateId_dec, _getCurrentPageState_dec, __getPageStatesQuery_dec, _getPageStates_dec, _getIsMenuOpen_dec, _getOpenMenus_dec, _getInstanceState_dec, _getDocumentSettings_dec, _getCurrentToolId_dec, _getCurrentTool_dec, _getPath_dec, _getCanRedo_dec, _getCanUndo_dec, _getIsShapeHiddenCache_dec, _a, _init;
127
+ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_dec = [import_state.computed], _getCanUndo_dec = [import_state.computed], _getCanRedo_dec = [import_state.computed], _getPath_dec = [import_state.computed], _getCurrentTool_dec = [import_state.computed], _getCurrentToolId_dec = [import_state.computed], _getDocumentSettings_dec = [import_state.computed], _getInstanceState_dec = [import_state.computed], _getOpenMenus_dec = [import_state.computed], _getIsMenuOpen_dec = [import_state.computed], _getPageStates_dec = [import_state.computed], __getPageStatesQuery_dec = [import_state.computed], _getCurrentPageState_dec = [import_state.computed], __getCurrentPageStateId_dec = [import_state.computed], _getSelectedShapeIds_dec = [import_state.computed], _getSelectedShapes_dec = [import_state.computed], _getCurrentPageShapesInReadingOrder_dec = [import_state.computed], _getOnlySelectedShapeId_dec = [import_state.computed], _getOnlySelectedShape_dec = [import_state.computed], _getSelectionPageBounds_dec = [import_state.computed], _getSelectionRotation_dec = [import_state.computed], _getSelectionRotatedPageBounds_dec = [import_state.computed], _getSelectionRotatedScreenBounds_dec = [import_state.computed], _getFocusedGroupId_dec = [import_state.computed], _getFocusedGroup_dec = [import_state.computed], _getEditingShapeId_dec = [import_state.computed], _getEditingShape_dec = [import_state.computed], _getRichTextEditor_dec = [import_state.computed], _getHoveredShapeId_dec = [import_state.computed], _getHoveredShape_dec = [import_state.computed], _getHintingShapeIds_dec = [import_state.computed], _getHintingShape_dec = [import_state.computed], _getErasingShapeIds_dec = [import_state.computed], _getErasingShapes_dec = [import_state.computed], __unsafe_getCameraId_dec = [import_state.computed], _getCamera_dec = [import_state.computed], _getViewportPageBoundsForFollowing_dec = [import_state.computed], _getCameraForFollowing_dec = [import_state.computed], _getZoomLevel_dec = [import_state.computed], _getViewportScreenBounds_dec = [import_state.computed], _getViewportScreenCenter_dec = [import_state.computed], _getViewportPageBounds_dec = [import_state.computed], __getCollaboratorsQuery_dec = [import_state.computed], _getCollaborators_dec = [import_state.computed], _getCollaboratorsOnCurrentPage_dec = [import_state.computed], _getRenderingShapes_dec = [import_state.computed], __getAllPagesQuery_dec = [import_state.computed], _getPages_dec = [import_state.computed], _getCurrentPageId_dec = [import_state.computed], _getCurrentPageShapeIdsSorted_dec = [import_state.computed], __getAllAssetsQuery_dec = [import_state.computed], __getShapeHandlesCache_dec = [import_state.computed], __getShapePageTransformCache_dec = [import_state.computed], __getShapePageBoundsCache_dec = [import_state.computed], __getShapeClipPathCache_dec = [import_state.computed], __getShapeMaskCache_dec = [import_state.computed], __getShapeMaskedPageBoundsCache_dec = [import_state.computed], _getNotVisibleShapes_dec = [import_state.computed], _getCulledShapes_dec = [import_state.computed], _getCurrentPageBounds_dec = [import_state.computed], _getCurrentPageShapes_dec = [import_state.computed], _getCurrentPageShapesSorted_dec = [import_state.computed], _getCurrentPageRenderingShapesSorted_dec = [import_state.computed], __getBindingsIndexCache_dec = [import_state.computed], __getSelectionSharedStyles_dec = [import_state.computed], _getSharedStyles_dec = [(0, import_state.computed)({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [import_state.computed], _getIsFocused_dec = [import_state.computed], _getIsReadonly_dec = [import_state.computed], __setShiftKeyTimeout_dec = [import_utils.bind], __setAltKeyTimeout_dec = [import_utils.bind], __setCtrlKeyTimeout_dec = [import_utils.bind], __setMetaKeyTimeout_dec = [import_utils.bind], _a) {
128
128
  constructor({
129
129
  store,
130
130
  user,
@@ -302,7 +302,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
302
302
  __publicField(this, "_currentPageShapeIds");
303
303
  /* --------------------- Shapes --------------------- */
304
304
  __publicField(this, "_shapeGeometryCaches", {});
305
- __publicField(this, "_shapePageGeometryCaches", {});
305
+ __publicField(this, "_notVisibleShapes", (0, import_notVisibleShapes.notVisibleShapes)(this));
306
306
  // Parents and children
307
307
  /**
308
308
  * A cache of parents to children.
@@ -323,6 +323,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
323
323
  __publicField(this, "externalContentHandlers", {
324
324
  text: null,
325
325
  files: null,
326
+ "file-replace": null,
326
327
  embed: null,
327
328
  "svg-text": null,
328
329
  url: null,
@@ -439,6 +440,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
439
440
  this.disposables.add(() => this.user.dispose());
440
441
  this.getContainer = getContainer;
441
442
  this.textMeasure = new import_TextManager.TextManager(this);
443
+ this.disposables.add(() => this.textMeasure.dispose());
442
444
  this.fonts = new import_FontManager.FontManager(this, fontAssetUrls);
443
445
  this._tickManager = new import_TickManager.TickManager(this);
444
446
  class NewRoot extends import_RootState.RootState {
@@ -559,20 +561,21 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
559
561
  shape: {
560
562
  afterChange: (shapeBefore, shapeAfter) => {
561
563
  for (const binding of this.getBindingsInvolvingShape(shapeAfter)) {
562
- if ((0, import_areShapesContentEqual.areShapesContentEqual)(shapeBefore, shapeAfter)) continue;
563
564
  invalidBindingTypes.add(binding.type);
564
565
  if (binding.fromId === shapeAfter.id) {
565
566
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
566
567
  binding,
567
568
  shapeBefore,
568
- shapeAfter
569
+ shapeAfter,
570
+ reason: "self"
569
571
  });
570
572
  }
571
573
  if (binding.toId === shapeAfter.id) {
572
574
  this.getBindingUtil(binding).onAfterChangeToShape?.({
573
575
  binding,
574
576
  shapeBefore,
575
- shapeAfter
577
+ shapeAfter,
578
+ reason: "self"
576
579
  });
577
580
  }
578
581
  }
@@ -586,14 +589,16 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
586
589
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
587
590
  binding,
588
591
  shapeBefore: descendantShape,
589
- shapeAfter: descendantShape
592
+ shapeAfter: descendantShape,
593
+ reason: "ancestry"
590
594
  });
591
595
  }
592
596
  if (binding.toId === descendantShape.id) {
593
597
  this.getBindingUtil(binding).onAfterChangeToShape?.({
594
598
  binding,
595
599
  shapeBefore: descendantShape,
596
- shapeAfter: descendantShape
600
+ shapeAfter: descendantShape,
601
+ reason: "ancestry"
597
602
  });
598
603
  }
599
604
  }
@@ -1637,6 +1642,19 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1637
1642
  getSelectionPageBounds() {
1638
1643
  return this.getShapesPageBounds(this.getSelectedShapeIds());
1639
1644
  }
1645
+ /**
1646
+ * The bounds of the selection bounding box in the current page space.
1647
+ *
1648
+ * @readonly
1649
+ * @public
1650
+ */
1651
+ getSelectionScreenBounds() {
1652
+ const bounds = this.getSelectionPageBounds();
1653
+ if (!bounds) return void 0;
1654
+ const { x, y } = this.pageToScreen(bounds.point);
1655
+ const zoom = this.getZoomLevel();
1656
+ return new import_Box.Box(x, y, bounds.width * zoom, bounds.height * zoom);
1657
+ }
1640
1658
  /**
1641
1659
  * @internal
1642
1660
  */
@@ -2820,10 +2838,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
2820
2838
  }
2821
2839
  getViewportScreenCenter() {
2822
2840
  const viewportScreenBounds = this.getViewportScreenBounds();
2823
- return new import_Vec.Vec(
2824
- viewportScreenBounds.midX - viewportScreenBounds.minX,
2825
- viewportScreenBounds.midY - viewportScreenBounds.minY
2826
- );
2841
+ return new import_Vec.Vec(viewportScreenBounds.w / 2, viewportScreenBounds.h / 2);
2827
2842
  }
2828
2843
  getViewportPageBounds() {
2829
2844
  const { w, h } = this.getViewportScreenBounds();
@@ -3498,41 +3513,6 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3498
3513
  typeof shape === "string" ? shape : shape.id
3499
3514
  );
3500
3515
  }
3501
- /**
3502
- * Get the geometry of a shape in page-space.
3503
- *
3504
- * @example
3505
- * ```ts
3506
- * editor.getShapePageGeometry(myShape)
3507
- * editor.getShapePageGeometry(myShapeId)
3508
- * editor.getShapePageGeometry(myShapeId, { context: "arrow" })
3509
- * ```
3510
- *
3511
- * @param shape - The shape (or shape id) to get the geometry for.
3512
- * @param opts - Additional options about the request for geometry. Passed to {@link ShapeUtil.getGeometry}.
3513
- *
3514
- * @public
3515
- */
3516
- getShapePageGeometry(shape, opts) {
3517
- const context = opts?.context ?? "none";
3518
- if (!this._shapePageGeometryCaches[context]) {
3519
- this._shapePageGeometryCaches[context] = this.store.createComputedCache(
3520
- "bounds",
3521
- (shape2) => {
3522
- const geometry = this.getShapeGeometry(shape2.id, opts);
3523
- const pageTransform = this.getShapePageTransform(shape2.id);
3524
- return geometry.transform(pageTransform);
3525
- },
3526
- {
3527
- // we only depend directly on the shape id, and changing geometry/transform will update us anyway
3528
- areRecordsEqual: () => true
3529
- }
3530
- );
3531
- }
3532
- return this._shapePageGeometryCaches[context].get(
3533
- typeof shape === "string" ? shape : shape.id
3534
- );
3535
- }
3536
3516
  _getShapeHandlesCache() {
3537
3517
  return this.store.createComputedCache(
3538
3518
  "handles",
@@ -3626,7 +3606,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3626
3606
  }
3627
3607
  _getShapePageBoundsCache() {
3628
3608
  return this.store.createComputedCache("pageBoundsCache", (shape) => {
3629
- return this.getShapePageGeometry(shape).bounds;
3609
+ const pageTransform = this.getShapePageTransform(shape);
3610
+ if (!pageTransform) return void 0;
3611
+ const geometry = this.getShapeGeometry(shape);
3612
+ return import_Box.Box.FromPoints(pageTransform.applyToPoints(geometry.vertices));
3630
3613
  });
3631
3614
  }
3632
3615
  /**
@@ -3683,12 +3666,11 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3683
3666
  (shape2) => this.isShapeOfType(shape2, "frame")
3684
3667
  );
3685
3668
  if (frameAncestors.length === 0) return void 0;
3686
- const pageMask = frameAncestors.map(
3687
- (s) => (
3688
- // Apply the frame transform to the frame outline to get the frame outline in the current page space
3689
- this.getShapePageGeometry(s.id).vertices
3690
- )
3691
- ).reduce((acc, b) => {
3669
+ const pageMask = frameAncestors.map((s) => {
3670
+ const geometry = this.getShapeGeometry(s.id);
3671
+ const pageTransform = this.getShapePageTransform(s.id);
3672
+ return pageTransform.applyToPoints(geometry.vertices);
3673
+ }).reduce((acc, b) => {
3692
3674
  if (!(b && acc)) return void 0;
3693
3675
  const intersection = (0, import_intersect.intersectPolygonPolygon)(acc, b);
3694
3676
  if (intersection) {
@@ -3852,17 +3834,24 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3852
3834
  }
3853
3835
  return void 0;
3854
3836
  }
3855
- isShapeOrAncestorLocked(arg) {
3856
- const shape = typeof arg === "string" ? this.getShape(arg) : arg;
3857
- if (shape === void 0) return false;
3858
- if (shape.isLocked) return true;
3859
- return this.isShapeOrAncestorLocked(this.getShapeParent(shape));
3837
+ /**
3838
+ * Check whether a shape or its parent is locked.
3839
+ *
3840
+ * @param shape - The shape (or shape id) to check.
3841
+ *
3842
+ * @public
3843
+ */
3844
+ isShapeOrAncestorLocked(shape) {
3845
+ const _shape = shape && this.getShape(shape);
3846
+ if (_shape === void 0) return false;
3847
+ if (_shape.isLocked) return true;
3848
+ return this.isShapeOrAncestorLocked(this.getShapeParent(_shape));
3860
3849
  }
3861
- _notVisibleShapes() {
3862
- return (0, import_notVisibleShapes.notVisibleShapes)(this);
3850
+ getNotVisibleShapes() {
3851
+ return this._notVisibleShapes.get();
3863
3852
  }
3864
3853
  getCulledShapes() {
3865
- const notVisibleShapes2 = this._notVisibleShapes().get();
3854
+ const notVisibleShapes2 = this.getNotVisibleShapes();
3866
3855
  const selectedShapeIds = this.getSelectedShapeIds();
3867
3856
  const editingId = this.getEditingShapeId();
3868
3857
  const culledShapes = new Set(notVisibleShapes2);
@@ -4007,18 +3996,18 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
4007
3996
  * @example
4008
3997
  * ```ts
4009
3998
  * editor.getShapesAtPoint({ x: 100, y: 100 })
4010
- * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, exact: true })
3999
+ * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, margin: 8 })
4011
4000
  * ```
4012
4001
  *
4013
4002
  * @param point - The page point to test.
4014
4003
  * @param opts - The options for the hit point testing.
4015
4004
  *
4005
+ * @returns An array of shapes at the given point, sorted in reverse order of their absolute z-index (top-most shape first).
4006
+ *
4016
4007
  * @public
4017
4008
  */
4018
4009
  getShapesAtPoint(point, opts = {}) {
4019
- return this.getCurrentPageShapes().filter(
4020
- (shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)
4021
- );
4010
+ return this.getCurrentPageShapesSorted().filter((shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)).reverse();
4022
4011
  }
4023
4012
  /**
4024
4013
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
@@ -4668,7 +4657,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
4668
4657
  */
4669
4658
  duplicateShapes(shapes, offset) {
4670
4659
  this.run(() => {
4671
- const ids = typeof shapes[0] === "string" ? shapes : shapes.map((s) => s.id);
4660
+ const _ids = typeof shapes[0] === "string" ? shapes : shapes.map((s) => s.id);
4661
+ const ids = this._shouldIgnoreShapeLock ? _ids : this._getUnlockedShapeIds(_ids);
4672
4662
  if (ids.length <= 0) return this;
4673
4663
  const initialIds = new Set(ids);
4674
4664
  const shapeIdSet = this.getShapeAndDescendantIds(ids);
@@ -5876,6 +5866,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5876
5866
  ...shape.meta
5877
5867
  };
5878
5868
  });
5869
+ this.emit("created-shapes", shapeRecordsToCreate);
5870
+ this.emit("edit");
5879
5871
  this.store.put(shapeRecordsToCreate);
5880
5872
  });
5881
5873
  return this;
@@ -6117,6 +6109,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
6117
6109
  updated = this.getShapeUtil(shape).onBeforeUpdate?.(shape, updated) ?? updated;
6118
6110
  updates.push(updated);
6119
6111
  }
6112
+ this.emit("edited-shapes", updates);
6113
+ this.emit("edit");
6120
6114
  this.store.put(updates);
6121
6115
  });
6122
6116
  }
@@ -6138,6 +6132,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
6138
6132
  allShapeIdsToDelete.add(childId);
6139
6133
  });
6140
6134
  }
6135
+ this.emit("deleted-shapes", [...allShapeIdsToDelete]);
6136
+ this.emit("edit");
6141
6137
  return this.run(() => this.store.remove([...allShapeIdsToDelete]));
6142
6138
  }
6143
6139
  deleteShape(_id) {
@@ -6481,6 +6477,14 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
6481
6477
  async putExternalContent(info) {
6482
6478
  return this.externalContentHandlers[info.type]?.(info);
6483
6479
  }
6480
+ /**
6481
+ * Handle replacing external content.
6482
+ *
6483
+ * @param info - Info about the external content.
6484
+ */
6485
+ async replaceExternalContent(info) {
6486
+ return this.externalContentHandlers[info.type]?.(info);
6487
+ }
6484
6488
  /**
6485
6489
  * Get content that can be exported for the given shape ids.
6486
6490
  *
@@ -7807,7 +7811,7 @@ __decorateElement(_init, 1, "_getShapePageBoundsCache", __getShapePageBoundsCach
7807
7811
  __decorateElement(_init, 1, "_getShapeClipPathCache", __getShapeClipPathCache_dec, Editor);
7808
7812
  __decorateElement(_init, 1, "_getShapeMaskCache", __getShapeMaskCache_dec, Editor);
7809
7813
  __decorateElement(_init, 1, "_getShapeMaskedPageBoundsCache", __getShapeMaskedPageBoundsCache_dec, Editor);
7810
- __decorateElement(_init, 1, "_notVisibleShapes", __notVisibleShapes_dec, Editor);
7814
+ __decorateElement(_init, 1, "getNotVisibleShapes", _getNotVisibleShapes_dec, Editor);
7811
7815
  __decorateElement(_init, 1, "getCulledShapes", _getCulledShapes_dec, Editor);
7812
7816
  __decorateElement(_init, 1, "getCurrentPageBounds", _getCurrentPageBounds_dec, Editor);
7813
7817
  __decorateElement(_init, 1, "getCurrentPageShapes", _getCurrentPageShapes_dec, Editor);