@inditextech/weave-react 0.10.3 → 0.12.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.cjs CHANGED
@@ -108,6 +108,7 @@ const useWeave = create()((set) => ({
108
108
  options: []
109
109
  },
110
110
  selection: {
111
+ active: false,
111
112
  nodes: [],
112
113
  node: void 0
113
114
  },
@@ -180,6 +181,13 @@ const useWeave = create()((set) => ({
180
181
  canZoomOut: newCanZoomOut
181
182
  }
182
183
  })),
184
+ setSelectionActive: (newSelectionActive) => set((state) => ({
185
+ ...state,
186
+ selection: {
187
+ ...state.selection,
188
+ active: newSelectionActive
189
+ }
190
+ })),
183
191
  setSelectedNodes: (newSelectedNodes) => set((state) => ({
184
192
  ...state,
185
193
  selection: {
@@ -319,12 +327,17 @@ const WeaveProvider = ({ containerId, getUser, store, nodes = [], actions = [],
319
327
  //#region src/hooks/events.tsx
320
328
  const useWeaveEvents = () => {
321
329
  const instance = useWeave((state) => state.instance);
330
+ const node = useWeave((state) => state.selection.node);
322
331
  const setZoom = useWeave((state) => state.setZoom);
323
332
  const setCanZoomIn = useWeave((state) => state.setCanZoomIn);
324
333
  const setCanZoomOut = useWeave((state) => state.setCanZoomOut);
334
+ const setSelectionActive = useWeave((state) => state.setSelectionActive);
325
335
  const setSelectedNodes = useWeave((state) => state.setSelectedNodes);
326
336
  const setNode = useWeave((state) => state.setNode);
327
337
  const setUsers = useWeave((state) => state.setUsers);
338
+ const onSelectionStateHandler = react.default.useCallback((active) => {
339
+ setSelectionActive(active);
340
+ }, []);
328
341
  const onZoomChangeHandler = react.default.useCallback(
329
342
  (zoomInfo) => {
330
343
  setZoom(zoomInfo.scale);
@@ -335,19 +348,21 @@ const useWeaveEvents = () => {
335
348
  []
336
349
  );
337
350
  const onNodesChangeHandler = react.default.useCallback((nodes) => {
338
- if (nodes.length === 1) setNode(nodes[0].node);
339
- if (nodes.length !== 1) setNode(void 0);
351
+ if (nodes.length === 1 && node?.key !== nodes[0].node.key) setNode(nodes[0].node);
352
+ if (nodes.length === 0) setNode(void 0);
340
353
  setSelectedNodes(nodes);
341
- }, []);
354
+ }, [node]);
342
355
  const onConnectedUsersChangedHandler = react.default.useCallback((users) => {
343
356
  setUsers(users);
344
357
  }, []);
345
358
  react.default.useEffect(() => {
346
359
  if (!instance) return;
360
+ instance.addEventListener("onSelectionState", onSelectionStateHandler);
347
361
  instance.addEventListener("onZoomChange", onZoomChangeHandler);
348
362
  instance.addEventListener("onNodesChange", onNodesChangeHandler);
349
363
  instance.addEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
350
364
  return () => {
365
+ instance.removeEventListener("onSelectionState", onSelectionStateHandler);
351
366
  instance.removeEventListener("onZoomChange", onZoomChangeHandler);
352
367
  instance.removeEventListener("onNodesChange", onNodesChangeHandler);
353
368
  instance.removeEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
package/dist/react.d.cts CHANGED
@@ -114,6 +114,7 @@ interface WeaveRuntimeState {
114
114
  canZoomOut: boolean;
115
115
  };
116
116
  selection: {
117
+ active: boolean;
117
118
  nodes: WeaveSelection[];
118
119
  node: WeaveStateElement | undefined;
119
120
  };
@@ -132,6 +133,7 @@ interface WeaveRuntimeState {
132
133
  setZoom: (newZoom: number) => void;
133
134
  setCanZoomIn: (newCanZoomIn: boolean) => void;
134
135
  setCanZoomOut: (newCanZoomOut: boolean) => void;
136
+ setSelectionActive: (newSelectionActive: boolean) => void;
135
137
  setSelectedNodes: (newSelectedNodes: WeaveSelection[]) => void;
136
138
  setNode: (newNode: WeaveStateElement | undefined) => void;
137
139
  setActualAction: (newActualAction: string | undefined) => void;
package/dist/react.d.ts CHANGED
@@ -114,6 +114,7 @@ interface WeaveRuntimeState {
114
114
  canZoomOut: boolean;
115
115
  };
116
116
  selection: {
117
+ active: boolean;
117
118
  nodes: WeaveSelection[];
118
119
  node: WeaveStateElement | undefined;
119
120
  };
@@ -132,6 +133,7 @@ interface WeaveRuntimeState {
132
133
  setZoom: (newZoom: number) => void;
133
134
  setCanZoomIn: (newCanZoomIn: boolean) => void;
134
135
  setCanZoomOut: (newCanZoomOut: boolean) => void;
136
+ setSelectionActive: (newSelectionActive: boolean) => void;
135
137
  setSelectedNodes: (newSelectedNodes: WeaveSelection[]) => void;
136
138
  setNode: (newNode: WeaveStateElement | undefined) => void;
137
139
  setActualAction: (newActualAction: string | undefined) => void;
package/dist/react.js CHANGED
@@ -84,6 +84,7 @@ const useWeave = create()((set) => ({
84
84
  options: []
85
85
  },
86
86
  selection: {
87
+ active: false,
87
88
  nodes: [],
88
89
  node: void 0
89
90
  },
@@ -156,6 +157,13 @@ const useWeave = create()((set) => ({
156
157
  canZoomOut: newCanZoomOut
157
158
  }
158
159
  })),
160
+ setSelectionActive: (newSelectionActive) => set((state) => ({
161
+ ...state,
162
+ selection: {
163
+ ...state.selection,
164
+ active: newSelectionActive
165
+ }
166
+ })),
159
167
  setSelectedNodes: (newSelectedNodes) => set((state) => ({
160
168
  ...state,
161
169
  selection: {
@@ -295,12 +303,17 @@ const WeaveProvider = ({ containerId, getUser, store, nodes = [], actions = [],
295
303
  //#region src/hooks/events.tsx
296
304
  const useWeaveEvents = () => {
297
305
  const instance = useWeave((state) => state.instance);
306
+ const node = useWeave((state) => state.selection.node);
298
307
  const setZoom = useWeave((state) => state.setZoom);
299
308
  const setCanZoomIn = useWeave((state) => state.setCanZoomIn);
300
309
  const setCanZoomOut = useWeave((state) => state.setCanZoomOut);
310
+ const setSelectionActive = useWeave((state) => state.setSelectionActive);
301
311
  const setSelectedNodes = useWeave((state) => state.setSelectedNodes);
302
312
  const setNode = useWeave((state) => state.setNode);
303
313
  const setUsers = useWeave((state) => state.setUsers);
314
+ const onSelectionStateHandler = React.useCallback((active) => {
315
+ setSelectionActive(active);
316
+ }, []);
304
317
  const onZoomChangeHandler = React.useCallback(
305
318
  (zoomInfo) => {
306
319
  setZoom(zoomInfo.scale);
@@ -311,19 +324,21 @@ const useWeaveEvents = () => {
311
324
  []
312
325
  );
313
326
  const onNodesChangeHandler = React.useCallback((nodes) => {
314
- if (nodes.length === 1) setNode(nodes[0].node);
315
- if (nodes.length !== 1) setNode(void 0);
327
+ if (nodes.length === 1 && node?.key !== nodes[0].node.key) setNode(nodes[0].node);
328
+ if (nodes.length === 0) setNode(void 0);
316
329
  setSelectedNodes(nodes);
317
- }, []);
330
+ }, [node]);
318
331
  const onConnectedUsersChangedHandler = React.useCallback((users) => {
319
332
  setUsers(users);
320
333
  }, []);
321
334
  React.useEffect(() => {
322
335
  if (!instance) return;
336
+ instance.addEventListener("onSelectionState", onSelectionStateHandler);
323
337
  instance.addEventListener("onZoomChange", onZoomChangeHandler);
324
338
  instance.addEventListener("onNodesChange", onNodesChangeHandler);
325
339
  instance.addEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
326
340
  return () => {
341
+ instance.removeEventListener("onSelectionState", onSelectionStateHandler);
327
342
  instance.removeEventListener("onZoomChange", onZoomChangeHandler);
328
343
  instance.removeEventListener("onNodesChange", onNodesChangeHandler);
329
344
  instance.removeEventListener("onConnectedUsersChange", onConnectedUsersChangedHandler);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-react",
3
- "version": "0.10.3",
3
+ "version": "0.12.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -48,7 +48,7 @@
48
48
  "yjs": "13.6.26"
49
49
  },
50
50
  "devDependencies": {
51
- "@inditextech/weave-sdk": "0.10.3",
51
+ "@inditextech/weave-sdk": "0.12.0",
52
52
  "@types/node": "^22.15.3",
53
53
  "@typescript-eslint/eslint-plugin": "8.26.0",
54
54
  "@typescript-eslint/parser": "8.26.0",