@tldraw/editor 3.14.0-canary.a2263c31d532 → 3.14.0-canary.a44859ffd3c7

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 (156) hide show
  1. package/dist-cjs/index.d.ts +52 -61
  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 +59 -76
  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} +72 -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/types/external-content.js.map +1 -1
  34. package/dist-cjs/lib/exports/getSvgJsx.js.map +1 -1
  35. package/dist-cjs/lib/hooks/useCanvasEvents.js +1 -2
  36. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  37. package/dist-cjs/lib/primitives/Box.js +33 -39
  38. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  39. package/dist-cjs/lib/utils/areShapesContentEqual.js +1 -1
  40. package/dist-cjs/lib/utils/areShapesContentEqual.js.map +2 -2
  41. package/dist-cjs/lib/utils/reorderShapes.js +11 -10
  42. package/dist-cjs/lib/utils/reorderShapes.js.map +2 -2
  43. package/dist-cjs/lib/utils/richText.js +7 -2
  44. package/dist-cjs/lib/utils/richText.js.map +2 -2
  45. package/dist-cjs/version.js +3 -3
  46. package/dist-cjs/version.js.map +1 -1
  47. package/dist-esm/index.d.mts +52 -61
  48. package/dist-esm/index.mjs +12 -10
  49. package/dist-esm/index.mjs.map +2 -2
  50. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs +1 -1
  51. package/dist-esm/lib/config/TLSessionStateSnapshot.mjs.map +2 -2
  52. package/dist-esm/lib/editor/Editor.mjs +59 -76
  53. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  54. package/dist-esm/lib/editor/bindings/BindingUtil.mjs.map +2 -2
  55. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +22 -22
  56. package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
  57. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +16 -16
  58. package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
  59. package/dist-esm/lib/editor/managers/{ClickManager.mjs → ClickManager/ClickManager.mjs} +1 -1
  60. package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +7 -0
  61. package/dist-esm/lib/editor/managers/{EdgeScrollManager.mjs → EdgeScrollManager/EdgeScrollManager.mjs} +2 -2
  62. package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +7 -0
  63. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +7 -0
  64. package/dist-esm/lib/editor/managers/{FontManager.mjs → FontManager/FontManager.mjs} +4 -1
  65. package/dist-esm/lib/editor/managers/FontManager/FontManager.mjs.map +7 -0
  66. package/dist-esm/lib/editor/managers/{HistoryManager.mjs → HistoryManager/HistoryManager.mjs} +60 -2
  67. package/dist-esm/lib/editor/managers/HistoryManager/HistoryManager.mjs.map +7 -0
  68. package/dist-esm/lib/editor/managers/{ScribbleManager.mjs → ScribbleManager/ScribbleManager.mjs} +1 -1
  69. package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +7 -0
  70. package/dist-esm/lib/editor/managers/{TextManager.mjs → TextManager/TextManager.mjs} +72 -42
  71. package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +7 -0
  72. package/dist-esm/lib/editor/managers/{TickManager.mjs → TickManager/TickManager.mjs} +1 -1
  73. package/dist-esm/lib/editor/managers/TickManager/TickManager.mjs.map +7 -0
  74. package/dist-esm/lib/editor/managers/{UserPreferencesManager.mjs → UserPreferencesManager/UserPreferencesManager.mjs} +1 -1
  75. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +7 -0
  76. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +1 -1
  77. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +1 -1
  78. package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +1 -1
  79. package/dist-esm/lib/exports/getSvgJsx.mjs.map +1 -1
  80. package/dist-esm/lib/hooks/useCanvasEvents.mjs +1 -2
  81. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  82. package/dist-esm/lib/primitives/Box.mjs +33 -39
  83. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  84. package/dist-esm/lib/utils/areShapesContentEqual.mjs +1 -1
  85. package/dist-esm/lib/utils/areShapesContentEqual.mjs.map +2 -2
  86. package/dist-esm/lib/utils/reorderShapes.mjs +11 -10
  87. package/dist-esm/lib/utils/reorderShapes.mjs.map +2 -2
  88. package/dist-esm/lib/utils/richText.mjs +8 -3
  89. package/dist-esm/lib/utils/richText.mjs.map +2 -2
  90. package/dist-esm/version.mjs +3 -3
  91. package/dist-esm/version.mjs.map +1 -1
  92. package/editor.css +433 -482
  93. package/package.json +8 -9
  94. package/src/index.ts +14 -8
  95. package/src/lib/config/TLSessionStateSnapshot.ts +1 -1
  96. package/src/lib/editor/Editor.test.ts +252 -3
  97. package/src/lib/editor/Editor.ts +64 -75
  98. package/src/lib/editor/bindings/BindingUtil.ts +6 -0
  99. package/src/lib/editor/derivations/bindingsIndex.ts +27 -26
  100. package/src/lib/editor/derivations/parentsToChildren.ts +28 -25
  101. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +442 -0
  102. package/src/lib/editor/managers/{ClickManager.ts → ClickManager/ClickManager.ts} +3 -3
  103. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +374 -0
  104. package/src/lib/editor/managers/{EdgeScrollManager.ts → EdgeScrollManager/EdgeScrollManager.ts} +3 -3
  105. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +455 -0
  106. package/src/lib/editor/managers/{FocusManager.ts → FocusManager/FocusManager.ts} +1 -1
  107. package/src/lib/editor/managers/FontManager/FontManager.test.ts +263 -0
  108. package/src/lib/editor/managers/{FontManager.ts → FontManager/FontManager.ts} +5 -2
  109. package/src/lib/editor/managers/{HistoryManager.test.ts → HistoryManager/HistoryManager.test.ts} +388 -1
  110. package/src/lib/editor/managers/{HistoryManager.ts → HistoryManager/HistoryManager.ts} +73 -2
  111. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +624 -0
  112. package/src/lib/editor/managers/{ScribbleManager.ts → ScribbleManager/ScribbleManager.ts} +2 -2
  113. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +485 -0
  114. package/src/lib/editor/managers/TextManager/TextManager.test.ts +407 -0
  115. package/src/lib/editor/managers/{TextManager.ts → TextManager/TextManager.ts} +117 -87
  116. package/src/lib/editor/managers/TickManager/TickManager.test.ts +314 -0
  117. package/src/lib/editor/managers/{TickManager.ts → TickManager/TickManager.ts} +2 -2
  118. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +591 -0
  119. package/src/lib/editor/managers/{UserPreferencesManager.ts → UserPreferencesManager/UserPreferencesManager.ts} +2 -2
  120. package/src/lib/editor/shapes/ShapeUtil.ts +1 -1
  121. package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +1 -1
  122. package/src/lib/editor/types/external-content.ts +1 -1
  123. package/src/lib/exports/getSvgJsx.tsx +1 -1
  124. package/src/lib/hooks/useCanvasEvents.ts +0 -1
  125. package/src/lib/primitives/Box.test.ts +588 -7
  126. package/src/lib/primitives/Box.ts +33 -41
  127. package/src/lib/utils/areShapesContentEqual.ts +1 -2
  128. package/src/lib/utils/reorderShapes.ts +10 -13
  129. package/src/lib/utils/richText.ts +10 -4
  130. package/src/version.ts +3 -3
  131. package/dist-cjs/lib/editor/managers/ClickManager.js.map +0 -7
  132. package/dist-cjs/lib/editor/managers/EdgeScrollManager.js.map +0 -7
  133. package/dist-cjs/lib/editor/managers/FocusManager.js.map +0 -7
  134. package/dist-cjs/lib/editor/managers/FontManager.js.map +0 -7
  135. package/dist-cjs/lib/editor/managers/HistoryManager.js.map +0 -7
  136. package/dist-cjs/lib/editor/managers/ScribbleManager.js.map +0 -7
  137. package/dist-cjs/lib/editor/managers/Stack.js +0 -82
  138. package/dist-cjs/lib/editor/managers/Stack.js.map +0 -7
  139. package/dist-cjs/lib/editor/managers/TextManager.js.map +0 -7
  140. package/dist-cjs/lib/editor/managers/TickManager.js.map +0 -7
  141. package/dist-cjs/lib/editor/managers/UserPreferencesManager.js.map +0 -7
  142. package/dist-esm/lib/editor/managers/ClickManager.mjs.map +0 -7
  143. package/dist-esm/lib/editor/managers/EdgeScrollManager.mjs.map +0 -7
  144. package/dist-esm/lib/editor/managers/FocusManager.mjs.map +0 -7
  145. package/dist-esm/lib/editor/managers/FontManager.mjs.map +0 -7
  146. package/dist-esm/lib/editor/managers/HistoryManager.mjs.map +0 -7
  147. package/dist-esm/lib/editor/managers/ScribbleManager.mjs.map +0 -7
  148. package/dist-esm/lib/editor/managers/Stack.mjs +0 -62
  149. package/dist-esm/lib/editor/managers/Stack.mjs.map +0 -7
  150. package/dist-esm/lib/editor/managers/TextManager.mjs.map +0 -7
  151. package/dist-esm/lib/editor/managers/TickManager.mjs.map +0 -7
  152. package/dist-esm/lib/editor/managers/UserPreferencesManager.mjs.map +0 -7
  153. package/src/lib/editor/managers/ScribbleManager.test.ts +0 -32
  154. package/src/lib/editor/managers/Stack.ts +0 -71
  155. /package/dist-cjs/lib/editor/managers/{FocusManager.js → FocusManager/FocusManager.js} +0 -0
  156. /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, _getSelectionScreenBounds_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], _getSelectionScreenBounds_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.
@@ -473,6 +473,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
473
473
  this.disposables.add(() => this.user.dispose());
474
474
  this.getContainer = getContainer;
475
475
  this.textMeasure = new TextManager(this);
476
+ this.disposables.add(() => this.textMeasure.dispose());
476
477
  this.fonts = new FontManager(this, fontAssetUrls);
477
478
  this._tickManager = new TickManager(this);
478
479
  class NewRoot extends RootState {
@@ -593,20 +594,21 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
593
594
  shape: {
594
595
  afterChange: (shapeBefore, shapeAfter) => {
595
596
  for (const binding of this.getBindingsInvolvingShape(shapeAfter)) {
596
- if (areShapesContentEqual(shapeBefore, shapeAfter)) continue;
597
597
  invalidBindingTypes.add(binding.type);
598
598
  if (binding.fromId === shapeAfter.id) {
599
599
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
600
600
  binding,
601
601
  shapeBefore,
602
- shapeAfter
602
+ shapeAfter,
603
+ reason: "self"
603
604
  });
604
605
  }
605
606
  if (binding.toId === shapeAfter.id) {
606
607
  this.getBindingUtil(binding).onAfterChangeToShape?.({
607
608
  binding,
608
609
  shapeBefore,
609
- shapeAfter
610
+ shapeAfter,
611
+ reason: "self"
610
612
  });
611
613
  }
612
614
  }
@@ -620,14 +622,16 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
620
622
  this.getBindingUtil(binding).onAfterChangeFromShape?.({
621
623
  binding,
622
624
  shapeBefore: descendantShape,
623
- shapeAfter: descendantShape
625
+ shapeAfter: descendantShape,
626
+ reason: "ancestry"
624
627
  });
625
628
  }
626
629
  if (binding.toId === descendantShape.id) {
627
630
  this.getBindingUtil(binding).onAfterChangeToShape?.({
628
631
  binding,
629
632
  shapeBefore: descendantShape,
630
- shapeAfter: descendantShape
633
+ shapeAfter: descendantShape,
634
+ reason: "ancestry"
631
635
  });
632
636
  }
633
637
  }
@@ -1671,6 +1675,13 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1671
1675
  getSelectionPageBounds() {
1672
1676
  return this.getShapesPageBounds(this.getSelectedShapeIds());
1673
1677
  }
1678
+ getSelectionScreenBounds() {
1679
+ const bounds = this.getSelectionPageBounds();
1680
+ if (!bounds) return void 0;
1681
+ const { x, y } = this.pageToScreen(bounds.point);
1682
+ const zoom = this.getZoomLevel();
1683
+ return new Box(x, y, bounds.width * zoom, bounds.height * zoom);
1684
+ }
1674
1685
  /**
1675
1686
  * @internal
1676
1687
  */
@@ -2854,10 +2865,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
2854
2865
  }
2855
2866
  getViewportScreenCenter() {
2856
2867
  const viewportScreenBounds = this.getViewportScreenBounds();
2857
- return new Vec(
2858
- viewportScreenBounds.midX - viewportScreenBounds.minX,
2859
- viewportScreenBounds.midY - viewportScreenBounds.minY
2860
- );
2868
+ return new Vec(viewportScreenBounds.w / 2, viewportScreenBounds.h / 2);
2861
2869
  }
2862
2870
  getViewportPageBounds() {
2863
2871
  const { w, h } = this.getViewportScreenBounds();
@@ -3532,41 +3540,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3532
3540
  typeof shape === "string" ? shape : shape.id
3533
3541
  );
3534
3542
  }
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
3543
  _getShapeHandlesCache() {
3571
3544
  return this.store.createComputedCache(
3572
3545
  "handles",
@@ -3660,7 +3633,10 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3660
3633
  }
3661
3634
  _getShapePageBoundsCache() {
3662
3635
  return this.store.createComputedCache("pageBoundsCache", (shape) => {
3663
- return this.getShapePageGeometry(shape).bounds;
3636
+ const pageTransform = this.getShapePageTransform(shape);
3637
+ if (!pageTransform) return void 0;
3638
+ const geometry = this.getShapeGeometry(shape);
3639
+ return Box.FromPoints(pageTransform.applyToPoints(geometry.vertices));
3664
3640
  });
3665
3641
  }
3666
3642
  /**
@@ -3717,12 +3693,11 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3717
3693
  (shape2) => this.isShapeOfType(shape2, "frame")
3718
3694
  );
3719
3695
  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) => {
3696
+ const pageMask = frameAncestors.map((s) => {
3697
+ const geometry = this.getShapeGeometry(s.id);
3698
+ const pageTransform = this.getShapePageTransform(s.id);
3699
+ return pageTransform.applyToPoints(geometry.vertices);
3700
+ }).reduce((acc, b) => {
3726
3701
  if (!(b && acc)) return void 0;
3727
3702
  const intersection = intersectPolygonPolygon(acc, b);
3728
3703
  if (intersection) {
@@ -3886,17 +3861,24 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3886
3861
  }
3887
3862
  return void 0;
3888
3863
  }
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));
3864
+ /**
3865
+ * Check whether a shape or its parent is locked.
3866
+ *
3867
+ * @param shape - The shape (or shape id) to check.
3868
+ *
3869
+ * @public
3870
+ */
3871
+ isShapeOrAncestorLocked(shape) {
3872
+ const _shape = shape && this.getShape(shape);
3873
+ if (_shape === void 0) return false;
3874
+ if (_shape.isLocked) return true;
3875
+ return this.isShapeOrAncestorLocked(this.getShapeParent(_shape));
3894
3876
  }
3895
- _notVisibleShapes() {
3896
- return notVisibleShapes(this);
3877
+ getNotVisibleShapes() {
3878
+ return this._notVisibleShapes.get();
3897
3879
  }
3898
3880
  getCulledShapes() {
3899
- const notVisibleShapes2 = this._notVisibleShapes().get();
3881
+ const notVisibleShapes2 = this.getNotVisibleShapes();
3900
3882
  const selectedShapeIds = this.getSelectedShapeIds();
3901
3883
  const editingId = this.getEditingShapeId();
3902
3884
  const culledShapes = new Set(notVisibleShapes2);
@@ -4041,18 +4023,18 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4041
4023
  * @example
4042
4024
  * ```ts
4043
4025
  * editor.getShapesAtPoint({ x: 100, y: 100 })
4044
- * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, exact: true })
4026
+ * editor.getShapesAtPoint({ x: 100, y: 100 }, { hitInside: true, margin: 8 })
4045
4027
  * ```
4046
4028
  *
4047
4029
  * @param point - The page point to test.
4048
4030
  * @param opts - The options for the hit point testing.
4049
4031
  *
4032
+ * @returns An array of shapes at the given point, sorted in reverse order of their absolute z-index (top-most shape first).
4033
+ *
4050
4034
  * @public
4051
4035
  */
4052
4036
  getShapesAtPoint(point, opts = {}) {
4053
- return this.getCurrentPageShapes().filter(
4054
- (shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)
4055
- );
4037
+ return this.getCurrentPageShapesSorted().filter((shape) => !this.isShapeHidden(shape) && this.isPointInShape(shape, point, opts)).reverse();
4056
4038
  }
4057
4039
  /**
4058
4040
  * Test whether a point (in the current page space) will will a shape. This method takes into account masks,
@@ -7804,6 +7786,7 @@ __decorateElement(_init, 1, "getCurrentPageShapesInReadingOrder", _getCurrentPag
7804
7786
  __decorateElement(_init, 1, "getOnlySelectedShapeId", _getOnlySelectedShapeId_dec, Editor);
7805
7787
  __decorateElement(_init, 1, "getOnlySelectedShape", _getOnlySelectedShape_dec, Editor);
7806
7788
  __decorateElement(_init, 1, "getSelectionPageBounds", _getSelectionPageBounds_dec, Editor);
7789
+ __decorateElement(_init, 1, "getSelectionScreenBounds", _getSelectionScreenBounds_dec, Editor);
7807
7790
  __decorateElement(_init, 1, "getSelectionRotation", _getSelectionRotation_dec, Editor);
7808
7791
  __decorateElement(_init, 1, "getSelectionRotatedPageBounds", _getSelectionRotatedPageBounds_dec, Editor);
7809
7792
  __decorateElement(_init, 1, "getSelectionRotatedScreenBounds", _getSelectionRotatedScreenBounds_dec, Editor);
@@ -7841,7 +7824,7 @@ __decorateElement(_init, 1, "_getShapePageBoundsCache", __getShapePageBoundsCach
7841
7824
  __decorateElement(_init, 1, "_getShapeClipPathCache", __getShapeClipPathCache_dec, Editor);
7842
7825
  __decorateElement(_init, 1, "_getShapeMaskCache", __getShapeMaskCache_dec, Editor);
7843
7826
  __decorateElement(_init, 1, "_getShapeMaskedPageBoundsCache", __getShapeMaskedPageBoundsCache_dec, Editor);
7844
- __decorateElement(_init, 1, "_notVisibleShapes", __notVisibleShapes_dec, Editor);
7827
+ __decorateElement(_init, 1, "getNotVisibleShapes", _getNotVisibleShapes_dec, Editor);
7845
7828
  __decorateElement(_init, 1, "getCulledShapes", _getCulledShapes_dec, Editor);
7846
7829
  __decorateElement(_init, 1, "getCurrentPageBounds", _getCurrentPageBounds_dec, Editor);
7847
7830
  __decorateElement(_init, 1, "getCurrentPageShapes", _getCurrentPageShapes_dec, Editor);