@hitachivantara/uikit-react-core 5.36.1 → 5.36.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/cjs/components/Card/Header/Header.cjs +1 -0
  2. package/dist/cjs/components/Card/Header/Header.cjs.map +1 -1
  3. package/dist/cjs/components/Card/Header/Header.styles.cjs +6 -10
  4. package/dist/cjs/components/Card/Header/Header.styles.cjs.map +1 -1
  5. package/dist/cjs/components/Section/Section.cjs +4 -3
  6. package/dist/cjs/components/Section/Section.cjs.map +1 -1
  7. package/dist/cjs/components/TreeView/TreeItem/DefaultContent.cjs +24 -8
  8. package/dist/cjs/components/TreeView/TreeItem/DefaultContent.cjs.map +1 -1
  9. package/dist/cjs/components/TreeView/TreeItem/TreeItem.cjs +7 -6
  10. package/dist/cjs/components/TreeView/TreeItem/TreeItem.cjs.map +1 -1
  11. package/dist/cjs/components/TreeView/TreeItem/useHvTreeItem.cjs +2 -3
  12. package/dist/cjs/components/TreeView/TreeItem/useHvTreeItem.cjs.map +1 -1
  13. package/dist/cjs/components/TreeView/TreeView.cjs +4 -4
  14. package/dist/cjs/components/TreeView/TreeView.cjs.map +1 -1
  15. package/dist/cjs/components/TreeView/internals/DescendantProvider.cjs +146 -0
  16. package/dist/cjs/components/TreeView/internals/DescendantProvider.cjs.map +1 -0
  17. package/dist/cjs/components/TreeView/internals/TreeViewProvider.cjs +34 -0
  18. package/dist/cjs/components/TreeView/internals/TreeViewProvider.cjs.map +1 -0
  19. package/dist/cjs/components/TreeView/internals/corePlugins.cjs +6 -0
  20. package/dist/cjs/components/TreeView/internals/corePlugins.cjs.map +1 -0
  21. package/dist/cjs/components/TreeView/internals/hooks/plugins/defaultPlugins.cjs +11 -0
  22. package/dist/cjs/components/TreeView/internals/hooks/plugins/defaultPlugins.cjs.map +1 -0
  23. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.cjs +28 -0
  24. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.cjs.map +1 -0
  25. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewExpansion.cjs +80 -0
  26. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewExpansion.cjs.map +1 -0
  27. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewFocus.cjs +105 -0
  28. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewFocus.cjs.map +1 -0
  29. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.cjs +237 -0
  30. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.cjs.map +1 -0
  31. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewNodes.cjs +82 -0
  32. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewNodes.cjs.map +1 -0
  33. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewSelection.cjs +232 -0
  34. package/dist/cjs/components/TreeView/internals/hooks/plugins/useTreeViewSelection.cjs.map +1 -0
  35. package/dist/cjs/components/TreeView/internals/hooks/useInstanceEventHandler.cjs +93 -0
  36. package/dist/cjs/components/TreeView/internals/hooks/useInstanceEventHandler.cjs.map +1 -0
  37. package/dist/cjs/components/TreeView/internals/hooks/useTreeView.cjs +87 -0
  38. package/dist/cjs/components/TreeView/internals/hooks/useTreeView.cjs.map +1 -0
  39. package/dist/cjs/components/TreeView/internals/hooks/useTreeViewInstanceEvents.cjs +52 -0
  40. package/dist/cjs/components/TreeView/internals/hooks/useTreeViewInstanceEvents.cjs.map +1 -0
  41. package/dist/cjs/components/TreeView/internals/hooks/useTreeViewModels.cjs +58 -0
  42. package/dist/cjs/components/TreeView/internals/hooks/useTreeViewModels.cjs.map +1 -0
  43. package/dist/cjs/components/TreeView/internals/hooks/utils.cjs +47 -0
  44. package/dist/cjs/components/TreeView/internals/hooks/utils.cjs.map +1 -0
  45. package/dist/cjs/components/TreeView/internals/utils/EventManager.cjs +62 -0
  46. package/dist/cjs/components/TreeView/internals/utils/EventManager.cjs.map +1 -0
  47. package/dist/cjs/components/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.cjs +22 -0
  48. package/dist/cjs/components/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.cjs.map +1 -0
  49. package/dist/cjs/components/TreeView/internals/utils/TimerBasedCleanupTracking.cjs +41 -0
  50. package/dist/cjs/components/TreeView/internals/utils/TimerBasedCleanupTracking.cjs.map +1 -0
  51. package/dist/cjs/components/TreeView/internals/utils/publishTreeViewEvent.cjs +7 -0
  52. package/dist/cjs/components/TreeView/internals/utils/publishTreeViewEvent.cjs.map +1 -0
  53. package/dist/esm/components/Card/Header/Header.js +1 -0
  54. package/dist/esm/components/Card/Header/Header.js.map +1 -1
  55. package/dist/esm/components/Card/Header/Header.styles.js +6 -10
  56. package/dist/esm/components/Card/Header/Header.styles.js.map +1 -1
  57. package/dist/esm/components/Section/Section.js +4 -3
  58. package/dist/esm/components/Section/Section.js.map +1 -1
  59. package/dist/esm/components/TreeView/TreeItem/DefaultContent.js +18 -2
  60. package/dist/esm/components/TreeView/TreeItem/DefaultContent.js.map +1 -1
  61. package/dist/esm/components/TreeView/TreeItem/TreeItem.js +3 -4
  62. package/dist/esm/components/TreeView/TreeItem/TreeItem.js.map +1 -1
  63. package/dist/esm/components/TreeView/TreeItem/useHvTreeItem.js +1 -2
  64. package/dist/esm/components/TreeView/TreeItem/useHvTreeItem.js.map +1 -1
  65. package/dist/esm/components/TreeView/TreeView.js +4 -4
  66. package/dist/esm/components/TreeView/TreeView.js.map +1 -1
  67. package/dist/esm/components/TreeView/internals/DescendantProvider.js +127 -0
  68. package/dist/esm/components/TreeView/internals/DescendantProvider.js.map +1 -0
  69. package/dist/esm/components/TreeView/internals/TreeViewProvider.js +34 -0
  70. package/dist/esm/components/TreeView/internals/TreeViewProvider.js.map +1 -0
  71. package/dist/esm/components/TreeView/internals/corePlugins.js +6 -0
  72. package/dist/esm/components/TreeView/internals/corePlugins.js.map +1 -0
  73. package/dist/esm/components/TreeView/internals/hooks/plugins/defaultPlugins.js +11 -0
  74. package/dist/esm/components/TreeView/internals/hooks/plugins/defaultPlugins.js.map +1 -0
  75. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.js +28 -0
  76. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.js.map +1 -0
  77. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewExpansion.js +61 -0
  78. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewExpansion.js.map +1 -0
  79. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewFocus.js +86 -0
  80. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewFocus.js.map +1 -0
  81. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.js +218 -0
  82. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.js.map +1 -0
  83. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewNodes.js +63 -0
  84. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewNodes.js.map +1 -0
  85. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewSelection.js +213 -0
  86. package/dist/esm/components/TreeView/internals/hooks/plugins/useTreeViewSelection.js.map +1 -0
  87. package/dist/esm/components/TreeView/internals/hooks/useInstanceEventHandler.js +74 -0
  88. package/dist/esm/components/TreeView/internals/hooks/useInstanceEventHandler.js.map +1 -0
  89. package/dist/esm/components/TreeView/internals/hooks/useTreeView.js +68 -0
  90. package/dist/esm/components/TreeView/internals/hooks/useTreeView.js.map +1 -0
  91. package/dist/esm/components/TreeView/internals/hooks/useTreeViewInstanceEvents.js +33 -0
  92. package/dist/esm/components/TreeView/internals/hooks/useTreeViewInstanceEvents.js.map +1 -0
  93. package/dist/esm/components/TreeView/internals/hooks/useTreeViewModels.js +39 -0
  94. package/dist/esm/components/TreeView/internals/hooks/useTreeViewModels.js.map +1 -0
  95. package/dist/esm/components/TreeView/internals/hooks/utils.js +47 -0
  96. package/dist/esm/components/TreeView/internals/hooks/utils.js.map +1 -0
  97. package/dist/esm/components/TreeView/internals/utils/EventManager.js +62 -0
  98. package/dist/esm/components/TreeView/internals/utils/EventManager.js.map +1 -0
  99. package/dist/esm/components/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.js +22 -0
  100. package/dist/esm/components/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.js.map +1 -0
  101. package/dist/esm/components/TreeView/internals/utils/TimerBasedCleanupTracking.js +41 -0
  102. package/dist/esm/components/TreeView/internals/utils/TimerBasedCleanupTracking.js.map +1 -0
  103. package/dist/esm/components/TreeView/internals/utils/publishTreeViewEvent.js +7 -0
  104. package/dist/esm/components/TreeView/internals/utils/publishTreeViewEvent.js.map +1 -0
  105. package/dist/types/index.d.ts +216 -14
  106. package/package.json +5 -6
  107. package/dist/cjs/components/TreeView/internals.cjs +0 -30
  108. package/dist/cjs/components/TreeView/internals.cjs.map +0 -1
  109. package/dist/esm/components/TreeView/internals.js +0 -15
  110. package/dist/esm/components/TreeView/internals.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ function _interopNamespace(e) {
5
+ if (e && e.__esModule)
6
+ return e;
7
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
+ if (e) {
9
+ for (const k in e) {
10
+ if (k !== "default") {
11
+ const d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: () => e[k]
15
+ });
16
+ }
17
+ }
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+ const React__namespace = /* @__PURE__ */ _interopNamespace(React);
23
+ const useTreeViewModels = (plugins, props) => {
24
+ const modelsRef = React__namespace.useRef({});
25
+ const [modelsState, setModelsState] = React__namespace.useState(() => {
26
+ const initialState = {};
27
+ plugins.forEach((plugin) => {
28
+ if (plugin.models) {
29
+ Object.entries(plugin.models).forEach(([modelName, model]) => {
30
+ modelsRef.current[modelName] = {
31
+ controlledProp: model.controlledProp,
32
+ defaultProp: model.defaultProp,
33
+ isControlled: props[model.controlledProp] !== void 0
34
+ };
35
+ initialState[modelName] = props[model.defaultProp];
36
+ });
37
+ }
38
+ });
39
+ return initialState;
40
+ });
41
+ const models = Object.fromEntries(Object.entries(modelsRef.current).map(([modelName, model]) => {
42
+ const value = model.isControlled ? props[model.controlledProp] : modelsState[modelName];
43
+ return [modelName, {
44
+ value,
45
+ setValue: (newValue) => {
46
+ if (!model.isControlled) {
47
+ setModelsState((prevState) => ({
48
+ ...prevState,
49
+ [modelName]: newValue
50
+ }));
51
+ }
52
+ }
53
+ }];
54
+ }));
55
+ return models;
56
+ };
57
+ exports.useTreeViewModels = useTreeViewModels;
58
+ //# sourceMappingURL=useTreeViewModels.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTreeViewModels.cjs","sources":["../../../../../../src/components/TreeView/internals/hooks/useTreeViewModels.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport {\n TreeViewAnyPluginSignature,\n TreeViewPlugin,\n ConvertPluginsIntoSignatures,\n MergePluginsProperty,\n} from \"../types\";\n\n/**\n * Implements the same behavior as `useControlled` but for several models.\n * The controlled models are never stored in the state and the state is only updated if the model is not controlled.\n */\nexport const useTreeViewModels = <\n TPlugins extends readonly TreeViewPlugin<TreeViewAnyPluginSignature>[]\n>(\n plugins: TPlugins,\n props: MergePluginsProperty<\n ConvertPluginsIntoSignatures<TPlugins>,\n \"defaultizedParams\"\n >\n) => {\n const modelsRef = React.useRef<{\n [modelName: string]: {\n controlledProp: keyof typeof props;\n defaultProp: keyof typeof props;\n isControlled: boolean;\n };\n }>({});\n\n const [modelsState, setModelsState] = React.useState<{\n [modelName: string]: any;\n }>(() => {\n const initialState: { [modelName: string]: any } = {};\n\n plugins.forEach((plugin) => {\n if (plugin.models) {\n Object.entries(plugin.models).forEach(([modelName, model]) => {\n modelsRef.current[modelName] = {\n controlledProp: model.controlledProp as keyof typeof props,\n defaultProp: model.defaultProp as keyof typeof props,\n isControlled:\n props[model.controlledProp as keyof typeof props] !== undefined,\n };\n initialState[modelName] =\n props[model.defaultProp as keyof typeof props];\n });\n }\n });\n\n return initialState;\n });\n\n const models = Object.fromEntries(\n Object.entries(modelsRef.current).map(([modelName, model]) => {\n const value = model.isControlled\n ? props[model.controlledProp]\n : modelsState[modelName];\n\n return [\n modelName,\n {\n value,\n setValue: (newValue: any) => {\n if (!model.isControlled) {\n setModelsState((prevState) => ({\n ...prevState,\n [modelName]: newValue,\n }));\n }\n },\n },\n ];\n })\n ) as MergePluginsProperty<ConvertPluginsIntoSignatures<TPlugins>, \"models\">;\n\n return models;\n};\n"],"names":["useTreeViewModels","plugins","props","modelsRef","React","useRef","modelsState","setModelsState","useState","initialState","forEach","plugin","models","entries","modelName","model","current","controlledProp","defaultProp","isControlled","undefined","Object","fromEntries","map","value","setValue","newValue","prevState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAaaA,MAAAA,oBAAoB,CAG/BC,SACAC,UAIG;AACH,QAAMC,YAAYC,iBAAMC,OAMrB,CAAE,CAAA;AAEL,QAAM,CAACC,aAAaC,cAAc,IAAIH,iBAAMI,SAEzC,MAAM;AACP,UAAMC,eAA6C,CAAA;AAEnDR,YAAQS,QAASC,CAAW,WAAA;AAC1B,UAAIA,OAAOC,QAAQ;AACVC,eAAAA,QAAQF,OAAOC,MAAM,EAAEF,QAAQ,CAAC,CAACI,WAAWC,KAAK,MAAM;AAClDC,oBAAAA,QAAQF,SAAS,IAAI;AAAA,YAC7BG,gBAAgBF,MAAME;AAAAA,YACtBC,aAAaH,MAAMG;AAAAA,YACnBC,cACEjB,MAAMa,MAAME,cAAoC,MAAMG;AAAAA,UAAAA;AAE1DX,uBAAaK,SAAS,IACpBZ,MAAMa,MAAMG,WAAkC;AAAA,QAAA,CACjD;AAAA,MACH;AAAA,IAAA,CACD;AAEMT,WAAAA;AAAAA,EAAAA,CACR;AAED,QAAMG,SAASS,OAAOC,YACpBD,OAAOR,QAAQV,UAAUa,OAAO,EAAEO,IAAI,CAAC,CAACT,WAAWC,KAAK,MAAM;AACtDS,UAAAA,QAAQT,MAAMI,eAChBjB,MAAMa,MAAME,cAAc,IAC1BX,YAAYQ,SAAS;AAEzB,WAAO,CACLA,WACA;AAAA,MACEU;AAAAA,MACAC,UAAUA,CAACC,aAAkB;AACvB,YAAA,CAACX,MAAMI,cAAc;AACvBZ,yBAAgBoB,CAAe,eAAA;AAAA,YAC7B,GAAGA;AAAAA,YACH,CAACb,SAAS,GAAGY;AAAAA,UACb,EAAA;AAAA,QACJ;AAAA,MACF;AAAA,IAAA,CACD;AAAA,EAEJ,CAAA,CACH;AAEOd,SAAAA;AACT;;"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const getPreviousNode = (instance, nodeId) => {
4
+ const node = instance.getNode(nodeId);
5
+ const siblings = instance.getNavigableChildrenIds(node.parentId);
6
+ const nodeIndex = siblings.indexOf(nodeId);
7
+ if (nodeIndex === 0) {
8
+ return node.parentId;
9
+ }
10
+ let currentNode = siblings[nodeIndex - 1];
11
+ while (instance.isNodeExpanded(currentNode) && instance.getNavigableChildrenIds(currentNode).length > 0) {
12
+ currentNode = instance.getNavigableChildrenIds(currentNode).pop();
13
+ }
14
+ return currentNode;
15
+ };
16
+ const getNextNode = (instance, nodeId) => {
17
+ if (instance.isNodeExpanded(nodeId) && instance.getNavigableChildrenIds(nodeId).length > 0) {
18
+ return instance.getNavigableChildrenIds(nodeId)[0];
19
+ }
20
+ let node = instance.getNode(nodeId);
21
+ while (node != null) {
22
+ const siblings = instance.getNavigableChildrenIds(node.parentId);
23
+ const nextSibling = siblings[siblings.indexOf(node.id) + 1];
24
+ if (nextSibling) {
25
+ return nextSibling;
26
+ }
27
+ node = instance.getNode(node.parentId);
28
+ }
29
+ return null;
30
+ };
31
+ const getLastNode = (instance) => {
32
+ let lastNode = instance.getNavigableChildrenIds(null).pop();
33
+ while (instance.isNodeExpanded(lastNode)) {
34
+ lastNode = instance.getNavigableChildrenIds(lastNode).pop();
35
+ }
36
+ return lastNode;
37
+ };
38
+ const getFirstNode = (instance) => instance.getNavigableChildrenIds(null)[0];
39
+ const populateInstance = (instance, methods) => {
40
+ Object.assign(instance, methods);
41
+ };
42
+ exports.getFirstNode = getFirstNode;
43
+ exports.getLastNode = getLastNode;
44
+ exports.getNextNode = getNextNode;
45
+ exports.getPreviousNode = getPreviousNode;
46
+ exports.populateInstance = populateInstance;
47
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","sources":["../../../../../../src/components/TreeView/internals/hooks/utils.ts"],"sourcesContent":["import {\n TreeViewAnyPluginSignature,\n TreeViewInstance,\n TreeViewUsedInstance,\n} from \"../types\";\nimport type { UseTreeViewExpansionSignature } from \"./plugins/useTreeViewExpansion\";\nimport type { UseTreeViewNodesSignature } from \"./plugins/useTreeViewNodes\";\n\nexport const getPreviousNode = (\n instance: TreeViewInstance<\n [UseTreeViewNodesSignature, UseTreeViewExpansionSignature]\n >,\n nodeId: string\n) => {\n const node = instance.getNode(nodeId);\n const siblings = instance.getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(nodeId);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode: string = siblings[nodeIndex - 1];\n while (\n instance.isNodeExpanded(currentNode) &&\n instance.getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = instance.getNavigableChildrenIds(currentNode).pop()!;\n }\n\n return currentNode;\n};\n\nexport const getNextNode = (\n instance: TreeViewInstance<\n [UseTreeViewExpansionSignature, UseTreeViewNodesSignature]\n >,\n nodeId: string\n) => {\n // If expanded get first child\n if (\n instance.isNodeExpanded(nodeId) &&\n instance.getNavigableChildrenIds(nodeId).length > 0\n ) {\n return instance.getNavigableChildrenIds(nodeId)[0];\n }\n\n let node = instance.getNode(nodeId);\n while (node != null) {\n // Try to get next sibling\n const siblings = instance.getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = instance.getNode(node.parentId!);\n }\n\n return null;\n};\n\nexport const getLastNode = (\n instance: TreeViewInstance<\n [UseTreeViewExpansionSignature, UseTreeViewNodesSignature]\n >\n) => {\n let lastNode = instance.getNavigableChildrenIds(null).pop()!;\n\n while (instance.isNodeExpanded(lastNode)) {\n lastNode = instance.getNavigableChildrenIds(lastNode).pop()!;\n }\n return lastNode;\n};\n\nexport const getFirstNode = (\n instance: TreeViewInstance<[UseTreeViewNodesSignature]>\n) => instance.getNavigableChildrenIds(null)[0];\n\nexport const populateInstance = <T extends TreeViewAnyPluginSignature>(\n instance: TreeViewUsedInstance<T>,\n methods: T[\"instance\"]\n) => {\n Object.assign(instance, methods);\n};\n"],"names":["getPreviousNode","instance","nodeId","node","getNode","siblings","getNavigableChildrenIds","parentId","nodeIndex","indexOf","currentNode","isNodeExpanded","length","pop","getNextNode","nextSibling","id","getLastNode","lastNode","getFirstNode","populateInstance","methods","assign"],"mappings":";;AAQaA,MAAAA,kBAAkBA,CAC7BC,UAGAC,WACG;AACGC,QAAAA,OAAOF,SAASG,QAAQF,MAAM;AACpC,QAAMG,WAAWJ,SAASK,wBAAwBH,KAAKI,QAAQ;AACzDC,QAAAA,YAAYH,SAASI,QAAQP,MAAM;AAEzC,MAAIM,cAAc,GAAG;AACnB,WAAOL,KAAKI;AAAAA,EACd;AAEIG,MAAAA,cAAsBL,SAASG,YAAY,CAAC;AAE9CP,SAAAA,SAASU,eAAeD,WAAW,KACnCT,SAASK,wBAAwBI,WAAW,EAAEE,SAAS,GACvD;AACAF,kBAAcT,SAASK,wBAAwBI,WAAW,EAAEG,IAAI;AAAA,EAClE;AAEOH,SAAAA;AACT;AAEaI,MAAAA,cAAcA,CACzBb,UAGAC,WACG;AAGDD,MAAAA,SAASU,eAAeT,MAAM,KAC9BD,SAASK,wBAAwBJ,MAAM,EAAEU,SAAS,GAClD;AACA,WAAOX,SAASK,wBAAwBJ,MAAM,EAAE,CAAC;AAAA,EACnD;AAEIC,MAAAA,OAAOF,SAASG,QAAQF,MAAM;AAClC,SAAOC,QAAQ,MAAM;AAEnB,UAAME,WAAWJ,SAASK,wBAAwBH,KAAKI,QAAQ;AAC/D,UAAMQ,cAAcV,SAASA,SAASI,QAAQN,KAAKa,EAAE,IAAI,CAAC;AAE1D,QAAID,aAAa;AACRA,aAAAA;AAAAA,IACT;AAGOd,WAAAA,SAASG,QAAQD,KAAKI,QAAS;AAAA,EACxC;AAEO,SAAA;AACT;AAEaU,MAAAA,cAAcA,CACzBhB,aAGG;AACH,MAAIiB,WAAWjB,SAASK,wBAAwB,IAAI,EAAEO,IAAI;AAEnDZ,SAAAA,SAASU,eAAeO,QAAQ,GAAG;AACxCA,eAAWjB,SAASK,wBAAwBY,QAAQ,EAAEL,IAAI;AAAA,EAC5D;AACOK,SAAAA;AACT;AAEO,MAAMC,eAAeA,CAC1BlB,aACGA,SAASK,wBAAwB,IAAI,EAAE,CAAC;AAEhCc,MAAAA,mBAAmB,CAC9BnB,UACAoB,YACG;AACIC,SAAAA,OAAOrB,UAAUoB,OAAO;AACjC;;;;;;"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ class EventManager {
4
+ constructor() {
5
+ this.maxListeners = 20;
6
+ this.warnOnce = false;
7
+ this.events = {};
8
+ }
9
+ on(eventName, listener, options = {}) {
10
+ let collection = this.events[eventName];
11
+ if (!collection) {
12
+ collection = {
13
+ highPriority: /* @__PURE__ */ new Map(),
14
+ regular: /* @__PURE__ */ new Map()
15
+ };
16
+ this.events[eventName] = collection;
17
+ }
18
+ if (options.isFirst) {
19
+ collection.highPriority.set(listener, true);
20
+ } else {
21
+ collection.regular.set(listener, true);
22
+ }
23
+ }
24
+ removeListener(eventName, listener) {
25
+ if (this.events[eventName]) {
26
+ this.events[eventName].regular.delete(listener);
27
+ this.events[eventName].highPriority.delete(listener);
28
+ }
29
+ }
30
+ removeAllListeners() {
31
+ this.events = {};
32
+ }
33
+ emit(eventName, ...args) {
34
+ const collection = this.events[eventName];
35
+ if (!collection) {
36
+ return;
37
+ }
38
+ const highPriorityListeners = Array.from(collection.highPriority.keys());
39
+ const regularListeners = Array.from(collection.regular.keys());
40
+ for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {
41
+ const listener = highPriorityListeners[i];
42
+ if (collection.highPriority.has(listener)) {
43
+ listener.apply(this, args);
44
+ }
45
+ }
46
+ for (let i = 0; i < regularListeners.length; i += 1) {
47
+ const listener = regularListeners[i];
48
+ if (collection.regular.has(listener)) {
49
+ listener.apply(this, args);
50
+ }
51
+ }
52
+ }
53
+ once(eventName, listener) {
54
+ const that = this;
55
+ this.on(eventName, function oneTimeListener(...args) {
56
+ that.removeListener(eventName, oneTimeListener);
57
+ listener.apply(that, args);
58
+ });
59
+ }
60
+ }
61
+ exports.EventManager = EventManager;
62
+ //# sourceMappingURL=EventManager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventManager.cjs","sources":["../../../../../../src/components/TreeView/internals/utils/EventManager.ts"],"sourcesContent":["export type EventListener = (...args: any[]) => void;\n\nexport interface EventListenerOptions {\n isFirst?: boolean;\n}\n\ninterface EventListenerCollection {\n /**\n * List of listeners to run before the others\n * They are run in the opposite order of the registration order\n */\n highPriority: Map<EventListener, true>;\n /**\n * List of events to run after the high priority listeners\n * They are run in the registration order\n */\n regular: Map<EventListener, true>;\n}\n\n// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n maxListeners = 20;\n\n warnOnce = false;\n\n events: { [eventName: string]: EventListenerCollection } = {};\n\n on(\n eventName: string,\n listener: EventListener,\n options: EventListenerOptions = {}\n ): void {\n let collection = this.events[eventName];\n\n if (!collection) {\n collection = {\n highPriority: new Map(),\n regular: new Map(),\n };\n this.events[eventName] = collection;\n }\n\n if (options.isFirst) {\n collection.highPriority.set(listener, true);\n } else {\n collection.regular.set(listener, true);\n }\n }\n\n removeListener(eventName: string, listener: EventListener): void {\n if (this.events[eventName]) {\n this.events[eventName].regular.delete(listener);\n this.events[eventName].highPriority.delete(listener);\n }\n }\n\n removeAllListeners(): void {\n this.events = {};\n }\n\n emit(eventName: string, ...args: any[]): void {\n const collection = this.events[eventName];\n if (!collection) {\n return;\n }\n\n const highPriorityListeners = Array.from(collection.highPriority.keys());\n const regularListeners = Array.from(collection.regular.keys());\n\n for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n const listener = highPriorityListeners[i];\n if (collection.highPriority.has(listener)) {\n listener.apply(this, args);\n }\n }\n\n for (let i = 0; i < regularListeners.length; i += 1) {\n const listener = regularListeners[i];\n if (collection.regular.has(listener)) {\n listener.apply(this, args);\n }\n }\n }\n\n once(eventName: string, listener: EventListener): void {\n // eslint-disable-next-line consistent-this\n const that = this;\n this.on(eventName, function oneTimeListener(...args) {\n that.removeListener(eventName, oneTimeListener);\n listener.apply(that, args);\n });\n }\n}\n"],"names":["EventManager","events","on","eventName","listener","options","collection","highPriority","Map","regular","isFirst","set","removeListener","delete","removeAllListeners","emit","args","highPriorityListeners","Array","from","keys","regularListeners","i","length","has","apply","once","that","oneTimeListener"],"mappings":";;AAsBO,MAAMA,aAAa;AAAA,EAAnB,cAAA;AACU,SAAA,eAAA;AAEJ,SAAA,WAAA;AAEXC,SAAAA,SAA2D;EAAC;AAAA,EAE5DC,GACEC,WACAC,UACAC,UAAgC,CAAA,GAC1B;AACFC,QAAAA,aAAa,KAAKL,OAAOE,SAAS;AAEtC,QAAI,CAACG,YAAY;AACF,mBAAA;AAAA,QACXC,kCAAkBC,IAAI;AAAA,QACtBC,6BAAaD,IAAI;AAAA,MAAA;AAEdP,WAAAA,OAAOE,SAAS,IAAIG;AAAAA,IAC3B;AAEA,QAAID,QAAQK,SAAS;AACRH,iBAAAA,aAAaI,IAAIP,UAAU,IAAI;AAAA,IAAA,OACrC;AACMK,iBAAAA,QAAQE,IAAIP,UAAU,IAAI;AAAA,IACvC;AAAA,EACF;AAAA,EAEAQ,eAAeT,WAAmBC,UAA+B;AAC3D,QAAA,KAAKH,OAAOE,SAAS,GAAG;AAC1B,WAAKF,OAAOE,SAAS,EAAEM,QAAQI,OAAOT,QAAQ;AAC9C,WAAKH,OAAOE,SAAS,EAAEI,aAAaM,OAAOT,QAAQ;AAAA,IACrD;AAAA,EACF;AAAA,EAEAU,qBAA2B;AACzB,SAAKb,SAAS;EAChB;AAAA,EAEAc,KAAKZ,cAAsBa,MAAmB;AACtCV,UAAAA,aAAa,KAAKL,OAAOE,SAAS;AACxC,QAAI,CAACG,YAAY;AACf;AAAA,IACF;AAEA,UAAMW,wBAAwBC,MAAMC,KAAKb,WAAWC,aAAaa,MAAM;AACvE,UAAMC,mBAAmBH,MAAMC,KAAKb,WAAWG,QAAQW,MAAM;AAE7D,aAASE,IAAIL,sBAAsBM,SAAS,GAAGD,KAAK,GAAGA,KAAK,GAAG;AACvDlB,YAAAA,WAAWa,sBAAsBK,CAAC;AACxC,UAAIhB,WAAWC,aAAaiB,IAAIpB,QAAQ,GAAG;AAChCqB,iBAAAA,MAAM,MAAMT,IAAI;AAAA,MAC3B;AAAA,IACF;AAEA,aAASM,IAAI,GAAGA,IAAID,iBAAiBE,QAAQD,KAAK,GAAG;AAC7ClB,YAAAA,WAAWiB,iBAAiBC,CAAC;AACnC,UAAIhB,WAAWG,QAAQe,IAAIpB,QAAQ,GAAG;AAC3BqB,iBAAAA,MAAM,MAAMT,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,EAEAU,KAAKvB,WAAmBC,UAA+B;AAErD,UAAMuB,OAAO;AACb,SAAKzB,GAAGC,WAAW,SAASyB,mBAAmBZ,MAAM;AAC9CJ,WAAAA,eAAeT,WAAWyB,eAAe;AACrCH,eAAAA,MAAME,MAAMX,IAAI;AAAA,IAAA,CAC1B;AAAA,EACH;AACF;;"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ class FinalizationRegistryBasedCleanupTracking {
4
+ constructor() {
5
+ this.registry = new FinalizationRegistry((unsubscribe) => {
6
+ if (typeof unsubscribe === "function") {
7
+ unsubscribe();
8
+ }
9
+ });
10
+ }
11
+ register(object, unsubscribe, unregisterToken) {
12
+ this.registry.register(object, unsubscribe, unregisterToken);
13
+ }
14
+ unregister(unregisterToken) {
15
+ this.registry.unregister(unregisterToken);
16
+ }
17
+ // eslint-disable-next-line class-methods-use-this
18
+ reset() {
19
+ }
20
+ }
21
+ exports.FinalizationRegistryBasedCleanupTracking = FinalizationRegistryBasedCleanupTracking;
22
+ //# sourceMappingURL=FinalizationRegistryBasedCleanupTracking.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FinalizationRegistryBasedCleanupTracking.cjs","sources":["../../../../../../src/components/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.ts"],"sourcesContent":["import {\n CleanupTracking,\n UnsubscribeFn,\n UnregisterToken,\n} from \"./CleanupTracking\";\n\nexport class FinalizationRegistryBasedCleanupTracking\n implements CleanupTracking\n{\n registry = new FinalizationRegistry<UnsubscribeFn>((unsubscribe) => {\n if (typeof unsubscribe === \"function\") {\n unsubscribe();\n }\n });\n\n register(\n object: any,\n unsubscribe: UnsubscribeFn,\n unregisterToken: UnregisterToken\n ): void {\n this.registry.register(object, unsubscribe, unregisterToken);\n }\n\n unregister(unregisterToken: UnregisterToken): void {\n this.registry.unregister(unregisterToken);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n}\n"],"names":["FinalizationRegistryBasedCleanupTracking","FinalizationRegistry","unsubscribe","register","object","unregisterToken","registry","unregister","reset"],"mappings":";;AAMO,MAAMA,yCAEb;AAAA,EAFO,cAAA;AAGM,SAAA,WAAA,IAAIC,qBAAqCC,CAAgB,gBAAA;AAC9D,UAAA,OAAOA,gBAAgB,YAAY;AACzB;MACd;AAAA,IAAA,CACD;AAAA,EAAA;AAAA,EAEDC,SACEC,QACAF,aACAG,iBACM;AACN,SAAKC,SAASH,SAASC,QAAQF,aAAaG,eAAe;AAAA,EAC7D;AAAA,EAEAE,WAAWF,iBAAwC;AAC5CC,SAAAA,SAASC,WAAWF,eAAe;AAAA,EAC1C;AAAA;AAAA,EAGAG,QAAQ;AAAA,EAAC;AACX;;"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const CLEANUP_TIMER_LOOP_MILLIS = 1e3;
4
+ class TimerBasedCleanupTracking {
5
+ constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {
6
+ this.timeouts = /* @__PURE__ */ new Map();
7
+ this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;
8
+ this.cleanupTimeout = timeout;
9
+ }
10
+ register(object, unsubscribe, unregisterToken) {
11
+ if (!this.timeouts) {
12
+ this.timeouts = /* @__PURE__ */ new Map();
13
+ }
14
+ const timeout = setTimeout(() => {
15
+ if (typeof unsubscribe === "function") {
16
+ unsubscribe();
17
+ }
18
+ this.timeouts.delete(unregisterToken.cleanupToken);
19
+ }, this.cleanupTimeout);
20
+ this.timeouts.set(unregisterToken.cleanupToken, timeout);
21
+ }
22
+ unregister(unregisterToken) {
23
+ const timeout = this.timeouts.get(unregisterToken.cleanupToken);
24
+ if (timeout) {
25
+ this.timeouts.delete(unregisterToken.cleanupToken);
26
+ clearTimeout(timeout);
27
+ }
28
+ }
29
+ reset() {
30
+ if (this.timeouts) {
31
+ this.timeouts.forEach((value, key) => {
32
+ this.unregister({
33
+ cleanupToken: key
34
+ });
35
+ });
36
+ this.timeouts = void 0;
37
+ }
38
+ }
39
+ }
40
+ exports.TimerBasedCleanupTracking = TimerBasedCleanupTracking;
41
+ //# sourceMappingURL=TimerBasedCleanupTracking.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimerBasedCleanupTracking.cjs","sources":["../../../../../../src/components/TreeView/internals/utils/TimerBasedCleanupTracking.ts"],"sourcesContent":["import {\n CleanupTracking,\n UnregisterToken,\n UnsubscribeFn,\n} from \"./CleanupTracking\";\n\n// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\n\nexport class TimerBasedCleanupTracking implements CleanupTracking {\n timeouts? = new Map<number, NodeJS.Timeout>();\n\n cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n\n constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n this.cleanupTimeout = timeout;\n }\n\n register(\n object: any,\n unsubscribe: UnsubscribeFn,\n unregisterToken: UnregisterToken\n ): void {\n if (!this.timeouts) {\n this.timeouts = new Map<number, NodeJS.Timeout>();\n }\n\n const timeout = setTimeout(() => {\n if (typeof unsubscribe === \"function\") {\n unsubscribe();\n }\n this.timeouts!.delete(unregisterToken.cleanupToken);\n }, this.cleanupTimeout);\n\n this.timeouts!.set(unregisterToken!.cleanupToken, timeout);\n }\n\n unregister(unregisterToken: UnregisterToken): void {\n const timeout = this.timeouts!.get(unregisterToken.cleanupToken);\n if (timeout) {\n this.timeouts!.delete(unregisterToken.cleanupToken);\n clearTimeout(timeout);\n }\n }\n\n reset() {\n if (this.timeouts) {\n this.timeouts.forEach((value, key) => {\n this.unregister({ cleanupToken: key });\n });\n this.timeouts = undefined;\n }\n }\n}\n"],"names":["CLEANUP_TIMER_LOOP_MILLIS","TimerBasedCleanupTracking","constructor","timeout","timeouts","Map","cleanupTimeout","register","object","unsubscribe","unregisterToken","setTimeout","delete","cleanupToken","set","unregister","get","clearTimeout","reset","forEach","value","key","undefined"],"mappings":";;AAOA,MAAMA,4BAA4B;AAE3B,MAAMC,0BAAqD;AAAA,EAKhEC,YAAYC,UAAUH,2BAA2B;AAJjDI,SAAAA,+BAAgBC;AAECL,SAAAA,iBAAAA;AAGf,SAAKM,iBAAiBH;AAAAA,EACxB;AAAA,EAEAI,SACEC,QACAC,aACAC,iBACM;AACF,QAAA,CAAC,KAAKN,UAAU;AACbA,WAAAA,+BAAeC;IACtB;AAEMF,UAAAA,UAAUQ,WAAW,MAAM;AAC3B,UAAA,OAAOF,gBAAgB,YAAY;AACzB;MACd;AACKL,WAAAA,SAAUQ,OAAOF,gBAAgBG,YAAY;AAAA,IAAA,GACjD,KAAKP,cAAc;AAEtB,SAAKF,SAAUU,IAAIJ,gBAAiBG,cAAcV,OAAO;AAAA,EAC3D;AAAA,EAEAY,WAAWL,iBAAwC;AACjD,UAAMP,UAAU,KAAKC,SAAUY,IAAIN,gBAAgBG,YAAY;AAC/D,QAAIV,SAAS;AACNC,WAAAA,SAAUQ,OAAOF,gBAAgBG,YAAY;AAClDI,mBAAad,OAAO;AAAA,IACtB;AAAA,EACF;AAAA,EAEAe,QAAQ;AACN,QAAI,KAAKd,UAAU;AACjB,WAAKA,SAASe,QAAQ,CAACC,OAAOC,QAAQ;AACpC,aAAKN,WAAW;AAAA,UAAEF,cAAcQ;AAAAA,QAAAA,CAAK;AAAA,MAAA,CACtC;AACD,WAAKjB,WAAWkB;AAAAA,IAClB;AAAA,EACF;AACF;;"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const publishTreeViewEvent = (instance, eventName, params) => {
4
+ instance.$$publishEvent(eventName, params);
5
+ };
6
+ exports.publishTreeViewEvent = publishTreeViewEvent;
7
+ //# sourceMappingURL=publishTreeViewEvent.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publishTreeViewEvent.cjs","sources":["../../../../../../src/components/TreeView/internals/utils/publishTreeViewEvent.ts"],"sourcesContent":["import type { UseTreeViewInstanceEventsInstance } from \"../hooks/useTreeViewInstanceEvents.types\";\nimport type { TreeViewAnyPluginSignature, TreeViewUsedEvents } from \"../types\";\n\nexport const publishTreeViewEvent = <\n Instance extends UseTreeViewInstanceEventsInstance & {\n $$signature: TreeViewAnyPluginSignature;\n },\n E extends keyof TreeViewUsedEvents<Instance[\"$$signature\"]>\n>(\n instance: Instance,\n eventName: E,\n params: TreeViewUsedEvents<Instance[\"$$signature\"]>[E][\"params\"]\n) => {\n instance.$$publishEvent(eventName as string, params);\n};\n"],"names":["publishTreeViewEvent","instance","eventName","params","$$publishEvent"],"mappings":";;AAGO,MAAMA,uBAAuB,CAMlCC,UACAC,WACAC,WACG;AACMC,WAAAA,eAAeF,WAAqBC,MAAM;AACrD;;"}
@@ -19,6 +19,7 @@ const HvCardHeader = (props) => {
19
19
  } = useClasses(classesProp);
20
20
  return /* @__PURE__ */ jsx(MuiCardHeader, { title, subheader, action: icon, onClick, className: cx(classes.root, className), classes: {
21
21
  title: cx({
22
+ // TODO: review conditional in v6
22
23
  [classes.titleShort]: icon,
23
24
  [classes.title]: !icon
24
25
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../../src/components/Card/Header/Header.tsx"],"sourcesContent":["import MuiCardHeader, {\n CardHeaderProps as MuiCardHeaderProps,\n} from \"@mui/material/CardHeader\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { staticClasses, useClasses } from \"./Header.styles\";\n\nexport { staticClasses as cardHeaderClasses };\n\nexport type HvCardHeaderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCardHeaderProps\n extends Omit<MuiCardHeaderProps, \"classes\">,\n HvBaseProps<HTMLDivElement, \"title\"> {\n /** The renderable content inside the title slot of the header. */\n title: React.ReactNode;\n /** The renderable content inside the subheader slot of the header. */\n subheader?: React.ReactNode;\n /** The renderable content inside the icon slot of the header. */\n icon?: React.ReactNode;\n /** The function that will be executed when this section is clicked. */\n onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvCardHeaderClasses;\n}\n\nexport const HvCardHeader = (props: HvCardHeaderProps) => {\n const {\n classes: classesProp,\n className,\n title,\n subheader,\n icon,\n onClick,\n ...others\n } = useDefaultProps(\"HvCardHeader\", props);\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <MuiCardHeader\n title={title}\n subheader={subheader}\n action={icon}\n onClick={onClick}\n className={cx(classes.root, className)}\n classes={{\n title: cx({\n [classes.titleShort]: icon,\n [classes.title]: !icon,\n }),\n subheader: classes.subheader,\n action: classes.action,\n content: classes.content,\n }}\n {...others}\n />\n );\n};\n"],"names":["HvCardHeader","props","classes","classesProp","className","title","subheader","icon","onClick","others","useDefaultProps","cx","useClasses","root","titleShort","action","content"],"mappings":";;;;;AA8BaA,MAAAA,eAAeA,CAACC,UAA6B;AAClD,QAAA;AAAA,IACJC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAgBT,KAAK;AACnC,QAAA;AAAA,IAAEC;AAAAA,IAASS;AAAAA,EAAAA,IAAOC,WAAWT,WAAW;AAE9C,SACG,oBAAA,eAAA,EACC,OACA,WACA,QAAQI,MACR,SACA,WAAWI,GAAGT,QAAQW,MAAMT,SAAS,GACrC,SAAS;AAAA,IACPC,OAAOM,GAAG;AAAA,MACR,CAACT,QAAQY,UAAU,GAAGP;AAAAA,MACtB,CAACL,QAAQG,KAAK,GAAG,CAACE;AAAAA,IAAAA,CACnB;AAAA,IACDD,WAAWJ,QAAQI;AAAAA,IACnBS,QAAQb,QAAQa;AAAAA,IAChBC,SAASd,QAAQc;AAAAA,EAAAA,GAEfP,GAAAA,OACJ,CAAA;AAEN;"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../../src/components/Card/Header/Header.tsx"],"sourcesContent":["import MuiCardHeader, {\n CardHeaderProps as MuiCardHeaderProps,\n} from \"@mui/material/CardHeader\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\n\nimport { useDefaultProps } from \"@core/hooks\";\n\nimport { staticClasses, useClasses } from \"./Header.styles\";\n\nexport { staticClasses as cardHeaderClasses };\n\nexport type HvCardHeaderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvCardHeaderProps\n extends Omit<MuiCardHeaderProps, \"classes\">,\n HvBaseProps<HTMLDivElement, \"title\"> {\n /** The renderable content inside the title slot of the header. */\n title: React.ReactNode;\n /** The renderable content inside the subheader slot of the header. */\n subheader?: React.ReactNode;\n /** The renderable content inside the icon slot of the header. */\n icon?: React.ReactNode;\n /** The function that will be executed when this section is clicked. */\n onClick?: React.MouseEventHandler<HTMLDivElement> | undefined;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvCardHeaderClasses;\n}\n\nexport const HvCardHeader = (props: HvCardHeaderProps) => {\n const {\n classes: classesProp,\n className,\n title,\n subheader,\n icon,\n onClick,\n ...others\n } = useDefaultProps(\"HvCardHeader\", props);\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <MuiCardHeader\n title={title}\n subheader={subheader}\n action={icon}\n onClick={onClick}\n className={cx(classes.root, className)}\n classes={{\n title: cx({\n // TODO: review conditional in v6\n [classes.titleShort]: icon,\n [classes.title]: !icon,\n }),\n subheader: classes.subheader,\n action: classes.action,\n content: classes.content,\n }}\n {...others}\n />\n );\n};\n"],"names":["HvCardHeader","props","classes","classesProp","className","title","subheader","icon","onClick","others","useDefaultProps","cx","useClasses","root","titleShort","action","content"],"mappings":";;;;;AA8BaA,MAAAA,eAAeA,CAACC,UAA6B;AAClD,QAAA;AAAA,IACJC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,gBAAgBT,KAAK;AACnC,QAAA;AAAA,IAAEC;AAAAA,IAASS;AAAAA,EAAAA,IAAOC,WAAWT,WAAW;AAE9C,SACG,oBAAA,eAAA,EACC,OACA,WACA,QAAQI,MACR,SACA,WAAWI,GAAGT,QAAQW,MAAMT,SAAS,GACrC,SAAS;AAAA,IACPC,OAAOM,GAAG;AAAA;AAAA,MAER,CAACT,QAAQY,UAAU,GAAGP;AAAAA,MACtB,CAACL,QAAQG,KAAK,GAAG,CAACE;AAAAA,IAAAA,CACnB;AAAA,IACDD,WAAWJ,QAAQI;AAAAA,IACnBS,QAAQb,QAAQa;AAAAA,IAChBC,SAASd,QAAQc;AAAAA,EAAAA,GAEfP,GAAAA,OACJ,CAAA;AAEN;"}
@@ -5,12 +5,12 @@ const {
5
5
  useClasses
6
6
  } = createClasses("HvCardHeader", {
7
7
  root: {
8
- padding: `15px ${theme.space.sm}`,
9
- position: "relative"
8
+ position: "relative",
9
+ padding: theme.spacing("12px", "xs", "sm", "sm")
10
10
  },
11
11
  titleShort: {
12
- fontFamily: theme.fontFamily.body,
13
- marginRight: "30px"
12
+ ...theme.typography.label,
13
+ fontFamily: theme.fontFamily.body
14
14
  },
15
15
  title: {
16
16
  ...theme.typography.label,
@@ -22,12 +22,8 @@ const {
22
22
  },
23
23
  content: {},
24
24
  action: {
25
- position: "absolute",
26
- right: 20,
27
- marginTop: 0,
28
- marginRight: "0px",
29
- paddingLeft: theme.space.xs,
30
- top: "15px"
25
+ margin: 0,
26
+ paddingLeft: theme.space.xs
31
27
  }
32
28
  });
33
29
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"Header.styles.js","sources":["../../../../../src/components/Card/Header/Header.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCardHeader\", {\n root: { padding: `15px ${theme.space.sm}`, position: \"relative\" },\n titleShort: {\n fontFamily: theme.fontFamily.body,\n marginRight: \"30px\",\n },\n title: {\n ...theme.typography.label,\n fontFamily: theme.fontFamily.body,\n },\n subheader: {\n ...theme.typography.caption1,\n fontFamily: theme.fontFamily.body,\n },\n content: {},\n action: {\n position: \"absolute\",\n right: 20,\n marginTop: 0,\n marginRight: \"0px\",\n paddingLeft: theme.space.xs,\n top: \"15px\",\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","padding","theme","space","sm","position","titleShort","fontFamily","body","marginRight","title","typography","label","subheader","caption1","content","action","right","marginTop","paddingLeft","xs","top"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,gBAAgB;AAAA,EACzEC,MAAM;AAAA,IAAEC,SAAU,QAAOC,MAAMC,MAAMC,EAAG;AAAA,IAAGC,UAAU;AAAA,EAAW;AAAA,EAChEC,YAAY;AAAA,IACVC,YAAYL,MAAMK,WAAWC;AAAAA,IAC7BC,aAAa;AAAA,EACf;AAAA,EACAC,OAAO;AAAA,IACL,GAAGR,MAAMS,WAAWC;AAAAA,IACpBL,YAAYL,MAAMK,WAAWC;AAAAA,EAC/B;AAAA,EACAK,WAAW;AAAA,IACT,GAAGX,MAAMS,WAAWG;AAAAA,IACpBP,YAAYL,MAAMK,WAAWC;AAAAA,EAC/B;AAAA,EACAO,SAAS,CAAC;AAAA,EACVC,QAAQ;AAAA,IACNX,UAAU;AAAA,IACVY,OAAO;AAAA,IACPC,WAAW;AAAA,IACXT,aAAa;AAAA,IACbU,aAAajB,MAAMC,MAAMiB;AAAAA,IACzBC,KAAK;AAAA,EACP;AACF,CAAC;"}
1
+ {"version":3,"file":"Header.styles.js","sources":["../../../../../src/components/Card/Header/Header.styles.tsx"],"sourcesContent":["import { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { createClasses } from \"@core/utils/classes\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvCardHeader\", {\n root: {\n position: \"relative\",\n padding: theme.spacing(\"12px\", \"xs\", \"sm\", \"sm\"),\n },\n titleShort: {\n ...theme.typography.label,\n fontFamily: theme.fontFamily.body,\n },\n title: {\n ...theme.typography.label,\n fontFamily: theme.fontFamily.body,\n },\n subheader: {\n ...theme.typography.caption1,\n fontFamily: theme.fontFamily.body,\n },\n content: {},\n action: {\n margin: 0,\n paddingLeft: theme.space.xs,\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","position","padding","theme","spacing","titleShort","typography","label","fontFamily","body","title","subheader","caption1","content","action","margin","paddingLeft","space","xs"],"mappings":";;AAIa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,gBAAgB;AAAA,EACzEC,MAAM;AAAA,IACJC,UAAU;AAAA,IACVC,SAASC,MAAMC,QAAQ,QAAQ,MAAM,MAAM,IAAI;AAAA,EACjD;AAAA,EACAC,YAAY;AAAA,IACV,GAAGF,MAAMG,WAAWC;AAAAA,IACpBC,YAAYL,MAAMK,WAAWC;AAAAA,EAC/B;AAAA,EACAC,OAAO;AAAA,IACL,GAAGP,MAAMG,WAAWC;AAAAA,IACpBC,YAAYL,MAAMK,WAAWC;AAAAA,EAC/B;AAAA,EACAE,WAAW;AAAA,IACT,GAAGR,MAAMG,WAAWM;AAAAA,IACpBJ,YAAYL,MAAMK,WAAWC;AAAAA,EAC/B;AAAA,EACAI,SAAS,CAAC;AAAA,EACVC,QAAQ;AAAA,IACNC,QAAQ;AAAA,IACRC,aAAab,MAAMc,MAAMC;AAAAA,EAC3B;AACF,CAAC;"}
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
+ import { forwardRef } from "react";
2
3
  import { Up, Down } from "@hitachivantara/uikit-react-icons";
3
4
  import { useDefaultProps } from "../../hooks/useDefaultProps.js";
4
5
  import { useControlled } from "../../hooks/useControlled.js";
@@ -7,7 +8,7 @@ import { setId } from "../../utils/setId.js";
7
8
  import { useClasses } from "./Section.styles.js";
8
9
  import { staticClasses } from "./Section.styles.js";
9
10
  import { HvButton } from "../Button/Button.js";
10
- const HvSection = (props) => {
11
+ const HvSection = forwardRef((props, ref) => {
11
12
  const {
12
13
  id,
13
14
  classes: classesProp,
@@ -30,7 +31,7 @@ const HvSection = (props) => {
30
31
  const elementId = useUniqueId(id, "hvSection");
31
32
  const contentId = setId(elementId, "content");
32
33
  const showContent = expandable ? !!isOpen : true;
33
- return /* @__PURE__ */ jsxs("div", { id: elementId, className: cx(classes.root, className), ...others, children: [
34
+ return /* @__PURE__ */ jsxs("div", { ref, id: elementId, className: cx(classes.root, className), ...others, children: [
34
35
  /* @__PURE__ */ jsxs("div", { className: classes.header, children: [
35
36
  expandable && /* @__PURE__ */ jsx(HvButton, { icon: true, onClick: (event) => {
36
37
  setIsOpen((o) => !o);
@@ -43,7 +44,7 @@ const HvSection = (props) => {
43
44
  [classes.hidden]: !showContent
44
45
  }), children })
45
46
  ] });
46
- };
47
+ });
47
48
  export {
48
49
  HvSection,
49
50
  staticClasses as sectionClasses
@@ -1 +1 @@
1
- {"version":3,"file":"Section.js","sources":["../../../../src/components/Section/Section.tsx"],"sourcesContent":["import { Down, Up } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { staticClasses, useClasses } from \"./Section.styles\";\n\nexport { staticClasses as sectionClasses };\n\nexport type HvSectionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSectionProps\n extends Omit<HvBaseProps<HTMLDivElement>, \"title\"> {\n /** The title of the section */\n title?: React.ReactNode;\n /** Whether or not the section is expandable. */\n expandable?: boolean;\n /** Whether the section is open or not, if this property is defined the accordion must be fully controlled. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** Section actions */\n // actions?: HvActionGeneric[];\n actions?: React.ReactNode;\n /** Section onExpand callback */\n onToggle?: (\n event: React.MouseEventHandler<HTMLButtonElement>,\n open: boolean\n ) => void;\n /** Props to be passed to the expand button */\n expandButtonProps?: HvButtonProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvSectionClasses;\n}\n\n/**\n * Sections allow grouping information on a page under the same topic.\n */\nexport const HvSection = (props: HvSectionProps) => {\n const {\n id,\n classes: classesProp,\n className,\n title,\n expandable,\n expanded,\n defaultExpanded = true,\n actions,\n onToggle,\n expandButtonProps,\n children,\n ...others\n } = useDefaultProps(\"HvSection\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [isOpen, setIsOpen] = useControlled(expanded, Boolean(defaultExpanded));\n\n const elementId = useUniqueId(id, \"hvSection\");\n const contentId = setId(elementId, \"content\");\n\n const showContent = expandable ? !!isOpen : true;\n\n return (\n <div id={elementId} className={cx(classes.root, className)} {...others}>\n <div className={classes.header}>\n {expandable && (\n <HvButton\n icon\n onClick={(event) => {\n setIsOpen((o) => !o);\n onToggle?.(event, !isOpen);\n }}\n aria-expanded={isOpen}\n aria-controls={contentId}\n aria-label={isOpen ? \"Collapse\" : \"Expand\"}\n {...expandButtonProps}\n >\n {isOpen ? <Up /> : <Down />}\n </HvButton>\n )}\n {title}\n <div className={classes.actions}>{actions}</div>\n </div>\n <div\n id={contentId}\n hidden={!isOpen}\n className={cx(classes.content, { [classes.hidden]: !showContent })}\n >\n {children}\n </div>\n </div>\n );\n};\n"],"names":["HvSection","props","id","classes","classesProp","className","title","expandable","expanded","defaultExpanded","actions","onToggle","expandButtonProps","children","others","useDefaultProps","cx","useClasses","isOpen","setIsOpen","useControlled","Boolean","elementId","useUniqueId","contentId","setId","showContent","root","header","event","o","content","hidden"],"mappings":";;;;;;;;;AA2CaA,MAAAA,YAAYA,CAACC,UAA0B;AAC5C,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,kBAAkB;AAAA,IAClBC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,aAAad,KAAK;AAEhC,QAAA;AAAA,IAAEE;AAAAA,IAASa;AAAAA,EAAAA,IAAOC,WAAWb,WAAW;AAExC,QAAA,CAACc,QAAQC,SAAS,IAAIC,cAAcZ,UAAUa,QAAQZ,eAAe,CAAC;AAEtEa,QAAAA,YAAYC,YAAYrB,IAAI,WAAW;AACvCsB,QAAAA,YAAYC,MAAMH,WAAW,SAAS;AAE5C,QAAMI,cAAcnB,aAAa,CAAC,CAACW,SAAS;AAG1C,SAAA,qBAAC,OAAI,EAAA,IAAII,WAAW,WAAWN,GAAGb,QAAQwB,MAAMtB,SAAS,GAAOS,GAAAA,QAC9D,UAAA;AAAA,IAAC,qBAAA,OAAA,EAAI,WAAWX,QAAQyB,QACrBrB,UAAAA;AAAAA,MAAAA,cACE,oBAAA,UAAA,EACC,MAAI,MACJ,SAAUsB,CAAU,UAAA;AACPC,kBAAAA,CAAAA,MAAM,CAACA,CAAC;AACRD,mBAAAA,OAAO,CAACX,MAAM;AAAA,MAAA,GAE3B,iBAAeA,QACf,iBAAeM,WACf,cAAYN,SAAS,aAAa,UAC9BN,GAAAA,mBAEHM,UAAS,SAAA,oBAAC,MAAK,IAAG,oBAAC,OAAO,CAAA,GAC7B;AAAA,MAEDZ;AAAAA,MACA,oBAAA,OAAA,EAAI,WAAWH,QAAQO,SAAUA,UAAQ,SAAA;AAAA,IAAA,GAC5C;AAAA,IACA,oBAAC,OACC,EAAA,IAAIc,WACJ,QAAQ,CAACN,QACT,WAAWF,GAAGb,QAAQ4B,SAAS;AAAA,MAAE,CAAC5B,QAAQ6B,MAAM,GAAG,CAACN;AAAAA,IAAAA,CAAa,GAEhEb,SACH,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"Section.js","sources":["../../../../src/components/Section/Section.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { Down, Up } from \"@hitachivantara/uikit-react-icons\";\n\nimport { HvBaseProps } from \"@core/types/generic\";\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { HvButton, HvButtonProps } from \"@core/components/Button\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\nimport { useControlled } from \"@core/hooks/useControlled\";\nimport { useUniqueId } from \"@core/hooks/useUniqueId\";\nimport { setId } from \"@core/utils/setId\";\n\nimport { staticClasses, useClasses } from \"./Section.styles\";\n\nexport { staticClasses as sectionClasses };\n\nexport type HvSectionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvSectionProps\n extends Omit<HvBaseProps<HTMLDivElement>, \"title\"> {\n /** The title of the section */\n title?: React.ReactNode;\n /** Whether or not the section is expandable. */\n expandable?: boolean;\n /** Whether the section is open or not, if this property is defined the accordion must be fully controlled. */\n expanded?: boolean;\n /** When uncontrolled, defines the initial expanded state. */\n defaultExpanded?: boolean;\n /** Section actions */\n actions?: React.ReactNode;\n /** Section onExpand callback */\n onToggle?: (\n event: React.MouseEventHandler<HTMLButtonElement>,\n open: boolean\n ) => void;\n /** Props to be passed to the expand button */\n expandButtonProps?: HvButtonProps;\n /** A Jss Object used to override or extend the styles applied to the empty state component. */\n classes?: HvSectionClasses;\n}\n\n/**\n * Sections allow grouping information on a page under the same topic.\n */\nexport const HvSection = forwardRef<HTMLDivElement, HvSectionProps>(\n (props, ref) => {\n const {\n id,\n classes: classesProp,\n className,\n title,\n expandable,\n expanded,\n defaultExpanded = true,\n actions,\n onToggle,\n expandButtonProps,\n children,\n ...others\n } = useDefaultProps(\"HvSection\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [isOpen, setIsOpen] = useControlled(\n expanded,\n Boolean(defaultExpanded)\n );\n\n const elementId = useUniqueId(id, \"hvSection\");\n const contentId = setId(elementId, \"content\");\n\n const showContent = expandable ? !!isOpen : true;\n\n return (\n <div\n ref={ref}\n id={elementId}\n className={cx(classes.root, className)}\n {...others}\n >\n <div className={classes.header}>\n {expandable && (\n <HvButton\n icon\n onClick={(event) => {\n setIsOpen((o) => !o);\n onToggle?.(event, !isOpen);\n }}\n aria-expanded={isOpen}\n aria-controls={contentId}\n aria-label={isOpen ? \"Collapse\" : \"Expand\"}\n {...expandButtonProps}\n >\n {isOpen ? <Up /> : <Down />}\n </HvButton>\n )}\n {title}\n <div className={classes.actions}>{actions}</div>\n </div>\n <div\n id={contentId}\n hidden={!isOpen}\n className={cx(classes.content, { [classes.hidden]: !showContent })}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n"],"names":["HvSection","forwardRef","props","ref","id","classes","classesProp","className","title","expandable","expanded","defaultExpanded","actions","onToggle","expandButtonProps","children","others","useDefaultProps","cx","useClasses","isOpen","setIsOpen","useControlled","Boolean","elementId","useUniqueId","contentId","setId","showContent","root","header","event","o","content","hidden"],"mappings":";;;;;;;;;;AA2CO,MAAMA,YAAYC,WACvB,CAACC,OAAOC,QAAQ;AACR,QAAA;AAAA,IACJC;AAAAA,IACAC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,kBAAkB;AAAA,IAClBC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EAAAA,IACDC,gBAAgB,aAAaf,KAAK;AAEhC,QAAA;AAAA,IAAEG;AAAAA,IAASa;AAAAA,EAAAA,IAAOC,WAAWb,WAAW;AAExC,QAAA,CAACc,QAAQC,SAAS,IAAIC,cAC1BZ,UACAa,QAAQZ,eAAe,CACzB;AAEMa,QAAAA,YAAYC,YAAYrB,IAAI,WAAW;AACvCsB,QAAAA,YAAYC,MAAMH,WAAW,SAAS;AAE5C,QAAMI,cAAcnB,aAAa,CAAC,CAACW,SAAS;AAE5C,SACG,qBAAA,OAAA,EACC,KACA,IAAII,WACJ,WAAWN,GAAGb,QAAQwB,MAAMtB,SAAS,GACrC,GAAIS,QAEJ,UAAA;AAAA,IAAC,qBAAA,OAAA,EAAI,WAAWX,QAAQyB,QACrBrB,UAAAA;AAAAA,MAAAA,cACE,oBAAA,UAAA,EACC,MAAI,MACJ,SAAUsB,CAAU,UAAA;AACPC,kBAAAA,CAAAA,MAAM,CAACA,CAAC;AACRD,mBAAAA,OAAO,CAACX,MAAM;AAAA,MAAA,GAE3B,iBAAeA,QACf,iBAAeM,WACf,cAAYN,SAAS,aAAa,UAC9BN,GAAAA,mBAEHM,UAAS,SAAA,oBAAC,MAAK,IAAG,oBAAC,OAAO,CAAA,GAC7B;AAAA,MAEDZ;AAAAA,MACA,oBAAA,OAAA,EAAI,WAAWH,QAAQO,SAAUA,UAAQ,SAAA;AAAA,IAAA,GAC5C;AAAA,IACA,oBAAC,OACC,EAAA,IAAIc,WACJ,QAAQ,CAACN,QACT,WAAWF,GAAGb,QAAQ4B,SAAS;AAAA,MAAE,CAAC5B,QAAQ6B,MAAM,GAAG,CAACN;AAAAA,IAAAA,CAAa,GAEhEb,SACH,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ,CACF;"}
@@ -1,10 +1,22 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
2
  import { forwardRef } from "react";
3
3
  import { useCss } from "../../../hooks/useCss.js";
4
+ import { createClasses } from "../../../utils/classes.js";
4
5
  import { useHvTreeItem } from "./useHvTreeItem.js";
6
+ const {
7
+ useClasses
8
+ } = createClasses("HvTreeContent", {
9
+ root: {},
10
+ expanded: {},
11
+ selected: {},
12
+ focused: {},
13
+ disabled: {},
14
+ iconContainer: {},
15
+ label: {}
16
+ });
5
17
  const DefaultContent = forwardRef((props, ref) => {
6
18
  const {
7
- classes,
19
+ classes: classesProp,
8
20
  className,
9
21
  displayIcon,
10
22
  expansionIcon,
@@ -15,6 +27,9 @@ const DefaultContent = forwardRef((props, ref) => {
15
27
  onMouseDown,
16
28
  ...others
17
29
  } = props;
30
+ const {
31
+ classes
32
+ } = useClasses(classesProp);
18
33
  const {
19
34
  cx
20
35
  } = useCss();
@@ -49,6 +64,7 @@ const DefaultContent = forwardRef((props, ref) => {
49
64
  );
50
65
  });
51
66
  export {
52
- DefaultContent
67
+ DefaultContent,
68
+ useClasses
53
69
  };
54
70
  //# sourceMappingURL=DefaultContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultContent.js","sources":["../../../../../src/components/TreeView/TreeItem/DefaultContent.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\n\nimport { useCss } from \"@core/hooks/useCss\";\n\nimport type { HvTreeContentProps } from \"./TreeItem\";\nimport { useHvTreeItem } from \"./useHvTreeItem\";\n\n/**\n * Internal default TreeItem `component`.\n * Use this as a basis to create a custom component.\n */\nexport const DefaultContent = forwardRef<HTMLDivElement, HvTreeContentProps>(\n (props, ref) => {\n const {\n classes,\n className,\n displayIcon,\n expansionIcon,\n icon: iconProp,\n label,\n nodeId,\n onClick,\n onMouseDown,\n ...others\n } = props;\n\n const { cx } = useCss();\n\n const {\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection,\n } = useHvTreeItem(nodeId);\n\n const icon = iconProp ?? expansionIcon ?? displayIcon;\n\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */\n <div\n {...others}\n className={cx(className, classes.root, {\n [classes.expanded]: expanded,\n [classes.selected]: selected,\n [classes.focused]: focused,\n [classes.disabled]: disabled,\n })}\n onClick={(event) => {\n handleExpansion(event);\n handleSelection(event);\n onClick?.(event);\n }}\n onMouseDown={(event) => {\n preventSelection(event);\n onMouseDown?.(event);\n }}\n ref={ref}\n >\n <div className={classes.iconContainer}>{icon}</div>\n <div className={classes.label}>{label}</div>\n </div>\n );\n }\n);\n"],"names":["DefaultContent","forwardRef","props","ref","classes","className","displayIcon","expansionIcon","icon","iconProp","label","nodeId","onClick","onMouseDown","others","cx","useCss","disabled","expanded","selected","focused","handleExpansion","handleSelection","preventSelection","useHvTreeItem","root","event","iconContainer"],"mappings":";;;;AAWO,MAAMA,iBAAiBC,WAC5B,CAACC,OAAOC,QAAQ;AACR,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,MAAMC;AAAAA,IACNC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EACDZ,IAAAA;AAEE,QAAA;AAAA,IAAEa;AAAAA,MAAOC,OAAO;AAEhB,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EAAAA,IACEC,cAAcb,MAAM;AAElBH,QAAAA,OAAOC,YAAYF,iBAAiBD;AAE1C;AAAA;AAAA,IAEE,qBAAC,SACC,GAAIQ,QACJ,WAAWC,GAAGV,WAAWD,QAAQqB,MAAM;AAAA,MACrC,CAACrB,QAAQc,QAAQ,GAAGA;AAAAA,MACpB,CAACd,QAAQe,QAAQ,GAAGA;AAAAA,MACpB,CAACf,QAAQgB,OAAO,GAAGA;AAAAA,MACnB,CAAChB,QAAQa,QAAQ,GAAGA;AAAAA,IAAAA,CACrB,GACD,SAAUS,CAAU,UAAA;AAClBL,sBAAgBK,KAAK;AACrBJ,sBAAgBI,KAAK;AACrBd,gBAAUc,KAAK;AAAA,IAAA,GAEjB,aAAcA,CAAU,UAAA;AACtBH,uBAAiBG,KAAK;AACtBb,oBAAca,KAAK;AAAA,IAAA,GAErB,KAEA,UAAA;AAAA,MAAA,oBAAC,OAAI,EAAA,WAAWtB,QAAQuB,eAAgBnB,UAAK,MAAA;AAAA,MAC5C,oBAAA,OAAA,EAAI,WAAWJ,QAAQM,OAAQA,UAAM,OAAA;AAAA,IAAA,GACxC;AAAA;AAEJ,CACF;"}
1
+ {"version":3,"file":"DefaultContent.js","sources":["../../../../../src/components/TreeView/TreeItem/DefaultContent.tsx"],"sourcesContent":["import { HTMLAttributes, ReactNode, forwardRef } from \"react\";\n\nimport { useCss } from \"@core/hooks/useCss\";\nimport { ExtractNames, createClasses } from \"@core/utils/classes\";\n\nimport { useHvTreeItem } from \"./useHvTreeItem\";\n\nexport const { useClasses } = createClasses(\"HvTreeContent\", {\n root: {},\n expanded: {},\n selected: {},\n focused: {},\n disabled: {},\n iconContainer: {},\n label: {},\n});\n\nexport type HvTreeContentClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTreeContentProps extends HTMLAttributes<HTMLElement> {\n /** className applied to the root element. */\n className?: string;\n /** Override or extend the styles applied to the component. */\n classes?: HvTreeContentClasses;\n /** The tree node label. */\n label?: ReactNode;\n /** The id of the node. */\n nodeId: string;\n /** The icon to display next to the tree node's label. */\n icon?: ReactNode;\n /** The icon to display next to the tree node's label. Either an expansion or collapse icon. */\n expansionIcon?: ReactNode;\n /** The icon to display next to the tree node's label. Either a parent or end icon. */\n displayIcon?: ReactNode;\n}\n\n/**\n * Internal default TreeItem `component`.\n * Use this as a basis to create a custom component.\n */\nexport const DefaultContent = forwardRef<HTMLDivElement, HvTreeContentProps>(\n (props, ref) => {\n const {\n classes: classesProp,\n className,\n displayIcon,\n expansionIcon,\n icon: iconProp,\n label,\n nodeId,\n onClick,\n onMouseDown,\n ...others\n } = props;\n const { classes } = useClasses(classesProp);\n\n const { cx } = useCss();\n\n const {\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection,\n } = useHvTreeItem(nodeId);\n\n const icon = iconProp ?? expansionIcon ?? displayIcon;\n\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */\n <div\n {...others}\n className={cx(className, classes.root, {\n [classes.expanded]: expanded,\n [classes.selected]: selected,\n [classes.focused]: focused,\n [classes.disabled]: disabled,\n })}\n onClick={(event) => {\n handleExpansion(event);\n handleSelection(event);\n onClick?.(event);\n }}\n onMouseDown={(event) => {\n preventSelection(event);\n onMouseDown?.(event);\n }}\n ref={ref}\n >\n <div className={classes.iconContainer}>{icon}</div>\n <div className={classes.label}>{label}</div>\n </div>\n );\n }\n);\n"],"names":["useClasses","createClasses","root","expanded","selected","focused","disabled","iconContainer","label","DefaultContent","forwardRef","props","ref","classes","classesProp","className","displayIcon","expansionIcon","icon","iconProp","nodeId","onClick","onMouseDown","others","cx","useCss","handleExpansion","handleSelection","preventSelection","useHvTreeItem","event"],"mappings":";;;;;AAOa,MAAA;AAAA,EAAEA;AAAW,IAAIC,cAAc,iBAAiB;AAAA,EAC3DC,MAAM,CAAC;AAAA,EACPC,UAAU,CAAC;AAAA,EACXC,UAAU,CAAC;AAAA,EACXC,SAAS,CAAC;AAAA,EACVC,UAAU,CAAC;AAAA,EACXC,eAAe,CAAC;AAAA,EAChBC,OAAO,CAAC;AACV,CAAC;AAyBM,MAAMC,iBAAiBC,WAC5B,CAACC,OAAOC,QAAQ;AACR,QAAA;AAAA,IACJC,SAASC;AAAAA,IACTC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC,MAAMC;AAAAA,IACNX;AAAAA,IACAY;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACA,GAAGC;AAAAA,EACDZ,IAAAA;AACE,QAAA;AAAA,IAAEE;AAAAA,EAAAA,IAAYb,WAAWc,WAAW;AAEpC,QAAA;AAAA,IAAEU;AAAAA,MAAOC,OAAO;AAEhB,QAAA;AAAA,IACJnB;AAAAA,IACAH;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAqB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,EAAAA,IACEC,cAAcT,MAAM;AAElBF,QAAAA,OAAOC,YAAYF,iBAAiBD;AAE1C;AAAA;AAAA,IAEE,qBAAC,SACC,GAAIO,QACJ,WAAWC,GAAGT,WAAWF,QAAQX,MAAM;AAAA,MACrC,CAACW,QAAQV,QAAQ,GAAGA;AAAAA,MACpB,CAACU,QAAQT,QAAQ,GAAGA;AAAAA,MACpB,CAACS,QAAQR,OAAO,GAAGA;AAAAA,MACnB,CAACQ,QAAQP,QAAQ,GAAGA;AAAAA,IAAAA,CACrB,GACD,SAAUwB,CAAU,UAAA;AAClBJ,sBAAgBI,KAAK;AACrBH,sBAAgBG,KAAK;AACrBT,gBAAUS,KAAK;AAAA,IAAA,GAEjB,aAAcA,CAAU,UAAA;AACtBF,uBAAiBE,KAAK;AACtBR,oBAAcQ,KAAK;AAAA,IAAA,GAErB,KAEA,UAAA;AAAA,MAAA,oBAAC,OAAI,EAAA,WAAWjB,QAAQN,eAAgBW,UAAK,MAAA;AAAA,MAC5C,oBAAA,OAAA,EAAI,WAAWL,QAAQL,OAAQA,UAAM,OAAA;AAAA,IAAA,GACxC;AAAA;AAEJ,CACF;"}
@@ -1,14 +1,13 @@
1
1
  import { jsxs, jsx } from "@emotion/react/jsx-runtime";
2
2
  import { forwardRef, useState, useRef, useMemo, useEffect } from "react";
3
- import { Collapse } from "@mui/material";
3
+ import Collapse from "@mui/material/Collapse";
4
4
  import { useForkRef } from "../../../hooks/useForkRef.js";
5
5
  import { useDefaultProps } from "../../../hooks/useDefaultProps.js";
6
- import "../internals.js";
6
+ import { useTreeViewContext } from "../internals/TreeViewProvider.js";
7
+ import { useDescendant, DescendantProvider } from "../internals/DescendantProvider.js";
7
8
  import { useClasses } from "./TreeItem.styles.js";
8
9
  import { staticClasses } from "./TreeItem.styles.js";
9
10
  import { DefaultContent } from "./DefaultContent.js";
10
- import { useTreeViewContext } from "@mui/x-tree-view/internals/TreeViewProvider/useTreeViewContext";
11
- import { useDescendant, DescendantProvider } from "@mui/x-tree-view/internals/TreeViewProvider/DescendantProvider";
12
11
  const HvTreeItem = forwardRef((props, ref) => {
13
12
  const {
14
13
  id: idProp,
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItem.js","sources":["../../../../../src/components/TreeView/TreeItem/TreeItem.tsx"],"sourcesContent":["import {\n FocusEvent,\n ReactNode,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Collapse } from \"@mui/material\";\nimport type { TreeItemContentProps, TreeItemProps } from \"@mui/x-tree-view\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useForkRef } from \"@core/hooks/useForkRef\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport {\n HvTreeViewPlugins,\n DescendantProvider,\n TreeItemDescendant,\n useDescendant,\n useTreeViewContext,\n} from \"../internals\";\nimport { staticClasses, useClasses } from \"./TreeItem.styles\";\nimport { DefaultContent } from \"./DefaultContent\";\n\nexport { staticClasses as treeItemClasses };\n\nexport type HvTreeItemClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTreeContentProps extends TreeItemContentProps {}\n\nexport interface HvTreeItemProps extends TreeItemProps {\n classes?: HvTreeItemClasses;\n disabled?: boolean;\n icon?: ReactNode;\n ContentComponent?: React.JSXElementConstructor<HvTreeContentProps>;\n}\n\nexport const HvTreeItem = forwardRef<HTMLLIElement, HvTreeItemProps>(\n (props, ref) => {\n const {\n id: idProp,\n nodeId,\n children,\n classes: classesProp,\n className,\n label,\n disabled: disabledProp,\n icon,\n endIcon,\n expandIcon,\n collapseIcon,\n ContentComponent: Component = DefaultContent,\n TransitionProps: transitionProps,\n ContentProps: contentProps,\n ...others\n } = useDefaultProps(\"HvTreeItem\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const {\n instance,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n icons: contextIcons,\n } = useTreeViewContext<HvTreeViewPlugins>();\n\n const id =\n idProp || (treeId && nodeId && `${treeId}-${nodeId}`) || undefined;\n\n const [treeItemElement, setTreeItemElement] =\n useState<HTMLLIElement | null>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeItemElement, ref);\n\n const descendant = useMemo<TreeItemDescendant>(\n () => ({ element: treeItemElement!, id: nodeId }),\n [nodeId, treeItemElement]\n );\n\n const { index, parentId } = useDescendant(descendant);\n\n const expandable = !!(Array.isArray(children) ? children.length : children);\n const expanded = instance ? instance.isNodeExpanded(nodeId) : false;\n const focused = instance ? instance.isNodeFocused(nodeId) : false;\n const selected = instance ? instance.isNodeSelected(nodeId) : false;\n const disabled = instance ? instance.isNodeDisabled(nodeId) : false;\n\n const expansionIcon = !expanded\n ? expandIcon || contextIcons.defaultExpandIcon\n : collapseIcon || contextIcons.defaultCollapseIcon;\n\n const displayIcon = expandable\n ? contextIcons.defaultParentIcon\n : endIcon || contextIcons.defaultEndIcon;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (instance && index !== -1) {\n instance.updateNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n expandable,\n disabled: disabledProp,\n });\n\n return () => instance.removeNode(nodeId);\n }\n\n return undefined;\n }, [instance, parentId, index, nodeId, expandable, disabledProp, id]);\n\n useEffect(() => {\n if (instance && label) {\n return instance.mapFirstChar(\n nodeId,\n (contentRef.current?.textContent ?? \"\").substring(0, 1).toLowerCase()\n );\n }\n return undefined;\n }, [instance, nodeId, label]);\n\n const handleFocus = (event: FocusEvent<HTMLLIElement, any>) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n const rootElement: any =\n typeof event.target.getRootNode === \"function\"\n ? event.target.getRootNode()\n : event.target.ownerDocument || document;\n\n rootElement.getElementById(treeId).focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n const canFocus =\n instance &&\n !focused &&\n !disabled &&\n !unfocusable &&\n event.currentTarget === event.target;\n\n if (canFocus) {\n instance.focusNode(event, nodeId);\n }\n };\n\n return (\n <li\n id={id}\n ref={handleRef}\n role=\"treeitem\"\n aria-expanded={expandable ? expanded : undefined}\n aria-selected={(multiSelect && selected) || selected || undefined}\n aria-disabled={disabled || undefined}\n className={cx(classes.root, className)}\n // @ts-ignore\n onFocus={handleFocus}\n tabIndex={-1}\n {...others}\n >\n <Component\n ref={contentRef}\n nodeId={nodeId}\n classes={{\n root: classes.content,\n expanded: classes.expanded,\n selected: classes.selected,\n focused: classes.focused,\n disabled: classes.disabled,\n label: classes.label,\n iconContainer: classes.iconContainer,\n }}\n label={label}\n icon={icon}\n expansionIcon={expandable && expansionIcon}\n displayIcon={displayIcon}\n {...contentProps}\n />\n {children && (\n <DescendantProvider id={nodeId}>\n <Collapse\n component=\"ul\"\n role=\"group\"\n unmountOnExit\n className={classes.group}\n in={expanded}\n {...transitionProps}\n >\n {children}\n </Collapse>\n </DescendantProvider>\n )}\n </li>\n );\n }\n);\n"],"names":["HvTreeItem","forwardRef","props","ref","id","idProp","nodeId","children","classes","classesProp","className","label","disabled","disabledProp","icon","endIcon","expandIcon","collapseIcon","ContentComponent","Component","DefaultContent","TransitionProps","transitionProps","ContentProps","contentProps","others","useDefaultProps","cx","useClasses","instance","multiSelect","disabledItemsFocusable","treeId","icons","contextIcons","useTreeViewContext","undefined","treeItemElement","setTreeItemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","index","parentId","useDescendant","expandable","Array","isArray","length","expanded","isNodeExpanded","focused","isNodeFocused","selected","isNodeSelected","isNodeDisabled","expansionIcon","defaultExpandIcon","defaultCollapseIcon","displayIcon","defaultParentIcon","defaultEndIcon","useEffect","updateNode","idAttribute","removeNode","mapFirstChar","current","textContent","substring","toLowerCase","handleFocus","event","target","currentTarget","rootElement","getRootNode","ownerDocument","document","getElementById","focus","preventScroll","unfocusable","canFocus","focusNode","root","content","iconContainer","group"],"mappings":"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"}
1
+ {"version":3,"file":"TreeItem.js","sources":["../../../../../src/components/TreeView/TreeItem/TreeItem.tsx"],"sourcesContent":["import {\n FocusEvent,\n HTMLAttributes,\n JSXElementConstructor,\n ReactNode,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport Collapse from \"@mui/material/Collapse\";\nimport { TransitionProps } from \"@mui/material/transitions\";\n\nimport { ExtractNames } from \"@core/utils/classes\";\nimport { useForkRef } from \"@core/hooks/useForkRef\";\nimport { useDefaultProps } from \"@core/hooks/useDefaultProps\";\n\nimport { useTreeViewContext } from \"../internals/TreeViewProvider\";\nimport { DefaultTreeViewPlugins } from \"../internals/hooks/plugins\";\nimport {\n DescendantProvider,\n TreeItemDescendant,\n useDescendant,\n} from \"../internals/DescendantProvider\";\nimport { staticClasses, useClasses } from \"./TreeItem.styles\";\nimport { DefaultContent, HvTreeContentClasses } from \"./DefaultContent\";\n\nexport { staticClasses as treeItemClasses };\n\nexport type HvTreeItemClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTreeContentProps extends HTMLAttributes<HTMLElement> {\n /** className applied to the root element. */\n className?: string;\n /** Override or extend the styles applied to the component. */\n classes?: HvTreeContentClasses;\n /** The tree node label. */\n label?: ReactNode;\n /** The id of the node. */\n nodeId: string;\n /** The icon to display next to the tree node's label. */\n icon?: ReactNode;\n /** The icon to display next to the tree node's label. Either an expansion or collapse icon. */\n expansionIcon?: ReactNode;\n /** The icon to display next to the tree node's label. Either a parent or end icon. */\n displayIcon?: ReactNode;\n}\n\nexport interface HvTreeItemProps extends HTMLAttributes<HTMLElement> {\n /** The element id */\n id?: string;\n /** The id of the node. */\n nodeId: string;\n /** The tree node label. */\n label?: ReactNode;\n /** Override or extend the styles applied to the component. */\n classes?: HvTreeItemClasses;\n /** If `true`, the node is disabled. */\n disabled?: boolean;\n /** The icon to display next to the tree node's label. */\n icon?: ReactNode;\n /** The component used for the content node. */\n ContentComponent?: JSXElementConstructor<HvTreeContentProps>;\n /** Props applied to the content component */\n ContentProps?: HvTreeContentProps;\n /** The content of the component. */\n children?: ReactNode;\n /** className applied to the root element. */\n className?: string;\n /** The icon used to collapse the node. */\n collapseIcon?: ReactNode;\n /** The icon displayed next to an end node. */\n endIcon?: ReactNode;\n /** The icon used to expand the node. */\n expandIcon?: ReactNode;\n /** The component used for the transition. */\n TransitionComponent?: JSXElementConstructor<TransitionProps>;\n /** Props applied to the transition component */\n TransitionProps?: TransitionProps;\n}\n\nexport const HvTreeItem = forwardRef<HTMLLIElement, HvTreeItemProps>(\n (props, ref) => {\n const {\n id: idProp,\n nodeId,\n children,\n classes: classesProp,\n className,\n label,\n disabled: disabledProp,\n icon,\n endIcon,\n expandIcon,\n collapseIcon,\n ContentComponent: Component = DefaultContent,\n TransitionProps: transitionProps,\n ContentProps: contentProps,\n ...others\n } = useDefaultProps(\"HvTreeItem\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const {\n instance,\n multiSelect,\n disabledItemsFocusable,\n treeId,\n icons: contextIcons,\n } = useTreeViewContext<DefaultTreeViewPlugins>();\n\n const id =\n idProp || (treeId && nodeId && `${treeId}-${nodeId}`) || undefined;\n\n const [treeItemElement, setTreeItemElement] =\n useState<HTMLLIElement | null>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(setTreeItemElement, ref);\n\n const descendant = useMemo<TreeItemDescendant>(\n () => ({ element: treeItemElement!, id: nodeId }),\n [nodeId, treeItemElement]\n );\n\n const { index, parentId } = useDescendant(descendant);\n\n const expandable = !!(Array.isArray(children) ? children.length : children);\n const expanded = instance ? instance.isNodeExpanded(nodeId) : false;\n const focused = instance ? instance.isNodeFocused(nodeId) : false;\n const selected = instance ? instance.isNodeSelected(nodeId) : false;\n const disabled = instance ? instance.isNodeDisabled(nodeId) : false;\n\n const expansionIcon = !expanded\n ? expandIcon || contextIcons.defaultExpandIcon\n : collapseIcon || contextIcons.defaultCollapseIcon;\n\n const displayIcon = expandable\n ? contextIcons.defaultParentIcon\n : endIcon || contextIcons.defaultEndIcon;\n\n useEffect(() => {\n // On the first render a node's index will be -1. We want to wait for the real index.\n if (instance && index !== -1) {\n instance.updateNode({\n id: nodeId,\n idAttribute: id,\n index,\n parentId,\n expandable,\n disabled: disabledProp,\n });\n\n return () => instance.removeNode(nodeId);\n }\n\n return undefined;\n }, [instance, parentId, index, nodeId, expandable, disabledProp, id]);\n\n useEffect(() => {\n if (instance && label) {\n return instance.mapFirstChar(\n nodeId,\n (contentRef.current?.textContent ?? \"\").substring(0, 1).toLowerCase()\n );\n }\n return undefined;\n }, [instance, nodeId, label]);\n\n const handleFocus = (event: FocusEvent<HTMLLIElement, any>) => {\n // DOM focus stays on the tree which manages focus with aria-activedescendant\n if (event.target === event.currentTarget) {\n const rootElement: any =\n typeof event.target.getRootNode === \"function\"\n ? event.target.getRootNode()\n : event.target.ownerDocument || document;\n\n rootElement.getElementById(treeId).focus({ preventScroll: true });\n }\n\n const unfocusable = !disabledItemsFocusable && disabled;\n const canFocus =\n instance &&\n !focused &&\n !disabled &&\n !unfocusable &&\n event.currentTarget === event.target;\n\n if (canFocus) {\n instance.focusNode(event, nodeId);\n }\n };\n\n return (\n <li\n id={id}\n ref={handleRef}\n role=\"treeitem\"\n aria-expanded={expandable ? expanded : undefined}\n aria-selected={(multiSelect && selected) || selected || undefined}\n aria-disabled={disabled || undefined}\n className={cx(classes.root, className)}\n // @ts-ignore\n onFocus={handleFocus}\n tabIndex={-1}\n {...others}\n >\n <Component\n ref={contentRef}\n nodeId={nodeId}\n classes={{\n root: classes.content,\n expanded: classes.expanded,\n selected: classes.selected,\n focused: classes.focused,\n disabled: classes.disabled,\n label: classes.label,\n iconContainer: classes.iconContainer,\n }}\n label={label}\n icon={icon}\n expansionIcon={expandable && expansionIcon}\n displayIcon={displayIcon}\n {...contentProps}\n />\n {children && (\n <DescendantProvider id={nodeId}>\n <Collapse\n component=\"ul\"\n role=\"group\"\n unmountOnExit\n className={classes.group}\n in={expanded}\n {...transitionProps}\n >\n {children}\n </Collapse>\n </DescendantProvider>\n )}\n </li>\n );\n }\n);\n"],"names":["HvTreeItem","forwardRef","props","ref","id","idProp","nodeId","children","classes","classesProp","className","label","disabled","disabledProp","icon","endIcon","expandIcon","collapseIcon","ContentComponent","Component","DefaultContent","TransitionProps","transitionProps","ContentProps","contentProps","others","useDefaultProps","cx","useClasses","instance","multiSelect","disabledItemsFocusable","treeId","icons","contextIcons","useTreeViewContext","undefined","treeItemElement","setTreeItemElement","useState","contentRef","useRef","handleRef","useForkRef","descendant","useMemo","element","index","parentId","useDescendant","expandable","Array","isArray","length","expanded","isNodeExpanded","focused","isNodeFocused","selected","isNodeSelected","isNodeDisabled","expansionIcon","defaultExpandIcon","defaultCollapseIcon","displayIcon","defaultParentIcon","defaultEndIcon","useEffect","updateNode","idAttribute","removeNode","mapFirstChar","current","textContent","substring","toLowerCase","handleFocus","event","target","currentTarget","rootElement","getRootNode","ownerDocument","document","getElementById","focus","preventScroll","unfocusable","canFocus","focusNode","root","content","iconContainer","group"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import "../internals.js";
2
- import { useTreeViewContext } from "@mui/x-tree-view/internals/TreeViewProvider/useTreeViewContext";
1
+ import { useTreeViewContext } from "../internals/TreeViewProvider.js";
3
2
  function useHvTreeItem(nodeId) {
4
3
  const {
5
4
  instance,
@@ -1 +1 @@
1
- {"version":3,"file":"useHvTreeItem.js","sources":["../../../../../src/components/TreeView/TreeItem/useHvTreeItem.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { useTreeViewContext, HvTreeViewPlugins } from \"../internals\";\n\nexport function useHvTreeItem(nodeId: string) {\n const { instance, multiSelect } = useTreeViewContext<HvTreeViewPlugins>();\n\n const expandable = instance ? instance.isNodeExpandable(nodeId) : false;\n const expanded = instance ? instance.isNodeExpanded(nodeId) : false;\n const focused = instance ? instance.isNodeFocused(nodeId) : false;\n const selected = instance ? instance.isNodeSelected(nodeId) : false;\n const disabled = instance ? instance.isNodeDisabled(nodeId) : false;\n\n const handleExpansion = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {\n instance.toggleNodeExpansion(event, nodeId);\n }\n };\n\n const handleSelection = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n instance.selectRange(event, { end: nodeId });\n } else {\n instance.selectNode(event, nodeId, true);\n }\n } else {\n instance.selectNode(event, nodeId);\n }\n };\n\n const preventSelection = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n };\n\n return {\n instance,\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection,\n };\n}\n"],"names":["useHvTreeItem","nodeId","instance","multiSelect","useTreeViewContext","expandable","isNodeExpandable","expanded","isNodeExpanded","focused","isNodeFocused","selected","isNodeSelected","disabled","isNodeDisabled","handleExpansion","event","focusNode","multiple","shiftKey","ctrlKey","metaKey","toggleNodeExpansion","handleSelection","selectRange","end","selectNode","preventSelection","preventDefault"],"mappings":";;AAIO,SAASA,cAAcC,QAAgB;AACtC,QAAA;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,MAAgBC,mBAAsC;AAExE,QAAMC,aAAaH,WAAWA,SAASI,iBAAiBL,MAAM,IAAI;AAClE,QAAMM,WAAWL,WAAWA,SAASM,eAAeP,MAAM,IAAI;AAC9D,QAAMQ,UAAUP,WAAWA,SAASQ,cAAcT,MAAM,IAAI;AAC5D,QAAMU,WAAWT,WAAWA,SAASU,eAAeX,MAAM,IAAI;AAC9D,QAAMY,WAAWX,WAAWA,SAASY,eAAeb,MAAM,IAAI;AAExDc,QAAAA,kBAAkBA,CAACC,UAA4C;AACnE,QAAI,CAACd,YAAYW;AAAU;AAE3B,QAAI,CAACJ,SAAS;AACHQ,eAAAA,UAAUD,OAAOf,MAAM;AAAA,IAClC;AAEA,UAAMiB,WACJf,gBAAgBa,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK;AAG3D,QAAIhB,cAAc,EAAEa,YAAYhB,SAASM,eAAeP,MAAM,IAAI;AACvDqB,eAAAA,oBAAoBN,OAAOf,MAAM;AAAA,IAC5C;AAAA,EAAA;AAGIsB,QAAAA,kBAAkBA,CAACP,UAA4C;AACnE,QAAI,CAACd,YAAYW;AAAU;AAE3B,QAAI,CAACJ,SAAS;AACHQ,eAAAA,UAAUD,OAAOf,MAAM;AAAA,IAClC;AAEA,UAAMiB,WACJf,gBAAgBa,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK;AAE3D,QAAIH,UAAU;AACZ,UAAIF,MAAMG,UAAU;AAClBjB,iBAASsB,YAAYR,OAAO;AAAA,UAAES,KAAKxB;AAAAA,QAAAA,CAAQ;AAAA,MAAA,OACtC;AACIyB,iBAAAA,WAAWV,OAAOf,QAAQ,IAAI;AAAA,MACzC;AAAA,IAAA,OACK;AACIyB,eAAAA,WAAWV,OAAOf,MAAM;AAAA,IACnC;AAAA,EAAA;AAGI0B,QAAAA,mBAAmBA,CAACX,UAA4C;AACpE,QAAIA,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK,WAAWR,UAAU;AAEhEG,YAAMY,eAAe;AAAA,IACvB;AAAA,EAAA;AAGK,SAAA;AAAA,IACL1B;AAAAA,IACAW;AAAAA,IACAN;AAAAA,IACAI;AAAAA,IACAF;AAAAA,IACAM;AAAAA,IACAQ;AAAAA,IACAI;AAAAA,EAAAA;AAEJ;"}
1
+ {"version":3,"file":"useHvTreeItem.js","sources":["../../../../../src/components/TreeView/TreeItem/useHvTreeItem.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { useTreeViewContext } from \"../internals/TreeViewProvider\";\nimport { DefaultTreeViewPlugins } from \"../internals/hooks/plugins\";\n\nexport function useHvTreeItem(nodeId: string) {\n const { instance, multiSelect } =\n useTreeViewContext<DefaultTreeViewPlugins>();\n\n const expandable = instance ? instance.isNodeExpandable(nodeId) : false;\n const expanded = instance ? instance.isNodeExpanded(nodeId) : false;\n const focused = instance ? instance.isNodeFocused(nodeId) : false;\n const selected = instance ? instance.isNodeSelected(nodeId) : false;\n const disabled = instance ? instance.isNodeDisabled(nodeId) : false;\n\n const handleExpansion = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {\n instance.toggleNodeExpansion(event, nodeId);\n }\n };\n\n const handleSelection = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n instance.selectRange(event, { end: nodeId });\n } else {\n instance.selectNode(event, nodeId, true);\n }\n } else {\n instance.selectNode(event, nodeId);\n }\n };\n\n const preventSelection = (event: React.MouseEvent<HTMLDivElement>) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n };\n\n return {\n instance,\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection,\n };\n}\n"],"names":["useHvTreeItem","nodeId","instance","multiSelect","useTreeViewContext","expandable","isNodeExpandable","expanded","isNodeExpanded","focused","isNodeFocused","selected","isNodeSelected","disabled","isNodeDisabled","handleExpansion","event","focusNode","multiple","shiftKey","ctrlKey","metaKey","toggleNodeExpansion","handleSelection","selectRange","end","selectNode","preventSelection","preventDefault"],"mappings":";AAKO,SAASA,cAAcC,QAAgB;AACtC,QAAA;AAAA,IAAEC;AAAAA,IAAUC;AAAAA,MAChBC,mBAA2C;AAE7C,QAAMC,aAAaH,WAAWA,SAASI,iBAAiBL,MAAM,IAAI;AAClE,QAAMM,WAAWL,WAAWA,SAASM,eAAeP,MAAM,IAAI;AAC9D,QAAMQ,UAAUP,WAAWA,SAASQ,cAAcT,MAAM,IAAI;AAC5D,QAAMU,WAAWT,WAAWA,SAASU,eAAeX,MAAM,IAAI;AAC9D,QAAMY,WAAWX,WAAWA,SAASY,eAAeb,MAAM,IAAI;AAExDc,QAAAA,kBAAkBA,CAACC,UAA4C;AACnE,QAAI,CAACd,YAAYW;AAAU;AAE3B,QAAI,CAACJ,SAAS;AACHQ,eAAAA,UAAUD,OAAOf,MAAM;AAAA,IAClC;AAEA,UAAMiB,WACJf,gBAAgBa,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK;AAG3D,QAAIhB,cAAc,EAAEa,YAAYhB,SAASM,eAAeP,MAAM,IAAI;AACvDqB,eAAAA,oBAAoBN,OAAOf,MAAM;AAAA,IAC5C;AAAA,EAAA;AAGIsB,QAAAA,kBAAkBA,CAACP,UAA4C;AACnE,QAAI,CAACd,YAAYW;AAAU;AAE3B,QAAI,CAACJ,SAAS;AACHQ,eAAAA,UAAUD,OAAOf,MAAM;AAAA,IAClC;AAEA,UAAMiB,WACJf,gBAAgBa,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK;AAE3D,QAAIH,UAAU;AACZ,UAAIF,MAAMG,UAAU;AAClBjB,iBAASsB,YAAYR,OAAO;AAAA,UAAES,KAAKxB;AAAAA,QAAAA,CAAQ;AAAA,MAAA,OACtC;AACIyB,iBAAAA,WAAWV,OAAOf,QAAQ,IAAI;AAAA,MACzC;AAAA,IAAA,OACK;AACIyB,eAAAA,WAAWV,OAAOf,MAAM;AAAA,IACnC;AAAA,EAAA;AAGI0B,QAAAA,mBAAmBA,CAACX,UAA4C;AACpE,QAAIA,MAAMG,YAAYH,MAAMI,WAAWJ,MAAMK,WAAWR,UAAU;AAEhEG,YAAMY,eAAe;AAAA,IACvB;AAAA,EAAA;AAGK,SAAA;AAAA,IACL1B;AAAAA,IACAW;AAAAA,IACAN;AAAAA,IACAI;AAAAA,IACAF;AAAAA,IACAM;AAAAA,IACAQ;AAAAA,IACAI;AAAAA,EAAAA;AAEJ;"}