@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
|
@@ -1,59 +1,74 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
for (var p in
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
30
|
+
if (mod && mod.__esModule) return mod;
|
|
31
|
+
var result = {};
|
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
33
|
+
__setModuleDefault(result, mod);
|
|
34
|
+
return result;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.TreeEditorErrorBoundary = void 0;
|
|
38
|
+
var React = __importStar(require("react"));
|
|
39
|
+
/**
|
|
40
|
+
* react-sortable-tree emits a lot of random errors when dragging to invalid states,
|
|
41
|
+
* even when drag-targets are disabled.
|
|
42
|
+
*
|
|
43
|
+
* This boundary is a workaround so users are not pestered with error-toasts for things
|
|
44
|
+
* that have no functional impact.
|
|
45
|
+
*
|
|
46
|
+
* This boundry does NOT handle errors that happen in the React dnd
|
|
47
|
+
* event handlers, so there is addtional workarounds in the
|
|
48
|
+
* DnDManager.
|
|
49
|
+
* */
|
|
50
|
+
var TreeEditorErrorBoundary = /** @class */ (function (_super) {
|
|
51
|
+
__extends(TreeEditorErrorBoundary, _super);
|
|
52
|
+
function TreeEditorErrorBoundary() {
|
|
53
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
54
|
+
}
|
|
55
|
+
// eslint-disable-next-line class-methods-use-this
|
|
56
|
+
Object.defineProperty(TreeEditorErrorBoundary.prototype, "componentDidCatch", {
|
|
57
|
+
enumerable: false,
|
|
58
|
+
configurable: true,
|
|
59
|
+
writable: true,
|
|
60
|
+
value: function () {
|
|
61
|
+
// do nothing
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
Object.defineProperty(TreeEditorErrorBoundary.prototype, "render", {
|
|
65
|
+
enumerable: false,
|
|
66
|
+
configurable: true,
|
|
67
|
+
writable: true,
|
|
68
|
+
value: function () {
|
|
69
|
+
return this.props.children;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return TreeEditorErrorBoundary;
|
|
73
|
+
}(React.Component));
|
|
74
|
+
exports.TreeEditorErrorBoundary = TreeEditorErrorBoundary;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { TreeRenderer } from 'react-sortable-tree';
|
|
2
|
-
declare const TreeNodeRenderer: TreeRenderer;
|
|
3
|
-
export default TreeNodeRenderer;
|
|
1
|
+
import { TreeRenderer } from 'react-sortable-tree';
|
|
2
|
+
declare const TreeNodeRenderer: TreeRenderer;
|
|
3
|
+
export default TreeNodeRenderer;
|
|
@@ -1,59 +1,59 @@
|
|
|
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 jsx_runtime_1 = require("react/jsx-runtime");
|
|
37
|
-
var React = __importStar(require("react"));
|
|
38
|
-
var TreeNodeRendererScaffold_1 = __importDefault(require("./TreeNodeRendererScaffold"));
|
|
39
|
-
/**
|
|
40
|
-
* To prevent expand buttons from overflowing on the left, we add a minimum left padding to all entries
|
|
41
|
-
*/
|
|
42
|
-
var BASE_LEFT_PADDING = 10;
|
|
43
|
-
var NESTING_PADDING = 14;
|
|
44
|
-
var TreeNodeRenderer = function (props) {
|
|
45
|
-
var children = props.children, lowerSiblingCounts = props.lowerSiblingCounts, connectDropTarget = props.connectDropTarget, isOver = props.isOver, draggedNode = props.draggedNode, canDrop = props.canDrop;
|
|
46
|
-
// Construct the scaffold representing the structure of the tree
|
|
47
|
-
var scaffoldBlockCount = lowerSiblingCounts.length;
|
|
48
|
-
return connectDropTarget((0, jsx_runtime_1.jsxs)("div", __assign({ style: props.style }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ style: {
|
|
49
|
-
// prettier-ignore
|
|
50
|
-
paddingLeft: "".concat(BASE_LEFT_PADDING + (NESTING_PADDING * scaffoldBlockCount), "px")
|
|
51
|
-
} }, { children: React.Children.map(children, function (child) {
|
|
52
|
-
return React.cloneElement(child, {
|
|
53
|
-
isOver: isOver,
|
|
54
|
-
canDrop: canDrop,
|
|
55
|
-
draggedNode: draggedNode
|
|
56
|
-
});
|
|
57
|
-
}) }), void 0), (0, jsx_runtime_1.jsx)(TreeNodeRendererScaffold_1.default, __assign({}, props), void 0)] }), void 0));
|
|
58
|
-
};
|
|
59
|
-
exports.default = TreeNodeRenderer;
|
|
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 jsx_runtime_1 = require("react/jsx-runtime");
|
|
37
|
+
var React = __importStar(require("react"));
|
|
38
|
+
var TreeNodeRendererScaffold_1 = __importDefault(require("./TreeNodeRendererScaffold"));
|
|
39
|
+
/**
|
|
40
|
+
* To prevent expand buttons from overflowing on the left, we add a minimum left padding to all entries
|
|
41
|
+
*/
|
|
42
|
+
var BASE_LEFT_PADDING = 10;
|
|
43
|
+
var NESTING_PADDING = 14;
|
|
44
|
+
var TreeNodeRenderer = function (props) {
|
|
45
|
+
var children = props.children, lowerSiblingCounts = props.lowerSiblingCounts, connectDropTarget = props.connectDropTarget, isOver = props.isOver, draggedNode = props.draggedNode, canDrop = props.canDrop;
|
|
46
|
+
// Construct the scaffold representing the structure of the tree
|
|
47
|
+
var scaffoldBlockCount = lowerSiblingCounts.length;
|
|
48
|
+
return connectDropTarget((0, jsx_runtime_1.jsxs)("div", __assign({ style: props.style }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ style: {
|
|
49
|
+
// prettier-ignore
|
|
50
|
+
paddingLeft: "".concat(BASE_LEFT_PADDING + (NESTING_PADDING * scaffoldBlockCount), "px")
|
|
51
|
+
} }, { children: React.Children.map(children, function (child) {
|
|
52
|
+
return React.cloneElement(child, {
|
|
53
|
+
isOver: isOver,
|
|
54
|
+
canDrop: canDrop,
|
|
55
|
+
draggedNode: draggedNode
|
|
56
|
+
});
|
|
57
|
+
}) }), void 0), (0, jsx_runtime_1.jsx)(TreeNodeRendererScaffold_1.default, __assign({}, props), void 0)] }), void 0));
|
|
58
|
+
};
|
|
59
|
+
exports.default = TreeNodeRenderer;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { TreeRendererProps } from 'react-sortable-tree';
|
|
3
|
-
declare const TreeNodeRendererScaffold: React.FC<TreeRendererProps>;
|
|
4
|
-
export default TreeNodeRendererScaffold;
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeRendererProps } from 'react-sortable-tree';
|
|
3
|
+
declare const TreeNodeRendererScaffold: React.FC<TreeRendererProps>;
|
|
4
|
+
export default TreeNodeRendererScaffold;
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
-
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
-
return cooked;
|
|
5
|
-
};
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
var color_1 = require("@sanity/color");
|
|
9
|
-
var styled_components_1 = require("styled-components");
|
|
10
|
-
// Adapted from react-sortable-tree/src/tree-node.js
|
|
11
|
-
var ScaffoldStyles = (0, styled_components_1.createGlobalStyle)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ", ";\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ", ";\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n"], ["\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ", ";\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ", ";\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n"])), color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex);
|
|
12
|
-
var TreeNodeRendererScaffold = function (props) {
|
|
13
|
-
var lowerSiblingCounts = props.lowerSiblingCounts, scaffoldBlockPxWidth = props.scaffoldBlockPxWidth, listIndex = props.listIndex, swapDepth = props.swapDepth, swapFrom = props.swapFrom, swapLength = props.swapLength, treeIndex = props.treeIndex;
|
|
14
|
-
// Construct the scaffold representing the structure of the tree
|
|
15
|
-
var scaffold = lowerSiblingCounts.map(function (lowerSiblingCount, i) {
|
|
16
|
-
if (lowerSiblingCount < 0 || treeIndex === listIndex || i !== swapDepth) {
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
// This row has been shifted, and is at the depth of
|
|
20
|
-
// the line pointing to the new destination
|
|
21
|
-
var highlightLineClass = '';
|
|
22
|
-
if (listIndex === (swapFrom || 0) + (swapLength || 0) - 1) {
|
|
23
|
-
// This block is on the bottom (target) line
|
|
24
|
-
// This block points at the target block (where the row will go when released)
|
|
25
|
-
highlightLineClass = 'rst__highlightBottomLeftCorner';
|
|
26
|
-
}
|
|
27
|
-
else if (treeIndex === swapFrom) {
|
|
28
|
-
// This block is on the top (source) line
|
|
29
|
-
highlightLineClass = 'rst__highlightTopLeftCorner';
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
// This block is between the bottom and top
|
|
33
|
-
highlightLineClass = 'rst__highlightLineVertical';
|
|
34
|
-
}
|
|
35
|
-
var style = {
|
|
36
|
-
width: scaffoldBlockPxWidth,
|
|
37
|
-
left: scaffoldBlockPxWidth * i
|
|
38
|
-
};
|
|
39
|
-
return ((0, jsx_runtime_1.jsx)("div", { style: style, className: "rst__unclickable rst__absoluteLineBlock ".concat(highlightLineClass || ''), tabIndex: -1 }, i));
|
|
40
|
-
});
|
|
41
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [scaffold, (0, jsx_runtime_1.jsx)(ScaffoldStyles, {}, void 0)] }, void 0));
|
|
42
|
-
};
|
|
43
|
-
exports.default = TreeNodeRendererScaffold;
|
|
44
|
-
var templateObject_1;
|
|
1
|
+
"use strict";
|
|
2
|
+
var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
|
|
3
|
+
if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
|
|
4
|
+
return cooked;
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
var color_1 = require("@sanity/color");
|
|
9
|
+
var styled_components_1 = require("styled-components");
|
|
10
|
+
// Adapted from react-sortable-tree/src/tree-node.js
|
|
11
|
+
var ScaffoldStyles = (0, styled_components_1.createGlobalStyle)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ", ";\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ", ";\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n"], ["\n .rst__lineBlock,\n .rst__absoluteLineBlock {\n height: 100%;\n position: relative;\n display: inline-block;\n --stroke-width: 3px;\n }\n\n .rst__absoluteLineBlock {\n position: absolute;\n top: 0;\n }\n\n /* Highlight line for pointing to dragged row destination\n ========================================================================== */\n /**\n * +--+--+\n * | | |\n * | | |\n * | | |\n * +--+--+\n */\n .rst__highlightLineVertical {\n z-index: 3;\n }\n .rst__highlightLineVertical::before {\n position: absolute;\n content: '';\n background-color: ", ";\n width: calc(var(--stroke-width) * 2);\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n height: 100%;\n }\n\n @keyframes arrow-pulse {\n 0% {\n transform: translate(0, 0);\n opacity: 0;\n }\n 30% {\n transform: translate(0, 300%);\n opacity: 1;\n }\n 70% {\n transform: translate(0, 700%);\n opacity: 1;\n }\n 100% {\n transform: translate(0, 1000%);\n opacity: 0;\n }\n }\n .rst__highlightLineVertical::after {\n content: '';\n position: absolute;\n height: 0;\n margin-left: calc(var(--stroke-width) * -1);\n left: 50%;\n top: 0;\n border-left: var(--stroke-width) solid transparent;\n border-right: var(--stroke-width) solid transparent;\n border-top: var(--stroke-width) solid white;\n animation: arrow-pulse 1s infinite linear both;\n }\n\n /**\n * +-----+\n * | |\n * | +--+\n * | | |\n * +--+--+\n */\n .rst__highlightTopLeftCorner::before {\n z-index: 3;\n content: '';\n position: absolute;\n border-top: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(50% + var(--stroke-width));\n top: 50%;\n margin-top: calc(var(--stroke-width) * -1);\n right: 0;\n width: calc(50% + var(--stroke-width));\n }\n\n /**\n * +--+--+\n * | | |\n * | | |\n * | +->|\n * +-----+\n */\n .rst__highlightBottomLeftCorner {\n z-index: 3;\n }\n .rst__highlightBottomLeftCorner::before {\n content: '';\n position: absolute;\n border-bottom: solid calc(var(--stroke-width) * 2) ", ";\n border-left: solid calc(var(--stroke-width) * 2) ", ";\n box-sizing: border-box;\n height: calc(100% + var(--stroke-width));\n top: 0;\n right: calc(var(--stroke-width) * 3);\n width: calc(50% - calc(var(--stroke-width) * 2));\n }\n\n .rst__highlightBottomLeftCorner::after {\n content: '';\n position: absolute;\n height: 0;\n right: 0;\n top: 100%;\n margin-top: calc(var(--stroke-width) * -3);\n border-top: calc(var(--stroke-width) * 3) solid transparent;\n border-bottom: calc(var(--stroke-width) * 3) solid transparent;\n border-left: calc(var(--stroke-width) * 3) solid ", ";\n }\n\n .rst__unclickable {\n pointer-events: none;\n margin-top: -calc(var(--stroke-width) * 3);\n }\n"])), color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex, color_1.blue[400].hex);
|
|
12
|
+
var TreeNodeRendererScaffold = function (props) {
|
|
13
|
+
var lowerSiblingCounts = props.lowerSiblingCounts, scaffoldBlockPxWidth = props.scaffoldBlockPxWidth, listIndex = props.listIndex, swapDepth = props.swapDepth, swapFrom = props.swapFrom, swapLength = props.swapLength, treeIndex = props.treeIndex;
|
|
14
|
+
// Construct the scaffold representing the structure of the tree
|
|
15
|
+
var scaffold = lowerSiblingCounts.map(function (lowerSiblingCount, i) {
|
|
16
|
+
if (lowerSiblingCount < 0 || treeIndex === listIndex || i !== swapDepth) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
// This row has been shifted, and is at the depth of
|
|
20
|
+
// the line pointing to the new destination
|
|
21
|
+
var highlightLineClass = '';
|
|
22
|
+
if (listIndex === (swapFrom || 0) + (swapLength || 0) - 1) {
|
|
23
|
+
// This block is on the bottom (target) line
|
|
24
|
+
// This block points at the target block (where the row will go when released)
|
|
25
|
+
highlightLineClass = 'rst__highlightBottomLeftCorner';
|
|
26
|
+
}
|
|
27
|
+
else if (treeIndex === swapFrom) {
|
|
28
|
+
// This block is on the top (source) line
|
|
29
|
+
highlightLineClass = 'rst__highlightTopLeftCorner';
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// This block is between the bottom and top
|
|
33
|
+
highlightLineClass = 'rst__highlightLineVertical';
|
|
34
|
+
}
|
|
35
|
+
var style = {
|
|
36
|
+
width: scaffoldBlockPxWidth,
|
|
37
|
+
left: scaffoldBlockPxWidth * i
|
|
38
|
+
};
|
|
39
|
+
return ((0, jsx_runtime_1.jsx)("div", { style: style, className: "rst__unclickable rst__absoluteLineBlock ".concat(highlightLineClass || ''), tabIndex: -1 }, i));
|
|
40
|
+
});
|
|
41
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [scaffold, (0, jsx_runtime_1.jsx)(ScaffoldStyles, {}, void 0)] }, void 0));
|
|
42
|
+
};
|
|
43
|
+
exports.default = TreeNodeRendererScaffold;
|
|
44
|
+
var templateObject_1;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { TreeDeskStructureProps } from './types';
|
|
2
|
-
interface TreeProps extends TreeDeskStructureProps {
|
|
3
|
-
/**
|
|
4
|
-
* Visible title above the tree.
|
|
5
|
-
* Also used as the label in the desk list item.
|
|
6
|
-
*/
|
|
7
|
-
title: string;
|
|
8
|
-
/**
|
|
9
|
-
* Optional icon for rendering the item in the desk structure.
|
|
10
|
-
*/
|
|
11
|
-
icon?: any;
|
|
12
|
-
}
|
|
13
|
-
export default function createDeskHierarchy(props: TreeProps): import("@sanity/structure/dist/dts/ListItem").ListItemBuilder;
|
|
14
|
-
export {};
|
|
1
|
+
import { TreeDeskStructureProps } from './types';
|
|
2
|
+
interface TreeProps extends TreeDeskStructureProps {
|
|
3
|
+
/**
|
|
4
|
+
* Visible title above the tree.
|
|
5
|
+
* Also used as the label in the desk list item.
|
|
6
|
+
*/
|
|
7
|
+
title: string;
|
|
8
|
+
/**
|
|
9
|
+
* Optional icon for rendering the item in the desk structure.
|
|
10
|
+
*/
|
|
11
|
+
icon?: any;
|
|
12
|
+
}
|
|
13
|
+
export default function createDeskHierarchy(props: TreeProps): import("@sanity/structure/dist/dts/ListItem").ListItemBuilder;
|
|
14
|
+
export {};
|
|
@@ -1,85 +1,84 @@
|
|
|
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 structure_builder_1 = __importDefault(require("@sanity/desk-tool/structure-builder"));
|
|
19
|
-
var icons_1 = require("@sanity/icons");
|
|
20
|
-
var schema_1 = __importDefault(require("part:@sanity/base/schema"));
|
|
21
|
-
var TreeDeskStructure_1 = __importDefault(require("./TreeDeskStructure"));
|
|
22
|
-
var throwError_1 = __importDefault(require("./utils/throwError"));
|
|
23
|
-
var deskTreeValidator = function (props) {
|
|
24
|
-
var documentId = props.documentId, referenceTo = props.referenceTo;
|
|
25
|
-
if (typeof documentId !== 'string' && !documentId) {
|
|
26
|
-
(0, throwError_1.default)('invalidDocumentId');
|
|
27
|
-
}
|
|
28
|
-
if (!Array.isArray(referenceTo)) {
|
|
29
|
-
(0, throwError_1.default)('invalidReferenceTo', "(documentId \"".concat(documentId, "\")"));
|
|
30
|
-
}
|
|
31
|
-
return function (deskProps) { return (0, jsx_runtime_1.jsx)(TreeDeskStructure_1.default, __assign({}, deskProps, { options: props }), void 0); };
|
|
32
|
-
};
|
|
33
|
-
function createDeskHierarchy(props) {
|
|
34
|
-
var documentId = props.documentId, referenceTo = props.referenceTo, referenceOptions = props.referenceOptions;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
type:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.
|
|
76
|
-
.
|
|
77
|
-
.
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
exports.default = createDeskHierarchy;
|
|
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 structure_builder_1 = __importDefault(require("@sanity/desk-tool/structure-builder"));
|
|
19
|
+
var icons_1 = require("@sanity/icons");
|
|
20
|
+
var schema_1 = __importDefault(require("part:@sanity/base/schema"));
|
|
21
|
+
var TreeDeskStructure_1 = __importDefault(require("./TreeDeskStructure"));
|
|
22
|
+
var throwError_1 = __importDefault(require("./utils/throwError"));
|
|
23
|
+
var deskTreeValidator = function (props) {
|
|
24
|
+
var documentId = props.documentId, referenceTo = props.referenceTo;
|
|
25
|
+
if (typeof documentId !== 'string' && !documentId) {
|
|
26
|
+
(0, throwError_1.default)('invalidDocumentId');
|
|
27
|
+
}
|
|
28
|
+
if (!Array.isArray(referenceTo)) {
|
|
29
|
+
(0, throwError_1.default)('invalidReferenceTo', "(documentId \"".concat(documentId, "\")"));
|
|
30
|
+
}
|
|
31
|
+
return function (deskProps) { return (0, jsx_runtime_1.jsx)(TreeDeskStructure_1.default, __assign({}, deskProps, { options: props }), void 0); };
|
|
32
|
+
};
|
|
33
|
+
function createDeskHierarchy(props) {
|
|
34
|
+
var documentId = props.documentId, referenceTo = props.referenceTo, referenceOptions = props.referenceOptions;
|
|
35
|
+
/**
|
|
36
|
+
* Context: With multiple referenced document types we can’t set S.documentList().schemaType(),
|
|
37
|
+
* which only accepts one type. So the desk doesn’t have an expanded schemaType to access and
|
|
38
|
+
* try creating a new document without that, which breaks resolveEnabledActions (and probably more)
|
|
39
|
+
* in packages\@sanity\base\src\actions\utils\legacy_documentActionUtils.js
|
|
40
|
+
*/
|
|
41
|
+
var safelyCreatableTypes = referenceTo.slice(0, 1);
|
|
42
|
+
var mainList = ((safelyCreatableTypes === null || safelyCreatableTypes === void 0 ? void 0 : safelyCreatableTypes.length) === 1
|
|
43
|
+
? structure_builder_1.default.documentTypeList(safelyCreatableTypes[0]).schemaType(safelyCreatableTypes[0])
|
|
44
|
+
: structure_builder_1.default.documentList().filter('_type in $types').params({ types: safelyCreatableTypes }))
|
|
45
|
+
.id(documentId)
|
|
46
|
+
.menuItems((safelyCreatableTypes || []).map(function (schemaType) {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
return structure_builder_1.default.menuItem()
|
|
49
|
+
.intent({
|
|
50
|
+
type: 'create',
|
|
51
|
+
params: { type: schemaType }
|
|
52
|
+
})
|
|
53
|
+
.title("Create ".concat((_a = schema_1.default.get(schemaType)) === null || _a === void 0 ? void 0 : _a.title))
|
|
54
|
+
.icon(((_b = schema_1.default.get(schemaType)) === null || _b === void 0 ? void 0 : _b.icon) || icons_1.AddIcon);
|
|
55
|
+
}))
|
|
56
|
+
.canHandleIntent(function (intent, context) {
|
|
57
|
+
// Can edit itself
|
|
58
|
+
if (intent === 'edit' && context.id === props.documentId) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
// Can create & edit referenced document types
|
|
62
|
+
if (safelyCreatableTypes.includes(context.type)) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
});
|
|
67
|
+
if (referenceOptions === null || referenceOptions === void 0 ? void 0 : referenceOptions.filter) {
|
|
68
|
+
mainList = mainList.filter(referenceOptions.filter);
|
|
69
|
+
}
|
|
70
|
+
if (referenceOptions === null || referenceOptions === void 0 ? void 0 : referenceOptions.filterParams) {
|
|
71
|
+
mainList = mainList.params(referenceOptions.filterParams);
|
|
72
|
+
}
|
|
73
|
+
return structure_builder_1.default.listItem()
|
|
74
|
+
.id(documentId)
|
|
75
|
+
.title(props.title || documentId)
|
|
76
|
+
.icon(props.icon)
|
|
77
|
+
.child(Object.assign(mainList.serialize(), {
|
|
78
|
+
type: 'component',
|
|
79
|
+
component: deskTreeValidator(props),
|
|
80
|
+
options: props,
|
|
81
|
+
__preserveInstance: true
|
|
82
|
+
}, props.title ? { title: props.title } : {}));
|
|
83
|
+
}
|
|
84
|
+
exports.default = createDeskHierarchy;
|