@sanity/hierarchical-document-list 1.0.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 (106) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +365 -297
  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 +94 -55
  9. package/sanity.json +8 -12
  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/src/components/TreeEditorErrorBoundary.tsx +14 -0
  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/lib/TreeDeskStructure.d.ts +0 -8
  44. package/lib/TreeDeskStructure.js +0 -96
  45. package/lib/TreeInputComponent.d.ts +0 -19
  46. package/lib/TreeInputComponent.js +0 -52
  47. package/lib/components/DeskWarning.d.ts +0 -6
  48. package/lib/components/DeskWarning.js +0 -46
  49. package/lib/components/DocumentInNode.d.ts +0 -11
  50. package/lib/components/DocumentInNode.js +0 -82
  51. package/lib/components/DocumentPreviewStatus.d.ts +0 -7
  52. package/lib/components/DocumentPreviewStatus.js +0 -39
  53. package/lib/components/NodeActions.d.ts +0 -10
  54. package/lib/components/NodeActions.js +0 -61
  55. package/lib/components/NodeContentRenderer.d.ts +0 -8
  56. package/lib/components/NodeContentRenderer.js +0 -105
  57. package/lib/components/PlaceholderDropzone.d.ts +0 -9
  58. package/lib/components/PlaceholderDropzone.js +0 -30
  59. package/lib/components/TreeEditor.d.ts +0 -12
  60. package/lib/components/TreeEditor.js +0 -59
  61. package/lib/components/TreeEditorErrorBoundary.d.ts +0 -3
  62. package/lib/components/TreeEditorErrorBoundary.js +0 -59
  63. package/lib/components/TreeNodeRenderer.d.ts +0 -3
  64. package/lib/components/TreeNodeRenderer.js +0 -59
  65. package/lib/components/TreeNodeRendererScaffold.d.ts +0 -4
  66. package/lib/components/TreeNodeRendererScaffold.js +0 -44
  67. package/lib/createDeskHierarchy.d.ts +0 -14
  68. package/lib/createDeskHierarchy.js +0 -85
  69. package/lib/createHierarchicalSchemas.d.ts +0 -78
  70. package/lib/createHierarchicalSchemas.js +0 -138
  71. package/lib/hooks/useAllItems.d.ts +0 -7
  72. package/lib/hooks/useAllItems.js +0 -119
  73. package/lib/hooks/useLocalTree.d.ts +0 -17
  74. package/lib/hooks/useLocalTree.js +0 -59
  75. package/lib/hooks/useTreeOperations.d.ts +0 -9
  76. package/lib/hooks/useTreeOperations.js +0 -39
  77. package/lib/hooks/useTreeOperationsProvider.d.ts +0 -14
  78. package/lib/hooks/useTreeOperationsProvider.js +0 -85
  79. package/lib/index.d.ts +0 -3
  80. package/lib/index.js +0 -12
  81. package/lib/schemas/hierarchy.tree.d.ts +0 -13
  82. package/lib/schemas/hierarchy.tree.js +0 -19
  83. package/lib/utils/flatDataToTree.d.ts +0 -6
  84. package/lib/utils/flatDataToTree.js +0 -26
  85. package/lib/utils/getAdjescentNodes.d.ts +0 -12
  86. package/lib/utils/getAdjescentNodes.js +0 -19
  87. package/lib/utils/getCommonTreeProps.d.ts +0 -7
  88. package/lib/utils/getCommonTreeProps.js +0 -33
  89. package/lib/utils/getTreeHeight.d.ts +0 -3
  90. package/lib/utils/getTreeHeight.js +0 -11
  91. package/lib/utils/gradientPatchAdapter.d.ts +0 -4
  92. package/lib/utils/gradientPatchAdapter.js +0 -42
  93. package/lib/utils/idUtils.d.ts +0 -2
  94. package/lib/utils/idUtils.js +0 -13
  95. package/lib/utils/injectNodeTypeInPatches.d.ts +0 -12
  96. package/lib/utils/injectNodeTypeInPatches.js +0 -58
  97. package/lib/utils/moveItemInArray.d.ts +0 -5
  98. package/lib/utils/moveItemInArray.js +0 -26
  99. package/lib/utils/throwError.d.ts +0 -7
  100. package/lib/utils/throwError.js +0 -12
  101. package/lib/utils/treeData.d.ts +0 -18
  102. package/lib/utils/treeData.js +0 -118
  103. package/lib/utils/treePatches.d.ts +0 -15
  104. package/lib/utils/treePatches.js +0 -171
  105. package/screenshot-1.jpg +0 -0
  106. package/tsconfig.json +0 -20
@@ -1,119 +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 __importDefault = (this && this.__importDefault) || function (mod) {
33
- return (mod && mod.__esModule) ? mod : { "default": mod };
34
- };
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- var client_1 = __importDefault(require("part:@sanity/base/client"));
37
- var React = __importStar(require("react"));
38
- var idUtils_1 = require("../utils/idUtils");
39
- var client = client_1.default.withConfig({
40
- apiVersion: '2021-09-01'
41
- });
42
- function getDeskFilter(_a) {
43
- var referenceTo = _a.referenceTo, referenceOptions = _a.referenceOptions;
44
- var filterParts = ['_type in $docTypes'];
45
- if (referenceOptions === null || referenceOptions === void 0 ? void 0 : referenceOptions.filter) {
46
- filterParts.push(referenceOptions.filter);
47
- }
48
- return {
49
- filter: filterParts.join(' && '),
50
- params: __assign(__assign({}, ((referenceOptions === null || referenceOptions === void 0 ? void 0 : referenceOptions.filterParams) || {})), { docTypes: referenceTo.map(function (schemaType) { return schemaType; }) })
51
- };
52
- }
53
- function updateItemInState(state, item) {
54
- var _a;
55
- var newState = __assign({}, state);
56
- var publishedId = (0, idUtils_1.unprefixId)(item._id);
57
- newState[publishedId] = __assign(__assign({}, (newState[publishedId] || {})), (_a = {}, _a[(0, idUtils_1.isDraft)(item._id) ? 'draft' : 'published'] = item, _a));
58
- return newState;
59
- }
60
- function allItemsReducer(state, action) {
61
- var _a;
62
- var _b, _c, _d;
63
- if (action.type === 'addOrEditItem' && ((_b = action.item) === null || _b === void 0 ? void 0 : _b._id)) {
64
- return updateItemInState(state, action.item);
65
- }
66
- if (action.type === 'removeItem') {
67
- var publishedId = (0, idUtils_1.unprefixId)(action.itemId);
68
- return __assign(__assign({}, state), (_a = {}, _a[publishedId] = (0, idUtils_1.isDraft)(action.itemId)
69
- ? // If a draft, keep only published
70
- {
71
- published: (_c = state[publishedId]) === null || _c === void 0 ? void 0 : _c.published
72
- }
73
- : {
74
- draft: (_d = state[publishedId]) === null || _d === void 0 ? void 0 : _d.draft
75
- }, _a));
76
- }
77
- if (action.type === 'setInitialData') {
78
- return action.items.reduce(updateItemInState, {});
79
- }
80
- return state;
81
- }
82
- function useAllItems(options) {
83
- var _a = React.useState('loading'), status = _a[0], setStatus = _a[1];
84
- var _b = React.useReducer(allItemsReducer, {}), allItems = _b[0], dispatch = _b[1];
85
- function handleListener(event) {
86
- if (event.type !== 'mutation') {
87
- return;
88
- }
89
- if (event.result) {
90
- dispatch({ type: 'addOrEditItem', item: event.result });
91
- }
92
- else {
93
- dispatch({ type: 'removeItem', itemId: event.documentId });
94
- }
95
- }
96
- function handleFirstLoad(items) {
97
- dispatch({ type: 'setInitialData', items: items });
98
- setStatus('success');
99
- }
100
- React.useEffect(function () {
101
- var _a = getDeskFilter(options), filter = _a.filter, params = _a.params;
102
- var query = "*[".concat(filter, "] {\n _id,\n _type,\n _updatedAt,\n }");
103
- client
104
- .fetch(query, params)
105
- .then(handleFirstLoad)
106
- .catch(function () {
107
- setStatus('error');
108
- });
109
- var listener = client.listen(query, params).subscribe(handleListener);
110
- return function () {
111
- listener.unsubscribe();
112
- };
113
- }, []);
114
- return {
115
- status: status,
116
- allItems: allItems
117
- };
118
- }
119
- exports.default = useAllItems;
@@ -1,17 +0,0 @@
1
- import { OnVisibilityToggleData } from 'react-sortable-tree';
2
- import { AllItems, LocalTreeItem, StoredTreeItem } from '../types';
3
- /**
4
- * Enhances tree data with information on:
5
- * - `expanded` - native property of react-sortable-tree to determine collapsing & expanding of a node's children
6
- * - `draftId` & `publishedId` - refer to LocalTreeItem's type annotations
7
- *
8
- * Doesn't modify the main tree or has side-effects on data.
9
- * Has the added benefit of being local to the user, so external changes won't affect local visibility.
10
- */
11
- export default function useLocalTree({ tree, allItems }: {
12
- tree: StoredTreeItem[];
13
- allItems: AllItems;
14
- }): {
15
- handleVisibilityToggle: (data: OnVisibilityToggleData) => void;
16
- localTree: LocalTreeItem[];
17
- };
@@ -1,59 +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
- Object.defineProperty(exports, "__esModule", { value: true });
33
- var React = __importStar(require("react"));
34
- var treeData_1 = require("../utils/treeData");
35
- /**
36
- * Enhances tree data with information on:
37
- * - `expanded` - native property of react-sortable-tree to determine collapsing & expanding of a node's children
38
- * - `draftId` & `publishedId` - refer to LocalTreeItem's type annotations
39
- *
40
- * Doesn't modify the main tree or has side-effects on data.
41
- * Has the added benefit of being local to the user, so external changes won't affect local visibility.
42
- */
43
- function useLocalTree(_a) {
44
- var tree = _a.tree, allItems = _a.allItems;
45
- var _b = React.useState({}), visibilityMap = _b[0], setVisibilityMap = _b[1];
46
- function handleVisibilityToggle(data) {
47
- var _a;
48
- setVisibilityMap(__assign(__assign({}, visibilityMap), (_a = {}, _a[data.node._key] = data.expanded, _a)));
49
- }
50
- return {
51
- localTree: (0, treeData_1.dataToEditorTree)({
52
- tree: tree,
53
- allItems: allItems,
54
- visibilityMap: visibilityMap
55
- }),
56
- handleVisibilityToggle: handleVisibilityToggle
57
- };
58
- }
59
- exports.default = useLocalTree;
@@ -1,9 +0,0 @@
1
- import * as React from 'react';
2
- import useAllItems from './useAllItems';
3
- import useTreeOperationsProvider from './useTreeOperationsProvider';
4
- declare type ContextValue = ReturnType<typeof useTreeOperationsProvider> & {
5
- allItemsStatus: ReturnType<typeof useAllItems>['status'];
6
- };
7
- export declare const TreeOperationsContext: React.Context<ContextValue>;
8
- export default function useTreeOperations(): ContextValue;
9
- export {};
@@ -1,39 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.TreeOperationsContext = void 0;
23
- var React = __importStar(require("react"));
24
- function placeholder() {
25
- // no-op
26
- }
27
- exports.TreeOperationsContext = React.createContext({
28
- addItem: placeholder,
29
- duplicateItem: placeholder,
30
- removeItem: placeholder,
31
- handleMovedNode: placeholder,
32
- moveItemDown: placeholder,
33
- moveItemUp: placeholder,
34
- allItemsStatus: 'loading'
35
- });
36
- function useTreeOperations() {
37
- return React.useContext(exports.TreeOperationsContext);
38
- }
39
- exports.default = useTreeOperations;
@@ -1,14 +0,0 @@
1
- import { LocalTreeItem, NodeProps } from '../types';
2
- import { HandleMovedNode } from '../utils/treePatches';
3
- export default function useTreeOperationsProvider(props: {
4
- patchPrefix?: string;
5
- onChange: (patch: unknown) => void;
6
- localTree: LocalTreeItem[];
7
- }): {
8
- handleMovedNode: HandleMovedNode;
9
- addItem: (item: LocalTreeItem) => void;
10
- duplicateItem: (nodeProps: NodeProps) => void;
11
- removeItem: (nodeProps: NodeProps) => void;
12
- moveItemUp: (nodeProps: NodeProps) => void;
13
- moveItemDown: (nodeProps: NodeProps) => void;
14
- };
@@ -1,85 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
22
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
23
- if (ar || !(i in from)) {
24
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
25
- ar[i] = from[i];
26
- }
27
- }
28
- return to.concat(ar || Array.prototype.slice.call(from));
29
- };
30
- var __importDefault = (this && this.__importDefault) || function (mod) {
31
- return (mod && mod.__esModule) ? mod : { "default": mod };
32
- };
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- var Patch = __importStar(require("@sanity/form-builder/lib/patch/patches"));
35
- var PatchEvent_1 = __importDefault(require("@sanity/form-builder/PatchEvent"));
36
- var treePatches_1 = require("../utils/treePatches");
37
- function useTreeOperationsProvider(props) {
38
- var localTree = props.localTree;
39
- function runPatches(patches) {
40
- var finalPatches = __spreadArray([
41
- // Ensure tree array exists before any operation
42
- Patch.setIfMissing([])
43
- ], (patches || []), true);
44
- var patchEvent = PatchEvent_1.default.from(finalPatches);
45
- if (props.patchPrefix) {
46
- patchEvent = PatchEvent_1.default.from(finalPatches.map(function (patch) { return Patch.prefixPath(patch, props.patchPrefix); }));
47
- }
48
- props.onChange(patchEvent);
49
- }
50
- function handleMovedNode(data) {
51
- runPatches((0, treePatches_1.getMovedNodePatch)(data));
52
- }
53
- function addItem(item) {
54
- runPatches((0, treePatches_1.getAddItemPatch)(item));
55
- }
56
- function duplicateItem(nodeProps) {
57
- runPatches((0, treePatches_1.getDuplicateItemPatch)(nodeProps));
58
- }
59
- function removeItem(nodeProps) {
60
- runPatches((0, treePatches_1.getRemoveItemPatch)(nodeProps));
61
- }
62
- function moveItemUp(nodeProps) {
63
- runPatches((0, treePatches_1.getMoveItemPatch)({
64
- nodeProps: nodeProps,
65
- localTree: localTree,
66
- direction: 'up'
67
- }));
68
- }
69
- function moveItemDown(nodeProps) {
70
- runPatches((0, treePatches_1.getMoveItemPatch)({
71
- nodeProps: nodeProps,
72
- localTree: localTree,
73
- direction: 'down'
74
- }));
75
- }
76
- return {
77
- handleMovedNode: handleMovedNode,
78
- addItem: addItem,
79
- removeItem: removeItem,
80
- moveItemUp: moveItemUp,
81
- moveItemDown: moveItemDown,
82
- duplicateItem: duplicateItem
83
- };
84
- }
85
- exports.default = useTreeOperationsProvider;
package/lib/index.d.ts DELETED
@@ -1,3 +0,0 @@
1
- export { default as createHierarchicalSchemas } from './createHierarchicalSchemas';
2
- export { default as createDeskHierarchy } from './createDeskHierarchy';
3
- export { default as flatDataToTree } from './utils/flatDataToTree';
package/lib/index.js DELETED
@@ -1,12 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.flatDataToTree = exports.createDeskHierarchy = exports.createHierarchicalSchemas = void 0;
7
- var createHierarchicalSchemas_1 = require("./createHierarchicalSchemas");
8
- Object.defineProperty(exports, "createHierarchicalSchemas", { enumerable: true, get: function () { return __importDefault(createHierarchicalSchemas_1).default; } });
9
- var createDeskHierarchy_1 = require("./createDeskHierarchy");
10
- Object.defineProperty(exports, "createDeskHierarchy", { enumerable: true, get: function () { return __importDefault(createDeskHierarchy_1).default; } });
11
- var flatDataToTree_1 = require("./utils/flatDataToTree");
12
- Object.defineProperty(exports, "flatDataToTree", { enumerable: true, get: function () { return __importDefault(flatDataToTree_1).default; } });
@@ -1,13 +0,0 @@
1
- declare const _default: {
2
- name: string;
3
- title: string;
4
- type: string;
5
- liveEdit: boolean;
6
- fields: {
7
- name: string;
8
- title: string;
9
- type: string;
10
- hidden: boolean;
11
- }[];
12
- };
13
- export default _default;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = {
4
- name: 'hierarchy.tree',
5
- title: 'Hierarchical tree',
6
- type: 'document',
7
- // The plugin needs to define a `schemaType` with liveEdit enabled so that
8
- // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.
9
- liveEdit: true,
10
- // Let's avoid defining the actual hierarchical field, else GraphQL users won't be able to deploy schemas
11
- fields: [
12
- {
13
- name: 'unusedField',
14
- title: 'Unused field',
15
- type: 'string',
16
- hidden: true
17
- }
18
- ]
19
- };
@@ -1,6 +0,0 @@
1
- import { StoredTreeItem } from '../types';
2
- interface TreeItemWithChildren extends StoredTreeItem {
3
- children?: TreeItemWithChildren[];
4
- }
5
- export default function flatDataToTree(data: StoredTreeItem[]): TreeItemWithChildren[];
6
- export {};
@@ -1,26 +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
- Object.defineProperty(exports, "__esModule", { value: true });
14
- var react_sortable_tree_1 = require("react-sortable-tree");
15
- function flatDataToTree(data) {
16
- return (0, react_sortable_tree_1.getTreeFromFlatData)({
17
- flatData: data.map(function (item) { return (__assign(__assign({}, item), {
18
- // if parent: undefined, the tree won't be constructed
19
- parent: item.parent || null })); }),
20
- getKey: function (item) { return item._key; },
21
- getParentKey: function (item) { return item.parent; },
22
- // without rootKey, the tree won't be constructed
23
- rootKey: null
24
- });
25
- }
26
- exports.default = flatDataToTree;
@@ -1,12 +0,0 @@
1
- import { FlatDataItem, TreeItem } from 'react-sortable-tree';
2
- /**
3
- * Gets adjescent non-children nodes of a given treeIndex.
4
- */
5
- export default function getAdjescentNodes({ flatTree, node, treeIndex }: {
6
- flatTree: FlatDataItem[];
7
- node: TreeItem;
8
- treeIndex: number;
9
- }): {
10
- leadingNode?: FlatDataItem;
11
- followingNode?: FlatDataItem;
12
- };
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Gets adjescent non-children nodes of a given treeIndex.
5
- */
6
- function getAdjescentNodes(_a) {
7
- var flatTree = _a.flatTree, node = _a.node, treeIndex = _a.treeIndex;
8
- var leadingNode = flatTree
9
- .slice(0, treeIndex)
10
- .reverse()
11
- // Disregard children nodes - these include the current node's key in their `path` array
12
- .find(function (item) { return !item.path.includes(node._key); });
13
- var followingNode = flatTree.slice(treeIndex + 1).find(function (item) { return !item.path.includes(node._key); });
14
- return {
15
- leadingNode: leadingNode,
16
- followingNode: followingNode
17
- };
18
- }
19
- exports.default = getAdjescentNodes;
@@ -1,7 +0,0 @@
1
- import { ReactSortableTreeProps } from 'react-sortable-tree';
2
- export default function getCommonTreeProps({ placeholder }: {
3
- placeholder: {
4
- title: string;
5
- subtitle?: string;
6
- };
7
- }): Partial<ReactSortableTreeProps>;
@@ -1,33 +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 __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- var jsx_runtime_1 = require("react/jsx-runtime");
18
- var NodeContentRenderer_1 = __importDefault(require("../components/NodeContentRenderer"));
19
- var PlaceholderDropzone_1 = __importDefault(require("../components/PlaceholderDropzone"));
20
- var TreeNodeRenderer_1 = __importDefault(require("../components/TreeNodeRenderer"));
21
- var getTreeHeight_1 = require("./getTreeHeight");
22
- function getCommonTreeProps(_a) {
23
- var placeholder = _a.placeholder;
24
- return {
25
- theme: {
26
- nodeContentRenderer: NodeContentRenderer_1.default,
27
- placeholderRenderer: function (props) { return (0, jsx_runtime_1.jsx)(PlaceholderDropzone_1.default, __assign({}, placeholder, props), void 0); },
28
- treeNodeRenderer: TreeNodeRenderer_1.default,
29
- rowHeight: getTreeHeight_1.ROW_HEIGHT
30
- }
31
- };
32
- }
33
- exports.default = getCommonTreeProps;
@@ -1,3 +0,0 @@
1
- import { TreeItem } from 'react-sortable-tree';
2
- export declare const ROW_HEIGHT = 51;
3
- export default function getTreeHeight(treeData: TreeItem[]): string;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ROW_HEIGHT = void 0;
4
- var react_sortable_tree_1 = require("react-sortable-tree");
5
- exports.ROW_HEIGHT = 51;
6
- function getTreeHeight(treeData) {
7
- var visibleNodeCount = (0, react_sortable_tree_1.getVisibleNodeCount)({ treeData: treeData });
8
- // prettier-ignore
9
- return "".concat(50 + (exports.ROW_HEIGHT * visibleNodeCount), "px");
10
- }
11
- exports.default = getTreeHeight;
@@ -1,4 +0,0 @@
1
- declare type Patch = Record<string, any>;
2
- declare type GradientPatch = Record<string, any>;
3
- export declare function toGradient(patches: Patch[]): GradientPatch[];
4
- export {};
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.toGradient = void 0;
7
- // Adapted from @sanity/form-builder/src/sanity/utils/gradientPatchAdapter.ts
8
- var assert_1 = __importDefault(require("assert"));
9
- var mutator_1 = require("@sanity/mutator");
10
- function toGradient(patches) {
11
- return patches.map(toGradientPatch);
12
- }
13
- exports.toGradient = toGradient;
14
- function toGradientPatch(patch) {
15
- var _a, _b, _c, _d;
16
- var matchPath = (0, mutator_1.arrayToJSONMatchPath)(patch.path || []);
17
- if (patch.type === 'insert') {
18
- var position = patch.position, items = patch.items;
19
- return {
20
- insert: (_a = {},
21
- _a[position] = matchPath,
22
- _a.items = items,
23
- _a)
24
- };
25
- }
26
- if (patch.type === 'unset') {
27
- return {
28
- unset: [matchPath]
29
- };
30
- }
31
- (0, assert_1.default)(patch.type, "Missing patch type in patch ".concat(JSON.stringify(patch)));
32
- if (matchPath) {
33
- return _b = {},
34
- _b[patch.type] = (_c = {},
35
- _c[matchPath] = patch.value,
36
- _c),
37
- _b;
38
- }
39
- return _d = {},
40
- _d[patch.type] = patch.value,
41
- _d;
42
- }
@@ -1,2 +0,0 @@
1
- export declare function unprefixId(_id?: string): string;
2
- export declare function isDraft(_id?: string): boolean;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDraft = exports.unprefixId = void 0;
4
- function unprefixId(_id) {
5
- if (_id === void 0) { _id = ''; }
6
- return _id.replace('drafts.', '');
7
- }
8
- exports.unprefixId = unprefixId;
9
- function isDraft(_id) {
10
- if (_id === void 0) { _id = ''; }
11
- return _id.startsWith('drafts.');
12
- }
13
- exports.isDraft = isDraft;
@@ -1,12 +0,0 @@
1
- export declare function getSchemaTypeName(documentType: string, type: 'document' | 'node' | 'nodeValue' | 'array'): string;
2
- /**
3
- * Temporary value of nodes' `_type` before they are normalized and persisted as the user-defined choice.
4
- */
5
- export declare const DEFAULT_DOC_TYPE = "hierarchy.tree";
6
- export declare const INTERNAL_NODE_TYPE: string;
7
- export declare const INTERNAL_NODE_VALUE_TYPE: string;
8
- export declare const INTERNAL_NODE_ARRAY_TYPE: string;
9
- /**
10
- * Barebones recursive utility to inject the desired nodeObjectType in patches generated in deeply nested components and utilities.
11
- */
12
- export default function injectNodeTypeInPatches(patchData: any, documentType: string): any;