@inditextech/weave-react 3.3.0 → 3.4.0-SNAPSHOT.38.1

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/react.d.ts CHANGED
@@ -41,12 +41,14 @@ interface WeaveRuntimeState {
41
41
  status: string;
42
42
  };
43
43
  room: {
44
+ id: string | null;
45
+ switching: boolean;
44
46
  loaded: boolean;
45
47
  };
46
48
  asyncElements: {
49
+ state: "idle" | "loading" | "loaded";
47
50
  loaded: number;
48
51
  total: number;
49
- allLoaded: boolean;
50
52
  };
51
53
  users: WeaveConnectedUsers;
52
54
  undoRedo: {
@@ -72,9 +74,11 @@ interface WeaveRuntimeState {
72
74
  setStatus: (newStatus: WeaveStatus) => void;
73
75
  setAppState: (newAppState: WeaveState) => void;
74
76
  setConnectionStatus: (newConnectionStatus: string) => void;
77
+ setRoomId: (newRoomId: string | null) => void;
78
+ setRoomSwitching: (newRoomSwitching: boolean) => void;
75
79
  setRoomLoaded: (newStatus: boolean) => void;
76
80
  setAsyncElements: (loaded: number, total: number) => void;
77
- setAsyncElementsAllLoaded: (allLoaded: boolean) => void;
81
+ setAsyncElementsState: (newState: "idle" | "loading" | "loaded") => void;
78
82
  setUsers: (newUsers: WeaveConnectedUsers) => void;
79
83
  setCanUndo: (newCanUndo: boolean) => void;
80
84
  setCanRedo: (newCanRedo: boolean) => void;
package/dist/react.js CHANGED
@@ -53,11 +53,15 @@ const useWeave = create()((set) => ({
53
53
  instance: null,
54
54
  appState: { weave: {} },
55
55
  status: WEAVE_INSTANCE_STATUS.IDLE,
56
- room: { loaded: false },
56
+ room: {
57
+ id: null,
58
+ switching: false,
59
+ loaded: false
60
+ },
57
61
  asyncElements: {
62
+ state: "idle",
58
63
  loaded: 0,
59
- total: 0,
60
- allLoaded: false
64
+ total: 0
61
65
  },
62
66
  connection: { status: "disconnected" },
63
67
  users: {},
@@ -107,6 +111,20 @@ const useWeave = create()((set) => ({
107
111
  status: newConnectionStatus
108
112
  }
109
113
  })),
114
+ setRoomId: (newRoomId) => set((state) => ({
115
+ ...state,
116
+ room: {
117
+ ...state.room,
118
+ id: newRoomId
119
+ }
120
+ })),
121
+ setRoomSwitching: (newRoomSwitching) => set((state) => ({
122
+ ...state,
123
+ room: {
124
+ ...state.room,
125
+ switching: newRoomSwitching
126
+ }
127
+ })),
110
128
  setRoomLoaded: (newStatus) => set((state) => ({
111
129
  ...state,
112
130
  room: {
@@ -122,11 +140,11 @@ const useWeave = create()((set) => ({
122
140
  total
123
141
  }
124
142
  })),
125
- setAsyncElementsAllLoaded: (allLoaded) => set((state) => ({
143
+ setAsyncElementsState: (newState) => set((state) => ({
126
144
  ...state,
127
145
  asyncElements: {
128
146
  ...state.asyncElements,
129
- allLoaded
147
+ state: newState
130
148
  }
131
149
  })),
132
150
  setUsers: (newUsers) => set((state) => ({
@@ -217,7 +235,7 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
217
235
  const setActualAction = useWeave((state) => state.setActualAction);
218
236
  const setConnectionStatus = useWeave((state) => state.setConnectionStatus);
219
237
  const setAsyncElements = useWeave((state) => state.setAsyncElements);
220
- const setAsyncElementsAllLoaded = useWeave((state) => state.setAsyncElementsAllLoaded);
238
+ const setAsyncElementsState = useWeave((state) => state.setAsyncElementsState);
221
239
  const onInstanceStatusHandler = React.useCallback(
222
240
  (status) => {
223
241
  setStatus(status);
@@ -261,9 +279,17 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
261
279
  },
262
280
  // eslint-disable-next-line react-hooks/exhaustive-deps
263
281
  [selectedNodes]
282
+ );
283
+ const onAsyncElementsIdleHandler = React.useCallback(
284
+ () => {
285
+ setAsyncElementsState("idle");
286
+ },
287
+ // eslint-disable-next-line react-hooks/exhaustive-deps
288
+ [selectedNodes]
264
289
  );
265
290
  const onAsyncElementsLoadingHandler = React.useCallback(
266
291
  ({ loaded, total }) => {
292
+ setAsyncElementsState("loading");
267
293
  setAsyncElements(loaded, total);
268
294
  },
269
295
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -271,7 +297,7 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
271
297
  );
272
298
  const onAsyncElementsLoadedHandler = React.useCallback(
273
299
  () => {
274
- setAsyncElementsAllLoaded(true);
300
+ setAsyncElementsState("loaded");
275
301
  },
276
302
  // eslint-disable-next-line react-hooks/exhaustive-deps
277
303
  [selectedNodes]
@@ -305,6 +331,7 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
305
331
  weaveInstanceRef.current.addEventListener("onStateChange", onStateChangeHandler);
306
332
  weaveInstanceRef.current.addEventListener("onUndoManagerStatusChange", onUndoManagerStatusChangeHandler);
307
333
  weaveInstanceRef.current.addEventListener("onActiveActionChange", onActiveActionChangeHandler);
334
+ weaveInstanceRef.current.addEventListener("onAsyncElementsIdle", onAsyncElementsIdleHandler);
308
335
  weaveInstanceRef.current.addEventListener("onAsyncElementsLoading", onAsyncElementsLoadingHandler);
309
336
  weaveInstanceRef.current.addEventListener("onAsyncElementsLoaded", onAsyncElementsLoadedHandler);
310
337
  setInstance(weaveInstanceRef.current);
@@ -315,6 +342,7 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
315
342
  setRoomLoaded(false);
316
343
  initWeave();
317
344
  return () => {
345
+ console.log("unmounting weave provider, let's clean up");
318
346
  weaveInstanceRef.current?.removeEventListener("onInstanceStatus", onInstanceStatusHandler);
319
347
  weaveInstanceRef.current?.removeEventListener("onStoreConnectionStatusChange", onStoreConnectionStatusChangeHandler);
320
348
  weaveInstanceRef.current?.removeEventListener("onRoomLoaded", onRoomLoadedHandler);
@@ -325,6 +353,7 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
325
353
  weaveInstanceRef.current?.removeEventListener("onAsyncElementsLoaded", onAsyncElementsLoadedHandler);
326
354
  setStatus(WEAVE_INSTANCE_STATUS.IDLE);
327
355
  setRoomLoaded(false);
356
+ console.log("Destroying weave instance");
328
357
  weaveInstanceRef.current?.destroy();
329
358
  weaveInstanceRef.current = null;
330
359
  };
@@ -337,6 +366,8 @@ const WeaveProvider = ({ getContainer, store, renderer, nodes = [], actions = []
337
366
  const useWeaveEvents = () => {
338
367
  const instance = useWeave((state) => state.instance);
339
368
  const node = useWeave((state) => state.selection.node);
369
+ const setRoomId = useWeave((state) => state.setRoomId);
370
+ const setRoomSwitching = useWeave((state) => state.setRoomSwitching);
340
371
  const setZoom = useWeave((state) => state.setZoom);
341
372
  const setCanZoomIn = useWeave((state) => state.setCanZoomIn);
342
373
  const setCanZoomOut = useWeave((state) => state.setCanZoomOut);
@@ -345,6 +376,29 @@ const useWeaveEvents = () => {
345
376
  const setNode = useWeave((state) => state.setNode);
346
377
  const setUsers = useWeave((state) => state.setUsers);
347
378
  const setUsersLocks = useWeave((state) => state.setUsersLocks);
379
+ const onStoreRoomChangedHandler = React.useCallback(
380
+ ({ room }) => {
381
+ setRoomId(room);
382
+ },
383
+ // eslint-disable-next-line react-hooks/exhaustive-deps
384
+ []
385
+ );
386
+ const onRoomSwitchingStartHandler = React.useCallback(
387
+ ({ room }) => {
388
+ console.log("Room switching started to room:", room);
389
+ setRoomSwitching(true);
390
+ },
391
+ // eslint-disable-next-line react-hooks/exhaustive-deps
392
+ []
393
+ );
394
+ const onRoomSwitchingEndHandler = React.useCallback(
395
+ ({ room }) => {
396
+ console.log("Room switching ended to room:", room);
397
+ setRoomSwitching(false);
398
+ },
399
+ // eslint-disable-next-line react-hooks/exhaustive-deps
400
+ []
401
+ );
348
402
  const onSelectionStateHandler = React.useCallback((active) => {
349
403
  setSelectionActive(active);
350
404
  }, []);
@@ -389,12 +443,18 @@ const useWeaveEvents = () => {
389
443
  );
390
444
  React.useEffect(() => {
391
445
  if (!instance) return;
446
+ instance.addEventListener("onStoreRoomChanged", onStoreRoomChangedHandler);
447
+ instance.addEventListener("onRoomSwitchingStart", onRoomSwitchingStartHandler);
448
+ instance.addEventListener("onRoomSwitchingEnd", onRoomSwitchingEndHandler);
392
449
  instance.addEventListener("onSelectionState", onSelectionStateHandler);
393
450
  instance.addEventListener("onZoomChange", onZoomChangeHandler);
394
451
  instance.addEventListener("onNodesChange", onNodesChangeHandler);
395
452
  instance.addEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
396
453
  instance.addEventListener("onMutexLockChange", onMutexLockChangeHandler);
397
454
  return () => {
455
+ instance.removeEventListener("onStoreRoomChanged", onStoreRoomChangedHandler);
456
+ instance.removeEventListener("onRoomSwitchingStart", onRoomSwitchingStartHandler);
457
+ instance.removeEventListener("onRoomSwitchingEnd", onRoomSwitchingEndHandler);
398
458
  instance.removeEventListener("onSelectionState", onSelectionStateHandler);
399
459
  instance.removeEventListener("onZoomChange", onZoomChangeHandler);
400
460
  instance.removeEventListener("onNodesChange", onNodesChangeHandler);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-react",
3
- "version": "3.3.0",
3
+ "version": "3.4.0-SNAPSHOT.38.1",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -47,8 +47,8 @@
47
47
  "version:release": "npm version $RELEASE_VERSION -m \"[npm-scripts] prepare release $RELEASE_VERSION\" --tag-version-prefix \"\""
48
48
  },
49
49
  "dependencies": {
50
- "@inditextech/weave-sdk": "3.3.0",
51
- "@inditextech/weave-types": "3.3.0",
50
+ "@inditextech/weave-sdk": "3.4.0-SNAPSHOT.38.1",
51
+ "@inditextech/weave-types": "3.4.0-SNAPSHOT.38.1",
52
52
  "@syncedstore/core": "0.6.0"
53
53
  },
54
54
  "devDependencies": {