@elliemae/ds-left-navigation-tree 0.0.0-stage → 3.80.0-next.38

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 (107) hide show
  1. package/dist/cjs/DSLeftNavigationTree.js +46 -0
  2. package/dist/cjs/DSLeftNavigationTree.js.map +7 -0
  3. package/dist/cjs/config/store.js +63 -0
  4. package/dist/cjs/config/store.js.map +7 -0
  5. package/dist/cjs/config/treeModel.js +178 -0
  6. package/dist/cjs/config/treeModel.js.map +7 -0
  7. package/dist/cjs/config/useAutoCalculated.js +37 -0
  8. package/dist/cjs/config/useAutoCalculated.js.map +7 -0
  9. package/dist/cjs/config/useFocusTracker.js +63 -0
  10. package/dist/cjs/config/useFocusTracker.js.map +7 -0
  11. package/dist/cjs/config/useTreeHandlers.js +157 -0
  12. package/dist/cjs/config/useTreeHandlers.js.map +7 -0
  13. package/dist/cjs/config/useTreeModel.js +110 -0
  14. package/dist/cjs/config/useTreeModel.js.map +7 -0
  15. package/dist/cjs/config/useValidateProps.js +40 -0
  16. package/dist/cjs/config/useValidateProps.js.map +7 -0
  17. package/dist/cjs/constants/index.js +79 -0
  18. package/dist/cjs/constants/index.js.map +7 -0
  19. package/dist/cjs/index.js +46 -0
  20. package/dist/cjs/index.js.map +7 -0
  21. package/dist/cjs/package.json +7 -0
  22. package/dist/cjs/parts/Footer.js +83 -0
  23. package/dist/cjs/parts/Footer.js.map +7 -0
  24. package/dist/cjs/parts/Header.js +114 -0
  25. package/dist/cjs/parts/Header.js.map +7 -0
  26. package/dist/cjs/parts/MainContent.js +95 -0
  27. package/dist/cjs/parts/MainContent.js.map +7 -0
  28. package/dist/cjs/parts/RailItem.js +109 -0
  29. package/dist/cjs/parts/RailItem.js.map +7 -0
  30. package/dist/cjs/parts/TreeContext.js +37 -0
  31. package/dist/cjs/parts/TreeContext.js.map +7 -0
  32. package/dist/cjs/parts/TreeItem.js +171 -0
  33. package/dist/cjs/parts/TreeItem.js.map +7 -0
  34. package/dist/cjs/parts/TreeRoot.js +76 -0
  35. package/dist/cjs/parts/TreeRoot.js.map +7 -0
  36. package/dist/cjs/parts/styled.js +221 -0
  37. package/dist/cjs/parts/styled.js.map +7 -0
  38. package/dist/cjs/react-desc-prop-types.js +125 -0
  39. package/dist/cjs/react-desc-prop-types.js.map +7 -0
  40. package/dist/cjs/typescript-testing/DSLeftNavigationTreeNamespace.js +172 -0
  41. package/dist/cjs/typescript-testing/DSLeftNavigationTreeNamespace.js.map +7 -0
  42. package/dist/cjs/typescript-testing/slot-props.js +82 -0
  43. package/dist/cjs/typescript-testing/slot-props.js.map +7 -0
  44. package/dist/esm/DSLeftNavigationTree.js +16 -0
  45. package/dist/esm/DSLeftNavigationTree.js.map +7 -0
  46. package/dist/esm/config/store.js +33 -0
  47. package/dist/esm/config/store.js.map +7 -0
  48. package/dist/esm/config/treeModel.js +148 -0
  49. package/dist/esm/config/treeModel.js.map +7 -0
  50. package/dist/esm/config/useAutoCalculated.js +7 -0
  51. package/dist/esm/config/useAutoCalculated.js.map +7 -0
  52. package/dist/esm/config/useFocusTracker.js +33 -0
  53. package/dist/esm/config/useFocusTracker.js.map +7 -0
  54. package/dist/esm/config/useTreeHandlers.js +133 -0
  55. package/dist/esm/config/useTreeHandlers.js.map +7 -0
  56. package/dist/esm/config/useTreeModel.js +90 -0
  57. package/dist/esm/config/useTreeModel.js.map +7 -0
  58. package/dist/esm/config/useValidateProps.js +10 -0
  59. package/dist/esm/config/useValidateProps.js.map +7 -0
  60. package/dist/esm/constants/index.js +49 -0
  61. package/dist/esm/constants/index.js.map +7 -0
  62. package/dist/esm/index.js +25 -0
  63. package/dist/esm/index.js.map +7 -0
  64. package/dist/esm/package.json +7 -0
  65. package/dist/esm/parts/Footer.js +53 -0
  66. package/dist/esm/parts/Footer.js.map +7 -0
  67. package/dist/esm/parts/Header.js +91 -0
  68. package/dist/esm/parts/Header.js.map +7 -0
  69. package/dist/esm/parts/MainContent.js +69 -0
  70. package/dist/esm/parts/MainContent.js.map +7 -0
  71. package/dist/esm/parts/RailItem.js +79 -0
  72. package/dist/esm/parts/RailItem.js.map +7 -0
  73. package/dist/esm/parts/TreeContext.js +7 -0
  74. package/dist/esm/parts/TreeContext.js.map +7 -0
  75. package/dist/esm/parts/TreeItem.js +149 -0
  76. package/dist/esm/parts/TreeItem.js.map +7 -0
  77. package/dist/esm/parts/TreeRoot.js +46 -0
  78. package/dist/esm/parts/TreeRoot.js.map +7 -0
  79. package/dist/esm/parts/styled.js +191 -0
  80. package/dist/esm/parts/styled.js.map +7 -0
  81. package/dist/esm/react-desc-prop-types.js +105 -0
  82. package/dist/esm/react-desc-prop-types.js.map +7 -0
  83. package/dist/esm/typescript-testing/DSLeftNavigationTreeNamespace.js +149 -0
  84. package/dist/esm/typescript-testing/DSLeftNavigationTreeNamespace.js.map +7 -0
  85. package/dist/esm/typescript-testing/slot-props.js +59 -0
  86. package/dist/esm/typescript-testing/slot-props.js.map +7 -0
  87. package/dist/types/DSLeftNavigationTree.d.ts +4 -0
  88. package/dist/types/config/store.d.ts +38 -0
  89. package/dist/types/config/treeModel.d.ts +69 -0
  90. package/dist/types/config/useAutoCalculated.d.ts +1 -0
  91. package/dist/types/config/useFocusTracker.d.ts +11 -0
  92. package/dist/types/config/useTreeHandlers.d.ts +11 -0
  93. package/dist/types/config/useTreeModel.d.ts +22 -0
  94. package/dist/types/config/useValidateProps.d.ts +3 -0
  95. package/dist/types/constants/index.d.ts +54 -0
  96. package/dist/types/index.d.ts +3 -0
  97. package/dist/types/parts/Footer.d.ts +2 -0
  98. package/dist/types/parts/Header.d.ts +2 -0
  99. package/dist/types/parts/MainContent.d.ts +2 -0
  100. package/dist/types/parts/RailItem.d.ts +8 -0
  101. package/dist/types/parts/TreeContext.d.ts +11 -0
  102. package/dist/types/parts/TreeItem.d.ts +4 -0
  103. package/dist/types/parts/TreeRoot.d.ts +9 -0
  104. package/dist/types/parts/styled.d.ts +46 -0
  105. package/dist/types/react-desc-prop-types.d.ts +99 -0
  106. package/package.json +72 -4
  107. package/README.md +0 -3
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var MainContent_exports = {};
30
+ __export(MainContent_exports, {
31
+ MainContent: () => MainContent
32
+ });
33
+ module.exports = __toCommonJS(MainContent_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
38
+ var import_store = require("../config/store.js");
39
+ var import_useTreeModel = require("../config/useTreeModel.js");
40
+ var import_useTreeHandlers = require("../config/useTreeHandlers.js");
41
+ var import_constants = require("../constants/index.js");
42
+ var import_react_desc_prop_types = require("../react-desc-prop-types.js");
43
+ var import_TreeContext = require("./TreeContext.js");
44
+ var import_TreeRoot = require("./TreeRoot.js");
45
+ var import_Header = require("./Header.js");
46
+ var import_Footer = require("./Footer.js");
47
+ var import_styled = require("./styled.js");
48
+ const MainContent = import_react.default.memo(() => {
49
+ const propsWithDefault = (0, import_store.usePropsStore)((state) => state);
50
+ (0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.DSLeftNavigationTreePropTypes, import_constants.DSLeftNavigationTreeName);
51
+ const getOwnerProps = (0, import_store.usePropsStore)((state) => state.get);
52
+ const expanded = (0, import_store.usePropsStore)((state) => state.expanded);
53
+ const expandedWidth = (0, import_store.usePropsStore)((state) => state.expandedWidth);
54
+ const labelOverflow = (0, import_store.usePropsStore)((state) => state.labelOverflow);
55
+ const xstyledProps = (0, import_ds_props_helpers.useGetXstyledProps)(propsWithDefault);
56
+ const {
57
+ "aria-label": ariaLabel,
58
+ "aria-labelledby": ariaLabelledBy,
59
+ ...globalAttributes
60
+ } = (0, import_ds_props_helpers.useGetGlobalAttributes)(propsWithDefault);
61
+ const nameProps = (0, import_react.useMemo)(
62
+ () => ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : { "aria-label": ariaLabel ?? import_constants.LEFT_NAVIGATION_TREE_DEFAULT_LABEL },
63
+ [ariaLabel, ariaLabelledBy]
64
+ );
65
+ const model = (0, import_useTreeModel.useTreeModel)();
66
+ const handlers = (0, import_useTreeHandlers.useTreeHandlers)(model);
67
+ const instanceId = (0, import_react.useId)();
68
+ const getElementId = (0, import_react.useCallback)(
69
+ (kind, dsId) => `${instanceId}-${kind}-${encodeURIComponent(dsId)}`,
70
+ [instanceId]
71
+ );
72
+ const contextValue = (0, import_react.useMemo)(
73
+ () => ({ model, handlers, getOwnerProps, labelOverflow, getElementId }),
74
+ [model, handlers, getOwnerProps, labelOverflow, getElementId]
75
+ );
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TreeContext.TreeContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
77
+ import_styled.StyledRoot,
78
+ {
79
+ expanded,
80
+ expandedWidth,
81
+ "data-testid": import_constants.LEFT_NAVIGATION_TREE_DATA_TESTID.ROOT,
82
+ getOwnerProps,
83
+ ...globalAttributes,
84
+ ...xstyledProps,
85
+ ...nameProps,
86
+ children: [
87
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Header.HeaderDisclosure, {}),
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TreeRoot.TreeRoot, { nameProps }),
89
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Footer.Footer, {})
90
+ ]
91
+ }
92
+ ) });
93
+ });
94
+ MainContent.displayName = `${import_constants.DSLeftNavigationTreeName}.MainContent`;
95
+ //# sourceMappingURL=MainContent.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/MainContent.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useCallback, useId, useMemo } from 'react';\nimport { useGetGlobalAttributes, useGetXstyledProps, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { usePropsStore } from '../config/store.js';\nimport { useTreeModel } from '../config/useTreeModel.js';\nimport { useTreeHandlers } from '../config/useTreeHandlers.js';\nimport {\n DSLeftNavigationTreeName,\n LEFT_NAVIGATION_TREE_DATA_TESTID,\n LEFT_NAVIGATION_TREE_DEFAULT_LABEL,\n} from '../constants/index.js';\nimport { DSLeftNavigationTreePropTypes, type DSLeftNavigationTreeT } from '../react-desc-prop-types.js';\nimport { TreeContext, type TreeContextValue } from './TreeContext.js';\nimport { TreeRoot } from './TreeRoot.js';\nimport { HeaderDisclosure } from './Header.js';\nimport { Footer } from './Footer.js';\nimport { StyledRoot } from './styled.js';\n\nexport const MainContent = React.memo(() => {\n const propsWithDefault = usePropsStore((state) => state) as DSLeftNavigationTreeT.InternalProps;\n useValidateTypescriptPropTypes(propsWithDefault, DSLeftNavigationTreePropTypes, DSLeftNavigationTreeName);\n const getOwnerProps = usePropsStore((state) => state.get);\n const expanded = usePropsStore((state) => state.expanded);\n const expandedWidth = usePropsStore((state) => state.expandedWidth);\n const labelOverflow = usePropsStore((state) => state.labelOverflow);\n\n const xstyledProps = useGetXstyledProps(propsWithDefault);\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...globalAttributes\n } = useGetGlobalAttributes<DSLeftNavigationTreeT.InternalProps, HTMLElement>(propsWithDefault);\n const nameProps = useMemo(\n () =>\n ariaLabelledBy\n ? { 'aria-labelledby': ariaLabelledBy }\n : { 'aria-label': ariaLabel ?? LEFT_NAVIGATION_TREE_DEFAULT_LABEL },\n [ariaLabel, ariaLabelledBy],\n );\n\n const model = useTreeModel();\n const handlers = useTreeHandlers(model);\n\n const instanceId = useId();\n const getElementId = useCallback(\n (kind: string, dsId: string) => `${instanceId}-${kind}-${encodeURIComponent(dsId)}`,\n [instanceId],\n );\n\n const contextValue: TreeContextValue = useMemo(\n () => ({ model, handlers, getOwnerProps, labelOverflow, getElementId }),\n [model, handlers, getOwnerProps, labelOverflow, getElementId],\n );\n\n return (\n <TreeContext.Provider value={contextValue}>\n <StyledRoot\n expanded={expanded}\n expandedWidth={expandedWidth}\n data-testid={LEFT_NAVIGATION_TREE_DATA_TESTID.ROOT}\n getOwnerProps={getOwnerProps}\n {...globalAttributes}\n {...xstyledProps}\n {...nameProps}\n >\n <HeaderDisclosure />\n <TreeRoot nameProps={nameProps} />\n <Footer />\n </StyledRoot>\n </TreeContext.Provider>\n );\n});\n\nMainContent.displayName = `${DSLeftNavigationTreeName}.MainContent`;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADuDjB;AAvDN,mBAAmD;AACnD,8BAA2F;AAC3F,mBAA8B;AAC9B,0BAA6B;AAC7B,6BAAgC;AAChC,uBAIO;AACP,mCAA0E;AAC1E,yBAAmD;AACnD,sBAAyB;AACzB,oBAAiC;AACjC,oBAAuB;AACvB,oBAA2B;AAEpB,MAAM,cAAc,aAAAA,QAAM,KAAK,MAAM;AAC1C,QAAM,uBAAmB,4BAAc,CAAC,UAAU,KAAK;AACvD,8DAA+B,kBAAkB,4DAA+B,yCAAwB;AACxG,QAAM,oBAAgB,4BAAc,CAAC,UAAU,MAAM,GAAG;AACxD,QAAM,eAAW,4BAAc,CAAC,UAAU,MAAM,QAAQ;AACxD,QAAM,oBAAgB,4BAAc,CAAC,UAAU,MAAM,aAAa;AAClE,QAAM,oBAAgB,4BAAc,CAAC,UAAU,MAAM,aAAa;AAElE,QAAM,mBAAe,4CAAmB,gBAAgB;AACxD,QAAM;AAAA,IACJ,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,GAAG;AAAA,EACL,QAAI,gDAAyE,gBAAgB;AAC7F,QAAM,gBAAY;AAAA,IAChB,MACE,iBACI,EAAE,mBAAmB,eAAe,IACpC,EAAE,cAAc,aAAa,oDAAmC;AAAA,IACtE,CAAC,WAAW,cAAc;AAAA,EAC5B;AAEA,QAAM,YAAQ,kCAAa;AAC3B,QAAM,eAAW,wCAAgB,KAAK;AAEtC,QAAM,iBAAa,oBAAM;AACzB,QAAM,mBAAe;AAAA,IACnB,CAAC,MAAc,SAAiB,GAAG,UAAU,IAAI,IAAI,IAAI,mBAAmB,IAAI,CAAC;AAAA,IACjF,CAAC,UAAU;AAAA,EACb;AAEA,QAAM,mBAAiC;AAAA,IACrC,OAAO,EAAE,OAAO,UAAU,eAAe,eAAe,aAAa;AAAA,IACrE,CAAC,OAAO,UAAU,eAAe,eAAe,YAAY;AAAA,EAC9D;AAEA,SACE,4CAAC,+BAAY,UAAZ,EAAqB,OAAO,cAC3B;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,eAAa,kDAAiC;AAAA,MAC9C;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MAEJ;AAAA,oDAAC,kCAAiB;AAAA,QAClB,4CAAC,4BAAS,WAAsB;AAAA,QAChC,4CAAC,wBAAO;AAAA;AAAA;AAAA,EACV,GACF;AAEJ,CAAC;AAED,YAAY,cAAc,GAAG,yCAAwB;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var RailItem_exports = {};
30
+ __export(RailItem_exports, {
31
+ RailItem: () => RailItem
32
+ });
33
+ module.exports = __toCommonJS(RailItem_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_treeModel = require("../config/treeModel.js");
38
+ var import_useTreeModel = require("../config/useTreeModel.js");
39
+ var import_TreeContext = require("./TreeContext.js");
40
+ var import_styled = require("./styled.js");
41
+ const HIDDEN_LABEL_STYLE = { display: "none" };
42
+ const RailItem = import_react.default.memo(({ id }) => {
43
+ const { model, handlers, getOwnerProps, labelOverflow, getElementId } = (0, import_react.useContext)(import_TreeContext.TreeContext);
44
+ const info = model.index.get(id);
45
+ const isCurrent = model.currentLeafId === id;
46
+ const isSelectedParent = model.selectedParentIds.has(id);
47
+ const focusState = (0, import_useTreeModel.useItemFocusState)(model, id);
48
+ const item = info?.item;
49
+ const focusRef = (0, import_react.useCallback)(
50
+ (node) => {
51
+ if (node && focusState === "focus-target") node.focus();
52
+ },
53
+ [focusState]
54
+ );
55
+ const handleClick = (0, import_react.useCallback)((e) => handlers.activate(id, e), [handlers, id]);
56
+ const getOwnerPropsArguments = (0, import_react.useCallback)(() => ({ item, level: 1, isOpen: false, isCurrent }), [item, isCurrent]);
57
+ if (!info || !item?.CollapsedComponent) return null;
58
+ const { CollapsedComponent } = item;
59
+ const labelId = getElementId("label", id);
60
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
61
+ import_styled.StyledItem,
62
+ {
63
+ isOpenSection: false,
64
+ role: "treeitem",
65
+ "aria-level": 1,
66
+ "aria-current": isCurrent ? "page" : void 0,
67
+ "aria-labelledby": labelId,
68
+ tabIndex: focusState === "none" ? -1 : 0,
69
+ "data-dsid": id,
70
+ "data-type": item.type,
71
+ "data-selected": isCurrent,
72
+ "data-selectedparent": isSelectedParent,
73
+ innerRef: focusRef,
74
+ getOwnerProps,
75
+ getOwnerPropsArguments,
76
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
77
+ import_styled.StyledItemRow,
78
+ {
79
+ "data-row": true,
80
+ rowPadding: import_treeModel.ROW_PADDING,
81
+ isTall: true,
82
+ isSticky: false,
83
+ isCurrent,
84
+ isSelectedParent,
85
+ onClick: handleClick,
86
+ getOwnerProps,
87
+ getOwnerPropsArguments,
88
+ children: [
89
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledCollapsedContainer, { getOwnerProps, getOwnerPropsArguments, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CollapsedComponent, { item }) }),
90
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
91
+ import_styled.StyledItemLabel,
92
+ {
93
+ id: labelId,
94
+ isTall: true,
95
+ labelOverflow,
96
+ style: HIDDEN_LABEL_STYLE,
97
+ getOwnerProps,
98
+ getOwnerPropsArguments,
99
+ children: item.itemOpts?.label
100
+ }
101
+ )
102
+ ]
103
+ }
104
+ )
105
+ }
106
+ );
107
+ });
108
+ RailItem.displayName = "DSLeftNavigationTree.RailItem";
109
+ //# sourceMappingURL=RailItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/RailItem.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useCallback, useContext } from 'react';\nimport { ROW_PADDING } from '../config/treeModel.js';\nimport { useItemFocusState } from '../config/useTreeModel.js';\nimport { TreeContext } from './TreeContext.js';\nimport { StyledCollapsedContainer, StyledItem, StyledItemLabel, StyledItemRow } from './styled.js';\n\nconst HIDDEN_LABEL_STYLE = { display: 'none' };\n\n/**\n * Collapsed-rail node: an icon-only end treeitem. The label stays in the DOM with display: none\n * because it is the aria-labelledby target (hidden targets still name the element, and are not read twice).\n */\nexport const RailItem = React.memo(({ id }: { id: string }) => {\n const { model, handlers, getOwnerProps, labelOverflow, getElementId } = useContext(TreeContext);\n const info = model.index.get(id);\n const isCurrent = model.currentLeafId === id;\n const isSelectedParent = model.selectedParentIds.has(id);\n const focusState = useItemFocusState(model, id);\n const item = info?.item;\n\n const focusRef = useCallback(\n (node: HTMLElement | null) => {\n if (node && focusState === 'focus-target') node.focus();\n },\n [focusState],\n );\n const handleClick = useCallback((e: React.MouseEvent<HTMLElement>) => handlers.activate(id, e), [handlers, id]);\n const getOwnerPropsArguments = useCallback(() => ({ item, level: 1, isOpen: false, isCurrent }), [item, isCurrent]);\n\n if (!info || !item?.CollapsedComponent) return null;\n const { CollapsedComponent } = item;\n const labelId = getElementId('label', id);\n\n return (\n <StyledItem\n isOpenSection={false}\n role=\"treeitem\"\n aria-level={1}\n aria-current={isCurrent ? 'page' : undefined}\n aria-labelledby={labelId}\n tabIndex={focusState === 'none' ? -1 : 0}\n data-dsid={id}\n data-type={item.type}\n data-selected={isCurrent}\n data-selectedparent={isSelectedParent}\n innerRef={focusRef}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <StyledItemRow\n data-row\n rowPadding={ROW_PADDING}\n isTall\n isSticky={false}\n isCurrent={isCurrent}\n isSelectedParent={isSelectedParent}\n onClick={handleClick}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <StyledCollapsedContainer getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n <CollapsedComponent item={item} />\n </StyledCollapsedContainer>\n <StyledItemLabel\n id={labelId}\n isTall\n labelOverflow={labelOverflow}\n style={HIDDEN_LABEL_STYLE}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n {item.itemOpts?.label}\n </StyledItemLabel>\n </StyledItemRow>\n </StyledItem>\n );\n});\n\nRailItem.displayName = 'DSLeftNavigationTree.RailItem';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADiDjB;AAjDN,mBAA+C;AAC/C,uBAA4B;AAC5B,0BAAkC;AAClC,yBAA4B;AAC5B,oBAAqF;AAErF,MAAM,qBAAqB,EAAE,SAAS,OAAO;AAMtC,MAAM,WAAW,aAAAA,QAAM,KAAK,CAAC,EAAE,GAAG,MAAsB;AAC7D,QAAM,EAAE,OAAO,UAAU,eAAe,eAAe,aAAa,QAAI,yBAAW,8BAAW;AAC9F,QAAM,OAAO,MAAM,MAAM,IAAI,EAAE;AAC/B,QAAM,YAAY,MAAM,kBAAkB;AAC1C,QAAM,mBAAmB,MAAM,kBAAkB,IAAI,EAAE;AACvD,QAAM,iBAAa,uCAAkB,OAAO,EAAE;AAC9C,QAAM,OAAO,MAAM;AAEnB,QAAM,eAAW;AAAA,IACf,CAAC,SAA6B;AAC5B,UAAI,QAAQ,eAAe,eAAgB,MAAK,MAAM;AAAA,IACxD;AAAA,IACA,CAAC,UAAU;AAAA,EACb;AACA,QAAM,kBAAc,0BAAY,CAAC,MAAqC,SAAS,SAAS,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9G,QAAM,6BAAyB,0BAAY,OAAO,EAAE,MAAM,OAAO,GAAG,QAAQ,OAAO,UAAU,IAAI,CAAC,MAAM,SAAS,CAAC;AAElH,MAAI,CAAC,QAAQ,CAAC,MAAM,mBAAoB,QAAO;AAC/C,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,UAAU,aAAa,SAAS,EAAE;AAExC,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAe;AAAA,MACf,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,gBAAc,YAAY,SAAS;AAAA,MACnC,mBAAiB;AAAA,MACjB,UAAU,eAAe,SAAS,KAAK;AAAA,MACvC,aAAW;AAAA,MACX,aAAW,KAAK;AAAA,MAChB,iBAAe;AAAA,MACf,uBAAqB;AAAA,MACrB,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,YAAQ;AAAA,UACR,YAAY;AAAA,UACZ,QAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UAEA;AAAA,wDAAC,0CAAyB,eAA8B,wBACtD,sDAAC,sBAAmB,MAAY,GAClC;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,QAAM;AAAA,gBACN;AAAA,gBACA,OAAO;AAAA,gBACP;AAAA,gBACA;AAAA,gBAEC,eAAK,UAAU;AAAA;AAAA,YAClB;AAAA;AAAA;AAAA,MACF;AAAA;AAAA,EACF;AAEJ,CAAC;AAED,SAAS,cAAc;",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TreeContext_exports = {};
30
+ __export(TreeContext_exports, {
31
+ TreeContext: () => TreeContext
32
+ });
33
+ module.exports = __toCommonJS(TreeContext_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_react = require("react");
36
+ const TreeContext = (0, import_react.createContext)({});
37
+ //# sourceMappingURL=TreeContext.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/TreeContext.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { createContext } from 'react';\nimport type { DSLeftNavigationTreeT } from '../react-desc-prop-types.js';\nimport type { TreeModel } from '../config/useTreeModel.js';\nimport type { useTreeHandlers } from '../config/useTreeHandlers.js';\n\nexport type TreeContextValue = {\n model: TreeModel;\n handlers: ReturnType<typeof useTreeHandlers>;\n getOwnerProps: () => object;\n labelOverflow: DSLeftNavigationTreeT.LabelOverflowT;\n getElementId: (kind: string, dsId: string) => string;\n};\n\nexport const TreeContext = createContext<TreeContextValue>({} as TreeContextValue);\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA8B;AAavB,MAAM,kBAAc,4BAAgC,CAAC,CAAqB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TreeItem_exports = {};
30
+ __export(TreeItem_exports, {
31
+ TreeItem: () => TreeItem
32
+ });
33
+ module.exports = __toCommonJS(TreeItem_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_ds_icons = require("@elliemae/ds-icons");
38
+ var import_treeModel = require("../config/treeModel.js");
39
+ var import_useTreeModel = require("../config/useTreeModel.js");
40
+ var import_TreeContext = require("./TreeContext.js");
41
+ var import_styled = require("./styled.js");
42
+ const ARROW_COLOR = ["brand-primary", "800"];
43
+ const TreeItemArrow = ({
44
+ isLeading,
45
+ isOpen,
46
+ getOwnerProps,
47
+ getOwnerPropsArguments
48
+ }) => {
49
+ const Arrowhead = isOpen ? import_ds_icons.ArrowheadDown : import_ds_icons.ArrowheadRight;
50
+ const Chevron = isOpen ? import_ds_icons.ChevronSmallDown : import_ds_icons.ChevronSmallRight;
51
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
52
+ import_styled.StyledArrowContainer,
53
+ {
54
+ "aria-hidden": "true",
55
+ isLeading,
56
+ getOwnerProps,
57
+ getOwnerPropsArguments,
58
+ children: isLeading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Arrowhead, { size: "s", color: ARROW_COLOR }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Chevron, { size: "m", color: ARROW_COLOR })
59
+ }
60
+ );
61
+ };
62
+ const TreeItem = import_react.default.memo(({ id }) => {
63
+ const { model, handlers, getOwnerProps, labelOverflow, getElementId } = (0, import_react.useContext)(import_TreeContext.TreeContext);
64
+ const info = model.index.get(id);
65
+ const isParent = (0, import_treeModel.hasChildren)(info);
66
+ const isOpen = model.openIds.has(id);
67
+ const isCurrent = model.currentLeafId === id;
68
+ const isSelectedParent = model.selectedParentIds.has(id);
69
+ const focusState = (0, import_useTreeModel.useItemFocusState)(model, id);
70
+ const level = info?.level ?? 1;
71
+ const item = info?.item;
72
+ const focusRef = (0, import_react.useCallback)(
73
+ (node) => {
74
+ if (node && focusState === "focus-target") node.focus();
75
+ },
76
+ [focusState]
77
+ );
78
+ const handleClick = (0, import_react.useCallback)((e) => handlers.activate(id, e), [handlers, id]);
79
+ const getOwnerPropsArguments = (0, import_react.useCallback)(
80
+ () => ({ item, level, isOpen, isCurrent }),
81
+ [item, level, isOpen, isCurrent]
82
+ );
83
+ if (!info || !item) return null;
84
+ const { label, RightComponent } = item.itemOpts ?? {};
85
+ const { CollapsedComponent } = item;
86
+ const labelId = getElementId("label", id);
87
+ const leadingArrow = (0, import_treeModel.hasLeadingArrow)(info);
88
+ const isOpenSection = level === 1 && isParent && isOpen && !!CollapsedComponent;
89
+ const descriptionId = getElementId("description", id);
90
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
91
+ import_styled.StyledItem,
92
+ {
93
+ isOpenSection,
94
+ role: "treeitem",
95
+ "aria-level": level,
96
+ "aria-expanded": isParent ? isOpen : void 0,
97
+ "aria-current": isCurrent ? "page" : void 0,
98
+ "aria-labelledby": labelId,
99
+ "aria-describedby": RightComponent ? descriptionId : void 0,
100
+ tabIndex: focusState === "none" ? -1 : 0,
101
+ "data-dsid": id,
102
+ "data-type": item.type,
103
+ "data-selected": isCurrent,
104
+ "data-selectedparent": isSelectedParent,
105
+ "data-opened": isParent ? isOpen : void 0,
106
+ innerRef: focusRef,
107
+ getOwnerProps,
108
+ getOwnerPropsArguments,
109
+ children: [
110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
111
+ import_styled.StyledItemRow,
112
+ {
113
+ "data-row": true,
114
+ rowPadding: model.rowPaddings.get(id) ?? import_treeModel.ROW_PADDING,
115
+ isTall: level === 1 && !!CollapsedComponent,
116
+ isSticky: isOpenSection,
117
+ isCurrent,
118
+ isSelectedParent,
119
+ onClick: handleClick,
120
+ getOwnerProps,
121
+ getOwnerPropsArguments,
122
+ children: [
123
+ CollapsedComponent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledLeftContainer, { getOwnerProps, getOwnerPropsArguments, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CollapsedComponent, { item }) }) : null,
124
+ leadingArrow ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
125
+ TreeItemArrow,
126
+ {
127
+ isLeading: leadingArrow,
128
+ isOpen,
129
+ getOwnerProps,
130
+ getOwnerPropsArguments
131
+ }
132
+ ) : null,
133
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
134
+ import_styled.StyledItemLabel,
135
+ {
136
+ id: labelId,
137
+ isTall: level === 1 && !!CollapsedComponent,
138
+ labelOverflow: item.itemOpts?.labelOverflow ?? labelOverflow,
139
+ getOwnerProps,
140
+ getOwnerPropsArguments,
141
+ children: label
142
+ }
143
+ ),
144
+ RightComponent ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
145
+ import_styled.StyledRightContainer,
146
+ {
147
+ id: descriptionId,
148
+ getOwnerProps,
149
+ getOwnerPropsArguments,
150
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RightComponent, { item })
151
+ }
152
+ ) : null,
153
+ isParent && !leadingArrow ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
154
+ TreeItemArrow,
155
+ {
156
+ isLeading: leadingArrow,
157
+ isOpen,
158
+ getOwnerProps,
159
+ getOwnerPropsArguments
160
+ }
161
+ ) : null
162
+ ]
163
+ }
164
+ ),
165
+ isParent && isOpen ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledGroup, { role: "group", getOwnerProps, getOwnerPropsArguments, children: info.childIds.map((childId) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TreeItem, { id: childId }, childId)) }) : null
166
+ ]
167
+ }
168
+ );
169
+ });
170
+ TreeItem.displayName = "DSLeftNavigationTree.TreeItem";
171
+ //# sourceMappingURL=TreeItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/TreeItem.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport { ArrowheadDown, ArrowheadRight, ChevronSmallDown, ChevronSmallRight } from '@elliemae/ds-icons';\nimport { ROW_PADDING, hasChildren, hasLeadingArrow } from '../config/treeModel.js';\nimport { useItemFocusState } from '../config/useTreeModel.js';\nimport { TreeContext } from './TreeContext.js';\nimport {\n StyledArrowContainer,\n StyledGroup,\n StyledItem,\n StyledItemLabel,\n StyledItemRow,\n StyledLeftContainer,\n StyledRightContainer,\n} from './styled.js';\n\nconst ARROW_COLOR = ['brand-primary', '800'] as ['brand-primary', '800'];\n\n/** Parents without an icon lead with an arrowhead; parents with an icon trail a chevron (spec \"forward chevron\"). */\nconst TreeItemArrow = ({\n isLeading,\n isOpen,\n getOwnerProps,\n getOwnerPropsArguments,\n}: {\n isLeading: boolean;\n isOpen: boolean;\n getOwnerProps: () => object;\n getOwnerPropsArguments: () => object;\n}) => {\n const Arrowhead = isOpen ? ArrowheadDown : ArrowheadRight;\n const Chevron = isOpen ? ChevronSmallDown : ChevronSmallRight;\n return (\n <StyledArrowContainer\n aria-hidden=\"true\"\n isLeading={isLeading}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n {isLeading ? <Arrowhead size=\"s\" color={ARROW_COLOR} /> : <Chevron size=\"m\" color={ARROW_COLOR} />}\n </StyledArrowContainer>\n );\n};\n\nexport const TreeItem = React.memo(({ id }: { id: string }) => {\n const { model, handlers, getOwnerProps, labelOverflow, getElementId } = useContext(TreeContext);\n const info = model.index.get(id);\n const isParent = hasChildren(info);\n const isOpen = model.openIds.has(id);\n const isCurrent = model.currentLeafId === id;\n const isSelectedParent = model.selectedParentIds.has(id);\n const focusState = useItemFocusState(model, id);\n const level = info?.level ?? 1;\n const item = info?.item;\n\n const focusRef = useCallback(\n (node: HTMLElement | null) => {\n if (node && focusState === 'focus-target') node.focus();\n },\n [focusState],\n );\n const handleClick = useCallback((e: React.MouseEvent<HTMLElement>) => handlers.activate(id, e), [handlers, id]);\n const getOwnerPropsArguments = useCallback(\n () => ({ item, level, isOpen, isCurrent }),\n [item, level, isOpen, isCurrent],\n );\n\n if (!info || !item) return null;\n const { label, RightComponent } = item.itemOpts ?? {};\n const { CollapsedComponent } = item;\n const labelId = getElementId('label', id);\n const leadingArrow = hasLeadingArrow(info);\n /** Spec \"Expand in place\": an open root section (a parent with an icon) and its children show the full-height bar. */\n const isOpenSection = level === 1 && isParent && isOpen && !!CollapsedComponent;\n const descriptionId = getElementId('description', id);\n\n return (\n <StyledItem\n isOpenSection={isOpenSection}\n role=\"treeitem\"\n aria-level={level}\n aria-expanded={isParent ? isOpen : undefined}\n aria-current={isCurrent ? 'page' : undefined}\n aria-labelledby={labelId}\n aria-describedby={RightComponent ? descriptionId : undefined}\n tabIndex={focusState === 'none' ? -1 : 0}\n data-dsid={id}\n data-type={item.type}\n data-selected={isCurrent}\n data-selectedparent={isSelectedParent}\n data-opened={isParent ? isOpen : undefined}\n innerRef={focusRef}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <StyledItemRow\n data-row\n rowPadding={model.rowPaddings.get(id) ?? ROW_PADDING}\n isTall={level === 1 && !!CollapsedComponent}\n isSticky={isOpenSection}\n isCurrent={isCurrent}\n isSelectedParent={isSelectedParent}\n onClick={handleClick}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n {CollapsedComponent ? (\n <StyledLeftContainer getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n <CollapsedComponent item={item} />\n </StyledLeftContainer>\n ) : null}\n {leadingArrow ? (\n <TreeItemArrow\n isLeading={leadingArrow}\n isOpen={isOpen}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n />\n ) : null}\n <StyledItemLabel\n id={labelId}\n isTall={level === 1 && !!CollapsedComponent}\n labelOverflow={item.itemOpts?.labelOverflow ?? labelOverflow}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n {label}\n </StyledItemLabel>\n {RightComponent ? (\n <StyledRightContainer\n id={descriptionId}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n >\n <RightComponent item={item} />\n </StyledRightContainer>\n ) : null}\n {isParent && !leadingArrow ? (\n <TreeItemArrow\n isLeading={leadingArrow}\n isOpen={isOpen}\n getOwnerProps={getOwnerProps}\n getOwnerPropsArguments={getOwnerPropsArguments}\n />\n ) : null}\n </StyledItemRow>\n {isParent && isOpen ? (\n <StyledGroup role=\"group\" getOwnerProps={getOwnerProps} getOwnerPropsArguments={getOwnerPropsArguments}>\n {info.childIds.map((childId) => (\n <TreeItem key={childId} id={childId} />\n ))}\n </StyledGroup>\n ) : null}\n </StyledItem>\n );\n});\n\nTreeItem.displayName = 'DSLeftNavigationTree.TreeItem';\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React"]
7
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var TreeRoot_exports = {};
30
+ __export(TreeRoot_exports, {
31
+ TreeRoot: () => TreeRoot
32
+ });
33
+ module.exports = __toCommonJS(TreeRoot_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = require("react");
37
+ var import_constants = require("../constants/index.js");
38
+ var import_TreeContext = require("./TreeContext.js");
39
+ var import_TreeItem = require("./TreeItem.js");
40
+ var import_RailItem = require("./RailItem.js");
41
+ var import_styled = require("./styled.js");
42
+ const TreeRoot = ({ nameProps }) => {
43
+ const { model, handlers, getOwnerProps, getElementId } = (0, import_react.useContext)(import_TreeContext.TreeContext);
44
+ if (model.visibleIds.length === 0) return null;
45
+ const isHeaderContent = !!model.headerItem && model.isHeaderOpen && !model.isRail;
46
+ const treeNameProps = isHeaderContent && model.headerItem ? { "aria-labelledby": getElementId("label", model.headerItem.dsId) } : nameProps;
47
+ const renderRootEntries = () => model.items.map((item) => {
48
+ if (item.type === import_constants.LEFT_NAVIGATION_TREE_ITEM_TYPES.SEPARATOR) {
49
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { role: "none", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledItemSeparator, { "aria-hidden": "true", getOwnerProps }) }, item.dsId);
50
+ }
51
+ if (item.type === import_constants.LEFT_NAVIGATION_TREE_ITEM_TYPES.SECTION) {
52
+ const sectionLabelId = getElementId("section", item.dsId);
53
+ const childIds = (item.itemOpts?.items ?? []).map((child) => child.dsId).filter((id) => model.index.has(id));
54
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", { role: "none", children: [
55
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledSectionLabel, { id: sectionLabelId, "aria-hidden": "true", getOwnerProps, children: item.itemOpts?.label }),
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledSectionContainer, { role: "group", "aria-labelledby": sectionLabelId, getOwnerProps, children: childIds.map((id) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TreeItem.TreeItem, { id }, id)) })
57
+ ] }, item.dsId);
58
+ }
59
+ return model.index.has(item.dsId) ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TreeItem.TreeItem, { id: item.dsId }, item.dsId) : null;
60
+ });
61
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
62
+ import_styled.StyledTree,
63
+ {
64
+ id: getElementId("tree", "root"),
65
+ role: "tree",
66
+ isHeaderContent,
67
+ ...treeNameProps,
68
+ onKeyDown: handlers.onTreeKeyDown,
69
+ onFocus: handlers.onTreeFocus,
70
+ onBlur: handlers.onTreeBlur,
71
+ getOwnerProps,
72
+ children: model.isRail ? model.visibleIds.map((id) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_RailItem.RailItem, { id }, id)) : renderRootEntries()
73
+ }
74
+ );
75
+ };
76
+ //# sourceMappingURL=TreeRoot.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/TreeRoot.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import React, { useContext } from 'react';\nimport { LEFT_NAVIGATION_TREE_ITEM_TYPES } from '../constants/index.js';\nimport { TreeContext } from './TreeContext.js';\nimport { TreeItem } from './TreeItem.js';\nimport { RailItem } from './RailItem.js';\nimport { StyledItemSeparator, StyledSectionContainer, StyledSectionLabel, StyledTree } from './styled.js';\n\ntype NameProps = { 'aria-label'?: string; 'aria-labelledby'?: string };\n\nexport const TreeRoot = ({ nameProps }: { nameProps: NameProps }) => {\n const { model, handlers, getOwnerProps, getElementId } = useContext(TreeContext);\n if (model.visibleIds.length === 0) return null;\n /** While the header is open the tree shows its content, so it takes the header's name instead of the landmark's. */\n const isHeaderContent = !!model.headerItem && model.isHeaderOpen && !model.isRail;\n const treeNameProps =\n isHeaderContent && model.headerItem\n ? { 'aria-labelledby': getElementId('label', model.headerItem.dsId) }\n : nameProps;\n\n const renderRootEntries = () =>\n model.items.map((item) => {\n if (item.type === LEFT_NAVIGATION_TREE_ITEM_TYPES.SEPARATOR) {\n return (\n <li key={item.dsId} role=\"none\">\n <StyledItemSeparator aria-hidden=\"true\" getOwnerProps={getOwnerProps} />\n </li>\n );\n }\n if (item.type === LEFT_NAVIGATION_TREE_ITEM_TYPES.SECTION) {\n const sectionLabelId = getElementId('section', item.dsId);\n const childIds = (item.itemOpts?.items ?? []).map((child) => child.dsId).filter((id) => model.index.has(id));\n return (\n <li key={item.dsId} role=\"none\">\n <StyledSectionLabel id={sectionLabelId} aria-hidden=\"true\" getOwnerProps={getOwnerProps}>\n {item.itemOpts?.label}\n </StyledSectionLabel>\n <StyledSectionContainer role=\"group\" aria-labelledby={sectionLabelId} getOwnerProps={getOwnerProps}>\n {childIds.map((id) => (\n <TreeItem key={id} id={id} />\n ))}\n </StyledSectionContainer>\n </li>\n );\n }\n return model.index.has(item.dsId) ? <TreeItem key={item.dsId} id={item.dsId} /> : null;\n });\n\n return (\n <StyledTree\n id={getElementId('tree', 'root')}\n role=\"tree\"\n isHeaderContent={isHeaderContent}\n {...treeNameProps}\n onKeyDown={handlers.onTreeKeyDown}\n onFocus={handlers.onTreeFocus}\n onBlur={handlers.onTreeBlur}\n getOwnerProps={getOwnerProps}\n >\n {model.isRail ? model.visibleIds.map((id) => <RailItem key={id} id={id} />) : renderRootEntries()}\n </StyledTree>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADwBX;AAxBZ,mBAAkC;AAClC,uBAAgD;AAChD,yBAA4B;AAC5B,sBAAyB;AACzB,sBAAyB;AACzB,oBAA4F;AAIrF,MAAM,WAAW,CAAC,EAAE,UAAU,MAAgC;AACnE,QAAM,EAAE,OAAO,UAAU,eAAe,aAAa,QAAI,yBAAW,8BAAW;AAC/E,MAAI,MAAM,WAAW,WAAW,EAAG,QAAO;AAE1C,QAAM,kBAAkB,CAAC,CAAC,MAAM,cAAc,MAAM,gBAAgB,CAAC,MAAM;AAC3E,QAAM,gBACJ,mBAAmB,MAAM,aACrB,EAAE,mBAAmB,aAAa,SAAS,MAAM,WAAW,IAAI,EAAE,IAClE;AAEN,QAAM,oBAAoB,MACxB,MAAM,MAAM,IAAI,CAAC,SAAS;AACxB,QAAI,KAAK,SAAS,iDAAgC,WAAW;AAC3D,aACE,4CAAC,QAAmB,MAAK,QACvB,sDAAC,qCAAoB,eAAY,QAAO,eAA8B,KAD/D,KAAK,IAEd;AAAA,IAEJ;AACA,QAAI,KAAK,SAAS,iDAAgC,SAAS;AACzD,YAAM,iBAAiB,aAAa,WAAW,KAAK,IAAI;AACxD,YAAM,YAAY,KAAK,UAAU,SAAS,CAAC,GAAG,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,OAAO,CAAC,OAAO,MAAM,MAAM,IAAI,EAAE,CAAC;AAC3G,aACE,6CAAC,QAAmB,MAAK,QACvB;AAAA,oDAAC,oCAAmB,IAAI,gBAAgB,eAAY,QAAO,eACxD,eAAK,UAAU,OAClB;AAAA,QACA,4CAAC,wCAAuB,MAAK,SAAQ,mBAAiB,gBAAgB,eACnE,mBAAS,IAAI,CAAC,OACb,4CAAC,4BAAkB,MAAJ,EAAY,CAC5B,GACH;AAAA,WARO,KAAK,IASd;AAAA,IAEJ;AACA,WAAO,MAAM,MAAM,IAAI,KAAK,IAAI,IAAI,4CAAC,4BAAyB,IAAI,KAAK,QAApB,KAAK,IAAqB,IAAK;AAAA,EACpF,CAAC;AAEH,SACE;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,aAAa,QAAQ,MAAM;AAAA,MAC/B,MAAK;AAAA,MACL;AAAA,MACC,GAAG;AAAA,MACJ,WAAW,SAAS;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,MACjB;AAAA,MAEC,gBAAM,SAAS,MAAM,WAAW,IAAI,CAAC,OAAO,4CAAC,4BAAkB,MAAJ,EAAY,CAAE,IAAI,kBAAkB;AAAA;AAAA,EAClG;AAEJ;",
6
+ "names": []
7
+ }