@tldraw/editor 4.3.1 → 4.4.0-canary.0791272556f5
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.
- package/README.md +1 -1
- package/dist-cjs/index.d.ts +181 -12
- package/dist-cjs/index.js +3 -6
- package/dist-cjs/index.js.map +3 -3
- package/dist-cjs/lib/components/LiveCollaborators.js +14 -24
- package/dist-cjs/lib/components/LiveCollaborators.js.map +2 -2
- package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js +201 -0
- package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js.map +7 -0
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +30 -16
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +3 -1
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js +13 -1
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js.map +2 -2
- package/dist-cjs/lib/config/TLUserPreferences.js +9 -3
- package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +69 -15
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +13 -21
- package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js +378 -89
- package/dist-cjs/lib/editor/managers/ScribbleManager/ScribbleManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js +144 -0
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/RBushIndex.js.map +7 -0
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +180 -0
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +7 -0
- package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +8 -3
- package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js +29 -0
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/tools/RootState.js +0 -13
- package/dist-cjs/lib/editor/tools/RootState.js.map +2 -2
- package/dist-cjs/lib/hooks/usePeerIds.js +29 -0
- package/dist-cjs/lib/hooks/usePeerIds.js.map +2 -2
- package/dist-cjs/lib/options.js +1 -0
- package/dist-cjs/lib/options.js.map +2 -2
- package/dist-cjs/lib/utils/collaboratorState.js +42 -0
- package/dist-cjs/lib/utils/collaboratorState.js.map +7 -0
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +181 -12
- package/dist-esm/index.mjs +3 -6
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/components/LiveCollaborators.mjs +17 -24
- package/dist-esm/lib/components/LiveCollaborators.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs +181 -0
- package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs.map +7 -0
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +30 -16
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +3 -1
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs +13 -1
- package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs.map +2 -2
- package/dist-esm/lib/config/TLUserPreferences.mjs +9 -3
- package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +69 -15
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +13 -21
- package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs +378 -89
- package/dist-esm/lib/editor/managers/ScribbleManager/ScribbleManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs +114 -0
- package/dist-esm/lib/editor/managers/SpatialIndexManager/RBushIndex.mjs.map +7 -0
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +160 -0
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +7 -0
- package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +8 -3
- package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +29 -0
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/tools/RootState.mjs +0 -13
- package/dist-esm/lib/editor/tools/RootState.mjs.map +2 -2
- package/dist-esm/lib/hooks/usePeerIds.mjs +33 -1
- package/dist-esm/lib/hooks/usePeerIds.mjs.map +2 -2
- package/dist-esm/lib/options.mjs +1 -0
- package/dist-esm/lib/options.mjs.map +2 -2
- package/dist-esm/lib/utils/collaboratorState.mjs +22 -0
- package/dist-esm/lib/utils/collaboratorState.mjs.map +7 -0
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +11 -9
- package/package.json +10 -10
- package/src/index.ts +3 -5
- package/src/lib/components/LiveCollaborators.tsx +26 -37
- package/src/lib/components/default-components/CanvasShapeIndicators.tsx +244 -0
- package/src/lib/components/default-components/DefaultCanvas.tsx +16 -6
- package/src/lib/components/default-components/DefaultShapeIndicator.tsx +6 -1
- package/src/lib/components/default-components/DefaultShapeIndicators.tsx +16 -1
- package/src/lib/config/TLUserPreferences.test.ts +1 -0
- package/src/lib/config/TLUserPreferences.ts +8 -0
- package/src/lib/editor/Editor.ts +103 -15
- package/src/lib/editor/derivations/notVisibleShapes.ts +15 -41
- package/src/lib/editor/managers/ScribbleManager/ScribbleManager.ts +491 -106
- package/src/lib/editor/managers/SpatialIndexManager/RBushIndex.ts +144 -0
- package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +214 -0
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +24 -0
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +8 -0
- package/src/lib/editor/shapes/ShapeUtil.ts +44 -0
- package/src/lib/editor/tools/RootState.ts +0 -16
- package/src/lib/hooks/usePeerIds.ts +46 -1
- package/src/lib/options.ts +7 -0
- package/src/lib/utils/collaboratorState.ts +54 -0
- package/src/version.ts +3 -3
- package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +0 -621
|
@@ -9,60 +9,34 @@ import { Editor } from '../Editor'
|
|
|
9
9
|
* @returns Incremental derivation of non visible shapes.
|
|
10
10
|
*/
|
|
11
11
|
export function notVisibleShapes(editor: Editor) {
|
|
12
|
-
return computed<Set<TLShapeId>>('notVisibleShapes', function
|
|
13
|
-
const
|
|
14
|
-
const nextValue = new Set<TLShapeId>()
|
|
15
|
-
|
|
16
|
-
// Extract viewport bounds once to avoid repeated property access
|
|
12
|
+
return computed<Set<TLShapeId>>('notVisibleShapes', function (prevValue) {
|
|
13
|
+
const allShapeIds = editor.getCurrentPageShapeIds()
|
|
17
14
|
const viewportPageBounds = editor.getViewportPageBounds()
|
|
18
|
-
const
|
|
19
|
-
const viewMinY = viewportPageBounds.minY
|
|
20
|
-
const viewMaxX = viewportPageBounds.maxX
|
|
21
|
-
const viewMaxY = viewportPageBounds.maxY
|
|
15
|
+
const visibleIds = editor.getShapeIdsInsideBounds(viewportPageBounds)
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
const pageBounds = editor.getShapePageBounds(id)
|
|
25
|
-
|
|
26
|
-
// Hybrid check: if bounds exist and shape overlaps viewport, it's visible.
|
|
27
|
-
// This inlines Box.Collides to avoid function call overhead and the
|
|
28
|
-
// redundant Contains check that Box.Includes was doing.
|
|
29
|
-
if (
|
|
30
|
-
pageBounds !== undefined &&
|
|
31
|
-
pageBounds.maxX >= viewMinX &&
|
|
32
|
-
pageBounds.minX <= viewMaxX &&
|
|
33
|
-
pageBounds.maxY >= viewMinY &&
|
|
34
|
-
pageBounds.minY <= viewMaxY
|
|
35
|
-
) {
|
|
36
|
-
continue
|
|
37
|
-
}
|
|
17
|
+
const nextValue = new Set<TLShapeId>()
|
|
38
18
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
19
|
+
// Non-visible shapes are all shapes minus visible shapes
|
|
20
|
+
for (const id of allShapeIds) {
|
|
21
|
+
if (!visibleIds.has(id)) {
|
|
22
|
+
const shape = editor.getShape(id)
|
|
23
|
+
if (!shape) continue
|
|
44
24
|
|
|
45
|
-
|
|
46
|
-
|
|
25
|
+
const canCull = editor.getShapeUtil(shape.type).canCull(shape)
|
|
26
|
+
if (!canCull) continue
|
|
47
27
|
|
|
48
|
-
|
|
28
|
+
nextValue.add(id)
|
|
29
|
+
}
|
|
49
30
|
}
|
|
50
31
|
|
|
51
|
-
if (isUninitialized(prevValue)) {
|
|
32
|
+
if (isUninitialized(prevValue) || prevValue.size !== nextValue.size) {
|
|
52
33
|
return nextValue
|
|
53
34
|
}
|
|
54
35
|
|
|
55
|
-
// If there are more or less shapes, we know there's a change
|
|
56
|
-
if (prevValue.size !== nextValue.size) return nextValue
|
|
57
|
-
|
|
58
|
-
// If any of the old shapes are not in the new set, we know there's a change
|
|
59
36
|
for (const prev of prevValue) {
|
|
60
|
-
if (!nextValue.has(prev))
|
|
61
|
-
return nextValue
|
|
62
|
-
}
|
|
37
|
+
if (!nextValue.has(prev)) return nextValue
|
|
63
38
|
}
|
|
64
39
|
|
|
65
|
-
// If we've made it here, we know that the set is the same
|
|
66
40
|
return prevValue
|
|
67
41
|
})
|
|
68
42
|
}
|