@tldraw/editor 3.16.0-canary.66da2a5c5813 → 3.16.0-canary.6c77a180e58d

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 (50) hide show
  1. package/dist-cjs/index.d.ts +10 -0
  2. package/dist-cjs/index.js +3 -1
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +1 -1
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +4 -0
  7. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +2 -2
  8. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +10 -0
  9. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  10. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +4 -1
  11. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  12. package/dist-cjs/lib/license/LicenseManager.js +110 -35
  13. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  14. package/dist-cjs/lib/license/LicenseProvider.js +36 -3
  15. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  16. package/dist-cjs/lib/license/Watermark.js +68 -6
  17. package/dist-cjs/lib/license/Watermark.js.map +3 -3
  18. package/dist-cjs/version.js +3 -3
  19. package/dist-cjs/version.js.map +1 -1
  20. package/dist-esm/index.d.mts +10 -0
  21. package/dist-esm/index.mjs +3 -1
  22. package/dist-esm/index.mjs.map +2 -2
  23. package/dist-esm/lib/TldrawEditor.mjs +1 -1
  24. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  25. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +4 -0
  26. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +2 -2
  27. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +10 -0
  28. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  29. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +4 -1
  30. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  31. package/dist-esm/lib/license/LicenseManager.mjs +111 -36
  32. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  33. package/dist-esm/lib/license/LicenseProvider.mjs +36 -4
  34. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  35. package/dist-esm/lib/license/Watermark.mjs +68 -6
  36. package/dist-esm/lib/license/Watermark.mjs.map +3 -3
  37. package/dist-esm/version.mjs +3 -3
  38. package/dist-esm/version.mjs.map +1 -1
  39. package/editor.css +8 -3
  40. package/package.json +7 -7
  41. package/src/index.ts +1 -0
  42. package/src/lib/TldrawEditor.tsx +1 -2
  43. package/src/lib/editor/derivations/notVisibleShapes.ts +6 -0
  44. package/src/lib/editor/shapes/ShapeUtil.ts +11 -0
  45. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +4 -1
  46. package/src/lib/license/LicenseManager.test.ts +643 -387
  47. package/src/lib/license/LicenseManager.ts +156 -44
  48. package/src/lib/license/LicenseProvider.tsx +69 -5
  49. package/src/lib/license/Watermark.tsx +73 -6
  50. package/src/version.ts +3 -3
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/editor",
3
3
  "description": "tldraw infinite canvas SDK (editor).",
4
- "version": "3.16.0-canary.66da2a5c5813",
4
+ "version": "3.16.0-canary.6c77a180e58d",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -50,12 +50,12 @@
50
50
  "@tiptap/core": "^2.9.1",
51
51
  "@tiptap/pm": "^2.9.1",
52
52
  "@tiptap/react": "^2.9.1",
53
- "@tldraw/state": "3.16.0-canary.66da2a5c5813",
54
- "@tldraw/state-react": "3.16.0-canary.66da2a5c5813",
55
- "@tldraw/store": "3.16.0-canary.66da2a5c5813",
56
- "@tldraw/tlschema": "3.16.0-canary.66da2a5c5813",
57
- "@tldraw/utils": "3.16.0-canary.66da2a5c5813",
58
- "@tldraw/validate": "3.16.0-canary.66da2a5c5813",
53
+ "@tldraw/state": "3.16.0-canary.6c77a180e58d",
54
+ "@tldraw/state-react": "3.16.0-canary.6c77a180e58d",
55
+ "@tldraw/store": "3.16.0-canary.6c77a180e58d",
56
+ "@tldraw/tlschema": "3.16.0-canary.6c77a180e58d",
57
+ "@tldraw/utils": "3.16.0-canary.6c77a180e58d",
58
+ "@tldraw/validate": "3.16.0-canary.6c77a180e58d",
59
59
  "@types/core-js": "^2.5.8",
60
60
  "@use-gesture/react": "^10.3.1",
61
61
  "classnames": "^2.5.1",
package/src/index.ts CHANGED
@@ -334,6 +334,7 @@ export {
334
334
  type TestEnvironment,
335
335
  type ValidLicenseKeyResult,
336
336
  } from './lib/license/LicenseManager'
337
+ export { LICENSE_TIMEOUT } from './lib/license/LicenseProvider'
337
338
  export { defaultTldrawOptions, type TldrawOptions } from './lib/options'
338
339
  export {
339
340
  Box,
@@ -1,6 +1,7 @@
1
1
  import { MigrationSequence, Store } from '@tldraw/store'
2
2
  import { TLShape, TLStore, TLStoreSnapshot } from '@tldraw/tlschema'
3
3
  import { annotateError, Required } from '@tldraw/utils'
4
+ import classNames from 'classnames'
4
5
  import React, {
5
6
  memo,
6
7
  ReactNode,
@@ -12,8 +13,6 @@ import React, {
12
13
  useState,
13
14
  useSyncExternalStore,
14
15
  } from 'react'
15
-
16
- import classNames from 'classnames'
17
16
  import { version } from '../version'
18
17
  import { DefaultErrorFallback } from './components/default-components/DefaultErrorFallback'
19
18
  import { OptionalErrorBoundary } from './components/ErrorBoundary'
@@ -7,6 +7,12 @@ function fromScratch(editor: Editor): Set<TLShapeId> {
7
7
  const viewportPageBounds = editor.getViewportPageBounds()
8
8
  const notVisibleShapes = new Set<TLShapeId>()
9
9
  shapesIds.forEach((id) => {
10
+ const shape = editor.getShape(id)
11
+ if (!shape) return
12
+
13
+ const canCull = editor.getShapeUtil(shape.type).canCull(shape)
14
+ if (!canCull) return
15
+
10
16
  // If the shape is fully outside of the viewport page bounds, add it to the set.
11
17
  // We'll ignore masks here, since they're more expensive to compute and the overhead is not worth it.
12
18
  const pageBounds = editor.getShapePageBounds(id)
@@ -283,6 +283,17 @@ export abstract class ShapeUtil<Shape extends TLUnknownShape = TLUnknownShape> {
283
283
  return true
284
284
  }
285
285
 
286
+ /**
287
+ * Whether this shape can be culled. By default, shapes are culled for
288
+ * performance reasons when they are outside of the viewport. Culled shapes are still rendered
289
+ * to the DOM, but have their `display` property set to `none`.
290
+ *
291
+ * @param shape - The shape.
292
+ */
293
+ canCull(_shape: Shape): boolean {
294
+ return true
295
+ }
296
+
286
297
  /**
287
298
  * Does this shape provide a background for its children? If this is true,
288
299
  * then any children with a `renderBackground` method will have their
@@ -1,14 +1,17 @@
1
1
  import { RefObject, useEffect } from 'react'
2
2
  import { preventDefault } from '../utils/dom'
3
3
  import { useContainer } from './useContainer'
4
+ import { useMaybeEditor } from './useEditor'
4
5
 
5
6
  /** @public */
6
7
  export function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement>) {
7
8
  if (!ref) throw Error('usePassThroughWheelEvents must be passed a ref')
8
9
  const container = useContainer()
10
+ const editor = useMaybeEditor()
9
11
 
10
12
  useEffect(() => {
11
13
  function onMouseOver(e: MouseEvent) {
14
+ if (!editor?.getInstanceState().isFocused) return
12
15
  if ((e as any).isSpecialRedispatchedEvent) return
13
16
  preventDefault(e)
14
17
  const cvs = container.querySelector('.tl-canvas')
@@ -25,5 +28,5 @@ export function usePassThroughMouseOverEvents(ref: RefObject<HTMLElement>) {
25
28
  return () => {
26
29
  elm.removeEventListener('mouseover', onMouseOver)
27
30
  }
28
- }, [container, ref])
31
+ }, [container, editor, ref])
29
32
  }