@inditextech/weave-react 2.12.1 → 2.13.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/react.d.ts CHANGED
@@ -48,6 +48,7 @@ interface WeaveRuntimeState {
48
48
  canUndo: boolean;
49
49
  canRedo: boolean;
50
50
  };
51
+ usersLocks: Record<string, unknown>;
51
52
  zoom: {
52
53
  value: number;
53
54
  canZoomIn: boolean;
@@ -70,6 +71,7 @@ interface WeaveRuntimeState {
70
71
  setUsers: (newUsers: WeaveConnectedUsers) => void;
71
72
  setCanUndo: (newCanUndo: boolean) => void;
72
73
  setCanRedo: (newCanRedo: boolean) => void;
74
+ setUsersLocks: (newUsersLocks: Record<string, unknown>) => void;
73
75
  setZoom: (newZoom: number) => void;
74
76
  setCanZoomIn: (newCanZoomIn: boolean) => void;
75
77
  setCanZoomOut: (newCanZoomOut: boolean) => void;
package/dist/react.js CHANGED
@@ -60,6 +60,7 @@ const useWeave = create()((set) => ({
60
60
  canUndo: false,
61
61
  canRedo: false
62
62
  },
63
+ usersLocks: {},
63
64
  zoom: {
64
65
  value: 1,
65
66
  canZoomIn: false,
@@ -126,6 +127,10 @@ const useWeave = create()((set) => ({
126
127
  canRedo: newCanRedo
127
128
  }
128
129
  })),
130
+ setUsersLocks: (newUsersLocks) => set((state) => ({
131
+ ...state,
132
+ usersLocks: newUsersLocks
133
+ })),
129
134
  setZoom: (newZoom) => set((state) => ({
130
135
  ...state,
131
136
  zoom: {
@@ -301,6 +306,7 @@ const useWeaveEvents = () => {
301
306
  const setSelectedNodes = useWeave((state) => state.setSelectedNodes);
302
307
  const setNode = useWeave((state) => state.setNode);
303
308
  const setUsers = useWeave((state) => state.setUsers);
309
+ const setUsersLocks = useWeave((state) => state.setUsersLocks);
304
310
  const onSelectionStateHandler = React.useCallback((active) => {
305
311
  setSelectionActive(active);
306
312
  }, []);
@@ -313,25 +319,49 @@ const useWeaveEvents = () => {
313
319
  // eslint-disable-next-line react-hooks/exhaustive-deps
314
320
  []
315
321
  );
316
- const onNodesChangeHandler = React.useCallback((nodes) => {
317
- if (nodes.length === 1 && node?.key !== nodes[0].node?.key) setNode(nodes[0].node);
318
- if (nodes.length === 0) setNode(void 0);
319
- setSelectedNodes(nodes);
320
- }, [node]);
321
- const onConnectedUsersChangedHandler = React.useCallback((users) => {
322
- setUsers(users);
323
- }, []);
322
+ const onNodesChangeHandler = React.useCallback(
323
+ (nodes) => {
324
+ if (nodes.length === 1 && node?.key !== nodes[0].node?.key) setNode(nodes[0].node);
325
+ if (nodes.length === 0) setNode(void 0);
326
+ setSelectedNodes(nodes);
327
+ },
328
+ // eslint-disable-next-line react-hooks/exhaustive-deps
329
+ [node]
330
+ );
331
+ const onConnectedUsersChangedHandler = React.useCallback(
332
+ (users) => {
333
+ setUsers(users);
334
+ },
335
+ // eslint-disable-next-line react-hooks/exhaustive-deps
336
+ []
337
+ );
338
+ const onMutexLockChangeHandler = React.useCallback(
339
+ ({ locks }) => {
340
+ if (!instance) return;
341
+ const actUsersLocks = {};
342
+ for (const lockKey of locks) {
343
+ const mutexInfo = instance?.getLockDetails(lockKey);
344
+ if (mutexInfo) actUsersLocks[lockKey] = mutexInfo;
345
+ }
346
+ setUsersLocks(actUsersLocks);
347
+ },
348
+ // eslint-disable-next-line react-hooks/exhaustive-deps
349
+ [instance]
350
+ );
324
351
  React.useEffect(() => {
325
352
  if (!instance) return;
326
353
  instance.addEventListener("onSelectionState", onSelectionStateHandler);
327
354
  instance.addEventListener("onZoomChange", onZoomChangeHandler);
328
355
  instance.addEventListener("onNodesChange", onNodesChangeHandler);
329
356
  instance.addEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
357
+ instance.addEventListener("onMutexLockChange", onMutexLockChangeHandler);
330
358
  return () => {
331
359
  instance.removeEventListener("onSelectionState", onSelectionStateHandler);
332
360
  instance.removeEventListener("onZoomChange", onZoomChangeHandler);
333
361
  instance.removeEventListener("onNodesChange", onNodesChangeHandler);
334
362
  instance.removeEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
363
+ instance.removeEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
364
+ instance.removeEventListener("onMutexLockChange", onMutexLockChangeHandler);
335
365
  };
336
366
  }, [instance]);
337
367
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-react",
3
- "version": "2.12.1",
3
+ "version": "2.13.0",
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": "2.12.1",
51
- "@inditextech/weave-types": "2.12.1",
50
+ "@inditextech/weave-sdk": "2.13.0",
51
+ "@inditextech/weave-types": "2.13.0",
52
52
  "@syncedstore/core": "0.6.0"
53
53
  },
54
54
  "devDependencies": {