@tldraw/editor 3.14.0-canary.1d0f4286490b → 3.14.0-canary.203107797804

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 (161) hide show
  1. package/dist-cjs/index.d.ts +68 -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 +75 -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/external-content.js.map +1 -1
  36. package/dist-cjs/lib/exports/getSvgJsx.js.map +1 -1
  37. package/dist-cjs/lib/hooks/useCanvasEvents.js +1 -2
  38. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  39. package/dist-cjs/lib/primitives/Box.js +33 -39
  40. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  41. package/dist-cjs/lib/utils/areShapesContentEqual.js +1 -1
  42. package/dist-cjs/lib/utils/areShapesContentEqual.js.map +2 -2
  43. package/dist-cjs/lib/utils/reorderShapes.js +11 -10
  44. package/dist-cjs/lib/utils/reorderShapes.js.map +2 -2
  45. package/dist-cjs/lib/utils/richText.js +7 -2
  46. package/dist-cjs/lib/utils/richText.js.map +2 -2
  47. package/dist-cjs/version.js +3 -3
  48. package/dist-cjs/version.js.map +1 -1
  49. package/dist-esm/index.d.mts +68 -63
  50. package/dist-esm/index.mjs +12 -10
  51. package/dist-esm/index.mjs.map +2 -2
  52. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs +1 -1
  53. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs.map +2 -2
  54. package/dist-esm/lib/editor/Editor.mjs +75 -77
  55. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  56. package/dist-esm/lib/editor/bindings/BindingUtil.mjs.map +2 -2
  57. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +22 -22
  58. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  59. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +16 -16
  60. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  61. package/dist-esm/lib/editor/managers/{ClickManager.mjs → ClickManager/ClickManager.mjs} +1 -1
  62. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +7 -0
  63. package/dist-esm/lib/editor/managers/{EdgeScrollManager.mjs → EdgeScrollManager/EdgeScrollManager.mjs} +2 -2
  64. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +7 -0
  65. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +7 -0
  66. package/dist-esm/lib/editor/managers/{FontManager.mjs → FontManager/FontManager.mjs} +4 -1
  67. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +7 -0
  68. package/dist-esm/lib/editor/managers/{HistoryManager.mjs → HistoryManager/HistoryManager.mjs} +60 -2
  69. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs.map +7 -0
  70. package/dist-esm/lib/editor/managers/{ScribbleManager.mjs → ScribbleManager/ScribbleManager.mjs} +1 -1
  71. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +7 -0
  72. package/dist-esm/lib/editor/managers/{TextManager.mjs → TextManager/TextManager.mjs} +73 -42
  73. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +7 -0
  74. package/dist-esm/lib/editor/managers/{TickManager.mjs → TickManager/TickManager.mjs} +1 -1
  75. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +7 -0
  76. package/dist-esm/lib/editor/managers/{UserPreferencesManager.mjs → UserPreferencesManager/UserPreferencesManager.mjs} +1 -1
  77. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +7 -0
  78. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +1 -1
  79. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +1 -1
  80. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +1 -1
  81. package/dist-esm/lib/editor/tools/StateNode.mjs +3 -3
  82. package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
  83. package/dist-esm/lib/exports/getSvgJsx.mjs.map +1 -1
  84. package/dist-esm/lib/hooks/useCanvasEvents.mjs +1 -2
  85. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  86. package/dist-esm/lib/primitives/Box.mjs +33 -39
  87. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  88. package/dist-esm/lib/utils/areShapesContentEqual.mjs +1 -1
  89. package/dist-esm/lib/utils/areShapesContentEqual.mjs.map +2 -2
  90. package/dist-esm/lib/utils/reorderShapes.mjs +11 -10
  91. package/dist-esm/lib/utils/reorderShapes.mjs.map +2 -2
  92. package/dist-esm/lib/utils/richText.mjs +8 -3
  93. package/dist-esm/lib/utils/richText.mjs.map +2 -2
  94. package/dist-esm/version.mjs +3 -3
  95. package/dist-esm/version.mjs.map +1 -1
  96. package/editor.css +433 -482
  97. package/package.json +8 -9
  98. package/src/index.ts +15 -8
  99. package/src/lib/config/TLSessionStateSnapshot.ts +1 -1
  100. package/src/lib/editor/Editor.test.ts +252 -3
  101. package/src/lib/editor/Editor.ts +76 -76
  102. package/src/lib/editor/bindings/BindingUtil.ts +6 -0
  103. package/src/lib/editor/derivations/bindingsIndex.ts +27 -26
  104. package/src/lib/editor/derivations/parentsToChildren.ts +28 -25
  105. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +442 -0
  106. package/src/lib/editor/managers/{ClickManager.ts → ClickManager/ClickManager.ts} +3 -3
  107. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +374 -0
  108. package/src/lib/editor/managers/{EdgeScrollManager.ts → EdgeScrollManager/EdgeScrollManager.ts} +3 -3
  109. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +455 -0
  110. package/src/lib/editor/managers/{FocusManager.ts → FocusManager/FocusManager.ts} +1 -1
  111. package/src/lib/editor/managers/FontManager/FontManager.test.ts +263 -0
  112. package/src/lib/editor/managers/{FontManager.ts → FontManager/FontManager.ts} +5 -2
  113. package/src/lib/editor/managers/{HistoryManager.test.ts → HistoryManager/HistoryManager.test.ts} +388 -1
  114. package/src/lib/editor/managers/{HistoryManager.ts → HistoryManager/HistoryManager.ts} +73 -2
  115. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +624 -0
  116. package/src/lib/editor/managers/{ScribbleManager.ts → ScribbleManager/ScribbleManager.ts} +2 -2
  117. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +485 -0
  118. package/src/lib/editor/managers/TextManager/TextManager.test.ts +407 -0
  119. package/src/lib/editor/managers/{TextManager.ts → TextManager/TextManager.ts} +118 -87
  120. package/src/lib/editor/managers/TickManager/TickManager.test.ts +314 -0
  121. package/src/lib/editor/managers/{TickManager.ts → TickManager/TickManager.ts} +2 -2
  122. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +591 -0
  123. package/src/lib/editor/managers/{UserPreferencesManager.ts → UserPreferencesManager/UserPreferencesManager.ts} +2 -2
  124. package/src/lib/editor/shapes/ShapeUtil.ts +1 -1
  125. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +1 -1
  126. package/src/lib/editor/tools/StateNode.ts +3 -3
  127. package/src/lib/editor/types/external-content.ts +11 -2
  128. package/src/lib/exports/getSvgJsx.tsx +1 -1
  129. package/src/lib/hooks/useCanvasEvents.ts +0 -1
  130. package/src/lib/primitives/Box.test.ts +588 -7
  131. package/src/lib/primitives/Box.ts +33 -41
  132. package/src/lib/utils/areShapesContentEqual.ts +1 -2
  133. package/src/lib/utils/reorderShapes.ts +10 -13
  134. package/src/lib/utils/richText.ts +10 -4
  135. package/src/version.ts +3 -3
  136. package/dist-cjs/lib/editor/managers/ClickManager.js.map +0 -7
  137. package/dist-cjs/lib/editor/managers/EdgeScrollManager.js.map +0 -7
  138. package/dist-cjs/lib/editor/managers/FocusManager.js.map +0 -7
  139. package/dist-cjs/lib/editor/managers/FontManager.js.map +0 -7
  140. package/dist-cjs/lib/editor/managers/HistoryManager.js.map +0 -7
  141. package/dist-cjs/lib/editor/managers/ScribbleManager.js.map +0 -7
  142. package/dist-cjs/lib/editor/managers/Stack.js +0 -82
  143. package/dist-cjs/lib/editor/managers/Stack.js.map +0 -7
  144. package/dist-cjs/lib/editor/managers/TextManager.js.map +0 -7
  145. package/dist-cjs/lib/editor/managers/TickManager.js.map +0 -7
  146. package/dist-cjs/lib/editor/managers/UserPreferencesManager.js.map +0 -7
  147. package/dist-esm/lib/editor/managers/ClickManager.mjs.map +0 -7
  148. package/dist-esm/lib/editor/managers/EdgeScrollManager.mjs.map +0 -7
  149. package/dist-esm/lib/editor/managers/FocusManager.mjs.map +0 -7
  150. package/dist-esm/lib/editor/managers/FontManager.mjs.map +0 -7
  151. package/dist-esm/lib/editor/managers/HistoryManager.mjs.map +0 -7
  152. package/dist-esm/lib/editor/managers/ScribbleManager.mjs.map +0 -7
  153. package/dist-esm/lib/editor/managers/Stack.mjs +0 -62
  154. package/dist-esm/lib/editor/managers/Stack.mjs.map +0 -7
  155. package/dist-esm/lib/editor/managers/TextManager.mjs.map +0 -7
  156. package/dist-esm/lib/editor/managers/TickManager.mjs.map +0 -7
  157. package/dist-esm/lib/editor/managers/UserPreferencesManager.mjs.map +0 -7
  158. package/src/lib/editor/managers/ScribbleManager.test.ts +0 -32
  159. package/src/lib/editor/managers/Stack.ts +0 -71
  160. /package/dist-cjs/lib/editor/managers/{FocusManager.js → FocusManager/FocusManager.js} +0 -0
  161. /package/dist-esm/lib/editor/managers/{FocusManager.mjs → FocusManager/FocusManager.mjs} +0 -0
@@ -46,7 +46,7 @@ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use
46
46
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
47
47
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
48
48
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
49
- 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;
49
+ 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;
50
50
  import {
51
51
  EMPTY_ARRAY,
52
52
  atom,
@@ -147,18 +147,18 @@ import { bindingsIndex } from "./derivations/bindingsIndex.mjs";
147
147
  import { notVisibleShapes } from "./derivations/notVisibleShapes.mjs";
148
148
  import { parentsToChildren } from "./derivations/parentsToChildren.mjs";
149
149
  import { deriveShapeIdsInCurrentPage } from "./derivations/shapeIdsInCurrentPage.mjs";
150
- import { ClickManager } from "./managers/ClickManager.mjs";
151
- import { EdgeScrollManager } from "./managers/EdgeScrollManager.mjs";
152
- import { FocusManager } from "./managers/FocusManager.mjs";
153
- import { FontManager } from "./managers/FontManager.mjs";
154
- import { HistoryManager } from "./managers/HistoryManager.mjs";
155
- import { ScribbleManager } from "./managers/ScribbleManager.mjs";
150
+ import { ClickManager } from "./managers/ClickManager/ClickManager.mjs";
151
+ import { EdgeScrollManager } from "./managers/EdgeScrollManager/EdgeScrollManager.mjs";
152
+ import { FocusManager } from "./managers/FocusManager/FocusManager.mjs";
153
+ import { FontManager } from "./managers/FontManager/FontManager.mjs";
154
+ import { HistoryManager } from "./managers/HistoryManager/HistoryManager.mjs";
155
+ import { ScribbleManager } from "./managers/ScribbleManager/ScribbleManager.mjs";
156
156
  import { SnapManager } from "./managers/SnapManager/SnapManager.mjs";
157
- import { TextManager } from "./managers/TextManager.mjs";
158
- import { TickManager } from "./managers/TickManager.mjs";
159
- import { UserPreferencesManager } from "./managers/UserPreferencesManager.mjs";
157
+ import { TextManager } from "./managers/TextManager/TextManager.mjs";
158
+ import { TickManager } from "./managers/TickManager/TickManager.mjs";
159
+ import { UserPreferencesManager } from "./managers/UserPreferencesManager/UserPreferencesManager.mjs";
160
160
  import { RootState } from "./tools/RootState.mjs";
161
- class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed], _getCanUndo_dec = [computed], _getCanRedo_dec = [computed], _getPath_dec = [computed], _getCurrentTool_dec = [computed], _getCurrentToolId_dec = [computed], _getDocumentSettings_dec = [computed], _getInstanceState_dec = [computed], _getOpenMenus_dec = [computed], _getIsMenuOpen_dec = [computed], _getPageStates_dec = [computed], __getPageStatesQuery_dec = [computed], _getCurrentPageState_dec = [computed], __getCurrentPageStateId_dec = [computed], _getSelectedShapeIds_dec = [computed], _getSelectedShapes_dec = [computed], _getCurrentPageShapesInReadingOrder_dec = [computed], _getOnlySelectedShapeId_dec = [computed], _getOnlySelectedShape_dec = [computed], _getSelectionPageBounds_dec = [computed], _getSelectionRotation_dec = [computed], _getSelectionRotatedPageBounds_dec = [computed], _getSelectionRotatedScreenBounds_dec = [computed], _getFocusedGroupId_dec = [computed], _getFocusedGroup_dec = [computed], _getEditingShapeId_dec = [computed], _getEditingShape_dec = [computed], _getRichTextEditor_dec = [computed], _getHoveredShapeId_dec = [computed], _getHoveredShape_dec = [computed], _getHintingShapeIds_dec = [computed], _getHintingShape_dec = [computed], _getErasingShapeIds_dec = [computed], _getErasingShapes_dec = [computed], __unsafe_getCameraId_dec = [computed], _getCamera_dec = [computed], _getViewportPageBoundsForFollowing_dec = [computed], _getCameraForFollowing_dec = [computed], _getZoomLevel_dec = [computed], _getViewportScreenBounds_dec = [computed], _getViewportScreenCenter_dec = [computed], _getViewportPageBounds_dec = [computed], __getCollaboratorsQuery_dec = [computed], _getCollaborators_dec = [computed], _getCollaboratorsOnCurrentPage_dec = [computed], _getRenderingShapes_dec = [computed], __getAllPagesQuery_dec = [computed], _getPages_dec = [computed], _getCurrentPageId_dec = [computed], _getCurrentPageShapeIdsSorted_dec = [computed], __getAllAssetsQuery_dec = [computed], __getShapeHandlesCache_dec = [computed], __getShapePageTransformCache_dec = [computed], __getShapePageBoundsCache_dec = [computed], __getShapeClipPathCache_dec = [computed], __getShapeMaskCache_dec = [computed], __getShapeMaskedPageBoundsCache_dec = [computed], __notVisibleShapes_dec = [computed], _getCulledShapes_dec = [computed], _getCurrentPageBounds_dec = [computed], _getCurrentPageShapes_dec = [computed], _getCurrentPageShapesSorted_dec = [computed], _getCurrentPageRenderingShapesSorted_dec = [computed], __getBindingsIndexCache_dec = [computed], __getSelectionSharedStyles_dec = [computed], _getSharedStyles_dec = [computed({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [computed], _getIsFocused_dec = [computed], _getIsReadonly_dec = [computed], __setShiftKeyTimeout_dec = [bind], __setAltKeyTimeout_dec = [bind], __setCtrlKeyTimeout_dec = [bind], __setMetaKeyTimeout_dec = [bind], _a) {
161
+ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed], _getCanUndo_dec = [computed], _getCanRedo_dec = [computed], _getPath_dec = [computed], _getCurrentTool_dec = [computed], _getCurrentToolId_dec = [computed], _getDocumentSettings_dec = [computed], _getInstanceState_dec = [computed], _getOpenMenus_dec = [computed], _getIsMenuOpen_dec = [computed], _getPageStates_dec = [computed], __getPageStatesQuery_dec = [computed], _getCurrentPageState_dec = [computed], __getCurrentPageStateId_dec = [computed], _getSelectedShapeIds_dec = [computed], _getSelectedShapes_dec = [computed], _getCurrentPageShapesInReadingOrder_dec = [computed], _getOnlySelectedShapeId_dec = [computed], _getOnlySelectedShape_dec = [computed], _getSelectionPageBounds_dec = [computed], _getSelectionRotation_dec = [computed], _getSelectionRotatedPageBounds_dec = [computed], _getSelectionRotatedScreenBounds_dec = [computed], _getFocusedGroupId_dec = [computed], _getFocusedGroup_dec = [computed], _getEditingShapeId_dec = [computed], _getEditingShape_dec = [computed], _getRichTextEditor_dec = [computed], _getHoveredShapeId_dec = [computed], _getHoveredShape_dec = [computed], _getHintingShapeIds_dec = [computed], _getHintingShape_dec = [computed], _getErasingShapeIds_dec = [computed], _getErasingShapes_dec = [computed], __unsafe_getCameraId_dec = [computed], _getCamera_dec = [computed], _getViewportPageBoundsForFollowing_dec = [computed], _getCameraForFollowing_dec = [computed], _getZoomLevel_dec = [computed], _getViewportScreenBounds_dec = [computed], _getViewportScreenCenter_dec = [computed], _getViewportPageBounds_dec = [computed], __getCollaboratorsQuery_dec = [computed], _getCollaborators_dec = [computed], _getCollaboratorsOnCurrentPage_dec = [computed], _getRenderingShapes_dec = [computed], __getAllPagesQuery_dec = [computed], _getPages_dec = [computed], _getCurrentPageId_dec = [computed], _getCurrentPageShapeIdsSorted_dec = [computed], __getAllAssetsQuery_dec = [computed], __getShapeHandlesCache_dec = [computed], __getShapePageTransformCache_dec = [computed], __getShapePageBoundsCache_dec = [computed], __getShapeClipPathCache_dec = [computed], __getShapeMaskCache_dec = [computed], __getShapeMaskedPageBoundsCache_dec = [computed], _getNotVisibleShapes_dec = [computed], _getCulledShapes_dec = [computed], _getCurrentPageBounds_dec = [computed], _getCurrentPageShapes_dec = [computed], _getCurrentPageShapesSorted_dec = [computed], _getCurrentPageRenderingShapesSorted_dec = [computed], __getBindingsIndexCache_dec = [computed], __getSelectionSharedStyles_dec = [computed], _getSharedStyles_dec = [computed({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [computed], _getIsFocused_dec = [computed], _getIsReadonly_dec = [computed], __setShiftKeyTimeout_dec = [bind], __setAltKeyTimeout_dec = [bind], __setCtrlKeyTimeout_dec = [bind], __setMetaKeyTimeout_dec = [bind], _a) {
162
162
  constructor({
163
163
  store,
164
164
  user,
@@ -336,7 +336,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
336
336
  __publicField(this, "_currentPageShapeIds");
337
337
  /* --------------------- Shapes --------------------- */
338
338
  __publicField(this, "_shapeGeometryCaches", {});
339
- __publicField(this, "_shapePageGeometryCaches", {});
339
+ __publicField(this, "_notVisibleShapes", notVisibleShapes(this));
340
340
  // Parents and children
341
341
  /**
342
342
  * A cache of parents to children.
@@ -357,6 +357,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
357
357
  __publicField(this, "externalContentHandlers", {
358
358
  text: null,
359
359
  files: null,
360
+ "file-replace": null,
360
361
  embed: null,
361
362
  "svg-text": null,
362
363
  url: null,
@@ -473,6 +474,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
473
474
  this.disposables.add(() => this.user.dispose());
474
475
  this.getContainer = getContainer;
475
476
  this.textMeasure = new TextManager(this);
477
+ this.disposables.add(() => this.textMeasure.dispose());
476
478
  this.fonts = new FontManager(this, fontAssetUrls);
477
479
  this._tickManager = new TickManager(this);
478
480
  class NewRoot extends RootState {
@@ -593,20 +595,21 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
593
595
  shape: {
594
596
  afterChange: (shapeBefore, shapeAfter) => {
595
597
  for (const binding of this.getBindingsInvolvingShape(shapeAfter)) {
596
- if (areShapesContentEqual(shapeBefore, shapeAfter)) continue;
597
598
  invalidBindingTypes.add(binding.type);
598
599
  if (binding.fromId === shapeAfter.id) {
599
600
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
600
601
  binding,
601
602
  shapeBefore,
602
- shapeAfter
603
+ shapeAfter,
604
+ reason: "self"
603
605
  });
604
606
  }
605
607
  if (binding.toId === shapeAfter.id) {
606
608
  this.getBindingUtil(binding).onAfterChangeToShape?.({
607
609
  binding,
608
610
  shapeBefore,
609
- shapeAfter
611
+ shapeAfter,
612
+ reason: "self"
610
613
  });
611
614
  }
612
615
  }
@@ -620,14 +623,16 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
620
623
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
621
624
  binding,
622
625
  shapeBefore: descendantShape,
623
- shapeAfter: descendantShape
626
+ shapeAfter: descendantShape,
627
+ reason: "ancestry"
624
628
  });
625
629
  }
626
630
  if (binding.toId === descendantShape.id) {
627
631
  this.getBindingUtil(binding).onAfterChangeToShape?.({
628
632
  binding,
629
633
  shapeBefore: descendantShape,
630
- shapeAfter: descendantShape
634
+ shapeAfter: descendantShape,
635
+ reason: "ancestry"
631
636
  });
632
637
  }
633
638
  }
@@ -1671,6 +1676,19 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1671
1676
  getSelectionPageBounds() {
1672
1677
  return this.getShapesPageBounds(this.getSelectedShapeIds());
1673
1678
  }
1679
+ /**
1680
+ * The bounds of the selection bounding box in the current page space.
1681
+ *
1682
+ * @readonly
1683
+ * @public
1684
+ */
1685
+ getSelectionScreenBounds() {
1686
+ const bounds = this.getSelectionPageBounds();
1687
+ if (!bounds) return void 0;
1688
+ const { x, y } = this.pageToScreen(bounds.point);
1689
+ const zoom = this.getZoomLevel();
1690
+ return new Box(x, y, bounds.width * zoom, bounds.height * zoom);
1691
+ }
1674
1692
  /**
1675
1693
  * @internal
1676
1694
  */
@@ -2854,10 +2872,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
2854
2872
  }
2855
2873
  getViewportScreenCenter() {
2856
2874
  const viewportScreenBounds = this.getViewportScreenBounds();
2857
- return new Vec(
2858
- viewportScreenBounds.midX - viewportScreenBounds.minX,
2859
- viewportScreenBounds.midY - viewportScreenBounds.minY
2860
- );
2875
+ return new Vec(viewportScreenBounds.w / 2, viewportScreenBounds.h / 2);
2861
2876
  }
2862
2877
  getViewportPageBounds() {
2863
2878
  const { w, h } = this.getViewportScreenBounds();
@@ -3532,41 +3547,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3532
3547
  typeof shape === "string" ? shape : shape.id
3533
3548
  );
3534
3549
  }
3535
- /**
3536
- * Get the geometry of a shape in page-space.
3537
- *
3538
- * @example
3539
- * ```ts
3540
- * editor.getShapePageGeometry(myShape)
3541
- * editor.getShapePageGeometry(myShapeId)
3542
- * editor.getShapePageGeometry(myShapeId, { context: "arrow" })
3543
- * ```
3544
- *
3545
- * @param shape - The shape (or shape id) to get the geometry for.
3546
- * @param opts - Additional options about the request for geometry. Passed to {@link ShapeUtil.getGeometry}.
3547
- *
3548
- * @public
3549
- */
3550
- getShapePageGeometry(shape, opts) {
3551
- const context = opts?.context ?? "none";
3552
- if (!this._shapePageGeometryCaches[context]) {
3553
- this._shapePageGeometryCaches[context] = this.store.createComputedCache(
3554
- "bounds",
3555
- (shape2) => {
3556
- const geometry = this.getShapeGeometry(shape2.id, opts);
3557
- const pageTransform = this.getShapePageTransform(shape2.id);
3558
- return geometry.transform(pageTransform);
3559
- },
3560
- {
3561
- // we only depend directly on the shape id, and changing geometry/transform will update us anyway
3562
- areRecordsEqual: () => true
3563
- }
3564
- );
3565
- }
3566
- return this._shapePageGeometryCaches[context].get(
3567
- typeof shape === "string" ? shape : shape.id
3568
- );
3569
- }
3570
3550
  _getShapeHandlesCache() {
3571
3551
  return this.store.createComputedCache(
3572
3552
  "handles",
@@ -3660,7 +3640,10 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3660
3640
  }
3661
3641
  _getShapePageBoundsCache() {
3662
3642
  return this.store.createComputedCache("pageBoundsCache", (shape) => {
3663
- return this.getShapePageGeometry(shape).bounds;
3643
+ const pageTransform = this.getShapePageTransform(shape);
3644
+ if (!pageTransform) return void 0;
3645
+ const geometry = this.getShapeGeometry(shape);
3646
+ return Box.FromPoints(pageTransform.applyToPoints(geometry.vertices));
3664
3647
  });
3665
3648
  }
3666
3649
  /**
@@ -3717,12 +3700,11 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3717
3700
  (shape2) => this.isShapeOfType(shape2, "frame")
3718
3701
  );
3719
3702
  if (frameAncestors.length === 0) return void 0;
3720
- const pageMask = frameAncestors.map(
3721
- (s) => (
3722
- // Apply the frame transform to the frame outline to get the frame outline in the current page space
3723
- (this.getShapePageGeometry(s.id).vertices)
3724
- )
3725
- ).reduce((acc, b) => {
3703
+ const pageMask = frameAncestors.map((s) => {
3704
+ const geometry = this.getShapeGeometry(s.id);
3705
+ const pageTransform = this.getShapePageTransform(s.id);
3706
+ return pageTransform.applyToPoints(geometry.vertices);
3707
+ }).reduce((acc, b) => {
3726
3708
  if (!(b && acc)) return void 0;
3727
3709
  const intersection = intersectPolygonPolygon(acc, b);
3728
3710
  if (intersection) {
@@ -3886,17 +3868,24 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3886
3868
  }
3887
3869
  return void 0;
3888
3870
  }
3889
- isShapeOrAncestorLocked(arg) {
3890
- const shape = typeof arg === "string" ? this.getShape(arg) : arg;
3891
- if (shape === void 0) return false;
3892
- if (shape.isLocked) return true;
3893
- return this.isShapeOrAncestorLocked(this.getShapeParent(shape));
3871
+ /**
3872
+ * Check whether a shape or its parent is locked.
3873
+ *
3874
+ * @param shape - The shape (or shape id) to check.
3875
+ *
3876
+ * @public
3877
+ */
3878
+ isShapeOrAncestorLocked(shape) {
3879
+ const _shape = shape && this.getShape(shape);
3880
+ if (_shape === void 0) return false;
3881
+ if (_shape.isLocked) return true;
3882
+ return this.isShapeOrAncestorLocked(this.getShapeParent(_shape));
3894
3883
  }
3895
- _notVisibleShapes() {
3896
- return notVisibleShapes(this);
3884
+ getNotVisibleShapes() {
3885
+ return this._notVisibleShapes.get();
3897
3886
  }
3898
3887
  getCulledShapes() {
3899
- const notVisibleShapes2 = this._notVisibleShapes().get();
3888
+ const notVisibleShapes2 = this.getNotVisibleShapes();
3900
3889
  const selectedShapeIds = this.getSelectedShapeIds();
3901
3890
  const editingId = this.getEditingShapeId();
3902
3891
  const culledShapes = new Set(notVisibleShapes2);
@@ -4041,18 +4030,18 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4041
4030
  * @example
4042
4031
  * ```ts
4043
4032
  * editor.getShapesAtPoint({ x: 100, y: 100 })
4044
- * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, exact: true })
4033
+ * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, margin: 8 })
4045
4034
  * ```
4046
4035
  *
4047
4036
  * @param point - The page point to test.
4048
4037
  * @param opts - The options for the hit point testing.
4049
4038
  *
4039
+ * @returns An array of shapes at the given point, sorted in reverse order of their absolute z-index (top-most shape first).
4040
+ *
4050
4041
  * @public
4051
4042
  */
4052
4043
  getShapesAtPoint(point, opts = {}) {
4053
- return this.getCurrentPageShapes().filter(
4054
- (shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)
4055
- );
4044
+ return this.getCurrentPageShapesSorted().filter((shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)).reverse();
4056
4045
  }
4057
4046
  /**
4058
4047
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
@@ -4702,7 +4691,8 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4702
4691
  */
4703
4692
  duplicateShapes(shapes, offset) {
4704
4693
  this.run(() => {
4705
- const ids = typeof shapes[0] === "string" ? shapes : shapes.map((s) => s.id);
4694
+ const _ids = typeof shapes[0] === "string" ? shapes : shapes.map((s) => s.id);
4695
+ const ids = this._shouldIgnoreShapeLock ? _ids : this._getUnlockedShapeIds(_ids);
4706
4696
  if (ids.length <= 0) return this;
4707
4697
  const initialIds = new Set(ids);
4708
4698
  const shapeIdSet = this.getShapeAndDescendantIds(ids);
@@ -6515,6 +6505,14 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6515
6505
  async putExternalContent(info) {
6516
6506
  return this.externalContentHandlers[info.type]?.(info);
6517
6507
  }
6508
+ /**
6509
+ * Handle replacing external content.
6510
+ *
6511
+ * @param info - Info about the external content.
6512
+ */
6513
+ async replaceExternalContent(info) {
6514
+ return this.externalContentHandlers[info.type]?.(info);
6515
+ }
6518
6516
  /**
6519
6517
  * Get content that can be exported for the given shape ids.
6520
6518
  *
@@ -7841,7 +7839,7 @@ __decorateElement(_init, 1, "_getShapePageBoundsCache", __getShapePageBoundsCach
7841
7839
  __decorateElement(_init, 1, "_getShapeClipPathCache", __getShapeClipPathCache_dec, Editor);
7842
7840
  __decorateElement(_init, 1, "_getShapeMaskCache", __getShapeMaskCache_dec, Editor);
7843
7841
  __decorateElement(_init, 1, "_getShapeMaskedPageBoundsCache", __getShapeMaskedPageBoundsCache_dec, Editor);
7844
- __decorateElement(_init, 1, "_notVisibleShapes", __notVisibleShapes_dec, Editor);
7842
+ __decorateElement(_init, 1, "getNotVisibleShapes", _getNotVisibleShapes_dec, Editor);
7845
7843
  __decorateElement(_init, 1, "getCulledShapes", _getCulledShapes_dec, Editor);
7846
7844
  __decorateElement(_init, 1, "getCurrentPageBounds", _getCurrentPageBounds_dec, Editor);
7847
7845
  __decorateElement(_init, 1, "getCurrentPageShapes", _getCurrentPageShapes_dec, Editor);