@edifice.io/react 2.0.0-develop-rc.15 → 2.0.0-develop-rc.19

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.
@@ -3,4 +3,3 @@ export { default as DndTree } from './components/DndTree';
3
3
  export { default as Tree } from './components/Tree';
4
4
  export * from './hooks/useTreeSortable';
5
5
  export * from './types';
6
- export * from './utilities/tree-sortable';
@@ -51,19 +51,6 @@ function updateParentIds(flattenedTree, indices, newParentId) {
51
51
  };
52
52
  });
53
53
  }
54
- function findItemIndexInTree(tree, itemId) {
55
- for (let i = 0; i < tree.length; i++) {
56
- const node = tree[i];
57
- if (node.id === itemId)
58
- return i;
59
- if (node.children && node.children.length > 0) {
60
- const result = findItemIndexInTree(node.children, itemId);
61
- if (result)
62
- return result;
63
- }
64
- }
65
- return 0;
66
- }
67
54
  function generateUpdateData(updatedFlattenedTree, tree) {
68
55
  const updateArray = [];
69
56
  let positionCounter = 0;
@@ -133,7 +120,6 @@ function getProjection(items, activeId, overId, dragOffset, indentationWidth) {
133
120
  export {
134
121
  buildTree,
135
122
  determineNewParentId,
136
- findItemIndexInTree,
137
123
  flattenTree,
138
124
  generateUpdateData,
139
125
  getActiveAndOverNodes,
@@ -1,4 +1,5 @@
1
+ export * from './hooks/useTreeView';
1
2
  export * from './TreeNode';
2
3
  export * from './TreeView';
3
4
  export { default as TreeView } from './TreeView';
4
- export * from './hooks/useTreeView';
5
+ export * from './utilities';
@@ -1,4 +1,7 @@
1
- import "@edifice.io/ts-client";
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: !0, configurable: !0, writable: !0, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key != "symbol" ? key + "" : key, value);
4
+ import { FOLDER } from "@edifice.io/ts-client";
2
5
  function findTreeNode(root, predicate) {
3
6
  if (predicate(root)) return root;
4
7
  if (Array.isArray(root.children))
@@ -24,6 +27,106 @@ function findNodeById(data, id) {
24
27
  }
25
28
  }
26
29
  }
30
+ function addNode(node, {
31
+ parentId,
32
+ newFolder
33
+ }) {
34
+ return modifyNode(node, (node2) => {
35
+ var _a;
36
+ if (node2.id === parentId) {
37
+ const parentAncestors = [...((_a = node2.folder) == null ? void 0 : _a.ancestors) || []], ancestors = arrayUnique([...parentAncestors, node2.id]);
38
+ return {
39
+ ...node2,
40
+ children: [...node2.children || [], new TreeNodeFolderWrapper({
41
+ ...newFolder,
42
+ ancestors
43
+ })]
44
+ };
45
+ } else
46
+ return node2;
47
+ });
48
+ }
49
+ function arrayUnique(array) {
50
+ return array.filter((item, index) => array.indexOf(item) === index);
51
+ }
52
+ function deleteNode(node, {
53
+ folders
54
+ }) {
55
+ return modifyNode(node, (node2) => {
56
+ if (!folders.includes(node2.id))
57
+ return node2;
58
+ });
59
+ }
60
+ const findParentNode = (parentNode, childId) => {
61
+ if (parentNode.children)
62
+ for (const child of parentNode.children) {
63
+ if (child.id === childId)
64
+ return parentNode;
65
+ const foundNode = findParentNode(child, childId);
66
+ if (foundNode)
67
+ return foundNode;
68
+ }
69
+ };
70
+ function getAncestors(data, folderId) {
71
+ var _a;
72
+ const findItem = findNodeById(data, folderId);
73
+ return (_a = findItem == null ? void 0 : findItem.folder) != null && _a.ancestors ? [...(findItem == null ? void 0 : findItem.folder.ancestors) || [], folderId] : folderId === FOLDER.BIN ? [FOLDER.BIN] : [FOLDER.DEFAULT];
74
+ }
75
+ function hasChildren(folderId, data) {
76
+ return data.id === folderId && data.children ? data.children.length > 0 : data.children ? data.children.some((child) => hasChildren(data.id, child)) : !1;
77
+ }
78
+ function modifyNode(data, callback) {
79
+ return doModify(data, callback) || data;
80
+ }
81
+ function doModify(current, callback, parent) {
82
+ var _a;
83
+ const result = callback(current, parent);
84
+ if ((_a = result == null ? void 0 : result.children) != null && _a.length) {
85
+ const children = [];
86
+ for (const child of (result == null ? void 0 : result.children) || []) {
87
+ const res = doModify(child, callback, result);
88
+ res && children.push(res);
89
+ }
90
+ return {
91
+ ...result,
92
+ children
93
+ };
94
+ }
95
+ return result;
96
+ }
97
+ function moveNode(node, {
98
+ destinationId,
99
+ folders
100
+ }) {
101
+ return modifyNode(node, (node2, parent) => {
102
+ var _a, _b;
103
+ if (destinationId === node2.id) {
104
+ const parentAncestors = [...((_a = node2.folder) == null ? void 0 : _a.ancestors) || []], ancestors = arrayUnique([...parentAncestors, node2.id]), newChildren = [...node2.children || []], childrenIds = ((_b = node2.children) == null ? void 0 : _b.map((child) => child.id)) || [];
105
+ for (const folder of folders)
106
+ if (!childrenIds.includes(folder)) {
107
+ const item = findNodeById(node2, folder);
108
+ item && newChildren.push({
109
+ ...item,
110
+ folder: {
111
+ ...item == null ? void 0 : item.folder,
112
+ ancestors
113
+ }
114
+ });
115
+ }
116
+ return {
117
+ ...node2,
118
+ children: newChildren
119
+ };
120
+ } else return folders.includes(node2.id) && destinationId !== (parent == null ? void 0 : parent.id) ? void 0 : node2;
121
+ });
122
+ }
123
+ const wrapTreeNode = (node, folders, parentId) => modifyNode(node, (node2) => (node2.id === parentId && (node2.children = folders == null ? void 0 : folders.map((e) => new TreeNodeFolderWrapper(e))), node2));
124
+ function updateNode(node, {
125
+ folderId,
126
+ newFolder
127
+ }) {
128
+ return modifyNode(node, (node2) => node2.id === folderId ? new TreeNodeFolderWrapper(newFolder) : node2);
129
+ }
27
130
  function findPathById(tree, nodeId) {
28
131
  let path = [];
29
132
  function traverse(node, currentPath) {
@@ -46,8 +149,29 @@ function findPathById(tree, nodeId) {
46
149
  }
47
150
  return startTraverse(tree), path;
48
151
  }
152
+ class TreeNodeFolderWrapper {
153
+ constructor(folder) {
154
+ __publicField(this, "id");
155
+ __publicField(this, "name");
156
+ __publicField(this, "childNumber");
157
+ __publicField(this, "section", !1);
158
+ __publicField(this, "children", []);
159
+ this.folder = folder, this.id = folder.id, this.name = folder.name, this.childNumber = folder.childNumber;
160
+ }
161
+ }
49
162
  export {
163
+ TreeNodeFolderWrapper,
164
+ addNode,
165
+ arrayUnique,
166
+ deleteNode,
50
167
  findNodeById,
168
+ findParentNode,
51
169
  findPathById,
52
- findTreeNode
170
+ findTreeNode,
171
+ getAncestors,
172
+ hasChildren,
173
+ modifyNode,
174
+ moveNode,
175
+ updateNode,
176
+ wrapTreeNode
53
177
  };
package/dist/index.js CHANGED
@@ -80,9 +80,9 @@ import { default as default71 } from "./components/TextArea/TextArea.js";
80
80
  import { Toolbar } from "./components/Toolbar/Toolbar.js";
81
81
  import { default as default72 } from "./components/Tooltip/Tooltip.js";
82
82
  import { useTreeSortable } from "./components/Tree/hooks/useTreeSortable.js";
83
- import { buildTree, determineNewParentId, findItemIndexInTree, flattenTree, generateUpdateData, getActiveAndOverNodes, getDragDepth, getIndicesToUpdate, getProjection, updateParentIds } from "./components/Tree/utilities/tree-sortable.js";
84
- import { TreeNode } from "./components/TreeView/TreeNode.js";
85
83
  import { useTreeView } from "./components/TreeView/hooks/useTreeView.js";
84
+ import { TreeNode } from "./components/TreeView/TreeNode.js";
85
+ import { TreeNodeFolderWrapper, addNode, arrayUnique, deleteNode, findNodeById, findParentNode, findPathById, findTreeNode, getAncestors, hasChildren, modifyNode, moveNode, updateNode, wrapTreeNode } from "./components/TreeView/utilities/treeview.js";
86
86
  import { default as default73 } from "./components/VisuallyHidden/VisuallyHidden.js";
87
87
  import { useCheckable } from "./hooks/useCheckable/useCheckable.js";
88
88
  import { default as default74 } from "./hooks/useHasWorkflow/useHasWorkflow.js";
@@ -153,21 +153,24 @@ export {
153
153
  default72 as Tooltip,
154
154
  default24 as Tree,
155
155
  TreeNode,
156
+ TreeNodeFolderWrapper,
156
157
  default25 as TreeView,
157
158
  default73 as VisuallyHidden,
158
- buildTree,
159
+ addNode,
160
+ arrayUnique,
159
161
  checkUserRight,
160
- determineNewParentId,
161
- findItemIndexInTree,
162
- flattenTree,
163
- generateUpdateData,
164
- getActiveAndOverNodes,
165
- getDragDepth,
166
- getIndicesToUpdate,
167
- getProjection,
162
+ deleteNode,
163
+ findNodeById,
164
+ findParentNode,
165
+ findPathById,
166
+ findTreeNode,
167
+ getAncestors,
168
+ hasChildren,
168
169
  mergeRefs,
170
+ modifyNode,
171
+ moveNode,
169
172
  setRef,
170
- updateParentIds,
173
+ updateNode,
171
174
  default26 as useAvatar,
172
175
  default27 as useBookmark,
173
176
  default28 as useBreakpoint,
@@ -212,5 +215,6 @@ export {
212
215
  default55 as useWorkspaceFile,
213
216
  default56 as useWorkspaceSearch,
214
217
  default57 as useXitiTrackPageLoad,
215
- default58 as useZendeskGuide
218
+ default58 as useZendeskGuide,
219
+ wrapTreeNode
216
220
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.0.0-develop-rc.15",
3
+ "version": "2.0.0-develop-rc.19",
4
4
  "description": "Edifice React Library",
5
5
  "keywords": [
6
6
  "react",
@@ -119,9 +119,8 @@
119
119
  "react-slugify": "^3.0.3",
120
120
  "swiper": "^10.1.0",
121
121
  "ua-parser-js": "^1.0.36",
122
- "@edifice.io/bootstrap": "2.0.0-develop-rc.15",
123
- "@edifice.io/utilities": "2.0.0-develop-rc.15",
124
- "@edifice.io/tiptap-extensions": "2.0.0-develop-rc.15"
122
+ "@edifice.io/tiptap-extensions": "2.0.0-develop-rc.19",
123
+ "@edifice.io/utilities": "2.0.0-develop-rc.19"
125
124
  },
126
125
  "devDependencies": {
127
126
  "@babel/plugin-transform-react-pure-annotations": "^7.23.3",
@@ -142,7 +141,7 @@
142
141
  "rollup-plugin-visualizer": "5.12.0",
143
142
  "vite": "^5.4.11",
144
143
  "vite-plugin-dts": "^4.1.0",
145
- "@edifice.io/ts-client": "2.0.0-develop-rc.15"
144
+ "@edifice.io/ts-client": "2.0.0-develop-rc.19"
146
145
  },
147
146
  "peerDependencies": {
148
147
  "@react-spring/web": "^9.7.5",