@tldraw/editor 3.9.0 → 3.10.0-canary.3bf31007c5a7

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 (131) hide show
  1. package/dist-cjs/index.d.ts +232 -3
  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 +63 -7
  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/useViewportHeight.js +56 -0
  43. package/dist-cjs/lib/hooks/useViewportHeight.js.map +7 -0
  44. package/dist-cjs/lib/options.js +2 -1
  45. package/dist-cjs/lib/options.js.map +2 -2
  46. package/dist-cjs/lib/utils/dom.js +1 -1
  47. package/dist-cjs/lib/utils/dom.js.map +2 -2
  48. package/dist-cjs/lib/utils/richText.js +46 -0
  49. package/dist-cjs/lib/utils/richText.js.map +7 -0
  50. package/dist-cjs/version.js +3 -3
  51. package/dist-cjs/version.js.map +1 -1
  52. package/dist-esm/index.d.mts +232 -3
  53. package/dist-esm/index.mjs +13 -1
  54. package/dist-esm/index.mjs.map +2 -2
  55. package/dist-esm/lib/TldrawEditor.mjs +33 -7
  56. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  57. package/dist-esm/lib/components/LiveCollaborators.mjs +5 -0
  58. package/dist-esm/lib/components/LiveCollaborators.mjs.map +2 -2
  59. package/dist-esm/lib/components/Shape.mjs +8 -1
  60. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  61. package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +2 -2
  62. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
  63. package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +2 -2
  64. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  65. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  66. package/dist-esm/lib/editor/Editor.mjs +71 -8
  67. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  68. package/dist-esm/lib/editor/managers/FontManager.mjs +152 -0
  69. package/dist-esm/lib/editor/managers/FontManager.mjs.map +7 -0
  70. package/dist-esm/lib/editor/managers/TextManager.mjs +23 -17
  71. package/dist-esm/lib/editor/managers/TextManager.mjs.map +2 -2
  72. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +11 -0
  73. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  74. package/dist-esm/lib/exports/FontEmbedder.mjs +7 -2
  75. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  76. package/dist-esm/lib/exports/StyleEmbedder.mjs +1 -1
  77. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
  78. package/dist-esm/lib/exports/exportToSvg.mjs +3 -2
  79. package/dist-esm/lib/exports/exportToSvg.mjs.map +2 -2
  80. package/dist-esm/lib/exports/getSvgJsx.mjs +19 -2
  81. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  82. package/dist-esm/lib/exports/parseCss.mjs +1 -0
  83. package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
  84. package/dist-esm/lib/hooks/useCanvasEvents.mjs +2 -2
  85. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  86. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +1 -1
  87. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  88. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +28 -0
  89. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +7 -0
  90. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  91. package/dist-esm/lib/hooks/useViewportHeight.mjs +36 -0
  92. package/dist-esm/lib/hooks/useViewportHeight.mjs.map +7 -0
  93. package/dist-esm/lib/options.mjs +2 -1
  94. package/dist-esm/lib/options.mjs.map +2 -2
  95. package/dist-esm/lib/utils/dom.mjs +1 -1
  96. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  97. package/dist-esm/lib/utils/richText.mjs +26 -0
  98. package/dist-esm/lib/utils/richText.mjs.map +7 -0
  99. package/dist-esm/version.mjs +3 -3
  100. package/dist-esm/version.mjs.map +1 -1
  101. package/editor.css +127 -13
  102. package/package.json +10 -7
  103. package/src/index.ts +15 -0
  104. package/src/lib/TldrawEditor.tsx +52 -4
  105. package/src/lib/components/LiveCollaborators.tsx +5 -0
  106. package/src/lib/components/Shape.tsx +9 -1
  107. package/src/lib/components/default-components/DefaultBrush.tsx +1 -0
  108. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -0
  109. package/src/lib/components/default-components/DefaultCursor.tsx +1 -0
  110. package/src/lib/components/default-components/DefaultScribble.tsx +1 -0
  111. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +1 -0
  112. package/src/lib/editor/Editor.ts +91 -6
  113. package/src/lib/editor/managers/FontManager.ts +251 -0
  114. package/src/lib/editor/managers/TextManager.ts +42 -17
  115. package/src/lib/editor/shapes/ShapeUtil.ts +13 -0
  116. package/src/lib/editor/types/emit-types.ts +1 -0
  117. package/src/lib/editor/types/external-content.ts +1 -0
  118. package/src/lib/exports/FontEmbedder.ts +13 -1
  119. package/src/lib/exports/StyleEmbedder.ts +1 -1
  120. package/src/lib/exports/exportToSvg.tsx +4 -3
  121. package/src/lib/exports/getSvgJsx.tsx +22 -2
  122. package/src/lib/exports/parseCss.ts +1 -0
  123. package/src/lib/hooks/useCanvasEvents.ts +2 -1
  124. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +1 -0
  125. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +29 -0
  126. package/src/lib/hooks/usePassThroughWheelEvents.ts +0 -1
  127. package/src/lib/hooks/useViewportHeight.ts +37 -0
  128. package/src/lib/options.ts +7 -0
  129. package/src/lib/utils/dom.ts +1 -1
  130. package/src/lib/utils/richText.ts +72 -0
  131. package/src/version.ts +3 -3
@@ -115,6 +115,7 @@ var import_shapeIdsInCurrentPage = require("./derivations/shapeIdsInCurrentPage"
115
115
  var import_ClickManager = require("./managers/ClickManager");
116
116
  var import_EdgeScrollManager = require("./managers/EdgeScrollManager");
117
117
  var import_FocusManager = require("./managers/FocusManager");
118
+ var import_FontManager = require("./managers/FontManager");
118
119
  var import_HistoryManager = require("./managers/HistoryManager");
119
120
  var import_ScribbleManager = require("./managers/ScribbleManager");
120
121
  var import_SnapManager = require("./managers/SnapManager/SnapManager");
@@ -122,8 +123,8 @@ var import_TextManager = require("./managers/TextManager");
122
123
  var import_TickManager = require("./managers/TickManager");
123
124
  var import_UserPreferencesManager = require("./managers/UserPreferencesManager");
124
125
  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) {
126
+ 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;
127
+ 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
128
  constructor({
128
129
  store,
129
130
  user,
@@ -132,14 +133,17 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
132
133
  tools,
133
134
  getContainer,
134
135
  cameraOptions,
136
+ textOptions,
135
137
  initialState,
136
138
  autoFocus,
137
139
  inferDarkMode,
138
140
  options,
139
- isShapeHidden
141
+ isShapeHidden,
142
+ fontAssetUrls
140
143
  }) {
141
144
  super();
142
145
  __runInitializers(_init, 5, this);
146
+ __publicField(this, "id", (0, import_utils.uniqueId)());
143
147
  __publicField(this, "_isShapeHiddenPredicate");
144
148
  __publicField(this, "options");
145
149
  __publicField(this, "contextId", (0, import_utils.uniqueId)());
@@ -194,6 +198,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
194
198
  * @public
195
199
  */
196
200
  __publicField(this, "textMeasure");
201
+ /**
202
+ * A utility for managing the set of fonts that should be rendered in the document.
203
+ *
204
+ * @public
205
+ */
206
+ __publicField(this, "fonts");
197
207
  /**
198
208
  * A manager for the editor's environment.
199
209
  *
@@ -265,6 +275,9 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
265
275
  __publicField(this, "_isChangingStyleTimeout", -1);
266
276
  // Menus
267
277
  __publicField(this, "menus", import_menus.tlmenus.forContext(this.contextId));
278
+ // Rich text editor
279
+ __publicField(this, "_currentRichTextEditor", (0, import_state.atom)("rich text editor", null));
280
+ __publicField(this, "_textOptions");
268
281
  __publicField(this, "_cameraOptions", (0, import_state.atom)("camera options", import_constants.DEFAULT_CAMERA_OPTIONS));
269
282
  /** @internal */
270
283
  __publicField(this, "_viewportAnimation", null);
@@ -412,10 +425,12 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
412
425
  this.snaps = new import_SnapManager.SnapManager(this);
413
426
  this.disposables.add(this.timers.dispose);
414
427
  this._cameraOptions.set({ ...import_constants.DEFAULT_CAMERA_OPTIONS, ...cameraOptions });
428
+ this._textOptions = (0, import_state.atom)("text options", textOptions ?? null);
415
429
  this.user = new import_UserPreferencesManager.UserPreferencesManager(user ?? (0, import_createTLUser.createTLUser)(), inferDarkMode ?? false);
416
430
  this.disposables.add(() => this.user.dispose());
417
431
  this.getContainer = getContainer;
418
432
  this.textMeasure = new import_TextManager.TextManager(this);
433
+ this.fonts = new import_FontManager.FontManager(this, fontAssetUrls);
419
434
  this._tickManager = new import_TickManager.TickManager(this);
420
435
  class NewRoot extends import_RootState.RootState {
421
436
  static initial = initialState ?? "";
@@ -1587,6 +1602,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1587
1602
  */
1588
1603
  setEditingShape(shape) {
1589
1604
  const id = typeof shape === "string" ? shape : shape?.id ?? null;
1605
+ this.setRichTextEditor(null);
1590
1606
  if (id !== this.getEditingShapeId()) {
1591
1607
  if (id) {
1592
1608
  const shape2 = this.getShape(id);
@@ -1603,12 +1619,36 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1603
1619
  this.run(
1604
1620
  () => {
1605
1621
  this._updateCurrentPageState({ editingShapeId: null });
1622
+ this._currentRichTextEditor.set(null);
1606
1623
  },
1607
1624
  { history: "ignore" }
1608
1625
  );
1609
1626
  }
1610
1627
  return this;
1611
1628
  }
1629
+ getRichTextEditor() {
1630
+ return this._currentRichTextEditor.get();
1631
+ }
1632
+ /**
1633
+ * Set the current editing shape's rich text editor.
1634
+ *
1635
+ * @example
1636
+ * ```ts
1637
+ * editor.setRichTextEditor(richTextEditorView)
1638
+ * ```
1639
+ *
1640
+ * @param textEditor - The text editor to set as the current editing shape's text editor.
1641
+ *
1642
+ * @public
1643
+ */
1644
+ setRichTextEditor(textEditor) {
1645
+ const current = this._currentRichTextEditor.__unsafe__getWithoutCapture();
1646
+ if (current !== textEditor) {
1647
+ current?.destroy();
1648
+ }
1649
+ this._currentRichTextEditor.set(textEditor);
1650
+ return this;
1651
+ }
1612
1652
  getHoveredShapeId() {
1613
1653
  return this.getCurrentPageState().hoveredShapeId;
1614
1654
  }
@@ -1754,6 +1794,18 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
1754
1794
  }
1755
1795
  return this;
1756
1796
  }
1797
+ /**
1798
+ * Get the current text options.
1799
+ *
1800
+ * @example
1801
+ * ```ts
1802
+ * editor.getTextOptions()
1803
+ * ```
1804
+ *
1805
+ * @public */
1806
+ getTextOptions() {
1807
+ return (0, import_utils.assertExists)(this._textOptions.get(), "Cannot use text without setting textOptions");
1808
+ }
1757
1809
  _unsafe_getCameraId() {
1758
1810
  return import_tlschema.CameraRecordType.createId(this.getCurrentPageId());
1759
1811
  }
@@ -3218,7 +3270,10 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3218
3270
  if (!this._shapeGeometryCaches[context]) {
3219
3271
  this._shapeGeometryCaches[context] = this.store.createComputedCache(
3220
3272
  "bounds",
3221
- (shape2) => this.getShapeUtil(shape2).getGeometry(shape2, opts),
3273
+ (shape2) => {
3274
+ this.fonts.trackFontsForShape(shape2);
3275
+ return this.getShapeUtil(shape2).getGeometry(shape2, opts);
3276
+ },
3222
3277
  { areRecordsEqual: (a, b) => a.props === b.props }
3223
3278
  );
3224
3279
  }
@@ -3626,7 +3681,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
3626
3681
  const geometry = this.getShapeGeometry(shape);
3627
3682
  const isGroup = geometry instanceof import_Group2d.Group2d;
3628
3683
  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()) {
3684
+ 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
3685
  for (const childGeometry of geometry.children) {
3631
3686
  if (childGeometry.isLabel && childGeometry.isPointInBounds(pointInShapeSpace)) {
3632
3687
  return shape;
@@ -5439,7 +5494,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5439
5494
  * @example
5440
5495
  * ```ts
5441
5496
  * editor.createShape(myShape)
5442
- * editor.createShape({ id: 'box1', type: 'text', props: { text: "ok" } })
5497
+ * editor.createShape({ id: 'box1', type: 'text', props: { richText: toRichText("ok") } })
5443
5498
  * ```
5444
5499
  *
5445
5500
  * @param shape - The shape (or shape partial) to create.
@@ -5456,7 +5511,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
5456
5511
  * @example
5457
5512
  * ```ts
5458
5513
  * editor.createShapes([myShape])
5459
- * editor.createShapes([{ id: 'box1', type: 'text', props: { text: "ok" } }])
5514
+ * editor.createShapes([{ id: 'box1', type: 'text', props: { richText: toRichText("ok") } }])
5460
5515
  * ```
5461
5516
  *
5462
5517
  * @param shapes - The shapes (or shape partials) to create.
@@ -7461,6 +7516,7 @@ __decorateElement(_init, 1, "getFocusedGroupId", _getFocusedGroupId_dec, Editor)
7461
7516
  __decorateElement(_init, 1, "getFocusedGroup", _getFocusedGroup_dec, Editor);
7462
7517
  __decorateElement(_init, 1, "getEditingShapeId", _getEditingShapeId_dec, Editor);
7463
7518
  __decorateElement(_init, 1, "getEditingShape", _getEditingShape_dec, Editor);
7519
+ __decorateElement(_init, 1, "getRichTextEditor", _getRichTextEditor_dec, Editor);
7464
7520
  __decorateElement(_init, 1, "getHoveredShapeId", _getHoveredShapeId_dec, Editor);
7465
7521
  __decorateElement(_init, 1, "getHoveredShape", _getHoveredShape_dec, Editor);
7466
7522
  __decorateElement(_init, 1, "getHintingShapeIds", _getHintingShapeIds_dec, Editor);