@tldraw/editor 3.16.0-canary.fa3749606e52 → 3.16.0-canary.faec5de49906

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 (171) hide show
  1. package/dist-cjs/index.d.ts +151 -110
  2. package/dist-cjs/index.js +5 -5
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +6 -6
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/Shape.js +7 -10
  7. package/dist-cjs/lib/components/Shape.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +4 -23
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  12. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  17. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  18. package/dist-cjs/lib/config/TLUserPreferences.js +9 -3
  19. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  20. package/dist-cjs/lib/editor/Editor.js +80 -135
  21. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  22. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +4 -0
  23. package/dist-cjs/lib/editor/derivations/notVisibleShapes.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 +23 -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 +7 -5
  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/license/LicenseManager.js +120 -50
  38. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  39. package/dist-cjs/lib/license/LicenseProvider.js +39 -1
  40. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  41. package/dist-cjs/lib/license/Watermark.js +72 -10
  42. package/dist-cjs/lib/license/Watermark.js.map +3 -3
  43. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  44. package/dist-cjs/lib/options.js +7 -0
  45. package/dist-cjs/lib/options.js.map +2 -2
  46. package/dist-cjs/lib/primitives/Box.js +3 -0
  47. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  48. package/dist-cjs/lib/primitives/Vec.js +0 -4
  49. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  50. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +50 -20
  51. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  52. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -1
  53. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  54. package/dist-cjs/lib/utils/{nearestMultiple.js → EditorAtom.js} +25 -14
  55. package/dist-cjs/lib/utils/EditorAtom.js.map +7 -0
  56. package/dist-cjs/lib/utils/reparenting.js +2 -35
  57. package/dist-cjs/lib/utils/reparenting.js.map +3 -3
  58. package/dist-cjs/version.js +3 -3
  59. package/dist-cjs/version.js.map +1 -1
  60. package/dist-esm/index.d.mts +151 -110
  61. package/dist-esm/index.mjs +5 -5
  62. package/dist-esm/index.mjs.map +2 -2
  63. package/dist-esm/lib/TldrawEditor.mjs +6 -6
  64. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  65. package/dist-esm/lib/components/Shape.mjs +7 -10
  66. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  67. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +4 -23
  68. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  69. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  70. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  71. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  72. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  73. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  74. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  75. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  76. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  77. package/dist-esm/lib/config/TLUserPreferences.mjs +9 -3
  78. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  79. package/dist-esm/lib/editor/Editor.mjs +80 -135
  80. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  81. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +4 -0
  82. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +2 -2
  83. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +9 -4
  84. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  85. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +23 -0
  86. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  87. package/dist-esm/lib/exports/getSvgJsx.mjs +36 -16
  88. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  89. package/dist-esm/lib/hooks/useCanvasEvents.mjs +7 -5
  90. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  91. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +4 -1
  92. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  93. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  94. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  95. package/dist-esm/lib/license/LicenseManager.mjs +121 -51
  96. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  97. package/dist-esm/lib/license/LicenseProvider.mjs +39 -2
  98. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  99. package/dist-esm/lib/license/Watermark.mjs +72 -10
  100. package/dist-esm/lib/license/Watermark.mjs.map +3 -3
  101. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  102. package/dist-esm/lib/options.mjs +7 -0
  103. package/dist-esm/lib/options.mjs.map +2 -2
  104. package/dist-esm/lib/primitives/Box.mjs +4 -1
  105. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  106. package/dist-esm/lib/primitives/Vec.mjs +0 -4
  107. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  108. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +53 -21
  109. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  110. package/dist-esm/lib/primitives/geometry/Group2d.mjs +8 -1
  111. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  112. package/dist-esm/lib/utils/EditorAtom.mjs +25 -0
  113. package/dist-esm/lib/utils/EditorAtom.mjs.map +7 -0
  114. package/dist-esm/lib/utils/reparenting.mjs +3 -40
  115. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  116. package/dist-esm/version.mjs +3 -3
  117. package/dist-esm/version.mjs.map +1 -1
  118. package/editor.css +308 -290
  119. package/package.json +14 -37
  120. package/src/index.ts +4 -9
  121. package/src/lib/TldrawEditor.tsx +7 -14
  122. package/src/lib/components/Shape.tsx +6 -12
  123. package/src/lib/components/default-components/DefaultCanvas.tsx +5 -22
  124. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  125. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  126. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  127. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  128. package/src/lib/config/TLUserPreferences.ts +8 -1
  129. package/src/lib/editor/Editor.test.ts +12 -11
  130. package/src/lib/editor/Editor.ts +112 -195
  131. package/src/lib/editor/derivations/notVisibleShapes.ts +6 -0
  132. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  133. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  134. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  135. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  136. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  137. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  138. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  139. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  140. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  141. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +34 -26
  142. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +6 -1
  143. package/src/lib/editor/shapes/ShapeUtil.ts +46 -0
  144. package/src/lib/editor/types/misc-types.ts +54 -7
  145. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  146. package/src/lib/exports/getSvgJsx.tsx +78 -21
  147. package/src/lib/hooks/useCanvasEvents.ts +6 -6
  148. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +4 -1
  149. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  150. package/src/lib/license/LicenseManager.test.ts +648 -383
  151. package/src/lib/license/LicenseManager.ts +173 -53
  152. package/src/lib/license/LicenseProvider.tsx +74 -2
  153. package/src/lib/license/Watermark.test.tsx +2 -1
  154. package/src/lib/license/Watermark.tsx +77 -10
  155. package/src/lib/license/useLicenseManagerState.ts +2 -2
  156. package/src/lib/options.ts +8 -0
  157. package/src/lib/primitives/Box.test.ts +126 -0
  158. package/src/lib/primitives/Box.ts +10 -1
  159. package/src/lib/primitives/Vec.ts +0 -5
  160. package/src/lib/primitives/geometry/Geometry2d.test.ts +420 -0
  161. package/src/lib/primitives/geometry/Geometry2d.ts +78 -21
  162. package/src/lib/primitives/geometry/Group2d.ts +10 -1
  163. package/src/lib/utils/EditorAtom.ts +37 -0
  164. package/src/lib/utils/reparenting.ts +3 -69
  165. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  166. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  167. package/src/version.ts +3 -3
  168. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  169. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  170. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  171. 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.
@@ -3646,8 +3562,9 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3646
3562
  return this.store.createComputedCache("pageBoundsCache", (shape) => {
3647
3563
  const pageTransform = this.getShapePageTransform(shape);
3648
3564
  if (!pageTransform) return void 0;
3649
- const geometry = this.getShapeGeometry(shape);
3650
- return Box.FromPoints(pageTransform.applyToPoints(geometry.vertices));
3565
+ return Box.FromPoints(
3566
+ pageTransform.applyToPoints(this.getShapeGeometry(shape).boundsVertices)
3567
+ );
3651
3568
  });
3652
3569
  }
3653
3570
  /**
@@ -3700,16 +3617,17 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3700
3617
  _getShapeMaskCache() {
3701
3618
  return this.store.createComputedCache("pageMaskCache", (shape) => {
3702
3619
  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;
3620
+ const clipPaths = [];
3621
+ for (const ancestor of this.getShapeAncestors(shape.id)) {
3622
+ const util = this.getShapeUtil(ancestor);
3623
+ const clipPath = util.getClipPath?.(ancestor);
3624
+ if (!clipPath) continue;
3625
+ if (util.shouldClipChild?.(shape) === false) continue;
3626
+ const pageTransform = this.getShapePageTransform(ancestor.id);
3627
+ clipPaths.push(pageTransform.applyToPoints(clipPath));
3628
+ }
3629
+ if (clipPaths.length === 0) return void 0;
3630
+ const pageMask = clipPaths.reduce((acc, b) => {
3713
3631
  const intersection = intersectPolygonPolygon(acc, b);
3714
3632
  if (intersection) {
3715
3633
  return intersection.map(Vec.Cast);
@@ -3944,6 +3862,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3944
3862
  hitInside = false,
3945
3863
  hitFrameInside = false
3946
3864
  } = opts;
3865
+ const [innerMargin, outerMargin] = Array.isArray(margin) ? margin : [margin, margin];
3947
3866
  let inHollowSmallestArea = Infinity;
3948
3867
  let inHollowSmallestAreaHit = null;
3949
3868
  let inMarginClosestToEdgeDistance = Infinity;
@@ -3953,7 +3872,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3953
3872
  return false;
3954
3873
  const pageMask = this.getShapeMask(shape);
3955
3874
  if (pageMask && !pointInPolygon(point, pageMask)) return false;
3956
- if (filter) return filter(shape);
3875
+ if (filter && !filter(shape)) return false;
3957
3876
  return true;
3958
3877
  });
3959
3878
  for (let i = shapesToCheck.length - 1; i >= 0; i--) {
@@ -3969,8 +3888,8 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3969
3888
  }
3970
3889
  }
3971
3890
  if (this.isShapeOfType(shape, "frame")) {
3972
- const distance2 = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3973
- if (Math.abs(distance2) <= margin) {
3891
+ const distance2 = geometry.distanceToPoint(pointInShapeSpace, hitFrameInside);
3892
+ if (hitFrameInside ? distance2 > 0 && distance2 <= outerMargin || distance2 <= 0 && distance2 > -innerMargin : distance2 > 0 && distance2 <= outerMargin) {
3974
3893
  return inMarginClosestToEdgeHit || shape;
3975
3894
  }
3976
3895
  if (geometry.hitTestPoint(pointInShapeSpace, 0, true)) {
@@ -3990,10 +3909,10 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
3990
3909
  }
3991
3910
  distance = minDistance;
3992
3911
  } else {
3993
- if (margin === 0 && (geometry.bounds.w < 1 || geometry.bounds.h < 1)) {
3912
+ if (outerMargin === 0 && (geometry.bounds.w < 1 || geometry.bounds.h < 1)) {
3994
3913
  distance = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3995
3914
  } else {
3996
- if (geometry.bounds.containsPoint(pointInShapeSpace, margin)) {
3915
+ if (geometry.bounds.containsPoint(pointInShapeSpace, outerMargin)) {
3997
3916
  distance = geometry.distanceToPoint(pointInShapeSpace, hitInside);
3998
3917
  } else {
3999
3918
  distance = Infinity;
@@ -4001,12 +3920,22 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4001
3920
  }
4002
3921
  }
4003
3922
  if (geometry.isClosed) {
4004
- if (distance <= margin) {
3923
+ if (distance <= outerMargin || hitInside && distance <= 0 && distance > -innerMargin) {
4005
3924
  if (geometry.isFilled || isGroup && geometry.children[0].isFilled) {
4006
3925
  return inMarginClosestToEdgeHit || shape;
4007
3926
  } else {
4008
3927
  if (this.getShapePageBounds(shape).contains(viewportPageBounds)) continue;
4009
- if (Math.abs(distance) < margin) {
3928
+ if (hitInside ? (
3929
+ // On hitInside, the distance will be negative for hits inside
3930
+ // If the distance is positive, check against the outer margin
3931
+ (// If the distance is negative, check against the inner margin
3932
+ distance > 0 && distance <= outerMargin || distance <= 0 && distance > -innerMargin)
3933
+ ) : (
3934
+ // If hitInside is false, then sadly _we do not know_ whether the
3935
+ // point is inside or outside of the shape, so we check against
3936
+ // the max of the two margins
3937
+ (Math.abs(distance) <= Math.max(innerMargin, outerMargin))
3938
+ )) {
4010
3939
  if (Math.abs(distance) < inMarginClosestToEdgeDistance) {
4011
3940
  inMarginClosestToEdgeDistance = Math.abs(distance);
4012
3941
  inMarginClosestToEdgeHit = shape;
@@ -4396,10 +4325,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4396
4325
  }
4397
4326
  return shapeIds;
4398
4327
  }
4399
- /** @deprecated Use {@link Editor.getDraggingOverShape} instead */
4400
- getDroppingOverShape(point, droppingShapes) {
4401
- return this.getDraggingOverShape(point, droppingShapes);
4402
- }
4403
4328
  /**
4404
4329
  * Get the shape that some shapes should be dropped on at a given point.
4405
4330
  *
@@ -4771,7 +4696,16 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
4771
4696
  }
4772
4697
  this.createShapes(shapesToCreate);
4773
4698
  this.createBindings(bindingsToCreate);
4774
- this.setSelectedShapes(compact(ids.map((id) => shapeIds.get(id))));
4699
+ this.setSelectedShapes(
4700
+ compact(
4701
+ ids.map((oldId) => {
4702
+ const newId = shapeIds.get(oldId);
4703
+ if (!newId) return null;
4704
+ if (!this.getShape(newId)) return null;
4705
+ return newId;
4706
+ })
4707
+ )
4708
+ );
4775
4709
  if (offset !== void 0) {
4776
4710
  const selectionPageBounds = this.getSelectionPageBounds();
4777
4711
  const viewportPageBounds = this.getViewportPageBounds();
@@ -5525,8 +5459,7 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
5525
5459
  const shapesMovingTogether = [shape];
5526
5460
  const boundsOfShapesMovingTogether = [shapePageBounds];
5527
5461
  if (!this.getShapeUtil(shape).canBeLaidOut?.(shape, {
5528
- type: "stretch",
5529
- shapes: shapesToStretchFirstPass
5462
+ type: "stretch"
5530
5463
  })) {
5531
5464
  continue;
5532
5465
  }
@@ -5851,21 +5784,24 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
5851
5784
  }
5852
5785
  if (!partial.parentId || !(this.store.has(partial.parentId) || shapes.some((p) => p.id === partial.parentId))) {
5853
5786
  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
5787
+ const isPositioned = partial.x !== void 0 && partial.y !== void 0;
5788
+ if (isPositioned) {
5789
+ for (let i = currentPageShapesSorted.length - 1; i >= 0; i--) {
5790
+ const parent = currentPageShapesSorted[i];
5791
+ const util = this.getShapeUtil(parent);
5792
+ if (util.canReceiveNewChildrenOfType(parent, partial.type) && !this.isShapeHidden(parent) && this.isPointInShape(
5793
+ parent,
5794
+ // If no parent is provided, then we can treat the
5795
+ // shape's provided x/y as being in the page's space.
5796
+ { x: partial.x ?? 0, y: partial.y ?? 0 },
5797
+ {
5798
+ margin: 0,
5799
+ hitInside: true
5800
+ }
5801
+ )) {
5802
+ parentId = parent.id;
5803
+ break;
5865
5804
  }
5866
- )) {
5867
- parentId = parent.id;
5868
- break;
5869
5805
  }
5870
5806
  }
5871
5807
  const prevParentId = partial.parentId;
@@ -6899,12 +6835,6 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6899
6835
  height: result.height
6900
6836
  };
6901
6837
  }
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
6838
  /**
6909
6839
  * Get an exported image of the given shapes.
6910
6840
  *
@@ -6954,6 +6884,23 @@ class Editor extends (_a = EventEmitter, _getIsShapeHiddenCache_dec = [computed]
6954
6884
  }
6955
6885
  }
6956
6886
  }
6887
+ /**
6888
+ * Get an exported image of the given shapes as a data URL.
6889
+ *
6890
+ * @param shapes - The shapes (or shape ids) to export.
6891
+ * @param opts - Options for the export.
6892
+ *
6893
+ * @returns A data URL of the image.
6894
+ * @public
6895
+ */
6896
+ async toImageDataUrl(shapes, opts = {}) {
6897
+ const { blob, width, height } = await this.toImage(shapes, opts);
6898
+ return {
6899
+ url: await FileHelpers.blobToDataUrl(blob),
6900
+ width,
6901
+ height
6902
+ };
6903
+ }
6957
6904
  /**
6958
6905
  * Update the input points from a pointer, pinch, or wheel event.
6959
6906
  *
@@ -7868,8 +7815,6 @@ __decorateElement(_init, 1, "getCurrentTool", _getCurrentTool_dec, Editor);
7868
7815
  __decorateElement(_init, 1, "getCurrentToolId", _getCurrentToolId_dec, Editor);
7869
7816
  __decorateElement(_init, 1, "getDocumentSettings", _getDocumentSettings_dec, Editor);
7870
7817
  __decorateElement(_init, 1, "getInstanceState", _getInstanceState_dec, Editor);
7871
- __decorateElement(_init, 1, "getOpenMenus", _getOpenMenus_dec, Editor);
7872
- __decorateElement(_init, 1, "getIsMenuOpen", _getIsMenuOpen_dec, Editor);
7873
7818
  __decorateElement(_init, 1, "getPageStates", _getPageStates_dec, Editor);
7874
7819
  __decorateElement(_init, 1, "_getPageStatesQuery", __getPageStatesQuery_dec, Editor);
7875
7820
  __decorateElement(_init, 1, "getCurrentPageState", _getCurrentPageState_dec, Editor);