@itwin/presentation-hierarchies-react 2.0.0-alpha.53 → 2.0.0-alpha.55
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/CHANGELOG.md +58 -0
- package/README.md +23 -61
- package/lib/presentation-hierarchies-react/Renderers.d.ts +92 -0
- package/lib/presentation-hierarchies-react/Renderers.d.ts.map +1 -0
- package/lib/{esm/presentation-hierarchies-react → presentation-hierarchies-react}/TreeNode.d.ts +33 -29
- package/lib/presentation-hierarchies-react/TreeNode.d.ts.map +1 -0
- package/lib/{esm/presentation-hierarchies-react → presentation-hierarchies-react}/UseIModelTree.d.ts +28 -17
- package/lib/presentation-hierarchies-react/UseIModelTree.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/UseIModelTree.js +184 -0
- package/lib/presentation-hierarchies-react/UseIModelTree.js.map +1 -0
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.d.ts +30 -0
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.js +58 -0
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.js.map +1 -0
- package/lib/presentation-hierarchies-react/UseSelectionHandler.d.ts +25 -0
- package/lib/presentation-hierarchies-react/UseSelectionHandler.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/UseSelectionHandler.js +125 -0
- package/lib/presentation-hierarchies-react/UseSelectionHandler.js.map +1 -0
- package/lib/presentation-hierarchies-react/UseTree.d.ts +112 -0
- package/lib/presentation-hierarchies-react/UseTree.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/UseTree.js +294 -0
- package/lib/presentation-hierarchies-react/UseTree.js.map +1 -0
- package/lib/presentation-hierarchies-react/Utils.js +56 -0
- package/lib/presentation-hierarchies-react/Utils.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/DisposePolyfill.js +10 -0
- package/lib/presentation-hierarchies-react/internal/DisposePolyfill.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.d.ts +9 -0
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.js +12 -0
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/TreeActions.js +295 -0
- package/lib/presentation-hierarchies-react/internal/TreeActions.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/TreeLoader.js +99 -0
- package/lib/presentation-hierarchies-react/internal/TreeLoader.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/TreeModel.d.ts +3 -0
- package/lib/presentation-hierarchies-react/internal/TreeModel.js +120 -0
- package/lib/presentation-hierarchies-react/internal/TreeModel.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts +37 -0
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.js +142 -0
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +1 -0
- package/lib/presentation-hierarchies-react/internal/Utils.js +43 -0
- package/lib/presentation-hierarchies-react/internal/Utils.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts +38 -0
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js +381 -0
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js.map +1 -0
- package/lib/{esm/presentation-hierarchies-react → presentation-hierarchies-react}/stratakit/FlatTreeNode.d.ts +16 -15
- package/lib/presentation-hierarchies-react/stratakit/FlatTreeNode.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/FlatTreeNode.js +91 -0
- package/lib/presentation-hierarchies-react/stratakit/FlatTreeNode.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/LocalizationContext.d.ts +24 -0
- package/lib/presentation-hierarchies-react/stratakit/LocalizationContext.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/LocalizationContext.js +41 -0
- package/lib/presentation-hierarchies-react/stratakit/LocalizationContext.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts +27 -0
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.js +186 -0
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.d.ts +49 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.js +89 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts +38 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js +64 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts +29 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js +92 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts +33 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js +156 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts +18 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js +535 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts +75 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts.map +1 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.js +418 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.js.map +1 -0
- package/lib/presentation-hierarchies-react.d.ts +18 -0
- package/lib/presentation-hierarchies-react.js +16 -0
- package/lib/public/locales/en/PresentationHierarchies_1.0.json +26 -0
- package/package.json +27 -21
- package/lib/esm/presentation-hierarchies-react/Renderers.d.ts +0 -85
- package/lib/esm/presentation-hierarchies-react/Renderers.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/Renderers.js +0 -6
- package/lib/esm/presentation-hierarchies-react/Renderers.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/TreeNode.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/TreeNode.js +0 -6
- package/lib/esm/presentation-hierarchies-react/TreeNode.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseIModelTree.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseIModelTree.js +0 -62
- package/lib/esm/presentation-hierarchies-react/UseIModelTree.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseNodeHighlighting.d.ts +0 -24
- package/lib/esm/presentation-hierarchies-react/UseNodeHighlighting.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseNodeHighlighting.js +0 -53
- package/lib/esm/presentation-hierarchies-react/UseNodeHighlighting.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.d.ts +0 -48
- package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.js +0 -83
- package/lib/esm/presentation-hierarchies-react/UseSelectionHandler.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseTree.d.ts +0 -94
- package/lib/esm/presentation-hierarchies-react/UseTree.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/UseTree.js +0 -241
- package/lib/esm/presentation-hierarchies-react/UseTree.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/Utils.d.ts +0 -8
- package/lib/esm/presentation-hierarchies-react/Utils.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/Utils.js +0 -39
- package/lib/esm/presentation-hierarchies-react/Utils.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/DisposePolyfill.d.ts +0 -2
- package/lib/esm/presentation-hierarchies-react/internal/DisposePolyfill.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/DisposePolyfill.js +0 -11
- package/lib/esm/presentation-hierarchies-react/internal/DisposePolyfill.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeActions.d.ts +0 -53
- package/lib/esm/presentation-hierarchies-react/internal/TreeActions.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeActions.js +0 -322
- package/lib/esm/presentation-hierarchies-react/internal/TreeActions.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.d.ts +0 -62
- package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.js +0 -90
- package/lib/esm/presentation-hierarchies-react/internal/TreeLoader.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeModel.d.ts +0 -47
- package/lib/esm/presentation-hierarchies-react/internal/TreeModel.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/TreeModel.js +0 -157
- package/lib/esm/presentation-hierarchies-react/internal/TreeModel.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts +0 -42
- package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.js +0 -115
- package/lib/esm/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/Utils.d.ts +0 -23
- package/lib/esm/presentation-hierarchies-react/internal/Utils.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/internal/Utils.js +0 -58
- package/lib/esm/presentation-hierarchies-react/internal/Utils.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts +0 -27
- package/lib/esm/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js +0 -74
- package/lib/esm/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/FlatTreeNode.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/FlatTreeNode.js +0 -73
- package/lib/esm/presentation-hierarchies-react/stratakit/FlatTreeNode.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/LocalizationContext.d.ts +0 -138
- package/lib/esm/presentation-hierarchies-react/stratakit/LocalizationContext.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/LocalizationContext.js +0 -47
- package/lib/esm/presentation-hierarchies-react/stratakit/LocalizationContext.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts +0 -16
- package/lib/esm/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/RootErrorRenderer.js +0 -42
- package/lib/esm/presentation-hierarchies-react/stratakit/RootErrorRenderer.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeAction.d.ts +0 -45
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeAction.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeAction.js +0 -36
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeAction.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts +0 -30
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js +0 -30
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts +0 -20
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js +0 -29
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts +0 -57
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js +0 -71
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts +0 -46
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js +0 -133
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts +0 -75
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeRenderer.js +0 -193
- package/lib/esm/presentation-hierarchies-react/stratakit/TreeRenderer.js.map +0 -1
- package/lib/esm/presentation-hierarchies-react.d.ts +0 -17
- package/lib/esm/presentation-hierarchies-react.d.ts.map +0 -1
- package/lib/esm/presentation-hierarchies-react.js +0 -18
- package/lib/esm/presentation-hierarchies-react.js.map +0 -1
- /package/lib/{esm/presentation-hierarchies-react → presentation-hierarchies-react}/stratakit/TreeNodeRenderer.css +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseUnifiedSelection.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/internal/UseUnifiedSelection.ts"],"mappings":";;;;;;;UAuBiB,4BAAA;EAoByG;;;EAhBxH,UAAA;EAAA;;;;;;;;;;;;;;EAgBA,8BAAA,IAAkC,IAAA,EAAM,wBAAA;IAA6B,GAAA,EAAK,cAAA;EAAA,GAAkB,eAAA,aAA4B,UAAA;;;;EAKxH,gBAAA,EAAkB,gBAAA;AAAA"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { c } from "react-compiler-runtime";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
import { HierarchyNode } from "@itwin/presentation-hierarchies";
|
|
4
|
+
import { assert } from "@itwin/core-bentley";
|
|
5
|
+
import { Selectables } from "@itwin/unified-selection";
|
|
6
|
+
|
|
7
|
+
//#region src/presentation-hierarchies-react/internal/UseUnifiedSelection.ts
|
|
8
|
+
/** @internal */
|
|
9
|
+
function useUnifiedTreeSelection(t0) {
|
|
10
|
+
const $ = c(6);
|
|
11
|
+
const { sourceName, selectionStorage, getTreeModelNode, createSelectableForGenericNode: t1 } = t0;
|
|
12
|
+
const createSelectableForGenericNode = t1 === void 0 ? defaultCreateSelectableForGenericNode : t1;
|
|
13
|
+
const [options, setOptions] = useState(_temp3);
|
|
14
|
+
let t2;
|
|
15
|
+
let t3;
|
|
16
|
+
if ($[0] !== createSelectableForGenericNode || $[1] !== getTreeModelNode || $[2] !== selectionStorage || $[3] !== sourceName) {
|
|
17
|
+
t2 = () => {
|
|
18
|
+
setOptions(createOptions(sourceName, selectionStorage, createSelectableForGenericNode, getTreeModelNode));
|
|
19
|
+
return selectionStorage.selectionChangeEvent.addListener((args) => {
|
|
20
|
+
if (args.level > 0) return;
|
|
21
|
+
setOptions(createOptions(sourceName, selectionStorage, createSelectableForGenericNode, getTreeModelNode));
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
t3 = [
|
|
25
|
+
selectionStorage,
|
|
26
|
+
createSelectableForGenericNode,
|
|
27
|
+
getTreeModelNode,
|
|
28
|
+
sourceName
|
|
29
|
+
];
|
|
30
|
+
$[0] = createSelectableForGenericNode;
|
|
31
|
+
$[1] = getTreeModelNode;
|
|
32
|
+
$[2] = selectionStorage;
|
|
33
|
+
$[3] = sourceName;
|
|
34
|
+
$[4] = t2;
|
|
35
|
+
$[5] = t3;
|
|
36
|
+
} else {
|
|
37
|
+
t2 = $[4];
|
|
38
|
+
t3 = $[5];
|
|
39
|
+
}
|
|
40
|
+
useEffect(t2, t3);
|
|
41
|
+
return options;
|
|
42
|
+
}
|
|
43
|
+
function _temp3() {
|
|
44
|
+
return {
|
|
45
|
+
isNodeSelected: _temp,
|
|
46
|
+
selectNodes: _temp2
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function _temp2() {}
|
|
50
|
+
function _temp() {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const defaultCreateSelectableForGenericNode = (node, treeModelNodeId) => ({
|
|
54
|
+
identifier: treeModelNodeId,
|
|
55
|
+
data: node,
|
|
56
|
+
async *loadInstanceKeys() {}
|
|
57
|
+
});
|
|
58
|
+
function createOptions(source, storage, createSelectableForGenericNode, getNode) {
|
|
59
|
+
return {
|
|
60
|
+
isNodeSelected: (nodeId) => {
|
|
61
|
+
const node = getNode(nodeId);
|
|
62
|
+
if (!node || node.id === void 0) return false;
|
|
63
|
+
for (const [imodelKey, nodeSelectables] of groupNodeSelectablesByIModelKey(node, createSelectableForGenericNode)) {
|
|
64
|
+
const storageSelectables = storage.getSelection({
|
|
65
|
+
imodelKey,
|
|
66
|
+
level: 0
|
|
67
|
+
});
|
|
68
|
+
if (Selectables.hasAny(storageSelectables, nodeSelectables)) return true;
|
|
69
|
+
}
|
|
70
|
+
return false;
|
|
71
|
+
},
|
|
72
|
+
selectNodes: (nodeIds, changeType) => {
|
|
73
|
+
const imodelSelectables = /* @__PURE__ */ new Map();
|
|
74
|
+
for (const nodeId of nodeIds) {
|
|
75
|
+
const node = getNode(nodeId);
|
|
76
|
+
if (!node || node.id === void 0) return;
|
|
77
|
+
for (const [imodelKey, nodeSelectables] of groupNodeSelectablesByIModelKey(node, createSelectableForGenericNode)) {
|
|
78
|
+
let selectablesList = imodelSelectables.get(imodelKey);
|
|
79
|
+
if (!selectablesList) {
|
|
80
|
+
selectablesList = [];
|
|
81
|
+
imodelSelectables.set(imodelKey, selectablesList);
|
|
82
|
+
}
|
|
83
|
+
nodeSelectables.forEach((selectable) => selectablesList.push(selectable));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
imodelSelectables.forEach((selectables, imodelKey) => {
|
|
87
|
+
const actionProps = {
|
|
88
|
+
imodelKey,
|
|
89
|
+
source,
|
|
90
|
+
selectables,
|
|
91
|
+
level: 0
|
|
92
|
+
};
|
|
93
|
+
switch (changeType) {
|
|
94
|
+
case "add":
|
|
95
|
+
storage.addToSelection(actionProps);
|
|
96
|
+
return;
|
|
97
|
+
case "remove":
|
|
98
|
+
storage.removeFromSelection(actionProps);
|
|
99
|
+
return;
|
|
100
|
+
case "replace":
|
|
101
|
+
storage.replaceSelection(actionProps);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function groupNodeSelectablesByIModelKey(modelNode, createSelectableForGenericNode) {
|
|
109
|
+
const hierarchyNode = modelNode.nodeData;
|
|
110
|
+
if (HierarchyNode.isInstancesNode(hierarchyNode)) return groupIModelInstanceKeys(hierarchyNode.key.instanceKeys);
|
|
111
|
+
if (HierarchyNode.isGroupingNode(hierarchyNode)) {
|
|
112
|
+
const groupingNodeSelectables = /* @__PURE__ */ new Map();
|
|
113
|
+
groupIModelInstanceKeys(hierarchyNode.groupedInstanceKeys).forEach((instanceKeys, imodelKey) => {
|
|
114
|
+
groupingNodeSelectables.set(imodelKey, [{
|
|
115
|
+
identifier: modelNode.id,
|
|
116
|
+
data: hierarchyNode,
|
|
117
|
+
async *loadInstanceKeys() {
|
|
118
|
+
for (const key of instanceKeys) yield key;
|
|
119
|
+
}
|
|
120
|
+
}]);
|
|
121
|
+
});
|
|
122
|
+
return groupingNodeSelectables;
|
|
123
|
+
}
|
|
124
|
+
assert(HierarchyNode.isGeneric(hierarchyNode));
|
|
125
|
+
return new Map([["", [createSelectableForGenericNode(hierarchyNode, modelNode.id)]]]);
|
|
126
|
+
}
|
|
127
|
+
function groupIModelInstanceKeys(instanceKeys) {
|
|
128
|
+
return instanceKeys.reduce((imodelSelectables, key) => {
|
|
129
|
+
const imodelKey = key.imodelKey ?? "";
|
|
130
|
+
let selectablesList = imodelSelectables.get(imodelKey);
|
|
131
|
+
if (!selectablesList) {
|
|
132
|
+
selectablesList = [];
|
|
133
|
+
imodelSelectables.set(imodelKey, selectablesList);
|
|
134
|
+
}
|
|
135
|
+
selectablesList.push(key);
|
|
136
|
+
return imodelSelectables;
|
|
137
|
+
}, /* @__PURE__ */ new Map());
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
//#endregion
|
|
141
|
+
export { useUnifiedTreeSelection };
|
|
142
|
+
//# sourceMappingURL=UseUnifiedSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseUnifiedSelection.js","names":["useEffect","useState","assert","HierarchyNode","Selectables","GenericNodeKey","InstancesNodeKey","NonGroupingHierarchyNode","InstanceKey","Selectable","SelectionStorage","SelectionChangeType","TreeModelHierarchyNode","TreeModelRootNode","TreeSelectionOptions","isNodeSelected","nodeId","selectNodes","nodeIds","Array","changeType","UseUnifiedTreeSelectionProps","sourceName","createSelectableForGenericNode","node","key","treeModelNodeId","selectionStorage","useUnifiedTreeSelection","t0","$","_c","getTreeModelNode","t1","undefined","defaultCreateSelectableForGenericNode","options","setOptions","_temp3","t2","t3","createOptions","selectionChangeEvent","addListener","args","level","_temp","_temp2","NonNullable","identifier","data","loadInstanceKeys","source","storage","getNode","id","imodelKey","nodeSelectables","groupNodeSelectablesByIModelKey","storageSelectables","getSelection","hasAny","imodelSelectables","Map","selectablesList","get","set","forEach","selectable","push","selectables","actionProps","addToSelection","removeFromSelection","replaceSelection","modelNode","hierarchyNode","nodeData","isInstancesNode","groupIModelInstanceKeys","instanceKeys","isGroupingNode","groupingNodeSelectables","groupedInstanceKeys","isGeneric","reduce"],"sources":["../../../src/presentation-hierarchies-react/internal/UseUnifiedSelection.ts"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { useEffect, useState } from \"react\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport { Selectables } from \"@itwin/unified-selection\";\n\nimport type { GenericNodeKey, InstancesNodeKey, NonGroupingHierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport type { InstanceKey } from \"@itwin/presentation-shared\";\nimport type { Selectable, SelectionStorage } from \"@itwin/unified-selection\";\nimport type { SelectionChangeType } from \"../UseSelectionHandler.js\";\nimport type { TreeModelHierarchyNode, TreeModelRootNode } from \"./TreeModel.js\";\n\n/** @internal */\nexport interface TreeSelectionOptions {\n isNodeSelected: (nodeId: string) => boolean;\n selectNodes: (nodeIds: Array<string>, changeType: SelectionChangeType) => void;\n}\n\n/** @public */\nexport interface UseUnifiedTreeSelectionProps {\n /**\n * Identifier to distinguish this source of changes to the unified selection from another ones in the application.\n */\n sourceName: string;\n\n /**\n * An optional function that allows customizing the `Selectable` object that gets created for generic hierarchy nodes. When\n * not supplied, the `Selectable` is created using the following signature:\n * ```ts\n * {\n * identifier: treeModelNodeId,\n * data: node,\n * async *loadInstanceKeys() {},\n * }\n * ```\n *\n * @param node Hierarchy node to create a selectable for.\n * @param treeModelNodeId ID of the hierarchy node in the internal tree model. This ID uniquely identifies the node in the whole hierarchy, as opposed to `GenericNodeKey.id` contained within the `node`, which may not be unique.\n */\n createSelectableForGenericNode?: (node: NonGroupingHierarchyNode & { key: GenericNodeKey }, treeModelNodeId: string) => Selectable;\n\n /**\n * Unified selection storage to use for listening, getting and changing active selection.\n */\n selectionStorage: SelectionStorage;\n}\n\n/** @internal */\nexport function useUnifiedTreeSelection({\n sourceName,\n selectionStorage,\n getTreeModelNode,\n createSelectableForGenericNode = defaultCreateSelectableForGenericNode,\n}: UseUnifiedTreeSelectionProps & { getTreeModelNode: (nodeId: string) => TreeModelHierarchyNode | TreeModelRootNode | undefined }): TreeSelectionOptions {\n const [options, setOptions] = useState<TreeSelectionOptions>(() => ({\n isNodeSelected: /* c8 ignore next */ () => false,\n selectNodes: /* c8 ignore next */ () => {},\n }));\n\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setOptions(createOptions(sourceName, selectionStorage, createSelectableForGenericNode, getTreeModelNode));\n return selectionStorage.selectionChangeEvent.addListener((args) => {\n if (args.level > 0) {\n return;\n }\n setOptions(createOptions(sourceName, selectionStorage, createSelectableForGenericNode, getTreeModelNode));\n });\n }, [selectionStorage, createSelectableForGenericNode, getTreeModelNode, sourceName]);\n\n return options;\n}\n\nconst defaultCreateSelectableForGenericNode: NonNullable<UseUnifiedTreeSelectionProps[\"createSelectableForGenericNode\"]> = (\n node,\n treeModelNodeId,\n): Selectable => ({\n identifier: treeModelNodeId,\n data: node,\n async *loadInstanceKeys() {},\n});\n\nfunction createOptions(\n source: string,\n storage: SelectionStorage,\n createSelectableForGenericNode: NonNullable<UseUnifiedTreeSelectionProps[\"createSelectableForGenericNode\"]>,\n getNode: (nodeId: string) => TreeModelHierarchyNode | TreeModelRootNode | undefined,\n): TreeSelectionOptions {\n return {\n isNodeSelected: (nodeId: string) => {\n const node = getNode(nodeId);\n if (!node || node.id === undefined) {\n return false;\n }\n for (const [imodelKey, nodeSelectables] of groupNodeSelectablesByIModelKey(node, createSelectableForGenericNode)) {\n const storageSelectables = storage.getSelection({ imodelKey, level: 0 });\n if (Selectables.hasAny(storageSelectables, nodeSelectables)) {\n return true;\n }\n }\n return false;\n },\n\n selectNodes: (nodeIds: Array<string>, changeType: SelectionChangeType) => {\n const imodelSelectables = new Map<string, Selectable[]>();\n for (const nodeId of nodeIds) {\n const node = getNode(nodeId);\n if (!node || node.id === undefined) {\n return;\n }\n for (const [imodelKey, nodeSelectables] of groupNodeSelectablesByIModelKey(node, createSelectableForGenericNode)) {\n let selectablesList = imodelSelectables.get(imodelKey);\n if (!selectablesList) {\n selectablesList = [];\n imodelSelectables.set(imodelKey, selectablesList);\n }\n nodeSelectables.forEach((selectable) => selectablesList.push(selectable));\n }\n }\n imodelSelectables.forEach((selectables, imodelKey) => {\n const actionProps = { imodelKey, source, selectables, level: 0 };\n switch (changeType) {\n case \"add\":\n storage.addToSelection(actionProps);\n return;\n case \"remove\":\n storage.removeFromSelection(actionProps);\n return;\n case \"replace\":\n storage.replaceSelection(actionProps);\n return;\n }\n });\n },\n };\n}\n\nfunction groupNodeSelectablesByIModelKey(\n modelNode: TreeModelHierarchyNode,\n createSelectableForGenericNode: NonNullable<UseUnifiedTreeSelectionProps[\"createSelectableForGenericNode\"]>,\n): Map<string, Selectable[]> {\n const hierarchyNode = modelNode.nodeData;\n if (HierarchyNode.isInstancesNode(hierarchyNode)) {\n return groupIModelInstanceKeys(hierarchyNode.key.instanceKeys);\n }\n if (HierarchyNode.isGroupingNode(hierarchyNode)) {\n const groupingNodeSelectables = new Map<string, Selectable[]>();\n groupIModelInstanceKeys(hierarchyNode.groupedInstanceKeys).forEach((instanceKeys, imodelKey) => {\n groupingNodeSelectables.set(imodelKey, [\n {\n identifier: modelNode.id,\n data: hierarchyNode,\n async *loadInstanceKeys() {\n for (const key of instanceKeys) {\n yield key;\n }\n },\n },\n ]);\n });\n return groupingNodeSelectables;\n }\n assert(HierarchyNode.isGeneric(hierarchyNode));\n // note: generic nodes aren't associated with an imodel\n return new Map([[\"\", [createSelectableForGenericNode(hierarchyNode, modelNode.id)]]]);\n}\n\nfunction groupIModelInstanceKeys(instanceKeys: InstancesNodeKey[\"instanceKeys\"]) {\n return instanceKeys.reduce((imodelSelectables, key) => {\n const imodelKey = key.imodelKey ?? \"\";\n let selectablesList = imodelSelectables.get(imodelKey);\n if (!selectablesList) {\n selectablesList = [];\n imodelSelectables.set(imodelKey, selectablesList);\n }\n selectablesList.push(key);\n return imodelSelectables;\n }, new Map<string, InstanceKey[]>());\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import "./DisposePolyfill.js";
|
|
2
|
+
import { HierarchyNodeKey } from "@itwin/presentation-hierarchies";
|
|
3
|
+
|
|
4
|
+
//#region src/presentation-hierarchies-react/internal/Utils.ts
|
|
5
|
+
/** @internal */
|
|
6
|
+
function createNodeId(node) {
|
|
7
|
+
return [...node.parentKeys.map(serializeNodeKey), serializeNodeKey(node.key)].join(";");
|
|
8
|
+
}
|
|
9
|
+
function serializeNodeKey(key) {
|
|
10
|
+
return convertObjectValuesToString(key);
|
|
11
|
+
}
|
|
12
|
+
function convertObjectValuesToString(obj) {
|
|
13
|
+
return Object.entries(obj).map(([, value]) => {
|
|
14
|
+
if (typeof value === "object") return convertObjectValuesToString(value);
|
|
15
|
+
return String(value);
|
|
16
|
+
}).join(",");
|
|
17
|
+
}
|
|
18
|
+
/** @internal */
|
|
19
|
+
function sameNodes(lhs, rhs) {
|
|
20
|
+
if (HierarchyNodeKey.compare(lhs.key, rhs.key) !== 0) return false;
|
|
21
|
+
if (lhs.parentKeys.length !== rhs.parentKeys.length) return false;
|
|
22
|
+
for (let i = lhs.parentKeys.length - 1; i >= 0; --i) if (HierarchyNodeKey.compare(lhs.parentKeys[i], rhs.parentKeys[i]) !== 0) return false;
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
/** @internal */
|
|
26
|
+
const MAX_LIMIT_OVERRIDE = 1e4;
|
|
27
|
+
/**
|
|
28
|
+
* A helper that disposes the given object, if it's disposable.
|
|
29
|
+
*
|
|
30
|
+
* The first option is to dispose using the deprecated `dispose` method if it exists on the object.
|
|
31
|
+
* If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is
|
|
32
|
+
* considered as non-disposable and nothing is done with it.
|
|
33
|
+
*
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
function safeDispose(disposable) {
|
|
37
|
+
if ("dispose" in disposable) disposable.dispose();
|
|
38
|
+
else if (Symbol.dispose in disposable) disposable[Symbol.dispose]();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { MAX_LIMIT_OVERRIDE, createNodeId, safeDispose, sameNodes };
|
|
43
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","names":["HierarchyNodeKey","HierarchyNode","createNodeId","node","Pick","parentKeys","map","serializeNodeKey","key","join","convertObjectValuesToString","obj","Object","entries","value","String","sameNodes","lhs","rhs","compare","length","i","MAX_LIMIT_OVERRIDE","safeDispose","disposable","Symbol","dispose"],"sources":["../../../src/presentation-hierarchies-react/internal/Utils.ts"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport \"./DisposePolyfill.js\";\n\nimport { HierarchyNodeKey } from \"@itwin/presentation-hierarchies\";\n\nimport type { HierarchyNode } from \"@itwin/presentation-hierarchies\";\n\n/** @internal */\nexport function createNodeId(node: Pick<HierarchyNode, \"key\" | \"parentKeys\">) {\n return [...node.parentKeys.map(serializeNodeKey), serializeNodeKey(node.key)].join(\";\");\n}\n\nfunction serializeNodeKey(key: HierarchyNodeKey): string {\n return convertObjectValuesToString(key);\n}\n\nfunction convertObjectValuesToString(obj: object): string {\n return Object.entries(obj)\n .map(([, value]) => {\n if (typeof value === \"object\") {\n return convertObjectValuesToString(value);\n }\n return String(value);\n })\n .join(\",\");\n}\n\n/** @internal */\nexport function sameNodes(lhs: HierarchyNode, rhs: HierarchyNode): boolean {\n if (HierarchyNodeKey.compare(lhs.key, rhs.key) !== 0) {\n return false;\n }\n\n if (lhs.parentKeys.length !== rhs.parentKeys.length) {\n return false;\n }\n\n for (let i = lhs.parentKeys.length - 1; i >= 0; --i) {\n if (HierarchyNodeKey.compare(lhs.parentKeys[i], rhs.parentKeys[i]) !== 0) {\n return false;\n }\n }\n return true;\n}\n\n/** @internal */\nexport const MAX_LIMIT_OVERRIDE = 10000;\n\n/**\n * A helper that disposes the given object, if it's disposable.\n *\n * The first option is to dispose using the deprecated `dispose` method if it exists on the object.\n * If not, we use the new `Symbol.dispose` method. If that doesn't exist either, the object is\n * considered as non-disposable and nothing is done with it.\n *\n * @internal\n */\nexport function safeDispose(disposable: {} | { [Symbol.dispose]: () => void } | { dispose: () => void }) {\n if (\"dispose\" in disposable) {\n disposable.dispose();\n } else if (Symbol.dispose in disposable) {\n disposable[Symbol.dispose]();\n }\n}\n"],"mappings":";;;;;AAYA,SAAgBE,aAAaC,MAAiD;AAC5E,QAAO,CAAC,GAAGA,KAAKE,WAAWC,IAAIC,iBAAiB,EAAEA,iBAAiBJ,KAAKK,IAAI,CAAC,CAACC,KAAK,IAAI;;AAGzF,SAASF,iBAAiBC,KAA+B;AACvD,QAAOE,4BAA4BF,IAAI;;AAGzC,SAASE,4BAA4BC,KAAqB;AACxD,QAAOC,OAAOC,QAAQF,IAAI,CACvBL,KAAK,GAAGQ,WAAW;AAClB,MAAI,OAAOA,UAAU,SACnB,QAAOJ,4BAA4BI,MAAM;AAE3C,SAAOC,OAAOD,MAAM;GACpB,CACDL,KAAK,IAAI;;;AAId,SAAgBO,UAAUC,KAAoBC,KAA6B;AACzE,KAAIlB,iBAAiBmB,QAAQF,IAAIT,KAAKU,IAAIV,IAAI,KAAK,EACjD,QAAO;AAGT,KAAIS,IAAIZ,WAAWe,WAAWF,IAAIb,WAAWe,OAC3C,QAAO;AAGT,MAAK,IAAIC,IAAIJ,IAAIZ,WAAWe,SAAS,GAAGC,KAAK,GAAG,EAAEA,EAChD,KAAIrB,iBAAiBmB,QAAQF,IAAIZ,WAAWgB,IAAIH,IAAIb,WAAWgB,GAAG,KAAK,EACrE,QAAO;AAGX,QAAO;;;AAIT,MAAaC,qBAAqB;;;;;;;;;;AAWlC,SAAgBC,YAAYC,YAA6E;AACvG,KAAI,aAAaA,WACfA,YAAWE,SAAS;UACXD,OAAOC,WAAWF,WAC3BA,YAAWC,OAAOC,UAAU"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TreeNode } from "../TreeNode.js";
|
|
2
|
+
import { HierarchyLevelDetails, TreeRendererProps } from "../Renderers.js";
|
|
3
|
+
import { useErrorNodes } from "./FlatTreeNode.js";
|
|
4
|
+
import { JSX } from "react";
|
|
5
|
+
|
|
6
|
+
//#region src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts
|
|
7
|
+
/** @alpha */
|
|
8
|
+
interface ErrorItemRendererProps extends Pick<TreeRendererProps, "getHierarchyLevelDetails"> {
|
|
9
|
+
/** A node containing an error. */
|
|
10
|
+
errorNode: ReturnType<typeof useErrorNodes>[number];
|
|
11
|
+
/** A callback to reload a hierarchy level when an error occurs and `retry` button is clicked. */
|
|
12
|
+
reloadTree: (options: {
|
|
13
|
+
parentNodeId: string | undefined;
|
|
14
|
+
}) => void;
|
|
15
|
+
/** A callback to scroll to the node associated with the error. */
|
|
16
|
+
scrollToNode: (errorNode: TreeNode) => void;
|
|
17
|
+
/** A callback to initiate filtering of the given hierarchy level. */
|
|
18
|
+
filterHierarchyLevel?: (hierarchyLevelDetails: HierarchyLevelDetails) => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Renders StrataKit `<ErrorRegion.Item />` for all supported error types:
|
|
22
|
+
* - `ResultSetTooLarge` - renders `resultLimitExceeded` message with actions to increase limit or apply filtering
|
|
23
|
+
* - `NoFilterMatches` - renders `noFilteredChildren` message with action to change filter
|
|
24
|
+
* - `ChildrenLoad` - renders `failedToCreateHierarchy` message with action to retry loading
|
|
25
|
+
* - `Unknown` - renders message set on error object.
|
|
26
|
+
*
|
|
27
|
+
* @alpha
|
|
28
|
+
*/
|
|
29
|
+
declare function ErrorItemRenderer({
|
|
30
|
+
errorNode,
|
|
31
|
+
getHierarchyLevelDetails,
|
|
32
|
+
filterHierarchyLevel,
|
|
33
|
+
reloadTree,
|
|
34
|
+
scrollToNode
|
|
35
|
+
}: ErrorItemRendererProps): JSX.Element;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { ErrorItemRenderer, ErrorItemRendererProps };
|
|
38
|
+
//# sourceMappingURL=ErrorItemRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorItemRenderer.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx"],"mappings":";;;;;;;UAgBiB,sBAAA,SAA+B,IAAA,CAAK,iBAAA;EAApC;EAEf,SAAA,EAAW,UAAA,QAAkB,aAAA;;EAE7B,UAAA,GAAa,OAAA;IAAW,YAAA;EAAA;EAEE;EAA1B,YAAA,GAAe,SAAA,EAAW,QAAA;EANoB;EAQ9C,oBAAA,IAAwB,qBAAA,EAAuB,qBAAA;AAAA;;;;;;;;;;iBAYjC,iBAAA,CAAA;EACd,SAAA;EACA,wBAAA;EACA,oBAAA;EACA,UAAA;EACA;AAAA,GACC,sBAAA,GAAyB,GAAA,CAAI,OAAA"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { MAX_LIMIT_OVERRIDE } from "../internal/Utils.js";
|
|
2
|
+
import { useTranslation } from "./LocalizationContext.js";
|
|
3
|
+
import { c } from "react-compiler-runtime";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { unstable_ErrorRegion } from "@stratakit/structures";
|
|
6
|
+
import { Anchor, Text } from "@stratakit/bricks";
|
|
7
|
+
|
|
8
|
+
//#region src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx
|
|
9
|
+
/**
|
|
10
|
+
* Renders StrataKit `<ErrorRegion.Item />` for all supported error types:
|
|
11
|
+
* - `ResultSetTooLarge` - renders `resultLimitExceeded` message with actions to increase limit or apply filtering
|
|
12
|
+
* - `NoFilterMatches` - renders `noFilteredChildren` message with action to change filter
|
|
13
|
+
* - `ChildrenLoad` - renders `failedToCreateHierarchy` message with action to retry loading
|
|
14
|
+
* - `Unknown` - renders message set on error object.
|
|
15
|
+
*
|
|
16
|
+
* @alpha
|
|
17
|
+
*/
|
|
18
|
+
function ErrorItemRenderer(t0) {
|
|
19
|
+
const $ = c(83);
|
|
20
|
+
const { errorNode, getHierarchyLevelDetails, filterHierarchyLevel, reloadTree, scrollToNode } = t0;
|
|
21
|
+
const translate = useTranslation();
|
|
22
|
+
if (errorNode.error.type === "ResultSetTooLarge") {
|
|
23
|
+
const limit = errorNode.error.resultSetSizeLimit;
|
|
24
|
+
let t1;
|
|
25
|
+
if ($[0] !== errorNode.id || $[1] !== getHierarchyLevelDetails) {
|
|
26
|
+
t1 = () => getHierarchyLevelDetails(errorNode.id)?.setSizeLimit(MAX_LIMIT_OVERRIDE);
|
|
27
|
+
$[0] = errorNode.id;
|
|
28
|
+
$[1] = getHierarchyLevelDetails;
|
|
29
|
+
$[2] = t1;
|
|
30
|
+
} else t1 = $[2];
|
|
31
|
+
const onOverrideLimit = t1;
|
|
32
|
+
let t2;
|
|
33
|
+
if ($[3] !== onOverrideLimit) {
|
|
34
|
+
t2 = () => {
|
|
35
|
+
onOverrideLimit();
|
|
36
|
+
};
|
|
37
|
+
$[3] = onOverrideLimit;
|
|
38
|
+
$[4] = t2;
|
|
39
|
+
} else t2 = $[4];
|
|
40
|
+
let t3;
|
|
41
|
+
if ($[5] !== translate) {
|
|
42
|
+
t3 = translate("increaseHierarchyLimit").replace("{{limit}}", MAX_LIMIT_OVERRIDE.toString());
|
|
43
|
+
$[5] = translate;
|
|
44
|
+
$[6] = t3;
|
|
45
|
+
} else t3 = $[6];
|
|
46
|
+
let t4;
|
|
47
|
+
if ($[7] !== limit) {
|
|
48
|
+
t4 = () => limit < MAX_LIMIT_OVERRIDE;
|
|
49
|
+
$[7] = limit;
|
|
50
|
+
$[8] = t4;
|
|
51
|
+
} else t4 = $[8];
|
|
52
|
+
let t5;
|
|
53
|
+
if ($[9] !== t2 || $[10] !== t3 || $[11] !== t4) {
|
|
54
|
+
t5 = {
|
|
55
|
+
action: t2,
|
|
56
|
+
label: t3,
|
|
57
|
+
condition: t4
|
|
58
|
+
};
|
|
59
|
+
$[9] = t2;
|
|
60
|
+
$[10] = t3;
|
|
61
|
+
$[11] = t4;
|
|
62
|
+
$[12] = t5;
|
|
63
|
+
} else t5 = $[12];
|
|
64
|
+
let t6;
|
|
65
|
+
if ($[13] !== errorNode.id || $[14] !== filterHierarchyLevel || $[15] !== getHierarchyLevelDetails) {
|
|
66
|
+
t6 = () => {
|
|
67
|
+
const hierarchyLevelDetails = getHierarchyLevelDetails(errorNode.id);
|
|
68
|
+
hierarchyLevelDetails && filterHierarchyLevel?.(hierarchyLevelDetails);
|
|
69
|
+
};
|
|
70
|
+
$[13] = errorNode.id;
|
|
71
|
+
$[14] = filterHierarchyLevel;
|
|
72
|
+
$[15] = getHierarchyLevelDetails;
|
|
73
|
+
$[16] = t6;
|
|
74
|
+
} else t6 = $[16];
|
|
75
|
+
let t7;
|
|
76
|
+
if ($[17] !== translate) {
|
|
77
|
+
t7 = translate("increaseHierarchyLimitWithFiltering");
|
|
78
|
+
$[17] = translate;
|
|
79
|
+
$[18] = t7;
|
|
80
|
+
} else t7 = $[18];
|
|
81
|
+
let t8;
|
|
82
|
+
if ($[19] !== errorNode.isFilterable || $[20] !== filterHierarchyLevel) {
|
|
83
|
+
t8 = () => !!filterHierarchyLevel && !!errorNode.isFilterable;
|
|
84
|
+
$[19] = errorNode.isFilterable;
|
|
85
|
+
$[20] = filterHierarchyLevel;
|
|
86
|
+
$[21] = t8;
|
|
87
|
+
} else t8 = $[21];
|
|
88
|
+
let t9;
|
|
89
|
+
if ($[22] !== t6 || $[23] !== t7 || $[24] !== t8) {
|
|
90
|
+
t9 = {
|
|
91
|
+
action: t6,
|
|
92
|
+
label: t7,
|
|
93
|
+
condition: t8
|
|
94
|
+
};
|
|
95
|
+
$[22] = t6;
|
|
96
|
+
$[23] = t7;
|
|
97
|
+
$[24] = t8;
|
|
98
|
+
$[25] = t9;
|
|
99
|
+
} else t9 = $[25];
|
|
100
|
+
let t10;
|
|
101
|
+
if ($[26] !== t5 || $[27] !== t9) {
|
|
102
|
+
t10 = [t5, t9];
|
|
103
|
+
$[26] = t5;
|
|
104
|
+
$[27] = t9;
|
|
105
|
+
$[28] = t10;
|
|
106
|
+
} else t10 = $[28];
|
|
107
|
+
let t11;
|
|
108
|
+
if ($[29] !== limit || $[30] !== translate) {
|
|
109
|
+
t11 = translate("resultLimitExceeded").replace("{{limit}}", limit.toString());
|
|
110
|
+
$[29] = limit;
|
|
111
|
+
$[30] = translate;
|
|
112
|
+
$[31] = t11;
|
|
113
|
+
} else t11 = $[31];
|
|
114
|
+
let t12;
|
|
115
|
+
if ($[32] !== errorNode || $[33] !== scrollToNode) {
|
|
116
|
+
t12 = () => scrollToNode(errorNode);
|
|
117
|
+
$[32] = errorNode;
|
|
118
|
+
$[33] = scrollToNode;
|
|
119
|
+
$[34] = t12;
|
|
120
|
+
} else t12 = $[34];
|
|
121
|
+
let t13;
|
|
122
|
+
if ($[35] !== errorNode || $[36] !== t10 || $[37] !== t11 || $[38] !== t12) {
|
|
123
|
+
t13 = /* @__PURE__ */ jsx(ErrorItemContainer, {
|
|
124
|
+
errorNode,
|
|
125
|
+
actions: t10,
|
|
126
|
+
message: t11,
|
|
127
|
+
scrollToElement: t12
|
|
128
|
+
});
|
|
129
|
+
$[35] = errorNode;
|
|
130
|
+
$[36] = t10;
|
|
131
|
+
$[37] = t11;
|
|
132
|
+
$[38] = t12;
|
|
133
|
+
$[39] = t13;
|
|
134
|
+
} else t13 = $[39];
|
|
135
|
+
return t13;
|
|
136
|
+
}
|
|
137
|
+
if (errorNode.error.type === "NoFilterMatches") {
|
|
138
|
+
let t1;
|
|
139
|
+
if ($[40] !== errorNode.id || $[41] !== filterHierarchyLevel || $[42] !== getHierarchyLevelDetails) {
|
|
140
|
+
t1 = () => {
|
|
141
|
+
const hierarchyLevelDetails_0 = getHierarchyLevelDetails(errorNode.id);
|
|
142
|
+
hierarchyLevelDetails_0 && filterHierarchyLevel?.(hierarchyLevelDetails_0);
|
|
143
|
+
};
|
|
144
|
+
$[40] = errorNode.id;
|
|
145
|
+
$[41] = filterHierarchyLevel;
|
|
146
|
+
$[42] = getHierarchyLevelDetails;
|
|
147
|
+
$[43] = t1;
|
|
148
|
+
} else t1 = $[43];
|
|
149
|
+
let t2;
|
|
150
|
+
if ($[44] !== translate) {
|
|
151
|
+
t2 = translate("noFilteredChildrenChangeFilter");
|
|
152
|
+
$[44] = translate;
|
|
153
|
+
$[45] = t2;
|
|
154
|
+
} else t2 = $[45];
|
|
155
|
+
let t3;
|
|
156
|
+
if ($[46] !== t1 || $[47] !== t2) {
|
|
157
|
+
t3 = [{
|
|
158
|
+
action: t1,
|
|
159
|
+
label: t2,
|
|
160
|
+
condition: _temp
|
|
161
|
+
}];
|
|
162
|
+
$[46] = t1;
|
|
163
|
+
$[47] = t2;
|
|
164
|
+
$[48] = t3;
|
|
165
|
+
} else t3 = $[48];
|
|
166
|
+
let t4;
|
|
167
|
+
if ($[49] !== translate) {
|
|
168
|
+
t4 = translate("noFilteredChildren");
|
|
169
|
+
$[49] = translate;
|
|
170
|
+
$[50] = t4;
|
|
171
|
+
} else t4 = $[50];
|
|
172
|
+
let t5;
|
|
173
|
+
if ($[51] !== errorNode || $[52] !== scrollToNode) {
|
|
174
|
+
t5 = () => scrollToNode(errorNode);
|
|
175
|
+
$[51] = errorNode;
|
|
176
|
+
$[52] = scrollToNode;
|
|
177
|
+
$[53] = t5;
|
|
178
|
+
} else t5 = $[53];
|
|
179
|
+
let t6;
|
|
180
|
+
if ($[54] !== errorNode || $[55] !== t3 || $[56] !== t4 || $[57] !== t5) {
|
|
181
|
+
t6 = /* @__PURE__ */ jsx(ErrorItemContainer, {
|
|
182
|
+
errorNode,
|
|
183
|
+
actions: t3,
|
|
184
|
+
message: t4,
|
|
185
|
+
scrollToElement: t5
|
|
186
|
+
});
|
|
187
|
+
$[54] = errorNode;
|
|
188
|
+
$[55] = t3;
|
|
189
|
+
$[56] = t4;
|
|
190
|
+
$[57] = t5;
|
|
191
|
+
$[58] = t6;
|
|
192
|
+
} else t6 = $[58];
|
|
193
|
+
return t6;
|
|
194
|
+
}
|
|
195
|
+
if (errorNode.error.type === "ChildrenLoad") {
|
|
196
|
+
let t1;
|
|
197
|
+
if ($[59] !== errorNode.id || $[60] !== reloadTree) {
|
|
198
|
+
t1 = () => reloadTree({ parentNodeId: errorNode.id });
|
|
199
|
+
$[59] = errorNode.id;
|
|
200
|
+
$[60] = reloadTree;
|
|
201
|
+
$[61] = t1;
|
|
202
|
+
} else t1 = $[61];
|
|
203
|
+
let t2;
|
|
204
|
+
if ($[62] !== translate) {
|
|
205
|
+
t2 = translate("retry");
|
|
206
|
+
$[62] = translate;
|
|
207
|
+
$[63] = t2;
|
|
208
|
+
} else t2 = $[63];
|
|
209
|
+
let t3;
|
|
210
|
+
if ($[64] !== t1 || $[65] !== t2) {
|
|
211
|
+
t3 = [{
|
|
212
|
+
action: t1,
|
|
213
|
+
label: t2,
|
|
214
|
+
condition: _temp2
|
|
215
|
+
}];
|
|
216
|
+
$[64] = t1;
|
|
217
|
+
$[65] = t2;
|
|
218
|
+
$[66] = t3;
|
|
219
|
+
} else t3 = $[66];
|
|
220
|
+
let t4;
|
|
221
|
+
if ($[67] !== translate) {
|
|
222
|
+
t4 = translate("failedToCreateHierarchy");
|
|
223
|
+
$[67] = translate;
|
|
224
|
+
$[68] = t4;
|
|
225
|
+
} else t4 = $[68];
|
|
226
|
+
let t5;
|
|
227
|
+
if ($[69] !== errorNode || $[70] !== scrollToNode) {
|
|
228
|
+
t5 = () => scrollToNode(errorNode);
|
|
229
|
+
$[69] = errorNode;
|
|
230
|
+
$[70] = scrollToNode;
|
|
231
|
+
$[71] = t5;
|
|
232
|
+
} else t5 = $[71];
|
|
233
|
+
let t6;
|
|
234
|
+
if ($[72] !== errorNode || $[73] !== t3 || $[74] !== t4 || $[75] !== t5) {
|
|
235
|
+
t6 = /* @__PURE__ */ jsx(ErrorItemContainer, {
|
|
236
|
+
errorNode,
|
|
237
|
+
actions: t3,
|
|
238
|
+
message: t4,
|
|
239
|
+
scrollToElement: t5
|
|
240
|
+
});
|
|
241
|
+
$[72] = errorNode;
|
|
242
|
+
$[73] = t3;
|
|
243
|
+
$[74] = t4;
|
|
244
|
+
$[75] = t5;
|
|
245
|
+
$[76] = t6;
|
|
246
|
+
} else t6 = $[76];
|
|
247
|
+
return t6;
|
|
248
|
+
}
|
|
249
|
+
let t1;
|
|
250
|
+
if ($[77] !== errorNode || $[78] !== scrollToNode) {
|
|
251
|
+
t1 = () => scrollToNode(errorNode);
|
|
252
|
+
$[77] = errorNode;
|
|
253
|
+
$[78] = scrollToNode;
|
|
254
|
+
$[79] = t1;
|
|
255
|
+
} else t1 = $[79];
|
|
256
|
+
let t2;
|
|
257
|
+
if ($[80] !== errorNode || $[81] !== t1) {
|
|
258
|
+
t2 = /* @__PURE__ */ jsx(ErrorItemContainer, {
|
|
259
|
+
errorNode,
|
|
260
|
+
message: errorNode.error.message,
|
|
261
|
+
scrollToElement: t1
|
|
262
|
+
});
|
|
263
|
+
$[80] = errorNode;
|
|
264
|
+
$[81] = t1;
|
|
265
|
+
$[82] = t2;
|
|
266
|
+
} else t2 = $[82];
|
|
267
|
+
return t2;
|
|
268
|
+
}
|
|
269
|
+
function _temp2() {
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
function _temp() {
|
|
273
|
+
return true;
|
|
274
|
+
}
|
|
275
|
+
function ErrorItemContainer(t0) {
|
|
276
|
+
const $ = c(10);
|
|
277
|
+
const { errorNode, message, actions, scrollToElement } = t0;
|
|
278
|
+
let t1;
|
|
279
|
+
if ($[0] !== errorNode.label || $[1] !== message || $[2] !== scrollToElement) {
|
|
280
|
+
t1 = /* @__PURE__ */ jsx(MessageWithLink, {
|
|
281
|
+
linkLabel: errorNode.label,
|
|
282
|
+
scrollToElement,
|
|
283
|
+
message
|
|
284
|
+
});
|
|
285
|
+
$[0] = errorNode.label;
|
|
286
|
+
$[1] = message;
|
|
287
|
+
$[2] = scrollToElement;
|
|
288
|
+
$[3] = t1;
|
|
289
|
+
} else t1 = $[3];
|
|
290
|
+
let t2;
|
|
291
|
+
if ($[4] !== actions) {
|
|
292
|
+
t2 = actions?.filter(_temp3).map(_temp4);
|
|
293
|
+
$[4] = actions;
|
|
294
|
+
$[5] = t2;
|
|
295
|
+
} else t2 = $[5];
|
|
296
|
+
let t3;
|
|
297
|
+
if ($[6] !== errorNode.id || $[7] !== t1 || $[8] !== t2) {
|
|
298
|
+
t3 = /* @__PURE__ */ jsx(unstable_ErrorRegion.Item, {
|
|
299
|
+
message: t1,
|
|
300
|
+
messageId: errorNode.id,
|
|
301
|
+
actions: t2
|
|
302
|
+
});
|
|
303
|
+
$[6] = errorNode.id;
|
|
304
|
+
$[7] = t1;
|
|
305
|
+
$[8] = t2;
|
|
306
|
+
$[9] = t3;
|
|
307
|
+
} else t3 = $[9];
|
|
308
|
+
return t3;
|
|
309
|
+
}
|
|
310
|
+
function _temp4(t0) {
|
|
311
|
+
const { label, action } = t0;
|
|
312
|
+
return /* @__PURE__ */ jsx(Text, {
|
|
313
|
+
variant: "body-sm",
|
|
314
|
+
children: /* @__PURE__ */ jsx(Anchor, {
|
|
315
|
+
onClick: action,
|
|
316
|
+
render: /* @__PURE__ */ jsx("button", {}),
|
|
317
|
+
children: label
|
|
318
|
+
})
|
|
319
|
+
}, label);
|
|
320
|
+
}
|
|
321
|
+
function _temp3(t0) {
|
|
322
|
+
const { condition } = t0;
|
|
323
|
+
return condition();
|
|
324
|
+
}
|
|
325
|
+
function MessageWithLink(t0) {
|
|
326
|
+
const $ = c(11);
|
|
327
|
+
const { linkLabel, scrollToElement, message } = t0;
|
|
328
|
+
let t1;
|
|
329
|
+
if ($[0] !== message) {
|
|
330
|
+
t1 = message.split("{{node}}", 2);
|
|
331
|
+
$[0] = message;
|
|
332
|
+
$[1] = t1;
|
|
333
|
+
} else t1 = $[1];
|
|
334
|
+
const splitMessage = t1;
|
|
335
|
+
let t2;
|
|
336
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
337
|
+
t2 = {
|
|
338
|
+
display: "flex",
|
|
339
|
+
whiteSpace: "pre",
|
|
340
|
+
flexWrap: "wrap"
|
|
341
|
+
};
|
|
342
|
+
$[2] = t2;
|
|
343
|
+
} else t2 = $[2];
|
|
344
|
+
let t3;
|
|
345
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
346
|
+
t3 = /* @__PURE__ */ jsx("button", {});
|
|
347
|
+
$[3] = t3;
|
|
348
|
+
} else t3 = $[3];
|
|
349
|
+
let t4;
|
|
350
|
+
if ($[4] !== linkLabel || $[5] !== scrollToElement) {
|
|
351
|
+
t4 = /* @__PURE__ */ jsx(Anchor, {
|
|
352
|
+
onClick: scrollToElement,
|
|
353
|
+
render: t3,
|
|
354
|
+
children: linkLabel
|
|
355
|
+
});
|
|
356
|
+
$[4] = linkLabel;
|
|
357
|
+
$[5] = scrollToElement;
|
|
358
|
+
$[6] = t4;
|
|
359
|
+
} else t4 = $[6];
|
|
360
|
+
const t5 = splitMessage[1] ? splitMessage[1] : null;
|
|
361
|
+
let t6;
|
|
362
|
+
if ($[7] !== splitMessage[0] || $[8] !== t4 || $[9] !== t5) {
|
|
363
|
+
t6 = /* @__PURE__ */ jsxs("div", {
|
|
364
|
+
style: t2,
|
|
365
|
+
children: [
|
|
366
|
+
splitMessage[0],
|
|
367
|
+
t4,
|
|
368
|
+
t5
|
|
369
|
+
]
|
|
370
|
+
});
|
|
371
|
+
$[7] = splitMessage[0];
|
|
372
|
+
$[8] = t4;
|
|
373
|
+
$[9] = t5;
|
|
374
|
+
$[10] = t6;
|
|
375
|
+
} else t6 = $[10];
|
|
376
|
+
return t6;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
//#endregion
|
|
380
|
+
export { ErrorItemRenderer };
|
|
381
|
+
//# sourceMappingURL=ErrorItemRenderer.js.map
|