@tldraw/editor 4.6.0-internal.e29318c66fb0 → 4.6.0-next.0c36db38afea
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 +184 -24
- package/dist-cjs/index.js +5 -4
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/TldrawEditor.js +4 -2
- package/dist-cjs/lib/TldrawEditor.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +2 -2
- package/dist-cjs/lib/config/{createTLUser.js → createTLCurrentUser.js} +9 -9
- package/dist-cjs/lib/config/createTLCurrentUser.js.map +7 -0
- package/dist-cjs/lib/config/createTLStore.js +24 -1
- package/dist-cjs/lib/config/createTLStore.js.map +2 -2
- package/dist-cjs/lib/config/defaultShapes.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +115 -8
- package/dist-cjs/lib/editor/Editor.js.map +3 -3
- package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js +1 -1
- package/dist-cjs/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js +1 -1
- package/dist-cjs/lib/editor/managers/SnapManager/BoundsSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SnapManager/HandleSnaps.js.map +2 -2
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js +4 -4
- package/dist-cjs/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js +102 -30
- package/dist-cjs/lib/editor/managers/TextManager/TextManager.js.map +2 -2
- package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js +10 -0
- package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
- package/dist-cjs/lib/editor/types/clipboard-types.js.map +1 -1
- package/dist-cjs/lib/exports/StyleEmbedder.js +1 -1
- package/dist-cjs/lib/exports/StyleEmbedder.js.map +2 -2
- package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
- package/dist-cjs/lib/hooks/useEditorComponents.js.map +2 -2
- package/dist-cjs/lib/hooks/useGestureEvents.js +171 -127
- package/dist-cjs/lib/hooks/useGestureEvents.js.map +3 -3
- package/dist-cjs/lib/hooks/useLocalStore.js.map +2 -2
- package/dist-cjs/lib/options.js +3 -0
- package/dist-cjs/lib/options.js.map +2 -2
- package/dist-cjs/lib/primitives/Box.js +1 -1
- package/dist-cjs/lib/primitives/Box.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Arc2d.js +2 -2
- package/dist-cjs/lib/primitives/geometry/Arc2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Circle2d.js +2 -2
- package/dist-cjs/lib/primitives/geometry/Circle2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Ellipse2d.js +2 -2
- package/dist-cjs/lib/primitives/geometry/Ellipse2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js +4 -3
- package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Polyline2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Polyline2d.js.map +2 -2
- package/dist-cjs/lib/primitives/geometry/Stadium2d.js +1 -1
- package/dist-cjs/lib/primitives/geometry/Stadium2d.js.map +2 -2
- package/dist-cjs/lib/utils/getSvgPathFromPoints.js.map +2 -2
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js +1 -1
- package/dist-cjs/lib/utils/sync/TLLocalSyncClient.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +184 -24
- package/dist-esm/index.mjs +12 -5
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/TldrawEditor.mjs +4 -2
- package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +2 -2
- package/dist-esm/lib/config/{createTLUser.mjs → createTLCurrentUser.mjs} +6 -6
- package/dist-esm/lib/config/createTLCurrentUser.mjs.map +7 -0
- package/dist-esm/lib/config/createTLStore.mjs +28 -2
- package/dist-esm/lib/config/createTLStore.mjs.map +2 -2
- package/dist-esm/lib/config/defaultShapes.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +118 -9
- package/dist-esm/lib/editor/Editor.mjs.map +3 -3
- package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs +1 -1
- package/dist-esm/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs +1 -1
- package/dist-esm/lib/editor/managers/SnapManager/BoundsSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SnapManager/HandleSnaps.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs +4 -4
- package/dist-esm/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs +102 -30
- package/dist-esm/lib/editor/managers/TextManager/TextManager.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +10 -0
- package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/exports/StyleEmbedder.mjs +1 -1
- package/dist-esm/lib/exports/StyleEmbedder.mjs.map +2 -2
- package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
- package/dist-esm/lib/hooks/useEditorComponents.mjs.map +2 -2
- package/dist-esm/lib/hooks/useGestureEvents.mjs +171 -127
- package/dist-esm/lib/hooks/useGestureEvents.mjs.map +3 -3
- package/dist-esm/lib/hooks/useLocalStore.mjs.map +2 -2
- package/dist-esm/lib/options.mjs +3 -0
- package/dist-esm/lib/options.mjs.map +2 -2
- package/dist-esm/lib/primitives/Box.mjs +1 -1
- package/dist-esm/lib/primitives/Box.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs +2 -2
- package/dist-esm/lib/primitives/geometry/Arc2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Circle2d.mjs +2 -2
- package/dist-esm/lib/primitives/geometry/Circle2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs +2 -2
- package/dist-esm/lib/primitives/geometry/Ellipse2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +4 -3
- package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Polyline2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Polyline2d.mjs.map +2 -2
- package/dist-esm/lib/primitives/geometry/Stadium2d.mjs +1 -1
- package/dist-esm/lib/primitives/geometry/Stadium2d.mjs.map +2 -2
- package/dist-esm/lib/utils/getSvgPathFromPoints.mjs.map +2 -2
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs +1 -1
- package/dist-esm/lib/utils/sync/TLLocalSyncClient.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/editor.css +13 -0
- package/package.json +8 -9
- package/src/index.ts +14 -2
- package/src/lib/TldrawEditor.tsx +9 -7
- package/src/lib/components/default-components/DefaultCanvas.tsx +1 -1
- package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
- package/src/lib/config/TLEditorSnapshot.test.ts +1 -1
- package/src/lib/config/{createTLUser.ts → createTLCurrentUser.ts} +6 -6
- package/src/lib/config/createTLStore.ts +36 -2
- package/src/lib/config/defaultShapes.ts +1 -1
- package/src/lib/editor/Editor.ts +148 -10
- package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.ts +1 -1
- package/src/lib/editor/managers/SnapManager/BoundsSnaps.ts +1 -1
- package/src/lib/editor/managers/SnapManager/HandleSnaps.ts +1 -1
- package/src/lib/editor/managers/SpatialIndexManager/SpatialIndexManager.ts +5 -5
- package/src/lib/editor/managers/TextManager/TextManager.test.ts +18 -4
- package/src/lib/editor/managers/TextManager/TextManager.ts +140 -34
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +2 -2
- package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +2 -2
- package/src/lib/editor/shapes/ShapeUtil.ts +13 -2
- package/src/lib/editor/types/clipboard-types.ts +2 -1
- package/src/lib/exports/StyleEmbedder.ts +1 -1
- package/src/lib/exports/getSvgJsx.tsx +1 -1
- package/src/lib/hooks/useEditorComponents.tsx +1 -1
- package/src/lib/hooks/useGestureEvents.ts +240 -168
- package/src/lib/hooks/useLocalStore.ts +1 -1
- package/src/lib/options.ts +108 -0
- package/src/lib/primitives/Box.test.ts +30 -0
- package/src/lib/primitives/Box.ts +1 -1
- package/src/lib/primitives/geometry/Arc2d.ts +2 -2
- package/src/lib/primitives/geometry/Circle2d.ts +2 -2
- package/src/lib/primitives/geometry/Ellipse2d.ts +2 -2
- package/src/lib/primitives/geometry/Geometry2d.test.ts +21 -0
- package/src/lib/primitives/geometry/Geometry2d.ts +4 -3
- package/src/lib/primitives/geometry/Polyline2d.ts +1 -1
- package/src/lib/primitives/geometry/Stadium2d.ts +1 -1
- package/src/lib/utils/getSvgPathFromPoints.ts +1 -1
- package/src/lib/utils/sync/TLLocalSyncClient.test.ts +1 -1
- package/src/lib/utils/sync/TLLocalSyncClient.ts +1 -1
- package/src/version.ts +3 -3
- package/dist-cjs/lib/config/createTLUser.js.map +0 -7
- package/dist-esm/lib/config/createTLUser.mjs.map +0 -7
|
@@ -44,10 +44,10 @@ var import_store = require("@tldraw/store");
|
|
|
44
44
|
var import_tlschema = require("@tldraw/tlschema");
|
|
45
45
|
var import_utils = require("@tldraw/utils");
|
|
46
46
|
var import_eventemitter3 = __toESM(require("eventemitter3"), 1);
|
|
47
|
-
var
|
|
48
|
-
var import_createTLUser = require("../config/createTLUser");
|
|
47
|
+
var import_createTLCurrentUser = require("../config/createTLCurrentUser");
|
|
49
48
|
var import_defaultBindings = require("../config/defaultBindings");
|
|
50
49
|
var import_defaultShapes = require("../config/defaultShapes");
|
|
50
|
+
var import_TLEditorSnapshot = require("../config/TLEditorSnapshot");
|
|
51
51
|
var import_constants = require("../constants");
|
|
52
52
|
var import_domUtils = require("../exports/domUtils");
|
|
53
53
|
var import_exportToSvg = require("../exports/exportToSvg");
|
|
@@ -56,13 +56,12 @@ var import_menus = require("../globals/menus");
|
|
|
56
56
|
var import_time = require("../globals/time");
|
|
57
57
|
var import_options = require("../options");
|
|
58
58
|
var import_Box = require("../primitives/Box");
|
|
59
|
-
var import_Mat = require("../primitives/Mat");
|
|
60
|
-
var import_Vec = require("../primitives/Vec");
|
|
61
59
|
var import_easings = require("../primitives/easings");
|
|
62
60
|
var import_Group2d = require("../primitives/geometry/Group2d");
|
|
63
61
|
var import_intersect = require("../primitives/intersect");
|
|
62
|
+
var import_Mat = require("../primitives/Mat");
|
|
64
63
|
var import_utils2 = require("../primitives/utils");
|
|
65
|
-
var
|
|
64
|
+
var import_Vec = require("../primitives/Vec");
|
|
66
65
|
var import_areShapesContentEqual = require("../utils/areShapesContentEqual");
|
|
67
66
|
var import_assets = require("../utils/assets");
|
|
68
67
|
var import_debug_flags = require("../utils/debug-flags");
|
|
@@ -71,6 +70,7 @@ var import_getIncrementedName = require("../utils/getIncrementedName");
|
|
|
71
70
|
var import_reorderShapes = require("../utils/reorderShapes");
|
|
72
71
|
var import_reparenting = require("../utils/reparenting");
|
|
73
72
|
var import_rotation = require("../utils/rotation");
|
|
73
|
+
var import_SharedStylesMap = require("../utils/SharedStylesMap");
|
|
74
74
|
var import_bindingsIndex = require("./derivations/bindingsIndex");
|
|
75
75
|
var import_notVisibleShapes = require("./derivations/notVisibleShapes");
|
|
76
76
|
var import_parentsToChildren = require("./derivations/parentsToChildren");
|
|
@@ -132,13 +132,17 @@ class Editor extends import_eventemitter3.default {
|
|
|
132
132
|
...options?.camera
|
|
133
133
|
});
|
|
134
134
|
this._textOptions = (0, import_state.atom)("text options", options?.text ?? null);
|
|
135
|
-
this.user = new import_UserPreferencesManager.UserPreferencesManager(user ?? (0,
|
|
135
|
+
this.user = new import_UserPreferencesManager.UserPreferencesManager(user ?? (0, import_createTLCurrentUser.createTLCurrentUser)(), inferDarkMode ?? false);
|
|
136
136
|
this.disposables.add(() => this.user.dispose());
|
|
137
137
|
this.getContainer = getContainer;
|
|
138
138
|
this.textMeasure = new import_TextManager.TextManager(this);
|
|
139
139
|
this.disposables.add(() => this.textMeasure.dispose());
|
|
140
140
|
this.fonts = new import_FontManager.FontManager(this, fontAssetUrls);
|
|
141
141
|
this._tickManager = new import_TickManager.TickManager(this);
|
|
142
|
+
this.disposables.add(() => {
|
|
143
|
+
this.off("tick", this._decayCameraStateTimeout);
|
|
144
|
+
this._setCameraState("idle");
|
|
145
|
+
});
|
|
142
146
|
this.inputs = new import_InputsManager.InputsManager(this);
|
|
143
147
|
class NewRoot extends import_RootState.RootState {
|
|
144
148
|
static initial = initialState ?? "";
|
|
@@ -515,6 +519,14 @@ class Editor extends import_eventemitter3.default {
|
|
|
515
519
|
})
|
|
516
520
|
);
|
|
517
521
|
}
|
|
522
|
+
this.disposables.add(
|
|
523
|
+
(0, import_state.react)("sync current user record", () => {
|
|
524
|
+
const user2 = this.store.props.users.currentUser.get();
|
|
525
|
+
if (user2) {
|
|
526
|
+
this._ensureUserRecord(user2);
|
|
527
|
+
}
|
|
528
|
+
})
|
|
529
|
+
);
|
|
518
530
|
}
|
|
519
531
|
_getShapeVisibility;
|
|
520
532
|
getIsShapeHiddenCache() {
|
|
@@ -2821,6 +2833,76 @@ class Editor extends import_eventemitter3.default {
|
|
|
2821
2833
|
const currentPageId = this.getCurrentPageId();
|
|
2822
2834
|
return this.getCollaborators().filter((c) => c.currentPageId === currentPageId);
|
|
2823
2835
|
}
|
|
2836
|
+
// Attribution
|
|
2837
|
+
/**
|
|
2838
|
+
* Get the current user's ID for attribution purposes.
|
|
2839
|
+
* Also ensures a `user:` record exists in the store for the current user.
|
|
2840
|
+
* Returns `null` when the user store has no current user.
|
|
2841
|
+
*
|
|
2842
|
+
* @public
|
|
2843
|
+
*/
|
|
2844
|
+
getAttributionUserId() {
|
|
2845
|
+
const user = this.store.props.users.currentUser.get();
|
|
2846
|
+
if (!user) return null;
|
|
2847
|
+
this._ensureUserRecord(user);
|
|
2848
|
+
return import_tlschema.UserRecordType.parseId(user.id);
|
|
2849
|
+
}
|
|
2850
|
+
/**
|
|
2851
|
+
* Ensure a user record exists in the store for the given user,
|
|
2852
|
+
* updating it if the data has changed.
|
|
2853
|
+
*
|
|
2854
|
+
* @internal
|
|
2855
|
+
*/
|
|
2856
|
+
_ensureUserRecord(user) {
|
|
2857
|
+
const existing = this.store.get(user.id);
|
|
2858
|
+
if (existing && existing.name === user.name && existing.color === user.color && existing.imageUrl === user.imageUrl && existing.meta === user.meta) {
|
|
2859
|
+
return;
|
|
2860
|
+
}
|
|
2861
|
+
this.run(
|
|
2862
|
+
() => {
|
|
2863
|
+
this.store.put([user]);
|
|
2864
|
+
},
|
|
2865
|
+
{ history: "ignore" }
|
|
2866
|
+
);
|
|
2867
|
+
}
|
|
2868
|
+
/**
|
|
2869
|
+
* Resolve a display name for a user ID. Asks the
|
|
2870
|
+
* {@link @tldraw/tlschema#TLUserStore} first (the app's source of truth),
|
|
2871
|
+
* falling back to the `user:` record in the store.
|
|
2872
|
+
*
|
|
2873
|
+
* @public
|
|
2874
|
+
*/
|
|
2875
|
+
getAttributionDisplayName(userId) {
|
|
2876
|
+
if (!userId) return null;
|
|
2877
|
+
return this.store.props.users.resolve(userId).get()?.name ?? this.store.get((0, import_tlschema.createUserId)(userId))?.name ?? null;
|
|
2878
|
+
}
|
|
2879
|
+
/**
|
|
2880
|
+
* Resolve a user record by ID. Asks the
|
|
2881
|
+
* {@link @tldraw/tlschema#TLUserStore} first (the app's source of truth),
|
|
2882
|
+
* falling back to the `user:` record in the store.
|
|
2883
|
+
*
|
|
2884
|
+
* @public
|
|
2885
|
+
*/
|
|
2886
|
+
getAttributionUser(userId) {
|
|
2887
|
+
if (!userId) return null;
|
|
2888
|
+
return this.store.props.users.resolve(userId).get() ?? this.store.get((0, import_tlschema.createUserId)(userId)) ?? null;
|
|
2889
|
+
}
|
|
2890
|
+
/**
|
|
2891
|
+
* Collect user IDs referenced by a set of shapes via shape-specific props
|
|
2892
|
+
* (e.g. `textFirstEditedBy` on notes).
|
|
2893
|
+
*
|
|
2894
|
+
* @internal
|
|
2895
|
+
*/
|
|
2896
|
+
_getReferencedUserIds(shapes) {
|
|
2897
|
+
const userIds = /* @__PURE__ */ new Set();
|
|
2898
|
+
for (const shape of shapes) {
|
|
2899
|
+
const util = this.getShapeUtil(shape);
|
|
2900
|
+
for (const id of util.getReferencedUserIds(shape)) {
|
|
2901
|
+
userIds.add(id);
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
return userIds;
|
|
2905
|
+
}
|
|
2824
2906
|
// Following
|
|
2825
2907
|
// When we are 'locked on' to a user, our camera is derived from their camera.
|
|
2826
2908
|
_isLockedOnFollowingUser = (0, import_state.atom)("isLockedOnFollowingUser", false);
|
|
@@ -6534,12 +6616,22 @@ class Editor extends import_eventemitter3.default {
|
|
|
6534
6616
|
if (!asset) continue;
|
|
6535
6617
|
assets.push(asset);
|
|
6536
6618
|
}
|
|
6619
|
+
const users = [];
|
|
6620
|
+
const seenUserIds = /* @__PURE__ */ new Set();
|
|
6621
|
+
for (const userId of this._getReferencedUserIds(shapes2)) {
|
|
6622
|
+
const recordId = (0, import_tlschema.createUserId)(userId);
|
|
6623
|
+
if (seenUserIds.has(recordId)) continue;
|
|
6624
|
+
seenUserIds.add(recordId);
|
|
6625
|
+
const user = this.store.get(recordId);
|
|
6626
|
+
if (user) users.push(user);
|
|
6627
|
+
}
|
|
6537
6628
|
return {
|
|
6538
6629
|
schema: this.store.schema.serialize(),
|
|
6539
6630
|
shapes: shapes2,
|
|
6540
6631
|
rootShapeIds,
|
|
6541
6632
|
bindings,
|
|
6542
|
-
assets
|
|
6633
|
+
assets,
|
|
6634
|
+
users
|
|
6543
6635
|
};
|
|
6544
6636
|
});
|
|
6545
6637
|
}
|
|
@@ -6589,13 +6681,15 @@ class Editor extends import_eventemitter3.default {
|
|
|
6589
6681
|
const assets = [];
|
|
6590
6682
|
const shapes = [];
|
|
6591
6683
|
const bindings = [];
|
|
6684
|
+
const users = [];
|
|
6592
6685
|
const store = {
|
|
6593
6686
|
store: {
|
|
6594
6687
|
...Object.fromEntries(content.assets.map((asset) => [asset.id, asset])),
|
|
6595
6688
|
...Object.fromEntries(content.shapes.map((shape) => [shape.id, shape])),
|
|
6596
6689
|
...Object.fromEntries(
|
|
6597
6690
|
content.bindings?.map((bindings2) => [bindings2.id, bindings2]) ?? []
|
|
6598
|
-
)
|
|
6691
|
+
),
|
|
6692
|
+
...Object.fromEntries(content.users?.map((user) => [user.id, user]) ?? [])
|
|
6599
6693
|
},
|
|
6600
6694
|
schema: content.schema
|
|
6601
6695
|
};
|
|
@@ -6617,6 +6711,19 @@ class Editor extends import_eventemitter3.default {
|
|
|
6617
6711
|
bindings.push(record);
|
|
6618
6712
|
break;
|
|
6619
6713
|
}
|
|
6714
|
+
case "user": {
|
|
6715
|
+
users.push(record);
|
|
6716
|
+
break;
|
|
6717
|
+
}
|
|
6718
|
+
}
|
|
6719
|
+
}
|
|
6720
|
+
if (users.length > 0) {
|
|
6721
|
+
const existingUserIds = new Set(
|
|
6722
|
+
this.store.allRecords().filter((r) => r.typeName === "user").map((r) => r.id)
|
|
6723
|
+
);
|
|
6724
|
+
const usersToCreate = users.filter((u) => !existingUserIds.has(u.id));
|
|
6725
|
+
if (usersToCreate.length > 0) {
|
|
6726
|
+
this.store.put(usersToCreate);
|
|
6620
6727
|
}
|
|
6621
6728
|
}
|
|
6622
6729
|
const shapeIdMap = new Map(
|