@sanity/hierarchical-document-list 1.1.0 → 2.0.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.
Files changed (120) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +95 -59
  3. package/dist/index.d.ts +240 -0
  4. package/dist/index.esm.js +18 -0
  5. package/dist/index.esm.js.map +1 -0
  6. package/dist/index.js +18 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +80 -51
  9. package/sanity.json +2 -6
  10. package/src/TreeDeskStructure.tsx +80 -0
  11. package/src/TreeInputComponent.tsx +41 -0
  12. package/src/components/DeskWarning.tsx +40 -0
  13. package/src/components/DocumentInNode.tsx +133 -0
  14. package/src/components/DocumentPreviewStatus.tsx +70 -0
  15. package/src/components/NodeActions.tsx +85 -0
  16. package/src/components/NodeContentRenderer.tsx +141 -0
  17. package/src/components/PlaceholderDropzone.tsx +45 -0
  18. package/src/components/TreeEditor.tsx +167 -0
  19. package/{lib/components/TreeEditorErrorBoundary.d.ts → src/components/TreeEditorErrorBoundary.tsx} +2 -4
  20. package/src/components/TreeNodeRenderer.tsx +37 -0
  21. package/src/components/TreeNodeRendererScaffold.tsx +193 -0
  22. package/src/createDeskHierarchy.tsx +110 -0
  23. package/src/createHierarchicalSchemas.tsx +151 -0
  24. package/src/hooks/useAllItems.ts +119 -0
  25. package/src/hooks/useLocalTree.ts +40 -0
  26. package/src/hooks/useTreeOperations.ts +25 -0
  27. package/src/hooks/useTreeOperationsProvider.ts +86 -0
  28. package/src/index.ts +25 -0
  29. package/src/schemas/hierarchy.tree.ts +19 -0
  30. package/src/types.ts +148 -0
  31. package/src/utils/flatDataToTree.ts +20 -0
  32. package/src/utils/getAdjescentNodes.ts +30 -0
  33. package/src/utils/getCommonTreeProps.tsx +28 -0
  34. package/src/utils/getTreeHeight.ts +10 -0
  35. package/src/utils/gradientPatchAdapter.ts +43 -0
  36. package/src/utils/idUtils.ts +7 -0
  37. package/src/utils/injectNodeTypeInPatches.ts +60 -0
  38. package/src/utils/moveItemInArray.ts +26 -0
  39. package/src/utils/throwError.ts +9 -0
  40. package/src/utils/treeData.tsx +119 -0
  41. package/src/utils/treePatches.ts +171 -0
  42. package/v2-incompatible.js +11 -0
  43. package/.husky/commit-msg +0 -4
  44. package/.husky/pre-commit +0 -4
  45. package/.idea/hierarchical-document-list.iml +0 -11
  46. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  47. package/.idea/misc.xml +0 -6
  48. package/.idea/modules.xml +0 -8
  49. package/.idea/prettier.xml +0 -7
  50. package/.idea/vcs.xml +0 -6
  51. package/CHANGELOG.md +0 -15
  52. package/commitlint.config.js +0 -3
  53. package/lib/TreeDeskStructure.d.ts +0 -8
  54. package/lib/TreeDeskStructure.js +0 -96
  55. package/lib/TreeInputComponent.d.ts +0 -19
  56. package/lib/TreeInputComponent.js +0 -50
  57. package/lib/components/DeskWarning.d.ts +0 -6
  58. package/lib/components/DeskWarning.js +0 -46
  59. package/lib/components/DocumentInNode.d.ts +0 -11
  60. package/lib/components/DocumentInNode.js +0 -81
  61. package/lib/components/DocumentPreviewStatus.d.ts +0 -7
  62. package/lib/components/DocumentPreviewStatus.js +0 -39
  63. package/lib/components/NodeActions.d.ts +0 -10
  64. package/lib/components/NodeActions.js +0 -61
  65. package/lib/components/NodeContentRenderer.d.ts +0 -8
  66. package/lib/components/NodeContentRenderer.js +0 -105
  67. package/lib/components/PlaceholderDropzone.d.ts +0 -9
  68. package/lib/components/PlaceholderDropzone.js +0 -30
  69. package/lib/components/SuppressedDnDManager.d.ts +0 -2
  70. package/lib/components/SuppressedDnDManager.js +0 -59
  71. package/lib/components/TreeEditor.d.ts +0 -12
  72. package/lib/components/TreeEditor.js +0 -74
  73. package/lib/components/TreeEditorErrorBoundary.js +0 -74
  74. package/lib/components/TreeNodeRenderer.d.ts +0 -3
  75. package/lib/components/TreeNodeRenderer.js +0 -59
  76. package/lib/components/TreeNodeRendererScaffold.d.ts +0 -4
  77. package/lib/components/TreeNodeRendererScaffold.js +0 -44
  78. package/lib/createDeskHierarchy.d.ts +0 -14
  79. package/lib/createDeskHierarchy.js +0 -84
  80. package/lib/createHierarchicalSchemas.d.ts +0 -98
  81. package/lib/createHierarchicalSchemas.js +0 -138
  82. package/lib/hooks/useAllItems.d.ts +0 -7
  83. package/lib/hooks/useAllItems.js +0 -119
  84. package/lib/hooks/useLocalTree.d.ts +0 -17
  85. package/lib/hooks/useLocalTree.js +0 -59
  86. package/lib/hooks/useTreeOperations.d.ts +0 -9
  87. package/lib/hooks/useTreeOperations.js +0 -39
  88. package/lib/hooks/useTreeOperationsProvider.d.ts +0 -14
  89. package/lib/hooks/useTreeOperationsProvider.js +0 -85
  90. package/lib/index.d.ts +0 -3
  91. package/lib/index.js +0 -12
  92. package/lib/schemas/hierarchy.tree.d.ts +0 -13
  93. package/lib/schemas/hierarchy.tree.js +0 -19
  94. package/lib/types.d.ts +0 -128
  95. package/lib/types.js +0 -2
  96. package/lib/utils/flatDataToTree.d.ts +0 -6
  97. package/lib/utils/flatDataToTree.js +0 -26
  98. package/lib/utils/getAdjescentNodes.d.ts +0 -12
  99. package/lib/utils/getAdjescentNodes.js +0 -19
  100. package/lib/utils/getCommonTreeProps.d.ts +0 -7
  101. package/lib/utils/getCommonTreeProps.js +0 -33
  102. package/lib/utils/getTreeHeight.d.ts +0 -3
  103. package/lib/utils/getTreeHeight.js +0 -11
  104. package/lib/utils/gradientPatchAdapter.d.ts +0 -4
  105. package/lib/utils/gradientPatchAdapter.js +0 -40
  106. package/lib/utils/idUtils.d.ts +0 -2
  107. package/lib/utils/idUtils.js +0 -13
  108. package/lib/utils/injectNodeTypeInPatches.d.ts +0 -12
  109. package/lib/utils/injectNodeTypeInPatches.js +0 -59
  110. package/lib/utils/moveItemInArray.d.ts +0 -5
  111. package/lib/utils/moveItemInArray.js +0 -26
  112. package/lib/utils/throwError.d.ts +0 -7
  113. package/lib/utils/throwError.js +0 -12
  114. package/lib/utils/treeData.d.ts +0 -18
  115. package/lib/utils/treeData.js +0 -118
  116. package/lib/utils/treePatches.d.ts +0 -15
  117. package/lib/utils/treePatches.js +0 -171
  118. package/lint-staged.config.js +0 -4
  119. package/screenshot-1.jpg +0 -0
  120. package/tsconfig.json +0 -20
@@ -1,171 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
16
- }) : (function(o, m, k, k2) {
17
- if (k2 === undefined) k2 = k;
18
- o[k2] = m[k];
19
- }));
20
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
- Object.defineProperty(o, "default", { enumerable: true, value: v });
22
- }) : function(o, v) {
23
- o["default"] = v;
24
- });
25
- var __importStar = (this && this.__importStar) || function (mod) {
26
- if (mod && mod.__esModule) return mod;
27
- var result = {};
28
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
- __setModuleDefault(result, mod);
30
- return result;
31
- };
32
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
33
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
34
- if (ar || !(i in from)) {
35
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
36
- ar[i] = from[i];
37
- }
38
- }
39
- return to.concat(ar || Array.prototype.slice.call(from));
40
- };
41
- var __importDefault = (this && this.__importDefault) || function (mod) {
42
- return (mod && mod.__esModule) ? mod : { "default": mod };
43
- };
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.getMoveItemPatch = exports.getMovedNodePatch = exports.getRemoveItemPatch = exports.getDuplicateItemPatch = exports.getAddItemPatch = void 0;
46
- var Patch = __importStar(require("@sanity/form-builder/lib/patch/patches"));
47
- var content_1 = require("@sanity/util/content");
48
- var react_sortable_tree_1 = require("react-sortable-tree");
49
- var getAdjescentNodes_1 = __importDefault(require("./getAdjescentNodes"));
50
- var moveItemInArray_1 = __importDefault(require("./moveItemInArray"));
51
- var treeData_1 = require("./treeData");
52
- function getAddItemPatch(item) {
53
- var normalizedNode = (0, treeData_1.normalizeNodeForStorage)(item);
54
- return [
55
- // Add the node to the end of the tree
56
- Patch.insert([normalizedNode], 'after', [-1])
57
- ];
58
- }
59
- exports.getAddItemPatch = getAddItemPatch;
60
- function getDuplicateItemPatch(nodeProps) {
61
- var newItem = __assign(__assign({}, nodeProps.node), { _key: (0, content_1.randomKey)(12) });
62
- var normalizedNode = (0, treeData_1.normalizeNodeForStorage)(newItem);
63
- return [
64
- // Add duplicated node before the existing one
65
- Patch.insert([normalizedNode], 'before', [{ _key: nodeProps.node._key }])
66
- ];
67
- }
68
- exports.getDuplicateItemPatch = getDuplicateItemPatch;
69
- function getRemoveItemPatch(_a) {
70
- var node = _a.node;
71
- var keyPath = { _key: node._key };
72
- var children = getChildrenPaths(node);
73
- return __spreadArray([
74
- // 1. Unset the removed node
75
- Patch.unset([keyPath])
76
- ], children.map(function (path) { return Patch.unset([{ _key: path }]); }), true);
77
- }
78
- exports.getRemoveItemPatch = getRemoveItemPatch;
79
- function getMovedNodePatch(data) {
80
- var _a, _b;
81
- var nextParentNode = data.nextParentNode;
82
- var keyPath = { _key: data.node._key };
83
- // === REMOVING NODE FROM TREE ===
84
- // `nextPath` will be null if the item is removed from tree
85
- if (!Array.isArray(data.nextPath)) {
86
- return getRemoveItemPatch({ node: data.node });
87
- }
88
- var nextFlatTree = (0, react_sortable_tree_1.getFlatDataFromTree)({
89
- treeData: data.treeData,
90
- getNodeKey: function (t) { return t.node._key; }
91
- });
92
- var normalizedNode = (0, treeData_1.normalizeNodeForStorage)(data.node);
93
- var _c = (0, getAdjescentNodes_1.default)({
94
- flatTree: nextFlatTree,
95
- node: data.node,
96
- treeIndex: data.nextTreeIndex
97
- }), leadingNode = _c.leadingNode, followingNode = _c.followingNode;
98
- return [
99
- // 1. Unset the moved node
100
- // (will be ignored by Content Lake on new nodes with _key not yet in tree)
101
- Patch.unset([keyPath]),
102
- // 2. SIBLING-BASED PLACEMENT
103
- // If we were to place solely based on nextTreeIndex, concurrent changes from other editors could put the new node in an unexpected position.
104
- // Let's instead anchor it to the _key of the sibling coming before or after it.
105
- ((_a = leadingNode === null || leadingNode === void 0 ? void 0 : leadingNode.node) === null || _a === void 0 ? void 0 : _a._key)
106
- ? // After the sibling before it
107
- Patch.insert([normalizedNode], 'after', [{ _key: leadingNode.node._key }])
108
- : // Or before the sibling right after it, in case there's no leading sibling node
109
- // prettier-ignore
110
- Patch.insert([normalizedNode], 'before', [((_b = followingNode === null || followingNode === void 0 ? void 0 : followingNode.node) === null || _b === void 0 ? void 0 : _b._key) ? { _key: followingNode.node._key } : data.nextTreeIndex]),
111
- // 3. Patch the new node with its new `parent`
112
- nextParentNode
113
- ? // If it has a parent node, set that parent's _key
114
- Patch.set(nextParentNode._key, [keyPath, 'parent'])
115
- : // Else remove the parent key entirely
116
- Patch.unset([keyPath, 'parent'])
117
- ];
118
- }
119
- exports.getMovedNodePatch = getMovedNodePatch;
120
- function getChildrenPaths(node) {
121
- if (!Array.isArray(node.children)) {
122
- return [];
123
- }
124
- return node.children
125
- .reduce(function (keyPaths, child) { return __spreadArray(__spreadArray(__spreadArray([], keyPaths, true), [child._key], false), getChildrenPaths(child), true); }, [])
126
- .filter(Boolean);
127
- }
128
- function getMoveItemPatch(_a) {
129
- var _b, _c;
130
- var _d = _a.nodeProps, node = _d.node, treeIndex = _d.treeIndex, localTree = _a.localTree, _e = _a.direction, direction = _e === void 0 ? 'up' : _e;
131
- var keyPath = { _key: node._key };
132
- var nextTreeIndex = treeIndex + (direction === 'up' ? -1 : 1);
133
- var flatTree = (0, react_sortable_tree_1.getFlatDataFromTree)({
134
- treeData: localTree,
135
- getNodeKey: function (t) { return t.node._key; }
136
- });
137
- var nextFlatTree = (0, moveItemInArray_1.default)({
138
- array: flatTree,
139
- fromIndex: treeIndex,
140
- toIndex: nextTreeIndex
141
- });
142
- var _f = (0, getAdjescentNodes_1.default)({
143
- flatTree: nextFlatTree,
144
- node: node,
145
- treeIndex: nextTreeIndex
146
- }), leadingNode = _f.leadingNode, followingNode = _f.followingNode;
147
- var normalizedNode = (0, treeData_1.normalizeNodeForStorage)(node);
148
- // When moving up, look at following node to figure out what is the next parent.
149
- var nodeToInheritParent = direction === 'up' ? followingNode : leadingNode;
150
- var nextParentNode = nodeToInheritParent === null || nodeToInheritParent === void 0 ? void 0 : nodeToInheritParent.parentNode;
151
- return [
152
- // 1. Unset the moved node
153
- // (will be ignored by Content Lake on new nodes with _key not yet in tree)
154
- Patch.unset([keyPath]),
155
- // 2. SIBLING-BASED PLACEMENT
156
- ((_b = leadingNode === null || leadingNode === void 0 ? void 0 : leadingNode.node) === null || _b === void 0 ? void 0 : _b._key)
157
- ? // After the sibling before it
158
- Patch.insert([normalizedNode], 'after', [{ _key: leadingNode.node._key }])
159
- : // Or before the sibling right after it, in case there's no leading sibling node
160
- Patch.insert([normalizedNode], 'before', [
161
- ((_c = followingNode === null || followingNode === void 0 ? void 0 : followingNode.node) === null || _c === void 0 ? void 0 : _c._key) ? { _key: followingNode.node._key } : nextTreeIndex
162
- ]),
163
- // 3. Patch the new node with its new `parent`
164
- nextParentNode
165
- ? // If it has a parent node, set that parent's _key
166
- Patch.set(nextParentNode._key, [keyPath, 'parent'])
167
- : // Else remove the parent key entirely
168
- Patch.unset([keyPath, 'parent'])
169
- ];
170
- }
171
- exports.getMoveItemPatch = getMoveItemPatch;
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- '**/*.{js,jsx}': ['eslint'],
3
- '**/*.{ts,tsx}': ['eslint', () => 'tsc --noEmit'],
4
- }
package/screenshot-1.jpg DELETED
Binary file
package/tsconfig.json DELETED
@@ -1,20 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "es5",
4
- "useDefineForClassFields": true,
5
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
6
- "allowJs": false,
7
- "skipLibCheck": true,
8
- "esModuleInterop": true,
9
- "allowSyntheticDefaultImports": false,
10
- "strict": true,
11
- "forceConsistentCasingInFileNames": true,
12
- "module": "CommonJS",
13
- "moduleResolution": "Node",
14
- "resolveJsonModule": true,
15
- "isolatedModules": true,
16
- "jsx": "react-jsx",
17
- "outDir": "lib"
18
- },
19
- "include": ["./src"]
20
- }