@tldraw/editor 4.6.0-next.fe1474dc57d8 → 5.0.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.
- package/dist-cjs/index.d.ts +412 -179
- package/dist-cjs/index.js +12 -23
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawEditor.js +3 -0
- package/dist-cjs/lib/TldrawEditor.js.map +2 -2
- package/dist-cjs/lib/components/default-components/CanvasOverlays.js +180 -0
- package/dist-cjs/lib/components/default-components/CanvasOverlays.js.map +7 -0
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +44 -249
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +3 -3
- package/dist-cjs/lib/editor/Editor.js +78 -28
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js +98 -0
- package/dist-cjs/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.js.map +7 -0
- package/dist-cjs/lib/editor/managers/ThemeManager/defaultThemes.js +14 -0
- package/dist-cjs/lib/editor/managers/ThemeManager/defaultThemes.js.map +2 -2
- package/dist-cjs/lib/editor/overlays/OverlayManager.js +154 -0
- package/dist-cjs/lib/editor/overlays/OverlayManager.js.map +7 -0
- package/dist-cjs/lib/editor/overlays/OverlayUtil.js +92 -0
- package/dist-cjs/lib/editor/overlays/OverlayUtil.js.map +7 -0
- package/dist-cjs/lib/editor/overlays/ShapeIndicatorOverlayUtil.js +161 -0
- package/dist-cjs/lib/editor/overlays/ShapeIndicatorOverlayUtil.js.map +7 -0
- package/dist-cjs/lib/editor/overlays/getOverlayDisplayValues.js +39 -0
- package/dist-cjs/lib/editor/overlays/getOverlayDisplayValues.js.map +7 -0
- package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js +3 -0
- package/dist-cjs/lib/editor/shapes/BaseFrameLikeShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js +25 -23
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js +32 -2
- package/dist-cjs/lib/editor/shapes/group/GroupShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/types/event-types.js.map +2 -2
- package/dist-cjs/lib/exports/fetchCache.js +1 -1
- package/dist-cjs/lib/exports/fetchCache.js.map +2 -2
- package/dist-cjs/lib/hooks/EditorComponentsContext.js.map +2 -2
- package/dist-cjs/lib/hooks/useCanvasEvents.js +3 -3
- package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
- package/dist-cjs/lib/hooks/useEditorComponents.js +0 -28
- package/dist-cjs/lib/hooks/useEditorComponents.js.map +2 -2
- package/dist-cjs/lib/hooks/usePeerIds.js +1 -36
- package/dist-cjs/lib/hooks/usePeerIds.js.map +2 -2
- package/dist-cjs/lib/hooks/useShapeCulling.js +2 -1
- package/dist-cjs/lib/hooks/useShapeCulling.js.map +2 -2
- package/dist-cjs/lib/options.js +0 -1
- package/dist-cjs/lib/options.js.map +2 -2
- package/dist-cjs/lib/utils/reparenting.js +20 -7
- package/dist-cjs/lib/utils/reparenting.js.map +2 -2
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +3 -0
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
- package/dist-cjs/version.js +4 -4
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +412 -179
- package/dist-esm/index.mjs +19 -41
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawEditor.mjs +3 -0
- package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/CanvasOverlays.mjs +160 -0
- package/dist-esm/lib/components/default-components/CanvasOverlays.mjs.map +7 -0
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +45 -250
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +3 -3
- package/dist-esm/lib/editor/Editor.mjs +78 -29
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs +83 -0
- package/dist-esm/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.mjs.map +7 -0
- package/dist-esm/lib/editor/managers/ThemeManager/defaultThemes.mjs +14 -0
- package/dist-esm/lib/editor/managers/ThemeManager/defaultThemes.mjs.map +2 -2
- package/dist-esm/lib/editor/overlays/OverlayManager.mjs +136 -0
- package/dist-esm/lib/editor/overlays/OverlayManager.mjs.map +7 -0
- package/dist-esm/lib/editor/overlays/OverlayUtil.mjs +72 -0
- package/dist-esm/lib/editor/overlays/OverlayUtil.mjs.map +7 -0
- package/dist-esm/lib/editor/overlays/ShapeIndicatorOverlayUtil.mjs +141 -0
- package/dist-esm/lib/editor/overlays/ShapeIndicatorOverlayUtil.mjs.map +7 -0
- package/dist-esm/lib/editor/overlays/getOverlayDisplayValues.mjs +19 -0
- package/dist-esm/lib/editor/overlays/getOverlayDisplayValues.mjs.map +7 -0
- package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs +3 -0
- package/dist-esm/lib/editor/shapes/BaseFrameLikeShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +25 -23
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs +32 -2
- package/dist-esm/lib/editor/shapes/group/GroupShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/editor/types/event-types.mjs.map +2 -2
- package/dist-esm/lib/exports/fetchCache.mjs +2 -2
- package/dist-esm/lib/exports/fetchCache.mjs.map +2 -2
- package/dist-esm/lib/hooks/EditorComponentsContext.mjs.map +2 -2
- package/dist-esm/lib/hooks/useCanvasEvents.mjs +3 -3
- package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
- package/dist-esm/lib/hooks/useEditorComponents.mjs +0 -28
- package/dist-esm/lib/hooks/useEditorComponents.mjs.map +2 -2
- package/dist-esm/lib/hooks/usePeerIds.mjs +2 -40
- package/dist-esm/lib/hooks/usePeerIds.mjs.map +2 -2
- package/dist-esm/lib/hooks/useShapeCulling.mjs +2 -1
- package/dist-esm/lib/hooks/useShapeCulling.mjs.map +2 -2
- package/dist-esm/lib/options.mjs +0 -1
- package/dist-esm/lib/options.mjs.map +2 -2
- package/dist-esm/lib/utils/reparenting.mjs +20 -7
- package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +3 -0
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
- package/dist-esm/version.mjs +4 -4
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +4 -239
- package/package.json +7 -7
- package/src/index.ts +17 -39
- package/src/lib/TldrawEditor.tsx +9 -0
- package/src/lib/components/default-components/CanvasOverlays.tsx +208 -0
- package/src/lib/components/default-components/DefaultCanvas.tsx +49 -324
- package/src/lib/editor/Editor.test.ts +3 -1
- package/src/lib/editor/Editor.ts +80 -24
- package/src/lib/editor/managers/CollaboratorsManager/CollaboratorsManager.ts +98 -0
- package/src/lib/editor/managers/ThemeManager/defaultThemes.ts +14 -0
- package/src/lib/editor/overlays/OverlayManager.ts +183 -0
- package/src/lib/editor/overlays/OverlayUtil.ts +143 -0
- package/src/lib/editor/overlays/ShapeIndicatorOverlayUtil.ts +216 -0
- package/src/lib/editor/overlays/getOverlayDisplayValues.ts +51 -0
- package/src/lib/editor/shapes/BaseFrameLikeShapeUtil.tsx +9 -2
- package/src/lib/editor/shapes/ShapeUtil.ts +34 -26
- package/src/lib/editor/shapes/group/GroupShapeUtil.tsx +40 -3
- package/src/lib/editor/types/event-types.ts +2 -0
- package/src/lib/exports/fetchCache.ts +2 -4
- package/src/lib/exports/getSvgJsx.test.ts +3 -1
- package/src/lib/hooks/EditorComponentsContext.tsx +0 -27
- package/src/lib/hooks/useCanvasEvents.ts +13 -8
- package/src/lib/hooks/useEditorComponents.tsx +0 -28
- package/src/lib/hooks/usePeerIds.ts +6 -55
- package/src/lib/hooks/useShapeCulling.tsx +3 -1
- package/src/lib/options.ts +0 -7
- package/src/lib/utils/reparenting.ts +22 -9
- package/src/lib/utils/sync/TLLocalSyncClient.ts +3 -0
- package/src/version.ts +4 -4
- package/dist-cjs/lib/components/GeometryDebuggingView.js +0 -115
- package/dist-cjs/lib/components/GeometryDebuggingView.js.map +0 -7
- package/dist-cjs/lib/components/LiveCollaborators.js +0 -152
- package/dist-cjs/lib/components/LiveCollaborators.js.map +0 -7
- package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js +0 -234
- package/dist-cjs/lib/components/default-components/CanvasShapeIndicators.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultBrush.js +0 -38
- package/dist-cjs/lib/components/default-components/DefaultBrush.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +0 -71
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultCursor.js +0 -59
- package/dist-cjs/lib/components/default-components/DefaultCursor.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultHandle.js +0 -56
- package/dist-cjs/lib/components/default-components/DefaultHandle.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultHandles.js +0 -28
- package/dist-cjs/lib/components/default-components/DefaultHandles.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultScribble.js +0 -51
- package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultSelectionForeground.js +0 -69
- package/dist-cjs/lib/components/default-components/DefaultSelectionForeground.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +0 -107
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicatorErrorFallback.js +0 -28
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicatorErrorFallback.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js +0 -102
- package/dist-cjs/lib/components/default-components/DefaultShapeIndicators.js.map +0 -7
- package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js +0 -170
- package/dist-cjs/lib/components/default-components/DefaultSnapIndictor.js.map +0 -7
- package/dist-cjs/lib/hooks/useHandleEvents.js +0 -100
- package/dist-cjs/lib/hooks/useHandleEvents.js.map +0 -7
- package/dist-cjs/lib/hooks/useSelectionEvents.js +0 -98
- package/dist-cjs/lib/hooks/useSelectionEvents.js.map +0 -7
- package/dist-esm/lib/components/GeometryDebuggingView.mjs +0 -95
- package/dist-esm/lib/components/GeometryDebuggingView.mjs.map +0 -7
- package/dist-esm/lib/components/LiveCollaborators.mjs +0 -135
- package/dist-esm/lib/components/LiveCollaborators.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs +0 -214
- package/dist-esm/lib/components/default-components/CanvasShapeIndicators.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultBrush.mjs +0 -18
- package/dist-esm/lib/components/default-components/DefaultBrush.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +0 -41
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultCursor.mjs +0 -29
- package/dist-esm/lib/components/default-components/DefaultCursor.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultHandle.mjs +0 -26
- package/dist-esm/lib/components/default-components/DefaultHandle.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultHandles.mjs +0 -8
- package/dist-esm/lib/components/default-components/DefaultHandles.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultScribble.mjs +0 -21
- package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultSelectionForeground.mjs +0 -39
- package/dist-esm/lib/components/default-components/DefaultSelectionForeground.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +0 -77
- package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultShapeIndicatorErrorFallback.mjs +0 -8
- package/dist-esm/lib/components/default-components/DefaultShapeIndicatorErrorFallback.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs +0 -82
- package/dist-esm/lib/components/default-components/DefaultShapeIndicators.mjs.map +0 -7
- package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs +0 -142
- package/dist-esm/lib/components/default-components/DefaultSnapIndictor.mjs.map +0 -7
- package/dist-esm/lib/hooks/useHandleEvents.mjs +0 -70
- package/dist-esm/lib/hooks/useHandleEvents.mjs.map +0 -7
- package/dist-esm/lib/hooks/useSelectionEvents.mjs +0 -78
- package/dist-esm/lib/hooks/useSelectionEvents.mjs.map +0 -7
- package/src/lib/components/GeometryDebuggingView.tsx +0 -108
- package/src/lib/components/LiveCollaborators.tsx +0 -180
- package/src/lib/components/default-components/CanvasShapeIndicators.tsx +0 -300
- package/src/lib/components/default-components/DefaultBrush.tsx +0 -35
- package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +0 -52
- package/src/lib/components/default-components/DefaultCursor.tsx +0 -59
- package/src/lib/components/default-components/DefaultHandle.tsx +0 -42
- package/src/lib/components/default-components/DefaultHandles.tsx +0 -15
- package/src/lib/components/default-components/DefaultScribble.tsx +0 -31
- package/src/lib/components/default-components/DefaultSelectionForeground.tsx +0 -50
- package/src/lib/components/default-components/DefaultShapeIndicator.tsx +0 -104
- package/src/lib/components/default-components/DefaultShapeIndicatorErrorFallback.tsx +0 -9
- package/src/lib/components/default-components/DefaultShapeIndicators.tsx +0 -118
- package/src/lib/components/default-components/DefaultSnapIndictor.tsx +0 -174
- package/src/lib/hooks/useHandleEvents.ts +0 -88
- package/src/lib/hooks/useSelectionEvents.ts +0 -97
|
@@ -56,7 +56,6 @@ import {
|
|
|
56
56
|
hasOwnProperty,
|
|
57
57
|
last,
|
|
58
58
|
lerp,
|
|
59
|
-
maxBy,
|
|
60
59
|
minBy,
|
|
61
60
|
sortById,
|
|
62
61
|
sortByIndex,
|
|
@@ -111,6 +110,7 @@ import { notVisibleShapes } from "./derivations/notVisibleShapes.mjs";
|
|
|
111
110
|
import { parentsToChildren } from "./derivations/parentsToChildren.mjs";
|
|
112
111
|
import { deriveShapeIdsInCurrentPage } from "./derivations/shapeIdsInCurrentPage.mjs";
|
|
113
112
|
import { ClickManager } from "./managers/ClickManager/ClickManager.mjs";
|
|
113
|
+
import { CollaboratorsManager } from "./managers/CollaboratorsManager/CollaboratorsManager.mjs";
|
|
114
114
|
import { EdgeScrollManager } from "./managers/EdgeScrollManager/EdgeScrollManager.mjs";
|
|
115
115
|
import { FocusManager } from "./managers/FocusManager/FocusManager.mjs";
|
|
116
116
|
import { FontManager } from "./managers/FontManager/FontManager.mjs";
|
|
@@ -124,6 +124,7 @@ import { TextManager } from "./managers/TextManager/TextManager.mjs";
|
|
|
124
124
|
import { ThemeManager, resolveThemes } from "./managers/ThemeManager/ThemeManager.mjs";
|
|
125
125
|
import { TickManager } from "./managers/TickManager/TickManager.mjs";
|
|
126
126
|
import { UserPreferencesManager } from "./managers/UserPreferencesManager/UserPreferencesManager.mjs";
|
|
127
|
+
import { OverlayManager } from "./overlays/OverlayManager.mjs";
|
|
127
128
|
import { RootState } from "./tools/RootState.mjs";
|
|
128
129
|
class Editor extends EventEmitter {
|
|
129
130
|
id = uniqueId();
|
|
@@ -133,6 +134,7 @@ class Editor extends EventEmitter {
|
|
|
133
134
|
shapeUtils,
|
|
134
135
|
bindingUtils,
|
|
135
136
|
assetUtils: assetUtilConstructors,
|
|
137
|
+
overlayUtils: overlayUtilConstructors,
|
|
136
138
|
tools,
|
|
137
139
|
getContainer,
|
|
138
140
|
// needs to be here for backwards compatibility with TldrawEditor
|
|
@@ -192,6 +194,7 @@ class Editor extends EventEmitter {
|
|
|
192
194
|
this.inputs = new InputsManager(this);
|
|
193
195
|
this.performance = new PerformanceManager(this);
|
|
194
196
|
this.disposables.add(() => this.performance.dispose());
|
|
197
|
+
this.collaborators = new CollaboratorsManager(this);
|
|
195
198
|
class NewRoot extends RootState {
|
|
196
199
|
static initial = initialState ?? "";
|
|
197
200
|
}
|
|
@@ -252,6 +255,13 @@ class Editor extends EventEmitter {
|
|
|
252
255
|
this.root.children[Tool.id] = new Tool(this, this.root);
|
|
253
256
|
}
|
|
254
257
|
this.scribbles = new ScribbleManager(this);
|
|
258
|
+
this.overlays = new OverlayManager(this);
|
|
259
|
+
if (overlayUtilConstructors) {
|
|
260
|
+
for (const Util of overlayUtilConstructors) {
|
|
261
|
+
const util = new Util(this);
|
|
262
|
+
this.overlays.registerUtil(util);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
255
265
|
const cleanupInstancePageState = (prevPageState, shapesNoLongerInPage) => {
|
|
256
266
|
let nextPageState = null;
|
|
257
267
|
const selectedShapeIds = prevPageState.selectedShapeIds.filter(
|
|
@@ -704,6 +714,12 @@ class Editor extends EventEmitter {
|
|
|
704
714
|
* @public
|
|
705
715
|
*/
|
|
706
716
|
timers = tltime.forContext(this.contextId);
|
|
717
|
+
/**
|
|
718
|
+
* A manager for remote peer collaborators connected to this editor.
|
|
719
|
+
*
|
|
720
|
+
* @public
|
|
721
|
+
*/
|
|
722
|
+
collaborators;
|
|
707
723
|
/**
|
|
708
724
|
* A manager for the user and their preferences.
|
|
709
725
|
*
|
|
@@ -734,6 +750,12 @@ class Editor extends EventEmitter {
|
|
|
734
750
|
* @public
|
|
735
751
|
*/
|
|
736
752
|
scribbles;
|
|
753
|
+
/**
|
|
754
|
+
* A manager for canvas overlay UI elements (selection handles, shape handles, etc.).
|
|
755
|
+
*
|
|
756
|
+
* @public
|
|
757
|
+
*/
|
|
758
|
+
overlays;
|
|
737
759
|
/**
|
|
738
760
|
* A manager for side effects and correct state enforcement. See {@link @tldraw/store#StoreSideEffects} for details.
|
|
739
761
|
*
|
|
@@ -1382,11 +1404,20 @@ class Editor extends EventEmitter {
|
|
|
1382
1404
|
/**
|
|
1383
1405
|
* Set the cursor.
|
|
1384
1406
|
*
|
|
1407
|
+
* No-op when the partial wouldn't change the current cursor — `setCursor`
|
|
1408
|
+
* is called from pointer-move hot paths (see `updateHoveredOverlayId`,
|
|
1409
|
+
* various tool states) and skipping redundant writes avoids needlessly
|
|
1410
|
+
* dirtying instance state.
|
|
1411
|
+
*
|
|
1385
1412
|
* @param cursor - The cursor to set.
|
|
1386
1413
|
* @public
|
|
1387
1414
|
*/
|
|
1388
1415
|
setCursor(cursor) {
|
|
1389
|
-
|
|
1416
|
+
const current = this.getInstanceState().cursor;
|
|
1417
|
+
if ((cursor.type === void 0 || cursor.type === current.type) && (cursor.rotation === void 0 || cursor.rotation === current.rotation)) {
|
|
1418
|
+
return this;
|
|
1419
|
+
}
|
|
1420
|
+
this.updateInstanceState({ cursor: { ...current, ...cursor } });
|
|
1390
1421
|
return this;
|
|
1391
1422
|
}
|
|
1392
1423
|
getPageStates() {
|
|
@@ -3052,26 +3083,53 @@ class Editor extends EventEmitter {
|
|
|
3052
3083
|
const { x: cx, y: cy, z: cz = 1 } = this.getCamera();
|
|
3053
3084
|
return new Vec((point.x + cx) * cz, (point.y + cy) * cz, point.z ?? 0.5);
|
|
3054
3085
|
}
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3086
|
+
// Collaborators
|
|
3087
|
+
/**
|
|
3088
|
+
* Returns a list of presence records for all peer collaborators.
|
|
3089
|
+
* This will return the latest presence record for each connected user.
|
|
3090
|
+
*
|
|
3091
|
+
* Convenience wrapper for {@link CollaboratorsManager.getCollaborators}.
|
|
3092
|
+
*
|
|
3093
|
+
* @public
|
|
3094
|
+
*/
|
|
3060
3095
|
getCollaborators() {
|
|
3061
|
-
|
|
3062
|
-
if (!allPresenceRecords.length) return EMPTY_ARRAY;
|
|
3063
|
-
const userIds = [...new Set(allPresenceRecords.map((c) => c.userId))].sort();
|
|
3064
|
-
return userIds.map((id) => {
|
|
3065
|
-
const latestPresence = maxBy(
|
|
3066
|
-
allPresenceRecords.filter((c) => c.userId === id),
|
|
3067
|
-
(p) => p.lastActivityTimestamp ?? 0
|
|
3068
|
-
);
|
|
3069
|
-
return latestPresence;
|
|
3070
|
-
});
|
|
3096
|
+
return this.collaborators.getCollaborators();
|
|
3071
3097
|
}
|
|
3098
|
+
/**
|
|
3099
|
+
* Returns a list of presence records for all peer collaborators on the current page.
|
|
3100
|
+
* This will return the latest presence record for each connected user.
|
|
3101
|
+
*
|
|
3102
|
+
* Convenience wrapper for {@link CollaboratorsManager.getCollaboratorsOnCurrentPage}.
|
|
3103
|
+
*
|
|
3104
|
+
* @public
|
|
3105
|
+
*/
|
|
3072
3106
|
getCollaboratorsOnCurrentPage() {
|
|
3073
|
-
|
|
3074
|
-
|
|
3107
|
+
return this.collaborators.getCollaboratorsOnCurrentPage();
|
|
3108
|
+
}
|
|
3109
|
+
/**
|
|
3110
|
+
* Returns a list of presence records for peer collaborators who should currently be
|
|
3111
|
+
* shown in the UI. Filters {@link Editor.getCollaborators} by activity state
|
|
3112
|
+
* (active / idle / inactive) and visibility rules such as following and highlighted
|
|
3113
|
+
* users. Re-evaluates on the collaborator visibility clock, so callers don't need to
|
|
3114
|
+
* drive their own activity timer.
|
|
3115
|
+
*
|
|
3116
|
+
* Convenience wrapper for {@link CollaboratorsManager.getVisibleCollaborators}.
|
|
3117
|
+
*
|
|
3118
|
+
* @public
|
|
3119
|
+
*/
|
|
3120
|
+
getVisibleCollaborators() {
|
|
3121
|
+
return this.collaborators.getVisibleCollaborators();
|
|
3122
|
+
}
|
|
3123
|
+
/**
|
|
3124
|
+
* Returns a list of presence records for peer collaborators who should currently be
|
|
3125
|
+
* shown in the UI, filtered to those on the current page.
|
|
3126
|
+
*
|
|
3127
|
+
* Convenience wrapper for {@link CollaboratorsManager.getVisibleCollaboratorsOnCurrentPage}.
|
|
3128
|
+
*
|
|
3129
|
+
* @public
|
|
3130
|
+
*/
|
|
3131
|
+
getVisibleCollaboratorsOnCurrentPage() {
|
|
3132
|
+
return this.collaborators.getVisibleCollaboratorsOnCurrentPage();
|
|
3075
3133
|
}
|
|
3076
3134
|
// Attribution
|
|
3077
3135
|
/**
|
|
@@ -3707,7 +3765,7 @@ class Editor extends EventEmitter {
|
|
|
3707
3765
|
} = context;
|
|
3708
3766
|
const zoomStepFunction = (zoom) => Math.pow(2, Math.ceil(Math.log2(zoom)));
|
|
3709
3767
|
const steppedScreenScale = zoomStepFunction(screenScale);
|
|
3710
|
-
const networkEffectiveType = "connection" in navigator ? navigator.connection
|
|
3768
|
+
const networkEffectiveType = "connection" in navigator ? navigator.connection?.effectiveType ?? null : null;
|
|
3711
3769
|
return await this.store.props.assets.resolve(asset, {
|
|
3712
3770
|
screenScale: screenScale || 1,
|
|
3713
3771
|
steppedScreenScale,
|
|
@@ -8422,15 +8480,6 @@ __decorateClass([
|
|
|
8422
8480
|
__decorateClass([
|
|
8423
8481
|
computed
|
|
8424
8482
|
], Editor.prototype, "getViewportPageBounds", 1);
|
|
8425
|
-
__decorateClass([
|
|
8426
|
-
computed
|
|
8427
|
-
], Editor.prototype, "_getCollaboratorsQuery", 1);
|
|
8428
|
-
__decorateClass([
|
|
8429
|
-
computed
|
|
8430
|
-
], Editor.prototype, "getCollaborators", 1);
|
|
8431
|
-
__decorateClass([
|
|
8432
|
-
computed
|
|
8433
|
-
], Editor.prototype, "getCollaboratorsOnCurrentPage", 1);
|
|
8434
8483
|
__decorateClass([
|
|
8435
8484
|
computed
|
|
8436
8485
|
], Editor.prototype, "getRenderingShapes", 1);
|