@tldraw/editor 3.9.0 → 3.10.0-canary.12c0cb0549ca

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 (142) hide show
  1. package/dist-cjs/index.d.ts +243 -5
  2. package/dist-cjs/index.js +9 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +32 -6
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/LiveCollaborators.js +5 -0
  7. package/dist-cjs/lib/components/LiveCollaborators.js.map +2 -2
  8. package/dist-cjs/lib/components/Shape.js +7 -0
  9. package/dist-cjs/lib/components/Shape.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +2 -2
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +2 -2
  12. package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +2 -2
  13. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  15. package/dist-cjs/lib/editor/Editor.js +69 -14
  16. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  17. package/dist-cjs/lib/editor/managers/FontManager.js +166 -0
  18. package/dist-cjs/lib/editor/managers/FontManager.js.map +7 -0
  19. package/dist-cjs/lib/editor/managers/TextManager.js +23 -17
  20. package/dist-cjs/lib/editor/managers/TextManager.js.map +2 -2
  21. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +11 -0
  22. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  23. package/dist-cjs/lib/editor/types/emit-types.js.map +1 -1
  24. package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
  25. package/dist-cjs/lib/exports/FontEmbedder.js +7 -2
  26. package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
  27. package/dist-cjs/lib/exports/StyleEmbedder.js +1 -1
  28. package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
  29. package/dist-cjs/lib/exports/exportToSvg.js +3 -2
  30. package/dist-cjs/lib/exports/exportToSvg.js.map +2 -2
  31. package/dist-cjs/lib/exports/getSvgJsx.js +18 -1
  32. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  33. package/dist-cjs/lib/exports/parseCss.js +1 -0
  34. package/dist-cjs/lib/exports/parseCss.js.map +2 -2
  35. package/dist-cjs/lib/hooks/useCanvasEvents.js +2 -2
  36. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  37. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +1 -1
  38. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  39. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +48 -0
  40. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +7 -0
  41. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  42. package/dist-cjs/lib/hooks/usePeerIds.js.map +1 -1
  43. package/dist-cjs/lib/hooks/usePresence.js.map +1 -1
  44. package/dist-cjs/lib/hooks/useViewportHeight.js +56 -0
  45. package/dist-cjs/lib/hooks/useViewportHeight.js.map +7 -0
  46. package/dist-cjs/lib/options.js +2 -1
  47. package/dist-cjs/lib/options.js.map +2 -2
  48. package/dist-cjs/lib/utils/browserCanvasMaxSize.js +5 -0
  49. package/dist-cjs/lib/utils/browserCanvasMaxSize.js.map +2 -2
  50. package/dist-cjs/lib/utils/dom.js +1 -1
  51. package/dist-cjs/lib/utils/dom.js.map +2 -2
  52. package/dist-cjs/lib/utils/richText.js +46 -0
  53. package/dist-cjs/lib/utils/richText.js.map +7 -0
  54. package/dist-cjs/version.js +3 -3
  55. package/dist-cjs/version.js.map +1 -1
  56. package/dist-esm/index.d.mts +243 -5
  57. package/dist-esm/index.mjs +13 -1
  58. package/dist-esm/index.mjs.map +2 -2
  59. package/dist-esm/lib/TldrawEditor.mjs +33 -7
  60. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  61. package/dist-esm/lib/components/LiveCollaborators.mjs +5 -0
  62. package/dist-esm/lib/components/LiveCollaborators.mjs.map +2 -2
  63. package/dist-esm/lib/components/Shape.mjs +8 -1
  64. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  65. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  66. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  67. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  68. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  69. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  70. package/dist-esm/lib/editor/Editor.mjs +72 -10
  71. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  72. package/dist-esm/lib/editor/managers/FontManager.mjs +152 -0
  73. package/dist-esm/lib/editor/managers/FontManager.mjs.map +7 -0
  74. package/dist-esm/lib/editor/managers/TextManager.mjs +23 -17
  75. package/dist-esm/lib/editor/managers/TextManager.mjs.map +2 -2
  76. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +11 -0
  77. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  78. package/dist-esm/lib/exports/FontEmbedder.mjs +7 -2
  79. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  80. package/dist-esm/lib/exports/StyleEmbedder.mjs +1 -1
  81. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
  82. package/dist-esm/lib/exports/exportToSvg.mjs +3 -2
  83. package/dist-esm/lib/exports/exportToSvg.mjs.map +2 -2
  84. package/dist-esm/lib/exports/getSvgJsx.mjs +19 -2
  85. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  86. package/dist-esm/lib/exports/parseCss.mjs +1 -0
  87. package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
  88. package/dist-esm/lib/hooks/useCanvasEvents.mjs +2 -2
  89. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  90. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +1 -1
  91. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  92. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +28 -0
  93. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +7 -0
  94. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  95. package/dist-esm/lib/hooks/usePeerIds.mjs.map +1 -1
  96. package/dist-esm/lib/hooks/usePresence.mjs.map +1 -1
  97. package/dist-esm/lib/hooks/useViewportHeight.mjs +36 -0
  98. package/dist-esm/lib/hooks/useViewportHeight.mjs.map +7 -0
  99. package/dist-esm/lib/options.mjs +2 -1
  100. package/dist-esm/lib/options.mjs.map +2 -2
  101. package/dist-esm/lib/utils/browserCanvasMaxSize.mjs +5 -0
  102. package/dist-esm/lib/utils/browserCanvasMaxSize.mjs.map +2 -2
  103. package/dist-esm/lib/utils/dom.mjs +1 -1
  104. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  105. package/dist-esm/lib/utils/richText.mjs +26 -0
  106. package/dist-esm/lib/utils/richText.mjs.map +7 -0
  107. package/dist-esm/version.mjs +3 -3
  108. package/dist-esm/version.mjs.map +1 -1
  109. package/editor.css +127 -13
  110. package/package.json +10 -7
  111. package/src/index.ts +15 -0
  112. package/src/lib/TldrawEditor.tsx +52 -4
  113. package/src/lib/components/LiveCollaborators.tsx +5 -0
  114. package/src/lib/components/Shape.tsx +9 -1
  115. package/src/lib/components/default-components/DefaultBrush.tsx +1 -0
  116. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -0
  117. package/src/lib/components/default-components/DefaultCursor.tsx +1 -0
  118. package/src/lib/components/default-components/DefaultScribble.tsx +1 -0
  119. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -0
  120. package/src/lib/editor/Editor.ts +92 -8
  121. package/src/lib/editor/managers/FontManager.ts +251 -0
  122. package/src/lib/editor/managers/TextManager.ts +42 -17
  123. package/src/lib/editor/shapes/ShapeUtil.ts +13 -0
  124. package/src/lib/editor/types/emit-types.ts +1 -0
  125. package/src/lib/editor/types/external-content.ts +1 -0
  126. package/src/lib/exports/FontEmbedder.ts +13 -1
  127. package/src/lib/exports/StyleEmbedder.ts +1 -1
  128. package/src/lib/exports/exportToSvg.tsx +4 -3
  129. package/src/lib/exports/getSvgJsx.tsx +22 -2
  130. package/src/lib/exports/parseCss.ts +1 -0
  131. package/src/lib/hooks/useCanvasEvents.ts +2 -1
  132. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +1 -0
  133. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +29 -0
  134. package/src/lib/hooks/usePassThroughWheelEvents.ts +0 -1
  135. package/src/lib/hooks/usePeerIds.ts +1 -1
  136. package/src/lib/hooks/usePresence.ts +2 -2
  137. package/src/lib/hooks/useViewportHeight.ts +37 -0
  138. package/src/lib/options.ts +7 -0
  139. package/src/lib/utils/browserCanvasMaxSize.ts +5 -3
  140. package/src/lib/utils/dom.ts +1 -1
  141. package/src/lib/utils/richText.ts +72 -0
  142. package/src/version.ts +3 -3
@@ -80,7 +80,6 @@ var import_state = require("@tldraw/state");
80
80
  var import_store = require("@tldraw/store");
81
81
  var import_tlschema = require("@tldraw/tlschema");
82
82
  var import_utils = require("@tldraw/utils");
83
- var import_core_js = require("core-js");
84
83
  var import_eventemitter3 = __toESM(require("eventemitter3"));
85
84
  var import_TLEditorSnapshot = require("../config/TLEditorSnapshot");
86
85
  var import_createTLUser = require("../config/createTLUser");
@@ -115,6 +114,7 @@ var import_shapeIdsInCurrentPage = require("./derivations/shapeIdsInCurrentPage"
115
114
  var import_ClickManager = require("./managers/ClickManager");
116
115
  var import_EdgeScrollManager = require("./managers/EdgeScrollManager");
117
116
  var import_FocusManager = require("./managers/FocusManager");
117
+ var import_FontManager = require("./managers/FontManager");
118
118
  var import_HistoryManager = require("./managers/HistoryManager");
119
119
  var import_ScribbleManager = require("./managers/ScribbleManager");
120
120
  var import_SnapManager = require("./managers/SnapManager/SnapManager");
@@ -122,8 +122,8 @@ var import_TextManager = require("./managers/TextManager");
122
122
  var import_TickManager = require("./managers/TickManager");
123
123
  var import_UserPreferencesManager = require("./managers/UserPreferencesManager");
124
124
  var import_RootState = require("./tools/RootState");
125
- 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, _getEditingShape_dec, _getEditingShapeId_dec, _getFocusedGroup_dec, _getFocusedGroupId_dec, _getSelectionRotatedScreenBounds_dec, _getSelectionRotatedPageBounds_dec, _getSelectionRotation_dec, _getSelectionPageBounds_dec, _getOnlySelectedShape_dec, _getOnlySelectedShapeId_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;
126
- class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_dec = [import_state.computed], _getCanUndo_dec = [import_state.computed], _getCanRedo_dec = [import_state.computed], _getPath_dec = [import_state.computed], _getCurrentTool_dec = [import_state.computed], _getCurrentToolId_dec = [import_state.computed], _getDocumentSettings_dec = [import_state.computed], _getInstanceState_dec = [import_state.computed], _getOpenMenus_dec = [import_state.computed], _getIsMenuOpen_dec = [import_state.computed], _getPageStates_dec = [import_state.computed], __getPageStatesQuery_dec = [import_state.computed], _getCurrentPageState_dec = [import_state.computed], __getCurrentPageStateId_dec = [import_state.computed], _getSelectedShapeIds_dec = [import_state.computed], _getSelectedShapes_dec = [import_state.computed], _getOnlySelectedShapeId_dec = [import_state.computed], _getOnlySelectedShape_dec = [import_state.computed], _getSelectionPageBounds_dec = [import_state.computed], _getSelectionRotation_dec = [import_state.computed], _getSelectionRotatedPageBounds_dec = [import_state.computed], _getSelectionRotatedScreenBounds_dec = [import_state.computed], _getFocusedGroupId_dec = [import_state.computed], _getFocusedGroup_dec = [import_state.computed], _getEditingShapeId_dec = [import_state.computed], _getEditingShape_dec = [import_state.computed], _getHoveredShapeId_dec = [import_state.computed], _getHoveredShape_dec = [import_state.computed], _getHintingShapeIds_dec = [import_state.computed], _getHintingShape_dec = [import_state.computed], _getErasingShapeIds_dec = [import_state.computed], _getErasingShapes_dec = [import_state.computed], __unsafe_getCameraId_dec = [import_state.computed], _getCamera_dec = [import_state.computed], _getViewportPageBoundsForFollowing_dec = [import_state.computed], _getCameraForFollowing_dec = [import_state.computed], _getZoomLevel_dec = [import_state.computed], _getViewportScreenBounds_dec = [import_state.computed], _getViewportScreenCenter_dec = [import_state.computed], _getViewportPageBounds_dec = [import_state.computed], __getCollaboratorsQuery_dec = [import_state.computed], _getCollaborators_dec = [import_state.computed], _getCollaboratorsOnCurrentPage_dec = [import_state.computed], _getRenderingShapes_dec = [import_state.computed], __getAllPagesQuery_dec = [import_state.computed], _getPages_dec = [import_state.computed], _getCurrentPageId_dec = [import_state.computed], _getCurrentPageShapeIdsSorted_dec = [import_state.computed], __getAllAssetsQuery_dec = [import_state.computed], __getShapeHandlesCache_dec = [import_state.computed], __getShapePageTransformCache_dec = [import_state.computed], __getShapePageBoundsCache_dec = [import_state.computed], __getShapeClipPathCache_dec = [import_state.computed], __getShapeMaskCache_dec = [import_state.computed], __getShapeMaskedPageBoundsCache_dec = [import_state.computed], __notVisibleShapes_dec = [import_state.computed], _getCulledShapes_dec = [import_state.computed], _getCurrentPageBounds_dec = [import_state.computed], _getCurrentPageShapes_dec = [import_state.computed], _getCurrentPageShapesSorted_dec = [import_state.computed], _getCurrentPageRenderingShapesSorted_dec = [import_state.computed], __getBindingsIndexCache_dec = [import_state.computed], __getSelectionSharedStyles_dec = [import_state.computed], _getSharedStyles_dec = [(0, import_state.computed)({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [import_state.computed], _getIsFocused_dec = [import_state.computed], _getIsReadonly_dec = [import_state.computed], __setShiftKeyTimeout_dec = [import_utils.bind], __setAltKeyTimeout_dec = [import_utils.bind], __setCtrlKeyTimeout_dec = [import_utils.bind], __setMetaKeyTimeout_dec = [import_utils.bind], _a) {
125
+ 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, _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;
126
+ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_dec = [import_state.computed], _getCanUndo_dec = [import_state.computed], _getCanRedo_dec = [import_state.computed], _getPath_dec = [import_state.computed], _getCurrentTool_dec = [import_state.computed], _getCurrentToolId_dec = [import_state.computed], _getDocumentSettings_dec = [import_state.computed], _getInstanceState_dec = [import_state.computed], _getOpenMenus_dec = [import_state.computed], _getIsMenuOpen_dec = [import_state.computed], _getPageStates_dec = [import_state.computed], __getPageStatesQuery_dec = [import_state.computed], _getCurrentPageState_dec = [import_state.computed], __getCurrentPageStateId_dec = [import_state.computed], _getSelectedShapeIds_dec = [import_state.computed], _getSelectedShapes_dec = [import_state.computed], _getOnlySelectedShapeId_dec = [import_state.computed], _getOnlySelectedShape_dec = [import_state.computed], _getSelectionPageBounds_dec = [import_state.computed], _getSelectionRotation_dec = [import_state.computed], _getSelectionRotatedPageBounds_dec = [import_state.computed], _getSelectionRotatedScreenBounds_dec = [import_state.computed], _getFocusedGroupId_dec = [import_state.computed], _getFocusedGroup_dec = [import_state.computed], _getEditingShapeId_dec = [import_state.computed], _getEditingShape_dec = [import_state.computed], _getRichTextEditor_dec = [import_state.computed], _getHoveredShapeId_dec = [import_state.computed], _getHoveredShape_dec = [import_state.computed], _getHintingShapeIds_dec = [import_state.computed], _getHintingShape_dec = [import_state.computed], _getErasingShapeIds_dec = [import_state.computed], _getErasingShapes_dec = [import_state.computed], __unsafe_getCameraId_dec = [import_state.computed], _getCamera_dec = [import_state.computed], _getViewportPageBoundsForFollowing_dec = [import_state.computed], _getCameraForFollowing_dec = [import_state.computed], _getZoomLevel_dec = [import_state.computed], _getViewportScreenBounds_dec = [import_state.computed], _getViewportScreenCenter_dec = [import_state.computed], _getViewportPageBounds_dec = [import_state.computed], __getCollaboratorsQuery_dec = [import_state.computed], _getCollaborators_dec = [import_state.computed], _getCollaboratorsOnCurrentPage_dec = [import_state.computed], _getRenderingShapes_dec = [import_state.computed], __getAllPagesQuery_dec = [import_state.computed], _getPages_dec = [import_state.computed], _getCurrentPageId_dec = [import_state.computed], _getCurrentPageShapeIdsSorted_dec = [import_state.computed], __getAllAssetsQuery_dec = [import_state.computed], __getShapeHandlesCache_dec = [import_state.computed], __getShapePageTransformCache_dec = [import_state.computed], __getShapePageBoundsCache_dec = [import_state.computed], __getShapeClipPathCache_dec = [import_state.computed], __getShapeMaskCache_dec = [import_state.computed], __getShapeMaskedPageBoundsCache_dec = [import_state.computed], __notVisibleShapes_dec = [import_state.computed], _getCulledShapes_dec = [import_state.computed], _getCurrentPageBounds_dec = [import_state.computed], _getCurrentPageShapes_dec = [import_state.computed], _getCurrentPageShapesSorted_dec = [import_state.computed], _getCurrentPageRenderingShapesSorted_dec = [import_state.computed], __getBindingsIndexCache_dec = [import_state.computed], __getSelectionSharedStyles_dec = [import_state.computed], _getSharedStyles_dec = [(0, import_state.computed)({ isEqual: (a, b) => a.equals(b) })], _getSharedOpacity_dec = [import_state.computed], _getIsFocused_dec = [import_state.computed], _getIsReadonly_dec = [import_state.computed], __setShiftKeyTimeout_dec = [import_utils.bind], __setAltKeyTimeout_dec = [import_utils.bind], __setCtrlKeyTimeout_dec = [import_utils.bind], __setMetaKeyTimeout_dec = [import_utils.bind], _a) {
127
127
  constructor({
128
128
  store,
129
129
  user,
@@ -132,14 +132,17 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
132
132
  tools,
133
133
  getContainer,
134
134
  cameraOptions,
135
+ textOptions,
135
136
  initialState,
136
137
  autoFocus,
137
138
  inferDarkMode,
138
139
  options,
139
- isShapeHidden
140
+ isShapeHidden,
141
+ fontAssetUrls
140
142
  }) {
141
143
  super();
142
144
  __runInitializers(_init, 5, this);
145
+ __publicField(this, "id", (0, import_utils.uniqueId)());
143
146
  __publicField(this, "_isShapeHiddenPredicate");
144
147
  __publicField(this, "options");
145
148
  __publicField(this, "contextId", (0, import_utils.uniqueId)());
@@ -194,6 +197,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
194
197
  * @public
195
198
  */
196
199
  __publicField(this, "textMeasure");
200
+ /**
201
+ * A utility for managing the set of fonts that should be rendered in the document.
202
+ *
203
+ * @public
204
+ */
205
+ __publicField(this, "fonts");
197
206
  /**
198
207
  * A manager for the editor's environment.
199
208
  *
@@ -265,6 +274,9 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
265
274
  __publicField(this, "_isChangingStyleTimeout", -1);
266
275
  // Menus
267
276
  __publicField(this, "menus", import_menus.tlmenus.forContext(this.contextId));
277
+ // Rich text editor
278
+ __publicField(this, "_currentRichTextEditor", (0, import_state.atom)("rich text editor", null));
279
+ __publicField(this, "_textOptions");
268
280
  __publicField(this, "_cameraOptions", (0, import_state.atom)("camera options", import_constants.DEFAULT_CAMERA_OPTIONS));
269
281
  /** @internal */
270
282
  __publicField(this, "_viewportAnimation", null);
@@ -412,10 +424,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
412
424
  this.snaps = new import_SnapManager.SnapManager(this);
413
425
  this.disposables.add(this.timers.dispose);
414
426
  this._cameraOptions.set({ ...import_constants.DEFAULT_CAMERA_OPTIONS, ...cameraOptions });
427
+ this._textOptions = (0, import_state.atom)("text options", textOptions ?? null);
415
428
  this.user = new import_UserPreferencesManager.UserPreferencesManager(user ?? (0, import_createTLUser.createTLUser)(), inferDarkMode ?? false);
416
429
  this.disposables.add(() => this.user.dispose());
417
430
  this.getContainer = getContainer;
418
431
  this.textMeasure = new import_TextManager.TextManager(this);
432
+ this.fonts = new import_FontManager.FontManager(this, fontAssetUrls);
419
433
  this._tickManager = new import_TickManager.TickManager(this);
420
434
  class NewRoot extends import_RootState.RootState {
421
435
  static initial = initialState ?? "";
@@ -1587,6 +1601,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1587
1601
  */
1588
1602
  setEditingShape(shape) {
1589
1603
  const id = typeof shape === "string" ? shape : shape?.id ?? null;
1604
+ this.setRichTextEditor(null);
1590
1605
  if (id !== this.getEditingShapeId()) {
1591
1606
  if (id) {
1592
1607
  const shape2 = this.getShape(id);
@@ -1603,12 +1618,36 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1603
1618
  this.run(
1604
1619
  () => {
1605
1620
  this._updateCurrentPageState({ editingShapeId: null });
1621
+ this._currentRichTextEditor.set(null);
1606
1622
  },
1607
1623
  { history: "ignore" }
1608
1624
  );
1609
1625
  }
1610
1626
  return this;
1611
1627
  }
1628
+ getRichTextEditor() {
1629
+ return this._currentRichTextEditor.get();
1630
+ }
1631
+ /**
1632
+ * Set the current editing shape's rich text editor.
1633
+ *
1634
+ * @example
1635
+ * ```ts
1636
+ * editor.setRichTextEditor(richTextEditorView)
1637
+ * ```
1638
+ *
1639
+ * @param textEditor - The text editor to set as the current editing shape's text editor.
1640
+ *
1641
+ * @public
1642
+ */
1643
+ setRichTextEditor(textEditor) {
1644
+ const current = this._currentRichTextEditor.__unsafe__getWithoutCapture();
1645
+ if (current !== textEditor) {
1646
+ current?.destroy();
1647
+ }
1648
+ this._currentRichTextEditor.set(textEditor);
1649
+ return this;
1650
+ }
1612
1651
  getHoveredShapeId() {
1613
1652
  return this.getCurrentPageState().hoveredShapeId;
1614
1653
  }
@@ -1754,6 +1793,18 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1754
1793
  }
1755
1794
  return this;
1756
1795
  }
1796
+ /**
1797
+ * Get the current text options.
1798
+ *
1799
+ * @example
1800
+ * ```ts
1801
+ * editor.getTextOptions()
1802
+ * ```
1803
+ *
1804
+ * @public */
1805
+ getTextOptions() {
1806
+ return (0, import_utils.assertExists)(this._textOptions.get(), "Cannot use text without setting textOptions");
1807
+ }
1757
1808
  _unsafe_getCameraId() {
1758
1809
  return import_tlschema.CameraRecordType.createId(this.getCurrentPageId());
1759
1810
  }
@@ -2095,9 +2146,9 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
2095
2146
  this.stopFollowingUser();
2096
2147
  }
2097
2148
  const _point = import_Vec.Vec.Cast(point);
2098
- if (!import_core_js.Number.isFinite(_point.x)) _point.x = 0;
2099
- if (!import_core_js.Number.isFinite(_point.y)) _point.y = 0;
2100
- if (_point.z === void 0 || !import_core_js.Number.isFinite(_point.z)) point.z = this.getZoomLevel();
2149
+ if (!Number.isFinite(_point.x)) _point.x = 0;
2150
+ if (!Number.isFinite(_point.y)) _point.y = 0;
2151
+ if (_point.z === void 0 || !Number.isFinite(_point.z)) point.z = this.getZoomLevel();
2101
2152
  const camera = this.getConstrainedCamera(_point, opts);
2102
2153
  if (opts?.animation) {
2103
2154
  const { width, height } = this.getViewportScreenBounds();
@@ -3218,7 +3269,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3218
3269
  if (!this._shapeGeometryCaches[context]) {
3219
3270
  this._shapeGeometryCaches[context] = this.store.createComputedCache(
3220
3271
  "bounds",
3221
- (shape2) => this.getShapeUtil(shape2).getGeometry(shape2, opts),
3272
+ (shape2) => {
3273
+ this.fonts.trackFontsForShape(shape2);
3274
+ return this.getShapeUtil(shape2).getGeometry(shape2, opts);
3275
+ },
3222
3276
  { areRecordsEqual: (a, b) => a.props === b.props }
3223
3277
  );
3224
3278
  }
@@ -3626,7 +3680,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3626
3680
  const geometry = this.getShapeGeometry(shape);
3627
3681
  const isGroup = geometry instanceof import_Group2d.Group2d;
3628
3682
  const pointInShapeSpace = this.getPointInShapeSpace(shape, point);
3629
- if (this.isShapeOfType(shape, "frame") || (this.isShapeOfType(shape, "arrow") || this.isShapeOfType(shape, "geo") && shape.props.fill === "none") && shape.props.text.trim()) {
3683
+ if (this.isShapeOfType(shape, "frame") || this.isShapeOfType(shape, "arrow") && shape.props.text.trim() || (this.isShapeOfType(shape, "note") || this.isShapeOfType(shape, "geo") && shape.props.fill === "none") && this.getShapeUtil(shape).getText(shape)?.trim()) {
3630
3684
  for (const childGeometry of geometry.children) {
3631
3685
  if (childGeometry.isLabel && childGeometry.isPointInBounds(pointInShapeSpace)) {
3632
3686
  return shape;
@@ -3955,7 +4009,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3955
4009
  indices = sib ? (0, import_utils.getIndicesAbove)(sib.index, ids.length) : (0, import_utils.getIndices)(ids.length);
3956
4010
  }
3957
4011
  const invertedParentTransform = parentTransform.clone().invert();
3958
- const shapesToReparent = (0, import_utils.compact)(ids.map((id) => this.getShape(id)));
4012
+ const shapesToReparent = (0, import_utils.compact)(ids.map((id) => this.getShape(id))).sort(import_utils.sortByIndex);
3959
4013
  this.run(
3960
4014
  () => {
3961
4015
  for (let i = 0; i < shapesToReparent.length; i++) {
@@ -5250,8 +5304,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5250
5304
  resizeShape(shape, scale, opts = {}) {
5251
5305
  const id = typeof shape === "string" ? shape : shape.id;
5252
5306
  if (this.getIsReadonly()) return this;
5253
- if (!import_core_js.Number.isFinite(scale.x)) scale = new import_Vec.Vec(1, scale.y);
5254
- if (!import_core_js.Number.isFinite(scale.y)) scale = new import_Vec.Vec(scale.x, 1);
5307
+ if (!Number.isFinite(scale.x)) scale = new import_Vec.Vec(1, scale.y);
5308
+ if (!Number.isFinite(scale.y)) scale = new import_Vec.Vec(scale.x, 1);
5255
5309
  const initialShape = opts.initialShape ?? this.getShape(id);
5256
5310
  if (!initialShape) return this;
5257
5311
  const scaleOrigin = opts.scaleOrigin ?? this.getShapePageBounds(id)?.center;
@@ -5439,7 +5493,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5439
5493
  * @example
5440
5494
  * ```ts
5441
5495
  * editor.createShape(myShape)
5442
- * editor.createShape({ id: 'box1', type: 'text', props: { text: "ok" } })
5496
+ * editor.createShape({ id: 'box1', type: 'text', props: { richText: toRichText("ok") } })
5443
5497
  * ```
5444
5498
  *
5445
5499
  * @param shape - The shape (or shape partial) to create.
@@ -5456,7 +5510,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5456
5510
  * @example
5457
5511
  * ```ts
5458
5512
  * editor.createShapes([myShape])
5459
- * editor.createShapes([{ id: 'box1', type: 'text', props: { text: "ok" } }])
5513
+ * editor.createShapes([{ id: 'box1', type: 'text', props: { richText: toRichText("ok") } }])
5460
5514
  * ```
5461
5515
  *
5462
5516
  * @param shapes - The shapes (or shape partials) to create.
@@ -7461,6 +7515,7 @@ __decorateElement(_init, 1, "getFocusedGroupId", _getFocusedGroupId_dec, Editor)
7461
7515
  __decorateElement(_init, 1, "getFocusedGroup", _getFocusedGroup_dec, Editor);
7462
7516
  __decorateElement(_init, 1, "getEditingShapeId", _getEditingShapeId_dec, Editor);
7463
7517
  __decorateElement(_init, 1, "getEditingShape", _getEditingShape_dec, Editor);
7518
+ __decorateElement(_init, 1, "getRichTextEditor", _getRichTextEditor_dec, Editor);
7464
7519
  __decorateElement(_init, 1, "getHoveredShapeId", _getHoveredShapeId_dec, Editor);
7465
7520
  __decorateElement(_init, 1, "getHoveredShape", _getHoveredShape_dec, Editor);
7466
7521
  __decorateElement(_init, 1, "getHintingShapeIds", _getHintingShapeIds_dec, Editor);