@tldraw/editor 3.9.0-internal.7f0e15f4f7d9 → 3.9.0

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 (118) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +1 -1
  3. package/dist-cjs/index.d.ts +36 -229
  4. package/dist-cjs/index.js +1 -9
  5. package/dist-cjs/index.js.map +2 -2
  6. package/dist-cjs/lib/TldrawEditor.js +6 -33
  7. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  8. package/dist-cjs/lib/components/Shape.js +0 -7
  9. package/dist-cjs/lib/components/Shape.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  12. package/dist-cjs/lib/editor/Editor.js +435 -308
  13. package/dist-cjs/lib/editor/Editor.js.map +3 -3
  14. package/dist-cjs/lib/editor/managers/TextManager.js +17 -23
  15. package/dist-cjs/lib/editor/managers/TextManager.js.map +2 -2
  16. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +7 -13
  17. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  18. package/dist-cjs/lib/editor/types/emit-types.js.map +1 -1
  19. package/dist-cjs/lib/editor/types/external-content.js.map +1 -1
  20. package/dist-cjs/lib/exports/FontEmbedder.js +2 -7
  21. package/dist-cjs/lib/exports/FontEmbedder.js.map +2 -2
  22. package/dist-cjs/lib/exports/StyleEmbedder.js +1 -1
  23. package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
  24. package/dist-cjs/lib/exports/exportToSvg.js +2 -3
  25. package/dist-cjs/lib/exports/exportToSvg.js.map +2 -2
  26. package/dist-cjs/lib/exports/getSvgJsx.js +1 -18
  27. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  28. package/dist-cjs/lib/exports/parseCss.js +0 -1
  29. package/dist-cjs/lib/exports/parseCss.js.map +2 -2
  30. package/dist-cjs/lib/hooks/useCanvasEvents.js +2 -2
  31. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  32. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +1 -1
  33. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  34. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  35. package/dist-cjs/lib/options.js +1 -2
  36. package/dist-cjs/lib/options.js.map +2 -2
  37. package/dist-cjs/lib/utils/dom.js +1 -1
  38. package/dist-cjs/lib/utils/dom.js.map +2 -2
  39. package/dist-cjs/version.js +3 -3
  40. package/dist-cjs/version.js.map +1 -1
  41. package/dist-esm/index.d.mts +36 -229
  42. package/dist-esm/index.mjs +1 -13
  43. package/dist-esm/index.mjs.map +2 -2
  44. package/dist-esm/lib/TldrawEditor.mjs +7 -34
  45. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  46. package/dist-esm/lib/components/Shape.mjs +1 -8
  47. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  48. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  49. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  50. package/dist-esm/lib/editor/Editor.mjs +432 -312
  51. package/dist-esm/lib/editor/Editor.mjs.map +3 -3
  52. package/dist-esm/lib/editor/managers/TextManager.mjs +17 -23
  53. package/dist-esm/lib/editor/managers/TextManager.mjs.map +2 -2
  54. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +7 -13
  55. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  56. package/dist-esm/lib/exports/FontEmbedder.mjs +2 -7
  57. package/dist-esm/lib/exports/FontEmbedder.mjs.map +2 -2
  58. package/dist-esm/lib/exports/StyleEmbedder.mjs +1 -1
  59. package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
  60. package/dist-esm/lib/exports/exportToSvg.mjs +2 -3
  61. package/dist-esm/lib/exports/exportToSvg.mjs.map +2 -2
  62. package/dist-esm/lib/exports/getSvgJsx.mjs +2 -19
  63. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  64. package/dist-esm/lib/exports/parseCss.mjs +0 -1
  65. package/dist-esm/lib/exports/parseCss.mjs.map +2 -2
  66. package/dist-esm/lib/hooks/useCanvasEvents.mjs +2 -2
  67. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  68. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +1 -1
  69. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  70. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  71. package/dist-esm/lib/options.mjs +1 -2
  72. package/dist-esm/lib/options.mjs.map +2 -2
  73. package/dist-esm/lib/utils/dom.mjs +1 -1
  74. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  75. package/dist-esm/version.mjs +3 -3
  76. package/dist-esm/version.mjs.map +1 -1
  77. package/editor.css +13 -127
  78. package/package.json +7 -10
  79. package/src/index.ts +2 -15
  80. package/src/lib/TldrawEditor.tsx +4 -52
  81. package/src/lib/components/Shape.tsx +1 -9
  82. package/src/lib/components/default-components/DefaultErrorFallback.tsx +5 -3
  83. package/src/lib/editor/Editor.ts +561 -362
  84. package/src/lib/editor/managers/TextManager.ts +17 -42
  85. package/src/lib/editor/shapes/ShapeUtil.ts +32 -18
  86. package/src/lib/editor/types/emit-types.ts +0 -1
  87. package/src/lib/editor/types/external-content.ts +0 -1
  88. package/src/lib/exports/FontEmbedder.ts +1 -13
  89. package/src/lib/exports/StyleEmbedder.ts +1 -1
  90. package/src/lib/exports/exportToSvg.tsx +3 -4
  91. package/src/lib/exports/getSvgJsx.tsx +3 -22
  92. package/src/lib/exports/parseCss.ts +0 -1
  93. package/src/lib/hooks/useCanvasEvents.ts +1 -2
  94. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +0 -1
  95. package/src/lib/hooks/usePassThroughWheelEvents.ts +1 -0
  96. package/src/lib/options.ts +0 -7
  97. package/src/lib/utils/dom.ts +1 -1
  98. package/src/version.ts +3 -3
  99. package/dist-cjs/lib/editor/managers/FontManager.js +0 -167
  100. package/dist-cjs/lib/editor/managers/FontManager.js.map +0 -7
  101. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +0 -48
  102. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +0 -7
  103. package/dist-cjs/lib/hooks/useViewportHeight.js +0 -56
  104. package/dist-cjs/lib/hooks/useViewportHeight.js.map +0 -7
  105. package/dist-cjs/lib/utils/richText.js +0 -46
  106. package/dist-cjs/lib/utils/richText.js.map +0 -7
  107. package/dist-esm/lib/editor/managers/FontManager.mjs +0 -153
  108. package/dist-esm/lib/editor/managers/FontManager.mjs.map +0 -7
  109. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +0 -28
  110. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +0 -7
  111. package/dist-esm/lib/hooks/useViewportHeight.mjs +0 -36
  112. package/dist-esm/lib/hooks/useViewportHeight.mjs.map +0 -7
  113. package/dist-esm/lib/utils/richText.mjs +0 -26
  114. package/dist-esm/lib/utils/richText.mjs.map +0 -7
  115. package/src/lib/editor/managers/FontManager.ts +0 -252
  116. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +0 -29
  117. package/src/lib/hooks/useViewportHeight.ts +0 -37
  118. package/src/lib/utils/richText.ts +0 -72
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/editor",
3
3
  "description": "A tiny little drawing app (editor).",
4
- "version": "3.9.0-internal.7f0e15f4f7d9",
4
+ "version": "3.9.0",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -45,15 +45,12 @@
45
45
  "lint": "yarn run -T tsx ../../internal/scripts/lint.ts"
46
46
  },
47
47
  "dependencies": {
48
- "@tiptap/core": "^2.9.1",
49
- "@tiptap/pm": "^2.9.1",
50
- "@tiptap/react": "^2.9.1",
51
- "@tldraw/state": "3.9.0-internal.7f0e15f4f7d9",
52
- "@tldraw/state-react": "3.9.0-internal.7f0e15f4f7d9",
53
- "@tldraw/store": "3.9.0-internal.7f0e15f4f7d9",
54
- "@tldraw/tlschema": "3.9.0-internal.7f0e15f4f7d9",
55
- "@tldraw/utils": "3.9.0-internal.7f0e15f4f7d9",
56
- "@tldraw/validate": "3.9.0-internal.7f0e15f4f7d9",
48
+ "@tldraw/state": "3.9.0",
49
+ "@tldraw/state-react": "3.9.0",
50
+ "@tldraw/store": "3.9.0",
51
+ "@tldraw/tlschema": "3.9.0",
52
+ "@tldraw/utils": "3.9.0",
53
+ "@tldraw/validate": "3.9.0",
57
54
  "@types/core-js": "^2.5.8",
58
55
  "@use-gesture/react": "^10.3.1",
59
56
  "classnames": "^2.5.1",
package/src/index.ts CHANGED
@@ -26,14 +26,6 @@ export {
26
26
  useValue,
27
27
  } from '@tldraw/state-react'
28
28
  export { resizeScaled } from './lib/editor/shapes/shared/resizeScaled'
29
- export {
30
- getFontsFromRichText,
31
- type RichTextFontVisitor,
32
- type RichTextFontVisitorState,
33
- type TLTextOptions,
34
- type TiptapEditor,
35
- type TiptapNode,
36
- } from './lib/utils/richText'
37
29
  export { LocalIndexedDb, Table, type StoreName } from './lib/utils/sync/LocalIndexedDb'
38
30
  // eslint-disable-next-line local/no-export-star
39
31
  export * from '@tldraw/store'
@@ -171,11 +163,6 @@ export {
171
163
  } from './lib/editor/bindings/BindingUtil'
172
164
  export { ClickManager, type TLClickState } from './lib/editor/managers/ClickManager'
173
165
  export { EdgeScrollManager } from './lib/editor/managers/EdgeScrollManager'
174
- export {
175
- FontManager,
176
- type TLFontFace,
177
- type TLFontFaceSource,
178
- } from './lib/editor/managers/FontManager'
179
166
  export { HistoryManager } from './lib/editor/managers/HistoryManager'
180
167
  export { ScribbleManager, type ScribbleItem } from './lib/editor/managers/ScribbleManager'
181
168
  export {
@@ -197,9 +184,11 @@ export { BaseBoxShapeUtil, type TLBaseBoxShape } from './lib/editor/shapes/BaseB
197
184
  export {
198
185
  ShapeUtil,
199
186
  type TLCropInfo,
187
+ type TLGeometryOpts,
200
188
  type TLHandleDragInfo,
201
189
  type TLResizeInfo,
202
190
  type TLResizeMode,
191
+ type TLShapeUtilCanBeLaidOutOpts,
203
192
  type TLShapeUtilCanBindOpts,
204
193
  type TLShapeUtilCanvasSvgDef,
205
194
  type TLShapeUtilConstructor,
@@ -310,7 +299,6 @@ export { useIsCropping } from './lib/hooks/useIsCropping'
310
299
  export { useIsDarkMode } from './lib/hooks/useIsDarkMode'
311
300
  export { useIsEditing } from './lib/hooks/useIsEditing'
312
301
  export { useLocalStore } from './lib/hooks/useLocalStore'
313
- export { usePassThroughMouseOverEvents } from './lib/hooks/usePassThroughMouseOverEvents'
314
302
  export { usePassThroughWheelEvents } from './lib/hooks/usePassThroughWheelEvents'
315
303
  export { usePeerIds } from './lib/hooks/usePeerIds'
316
304
  export { usePresence } from './lib/hooks/usePresence'
@@ -325,7 +313,6 @@ export {
325
313
  export { useSelectionEvents } from './lib/hooks/useSelectionEvents'
326
314
  export { useTLSchemaFromUtils, useTLStore } from './lib/hooks/useTLStore'
327
315
  export { useTransform } from './lib/hooks/useTransform'
328
- export { useViewportHeight } from './lib/hooks/useViewportHeight'
329
316
  export {
330
317
  LicenseManager,
331
318
  type InvalidLicenseKeyResult,
@@ -14,6 +14,7 @@ import React, {
14
14
  } from 'react'
15
15
 
16
16
  import classNames from 'classnames'
17
+ import { TLDeepLinkOptions } from '..'
17
18
  import { version } from '../version'
18
19
  import { OptionalErrorBoundary } from './components/ErrorBoundary'
19
20
  import { DefaultErrorFallback } from './components/default-components/DefaultErrorFallback'
@@ -43,9 +44,7 @@ import { useZoomCss } from './hooks/useZoomCss'
43
44
  import { LicenseProvider } from './license/LicenseProvider'
44
45
  import { Watermark } from './license/Watermark'
45
46
  import { TldrawOptions } from './options'
46
- import { TLDeepLinkOptions } from './utils/deepLinks'
47
47
  import { stopEventPropagation } from './utils/dom'
48
- import { TLTextOptions } from './utils/richText'
49
48
  import { TLStoreWithStatus } from './utils/sync/StoreWithStatus'
50
49
 
51
50
  /**
@@ -168,11 +167,6 @@ export interface TldrawEditorBaseProps {
168
167
  */
169
168
  cameraOptions?: Partial<TLCameraOptions>
170
169
 
171
- /**
172
- * Text options for the editor.
173
- */
174
- textOptions?: TLTextOptions
175
-
176
170
  /**
177
171
  * Options for the editor.
178
172
  */
@@ -196,11 +190,6 @@ export interface TldrawEditorBaseProps {
196
190
  * remain in the store and participate in all other operations.
197
191
  */
198
192
  isShapeHidden?(shape: TLShape, editor: Editor): boolean
199
-
200
- /**
201
- * The URLs for the fonts to use in the editor.
202
- */
203
- assetUrls?: { fonts?: { [key: string]: string | undefined } }
204
193
  }
205
194
 
206
195
  /**
@@ -383,12 +372,10 @@ function TldrawEditorWithReadyStore({
383
372
  autoFocus = true,
384
373
  inferDarkMode,
385
374
  cameraOptions,
386
- textOptions,
387
375
  options,
388
376
  licenseKey,
389
377
  deepLinks: _deepLinks,
390
378
  isShapeHidden,
391
- assetUrls,
392
379
  }: Required<
393
380
  TldrawEditorProps & {
394
381
  store: TLStore
@@ -443,11 +430,9 @@ function TldrawEditorWithReadyStore({
443
430
  autoFocus,
444
431
  inferDarkMode,
445
432
  cameraOptions,
446
- textOptions,
447
433
  options,
448
434
  licenseKey,
449
435
  isShapeHidden,
450
- fontAssetUrls: assetUrls?.fonts,
451
436
  })
452
437
 
453
438
  editor.updateViewportScreenBounds(canvasRef.current ?? container)
@@ -482,8 +467,6 @@ function TldrawEditorWithReadyStore({
482
467
  setEditor,
483
468
  licenseKey,
484
469
  isShapeHidden,
485
- textOptions,
486
- assetUrls,
487
470
  ]
488
471
  )
489
472
 
@@ -549,41 +532,10 @@ function TldrawEditorWithReadyStore({
549
532
  [editor, autoFocus]
550
533
  )
551
534
 
552
- const [_fontLoadingState, setFontLoadingState] = useState<{
553
- editor: Editor
554
- isLoaded: boolean
555
- } | null>(null)
556
- let fontLoadingState = _fontLoadingState
557
- if (editor !== fontLoadingState?.editor) {
558
- const newFontLoadingState = editor ? { editor, isLoaded: false } : null
559
- if (fontLoadingState !== newFontLoadingState) setFontLoadingState(newFontLoadingState)
560
- fontLoadingState = newFontLoadingState
561
- }
562
- useEffect(() => {
563
- if (!editor) return
564
- let isCancelled = false
535
+ const { Canvas } = useEditorComponents()
565
536
 
566
- editor.fonts
567
- .loadRequiredFontsForCurrentPage(editor.options.maxFontsToLoadBeforeRender)
568
- .finally(() => {
569
- if (isCancelled) return
570
- setFontLoadingState({ editor, isLoaded: true })
571
- })
572
-
573
- return () => {
574
- isCancelled = true
575
- }
576
- }, [editor])
577
-
578
- const { Canvas, LoadingScreen } = useEditorComponents()
579
-
580
- if (!editor || !fontLoadingState?.isLoaded) {
581
- return (
582
- <>
583
- {LoadingScreen && <LoadingScreen />}
584
- <div className="tl-canvas" ref={canvasRef} />
585
- </>
586
- )
537
+ if (!editor) {
538
+ return <div className="tl-canvas" ref={canvasRef} />
587
539
  }
588
540
 
589
541
  return (
@@ -1,7 +1,6 @@
1
- import { react } from '@tldraw/state'
2
1
  import { useQuickReactor, useStateTracking } from '@tldraw/state-react'
3
2
  import { TLShape, TLShapeId } from '@tldraw/tlschema'
4
- import { memo, useCallback, useEffect, useRef } from 'react'
3
+ import { memo, useCallback, useRef } from 'react'
5
4
  import { ShapeUtil } from '../editor/shapes/ShapeUtil'
6
5
  import { useEditor } from '../hooks/useEditor'
7
6
  import { useEditorComponents } from '../hooks/useEditorComponents'
@@ -42,13 +41,6 @@ export const Shape = memo(function Shape({
42
41
  const containerRef = useRef<HTMLDivElement>(null)
43
42
  const bgContainerRef = useRef<HTMLDivElement>(null)
44
43
 
45
- useEffect(() => {
46
- return react('load fonts', () => {
47
- const fonts = editor.fonts.getShapeFontFaces(shape)
48
- editor.fonts.requestFonts(fonts)
49
- })
50
- }, [editor, shape])
51
-
52
44
  const memoizedStuffRef = useRef({
53
45
  transform: '',
54
46
  clipPath: 'none',
@@ -170,9 +170,11 @@ My browser: ${navigator.userAgent}`
170
170
  <p>
171
171
  If you keep seeing this screen, you can create a{' '}
172
172
  <a href={url.toString()}>GitHub issue</a> or ask for help on{' '}
173
- <a href="https://discord.gg/Cq6cPsTfNy">Discord</a>. If you are still stuck, you can
174
- reset the tldraw data on your machine. This may erase the project you were working on,
175
- so try to get help first.
173
+ <a href="https://discord.tldraw.com/?utm_source=sdk&utm_medium=organic&utm_campaign=error-screen">
174
+ Discord
175
+ </a>
176
+ . If you are still stuck, you can reset the tldraw data on your machine. This may
177
+ erase the project you were working on, so try to get help first.
176
178
  </p>
177
179
  {shouldShowError && (
178
180
  <>