@tldraw/editor 3.16.0-next.df90ce0ff566 → 3.16.0-next.e57e478c23e0

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 (175) hide show
  1. package/dist-cjs/index.d.ts +134 -110
  2. package/dist-cjs/index.js +3 -5
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +8 -6
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/MenuClickCapture.js +0 -5
  7. package/dist-cjs/lib/components/MenuClickCapture.js.map +2 -2
  8. package/dist-cjs/lib/components/Shape.js +7 -10
  9. package/dist-cjs/lib/components/Shape.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -23
  11. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  12. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  14. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  17. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  18. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  19. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  20. package/dist-cjs/lib/config/TLUserPreferences.js +9 -3
  21. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  22. package/dist-cjs/lib/editor/Editor.js +77 -133
  23. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  24. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +9 -4
  25. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  26. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +13 -0
  27. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  28. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  29. package/dist-cjs/lib/exports/getSvgJsx.js +35 -16
  30. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  31. package/dist-cjs/lib/hooks/useCanvasEvents.js +31 -25
  32. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  33. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +4 -1
  34. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  35. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  36. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  37. package/dist-cjs/lib/{utils/nearestMultiple.js → hooks/useStateAttribute.js} +15 -14
  38. package/dist-cjs/lib/hooks/useStateAttribute.js.map +7 -0
  39. package/dist-cjs/lib/license/LicenseManager.js +17 -22
  40. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  41. package/dist-cjs/lib/license/LicenseProvider.js +5 -0
  42. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  43. package/dist-cjs/lib/license/Watermark.js +8 -8
  44. package/dist-cjs/lib/license/Watermark.js.map +1 -1
  45. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  46. package/dist-cjs/lib/options.js +7 -0
  47. package/dist-cjs/lib/options.js.map +2 -2
  48. package/dist-cjs/lib/primitives/Box.js +3 -0
  49. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  50. package/dist-cjs/lib/primitives/Vec.js +0 -4
  51. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  52. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +26 -18
  53. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  54. package/dist-cjs/lib/primitives/geometry/Group2d.js +3 -0
  55. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  56. package/dist-cjs/lib/utils/EditorAtom.js +45 -0
  57. package/dist-cjs/lib/utils/EditorAtom.js.map +7 -0
  58. package/dist-cjs/lib/utils/reparenting.js +2 -35
  59. package/dist-cjs/lib/utils/reparenting.js.map +3 -3
  60. package/dist-cjs/version.js +3 -3
  61. package/dist-cjs/version.js.map +1 -1
  62. package/dist-esm/index.d.mts +134 -110
  63. package/dist-esm/index.mjs +3 -5
  64. package/dist-esm/index.mjs.map +2 -2
  65. package/dist-esm/lib/TldrawEditor.mjs +8 -6
  66. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  67. package/dist-esm/lib/components/MenuClickCapture.mjs +0 -5
  68. package/dist-esm/lib/components/MenuClickCapture.mjs.map +2 -2
  69. package/dist-esm/lib/components/Shape.mjs +7 -10
  70. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  71. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -23
  72. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  73. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  74. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  75. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  76. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  77. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  78. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  79. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  80. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  81. package/dist-esm/lib/config/TLUserPreferences.mjs +9 -3
  82. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  83. package/dist-esm/lib/editor/Editor.mjs +77 -133
  84. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  85. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +9 -4
  86. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  87. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +13 -0
  88. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  89. package/dist-esm/lib/exports/getSvgJsx.mjs +36 -16
  90. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  91. package/dist-esm/lib/hooks/useCanvasEvents.mjs +32 -26
  92. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  93. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +4 -1
  94. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  95. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  96. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  97. package/dist-esm/lib/hooks/useStateAttribute.mjs +15 -0
  98. package/dist-esm/lib/hooks/useStateAttribute.mjs.map +7 -0
  99. package/dist-esm/lib/license/LicenseManager.mjs +17 -22
  100. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  101. package/dist-esm/lib/license/LicenseProvider.mjs +5 -0
  102. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  103. package/dist-esm/lib/license/Watermark.mjs +8 -8
  104. package/dist-esm/lib/license/Watermark.mjs.map +1 -1
  105. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  106. package/dist-esm/lib/options.mjs +7 -0
  107. package/dist-esm/lib/options.mjs.map +2 -2
  108. package/dist-esm/lib/primitives/Box.mjs +4 -1
  109. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  110. package/dist-esm/lib/primitives/Vec.mjs +0 -4
  111. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  112. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +29 -19
  113. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  114. package/dist-esm/lib/primitives/geometry/Group2d.mjs +3 -0
  115. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  116. package/dist-esm/lib/utils/EditorAtom.mjs +25 -0
  117. package/dist-esm/lib/utils/EditorAtom.mjs.map +7 -0
  118. package/dist-esm/lib/utils/reparenting.mjs +3 -40
  119. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  120. package/dist-esm/version.mjs +3 -3
  121. package/dist-esm/version.mjs.map +1 -1
  122. package/editor.css +301 -288
  123. package/package.json +14 -37
  124. package/src/index.ts +3 -9
  125. package/src/lib/TldrawEditor.tsx +13 -17
  126. package/src/lib/components/MenuClickCapture.tsx +0 -8
  127. package/src/lib/components/Shape.tsx +6 -12
  128. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -22
  129. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  130. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  131. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  132. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  133. package/src/lib/config/TLUserPreferences.ts +8 -1
  134. package/src/lib/editor/Editor.test.ts +12 -11
  135. package/src/lib/editor/Editor.ts +108 -193
  136. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  137. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  138. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  139. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  140. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  141. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  142. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  143. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  144. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  145. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +34 -26
  146. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +6 -1
  147. package/src/lib/editor/shapes/ShapeUtil.ts +35 -0
  148. package/src/lib/editor/types/misc-types.ts +54 -7
  149. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  150. package/src/lib/exports/getSvgJsx.tsx +78 -21
  151. package/src/lib/hooks/useCanvasEvents.ts +45 -38
  152. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +4 -1
  153. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  154. package/src/lib/hooks/useStateAttribute.ts +15 -0
  155. package/src/lib/license/LicenseManager.test.ts +61 -52
  156. package/src/lib/license/LicenseManager.ts +32 -24
  157. package/src/lib/license/LicenseProvider.tsx +8 -0
  158. package/src/lib/license/Watermark.test.tsx +2 -1
  159. package/src/lib/license/Watermark.tsx +8 -8
  160. package/src/lib/license/useLicenseManagerState.ts +2 -2
  161. package/src/lib/options.ts +8 -0
  162. package/src/lib/primitives/Box.test.ts +126 -0
  163. package/src/lib/primitives/Box.ts +10 -1
  164. package/src/lib/primitives/Vec.ts +0 -5
  165. package/src/lib/primitives/geometry/Geometry2d.ts +49 -19
  166. package/src/lib/primitives/geometry/Group2d.ts +4 -0
  167. package/src/lib/utils/EditorAtom.ts +37 -0
  168. package/src/lib/utils/reparenting.ts +3 -69
  169. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  170. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  171. package/src/version.ts +3 -3
  172. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  173. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  174. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  175. package/src/lib/utils/nearestMultiple.ts +0 -13
@@ -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, _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;
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, _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,
@@ -120,7 +120,6 @@ import {
120
120
  } from "../constants.mjs";
121
121
  import { exportToSvg } from "../exports/exportToSvg.mjs";
122
122
  import { getSvgAsImage } from "../exports/getSvgAsImage.mjs";
123
- import { tlenv } from "../globals/environment.mjs";
124
123
  import { tlmenus } from "../globals/menus.mjs";
125
124
  import { tltime } from "../globals/time.mjs";
126
125
  import { defaultTldrawOptions } from "../options.mjs";
@@ -158,7 +157,7 @@ import { TextManager } from "./managers/TextManager/TextManager.mjs";
158
157
  import { TickManager } from "./managers/TickManager/TickManager.mjs";
159
158
  import { UserPreferencesManager } from "./managers/UserPreferencesManager/UserPreferencesManager.mjs";
160
159
  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], _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) {
160
+ 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], _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
161
  constructor({
163
162
  store,
164
163
  user,
@@ -172,8 +171,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
172
171
  autoFocus,
173
172
  inferDarkMode,
174
173
  options,
175
- // eslint-disable-next-line @typescript-eslint/no-deprecated
176
- isShapeHidden,
177
174
  getShapeVisibility,
178
175
  fontAssetUrls
179
176
  }) {
@@ -240,13 +237,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
240
237
  * @public
241
238
  */
242
239
  __publicField(this, "fonts");
243
- /**
244
- * A manager for the editor's environment.
245
- *
246
- * @deprecated This is deprecated and will be removed in a future version. Use the `tlenv` global export instead.
247
- * @public
248
- */
249
- __publicField(this, "environment", tlenv);
250
240
  /**
251
241
  * A manager for the editor's scribbles.
252
242
  *
@@ -449,14 +439,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
449
439
  /** @internal */
450
440
  __publicField(this, "performanceTrackerTimeout", -1);
451
441
  __publicField(this, "_pendingEventsForNextTick", []);
452
- assert(
453
- !(isShapeHidden && getShapeVisibility),
454
- "Cannot use both isShapeHidden and getShapeVisibility"
455
- );
456
- this._getShapeVisibility = isShapeHidden ? (
457
- // eslint-disable-next-line @typescript-eslint/no-deprecated
458
- ((shape, editor) => isShapeHidden(shape, editor) ? "hidden" : "inherit")
459
- ) : getShapeVisibility;
442
+ this._getShapeVisibility = getShapeVisibility;
460
443
  this.options = { ...defaultTldrawOptions, ...options };
461
444
  this.store = store;
462
445
  this.history = new HistoryManager({
@@ -936,34 +919,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
936
919
  getCanRedo() {
937
920
  return this.history.getNumRedos() > 0;
938
921
  }
939
- /**
940
- * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
941
- * any redos.
942
- *
943
- * @example
944
- * ```ts
945
- * editor.mark()
946
- * editor.mark('flip shapes')
947
- * ```
948
- *
949
- * @param markId - The mark's id, usually the reason for adding the mark.
950
- *
951
- * @public
952
- * @deprecated use {@link Editor.markHistoryStoppingPoint} instead
953
- */
954
- mark(markId) {
955
- if (typeof markId === "string") {
956
- console.warn(
957
- `[tldraw] \`editor.history.mark("${markId}")\` is deprecated. Please use \`const myMarkId = editor.markHistoryStoppingPoint()\` instead.`
958
- );
959
- } else {
960
- console.warn(
961
- "[tldraw] `editor.mark()` is deprecated. Use `editor.markHistoryStoppingPoint()` instead."
962
- );
963
- }
964
- this.history._mark(markId ?? uniqueId());
965
- return this;
966
- }
967
922
  /**
968
923
  * Create a new "mark", or stopping point, in the undo redo history. Creating a mark will clear
969
924
  * any redos. You typically want to do this just before a user interaction begins or is handled.
@@ -1079,12 +1034,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1079
1034
  }
1080
1035
  return this;
1081
1036
  }
1082
- /**
1083
- * @deprecated Use `Editor.run` instead.
1084
- */
1085
- batch(fn, opts) {
1086
- return this.run(fn, opts);
1087
- }
1088
1037
  /* --------------------- Errors --------------------- */
1089
1038
  /** @internal */
1090
1039
  annotateError(error, {
@@ -1306,39 +1255,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
1306
1255
  ]);
1307
1256
  }, opts);
1308
1257
  }
1309
- getOpenMenus() {
1310
- return this.menus.getOpenMenus();
1311
- }
1312
- /**
1313
- * @deprecated Use `editor.menus.addOpenMenu` instead.
1314
- *
1315
- * @public
1316
- */
1317
- addOpenMenu(id) {
1318
- this.menus.addOpenMenu(id);
1319
- return this;
1320
- }
1321
- /**
1322
- * @deprecated Use `editor.menus.deleteOpenMenu` instead.
1323
- *
1324
- * @public
1325
- */
1326
- deleteOpenMenu(id) {
1327
- this.menus.deleteOpenMenu(id);
1328
- return this;
1329
- }
1330
- /**
1331
- * @deprecated Use `editor.menus.clearOpenMenus` instead.
1332
- *
1333
- * @public
1334
- */
1335
- clearOpenMenus() {
1336
- this.menus.clearOpenMenus();
1337
- return this;
1338
- }
1339
- getIsMenuOpen() {
1340
- return this.menus.hasAnyOpenMenus();
1341
- }
1342
1258
  /* --------------------- Cursor --------------------- */
1343
1259
  /**
1344
1260
  * Set the cursor.
@@ -3700,16 +3616,17 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3700
3616
  _getShapeMaskCache() {
3701
3617
  return this.store.createComputedCache("pageMaskCache", (shape) => {
3702
3618
  if (isPageId(shape.parentId)) return void 0;
3703
- const frameAncestors = this.getShapeAncestors(shape.id).filter(
3704
- (shape2) => this.isShapeOfType(shape2, "frame")
3705
- );
3706
- if (frameAncestors.length === 0) return void 0;
3707
- const pageMask = frameAncestors.map((s) => {
3708
- const geometry = this.getShapeGeometry(s.id);
3709
- const pageTransform = this.getShapePageTransform(s.id);
3710
- return pageTransform.applyToPoints(geometry.vertices);
3711
- }).reduce((acc, b) => {
3712
- if (!(b && acc)) return void 0;
3619
+ const clipPaths = [];
3620
+ for (const ancestor of this.getShapeAncestors(shape.id)) {
3621
+ const util = this.getShapeUtil(ancestor);
3622
+ const clipPath = util.getClipPath?.(ancestor);
3623
+ if (!clipPath) continue;
3624
+ if (util.shouldClipChild?.(shape) === false) continue;
3625
+ const pageTransform = this.getShapePageTransform(ancestor.id);
3626
+ clipPaths.push(pageTransform.applyToPoints(clipPath));
3627
+ }
3628
+ if (clipPaths.length === 0) return void 0;
3629
+ const pageMask = clipPaths.reduce((acc, b) => {
3713
3630
  const intersection = intersectPolygonPolygon(acc, b);
3714
3631
  if (intersection) {
3715
3632
  return intersection.map(Vec.Cast);
@@ -3944,6 +3861,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3944
3861
  hitInside = false,
3945
3862
  hitFrameInside = false
3946
3863
  } = opts;
3864
+ const [innerMargin, outerMargin] = Array.isArray(margin) ? margin : [margin, margin];
3947
3865
  let inHollowSmallestArea = Infinity;
3948
3866
  let inHollowSmallestAreaHit = null;
3949
3867
  let inMarginClosestToEdgeDistance = Infinity;
@@ -3953,7 +3871,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3953
3871
  return false;
3954
3872
  const pageMask = this.getShapeMask(shape);
3955
3873
  if (pageMask && !pointInPolygon(point, pageMask)) return false;
3956
- if (filter) return filter(shape);
3874
+ if (filter && !filter(shape)) return false;
3957
3875
  return true;
3958
3876
  });
3959
3877
  for (let i = shapesToCheck.length - 1; i >= 0; i--) {
@@ -3969,8 +3887,8 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3969
3887
  }
3970
3888
  }
3971
3889
  if (this.isShapeOfType(shape, "frame")) {
3972
- const distance2 = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3973
- if (Math.abs(distance2) <= margin) {
3890
+ const distance2 = geometry.distanceToPoint(pointInShapeSpace, hitFrameInside);
3891
+ if (hitFrameInside ? distance2 > 0 && distance2 <= outerMargin || distance2 <= 0 && distance2 > -innerMargin : distance2 > 0 && distance2 <= outerMargin) {
3974
3892
  return inMarginClosestToEdgeHit || shape;
3975
3893
  }
3976
3894
  if (geometry.hitTestPoint(pointInShapeSpace, 0, true)) {
@@ -3990,10 +3908,10 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3990
3908
  }
3991
3909
  distance = minDistance;
3992
3910
  } else {
3993
- if (margin === 0 && (geometry.bounds.w < 1 || geometry.bounds.h < 1)) {
3911
+ if (outerMargin === 0 && (geometry.bounds.w < 1 || geometry.bounds.h < 1)) {
3994
3912
  distance = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3995
3913
  } else {
3996
- if (geometry.bounds.containsPoint(pointInShapeSpace, margin)) {
3914
+ if (geometry.bounds.containsPoint(pointInShapeSpace, outerMargin)) {
3997
3915
  distance = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3998
3916
  } else {
3999
3917
  distance = Infinity;
@@ -4001,12 +3919,22 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4001
3919
  }
4002
3920
  }
4003
3921
  if (geometry.isClosed) {
4004
- if (distance <= margin) {
3922
+ if (distance <= outerMargin || hitInside && distance <= 0 && distance > -innerMargin) {
4005
3923
  if (geometry.isFilled || isGroup && geometry.children[0].isFilled) {
4006
3924
  return inMarginClosestToEdgeHit || shape;
4007
3925
  } else {
4008
3926
  if (this.getShapePageBounds(shape).contains(viewportPageBounds)) continue;
4009
- if (Math.abs(distance) < margin) {
3927
+ if (hitInside ? (
3928
+ // On hitInside, the distance will be negative for hits inside
3929
+ // If the distance is positive, check against the outer margin
3930
+ (// If the distance is negative, check against the inner margin
3931
+ distance > 0 && distance <= outerMargin || distance <= 0 && distance > -innerMargin)
3932
+ ) : (
3933
+ // If hitInside is false, then sadly _we do not know_ whether the
3934
+ // point is inside or outside of the shape, so we check against
3935
+ // the max of the two margins
3936
+ (Math.abs(distance) <= Math.max(innerMargin, outerMargin))
3937
+ )) {
4010
3938
  if (Math.abs(distance) < inMarginClosestToEdgeDistance) {
4011
3939
  inMarginClosestToEdgeDistance = Math.abs(distance);
4012
3940
  inMarginClosestToEdgeHit = shape;
@@ -4396,10 +4324,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4396
4324
  }
4397
4325
  return shapeIds;
4398
4326
  }
4399
- /** @deprecated Use {@link Editor.getDraggingOverShape} instead */
4400
- getDroppingOverShape(point, droppingShapes) {
4401
- return this.getDraggingOverShape(point, droppingShapes);
4402
- }
4403
4327
  /**
4404
4328
  * Get the shape that some shapes should be dropped on at a given point.
4405
4329
  *
@@ -4771,7 +4695,16 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4771
4695
  }
4772
4696
  this.createShapes(shapesToCreate);
4773
4697
  this.createBindings(bindingsToCreate);
4774
- this.setSelectedShapes(compact(ids.map((id) => shapeIds.get(id))));
4698
+ this.setSelectedShapes(
4699
+ compact(
4700
+ ids.map((oldId) => {
4701
+ const newId = shapeIds.get(oldId);
4702
+ if (!newId) return null;
4703
+ if (!this.getShape(newId)) return null;
4704
+ return newId;
4705
+ })
4706
+ )
4707
+ );
4775
4708
  if (offset !== void 0) {
4776
4709
  const selectionPageBounds = this.getSelectionPageBounds();
4777
4710
  const viewportPageBounds = this.getViewportPageBounds();
@@ -5525,8 +5458,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
5525
5458
  const shapesMovingTogether = [shape];
5526
5459
  const boundsOfShapesMovingTogether = [shapePageBounds];
5527
5460
  if (!this.getShapeUtil(shape).canBeLaidOut?.(shape, {
5528
- type: "stretch",
5529
- shapes: shapesToStretchFirstPass
5461
+ type: "stretch"
5530
5462
  })) {
5531
5463
  continue;
5532
5464
  }
@@ -5851,21 +5783,24 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
5851
5783
  }
5852
5784
  if (!partial.parentId || !(this.store.has(partial.parentId) || shapes.some((p) => p.id === partial.parentId))) {
5853
5785
  let parentId = this.getFocusedGroupId();
5854
- for (let i = currentPageShapesSorted.length - 1; i >= 0; i--) {
5855
- const parent = currentPageShapesSorted[i];
5856
- const util = this.getShapeUtil(parent);
5857
- if (util.canReceiveNewChildrenOfType(parent, partial.type) && !this.isShapeHidden(parent) && this.isPointInShape(
5858
- parent,
5859
- // If no parent is provided, then we can treat the
5860
- // shape's provided x/y as being in the page's space.
5861
- { x: partial.x ?? 0, y: partial.y ?? 0 },
5862
- {
5863
- margin: 0,
5864
- hitInside: true
5786
+ const isPositioned = partial.x !== void 0 && partial.y !== void 0;
5787
+ if (isPositioned) {
5788
+ for (let i = currentPageShapesSorted.length - 1; i >= 0; i--) {
5789
+ const parent = currentPageShapesSorted[i];
5790
+ const util = this.getShapeUtil(parent);
5791
+ if (util.canReceiveNewChildrenOfType(parent, partial.type) && !this.isShapeHidden(parent) && this.isPointInShape(
5792
+ parent,
5793
+ // If no parent is provided, then we can treat the
5794
+ // shape's provided x/y as being in the page's space.
5795
+ { x: partial.x ?? 0, y: partial.y ?? 0 },
5796
+ {
5797
+ margin: 0,
5798
+ hitInside: true
5799
+ }
5800
+ )) {
5801
+ parentId = parent.id;
5802
+ break;
5865
5803
  }
5866
- )) {
5867
- parentId = parent.id;
5868
- break;
5869
5804
  }
5870
5805
  }
5871
5806
  const prevParentId = partial.parentId;
@@ -6899,12 +6834,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6899
6834
  height: result.height
6900
6835
  };
6901
6836
  }
6902
- /** @deprecated Use {@link Editor.getSvgString} or {@link Editor.getSvgElement} instead. */
6903
- async getSvg(shapes, opts = {}) {
6904
- const result = await this.getSvgElement(shapes, opts);
6905
- if (!result) return void 0;
6906
- return result.svg;
6907
- }
6908
6837
  /**
6909
6838
  * Get an exported image of the given shapes.
6910
6839
  *
@@ -6954,6 +6883,23 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6954
6883
  }
6955
6884
  }
6956
6885
  }
6886
+ /**
6887
+ * Get an exported image of the given shapes as a data URL.
6888
+ *
6889
+ * @param shapes - The shapes (or shape ids) to export.
6890
+ * @param opts - Options for the export.
6891
+ *
6892
+ * @returns A data URL of the image.
6893
+ * @public
6894
+ */
6895
+ async toImageDataUrl(shapes, opts = {}) {
6896
+ const { blob, width, height } = await this.toImage(shapes, opts);
6897
+ return {
6898
+ url: await FileHelpers.blobToDataUrl(blob),
6899
+ width,
6900
+ height
6901
+ };
6902
+ }
6957
6903
  /**
6958
6904
  * Update the input points from a pointer, pinch, or wheel event.
6959
6905
  *
@@ -7868,8 +7814,6 @@ __decorateElement(_init, 1, "getCurrentTool", _getCurrentTool_dec, Editor);
7868
7814
  __decorateElement(_init, 1, "getCurrentToolId", _getCurrentToolId_dec, Editor);
7869
7815
  __decorateElement(_init, 1, "getDocumentSettings", _getDocumentSettings_dec, Editor);
7870
7816
  __decorateElement(_init, 1, "getInstanceState", _getInstanceState_dec, Editor);
7871
- __decorateElement(_init, 1, "getOpenMenus", _getOpenMenus_dec, Editor);
7872
- __decorateElement(_init, 1, "getIsMenuOpen", _getIsMenuOpen_dec, Editor);
7873
7817
  __decorateElement(_init, 1, "getPageStates", _getPageStates_dec, Editor);
7874
7818
  __decorateElement(_init, 1, "_getPageStatesQuery", __getPageStatesQuery_dec, Editor);
7875
7819
  __decorateElement(_init, 1, "getCurrentPageState", _getCurrentPageState_dec, Editor);