@sanity/hierarchical-document-list 1.0.0 → 1.1.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/.husky/commit-msg +4 -0
- package/.husky/pre-commit +4 -0
- package/.idea/hierarchical-document-list.iml +11 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +7 -0
- package/.idea/vcs.xml +6 -0
- package/CHANGELOG.md +15 -0
- package/README.md +329 -297
- package/commitlint.config.js +3 -0
- package/lib/TreeDeskStructure.d.ts +8 -8
- package/lib/TreeDeskStructure.js +96 -96
- package/lib/TreeInputComponent.d.ts +19 -19
- package/lib/TreeInputComponent.js +50 -52
- package/lib/components/DeskWarning.d.ts +6 -6
- package/lib/components/DeskWarning.js +46 -46
- package/lib/components/DocumentInNode.d.ts +11 -11
- package/lib/components/DocumentInNode.js +81 -82
- package/lib/components/DocumentPreviewStatus.d.ts +7 -7
- package/lib/components/DocumentPreviewStatus.js +39 -39
- package/lib/components/NodeActions.d.ts +10 -10
- package/lib/components/NodeActions.js +61 -61
- package/lib/components/NodeContentRenderer.d.ts +8 -8
- package/lib/components/NodeContentRenderer.js +105 -105
- package/lib/components/PlaceholderDropzone.d.ts +9 -9
- package/lib/components/PlaceholderDropzone.js +30 -30
- package/lib/components/SuppressedDnDManager.d.ts +2 -0
- package/lib/components/SuppressedDnDManager.js +59 -0
- package/lib/components/TreeEditor.d.ts +12 -12
- package/lib/components/TreeEditor.js +74 -59
- package/lib/components/TreeEditorErrorBoundary.d.ts +16 -3
- package/lib/components/TreeEditorErrorBoundary.js +74 -59
- package/lib/components/TreeNodeRenderer.d.ts +3 -3
- package/lib/components/TreeNodeRenderer.js +59 -59
- package/lib/components/TreeNodeRendererScaffold.d.ts +4 -4
- package/lib/components/TreeNodeRendererScaffold.js +44 -44
- package/lib/createDeskHierarchy.d.ts +14 -14
- package/lib/createDeskHierarchy.js +84 -85
- package/lib/createHierarchicalSchemas.d.ts +98 -78
- package/lib/createHierarchicalSchemas.js +138 -138
- package/lib/hooks/useAllItems.d.ts +7 -7
- package/lib/hooks/useAllItems.js +119 -119
- package/lib/hooks/useLocalTree.d.ts +17 -17
- package/lib/hooks/useLocalTree.js +59 -59
- package/lib/hooks/useTreeOperations.d.ts +9 -9
- package/lib/hooks/useTreeOperations.js +39 -39
- package/lib/hooks/useTreeOperationsProvider.d.ts +14 -14
- package/lib/hooks/useTreeOperationsProvider.js +85 -85
- package/lib/index.d.ts +3 -3
- package/lib/index.js +12 -12
- package/lib/schemas/hierarchy.tree.d.ts +13 -13
- package/lib/schemas/hierarchy.tree.js +19 -19
- package/lib/types.d.ts +128 -0
- package/lib/types.js +2 -0
- package/lib/utils/flatDataToTree.d.ts +6 -6
- package/lib/utils/flatDataToTree.js +26 -26
- package/lib/utils/getAdjescentNodes.d.ts +12 -12
- package/lib/utils/getAdjescentNodes.js +19 -19
- package/lib/utils/getCommonTreeProps.d.ts +7 -7
- package/lib/utils/getCommonTreeProps.js +33 -33
- package/lib/utils/getTreeHeight.d.ts +3 -3
- package/lib/utils/getTreeHeight.js +11 -11
- package/lib/utils/gradientPatchAdapter.d.ts +4 -4
- package/lib/utils/gradientPatchAdapter.js +40 -42
- package/lib/utils/idUtils.d.ts +2 -2
- package/lib/utils/idUtils.js +13 -13
- package/lib/utils/injectNodeTypeInPatches.d.ts +12 -12
- package/lib/utils/injectNodeTypeInPatches.js +59 -58
- package/lib/utils/moveItemInArray.d.ts +5 -5
- package/lib/utils/moveItemInArray.js +26 -26
- package/lib/utils/throwError.d.ts +7 -7
- package/lib/utils/throwError.js +12 -12
- package/lib/utils/treeData.d.ts +18 -18
- package/lib/utils/treeData.js +118 -118
- package/lib/utils/treePatches.d.ts +15 -15
- package/lib/utils/treePatches.js +171 -171
- package/lint-staged.config.js +4 -0
- package/package.json +65 -55
- package/sanity.json +12 -12
- package/tsconfig.json +20 -20
package/lib/utils/treeData.js
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
25
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
26
|
-
if (ar || !(i in from)) {
|
|
27
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
28
|
-
ar[i] = from[i];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
32
|
-
};
|
|
33
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
34
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
35
|
-
};
|
|
36
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
exports.normalizeNodeForStorage = exports.getUnaddedItems = exports.flatTree = exports.dataToEditorTree = void 0;
|
|
38
|
-
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
-
var content_1 = require("@sanity/util/content");
|
|
40
|
-
var DocumentInNode_1 = __importDefault(require("../components/DocumentInNode"));
|
|
41
|
-
var NodeActions_1 = __importDefault(require("../components/NodeActions"));
|
|
42
|
-
var flatDataToTree_1 = __importDefault(require("./flatDataToTree"));
|
|
43
|
-
var injectNodeTypeInPatches_1 = require("./injectNodeTypeInPatches");
|
|
44
|
-
var dataToEditorTree = function (_a) {
|
|
45
|
-
var tree = _a.tree, allItems = _a.allItems, visibilityMap = _a.visibilityMap;
|
|
46
|
-
var itemsWithTitle = tree
|
|
47
|
-
.filter(function (item) { var _a, _b; return (_b = (_a = item === null || item === void 0 ? void 0 : item.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref; })
|
|
48
|
-
.map(function (item) {
|
|
49
|
-
var _a, _b;
|
|
50
|
-
var refId = (_b = (_a = item.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref;
|
|
51
|
-
var docPair = refId ? allItems[refId] : undefined;
|
|
52
|
-
var draftDoc = docPair === null || docPair === void 0 ? void 0 : docPair.draft;
|
|
53
|
-
var publishedDoc = docPair === null || docPair === void 0 ? void 0 : docPair.published;
|
|
54
|
-
var enhancedItem = __assign(__assign({}, item), { expanded: visibilityMap[item._key] !== false, draftId: draftDoc === null || draftDoc === void 0 ? void 0 : draftDoc._id, publishedId: publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._id, draftUpdatedAt: draftDoc === null || draftDoc === void 0 ? void 0 : draftDoc._updatedAt, publishedUpdatedAt: publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._updatedAt });
|
|
55
|
-
return __assign(__assign({}, enhancedItem), { title: function (nodeProps) { return ((0, jsx_runtime_1.jsx)(DocumentInNode_1.default, { item: enhancedItem, action: (0, jsx_runtime_1.jsx)(NodeActions_1.default, { nodeProps: nodeProps }, void 0) }, void 0)); }, children: [] });
|
|
56
|
-
});
|
|
57
|
-
return (0, flatDataToTree_1.default)(itemsWithTitle);
|
|
58
|
-
};
|
|
59
|
-
exports.dataToEditorTree = dataToEditorTree;
|
|
60
|
-
var documentPairToNode = function (doc) {
|
|
61
|
-
var _a, _b, _c, _d;
|
|
62
|
-
if (!((_a = doc === null || doc === void 0 ? void 0 : doc.published) === null || _a === void 0 ? void 0 : _a._id)) {
|
|
63
|
-
return undefined;
|
|
64
|
-
}
|
|
65
|
-
return {
|
|
66
|
-
_key: (0, content_1.randomKey)(12),
|
|
67
|
-
_type: injectNodeTypeInPatches_1.INTERNAL_NODE_TYPE,
|
|
68
|
-
draftId: (_b = doc.draft) === null || _b === void 0 ? void 0 : _b._id,
|
|
69
|
-
draftUpdatedAt: (_c = doc.draft) === null || _c === void 0 ? void 0 : _c._updatedAt,
|
|
70
|
-
publishedId: doc.published._id,
|
|
71
|
-
publishedUpdatedAt: (_d = doc.published) === null || _d === void 0 ? void 0 : _d._updatedAt,
|
|
72
|
-
value: {
|
|
73
|
-
_type: injectNodeTypeInPatches_1.INTERNAL_NODE_VALUE_TYPE,
|
|
74
|
-
reference: {
|
|
75
|
-
_ref: doc.published._id,
|
|
76
|
-
_type: 'reference',
|
|
77
|
-
_weak: true
|
|
78
|
-
},
|
|
79
|
-
docType: doc.published._type
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
var flatTree = function (tree) {
|
|
84
|
-
return tree.reduce(function (flattened, item) {
|
|
85
|
-
var children = item.children, node = __rest(item, ["children"]);
|
|
86
|
-
return __spreadArray(__spreadArray(__spreadArray([], flattened, true), [node], false), (Array.isArray(children) ? (0, exports.flatTree)(children) : []), true);
|
|
87
|
-
}, []);
|
|
88
|
-
};
|
|
89
|
-
exports.flatTree = flatTree;
|
|
90
|
-
var getUnaddedItems = function (data) {
|
|
91
|
-
if (!data.tree) {
|
|
92
|
-
return Object.entries(data.allItems)
|
|
93
|
-
.map(function (value) { return documentPairToNode(value[1]); })
|
|
94
|
-
.filter(Boolean);
|
|
95
|
-
}
|
|
96
|
-
return Object.entries(data.allItems)
|
|
97
|
-
.filter(function (_a) {
|
|
98
|
-
var publishedId = _a[0];
|
|
99
|
-
return publishedId &&
|
|
100
|
-
// unadded items shouldn't be in the tree
|
|
101
|
-
!data.tree.some(function (treeItem) { var _a, _b; return ((_b = (_a = treeItem === null || treeItem === void 0 ? void 0 : treeItem.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref) === publishedId; });
|
|
102
|
-
})
|
|
103
|
-
.map(function (_a) {
|
|
104
|
-
var
|
|
105
|
-
return documentPairToNode(documentPair);
|
|
106
|
-
})
|
|
107
|
-
.filter(Boolean);
|
|
108
|
-
};
|
|
109
|
-
exports.getUnaddedItems = getUnaddedItems;
|
|
110
|
-
function normalizeNodeForStorage(item) {
|
|
111
|
-
return {
|
|
112
|
-
_key: item._key,
|
|
113
|
-
_type: item._type || injectNodeTypeInPatches_1.INTERNAL_NODE_TYPE,
|
|
114
|
-
value: item.value,
|
|
115
|
-
parent: item.parent
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
exports.normalizeNodeForStorage = normalizeNodeForStorage;
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
25
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
26
|
+
if (ar || !(i in from)) {
|
|
27
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
28
|
+
ar[i] = from[i];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
32
|
+
};
|
|
33
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
34
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.normalizeNodeForStorage = exports.getUnaddedItems = exports.flatTree = exports.dataToEditorTree = void 0;
|
|
38
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
39
|
+
var content_1 = require("@sanity/util/content");
|
|
40
|
+
var DocumentInNode_1 = __importDefault(require("../components/DocumentInNode"));
|
|
41
|
+
var NodeActions_1 = __importDefault(require("../components/NodeActions"));
|
|
42
|
+
var flatDataToTree_1 = __importDefault(require("./flatDataToTree"));
|
|
43
|
+
var injectNodeTypeInPatches_1 = require("./injectNodeTypeInPatches");
|
|
44
|
+
var dataToEditorTree = function (_a) {
|
|
45
|
+
var tree = _a.tree, allItems = _a.allItems, visibilityMap = _a.visibilityMap;
|
|
46
|
+
var itemsWithTitle = tree
|
|
47
|
+
.filter(function (item) { var _a, _b; return (_b = (_a = item === null || item === void 0 ? void 0 : item.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref; })
|
|
48
|
+
.map(function (item) {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
var refId = (_b = (_a = item.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref;
|
|
51
|
+
var docPair = refId ? allItems[refId] : undefined;
|
|
52
|
+
var draftDoc = docPair === null || docPair === void 0 ? void 0 : docPair.draft;
|
|
53
|
+
var publishedDoc = docPair === null || docPair === void 0 ? void 0 : docPair.published;
|
|
54
|
+
var enhancedItem = __assign(__assign({}, item), { expanded: visibilityMap[item._key] !== false, draftId: draftDoc === null || draftDoc === void 0 ? void 0 : draftDoc._id, publishedId: publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._id, draftUpdatedAt: draftDoc === null || draftDoc === void 0 ? void 0 : draftDoc._updatedAt, publishedUpdatedAt: publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc._updatedAt });
|
|
55
|
+
return __assign(__assign({}, enhancedItem), { title: function (nodeProps) { return ((0, jsx_runtime_1.jsx)(DocumentInNode_1.default, { item: enhancedItem, action: (0, jsx_runtime_1.jsx)(NodeActions_1.default, { nodeProps: nodeProps }, void 0) }, void 0)); }, children: [] });
|
|
56
|
+
});
|
|
57
|
+
return (0, flatDataToTree_1.default)(itemsWithTitle);
|
|
58
|
+
};
|
|
59
|
+
exports.dataToEditorTree = dataToEditorTree;
|
|
60
|
+
var documentPairToNode = function (doc) {
|
|
61
|
+
var _a, _b, _c, _d;
|
|
62
|
+
if (!((_a = doc === null || doc === void 0 ? void 0 : doc.published) === null || _a === void 0 ? void 0 : _a._id)) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
_key: (0, content_1.randomKey)(12),
|
|
67
|
+
_type: injectNodeTypeInPatches_1.INTERNAL_NODE_TYPE,
|
|
68
|
+
draftId: (_b = doc.draft) === null || _b === void 0 ? void 0 : _b._id,
|
|
69
|
+
draftUpdatedAt: (_c = doc.draft) === null || _c === void 0 ? void 0 : _c._updatedAt,
|
|
70
|
+
publishedId: doc.published._id,
|
|
71
|
+
publishedUpdatedAt: (_d = doc.published) === null || _d === void 0 ? void 0 : _d._updatedAt,
|
|
72
|
+
value: {
|
|
73
|
+
_type: injectNodeTypeInPatches_1.INTERNAL_NODE_VALUE_TYPE,
|
|
74
|
+
reference: {
|
|
75
|
+
_ref: doc.published._id,
|
|
76
|
+
_type: 'reference',
|
|
77
|
+
_weak: true
|
|
78
|
+
},
|
|
79
|
+
docType: doc.published._type
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
var flatTree = function (tree) {
|
|
84
|
+
return tree.reduce(function (flattened, item) {
|
|
85
|
+
var children = item.children, node = __rest(item, ["children"]);
|
|
86
|
+
return __spreadArray(__spreadArray(__spreadArray([], flattened, true), [node], false), (Array.isArray(children) ? (0, exports.flatTree)(children) : []), true);
|
|
87
|
+
}, []);
|
|
88
|
+
};
|
|
89
|
+
exports.flatTree = flatTree;
|
|
90
|
+
var getUnaddedItems = function (data) {
|
|
91
|
+
if (!data.tree) {
|
|
92
|
+
return Object.entries(data.allItems)
|
|
93
|
+
.map(function (value) { return documentPairToNode(value[1]); })
|
|
94
|
+
.filter(Boolean);
|
|
95
|
+
}
|
|
96
|
+
return Object.entries(data.allItems)
|
|
97
|
+
.filter(function (_a) {
|
|
98
|
+
var publishedId = _a[0];
|
|
99
|
+
return publishedId &&
|
|
100
|
+
// unadded items shouldn't be in the tree
|
|
101
|
+
!data.tree.some(function (treeItem) { var _a, _b; return ((_b = (_a = treeItem === null || treeItem === void 0 ? void 0 : treeItem.value) === null || _a === void 0 ? void 0 : _a.reference) === null || _b === void 0 ? void 0 : _b._ref) === publishedId; });
|
|
102
|
+
})
|
|
103
|
+
.map(function (_a) {
|
|
104
|
+
var documentPair = _a[1];
|
|
105
|
+
return documentPairToNode(documentPair);
|
|
106
|
+
})
|
|
107
|
+
.filter(Boolean);
|
|
108
|
+
};
|
|
109
|
+
exports.getUnaddedItems = getUnaddedItems;
|
|
110
|
+
function normalizeNodeForStorage(item) {
|
|
111
|
+
return {
|
|
112
|
+
_key: item._key,
|
|
113
|
+
_type: item._type || injectNodeTypeInPatches_1.INTERNAL_NODE_TYPE,
|
|
114
|
+
value: item.value,
|
|
115
|
+
parent: item.parent
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
exports.normalizeNodeForStorage = normalizeNodeForStorage;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { FullTree, NodeData, OnMovePreviousAndNextLocation, TreeItem } from 'react-sortable-tree';
|
|
2
|
-
import { LocalTreeItem, NodeProps } from '../types';
|
|
3
|
-
export declare type HandleMovedNodeData = Omit<NodeData & FullTree & OnMovePreviousAndNextLocation, 'prevPath' | 'prevTreeIndex' | 'path' | 'treeIndex' | 'node'> & {
|
|
4
|
-
node: LocalTreeItem;
|
|
5
|
-
};
|
|
6
|
-
export declare type HandleMovedNode = (moveData: HandleMovedNodeData) => void;
|
|
7
|
-
export declare function getAddItemPatch(item: LocalTreeItem): unknown[];
|
|
8
|
-
export declare function getDuplicateItemPatch(nodeProps: NodeProps): unknown[];
|
|
9
|
-
export declare function getRemoveItemPatch({ node }: Pick<NodeProps, 'node'>): unknown[];
|
|
10
|
-
export declare function getMovedNodePatch(data: HandleMovedNodeData): unknown[];
|
|
11
|
-
export declare function getMoveItemPatch({ nodeProps: { node, treeIndex }, localTree, direction }: {
|
|
12
|
-
nodeProps: NodeProps;
|
|
13
|
-
localTree: TreeItem[];
|
|
14
|
-
direction: 'up' | 'down';
|
|
15
|
-
}): unknown[];
|
|
1
|
+
import { FullTree, NodeData, OnMovePreviousAndNextLocation, TreeItem } from 'react-sortable-tree';
|
|
2
|
+
import { LocalTreeItem, NodeProps } from '../types';
|
|
3
|
+
export declare type HandleMovedNodeData = Omit<NodeData & FullTree & OnMovePreviousAndNextLocation, 'prevPath' | 'prevTreeIndex' | 'path' | 'treeIndex' | 'node'> & {
|
|
4
|
+
node: LocalTreeItem;
|
|
5
|
+
};
|
|
6
|
+
export declare type HandleMovedNode = (moveData: HandleMovedNodeData) => void;
|
|
7
|
+
export declare function getAddItemPatch(item: LocalTreeItem): unknown[];
|
|
8
|
+
export declare function getDuplicateItemPatch(nodeProps: NodeProps): unknown[];
|
|
9
|
+
export declare function getRemoveItemPatch({ node }: Pick<NodeProps, 'node'>): unknown[];
|
|
10
|
+
export declare function getMovedNodePatch(data: HandleMovedNodeData): unknown[];
|
|
11
|
+
export declare function getMoveItemPatch({ nodeProps: { node, treeIndex }, localTree, direction }: {
|
|
12
|
+
nodeProps: NodeProps;
|
|
13
|
+
localTree: TreeItem[];
|
|
14
|
+
direction: 'up' | 'down';
|
|
15
|
+
}): unknown[];
|
package/lib/utils/treePatches.js
CHANGED
|
@@ -1,171 +1,171 @@
|
|
|
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
|
+
"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;
|