@itwin/presentation-hierarchies-react 2.0.0-alpha.62 → 2.0.0-alpha.64
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 +97 -0
- package/README.md +62 -37
- package/lib/presentation-hierarchies-react/FlatTreeNode.d.ts +1 -2
- package/lib/presentation-hierarchies-react/FlatTreeNode.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/FlatTreeNode.js.map +1 -1
- package/lib/presentation-hierarchies-react/LocalizationContext.d.ts +1 -5
- package/lib/presentation-hierarchies-react/LocalizationContext.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/LocalizationContext.js.map +1 -1
- package/lib/presentation-hierarchies-react/Renderers.d.ts +0 -1
- package/lib/presentation-hierarchies-react/Renderers.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/TreeNode.d.ts +1 -2
- package/lib/presentation-hierarchies-react/TreeNode.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/UseIModelTree.d.ts +0 -1
- package/lib/presentation-hierarchies-react/UseIModelTree.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/UseIModelTree.js.map +1 -1
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.d.ts +1 -4
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/UseNodeHighlighting.js.map +1 -1
- package/lib/presentation-hierarchies-react/UseSelectionHandler.d.ts +1 -0
- package/lib/presentation-hierarchies-react/UseSelectionHandler.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/UseSelectionHandler.js.map +1 -1
- package/lib/presentation-hierarchies-react/UseTree.d.ts +4 -11
- package/lib/presentation-hierarchies-react/UseTree.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/UseTree.js +3 -2
- package/lib/presentation-hierarchies-react/UseTree.js.map +1 -1
- package/lib/presentation-hierarchies-react/Utils.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/DisposePolyfill.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/internal/LocalizedStrings.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/TreeActions.js +5 -0
- package/lib/presentation-hierarchies-react/internal/TreeActions.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/TreeLoader.js +3 -0
- package/lib/presentation-hierarchies-react/internal/TreeLoader.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/TreeModel.d.ts +2 -0
- package/lib/presentation-hierarchies-react/internal/TreeModel.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts +2 -1
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.js +1 -1
- package/lib/presentation-hierarchies-react/internal/UseUnifiedSelection.js.map +1 -1
- package/lib/presentation-hierarchies-react/internal/Utils.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts +1 -9
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js +53 -46
- package/lib/presentation-hierarchies-react/stratakit/ErrorItemRenderer.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts +2 -7
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.js +5 -4
- package/lib/presentation-hierarchies-react/stratakit/RootErrorRenderer.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.d.ts +6 -4
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.js +37 -13
- package/lib/presentation-hierarchies-react/stratakit/TreeAction.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts +1 -7
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeErrorRenderer.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts +0 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeFilterAction.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenameAction.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts +3 -0
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js +152 -140
- package/lib/presentation-hierarchies-react/stratakit/TreeNodeRenderer.js.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts +0 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.d.ts.map +1 -1
- package/lib/presentation-hierarchies-react/stratakit/TreeRenderer.js.map +1 -1
- package/lib/presentation-hierarchies-react-extract.d.ts +2 -1
- package/package.json +43 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeModel.js","names":["GenericInstanceFilter","HierarchyNode","ErrorInfo","SelectionChangeType","TreeModelRootNode","id","nodeData","hierarchyLimit","instanceFilter","isLoading","error","TreeModelHierarchyNode","label","children","isExpanded","isSelected","TreeModel","parentChildMap","Map","idToNode","rootNode","expandNode","model","nodeId","node","get","type","removeSubTree","addHierarchyPart","rootId","hierarchyPart","parentId","set","parentNode","undefined","clearNodeError","currentChildren","delete","childId","childNode","setHierarchyLimit","limit","updateForReload","setInstanceFilter","filter","selectNodes","nodeIds","Array","changeType","find","modelNode","isNodeSelected","currentNode","getNode","setIsLoading","update"],"sources":["../../../src/presentation-hierarchies-react/internal/TreeModel.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 type { GenericInstanceFilter, HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport type { ErrorInfo } from \"../TreeNode.js\";\nimport type { SelectionChangeType } from \"../UseSelectionHandler.js\";\n\n/** @internal */\nexport interface TreeModelRootNode {\n id: undefined;\n nodeData: undefined;\n hierarchyLimit?: number | \"unbounded\";\n instanceFilter?: GenericInstanceFilter;\n isLoading?: boolean;\n error?: ErrorInfo;\n}\n\n/** @internal */\nexport interface TreeModelHierarchyNode {\n id: string;\n nodeData: HierarchyNode;\n label: string;\n children: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n isSelected?: boolean;\n hierarchyLimit?: number | \"unbounded\";\n instanceFilter?: GenericInstanceFilter;\n error?: ErrorInfo;\n}\n\n/** @internal */\nexport interface TreeModel {\n parentChildMap: Map<string | undefined, string[]>;\n idToNode: Map<string, TreeModelHierarchyNode>;\n rootNode: TreeModelRootNode;\n}\n\n/** @internal */\nexport namespace TreeModel {\n export function expandNode(\n model: TreeModel,\n nodeId: string,\n isExpanded: boolean,\n ): \"none\" | \"loadChildren\" | \"reloadChildren\" {\n const node = model.idToNode.get(nodeId);\n if (!node) {\n return \"none\";\n }\n\n node.isExpanded = isExpanded;\n if (!isExpanded) {\n return \"none\";\n }\n\n if (node.error?.type === \"ChildrenLoad\") {\n node.isLoading = true;\n // remove subtree if there `ChildrenLoad` error info in order to attempt reloading children\n TreeModel.removeSubTree(model, nodeId);\n return \"reloadChildren\";\n }\n\n if (!node.children) {\n return \"none\";\n }\n\n const children = model.parentChildMap.get(node.id);\n if (!children) {\n node.isLoading = true;\n return \"loadChildren\";\n }\n\n return \"none\";\n }\n\n /** @internal */\n export function addHierarchyPart(model: TreeModel, rootId: string | undefined, hierarchyPart: TreeModel): void {\n removeSubTree(model, rootId);\n model.rootNode.error = hierarchyPart.rootNode.error;\n\n for (const [parentId, children] of hierarchyPart.parentChildMap) {\n model.parentChildMap.set(parentId, children);\n }\n\n for (const [nodeId, node] of hierarchyPart.idToNode) {\n model.idToNode.set(nodeId, node);\n }\n\n const parentNode = rootId !== undefined ? model.idToNode.get(rootId) : model.rootNode;\n if (!parentNode) {\n return;\n }\n parentNode.isLoading = false;\n }\n\n export function removeSubTree(model: TreeModel, parentId: string | undefined): void {\n clearNodeError(model, parentId);\n const currentChildren = model.parentChildMap.get(parentId);\n if (!currentChildren) {\n return;\n }\n model.parentChildMap.delete(parentId);\n\n for (const childId of currentChildren) {\n const childNode = model.idToNode.get(childId);\n if (childNode) {\n removeSubTree(model, childNode.id);\n }\n model.idToNode.delete(childId);\n }\n }\n\n export function setHierarchyLimit(\n model: TreeModel,\n nodeId: string | undefined,\n limit?: number | \"unbounded\",\n ): boolean {\n return updateForReload(model, nodeId, (node) => {\n node.hierarchyLimit = limit;\n });\n }\n\n export function setInstanceFilter(\n model: TreeModel,\n nodeId: string | undefined,\n filter?: GenericInstanceFilter,\n ): boolean {\n return updateForReload(model, nodeId, (node) => {\n if (filter && node.id !== undefined) {\n node.isExpanded = true;\n }\n node.instanceFilter = filter;\n });\n }\n\n export function selectNodes(model: TreeModel, nodeIds: Array<string>, changeType: SelectionChangeType) {\n if (changeType === \"replace\") {\n for (const [nodeId, node] of model.idToNode) {\n node.isSelected = !!nodeIds.find((id) => id === nodeId);\n }\n return;\n }\n for (const nodeId of nodeIds) {\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return;\n }\n modelNode.isSelected = changeType === \"add\";\n }\n }\n\n export function isNodeSelected(model: TreeModel, nodeId: string): boolean {\n const currentNode = model.idToNode.get(nodeId);\n return !!currentNode && !!currentNode.isSelected;\n }\n\n export function getNode(\n model: TreeModel,\n nodeId: string | undefined,\n ): TreeModelHierarchyNode | TreeModelRootNode | undefined {\n if (!nodeId) {\n return model.rootNode;\n }\n return model.idToNode.get(nodeId);\n }\n\n export function setIsLoading(model: TreeModel, nodeId: string | undefined, isLoading: boolean) {\n if (nodeId === undefined) {\n model.rootNode.isLoading = isLoading;\n return;\n }\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return;\n }\n modelNode.isLoading = isLoading;\n }\n}\n\nfunction updateForReload(\n model: TreeModel,\n nodeId: string | undefined,\n update: (node: TreeModelHierarchyNode | TreeModelRootNode) => void,\n) {\n TreeModel.removeSubTree(model, nodeId);\n if (nodeId === undefined) {\n update(model.rootNode);\n model.rootNode.isLoading = true;\n return true;\n }\n\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return false;\n }\n\n update(modelNode);\n if (modelNode.isExpanded) {\n modelNode.isLoading = true;\n return true;\n }\n return false;\n}\n\nfunction clearNodeError(model: TreeModel, parentId: string | undefined) {\n const node = !parentId ? model.rootNode : model.idToNode.get(parentId);\n if (node) {\n node.error = undefined;\n }\n}\n"],"mappings":";AAyCO,
|
|
1
|
+
{"version":3,"file":"TreeModel.js","names":["GenericInstanceFilter","HierarchyNode","ErrorInfo","SelectionChangeType","TreeModelRootNode","id","nodeData","hierarchyLimit","instanceFilter","isLoading","error","TreeModelHierarchyNode","label","children","isExpanded","isSelected","TreeModel","parentChildMap","Map","idToNode","rootNode","expandNode","model","nodeId","node","get","type","removeSubTree","addHierarchyPart","rootId","hierarchyPart","parentId","set","parentNode","undefined","clearNodeError","currentChildren","delete","childId","childNode","setHierarchyLimit","limit","updateForReload","setInstanceFilter","filter","selectNodes","nodeIds","Array","changeType","find","modelNode","isNodeSelected","currentNode","getNode","setIsLoading","update"],"sources":["../../../src/presentation-hierarchies-react/internal/TreeModel.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 type { GenericInstanceFilter, HierarchyNode } from \"@itwin/presentation-hierarchies\";\nimport type { ErrorInfo } from \"../TreeNode.js\";\nimport type { SelectionChangeType } from \"../UseSelectionHandler.js\";\n\n/** @internal */\nexport interface TreeModelRootNode {\n id: undefined;\n nodeData: undefined;\n hierarchyLimit?: number | \"unbounded\";\n instanceFilter?: GenericInstanceFilter;\n isLoading?: boolean;\n error?: ErrorInfo;\n}\n\n/** @internal */\nexport interface TreeModelHierarchyNode {\n id: string;\n nodeData: HierarchyNode;\n label: string;\n children: boolean;\n isLoading?: boolean;\n isExpanded?: boolean;\n isSelected?: boolean;\n hierarchyLimit?: number | \"unbounded\";\n instanceFilter?: GenericInstanceFilter;\n error?: ErrorInfo;\n}\n\n/** @internal */\nexport interface TreeModel {\n parentChildMap: Map<string | undefined, string[]>;\n idToNode: Map<string, TreeModelHierarchyNode>;\n rootNode: TreeModelRootNode;\n}\n\n/** @internal */\nexport namespace TreeModel {\n export function expandNode(\n model: TreeModel,\n nodeId: string,\n isExpanded: boolean,\n ): \"none\" | \"loadChildren\" | \"reloadChildren\" {\n const node = model.idToNode.get(nodeId);\n if (!node) {\n return \"none\";\n }\n\n node.isExpanded = isExpanded;\n if (!isExpanded) {\n return \"none\";\n }\n\n if (node.error?.type === \"ChildrenLoad\") {\n node.isLoading = true;\n // remove subtree if there `ChildrenLoad` error info in order to attempt reloading children\n TreeModel.removeSubTree(model, nodeId);\n return \"reloadChildren\";\n }\n\n if (!node.children) {\n return \"none\";\n }\n\n const children = model.parentChildMap.get(node.id);\n if (!children) {\n node.isLoading = true;\n return \"loadChildren\";\n }\n\n return \"none\";\n }\n\n /** @internal */\n export function addHierarchyPart(model: TreeModel, rootId: string | undefined, hierarchyPart: TreeModel): void {\n removeSubTree(model, rootId);\n model.rootNode.error = hierarchyPart.rootNode.error;\n\n for (const [parentId, children] of hierarchyPart.parentChildMap) {\n model.parentChildMap.set(parentId, children);\n }\n\n for (const [nodeId, node] of hierarchyPart.idToNode) {\n model.idToNode.set(nodeId, node);\n }\n\n const parentNode = rootId !== undefined ? model.idToNode.get(rootId) : model.rootNode;\n if (!parentNode) {\n return;\n }\n parentNode.isLoading = false;\n }\n\n export function removeSubTree(model: TreeModel, parentId: string | undefined): void {\n clearNodeError(model, parentId);\n const currentChildren = model.parentChildMap.get(parentId);\n if (!currentChildren) {\n return;\n }\n model.parentChildMap.delete(parentId);\n\n for (const childId of currentChildren) {\n const childNode = model.idToNode.get(childId);\n if (childNode) {\n removeSubTree(model, childNode.id);\n }\n model.idToNode.delete(childId);\n }\n }\n\n export function setHierarchyLimit(\n model: TreeModel,\n nodeId: string | undefined,\n limit?: number | \"unbounded\",\n ): boolean {\n return updateForReload(model, nodeId, (node) => {\n node.hierarchyLimit = limit;\n });\n }\n\n export function setInstanceFilter(\n model: TreeModel,\n nodeId: string | undefined,\n filter?: GenericInstanceFilter,\n ): boolean {\n return updateForReload(model, nodeId, (node) => {\n if (filter && node.id !== undefined) {\n node.isExpanded = true;\n }\n node.instanceFilter = filter;\n });\n }\n\n export function selectNodes(model: TreeModel, nodeIds: Array<string>, changeType: SelectionChangeType) {\n if (changeType === \"replace\") {\n for (const [nodeId, node] of model.idToNode) {\n node.isSelected = !!nodeIds.find((id) => id === nodeId);\n }\n return;\n }\n for (const nodeId of nodeIds) {\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return;\n }\n modelNode.isSelected = changeType === \"add\";\n }\n }\n\n export function isNodeSelected(model: TreeModel, nodeId: string): boolean {\n const currentNode = model.idToNode.get(nodeId);\n return !!currentNode && !!currentNode.isSelected;\n }\n\n export function getNode(\n model: TreeModel,\n nodeId: string | undefined,\n ): TreeModelHierarchyNode | TreeModelRootNode | undefined {\n if (!nodeId) {\n return model.rootNode;\n }\n return model.idToNode.get(nodeId);\n }\n\n export function setIsLoading(model: TreeModel, nodeId: string | undefined, isLoading: boolean) {\n if (nodeId === undefined) {\n model.rootNode.isLoading = isLoading;\n return;\n }\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return;\n }\n modelNode.isLoading = isLoading;\n }\n}\n\nfunction updateForReload(\n model: TreeModel,\n nodeId: string | undefined,\n update: (node: TreeModelHierarchyNode | TreeModelRootNode) => void,\n) {\n TreeModel.removeSubTree(model, nodeId);\n if (nodeId === undefined) {\n update(model.rootNode);\n model.rootNode.isLoading = true;\n return true;\n }\n\n const modelNode = model.idToNode.get(nodeId);\n if (!modelNode) {\n return false;\n }\n\n update(modelNode);\n if (modelNode.isExpanded) {\n modelNode.isLoading = true;\n return true;\n }\n return false;\n}\n\nfunction clearNodeError(model: TreeModel, parentId: string | undefined) {\n const node = !parentId ? model.rootNode : model.idToNode.get(parentId);\n if (node) {\n node.error = undefined;\n }\n}\n"],"mappings":";AAyCO,IAAUgB;CAAV,SAAA,YAAA;CACE,SAASK,WACdC,OACAC,QACAT,YAC4C;EAC5C,MAAMU,OAAOF,MAAMH,SAASM,IAAIF,MAAM;EACtC,IAAI,CAACC,MACH,OAAO;EAGTA,KAAKV,aAAaA;EAClB,IAAI,CAACA,YACH,OAAO;EAGT,IAAIU,KAAKd,OAAOgB,SAAS,gBAAgB;GACvCF,KAAKf,YAAY;GAEjBO,UAAUW,cAAcL,OAAOC,MAAM;GACrC,OAAO;EACT;EAEA,IAAI,CAACC,KAAKX,UACR,OAAO;EAIT,IAAI,CADaS,MAAML,eAAeQ,IAAID,KAAKnB,EAC1CQ,GAAU;GACbW,KAAKf,YAAY;GACjB,OAAO;EACT;EAEA,OAAO;CACT;;CAGO,SAASmB,iBAAiBN,OAAkBO,QAA4BC,eAAgC;EAC7GH,cAAcL,OAAOO,MAAM;EAC3BP,MAAMF,SAASV,QAAQoB,cAAcV,SAASV;EAE9C,KAAK,MAAM,CAACqB,UAAUlB,aAAaiB,cAAcb,gBAC/CK,MAAML,eAAee,IAAID,UAAUlB,QAAQ;EAG7C,KAAK,MAAM,CAACU,QAAQC,SAASM,cAAcX,UACzCG,MAAMH,SAASa,IAAIT,QAAQC,IAAI;EAGjC,MAAMS,aAAaJ,WAAWK,KAAAA,IAAYZ,MAAMH,SAASM,IAAII,MAAM,IAAIP,MAAMF;EAC7E,IAAI,CAACa,YACH;EAEFA,WAAWxB,YAAY;CACzB;;CAEO,SAASkB,cAAcL,OAAkBS,UAAoC;EAClFI,eAAeb,OAAOS,QAAQ;EAC9B,MAAMK,kBAAkBd,MAAML,eAAeQ,IAAIM,QAAQ;EACzD,IAAI,CAACK,iBACH;EAEFd,MAAML,eAAeoB,OAAON,QAAQ;EAEpC,KAAK,MAAMO,WAAWF,iBAAiB;GACrC,MAAMG,YAAYjB,MAAMH,SAASM,IAAIa,OAAO;GAC5C,IAAIC,WACFZ,cAAcL,OAAOiB,UAAUlC,EAAE;GAEnCiB,MAAMH,SAASkB,OAAOC,OAAO;EAC/B;CACF;;CAEO,SAASE,kBACdlB,OACAC,QACAkB,OACS;EACT,OAAOC,gBAAgBpB,OAAOC,SAASC,SAAS;GAC9CA,KAAKjB,iBAAiBkC;EACxB,CAAC;CACH;;CAEO,SAASE,kBACdrB,OACAC,QACAqB,QACS;EACT,OAAOF,gBAAgBpB,OAAOC,SAASC,SAAS;GAC9C,IAAIoB,UAAUpB,KAAKnB,OAAO6B,KAAAA,GACxBV,KAAKV,aAAa;GAEpBU,KAAKhB,iBAAiBoC;EACxB,CAAC;CACH;;CAEO,SAASC,YAAYvB,OAAkBwB,SAAwBE,YAAiC;EACrG,IAAIA,eAAe,WAAW;GAC5B,KAAK,MAAM,CAACzB,QAAQC,SAASF,MAAMH,UACjCK,KAAKT,aAAa,CAAC,CAAC+B,QAAQG,MAAM5C,OAAOA,OAAOkB,MAAM;GAExD;EACF;EACA,KAAK,MAAMA,UAAUuB,SAAS;GAC5B,MAAMI,YAAY5B,MAAMH,SAASM,IAAIF,MAAM;GAC3C,IAAI,CAAC2B,WACH;GAEFA,UAAUnC,aAAaiC,eAAe;EACxC;CACF;;CAEO,SAASG,eAAe7B,OAAkBC,QAAyB;EACxE,MAAM6B,cAAc9B,MAAMH,SAASM,IAAIF,MAAM;EAC7C,OAAO,CAAC,CAAC6B,eAAe,CAAC,CAACA,YAAYrC;CACxC;;CAEO,SAASsC,QACd/B,OACAC,QACwD;EACxD,IAAI,CAACA,QACH,OAAOD,MAAMF;EAEf,OAAOE,MAAMH,SAASM,IAAIF,MAAM;CAClC;;CAEO,SAAS+B,aAAahC,OAAkBC,QAA4Bd,WAAoB;EAC7F,IAAIc,WAAWW,KAAAA,GAAW;GACxBZ,MAAMF,SAASX,YAAYA;GAC3B;EACF;EACA,MAAMyC,YAAY5B,MAAMH,SAASM,IAAIF,MAAM;EAC3C,IAAI,CAAC2B,WACH;EAEFA,UAAUzC,YAAYA;CACxB;;AACF,EAAA,CAAA,cAAA,YAAA,CAAA,EAAA;AAEA,SAASiC,gBACPpB,OACAC,QACAgC,QACA;CACAvC,UAAUW,cAAcL,OAAOC,MAAM;CACrC,IAAIA,WAAWW,KAAAA,GAAW;EACxBqB,OAAOjC,MAAMF,QAAQ;EACrBE,MAAMF,SAASX,YAAY;EAC3B,OAAO;CACT;CAEA,MAAMyC,YAAY5B,MAAMH,SAASM,IAAIF,MAAM;CAC3C,IAAI,CAAC2B,WACH,OAAO;CAGTK,OAAOL,SAAS;CAChB,IAAIA,UAAUpC,YAAY;EACxBoC,UAAUzC,YAAY;EACtB,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAS0B,eAAeb,OAAkBS,UAA8B;CACtE,MAAMP,OAAO,CAACO,WAAWT,MAAMF,WAAWE,MAAMH,SAASM,IAAIM,QAAQ;CACrE,IAAIP,MACFA,KAAKd,QAAQwB,KAAAA;AAEjB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import "../UseSelectionHandler.js";
|
|
2
|
+
import "./TreeModel.js";
|
|
1
3
|
import { GenericNodeKey, NonGroupingHierarchyNode } from "@itwin/presentation-hierarchies";
|
|
2
4
|
import { Selectable, SelectionStorage } from "@itwin/unified-selection";
|
|
3
|
-
|
|
4
5
|
//#region src/presentation-hierarchies-react/internal/UseUnifiedSelection.d.ts
|
|
5
6
|
/** @public */
|
|
6
7
|
interface UseUnifiedTreeSelectionProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseUnifiedSelection.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/internal/UseUnifiedSelection.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"UseUnifiedSelection.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/internal/UseUnifiedSelection.ts"],"mappings":";;;;;;UAuBiB;;;;EAIf;;;;;;;;;;;;;;;EAgBA,kCACE,MAAM;IAA6B,KAAK;KACxC,4BACG;;;;EAKL,kBAAkB"}
|
|
@@ -121,7 +121,7 @@ function groupNodeSelectablesByIModelKey(modelNode, createSelectableForGenericNo
|
|
|
121
121
|
return groupingNodeSelectables;
|
|
122
122
|
}
|
|
123
123
|
assert(HierarchyNode.isGeneric(hierarchyNode));
|
|
124
|
-
return new Map([["", [createSelectableForGenericNode(hierarchyNode, modelNode.id)]]]);
|
|
124
|
+
return /* @__PURE__ */ new Map([["", [createSelectableForGenericNode(hierarchyNode, modelNode.id)]]]);
|
|
125
125
|
}
|
|
126
126
|
function groupIModelInstanceKeys(instanceKeys) {
|
|
127
127
|
return instanceKeys.reduce((imodelSelectables, key) => {
|
|
@@ -1 +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?: (\n node: NonGroupingHierarchyNode & { key: GenericNodeKey },\n treeModelNodeId: string,\n ) => 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 & {\n getTreeModelNode: (nodeId: string) => TreeModelHierarchyNode | TreeModelRootNode | undefined;\n}): TreeSelectionOptions {\n const [options, setOptions] = useState<TreeSelectionOptions>(() => ({\n isNodeSelected: () => false,\n selectNodes: () => {},\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<\n UseUnifiedTreeSelectionProps[\"createSelectableForGenericNode\"]\n> = (node, treeModelNodeId): Selectable => ({ identifier: treeModelNodeId, data: node, async *loadInstanceKeys() {} });\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(\n node,\n createSelectableForGenericNode,\n )) {\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(\n node,\n createSelectableForGenericNode,\n )) {\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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"}
|
|
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?: (\n node: NonGroupingHierarchyNode & { key: GenericNodeKey },\n treeModelNodeId: string,\n ) => 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 & {\n getTreeModelNode: (nodeId: string) => TreeModelHierarchyNode | TreeModelRootNode | undefined;\n}): TreeSelectionOptions {\n const [options, setOptions] = useState<TreeSelectionOptions>(() => ({\n isNodeSelected: () => false,\n selectNodes: () => {},\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<\n UseUnifiedTreeSelectionProps[\"createSelectableForGenericNode\"]\n> = (node, treeModelNodeId): Selectable => ({ identifier: treeModelNodeId, data: node, async *loadInstanceKeys() {} });\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(\n node,\n createSelectableForGenericNode,\n )) {\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(\n node,\n createSelectableForGenericNode,\n )) {\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":";;;;;;;AAuDA,SAAO4B,wBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAiC,MAAA,EAAAT,YAAAK,kBAAAK,kBAAAT,gCAAAU,OAAAJ;CAItC,MAAAN,iCAAAU,OAAAC,KAAAA,IAAAC,wCAAAF;CAIA,MAAA,CAAAG,SAAAC,cAA8BpC,SAA+BqC,MAG3D;CAAE,IAAAC;CAAA,IAAAC;CAAA,IAAAV,EAAA,OAAAP,kCAAAO,EAAA,OAAAE,oBAAAF,EAAA,OAAAH,oBAAAG,EAAA,OAAAR,YAAA;EAEMiB,WAAA;GAERF,WAAWI,cAAcnB,YAAYK,kBAAkBJ,gCAAgCS,gBAAgB,CAAC;GAAC,OAClGL,iBAAgBe,qBAAqBC,aAAaC,SAAA;IACvD,IAAIA,KAAIC,QAAS,GAAC;IAGlBR,WAAWI,cAAcnB,YAAYK,kBAAkBJ,gCAAgCS,gBAAgB,CAAC;GAAC,CAC1G;EAAC;EACDQ,KAAA;GAACb;GAAkBJ;GAAgCS;GAAkBV;EAAU;EAACQ,EAAA,KAAAP;EAAAO,EAAA,KAAAE;EAAAF,EAAA,KAAAH;EAAAG,EAAA,KAAAR;EAAAQ,EAAA,KAAAS;EAAAT,EAAA,KAAAU;CAAA,OAAA;EAAAD,KAAAT,EAAA;EAAAU,KAAAV,EAAA;CAAA;CATnF9B,UAAUuC,IASPC,EAAgF;CAAC,OAE7EJ;AAAO;AAxBT,SAAAE,SAAA;CAAA,OAQ+D;EAAAvB,gBAClD+B;EAAW7B,aACd8B;CACf;AAAC;AAXI,SAAAA,SAAA,CAAA;AAAA,SAAAD,QAAA;CAAA,OASmB;AAAK;AAkB/B,MAAMX,yCAEDX,MAAME,qBAAiC;CAAEuB,YAAYvB;CAAiBwB,MAAM1B;CAAM,OAAO2B,mBAAmB,CAAC;AAAE;AAEpH,SAASV,cACPW,QACAC,SACA9B,gCACA+B,SACsB;CACtB,OAAO;EACLvC,iBAAiBC,WAAmB;GAClC,MAAMQ,OAAO8B,QAAQtC,MAAM;GAC3B,IAAI,CAACQ,QAAQA,KAAK+B,OAAOrB,KAAAA,GACvB,OAAO;GAET,KAAK,MAAM,CAACsB,WAAWC,oBAAoBC,gCACzClC,MACAD,8BACF,GAAG;IACD,MAAMoC,qBAAqBN,QAAQO,aAAa;KAAEJ;KAAWX,OAAO;IAAE,CAAC;IACvE,IAAIzC,YAAYyD,OAAOF,oBAAoBF,eAAe,GACxD,OAAO;GAEX;GACA,OAAO;EACT;EAEAxC,cAAcC,SAAwBE,eAAoC;GACxE,MAAM0C,oCAAoB,IAAIC,IAA0B;GACxD,KAAK,MAAM/C,UAAUE,SAAS;IAC5B,MAAMM,OAAO8B,QAAQtC,MAAM;IAC3B,IAAI,CAACQ,QAAQA,KAAK+B,OAAOrB,KAAAA,GACvB;IAEF,KAAK,MAAM,CAACsB,WAAWC,oBAAoBC,gCACzClC,MACAD,8BACF,GAAG;KACD,IAAIyC,kBAAkBF,kBAAkBG,IAAIT,SAAS;KACrD,IAAI,CAACQ,iBAAiB;MACpBA,kBAAkB,CAAA;MAClBF,kBAAkBI,IAAIV,WAAWQ,eAAe;KAClD;KACAP,gBAAgBU,SAASC,eAAeJ,gBAAgBK,KAAKD,UAAU,CAAC;IAC1E;GACF;GACAN,kBAAkBK,SAASG,aAAad,cAAc;IACpD,MAAMe,cAAc;KAAEf;KAAWJ;KAAQkB;KAAazB,OAAO;IAAE;IAC/D,QAAQzB,YAAR;KACE,KAAK;MACHiC,QAAQmB,eAAeD,WAAW;MAClC;KACF,KAAK;MACHlB,QAAQoB,oBAAoBF,WAAW;MACvC;KACF,KAAK;MACHlB,QAAQqB,iBAAiBH,WAAW;MACpC;IACJ;GACF,CAAC;EACH;CACF;AACF;AAEA,SAASb,gCACPiB,WACApD,gCAC2B;CAC3B,MAAMqD,gBAAgBD,UAAUE;CAChC,IAAI1E,cAAc2E,gBAAgBF,aAAa,GAC7C,OAAOG,wBAAwBH,cAAcnD,IAAIuD,YAAY;CAE/D,IAAI7E,cAAc8E,eAAeL,aAAa,GAAG;EAC/C,MAAMM,0CAA0B,IAAInB,IAA0B;EAC9DgB,wBAAwBH,cAAcO,mBAAmB,CAAC,CAAChB,SAASa,cAAcxB,cAAc;GAC9F0B,wBAAwBhB,IAAIV,WAAW,CACrC;IACEP,YAAY0B,UAAUpB;IACtBL,MAAM0B;IACN,OAAOzB,mBAAmB;KACxB,KAAK,MAAM1B,OAAOuD,cAChB,MAAMvD;IAEV;GACF,CAAC,CACF;EACH,CAAC;EACD,OAAOyD;CACT;CACAhF,OAAOC,cAAciF,UAAUR,aAAa,CAAC;CAE7C,uBAAO,IAAIb,IAAI,CAAC,CAAC,IAAI,CAACxC,+BAA+BqD,eAAeD,UAAUpB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF;AAEA,SAASwB,wBAAwBC,cAAgD;CAC/E,OAAOA,aAAaK,QAAQvB,mBAAmBrC,QAAQ;EACrD,MAAM+B,YAAY/B,IAAI+B,aAAa;EACnC,IAAIQ,kBAAkBF,kBAAkBG,IAAIT,SAAS;EACrD,IAAI,CAACQ,iBAAiB;GACpBA,kBAAkB,CAAA;GAClBF,kBAAkBI,IAAIV,WAAWQ,eAAe;EAClD;EACAA,gBAAgBK,KAAK5C,GAAG;EACxB,OAAOqC;CACT,mBAAG,IAAIC,IAA2B,CAAC;AACrC"}
|
|
@@ -1 +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;
|
|
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;CAC5E,OAAO,CAAC,GAAGA,KAAKE,WAAWC,IAAIC,gBAAgB,GAAGA,iBAAiBJ,KAAKK,GAAG,CAAC,CAAC,CAACC,KAAK,GAAG;AACxF;AAEA,SAASF,iBAAiBC,KAA+B;CACvD,OAAOE,4BAA4BF,GAAG;AACxC;AAEA,SAASE,4BAA4BC,KAAqB;CACxD,OAAOC,OAAOC,QAAQF,GAAG,CAAC,CACvBL,KAAK,GAAGQ,WAAW;EAClB,IAAI,OAAOA,UAAU,UACnB,OAAOJ,4BAA4BI,KAAK;EAE1C,OAAOC,OAAOD,KAAK;CACrB,CAAC,CAAC,CACDL,KAAK,GAAG;AACb;;AAGA,SAAgBO,UAAUC,KAAoBC,KAA6B;CACzE,IAAIlB,iBAAiBmB,QAAQF,IAAIT,KAAKU,IAAIV,GAAG,MAAM,GACjD,OAAO;CAGT,IAAIS,IAAIZ,WAAWe,WAAWF,IAAIb,WAAWe,QAC3C,OAAO;CAGT,KAAK,IAAIC,IAAIJ,IAAIZ,WAAWe,SAAS,GAAGC,KAAK,GAAG,EAAEA,GAChD,IAAIrB,iBAAiBmB,QAAQF,IAAIZ,WAAWgB,IAAIH,IAAIb,WAAWgB,EAAE,MAAM,GACrE,OAAO;CAGX,OAAO;AACT;;AAGA,MAAaC,qBAAqB;;;;;;;;;;AAWlC,SAAgBC,YAAYC,YAA6E;CACvG,IAAI,aAAaA,YACfA,WAAWE,QAAQ;MACd,IAAID,OAAOC,WAAWF,YAC3BA,WAAWC,OAAOC,QAAQ,CAAC;AAE/B"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ErrorInfo, TreeNode } from "../TreeNode.js";
|
|
2
2
|
import { HierarchyLevelDetails, TreeRendererProps } from "../Renderers.js";
|
|
3
3
|
import { JSX } from "react";
|
|
4
|
-
|
|
5
4
|
//#region src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.d.ts
|
|
6
5
|
/** @alpha */
|
|
7
6
|
interface ErrorItemRendererProps extends Pick<TreeRendererProps, "getHierarchyLevelDetails"> {
|
|
@@ -27,14 +26,7 @@ interface ErrorItemRendererProps extends Pick<TreeRendererProps, "getHierarchyLe
|
|
|
27
26
|
*
|
|
28
27
|
* @alpha
|
|
29
28
|
*/
|
|
30
|
-
declare function ErrorItemRenderer({
|
|
31
|
-
treeNode,
|
|
32
|
-
error,
|
|
33
|
-
getHierarchyLevelDetails,
|
|
34
|
-
filterHierarchyLevel,
|
|
35
|
-
reloadTree,
|
|
36
|
-
scrollToNode
|
|
37
|
-
}: ErrorItemRendererProps): JSX.Element;
|
|
29
|
+
declare function ErrorItemRenderer({ treeNode, error, getHierarchyLevelDetails, filterHierarchyLevel, reloadTree, scrollToNode }: ErrorItemRendererProps): JSX.Element;
|
|
38
30
|
//#endregion
|
|
39
31
|
export { ErrorItemRenderer, ErrorItemRendererProps };
|
|
40
32
|
//# sourceMappingURL=ErrorItemRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorItemRenderer.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"ErrorItemRenderer.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx"],"mappings":";;;;;UAeiB,+BAA+B,KAAK;;EAEnD,UAAU,KAAK;;EAEf,OAAO;;EAEP,aAAa;IAAW;;;EAExB,eAAe,UAAU,KAAK;;EAE9B,wBAAwB,uBAAuB;;;;;;;;;;;iBAYjC,oBACd,UACA,OACA,0BACA,sBACA,YACA,gBACC,yBAAyB,IAAI"}
|
|
@@ -2,8 +2,8 @@ import { MAX_LIMIT_OVERRIDE } from "../internal/Utils.js";
|
|
|
2
2
|
import { useTranslation } from "../LocalizationContext.js";
|
|
3
3
|
import { c } from "react-compiler-runtime";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { Link, Typography } from "@mui/material";
|
|
5
6
|
import { unstable_ErrorRegion } from "@stratakit/structures";
|
|
6
|
-
import { Anchor, Text } from "@stratakit/bricks";
|
|
7
7
|
//#region src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx
|
|
8
8
|
/**
|
|
9
9
|
* Renders StrataKit `<ErrorRegion.Item />` for all supported error types:
|
|
@@ -309,11 +309,12 @@ function ErrorItemContainer(t0) {
|
|
|
309
309
|
}
|
|
310
310
|
function _temp4(t0) {
|
|
311
311
|
const { label, action } = t0;
|
|
312
|
-
return /* @__PURE__ */ jsx(
|
|
313
|
-
variant: "
|
|
314
|
-
|
|
312
|
+
return /* @__PURE__ */ jsx(Typography, {
|
|
313
|
+
variant: "caption",
|
|
314
|
+
render: /* @__PURE__ */ jsx("div", {}),
|
|
315
|
+
children: /* @__PURE__ */ jsx(Link, {
|
|
316
|
+
render: /* @__PURE__ */ jsx("button", { type: "button" }),
|
|
315
317
|
onClick: action,
|
|
316
|
-
render: /* @__PURE__ */ jsx("button", {}),
|
|
317
318
|
children: label
|
|
318
319
|
})
|
|
319
320
|
}, label);
|
|
@@ -323,57 +324,63 @@ function _temp3(t0) {
|
|
|
323
324
|
return condition();
|
|
324
325
|
}
|
|
325
326
|
function MessageWithLink(t0) {
|
|
326
|
-
const $ = c(
|
|
327
|
+
const $ = c(13);
|
|
327
328
|
const { linkLabel, scrollToElement, message } = t0;
|
|
329
|
+
let firstPart;
|
|
328
330
|
let t1;
|
|
329
331
|
if ($[0] !== message) {
|
|
330
|
-
|
|
332
|
+
const splitMessage = message.split("{{node}}", 2);
|
|
333
|
+
firstPart = splitMessage[0].trimEnd();
|
|
334
|
+
t1 = splitMessage[1]?.trimStart();
|
|
331
335
|
$[0] = message;
|
|
332
|
-
$[1] =
|
|
333
|
-
|
|
334
|
-
|
|
336
|
+
$[1] = firstPart;
|
|
337
|
+
$[2] = t1;
|
|
338
|
+
} else {
|
|
339
|
+
firstPart = $[1];
|
|
340
|
+
t1 = $[2];
|
|
341
|
+
}
|
|
342
|
+
const secondPart = t1;
|
|
335
343
|
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
344
|
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
346
|
-
|
|
347
|
-
$[3] =
|
|
348
|
-
} else
|
|
345
|
+
t2 = /* @__PURE__ */ jsx("button", { type: "button" });
|
|
346
|
+
$[3] = t2;
|
|
347
|
+
} else t2 = $[3];
|
|
348
|
+
let t3;
|
|
349
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
350
|
+
t3 = { verticalAlign: "baseline" };
|
|
351
|
+
$[4] = t3;
|
|
352
|
+
} else t3 = $[4];
|
|
349
353
|
let t4;
|
|
350
|
-
if ($[
|
|
351
|
-
t4 = /* @__PURE__ */ jsx(
|
|
354
|
+
if ($[5] !== linkLabel || $[6] !== scrollToElement) {
|
|
355
|
+
t4 = /* @__PURE__ */ jsx(Link, {
|
|
356
|
+
render: t2,
|
|
352
357
|
onClick: scrollToElement,
|
|
353
|
-
|
|
358
|
+
variant: "caption",
|
|
359
|
+
style: t3,
|
|
354
360
|
children: linkLabel
|
|
355
361
|
});
|
|
356
|
-
$[
|
|
357
|
-
$[
|
|
358
|
-
$[
|
|
359
|
-
} else t4 = $[
|
|
360
|
-
const t5 =
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
});
|
|
371
|
-
$[
|
|
372
|
-
$[
|
|
373
|
-
$[
|
|
374
|
-
$[
|
|
375
|
-
|
|
376
|
-
|
|
362
|
+
$[5] = linkLabel;
|
|
363
|
+
$[6] = scrollToElement;
|
|
364
|
+
$[7] = t4;
|
|
365
|
+
} else t4 = $[7];
|
|
366
|
+
const t5 = secondPart ? " " : "";
|
|
367
|
+
const t6 = secondPart ? secondPart : null;
|
|
368
|
+
let t7;
|
|
369
|
+
if ($[8] !== firstPart || $[9] !== t4 || $[10] !== t5 || $[11] !== t6) {
|
|
370
|
+
t7 = /* @__PURE__ */ jsxs("div", { children: [
|
|
371
|
+
firstPart,
|
|
372
|
+
" ",
|
|
373
|
+
t4,
|
|
374
|
+
t5,
|
|
375
|
+
t6
|
|
376
|
+
] });
|
|
377
|
+
$[8] = firstPart;
|
|
378
|
+
$[9] = t4;
|
|
379
|
+
$[10] = t5;
|
|
380
|
+
$[11] = t6;
|
|
381
|
+
$[12] = t7;
|
|
382
|
+
} else t7 = $[12];
|
|
383
|
+
return t7;
|
|
377
384
|
}
|
|
378
385
|
//#endregion
|
|
379
386
|
export { ErrorItemRenderer };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorItemRenderer.js","names":["Anchor","Text","unstable_ErrorRegion","ErrorRegion","MAX_LIMIT_OVERRIDE","useTranslation","JSX","HierarchyLevelDetails","TreeRendererProps","ErrorInfo","TreeNode","ErrorItemRendererProps","Pick","treeNode","Omit","error","reloadTree","options","parentNodeId","scrollToNode","filterHierarchyLevel","hierarchyLevelDetails","ErrorItemRenderer","t0","$","_c","getHierarchyLevelDetails","translate","type","limit","resultSetSizeLimit","t1","id","setSizeLimit","onOverrideLimit","t2","t3","replace","toString","t4","t5","action","label","condition","t6","t7","t8","isFilterable","t9","t10","t11","t12","t13","hierarchyLevelDetails_0","_temp","_temp2","message","ErrorItemContainerProps","actions","MessageWithLinkProps","ErrorItemContainer","scrollToElement","filter","_temp3","map","_temp4","linkLabel","MessageWithLink","split","splitMessage","Symbol","for","display","whiteSpace","flexWrap"],"sources":["../../../src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx"],"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 { Anchor, Text } from \"@stratakit/bricks\";\nimport { unstable_ErrorRegion as ErrorRegion } from \"@stratakit/structures\";\nimport { MAX_LIMIT_OVERRIDE } from \"../internal/Utils.js\";\nimport { useTranslation } from \"../LocalizationContext.js\";\n\nimport type { JSX } from \"react\";\nimport type { HierarchyLevelDetails, TreeRendererProps } from \"../Renderers.js\";\nimport type { ErrorInfo, TreeNode } from \"../TreeNode.js\";\n\n/** @alpha */\nexport interface ErrorItemRendererProps extends Pick<TreeRendererProps, \"getHierarchyLevelDetails\"> {\n /** The tree node associated with the error. Used for displaying the node label in error messages and for scrolling to the node. */\n treeNode: Omit<TreeNode, \"errors\">;\n /** The error to render. */\n error: ErrorInfo;\n /** A callback to reload a hierarchy level when an error occurs and `retry` button is clicked. */\n reloadTree: (options: { parentNodeId: string | undefined }) => void;\n /** A callback to scroll to the node associated with the error. */\n scrollToNode: (treeNode: Omit<TreeNode, \"errors\">) => void;\n /** A callback to initiate filtering of the given hierarchy level. */\n filterHierarchyLevel?: (hierarchyLevelDetails: HierarchyLevelDetails) => void;\n}\n\n/**\n * Renders StrataKit `<ErrorRegion.Item />` for all supported error types:\n * - `ResultSetTooLarge` - renders `resultLimitExceeded` message with actions to increase limit or apply filtering\n * - `NoFilterMatches` - renders `noFilteredChildren` message with action to change filter\n * - `ChildrenLoad` - renders `failedToCreateHierarchy` message with action to retry loading\n * - `Unknown` - renders message set on error object.\n *\n * @alpha\n */\nexport function ErrorItemRenderer({\n treeNode,\n error,\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree,\n scrollToNode,\n}: ErrorItemRendererProps): JSX.Element {\n const translate = useTranslation();\n\n if (error.type === \"ResultSetTooLarge\") {\n const limit = error.resultSetSizeLimit;\n const onOverrideLimit = () => getHierarchyLevelDetails(treeNode.id)?.setSizeLimit(MAX_LIMIT_OVERRIDE);\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n {\n action: () => {\n onOverrideLimit();\n },\n label: translate(\"increaseHierarchyLimit\").replace(\"{{limit}}\", MAX_LIMIT_OVERRIDE.toString()),\n condition: () => limit < MAX_LIMIT_OVERRIDE,\n },\n {\n action: () => {\n const hierarchyLevelDetails = getHierarchyLevelDetails(treeNode.id);\n hierarchyLevelDetails && filterHierarchyLevel?.(hierarchyLevelDetails);\n },\n label: translate(\"increaseHierarchyLimitWithFiltering\"),\n condition: () => !!filterHierarchyLevel && !!treeNode.isFilterable,\n },\n ]}\n message={translate(\"resultLimitExceeded\").replace(\"{{limit}}\", limit.toString())}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n if (error.type === \"NoFilterMatches\") {\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n {\n action: () => {\n const hierarchyLevelDetails = getHierarchyLevelDetails(treeNode.id);\n hierarchyLevelDetails && filterHierarchyLevel?.(hierarchyLevelDetails);\n },\n label: translate(\"noFilteredChildrenChangeFilter\"),\n condition: () => true,\n },\n ]}\n message={translate(\"noFilteredChildren\")}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n if (error.type === \"ChildrenLoad\") {\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n { action: () => reloadTree({ parentNodeId: treeNode.id }), label: translate(\"retry\"), condition: () => true },\n ]}\n message={translate(\"failedToCreateHierarchy\")}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n return (\n <ErrorItemContainer treeNode={treeNode} message={error.message} scrollToElement={() => scrollToNode(treeNode)} />\n );\n}\n\ntype ErrorItemContainerProps = {\n treeNode: Omit<TreeNode, \"errors\">;\n message: string;\n actions?: { action: () => void; label: string; condition: () => boolean }[];\n} & Pick<MessageWithLinkProps, \"scrollToElement\">;\n\nfunction ErrorItemContainer({ treeNode, message, actions, scrollToElement }: ErrorItemContainerProps) {\n return (\n <ErrorRegion.Item\n message={<MessageWithLink linkLabel={treeNode.label} scrollToElement={scrollToElement} message={message} />}\n messageId={treeNode.id}\n actions={actions\n ?.filter(({ condition }) => condition())\n .map(({ label, action }) => (\n <Text key={label} variant=\"body-sm\">\n <Anchor onClick={action} render={<button />}>\n {label}\n </Anchor>\n </Text>\n ))}\n />\n );\n}\n\ninterface MessageWithLinkProps {\n scrollToElement: () => void;\n message: string;\n linkLabel?: string;\n}\n\nfunction MessageWithLink({ linkLabel, scrollToElement, message }: MessageWithLinkProps) {\n const splitMessage = message.split(\"{{node}}\", 2);\n return (\n <div style={{ display: \"flex\", whiteSpace: \"pre\", flexWrap: \"wrap\" }}>\n {splitMessage[0]}\n <Anchor onClick={scrollToElement} render={<button />}>\n {linkLabel}\n </Anchor>\n {splitMessage[1] ? splitMessage[1] : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ErrorItemRenderer.js","names":["Link","Typography","unstable_ErrorRegion","ErrorRegion","MAX_LIMIT_OVERRIDE","useTranslation","JSX","HierarchyLevelDetails","TreeRendererProps","ErrorInfo","TreeNode","ErrorItemRendererProps","Pick","treeNode","Omit","error","reloadTree","options","parentNodeId","scrollToNode","filterHierarchyLevel","hierarchyLevelDetails","ErrorItemRenderer","t0","$","_c","getHierarchyLevelDetails","translate","type","limit","resultSetSizeLimit","t1","id","setSizeLimit","onOverrideLimit","t2","t3","replace","toString","t4","t5","action","label","condition","t6","t7","t8","isFilterable","t9","t10","t11","t12","t13","hierarchyLevelDetails_0","_temp","_temp2","message","ErrorItemContainerProps","actions","MessageWithLinkProps","ErrorItemContainer","scrollToElement","filter","_temp3","map","_temp4","linkLabel","MessageWithLink","firstPart","splitMessage","split","trimEnd","trimStart","secondPart","Symbol","for","verticalAlign"],"sources":["../../../src/presentation-hierarchies-react/stratakit/ErrorItemRenderer.tsx"],"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 { Link, Typography } from \"@mui/material\";\nimport { unstable_ErrorRegion as ErrorRegion } from \"@stratakit/structures\";\nimport { MAX_LIMIT_OVERRIDE } from \"../internal/Utils.js\";\nimport { useTranslation } from \"../LocalizationContext.js\";\n\nimport type { JSX } from \"react\";\nimport type { HierarchyLevelDetails, TreeRendererProps } from \"../Renderers.js\";\nimport type { ErrorInfo, TreeNode } from \"../TreeNode.js\";\n\n/** @alpha */\nexport interface ErrorItemRendererProps extends Pick<TreeRendererProps, \"getHierarchyLevelDetails\"> {\n /** The tree node associated with the error. Used for displaying the node label in error messages and for scrolling to the node. */\n treeNode: Omit<TreeNode, \"errors\">;\n /** The error to render. */\n error: ErrorInfo;\n /** A callback to reload a hierarchy level when an error occurs and `retry` button is clicked. */\n reloadTree: (options: { parentNodeId: string | undefined }) => void;\n /** A callback to scroll to the node associated with the error. */\n scrollToNode: (treeNode: Omit<TreeNode, \"errors\">) => void;\n /** A callback to initiate filtering of the given hierarchy level. */\n filterHierarchyLevel?: (hierarchyLevelDetails: HierarchyLevelDetails) => void;\n}\n\n/**\n * Renders StrataKit `<ErrorRegion.Item />` for all supported error types:\n * - `ResultSetTooLarge` - renders `resultLimitExceeded` message with actions to increase limit or apply filtering\n * - `NoFilterMatches` - renders `noFilteredChildren` message with action to change filter\n * - `ChildrenLoad` - renders `failedToCreateHierarchy` message with action to retry loading\n * - `Unknown` - renders message set on error object.\n *\n * @alpha\n */\nexport function ErrorItemRenderer({\n treeNode,\n error,\n getHierarchyLevelDetails,\n filterHierarchyLevel,\n reloadTree,\n scrollToNode,\n}: ErrorItemRendererProps): JSX.Element {\n const translate = useTranslation();\n\n if (error.type === \"ResultSetTooLarge\") {\n const limit = error.resultSetSizeLimit;\n const onOverrideLimit = () => getHierarchyLevelDetails(treeNode.id)?.setSizeLimit(MAX_LIMIT_OVERRIDE);\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n {\n action: () => {\n onOverrideLimit();\n },\n label: translate(\"increaseHierarchyLimit\").replace(\"{{limit}}\", MAX_LIMIT_OVERRIDE.toString()),\n condition: () => limit < MAX_LIMIT_OVERRIDE,\n },\n {\n action: () => {\n const hierarchyLevelDetails = getHierarchyLevelDetails(treeNode.id);\n hierarchyLevelDetails && filterHierarchyLevel?.(hierarchyLevelDetails);\n },\n label: translate(\"increaseHierarchyLimitWithFiltering\"),\n condition: () => !!filterHierarchyLevel && !!treeNode.isFilterable,\n },\n ]}\n message={translate(\"resultLimitExceeded\").replace(\"{{limit}}\", limit.toString())}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n if (error.type === \"NoFilterMatches\") {\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n {\n action: () => {\n const hierarchyLevelDetails = getHierarchyLevelDetails(treeNode.id);\n hierarchyLevelDetails && filterHierarchyLevel?.(hierarchyLevelDetails);\n },\n label: translate(\"noFilteredChildrenChangeFilter\"),\n condition: () => true,\n },\n ]}\n message={translate(\"noFilteredChildren\")}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n if (error.type === \"ChildrenLoad\") {\n return (\n <ErrorItemContainer\n treeNode={treeNode}\n actions={[\n { action: () => reloadTree({ parentNodeId: treeNode.id }), label: translate(\"retry\"), condition: () => true },\n ]}\n message={translate(\"failedToCreateHierarchy\")}\n scrollToElement={() => scrollToNode(treeNode)}\n />\n );\n }\n return (\n <ErrorItemContainer treeNode={treeNode} message={error.message} scrollToElement={() => scrollToNode(treeNode)} />\n );\n}\n\ntype ErrorItemContainerProps = {\n treeNode: Omit<TreeNode, \"errors\">;\n message: string;\n actions?: { action: () => void; label: string; condition: () => boolean }[];\n} & Pick<MessageWithLinkProps, \"scrollToElement\">;\n\nfunction ErrorItemContainer({ treeNode, message, actions, scrollToElement }: ErrorItemContainerProps) {\n return (\n <ErrorRegion.Item\n message={<MessageWithLink linkLabel={treeNode.label} scrollToElement={scrollToElement} message={message} />}\n messageId={treeNode.id}\n actions={actions\n ?.filter(({ condition }) => condition())\n .map(({ label, action }) => (\n <Typography key={label} variant=\"caption\" render={<div />}>\n <Link render={<button type=\"button\" />} onClick={action}>\n {label}\n </Link>\n </Typography>\n ))}\n />\n );\n}\n\ninterface MessageWithLinkProps {\n scrollToElement: () => void;\n message: string;\n linkLabel?: string;\n}\n\nfunction MessageWithLink({ linkLabel, scrollToElement, message }: MessageWithLinkProps) {\n const splitMessage = message.split(\"{{node}}\", 2);\n const firstPart = splitMessage[0].trimEnd();\n const secondPart = splitMessage[1]?.trimStart();\n return (\n <div>\n {firstPart}{\" \"}\n <Link\n render={<button type=\"button\" />}\n onClick={scrollToElement}\n variant=\"caption\"\n style={{ verticalAlign: \"baseline\" }}\n >\n {linkLabel}\n </Link>\n {secondPart ? \" \" : \"\"}\n {secondPart ? secondPart : null}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { RootErrorRendererProps } from "../Renderers.js";
|
|
2
2
|
import { JSX } from "react";
|
|
3
|
-
|
|
4
3
|
//#region src/presentation-hierarchies-react/stratakit/RootErrorRenderer.d.ts
|
|
5
4
|
/**
|
|
6
5
|
* @alpha
|
|
@@ -11,11 +10,7 @@ type StrataKitRootErrorRendererProps = RootErrorRendererProps;
|
|
|
11
10
|
*
|
|
12
11
|
* @alpha
|
|
13
12
|
*/
|
|
14
|
-
declare function StrataKitRootErrorRenderer({
|
|
15
|
-
error,
|
|
16
|
-
getHierarchyLevelDetails,
|
|
17
|
-
reloadTree
|
|
18
|
-
}: StrataKitRootErrorRendererProps): JSX.Element;
|
|
13
|
+
declare function StrataKitRootErrorRenderer({ error, getHierarchyLevelDetails, reloadTree }: StrataKitRootErrorRendererProps): JSX.Element;
|
|
19
14
|
//#endregion
|
|
20
|
-
export { StrataKitRootErrorRenderer };
|
|
15
|
+
export { StrataKitRootErrorRenderer, StrataKitRootErrorRendererProps };
|
|
21
16
|
//# sourceMappingURL=RootErrorRenderer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RootErrorRenderer.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/RootErrorRenderer.tsx"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"RootErrorRenderer.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/RootErrorRenderer.tsx"],"mappings":";;;;;;KAiBY,kCAAkC;;;;;;iBAO9B,6BACd,OACA,0BACA,cACC,kCAAkC,IAAI"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useTranslation } from "../LocalizationContext.js";
|
|
2
2
|
import { c } from "react-compiler-runtime";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
-
import { Button,
|
|
5
|
-
import { Icon } from "@stratakit/
|
|
4
|
+
import { Button, Typography } from "@mui/material";
|
|
5
|
+
import { Icon } from "@stratakit/mui";
|
|
6
6
|
import errorSvg from "@stratakit/icons/status-error.svg";
|
|
7
7
|
//#region src/presentation-hierarchies-react/stratakit/RootErrorRenderer.tsx
|
|
8
8
|
/**
|
|
@@ -139,8 +139,8 @@ function RootErrorContainer(t0) {
|
|
|
139
139
|
} else t3 = $[2];
|
|
140
140
|
let t4;
|
|
141
141
|
if ($[3] !== message) {
|
|
142
|
-
t4 = /* @__PURE__ */ jsx(
|
|
143
|
-
variant: "
|
|
142
|
+
t4 = /* @__PURE__ */ jsx(Typography, {
|
|
143
|
+
variant: "caption",
|
|
144
144
|
style: t3,
|
|
145
145
|
children: message
|
|
146
146
|
});
|
|
@@ -172,6 +172,7 @@ function RootErrorContainer(t0) {
|
|
|
172
172
|
function _temp4(action) {
|
|
173
173
|
return /* @__PURE__ */ jsx(Button, {
|
|
174
174
|
onClick: () => action.action(),
|
|
175
|
+
size: "small",
|
|
175
176
|
children: action.label
|
|
176
177
|
}, action.label);
|
|
177
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RootErrorRenderer.js","names":["Button","
|
|
1
|
+
{"version":3,"file":"RootErrorRenderer.js","names":["Button","Typography","Icon","useTranslation","errorSvg","JSX","RootErrorRendererProps","StrataKitRootErrorRendererProps","StrataKitRootErrorRenderer","t0","$","_c","error","getHierarchyLevelDetails","reloadTree","translate","type","t1","undefined","setSizeLimit","onOverrideLimit","t2","resultSetSizeLimit","replace","toString","t3","t4","action","label","condition","_temp","t5","parentNodeId","state","_temp2","RootErrorContainerProps","message","actions","RootErrorContainer","Symbol","for","height","display","flexDirection","justifyContent","alignItems","gap","textAlign","filter","_temp3","map","_temp4","t6"],"sources":["../../../src/presentation-hierarchies-react/stratakit/RootErrorRenderer.tsx"],"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 { Button, Typography } from \"@mui/material\";\nimport { Icon } from \"@stratakit/mui\";\nimport { useTranslation } from \"../LocalizationContext.js\";\n\nimport errorSvg from \"@stratakit/icons/status-error.svg\";\n\nimport type { JSX } from \"react\";\nimport type { RootErrorRendererProps } from \"../Renderers.js\";\n\n/**\n * @alpha\n */\nexport type StrataKitRootErrorRendererProps = RootErrorRendererProps;\n\n/**\n * A component that renders root node error state.\n *\n * @alpha\n */\nexport function StrataKitRootErrorRenderer({\n error,\n getHierarchyLevelDetails,\n reloadTree,\n}: StrataKitRootErrorRendererProps): JSX.Element {\n const translate = useTranslation();\n\n if (error.type === \"ResultSetTooLarge\") {\n const onOverrideLimit = () => getHierarchyLevelDetails(undefined)?.setSizeLimit(\"unbounded\");\n return (\n <RootErrorContainer\n message={translate(\"rootResultLimitExceeded\").replace(\"{{limit}}\", error.resultSetSizeLimit.toString())}\n actions={[\n { action: onOverrideLimit, label: translate(\"increaseHierarchyLimitToUnlimited\"), condition: () => true },\n ]}\n />\n );\n }\n\n return (\n <RootErrorContainer\n message={translate(\"failedToCreateRootHierarchy\")}\n actions={[\n {\n action: () => reloadTree({ parentNodeId: undefined, state: \"reset\" }),\n label: translate(\"retry\"),\n condition: () => true,\n },\n ]}\n />\n );\n}\n\ninterface RootErrorContainerProps {\n message: string;\n actions?: { action: () => void; label: string; condition: () => boolean }[];\n}\n\nfunction RootErrorContainer({ actions, message }: RootErrorContainerProps) {\n return (\n <div\n style={{\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"0.5rem\",\n }}\n >\n <Icon href={errorSvg} size=\"large\" />\n <Typography variant=\"caption\" style={{ textAlign: \"center\" }}>\n {message}\n </Typography>\n {actions\n ?.filter(({ condition }) => condition())\n .map((action) => {\n return (\n <Button key={action.label} onClick={() => action.action()} size=\"small\">\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAwBA,SAAOQ,2BAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAoC,MAAA,EAAAC,OAAAC,0BAAAC,eAAAL;CAKzC,MAAAM,YAAkBZ,eAAe;CAEjC,IAAIS,MAAKI,SAAU,qBAAmB;EAAA,IAAAC;EAAA,IAAAP,EAAA,OAAAG,0BAAA;GACZI,WAAMJ,yBAAyBK,KAAAA,CAAuB,CAAC,EAAAC,aAAC,WAAW;GAACT,EAAA,KAAAG;GAAAH,EAAA,KAAAO;EAAA,OAAAA,KAAAP,EAAA;EAA5F,MAAAU,kBAAwBH;EAAqE,IAAAI;EAAA,IAAAX,EAAA,OAAAE,MAAAU,sBAAAZ,EAAA,OAAAK,WAAA;GAGhFM,KAAAN,UAAU,yBAAyB,CAAC,CAAAQ,QAAS,aAAaX,MAAKU,mBAAmBE,SAAU,CAAC;GAACd,EAAA,KAAAE,MAAAU;GAAAZ,EAAA,KAAAK;GAAAL,EAAA,KAAAW;EAAA,OAAAA,KAAAX,EAAA;EAAA,IAAAe;EAAA,IAAAf,EAAA,OAAAK,WAAA;GAEnEU,KAAAV,UAAU,mCAAmC;GAACL,EAAA,KAAAK;GAAAL,EAAA,KAAAe;EAAA,OAAAA,KAAAf,EAAA;EAAA,IAAAgB;EAAA,IAAAhB,EAAA,OAAAU,mBAAAV,EAAA,OAAAe,IAAA;GADzEC,KAAA,CACP;IAAAC,QAAUP;IAAeQ,OAASH;IAA8CI,WAAaC;GAAW,CAAC;GAC1GpB,EAAA,KAAAU;GAAAV,EAAA,KAAAe;GAAAf,EAAA,KAAAgB;EAAA,OAAAA,KAAAhB,EAAA;EAAA,IAAAqB;EAAA,IAAArB,EAAA,QAAAW,MAAAX,EAAA,QAAAgB,IAAA;GAJHK,KAAA,oBAAC,oBAAD;IACW,SAAAV;IACA,SAAAK;GAER,CAAA;GACDhB,EAAA,MAAAW;GAAAX,EAAA,MAAAgB;GAAAhB,EAAA,MAAAqB;EAAA,OAAAA,KAAArB,EAAA;EAAA,OALFqB;CAKE;CAEL,IAAAd;CAAA,IAAAP,EAAA,QAAAK,WAAA;EAIYE,KAAAF,UAAU,6BAA6B;EAACL,EAAA,MAAAK;EAAAL,EAAA,MAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAW;CAAA,IAAAX,EAAA,QAAAI,YAAA;EAGrCO,WAAMP,WAAW;GAAAkB,cAAgBd,KAAAA;GAASe,OAAS;EAAQ,CAAC;EAACvB,EAAA,MAAAI;EAAAJ,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,QAAAK,WAAA;EAC9DU,KAAAV,UAAU,OAAO;EAACL,EAAA,MAAAK;EAAAL,EAAA,MAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,QAAAW,MAAAX,EAAA,QAAAe,IAAA;EAHpBC,KAAA,CACP;GAAAC,QACUN;GAA6DO,OAC9DH;GAAkBI,WACdK;EACb,CAAC;EACFxB,EAAA,MAAAW;EAAAX,EAAA,MAAAe;EAAAf,EAAA,MAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAO,MAAAP,EAAA,QAAAgB,IAAA;EARHK,KAAA,oBAAC,oBAAD;GACW,SAAAd;GACA,SAAAS;EAMR,CAAA;EACDhB,EAAA,MAAAO;EAAAP,EAAA,MAAAgB;EAAAhB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,OATFqB;AASE;AA7BC,SAAAG,SAAA;CAAA,OA0BoB;AAAI;AA1BxB,SAAAJ,QAAA;CAAA,OAasG;AAAI;AAyBjH,SAAAQ,mBAAA7B,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAA4B,MAAA,EAAA0B,SAAAD,YAAA3B;CAA6C,IAAAQ;CAAA,IAAAI;CAAA,IAAAX,EAAA,OAAA6B,OAAAC,IAAA,2BAAA,GAAA;EAG5DvB,KAAA;GAAAwB,QACG;GAAMC,SACL;GAAMC,eACA;GAAQC,gBACP;GAAQC,YACZ;GAAQC,KACf;EACP;EAEAzB,KAAA,oBAAC,MAAD;GAAYjB,MAAAA;GAAe,MAAA;EAAO,CAAA;EAAGM,EAAA,KAAAO;EAAAP,EAAA,KAAAW;CAAA,OAAA;EAAAJ,KAAAP,EAAA;EAAAW,KAAAX,EAAA;CAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAA6B,OAAAC,IAAA,2BAAA,GAAA;EACAf,KAAA,EAAAsB,WAAa,SAAS;EAACrC,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAA0B,SAAA;EAA5DV,KAAA,oBAAC,YAAD;GAAoB,SAAA;GAAiB,OAAAD;GAClCW,UAAAA;EADQ,CAAA;EAEE1B,EAAA,KAAA0B;EAAA1B,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAA2B,SAAA;EACZN,KAAAM,SAAOW,OACGC,MACN,CAAC,CAAAC,IAACC,MAMJ;EAACzC,EAAA,KAAA2B;EAAA3B,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAA0C;CAAA,IAAA1C,EAAA,OAAAgB,MAAAhB,EAAA,OAAAqB,IAAA;EAtBNqB,KAAA,qBAAA,OAAA;GACS,OAAAnC;GADT,UAAA;IAUEI;IACAK;IAGCK;GASG;;EAAArB,EAAA,KAAAgB;EAAAhB,EAAA,KAAAqB;EAAArB,EAAA,KAAA0C;CAAA,OAAAA,KAAA1C,EAAA;CAAA,OAvBN0C;AAuBM;AAzBV,SAAAD,OAAAxB,QAAA;CAAA,OAoBY,oBAAC,QAAD;EAAoC,eAAMA,OAAMA,OAAQ;EAAQ,MAAA;EAC7DA,UAAAA,OAAMC;CADF,GAAMD,OAAMC,KAAZ;AAEE;AAtBrB,SAAAqB,OAAAxC,IAAA;CAiBkB,MAAA,EAAAoB,cAAApB;CAAa,OAAKoB,UAAU;AAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComponentPropsWithoutRef, NamedExoticComponent } from "react";
|
|
2
2
|
import { Tree } from "@stratakit/structures";
|
|
3
|
-
|
|
4
3
|
//#region src/presentation-hierarchies-react/stratakit/TreeAction.d.ts
|
|
5
4
|
/**
|
|
6
5
|
* Attributes used to decide how to render tree actions. They allow to differentiate action style based on the context
|
|
@@ -23,7 +22,10 @@ interface TreeActionBaseAttributes {
|
|
|
23
22
|
hide?: boolean;
|
|
24
23
|
}
|
|
25
24
|
/** @alpha */
|
|
26
|
-
type TreeActionBaseProps =
|
|
25
|
+
type TreeActionBaseProps = Omit<ComponentPropsWithoutRef<typeof Tree.ItemAction>, "onClick"> & TreeActionBaseAttributes & {
|
|
26
|
+
/** Callback invoked when the action is clicked. */
|
|
27
|
+
onClick?: () => void;
|
|
28
|
+
};
|
|
27
29
|
/**
|
|
28
30
|
* Base component used to render tree actions. It is designed to allow rendering same action in different contexts: inline, dropdown, context menu.
|
|
29
31
|
* Should be used together with `StrataKitTreeNodeRenderer` and returned from `getInlineActions`, `getMenuActions` and `getContextMenuActions` callbacks.
|
|
@@ -45,5 +47,5 @@ type TreeActionBaseProps = ComponentProps<typeof Tree.ItemAction> & TreeActionBa
|
|
|
45
47
|
*/
|
|
46
48
|
declare const TreeActionBase: NamedExoticComponent<TreeActionBaseProps>;
|
|
47
49
|
//#endregion
|
|
48
|
-
export { TreeActionBase, TreeActionBaseAttributes };
|
|
50
|
+
export { TreeActionBase, TreeActionBaseAttributes, TreeActionBaseProps };
|
|
49
51
|
//# sourceMappingURL=TreeAction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TreeAction.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/TreeAction.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TreeAction.d.ts","names":[],"sources":["../../../src/presentation-hierarchies-react/stratakit/TreeAction.tsx"],"mappings":";;;;;;;;UAiBiB;;;;;;;;EAQf;;;;;EAKA;;;KAIU,sBAAsB,KAAK,gCAAgC,KAAK,0BAC1E;;EAEE;;;;;;;;;;;;;;;;;;;;;cAsBS,gBAAgB,qBAAqB"}
|