@sanity/hierarchical-document-list 0.1.1 → 1.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 (57) hide show
  1. package/README.md +55 -19
  2. package/lib/TreeDeskStructure.d.ts +2 -1
  3. package/lib/TreeDeskStructure.js +46 -21
  4. package/lib/TreeInputComponent.d.ts +1 -1
  5. package/lib/TreeInputComponent.js +39 -8
  6. package/lib/components/DeskWarning.d.ts +1 -1
  7. package/lib/components/DeskWarning.js +28 -7
  8. package/lib/components/DocumentInNode.d.ts +1 -1
  9. package/lib/components/DocumentInNode.js +42 -18
  10. package/lib/components/DocumentPreviewStatus.d.ts +1 -1
  11. package/lib/components/DocumentPreviewStatus.js +16 -12
  12. package/lib/components/NodeActions.d.ts +1 -1
  13. package/lib/components/NodeActions.js +34 -10
  14. package/lib/components/NodeContentRenderer.js +43 -19
  15. package/lib/components/PlaceholderDropzone.d.ts +1 -1
  16. package/lib/components/PlaceholderDropzone.js +7 -5
  17. package/lib/components/TreeEditor.d.ts +1 -1
  18. package/lib/components/TreeEditor.js +28 -23
  19. package/lib/components/TreeEditorErrorBoundary.d.ts +1 -1
  20. package/lib/components/TreeEditorErrorBoundary.js +28 -7
  21. package/lib/components/TreeNodeRenderer.js +30 -6
  22. package/lib/components/TreeNodeRendererScaffold.d.ts +1 -1
  23. package/lib/components/TreeNodeRendererScaffold.js +9 -7
  24. package/lib/createDeskHierarchy.js +37 -19
  25. package/lib/createHierarchicalSchemas.d.ts +78 -0
  26. package/lib/createHierarchicalSchemas.js +138 -0
  27. package/lib/{utils → hooks}/useAllItems.d.ts +0 -0
  28. package/lib/{utils → hooks}/useAllItems.js +34 -9
  29. package/lib/{utils → hooks}/useLocalTree.d.ts +0 -0
  30. package/lib/{utils → hooks}/useLocalTree.js +26 -4
  31. package/lib/{utils → hooks}/useTreeOperations.d.ts +1 -1
  32. package/lib/hooks/useTreeOperations.js +39 -0
  33. package/lib/{utils → hooks}/useTreeOperationsProvider.d.ts +1 -1
  34. package/lib/hooks/useTreeOperationsProvider.js +85 -0
  35. package/lib/index.d.ts +1 -1
  36. package/lib/index.js +12 -3
  37. package/lib/schemas/hierarchy.tree.d.ts +5 -15
  38. package/lib/schemas/hierarchy.tree.js +10 -22
  39. package/lib/utils/flatDataToTree.js +6 -3
  40. package/lib/utils/getAdjescentNodes.js +4 -1
  41. package/lib/utils/getCommonTreeProps.js +16 -10
  42. package/lib/utils/getTreeHeight.js +9 -5
  43. package/lib/utils/gradientPatchAdapter.js +12 -5
  44. package/lib/utils/idUtils.js +7 -2
  45. package/lib/utils/injectNodeTypeInPatches.d.ts +12 -0
  46. package/lib/utils/injectNodeTypeInPatches.js +58 -0
  47. package/lib/utils/moveItemInArray.js +4 -1
  48. package/lib/utils/throwError.d.ts +7 -0
  49. package/lib/utils/throwError.js +12 -0
  50. package/lib/utils/treeData.js +27 -15
  51. package/lib/utils/treePatches.js +51 -21
  52. package/package.json +1 -2
  53. package/tsconfig.json +3 -3
  54. package/lib/createHierarchicalField.d.ts +0 -8
  55. package/lib/createHierarchicalField.js +0 -51
  56. package/lib/utils/useTreeOperations.js +0 -16
  57. package/lib/utils/useTreeOperationsProvider.js +0 -60
@@ -0,0 +1,138 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.createHierarchicalField = void 0;
29
+ var TreeDeskStructure_1 = require("./TreeDeskStructure");
30
+ var TreeInputComponent_1 = __importDefault(require("./TreeInputComponent"));
31
+ var injectNodeTypeInPatches_1 = require("./utils/injectNodeTypeInPatches");
32
+ var throwError_1 = __importDefault(require("./utils/throwError"));
33
+ function createHierarchicalNodeValueType(_a) {
34
+ var referenceTo = _a.referenceTo, referenceOptions = _a.referenceOptions, documentType = _a.documentType;
35
+ return {
36
+ // when used inside the field, name & type are overwritten by createHierarchicalNodeType
37
+ name: documentType ? (0, injectNodeTypeInPatches_1.getSchemaTypeName)(documentType, 'nodeValue') : injectNodeTypeInPatches_1.INTERNAL_NODE_VALUE_TYPE,
38
+ type: 'object',
39
+ title: "Hierarchical node value (".concat(documentType, ")"),
40
+ fields: [
41
+ { name: 'docType', type: 'string' },
42
+ {
43
+ name: 'reference',
44
+ type: 'reference',
45
+ weak: true,
46
+ to: referenceTo.map(function (type) { return ({ type: type }); }),
47
+ options: referenceOptions
48
+ }
49
+ ]
50
+ };
51
+ }
52
+ function createHierarchicalNodeType(options) {
53
+ return {
54
+ // name & type are overwritten by createHierarchicalField
55
+ name: options.documentType
56
+ ? (0, injectNodeTypeInPatches_1.getSchemaTypeName)(options.documentType, 'node')
57
+ : injectNodeTypeInPatches_1.INTERNAL_NODE_TYPE,
58
+ title: "Hierarchical node (".concat(options.documentType, ")"),
59
+ type: 'object',
60
+ fields: [
61
+ { name: 'parent', type: 'string' },
62
+ options.documentType
63
+ ? { name: 'value', type: (0, injectNodeTypeInPatches_1.getSchemaTypeName)(options.documentType, 'nodeValue') }
64
+ : // If no documentType is defined, use an anonymized inline object to avoid
65
+ __assign(__assign({}, createHierarchicalNodeValueType(options)), { name: 'value', type: 'object' })
66
+ ]
67
+ };
68
+ }
69
+ function createHierarchicalArrayType(options) {
70
+ return {
71
+ // name & type are overwritten by createHierarchicalField
72
+ name: options.documentType
73
+ ? (0, injectNodeTypeInPatches_1.getSchemaTypeName)(options.documentType, 'array')
74
+ : injectNodeTypeInPatches_1.INTERNAL_NODE_ARRAY_TYPE,
75
+ title: "Hierarchical array of nodes (".concat(options.documentType, ")"),
76
+ type: 'array',
77
+ of: [
78
+ options.documentType
79
+ ? { type: (0, injectNodeTypeInPatches_1.getSchemaTypeName)(options.documentType, 'node') }
80
+ : createHierarchicalNodeType(options)
81
+ ]
82
+ };
83
+ }
84
+ function createHierarchicalField(_a) {
85
+ var name = _a.name, title = _a.title, options = _a.options, rest = __rest(_a, ["name", "title", "options"]);
86
+ if (!Array.isArray(options === null || options === void 0 ? void 0 : options.referenceTo)) {
87
+ (0, throwError_1.default)('invalidReferenceTo', "(field of name \"".concat(name, "\")"));
88
+ }
89
+ return __assign(__assign(__assign({}, rest), { name: name, title: title, inputComponent: TreeInputComponent_1.default, options: options }), (options.documentType
90
+ ? { type: (0, injectNodeTypeInPatches_1.getSchemaTypeName)(options.documentType, 'array') }
91
+ : __assign(__assign({}, createHierarchicalArrayType(options)), { name: name })));
92
+ }
93
+ exports.createHierarchicalField = createHierarchicalField;
94
+ function createHierarchicalDocType(options) {
95
+ return {
96
+ name: options.documentType,
97
+ title: 'Hierarchical tree',
98
+ type: 'document',
99
+ // The plugin needs to define a `schemaType` with liveEdit enabled so that
100
+ // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.
101
+ liveEdit: true,
102
+ fields: [
103
+ createHierarchicalField({
104
+ name: options.fieldKeyInDocument || TreeDeskStructure_1.DEFAULT_FIELD_KEY,
105
+ title: 'Hierarchical Tree',
106
+ options: options
107
+ })
108
+ ],
109
+ preview: {
110
+ select: {
111
+ id: '_id',
112
+ tree: 'tree'
113
+ },
114
+ prepare: function (_a) {
115
+ var id = _a.id, tree = _a.tree;
116
+ return {
117
+ title: "Hierarchical documents (ID: ".concat(id, ")"),
118
+ subtitle: "".concat((tree === null || tree === void 0 ? void 0 : tree.length) || 0, " document(s) in its list.")
119
+ };
120
+ }
121
+ }
122
+ };
123
+ }
124
+ function createHierarchicalSchemas(options) {
125
+ if (!Array.isArray(options.referenceTo) || options.referenceTo.length <= 0) {
126
+ (0, throwError_1.default)('invalidReferenceTo');
127
+ }
128
+ if (!options.documentType) {
129
+ (0, throwError_1.default)('invalidDocumentType');
130
+ }
131
+ return [
132
+ createHierarchicalDocType(options),
133
+ createHierarchicalArrayType(options),
134
+ createHierarchicalNodeType(options),
135
+ createHierarchicalNodeValueType(options)
136
+ ];
137
+ }
138
+ exports.default = createHierarchicalSchemas;
File without changes
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -9,10 +10,33 @@ var __assign = (this && this.__assign) || function () {
9
10
  };
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
- import sanityClient from 'part:@sanity/base/client';
13
- import React from 'react';
14
- import { isDraft, unprefixId } from './idUtils';
15
- var client = sanityClient.withConfig({
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({
16
40
  apiVersion: '2021-09-01'
17
41
  });
18
42
  function getDeskFilter(_a) {
@@ -29,8 +53,8 @@ function getDeskFilter(_a) {
29
53
  function updateItemInState(state, item) {
30
54
  var _a;
31
55
  var newState = __assign({}, state);
32
- var publishedId = unprefixId(item._id);
33
- newState[publishedId] = __assign(__assign({}, (newState[publishedId] || {})), (_a = {}, _a[isDraft(item._id) ? 'draft' : 'published'] = item, _a));
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));
34
58
  return newState;
35
59
  }
36
60
  function allItemsReducer(state, action) {
@@ -40,8 +64,8 @@ function allItemsReducer(state, action) {
40
64
  return updateItemInState(state, action.item);
41
65
  }
42
66
  if (action.type === 'removeItem') {
43
- var publishedId = unprefixId(action.itemId);
44
- return __assign(__assign({}, state), (_a = {}, _a[publishedId] = isDraft(action.itemId)
67
+ var publishedId = (0, idUtils_1.unprefixId)(action.itemId);
68
+ return __assign(__assign({}, state), (_a = {}, _a[publishedId] = (0, idUtils_1.isDraft)(action.itemId)
45
69
  ? // If a draft, keep only published
46
70
  {
47
71
  published: (_c = state[publishedId]) === null || _c === void 0 ? void 0 : _c.published
@@ -55,7 +79,7 @@ function allItemsReducer(state, action) {
55
79
  }
56
80
  return state;
57
81
  }
58
- export default function useAllItems(options) {
82
+ function useAllItems(options) {
59
83
  var _a = React.useState('loading'), status = _a[0], setStatus = _a[1];
60
84
  var _b = React.useReducer(allItemsReducer, {}), allItems = _b[0], dispatch = _b[1];
61
85
  function handleListener(event) {
@@ -92,3 +116,4 @@ export default function useAllItems(options) {
92
116
  allItems: allItems
93
117
  };
94
118
  }
119
+ exports.default = useAllItems;
File without changes
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -9,8 +10,28 @@ var __assign = (this && this.__assign) || function () {
9
10
  };
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
- import React from 'react';
13
- import { dataToEditorTree } from './treeData';
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");
14
35
  /**
15
36
  * Enhances tree data with information on:
16
37
  * - `expanded` - native property of react-sortable-tree to determine collapsing & expanding of a node's children
@@ -19,7 +40,7 @@ import { dataToEditorTree } from './treeData';
19
40
  * Doesn't modify the main tree or has side-effects on data.
20
41
  * Has the added benefit of being local to the user, so external changes won't affect local visibility.
21
42
  */
22
- export default function useLocalTree(_a) {
43
+ function useLocalTree(_a) {
23
44
  var tree = _a.tree, allItems = _a.allItems;
24
45
  var _b = React.useState({}), visibilityMap = _b[0], setVisibilityMap = _b[1];
25
46
  function handleVisibilityToggle(data) {
@@ -27,7 +48,7 @@ export default function useLocalTree(_a) {
27
48
  setVisibilityMap(__assign(__assign({}, visibilityMap), (_a = {}, _a[data.node._key] = data.expanded, _a)));
28
49
  }
29
50
  return {
30
- localTree: dataToEditorTree({
51
+ localTree: (0, treeData_1.dataToEditorTree)({
31
52
  tree: tree,
32
53
  allItems: allItems,
33
54
  visibilityMap: visibilityMap
@@ -35,3 +56,4 @@ export default function useLocalTree(_a) {
35
56
  handleVisibilityToggle: handleVisibilityToggle
36
57
  };
37
58
  }
59
+ exports.default = useLocalTree;
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import * as React from 'react';
2
2
  import useAllItems from './useAllItems';
3
3
  import useTreeOperationsProvider from './useTreeOperationsProvider';
4
4
  declare type ContextValue = ReturnType<typeof useTreeOperationsProvider> & {
@@ -0,0 +1,39 @@
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,5 +1,5 @@
1
1
  import { LocalTreeItem, NodeProps } from '../types';
2
- import { HandleMovedNode } from './treePatches';
2
+ import { HandleMovedNode } from '../utils/treePatches';
3
3
  export default function useTreeOperationsProvider(props: {
4
4
  patchPrefix?: string;
5
5
  onChange: (patch: unknown) => void;
@@ -0,0 +1,85 @@
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 CHANGED
@@ -1,3 +1,3 @@
1
- export { default as createHierarchicalField } from './createHierarchicalField';
1
+ export { default as createHierarchicalSchemas } from './createHierarchicalSchemas';
2
2
  export { default as createDeskHierarchy } from './createDeskHierarchy';
3
3
  export { default as flatDataToTree } from './utils/flatDataToTree';
package/lib/index.js CHANGED
@@ -1,3 +1,12 @@
1
- export { default as createHierarchicalField } from './createHierarchicalField';
2
- export { default as createDeskHierarchy } from './createDeskHierarchy';
3
- export { default as flatDataToTree } from './utils/flatDataToTree';
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,23 +1,13 @@
1
- /// <reference types="react" />
2
1
  declare const _default: {
3
2
  name: string;
4
3
  title: string;
5
4
  type: string;
6
5
  liveEdit: boolean;
7
- fields: (Omit<import("@sanity/types/dist/dts").ArraySchemaType<unknown>, "type" | "of" | "jsonType"> & {
6
+ fields: {
7
+ name: string;
8
+ title: string;
8
9
  type: string;
9
- inputComponent: import("react").FC<any>;
10
- of: any[];
11
- })[];
12
- preview: {
13
- select: {
14
- id: string;
15
- tree: string;
16
- };
17
- prepare({ id, tree }: {
18
- id: string;
19
- tree: unknown[];
20
- }): Record<string, string>;
21
- };
10
+ hidden: boolean;
11
+ }[];
22
12
  };
23
13
  export default _default;
@@ -1,31 +1,19 @@
1
- import createHierarchicalField from '../createHierarchicalField';
2
- export default {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
3
4
  name: 'hierarchy.tree',
4
5
  title: 'Hierarchical tree',
5
6
  type: 'document',
6
7
  // The plugin needs to define a `schemaType` with liveEdit enabled so that
7
8
  // `useDocumentOperation` in TreeDeskStructure.tsx doesn't create drafts at every patch.
8
9
  liveEdit: true,
10
+ // Let's avoid defining the actual hierarchical field, else GraphQL users won't be able to deploy schemas
9
11
  fields: [
10
- createHierarchicalField({
11
- name: 'tree',
12
- title: 'Tree',
13
- options: {
14
- referenceTo: ['image']
15
- }
16
- })
17
- ],
18
- preview: {
19
- select: {
20
- id: '_id',
21
- tree: 'tree'
22
- },
23
- prepare: function (_a) {
24
- var id = _a.id, tree = _a.tree;
25
- return {
26
- title: "Hierarchical documents (ID: ".concat(id, ")"),
27
- subtitle: "".concat((tree === null || tree === void 0 ? void 0 : tree.length) || 0, " document(s) in its list.")
28
- };
12
+ {
13
+ name: 'unusedField',
14
+ title: 'Unused field',
15
+ type: 'string',
16
+ hidden: true
29
17
  }
30
- }
18
+ ]
31
19
  };
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -9,9 +10,10 @@ var __assign = (this && this.__assign) || function () {
9
10
  };
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
- import { getTreeFromFlatData } from 'react-sortable-tree';
13
- export default function flatDataToTree(data) {
14
- return getTreeFromFlatData({
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)({
15
17
  flatData: data.map(function (item) { return (__assign(__assign({}, item), {
16
18
  // if parent: undefined, the tree won't be constructed
17
19
  parent: item.parent || null })); }),
@@ -21,3 +23,4 @@ export default function flatDataToTree(data) {
21
23
  rootKey: null
22
24
  });
23
25
  }
26
+ exports.default = flatDataToTree;
@@ -1,7 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
1
3
  /**
2
4
  * Gets adjescent non-children nodes of a given treeIndex.
3
5
  */
4
- export default function getAdjescentNodes(_a) {
6
+ function getAdjescentNodes(_a) {
5
7
  var flatTree = _a.flatTree, node = _a.node, treeIndex = _a.treeIndex;
6
8
  var leadingNode = flatTree
7
9
  .slice(0, treeIndex)
@@ -14,3 +16,4 @@ export default function getAdjescentNodes(_a) {
14
16
  followingNode: followingNode
15
17
  };
16
18
  }
19
+ exports.default = getAdjescentNodes;
@@ -1,3 +1,4 @@
1
+ "use strict";
1
2
  var __assign = (this && this.__assign) || function () {
2
3
  __assign = Object.assign || function(t) {
3
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -9,19 +10,24 @@ var __assign = (this && this.__assign) || function () {
9
10
  };
10
11
  return __assign.apply(this, arguments);
11
12
  };
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import NodeContentRenderer from '../components/NodeContentRenderer';
14
- import PlaceholderDropzone from '../components/PlaceholderDropzone';
15
- import TreeNodeRenderer from '../components/TreeNodeRenderer';
16
- import { ROW_HEIGHT } from './getTreeHeight';
17
- export default function getCommonTreeProps(_a) {
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) {
18
23
  var placeholder = _a.placeholder;
19
24
  return {
20
25
  theme: {
21
- nodeContentRenderer: NodeContentRenderer,
22
- placeholderRenderer: function (props) { return _jsx(PlaceholderDropzone, __assign({}, placeholder, props), void 0); },
23
- treeNodeRenderer: TreeNodeRenderer,
24
- rowHeight: ROW_HEIGHT
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
25
30
  }
26
31
  };
27
32
  }
33
+ exports.default = getCommonTreeProps;
@@ -1,7 +1,11 @@
1
- import { getVisibleNodeCount } from 'react-sortable-tree';
2
- export var ROW_HEIGHT = 51;
3
- export default function getTreeHeight(treeData) {
4
- var visibleNodeCount = getVisibleNodeCount({ treeData: treeData });
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 });
5
8
  // prettier-ignore
6
- return "".concat(50 + (ROW_HEIGHT * visibleNodeCount), "px");
9
+ return "".concat(50 + (exports.ROW_HEIGHT * visibleNodeCount), "px");
7
10
  }
11
+ exports.default = getTreeHeight;
@@ -1,12 +1,19 @@
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;
1
7
  // Adapted from @sanity/form-builder/src/sanity/utils/gradientPatchAdapter.ts
2
- import assert from 'assert';
3
- import { arrayToJSONMatchPath } from '@sanity/mutator';
4
- export function toGradient(patches) {
8
+ var assert_1 = __importDefault(require("assert"));
9
+ var mutator_1 = require("@sanity/mutator");
10
+ function toGradient(patches) {
5
11
  return patches.map(toGradientPatch);
6
12
  }
13
+ exports.toGradient = toGradient;
7
14
  function toGradientPatch(patch) {
8
15
  var _a, _b, _c, _d;
9
- var matchPath = arrayToJSONMatchPath(patch.path || []);
16
+ var matchPath = (0, mutator_1.arrayToJSONMatchPath)(patch.path || []);
10
17
  if (patch.type === 'insert') {
11
18
  var position = patch.position, items = patch.items;
12
19
  return {
@@ -21,7 +28,7 @@ function toGradientPatch(patch) {
21
28
  unset: [matchPath]
22
29
  };
23
30
  }
24
- assert(patch.type, "Missing patch type in patch ".concat(JSON.stringify(patch)));
31
+ (0, assert_1.default)(patch.type, "Missing patch type in patch ".concat(JSON.stringify(patch)));
25
32
  if (matchPath) {
26
33
  return _b = {},
27
34
  _b[patch.type] = (_c = {},