@tldraw/editor 3.13.0-canary.d403fcffd1eb → 3.13.0-canary.dc099cf30823
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 +1 -0
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/lib/editor/Editor.js +25 -20
- package/dist-cjs/lib/editor/Editor.js.map +3 -3
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +1 -0
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/lib/editor/Editor.mjs +25 -20
- package/dist-esm/lib/editor/Editor.mjs.map +3 -3
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/package.json +7 -7
- package/src/lib/editor/Editor.ts +22 -19
- package/src/version.ts +3 -3
package/dist-cjs/index.d.ts
CHANGED
package/dist-cjs/index.js
CHANGED
|
@@ -1347,8 +1347,7 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
1347
1347
|
return this.getCurrentPageState().selectedShapeIds;
|
|
1348
1348
|
}
|
|
1349
1349
|
getSelectedShapes() {
|
|
1350
|
-
|
|
1351
|
-
return (0, import_utils.compact)(selectedShapeIds.map((id) => this.store.get(id)));
|
|
1350
|
+
return (0, import_utils.compact)(this.getSelectedShapeIds().map((id) => this.store.get(id)));
|
|
1352
1351
|
}
|
|
1353
1352
|
/**
|
|
1354
1353
|
* Select one or more shapes.
|
|
@@ -1950,12 +1949,22 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
1950
1949
|
}
|
|
1951
1950
|
return baseCamera;
|
|
1952
1951
|
}
|
|
1952
|
+
_getFollowingPresence(targetUserId) {
|
|
1953
|
+
const visited = [this.user.getId()];
|
|
1954
|
+
const collaborators = this.getCollaborators();
|
|
1955
|
+
let leaderPresence = null;
|
|
1956
|
+
while (targetUserId && !visited.includes(targetUserId)) {
|
|
1957
|
+
leaderPresence = collaborators.find((c) => c.userId === targetUserId) ?? null;
|
|
1958
|
+
targetUserId = leaderPresence?.followingUserId ?? null;
|
|
1959
|
+
if (leaderPresence) {
|
|
1960
|
+
visited.push(leaderPresence.userId);
|
|
1961
|
+
}
|
|
1962
|
+
}
|
|
1963
|
+
return leaderPresence;
|
|
1964
|
+
}
|
|
1953
1965
|
getViewportPageBoundsForFollowing() {
|
|
1954
|
-
const
|
|
1955
|
-
if (!
|
|
1956
|
-
const leaderPresence = this.getCollaborators().find((c) => c.userId === followingUserId);
|
|
1957
|
-
if (!leaderPresence) return null;
|
|
1958
|
-
if (!leaderPresence.camera || !leaderPresence.screenBounds) return null;
|
|
1966
|
+
const leaderPresence = this._getFollowingPresence(this.getInstanceState().followingUserId);
|
|
1967
|
+
if (!leaderPresence?.camera || !leaderPresence?.screenBounds) return null;
|
|
1959
1968
|
const { w: lw, h: lh } = leaderPresence.screenBounds;
|
|
1960
1969
|
const { x: lx, y: ly, z: lz } = leaderPresence.camera;
|
|
1961
1970
|
const theirViewport = new import_Box.Box(-lx, -ly, lw / lz, lh / lz);
|
|
@@ -2862,34 +2871,30 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
2862
2871
|
*/
|
|
2863
2872
|
startFollowingUser(userId) {
|
|
2864
2873
|
this.stopFollowingUser();
|
|
2865
|
-
const leaderPresences = this._getCollaboratorsQuery().get().filter((p) => p.userId === userId);
|
|
2866
|
-
if (!leaderPresences.length) {
|
|
2867
|
-
console.warn("User not found");
|
|
2868
|
-
return this;
|
|
2869
|
-
}
|
|
2870
2874
|
const thisUserId = this.user.getId();
|
|
2871
2875
|
if (!thisUserId) {
|
|
2872
2876
|
console.warn("You should set the userId for the current instance before following a user");
|
|
2873
2877
|
}
|
|
2874
|
-
|
|
2878
|
+
const leaderPresence = this._getFollowingPresence(userId);
|
|
2879
|
+
if (!leaderPresence) {
|
|
2875
2880
|
return this;
|
|
2876
2881
|
}
|
|
2877
2882
|
const latestLeaderPresence = (0, import_state.computed)("latestLeaderPresence", () => {
|
|
2878
|
-
return this.
|
|
2883
|
+
return this._getFollowingPresence(userId);
|
|
2879
2884
|
});
|
|
2880
2885
|
(0, import_state.transact)(() => {
|
|
2881
2886
|
this.updateInstanceState({ followingUserId: userId }, { history: "ignore" });
|
|
2882
2887
|
const dispose = (0, import_state.react)("update current page", () => {
|
|
2883
|
-
const
|
|
2884
|
-
if (!
|
|
2888
|
+
const leaderPresence2 = latestLeaderPresence.get();
|
|
2889
|
+
if (!leaderPresence2) {
|
|
2885
2890
|
this.stopFollowingUser();
|
|
2886
2891
|
return;
|
|
2887
2892
|
}
|
|
2888
|
-
if (
|
|
2893
|
+
if (leaderPresence2.currentPageId !== this.getCurrentPageId() && this.getPage(leaderPresence2.currentPageId)) {
|
|
2889
2894
|
this.run(
|
|
2890
2895
|
() => {
|
|
2891
2896
|
this.store.put([
|
|
2892
|
-
{ ...this.getInstanceState(), currentPageId:
|
|
2897
|
+
{ ...this.getInstanceState(), currentPageId: leaderPresence2.currentPageId }
|
|
2893
2898
|
]);
|
|
2894
2899
|
this._isLockedOnFollowingUser.set(true);
|
|
2895
2900
|
},
|
|
@@ -2904,8 +2909,8 @@ class Editor extends (_a = import_eventemitter3.default, _getIsShapeHiddenCache_
|
|
|
2904
2909
|
this.off("stop-following", cancel);
|
|
2905
2910
|
};
|
|
2906
2911
|
const moveTowardsUser = () => {
|
|
2907
|
-
const
|
|
2908
|
-
if (!
|
|
2912
|
+
const leaderPresence2 = latestLeaderPresence.get();
|
|
2913
|
+
if (!leaderPresence2) {
|
|
2909
2914
|
this.stopFollowingUser();
|
|
2910
2915
|
return;
|
|
2911
2916
|
}
|