@fluentui/react-tree 9.0.0-beta.10 → 9.0.0-beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +122 -8
- package/CHANGELOG.md +41 -9
- package/dist/index.d.ts +73 -45
- package/lib/components/Tree/Tree.js.map +1 -1
- package/lib/components/Tree/Tree.types.js.map +1 -1
- package/lib/components/Tree/renderTree.js +5 -5
- package/lib/components/Tree/renderTree.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.js +1 -1
- package/lib/components/TreeItem/TreeItem.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib/components/TreeItem/renderTreeItem.js +6 -6
- package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItem.js +17 -4
- package/lib/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js +4 -4
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayout.js +2 -2
- package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +5 -5
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +7 -14
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib/contexts/treeContext.js.map +1 -1
- package/lib/hooks/useFlatTree.js +2 -2
- package/lib/hooks/useFlatTree.js.map +1 -1
- package/lib/hooks/useFlatTreeNavigation.js +7 -5
- package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib/hooks/useNestedTreeNavigation.js +1 -1
- package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib/hooks/useOpenItemsState.js +2 -3
- package/lib/hooks/useOpenItemsState.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/createFlatTreeItems.js +26 -17
- package/lib/utils/createFlatTreeItems.js.map +1 -1
- package/lib/utils/flattenTree.js +8 -4
- package/lib/utils/flattenTree.js.map +1 -1
- package/lib-commonjs/components/Tree/renderTree.js +5 -6
- package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
- package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/renderTreeItem.js +6 -7
- package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItem.js +17 -5
- package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +4 -5
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +2 -2
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +5 -6
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +11 -19
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTree.js +2 -2
- package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTreeNavigation.js +7 -5
- package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useNestedTreeNavigation.js +1 -1
- package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useOpenItemsState.js +2 -3
- package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
- package/lib-commonjs/utils/createFlatTreeItems.js +26 -20
- package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -1
- package/lib-commonjs/utils/flattenTree.js +8 -4
- package/lib-commonjs/utils/flattenTree.js.map +1 -1
- package/package.json +9 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useFluent_unstable","useEventCallback","useMergedRefs","nextTypeAheadElement","treeDataTypes","treeItemFilter","useHTMLElementWalkerRef","useRovingTabIndex","useFlatTreeNavigation","flatTreeItems","targetDocument","treeItemWalkerRef","treeItemWalkerRootRef","rove","rovingRootRef","getNextElement","data","current","treeItemWalker","type","click","target","typeAhead","currentElement","event","key","arrowLeft","parentElement","arrowRight","firstChild","end","root","lastChild","home","arrowDown","nextElement","arrowUp","previousElement","navigate","treeWalker","nextElementAriaPosInSet","getAttribute","nextElementAriaLevel","targetAriaLevel","Number","
|
|
1
|
+
{"version":3,"names":["useFluent_unstable","useEventCallback","useMergedRefs","nextTypeAheadElement","treeDataTypes","treeItemFilter","useHTMLElementWalkerRef","useRovingTabIndex","useFlatTreeNavigation","flatTreeItems","targetDocument","treeItemWalkerRef","treeItemWalkerRootRef","rove","rovingRootRef","getNextElement","data","current","treeItemWalker","type","click","target","typeAhead","currentElement","event","key","arrowLeft","parentElement","value","arrowRight","firstChild","end","root","lastChild","home","arrowDown","nextElement","arrowUp","previousElement","navigate","treeWalker","nextElementAriaPosInSet","getAttribute","nextElementAriaLevel","targetAriaLevel","Number","flatTreeItem","get","parentValue","parentItem","_parentItem_ref_current","ref"],"sources":["../../src/hooks/useFlatTreeNavigation.ts"],"sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeNavigationData_unstable } from '../Tree';\nimport { FlatTreeItems } from '../utils/createFlatTreeItems';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { HTMLElementWalker, useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\n\nexport function useFlatTreeNavigation<Value = string>(flatTreeItems: FlatTreeItems<Value>) {\n const { targetDocument } = useFluent_unstable();\n const [treeItemWalkerRef, treeItemWalkerRootRef] = useHTMLElementWalkerRef(treeItemFilter);\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n\n function getNextElement(data: TreeNavigationData_unstable<Value>) {\n if (!targetDocument || !treeItemWalkerRef.current) {\n return null;\n }\n const treeItemWalker = treeItemWalkerRef.current;\n switch (data.type) {\n case treeDataTypes.click:\n return data.target;\n case treeDataTypes.typeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.arrowLeft:\n return parentElement(flatTreeItems, data.value);\n case treeDataTypes.arrowRight:\n treeItemWalker.currentElement = data.target;\n return firstChild(data.target, treeItemWalker);\n case treeDataTypes.end:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.lastChild();\n case treeDataTypes.home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.arrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.arrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n }\n const navigate = useEventCallback((data: TreeNavigationData_unstable<Value>) => {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n });\n return [navigate, useMergedRefs(treeItemWalkerRootRef, rovingRootRef)] as const;\n}\n\nfunction firstChild(target: HTMLElement, treeWalker: HTMLElementWalker): HTMLElement | null {\n const nextElement = treeWalker.nextElement();\n if (!nextElement) {\n return null;\n }\n const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');\n const nextElementAriaLevel = nextElement.getAttribute('aria-level');\n const targetAriaLevel = target.getAttribute('aria-level');\n if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {\n return nextElement;\n }\n return null;\n}\n\nfunction parentElement<Value = string>(flatTreeItems: FlatTreeItems<Value>, value: Value) {\n const flatTreeItem = flatTreeItems.get(value);\n if (flatTreeItem?.parentValue) {\n const parentItem = flatTreeItems.get(flatTreeItem.parentValue);\n return parentItem?.ref.current ?? null;\n }\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { useMergedRefs } from '@fluentui/react-utilities';
|
|
1
2
|
import { useHTMLElementWalkerRef } from './useHTMLElementWalker';
|
|
2
3
|
import { nextTypeAheadElement } from '../utils/nextTypeAheadElement';
|
|
3
4
|
import { treeDataTypes } from '../utils/tokens';
|
|
4
5
|
import { treeItemFilter } from '../utils/treeItemFilter';
|
|
5
6
|
import { useRovingTabIndex } from './useRovingTabIndexes';
|
|
6
|
-
import { useMergedRefs } from '@fluentui/react-utilities';
|
|
7
7
|
export function useNestedTreeNavigation() {
|
|
8
8
|
const [{
|
|
9
9
|
rove
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","
|
|
1
|
+
{"version":3,"names":["useMergedRefs","useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useNestedTreeNavigation","rove","rovingRootRef","walkerRef","rootRef","getNextElement","data","current","treeItemWalker","type","click","target","typeAhead","currentElement","event","key","arrowLeft","parentElement","arrowRight","firstChild","end","root","lastChildRecursive","home","arrowDown","nextElement","arrowUp","previousElement","navigate","walker","lastElement","lastChild"],"sources":["../../src/hooks/useNestedTreeNavigation.ts"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeNavigationData_unstable } from '../Tree';\nimport { HTMLElementWalker, useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\n\nexport function useNestedTreeNavigation() {\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n\n const getNextElement = (data: TreeNavigationData_unstable) => {\n if (!walkerRef.current) {\n return;\n }\n const treeItemWalker = walkerRef.current;\n switch (data.type) {\n case treeDataTypes.click:\n return data.target;\n case treeDataTypes.typeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.arrowLeft:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.parentElement();\n case treeDataTypes.arrowRight:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.firstChild();\n case treeDataTypes.end:\n treeItemWalker.currentElement = treeItemWalker.root;\n return lastChildRecursive(treeItemWalker);\n case treeDataTypes.home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.arrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.arrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n };\n function navigate(data: TreeNavigationData_unstable) {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return [navigate, useMergedRefs(rootRef, rovingRootRef)] as const;\n}\n\nfunction lastChildRecursive(walker: HTMLElementWalker) {\n let lastElement: HTMLElement | null = null;\n let nextElement: HTMLElement | null = null;\n while ((nextElement = walker.lastChild())) {\n lastElement = nextElement;\n }\n return lastElement;\n}\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ;AAE9B,SAA4BC,uBAAuB,QAAQ;AAC3D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAElC,OAAO,SAASC,wBAAA,EAA0B;EACxC,MAAM,CAAC;IAAEC;EAAI,CAAE,EAAEC,aAAA,CAAc,GAAGH,iBAAA,CAAkBD,cAAA;EACpD,MAAM,CAACK,SAAA,EAAWC,OAAA,CAAQ,GAAGT,uBAAA,CAAwBG,cAAA;EAErD,MAAMO,cAAA,GAAkBC,IAAA,IAAsC;IAC5D,IAAI,CAACH,SAAA,CAAUI,OAAO,EAAE;MACtB;IACF;IACA,MAAMC,cAAA,GAAiBL,SAAA,CAAUI,OAAO;IACxC,QAAQD,IAAA,CAAKG,IAAI;MACf,KAAKZ,aAAA,CAAca,KAAK;QACtB,OAAOJ,IAAA,CAAKK,MAAM;MACpB,KAAKd,aAAA,CAAce,SAAS;QAC1BJ,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOf,oBAAA,CAAqBY,cAAA,EAAgBF,IAAA,CAAKQ,KAAK,CAACC,GAAG;MAC5D,KAAKlB,aAAA,CAAcmB,SAAS;QAC1BR,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeS,aAAa;MACrC,KAAKpB,aAAA,CAAcqB,UAAU;QAC3BV,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeW,UAAU;MAClC,KAAKtB,aAAA,CAAcuB,GAAG;QACpBZ,cAAA,CAAeK,cAAc,GAAGL,cAAA,CAAea,IAAI;QACnD,OAAOC,kBAAA,CAAmBd,cAAA;MAC5B,KAAKX,aAAA,CAAc0B,IAAI;QACrBf,cAAA,CAAeK,cAAc,GAAGL,cAAA,CAAea,IAAI;QACnD,OAAOb,cAAA,CAAeW,UAAU;MAClC,KAAKtB,aAAA,CAAc2B,SAAS;QAC1BhB,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeiB,WAAW;MACnC,KAAK5B,aAAA,CAAc6B,OAAO;QACxBlB,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAemB,eAAe;IAAA;EAE3C;EACA,SAASC,SAAStB,IAAiC,EAAE;IACnD,MAAMmB,WAAA,GAAcpB,cAAA,CAAeC,IAAA;IACnC,IAAImB,WAAA,EAAa;MACfxB,IAAA,CAAKwB,WAAA;IACP;EACF;EACA,OAAO,CAACG,QAAA,EAAUlC,aAAA,CAAcU,OAAA,EAASF,aAAA,EAAe;AAC1D;AAEA,SAASoB,mBAAmBO,MAAyB,EAAE;EACrD,IAAIC,WAAA,GAAkC,IAAI;EAC1C,IAAIL,WAAA,GAAkC,IAAI;EAC1C,OAAQA,WAAA,GAAcI,MAAA,CAAOE,SAAS,IAAK;IACzCD,WAAA,GAAcL,WAAA;EAChB;EACA,OAAOK,WAAA;AACT"}
|
|
@@ -11,12 +11,11 @@ export function useOpenItemsState(props) {
|
|
|
11
11
|
return [openItems, updateOpenItems];
|
|
12
12
|
}
|
|
13
13
|
function createNextOpenItems(data, previousOpenItems) {
|
|
14
|
-
const
|
|
15
|
-
const previousOpenItemsHasId = previousOpenItems.has(id);
|
|
14
|
+
const previousOpenItemsHasId = previousOpenItems.has(data.value);
|
|
16
15
|
if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
|
|
17
16
|
return previousOpenItems;
|
|
18
17
|
}
|
|
19
18
|
const nextOpenItems = createImmutableSet(previousOpenItems);
|
|
20
|
-
return data.open ? nextOpenItems.add(
|
|
19
|
+
return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);
|
|
21
20
|
}
|
|
22
21
|
//# sourceMappingURL=useOpenItemsState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","previousOpenItems","
|
|
1
|
+
{"version":3,"names":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","previousOpenItems","previousOpenItemsHasId","has","value","open","nextOpenItems","add","delete"],"sources":["../../src/hooks/useOpenItemsState.ts"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createImmutableSet, emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\nimport type { TreeOpenChangeData, TreeProps } from '../Tree';\n\nexport function useOpenItemsState<Value = string>(props: Pick<TreeProps<Value>, 'openItems' | 'defaultOpenItems'>) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => props.openItems && createImmutableSet(props.openItems), [props.openItems]),\n defaultState: React.useMemo(\n () => props.defaultOpenItems && createImmutableSet(props.defaultOpenItems),\n [props.defaultOpenItems],\n ),\n initialState: emptyImmutableSet,\n });\n const updateOpenItems = useEventCallback((data: TreeOpenChangeData<Value>) =>\n setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)),\n );\n return [openItems, updateOpenItems] as const;\n}\n\nfunction createNextOpenItems<Value = string>(\n data: TreeOpenChangeData<Value>,\n previousOpenItems: ImmutableSet<Value>,\n): ImmutableSet<Value> {\n const previousOpenItemsHasId = previousOpenItems.has(data.value);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);\n}\n"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,gBAAgB,QAAQ;AACvD,YAAYC,KAAA,MAAW;AACvB,SAASC,kBAAkB,EAAEC,iBAAiB,QAAsB;AAGpE,OAAO,SAASC,kBAAkCC,KAA+D,EAAE;EACjH,MAAM,CAACC,SAAA,EAAWC,YAAA,CAAa,GAAGR,oBAAA,CAAqB;IACrDS,KAAA,EAAOP,KAAA,CAAMQ,OAAO,CAAC,MAAMJ,KAAA,CAAMC,SAAS,IAAIJ,kBAAA,CAAmBG,KAAA,CAAMC,SAAS,GAAG,CAACD,KAAA,CAAMC,SAAS,CAAC;IACpGI,YAAA,EAAcT,KAAA,CAAMQ,OAAO,CACzB,MAAMJ,KAAA,CAAMM,gBAAgB,IAAIT,kBAAA,CAAmBG,KAAA,CAAMM,gBAAgB,GACzE,CAACN,KAAA,CAAMM,gBAAgB,CAAC;IAE1BC,YAAA,EAAcT;EAChB;EACA,MAAMU,eAAA,GAAkBb,gBAAA,CAAkBc,IAAA,IACxCP,YAAA,CAAaQ,gBAAA,IAAoBC,mBAAA,CAAoBF,IAAA,EAAMC,gBAAA;EAE7D,OAAO,CAACT,SAAA,EAAWO,eAAA,CAAgB;AACrC;AAEA,SAASG,oBACPF,IAA+B,EAC/BG,iBAAsC,EACjB;EACrB,MAAMC,sBAAA,GAAyBD,iBAAA,CAAkBE,GAAG,CAACL,IAAA,CAAKM,KAAK;EAC/D,IAAIN,IAAA,CAAKO,IAAI,GAAGH,sBAAA,GAAyB,CAACA,sBAAsB,EAAE;IAChE,OAAOD,iBAAA;EACT;EACA,MAAMK,aAAA,GAAgBpB,kBAAA,CAAmBe,iBAAA;EACzC,OAAOH,IAAA,CAAKO,IAAI,GAAGC,aAAA,CAAcC,GAAG,CAACT,IAAA,CAAKM,KAAK,IAAIE,aAAA,CAAcE,MAAM,CAACV,IAAA,CAAKM,KAAK,CAAC;AACrF"}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Tree","treeClassNames","renderTree_unstable","useTreeStyles_unstable","useTree_unstable","useTreeContextValues_unstable","TreeProvider","useTreeContext_unstable","useTreeItemContext_unstable","TreeItemProvider","treeItemLevelToken","TreeItem","treeItemClassNames","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItem_unstable","TreeItemLayout","treeItemLayoutClassNames","renderTreeItemLayout_unstable","useTreeItemLayoutStyles_unstable","useTreeItemLayout_unstable","TreeItemPersonaLayout","treeItemPersonaLayoutClassNames","renderTreeItemPersonaLayout_unstable","useTreeItemPersonaLayoutStyles_unstable","useTreeItemPersonaLayout_unstable","useFlatTree_unstable","flattenTree_unstable"],"sources":["../src/index.ts"],"sourcesContent":["export {\n Tree,\n treeClassNames,\n renderTree_unstable,\n useTreeStyles_unstable,\n useTree_unstable,\n useTreeContextValues_unstable,\n} from './Tree';\nexport type {\n TreeProps,\n TreeState,\n TreeSlots,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeNavigationEvent_unstable,\n TreeNavigationData_unstable,\n} from './Tree';\n\nexport { TreeProvider, useTreeContext_unstable, useTreeItemContext_unstable, TreeItemProvider } from './contexts';\nexport type { TreeContextValue } from './contexts';\n\nexport { treeItemLevelToken } from './utils/tokens';\n\nexport {\n TreeItem,\n treeItemClassNames,\n renderTreeItem_unstable,\n useTreeItemStyles_unstable,\n useTreeItem_unstable,\n} from './TreeItem';\nexport type {
|
|
1
|
+
{"version":3,"names":["Tree","treeClassNames","renderTree_unstable","useTreeStyles_unstable","useTree_unstable","useTreeContextValues_unstable","TreeProvider","useTreeContext_unstable","useTreeItemContext_unstable","TreeItemProvider","treeItemLevelToken","TreeItem","treeItemClassNames","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItem_unstable","TreeItemLayout","treeItemLayoutClassNames","renderTreeItemLayout_unstable","useTreeItemLayoutStyles_unstable","useTreeItemLayout_unstable","TreeItemPersonaLayout","treeItemPersonaLayoutClassNames","renderTreeItemPersonaLayout_unstable","useTreeItemPersonaLayoutStyles_unstable","useTreeItemPersonaLayout_unstable","useFlatTree_unstable","flattenTree_unstable"],"sources":["../src/index.ts"],"sourcesContent":["export {\n Tree,\n treeClassNames,\n renderTree_unstable,\n useTreeStyles_unstable,\n useTree_unstable,\n useTreeContextValues_unstable,\n} from './Tree';\nexport type {\n TreeProps,\n TreeState,\n TreeSlots,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeNavigationEvent_unstable,\n TreeNavigationData_unstable,\n} from './Tree';\n\nexport { TreeProvider, useTreeContext_unstable, useTreeItemContext_unstable, TreeItemProvider } from './contexts';\nexport type { TreeContextValue } from './contexts';\n\nexport { treeItemLevelToken } from './utils/tokens';\n\nexport {\n TreeItem,\n treeItemClassNames,\n renderTreeItem_unstable,\n useTreeItemStyles_unstable,\n useTreeItem_unstable,\n} from './TreeItem';\nexport type { TreeItemProps, TreeItemState, TreeItemSlots } from './TreeItem';\n\nexport {\n TreeItemLayout,\n treeItemLayoutClassNames,\n renderTreeItemLayout_unstable,\n useTreeItemLayoutStyles_unstable,\n useTreeItemLayout_unstable,\n} from './TreeItemLayout';\nexport type { TreeItemLayoutProps, TreeItemLayoutSlots, TreeItemLayoutState } from './TreeItemLayout';\n\nexport {\n TreeItemPersonaLayout,\n treeItemPersonaLayoutClassNames,\n renderTreeItemPersonaLayout_unstable,\n useTreeItemPersonaLayoutStyles_unstable,\n useTreeItemPersonaLayout_unstable,\n} from './TreeItemPersonaLayout';\nexport type {\n TreeItemPersonaLayoutProps,\n TreeItemPersonaLayoutSlots,\n TreeItemPersonaLayoutState,\n} from './TreeItemPersonaLayout';\n\nexport { useFlatTree_unstable } from './hooks/index';\nexport type { FlatTreeItem, FlatTreeItemProps, FlatTreeProps, FlatTree } from './hooks/index';\n\nexport { flattenTree_unstable } from './utils/flattenTree';\nexport type { NestedTreeItem } from './utils/flattenTree';\n"],"mappings":"AAAA,SACEA,IAAI,EACJC,cAAc,EACdC,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,EAChBC,6BAA6B,QACxB;AAWP,SAASC,YAAY,EAAEC,uBAAuB,EAAEC,2BAA2B,EAAEC,gBAAgB,QAAQ;AAGrG,SAASC,kBAAkB,QAAQ;AAEnC,SACEC,QAAQ,EACRC,kBAAkB,EAClBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,oBAAoB,QACf;AAGP,SACEC,cAAc,EACdC,wBAAwB,EACxBC,6BAA6B,EAC7BC,gCAAgC,EAChCC,0BAA0B,QACrB;AAGP,SACEC,qBAAqB,EACrBC,+BAA+B,EAC/BC,oCAAoC,EACpCC,uCAAuC,EACvCC,iCAAiC,QAC5B;AAOP,SAASC,oBAAoB,QAAQ;AAGrC,SAASC,oBAAoB,QAAQ"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
/**
|
|
2
3
|
* creates a list of flat tree items
|
|
3
4
|
* and provides a map to access each item by id
|
|
4
|
-
*/
|
|
5
|
+
*/
|
|
6
|
+
export function createFlatTreeItems(flatTreeItemProps) {
|
|
5
7
|
const root = createFlatTreeRootItem();
|
|
6
|
-
const
|
|
8
|
+
const itemsPerValue = new Map([[flatTreeRootId, root]]);
|
|
7
9
|
const items = [];
|
|
8
10
|
for (let index = 0; index < flatTreeItemProps.length; index++) {
|
|
9
11
|
const {
|
|
10
|
-
|
|
12
|
+
parentValue = flatTreeRootId,
|
|
11
13
|
...treeItemProps
|
|
12
14
|
} = flatTreeItemProps[index];
|
|
13
15
|
const nextItemProps = flatTreeItemProps[index + 1];
|
|
14
|
-
const currentParent =
|
|
16
|
+
const currentParent = itemsPerValue.get(parentValue);
|
|
15
17
|
if (!currentParent) {
|
|
16
18
|
if (process.env.NODE_ENV === 'development') {
|
|
17
19
|
// eslint-disable-next-line no-console
|
|
@@ -19,46 +21,53 @@
|
|
|
19
21
|
}
|
|
20
22
|
break;
|
|
21
23
|
}
|
|
22
|
-
const isLeaf = (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.
|
|
24
|
+
const isLeaf = (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentValue) !== treeItemProps.value;
|
|
23
25
|
var _currentParent_level;
|
|
24
26
|
const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;
|
|
25
27
|
const currentChildrenSize = ++currentParent.childrenSize;
|
|
28
|
+
const ref = /*#__PURE__*/React.createRef();
|
|
26
29
|
const flatTreeItem = {
|
|
27
|
-
|
|
30
|
+
value: treeItemProps.value,
|
|
28
31
|
getTreeItemProps: () => ({
|
|
29
32
|
...treeItemProps,
|
|
30
33
|
'aria-level': currentLevel,
|
|
31
34
|
'aria-posinset': currentChildrenSize,
|
|
32
35
|
'aria-setsize': currentParent.childrenSize,
|
|
33
|
-
leaf: isLeaf
|
|
36
|
+
leaf: isLeaf,
|
|
37
|
+
// a reference to every parent element is necessary to ensure navigation
|
|
38
|
+
ref: flatTreeItem.childrenSize > 0 ? ref : undefined
|
|
34
39
|
}),
|
|
40
|
+
ref,
|
|
35
41
|
level: currentLevel,
|
|
36
|
-
|
|
42
|
+
parentValue,
|
|
37
43
|
childrenSize: 0,
|
|
38
44
|
index: -1
|
|
39
45
|
};
|
|
40
|
-
|
|
46
|
+
itemsPerValue.set(flatTreeItem.value, flatTreeItem);
|
|
41
47
|
items.push(flatTreeItem);
|
|
42
48
|
}
|
|
43
49
|
return {
|
|
44
50
|
root,
|
|
45
51
|
size: items.length,
|
|
46
52
|
getByIndex: index => items[index],
|
|
47
|
-
get: id =>
|
|
48
|
-
set: (id, value) =>
|
|
53
|
+
get: id => itemsPerValue.get(id),
|
|
54
|
+
set: (id, value) => itemsPerValue.set(id, value)
|
|
49
55
|
};
|
|
50
56
|
}
|
|
51
57
|
export const flatTreeRootId = '__fuiFlatTreeRoot';
|
|
52
58
|
function createFlatTreeRootItem() {
|
|
53
59
|
return {
|
|
54
|
-
|
|
60
|
+
ref: {
|
|
61
|
+
current: null
|
|
62
|
+
},
|
|
63
|
+
value: flatTreeRootId,
|
|
55
64
|
getTreeItemProps: () => {
|
|
56
65
|
if (process.env.NODE_ENV !== 'production') {
|
|
57
66
|
// eslint-disable-next-line no-console
|
|
58
67
|
console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');
|
|
59
68
|
}
|
|
60
69
|
return {
|
|
61
|
-
|
|
70
|
+
value: flatTreeRootId,
|
|
62
71
|
'aria-setsize': -1,
|
|
63
72
|
'aria-level': -1,
|
|
64
73
|
'aria-posinset': -1,
|
|
@@ -81,7 +90,7 @@ export function* VisibleFlatTreeItemGenerator(openItems, flatTreeItems) {
|
|
|
81
90
|
for (let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++) {
|
|
82
91
|
const item = flatTreeItems.getByIndex(index);
|
|
83
92
|
var _flatTreeItems_get;
|
|
84
|
-
const parent = item.
|
|
93
|
+
const parent = item.parentValue ? (_flatTreeItems_get = flatTreeItems.get(item.parentValue)) !== null && _flatTreeItems_get !== void 0 ? _flatTreeItems_get : flatTreeItems.root : flatTreeItems.root;
|
|
85
94
|
if (isItemVisible(item, openItems, flatTreeItems)) {
|
|
86
95
|
item.index = visibleIndex++;
|
|
87
96
|
yield item;
|
|
@@ -94,11 +103,11 @@ function isItemVisible(item, openItems, flatTreeItems) {
|
|
|
94
103
|
if (item.level === 1) {
|
|
95
104
|
return true;
|
|
96
105
|
}
|
|
97
|
-
while (item.
|
|
98
|
-
if (!openItems.has(item.
|
|
106
|
+
while (item.parentValue && item.parentValue !== flatTreeItems.root.value) {
|
|
107
|
+
if (!openItems.has(item.parentValue)) {
|
|
99
108
|
return false;
|
|
100
109
|
}
|
|
101
|
-
const parent = flatTreeItems.get(item.
|
|
110
|
+
const parent = flatTreeItems.get(item.parentValue);
|
|
102
111
|
if (!parent) {
|
|
103
112
|
return false;
|
|
104
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createFlatTreeItems","flatTreeItemProps","root","createFlatTreeRootItem","
|
|
1
|
+
{"version":3,"names":["React","createFlatTreeItems","flatTreeItemProps","root","createFlatTreeRootItem","itemsPerValue","Map","flatTreeRootId","items","index","length","parentValue","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","id","isLeaf","value","_currentParent_level","currentLevel","level","currentChildrenSize","childrenSize","ref","createRef","flatTreeItem","getTreeItemProps","leaf","undefined","set","push","size","getByIndex","current","VisibleFlatTreeItemGenerator","openItems","flatTreeItems","visibleIndex","item","_flatTreeItems_get","parent","isItemVisible","has"],"sources":["../../src/utils/createFlatTreeItems.ts"],"sourcesContent":["import type { ImmutableSet } from './ImmutableSet';\nimport type { FlatTreeItem, FlatTreeItemProps, MutableFlatTreeItem } from '../hooks/useFlatTree';\nimport * as React from 'react';\n\n/**\n * @internal\n */\nexport type FlatTreeItems<Value = string> = {\n size: number;\n root: FlatTreeItem<Value>;\n get(key: Value): FlatTreeItem<Value> | undefined;\n set(key: Value, value: FlatTreeItem<Value>): void;\n getByIndex(index: number): FlatTreeItem<Value>;\n};\n\n/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */\nexport function createFlatTreeItems<Value = string>(\n flatTreeItemProps: FlatTreeItemProps<Value>[],\n): FlatTreeItems<Value> {\n const root = createFlatTreeRootItem<Value>();\n const itemsPerValue = new Map<Value, MutableFlatTreeItem<Value>>([[flatTreeRootId as Value, root]]);\n const items: MutableFlatTreeItem<Value>[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentValue = flatTreeRootId as Value, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps: FlatTreeItemProps<Value> | undefined = flatTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `useFlatTree: item ${flatTreeItemProps[index].id} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`,\n );\n }\n break;\n }\n const isLeaf = nextItemProps?.parentValue !== treeItemProps.value;\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n const ref = React.createRef<HTMLDivElement>();\n\n const flatTreeItem: MutableFlatTreeItem<Value> = {\n value: treeItemProps.value,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n leaf: isLeaf,\n // a reference to every parent element is necessary to ensure navigation\n ref: flatTreeItem.childrenSize > 0 ? ref : undefined,\n }),\n ref,\n level: currentLevel,\n parentValue,\n childrenSize: 0,\n index: -1,\n };\n itemsPerValue.set(flatTreeItem.value, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n return {\n root,\n size: items.length,\n getByIndex: index => items[index],\n get: id => itemsPerValue.get(id),\n set: (id, value) => itemsPerValue.set(id, value),\n };\n}\n\nexport const flatTreeRootId = '__fuiFlatTreeRoot' as unknown;\n\nfunction createFlatTreeRootItem<Value = string>(): FlatTreeItem<Value> {\n return {\n ref: { current: null },\n value: flatTreeRootId as Value,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return { value: flatTreeRootId as Value, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, leaf: true };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function* VisibleFlatTreeItemGenerator<Value = string>(\n openItems: ImmutableSet<Value>,\n flatTreeItems: FlatTreeItems<Value>,\n) {\n for (let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++) {\n const item: MutableFlatTreeItem<Value> = flatTreeItems.getByIndex(index);\n const parent = item.parentValue ? flatTreeItems.get(item.parentValue) ?? flatTreeItems.root : flatTreeItems.root;\n if (isItemVisible(item, openItems, flatTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n index += parent.childrenSize - 1 + item.childrenSize;\n }\n }\n}\n\nfunction isItemVisible<Value>(\n item: FlatTreeItem<Value>,\n openItems: ImmutableSet<Value>,\n flatTreeItems: FlatTreeItems<Value>,\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentValue && item.parentValue !== flatTreeItems.root.value) {\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = flatTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"mappings":"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"}
|
package/lib/utils/flattenTree.js
CHANGED
|
@@ -6,12 +6,14 @@ function flattenTreeRecursive(items, parent, level = 1) {
|
|
|
6
6
|
...item
|
|
7
7
|
}, index) => {
|
|
8
8
|
var _item_id;
|
|
9
|
+
const id = (_item_id = item.id) !== null && _item_id !== void 0 ? _item_id : `fui-FlatTreeItem-${count++}`;
|
|
10
|
+
var _item_value;
|
|
9
11
|
const flatTreeItem = {
|
|
10
12
|
'aria-level': level,
|
|
11
13
|
'aria-posinset': index + 1,
|
|
12
14
|
'aria-setsize': items.length,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
parentValue: parent === null || parent === void 0 ? void 0 : parent.value,
|
|
16
|
+
value: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : id,
|
|
15
17
|
leaf: subtree === undefined,
|
|
16
18
|
...item
|
|
17
19
|
};
|
|
@@ -71,12 +73,14 @@ export const flattenTreeFromElement = (root, parent, level = 1) => {
|
|
|
71
73
|
return children.reduce((acc, curr, index) => {
|
|
72
74
|
const [content, subtree] = React.Children.toArray(curr.props.children);
|
|
73
75
|
var _curr_props_id;
|
|
76
|
+
const id = (_curr_props_id = curr.props.id) !== null && _curr_props_id !== void 0 ? _curr_props_id : `fui-FlatTreeItem-${count++}`;
|
|
77
|
+
var _curr_props_value;
|
|
74
78
|
const flatTreeItem = {
|
|
75
79
|
'aria-level': level,
|
|
76
80
|
'aria-posinset': index + 1,
|
|
77
81
|
'aria-setsize': children.length,
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
parentValue: parent === null || parent === void 0 ? void 0 : parent.value,
|
|
83
|
+
value: (_curr_props_value = curr.props.value) !== null && _curr_props_value !== void 0 ? _curr_props_value : id,
|
|
80
84
|
leaf: subtree === undefined,
|
|
81
85
|
...curr.props,
|
|
82
86
|
children: content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","count","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","_item_id","flatTreeItem","length","
|
|
1
|
+
{"version":3,"names":["React","count","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","_item_id","id","_item_value","flatTreeItem","length","parentValue","value","leaf","undefined","push","flattenTree_unstable","flattenTreeFromElement","root","children","Children","toArray","props","curr","content","_curr_props_id","_curr_props_value"],"sources":["../../src/utils/flattenTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { FlatTreeItemProps } from '../hooks/useFlatTree';\nimport { TreeItemProps } from '../TreeItem';\n\nexport type NestedTreeItem<Value = string> = Omit<TreeItemProps<Value>, 'subtree'> & {\n subtree?: NestedTreeItem<Value>[];\n};\n\nlet count = 1;\nfunction flattenTreeRecursive<Value = string>(\n items: NestedTreeItem<Value>[],\n parent?: FlatTreeItemProps<Value>,\n level = 1,\n): FlatTreeItemProps<Value>[] {\n return items.reduce<FlatTreeItemProps<Value>[]>((acc, { subtree, ...item }, index) => {\n const id = item.id ?? `fui-FlatTreeItem-${count++}`;\n const flatTreeItem: FlatTreeItemProps<Value> = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentValue: parent?.value,\n value: item.value ?? (id as unknown as Value),\n leaf: subtree === undefined,\n ...item,\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeRecursive(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n}\n\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n * @example\n * ```tsx\n * const defaultItems = flattenTree_unstable([\n * {\n * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,\n * },\n * ],\n * },\n * {\n * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,\n * },\n * ],\n * },\n * ],\n * },\n * ],\n * },\n * ]);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable = <Value = string>(items: NestedTreeItem<Value>[]): FlatTreeItemProps<Value>[] =>\n flattenTreeRecursive(items);\n\n/**\n * @internal\n */\nexport const flattenTreeFromElement = <Value = string>(\n root: React.ReactElement<{\n children?: React.ReactElement<TreeItemProps<Value>> | React.ReactElement<TreeItemProps<Value>>[];\n }>,\n parent?: FlatTreeItemProps<Value>,\n level = 1,\n): FlatTreeItemProps<Value>[] => {\n const children = React.Children.toArray(root.props.children) as React.ReactElement<TreeItemProps<Value>>[];\n return children.reduce<FlatTreeItemProps<Value>[]>((acc, curr, index) => {\n const [content, subtree] = React.Children.toArray(curr.props.children) as [\n React.ReactNode,\n typeof root | undefined,\n ];\n const id = curr.props.id ?? `fui-FlatTreeItem-${count++}`;\n const flatTreeItem: FlatTreeItemProps<Value> = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': children.length,\n parentValue: parent?.value,\n value: curr.props.value ?? (id as unknown as Value),\n leaf: subtree === undefined,\n ...curr.props,\n children: content,\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeFromElement(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n};\n"],"mappings":"AAAA,YAAYA,KAAA,MAAW;AAQvB,IAAIC,KAAA,GAAQ;AACZ,SAASC,qBACPC,KAA8B,EAC9BC,MAAiC,EACjCC,KAAA,GAAQ,CAAC,EACmB;EAC5B,OAAOF,KAAA,CAAMG,MAAM,CAA6B,CAACC,GAAA,EAAK;IAAEC,OAAA;IAAS,GAAGC;EAAA,CAAM,EAAEC,KAAA,KAAU;QACzEC,QAAA;IAAX,MAAMC,EAAA,GAAK,CAAAD,QAAA,GAAAF,IAAA,CAAKG,EAAE,cAAPD,QAAA,cAAAA,QAAA,GAAY,oBAAmBV,KAAA,EAAQ,EAAC;QAM1CY,WAAA;IALT,MAAMC,YAAA,GAAyC;MAC7C,cAAcT,KAAA;MACd,iBAAiBK,KAAA,GAAQ;MACzB,gBAAgBP,KAAA,CAAMY,MAAM;MAC5BC,WAAA,EAAaZ,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQa,KAAK;MAC1BA,KAAA,EAAO,CAAAJ,WAAA,GAAAJ,IAAA,CAAKQ,KAAK,cAAVJ,WAAA,cAAAA,WAAA,GAAeD,EAAuB;MAC7CM,IAAA,EAAMV,OAAA,KAAYW,SAAA;MAClB,GAAGV;IACL;IACAF,GAAA,CAAIa,IAAI,CAACN,YAAA;IACT,IAAIN,OAAA,KAAYW,SAAA,EAAW;MACzBZ,GAAA,CAAIa,IAAI,IAAIlB,oBAAA,CAAqBM,OAAA,EAASM,YAAA,EAAcT,KAAA,GAAQ;IAClE;IACA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA,CAwCA;AACA,OAAO,MAAMc,oBAAA,GAAwClB,KAAA,IACnDD,oBAAA,CAAqBC,KAAA;AAEvB;;;AAGA,OAAO,MAAMmB,sBAAA,GAAyBA,CACpCC,IAAA,EAGAnB,MAAA,EACAC,KAAA,GAAQ,CAAC,KACsB;EAC/B,MAAMmB,QAAA,GAAWxB,KAAA,CAAMyB,QAAQ,CAACC,OAAO,CAACH,IAAA,CAAKI,KAAK,CAACH,QAAQ;EAC3D,OAAOA,QAAA,CAASlB,MAAM,CAA6B,CAACC,GAAA,EAAKqB,IAAA,EAAMlB,KAAA,KAAU;IACvE,MAAM,CAACmB,OAAA,EAASrB,OAAA,CAAQ,GAAGR,KAAA,CAAMyB,QAAQ,CAACC,OAAO,CAACE,IAAA,CAAKD,KAAK,CAACH,QAAQ;QAI1DM,cAAA;IAAX,MAAMlB,EAAA,GAAK,CAAAkB,cAAA,GAAAF,IAAA,CAAKD,KAAK,CAACf,EAAE,cAAbkB,cAAA,cAAAA,cAAA,GAAkB,oBAAmB7B,KAAA,EAAQ,EAAC;QAMhD8B,iBAAA;IALT,MAAMjB,YAAA,GAAyC;MAC7C,cAAcT,KAAA;MACd,iBAAiBK,KAAA,GAAQ;MACzB,gBAAgBc,QAAA,CAAST,MAAM;MAC/BC,WAAA,EAAaZ,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQa,KAAK;MAC1BA,KAAA,EAAO,CAAAc,iBAAA,GAAAH,IAAA,CAAKD,KAAK,CAACV,KAAK,cAAhBc,iBAAA,cAAAA,iBAAA,GAAqBnB,EAAuB;MACnDM,IAAA,EAAMV,OAAA,KAAYW,SAAA;MAClB,GAAGS,IAAA,CAAKD,KAAK;MACbH,QAAA,EAAUK;IACZ;IACAtB,GAAA,CAAIa,IAAI,CAACN,YAAA;IACT,IAAIN,OAAA,KAAYW,SAAA,EAAW;MACzBZ,GAAA,CAAIa,IAAI,IAAIE,sBAAA,CAAuBd,OAAA,EAASM,YAAA,EAAcT,KAAA,GAAQ;IACpE;IACA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
/** @jsxRuntime classic */ /** @jsx createElement */ "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
@@ -6,15 +6,14 @@ Object.defineProperty(exports, "renderTree_unstable", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: ()=>renderTree_unstable
|
|
8
8
|
});
|
|
9
|
-
const
|
|
10
|
-
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
9
|
+
const _reactJsxRuntime = require("@fluentui/react-jsx-runtime");
|
|
11
10
|
const _reactUtilities = require("@fluentui/react-utilities");
|
|
12
11
|
const _contexts = require("../../contexts");
|
|
13
12
|
const renderTree_unstable = (state, contextValues)=>{
|
|
14
|
-
const { slots , slotProps } = (0, _reactUtilities.
|
|
15
|
-
return /*#__PURE__*/
|
|
13
|
+
const { slots , slotProps } = (0, _reactUtilities.getSlotsNext)(state);
|
|
14
|
+
return /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(_contexts.TreeProvider, {
|
|
16
15
|
value: contextValues.tree
|
|
17
|
-
}, /*#__PURE__*/
|
|
16
|
+
}, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.root, slotProps.root, slotProps.root.children));
|
|
18
17
|
}; //# sourceMappingURL=renderTree.js.map
|
|
19
18
|
|
|
20
19
|
//# sourceMappingURL=renderTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/components/Tree/renderTree.js"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../lib/components/Tree/renderTree.js"],"sourcesContent":["/** @jsxRuntime classic */ /** @jsx createElement */import { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport { TreeProvider } from '../../contexts';\nexport const renderTree_unstable = (state, contextValues) => {\n const {\n slots,\n slotProps\n } = getSlotsNext(state);\n return /*#__PURE__*/createElement(TreeProvider, {\n value: contextValues.tree\n }, /*#__PURE__*/createElement(slots.root, slotProps.root, slotProps.root.children));\n};\n//# sourceMappingURL=renderTree.js.map"],"names":["renderTree_unstable","state","contextValues","slots","slotProps","getSlotsNext","createElement","TreeProvider","value","tree","root","children"],"mappings":"AAAA,wBAAwB,GAAG,uBAAuB;;;;+BAGrCA;;aAAAA;;iCAHqE;gCACrD;0BACA;AACtB,MAAMA,sBAAsB,CAACC,OAAOC,gBAAkB;IAC3D,MAAM,EACJC,MAAK,EACLC,UAAS,EACV,GAAGC,IAAAA,4BAAY,EAACJ;IACjB,OAAO,WAAW,GAAEK,IAAAA,8BAAa,EAACC,sBAAY,EAAE;QAC9CC,OAAON,cAAcO,IAAI;IAC3B,GAAG,WAAW,GAAEH,IAAAA,8BAAa,EAACH,MAAMO,IAAI,EAAEN,UAAUM,IAAI,EAAEN,UAAUM,IAAI,CAACC,QAAQ;AACnF,GACA,sCAAsC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/components/TreeItem/TreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeItem_unstable } from './useTreeItem';\nimport { renderTreeItem_unstable } from './renderTreeItem';\nimport { useTreeItemStyles_unstable } from './useTreeItemStyles';\nimport { useTreeItemContextValues_unstable } from './useTreeItemContextValues';\n/**\n * The `TreeItem` component represents a single item in a tree.\n * It expects a certain order of children to work properly: the first child should be the node itself,\n * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.\n * This order follows the same order as document traversal for the TreeWalker API in JavaScript:\n * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.\n * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,\n * which should be used as a direct child of TreeItem.\n *\n * When a TreeItem has
|
|
1
|
+
{"version":3,"sources":["../../../lib/components/TreeItem/TreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeItem_unstable } from './useTreeItem';\nimport { renderTreeItem_unstable } from './renderTreeItem';\nimport { useTreeItemStyles_unstable } from './useTreeItemStyles';\nimport { useTreeItemContextValues_unstable } from './useTreeItemContextValues';\n/**\n * The `TreeItem` component represents a single item in a tree.\n * It expects a certain order of children to work properly: the first child should be the node itself,\n * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.\n * This order follows the same order as document traversal for the TreeWalker API in JavaScript:\n * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.\n * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,\n * which should be used as a direct child of TreeItem.\n *\n * When a TreeItem has nested child subtree, an expand/collapse control is displayed,\n * allowing the user to show or hide the children.\n */\nexport const TreeItem = /*#__PURE__*/React.forwardRef((props, ref) => {\n const state = useTreeItem_unstable(props, ref);\n useTreeItemStyles_unstable(state);\n const contextValues = useTreeItemContextValues_unstable(state);\n return renderTreeItem_unstable(state, contextValues);\n});\nTreeItem.displayName = 'TreeItem';\n//# sourceMappingURL=TreeItem.js.map"],"names":["TreeItem","React","forwardRef","props","ref","state","useTreeItem_unstable","useTreeItemStyles_unstable","contextValues","useTreeItemContextValues_unstable","renderTreeItem_unstable","displayName"],"mappings":";;;;+BAiBaA;;aAAAA;;;6DAjBU;6BACc;gCACG;mCACG;0CACO;AAa3C,MAAMA,WAAW,WAAW,GAAEC,OAAMC,UAAU,CAAC,CAACC,OAAOC,MAAQ;IACpE,MAAMC,QAAQC,IAAAA,iCAAoB,EAACH,OAAOC;IAC1CG,IAAAA,6CAA0B,EAACF;IAC3B,MAAMG,gBAAgBC,IAAAA,2DAAiC,EAACJ;IACxD,OAAOK,IAAAA,uCAAuB,EAACL,OAAOG;AACxC;AACAR,SAASW,WAAW,GAAG,YACvB,oCAAoC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
/** @jsxRuntime classic */ /** @jsx createElement */ "use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
@@ -6,18 +6,17 @@ Object.defineProperty(exports, "renderTreeItem_unstable", {
|
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: ()=>renderTreeItem_unstable
|
|
8
8
|
});
|
|
9
|
-
const
|
|
10
|
-
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
9
|
+
const _reactJsxRuntime = require("@fluentui/react-jsx-runtime");
|
|
11
10
|
const _reactUtilities = require("@fluentui/react-utilities");
|
|
12
11
|
const _contexts = require("../../contexts");
|
|
13
12
|
const _reactButton = require("@fluentui/react-button");
|
|
14
13
|
const renderTreeItem_unstable = (state, contextValues)=>{
|
|
15
|
-
const { slots , slotProps } = (0, _reactUtilities.
|
|
16
|
-
return /*#__PURE__*/
|
|
14
|
+
const { slots , slotProps } = (0, _reactUtilities.getSlotsNext)(state);
|
|
15
|
+
return /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(_contexts.TreeItemProvider, {
|
|
17
16
|
value: contextValues.treeItem
|
|
18
|
-
}, /*#__PURE__*/
|
|
17
|
+
}, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.root, slotProps.root, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.content, slotProps.content, slots.expandIcon && /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.expandIcon, slotProps.expandIcon), slotProps.content.children, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(_reactButton.ButtonContextProvider, {
|
|
19
18
|
value: contextValues.button
|
|
20
|
-
}, slots.actions && /*#__PURE__*/
|
|
19
|
+
}, slots.actions && /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.actions, slotProps.actions))), state.open && slots.subtree && /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.subtree, slotProps.subtree)));
|
|
21
20
|
}; //# sourceMappingURL=renderTreeItem.js.map
|
|
22
21
|
|
|
23
22
|
//# sourceMappingURL=renderTreeItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../lib/components/TreeItem/renderTreeItem.js"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../lib/components/TreeItem/renderTreeItem.js"],"sourcesContent":["/** @jsxRuntime classic */ /** @jsx createElement */import { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport { TreeItemProvider } from '../../contexts';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n/**\n * Render the final JSX of TreeItem\n */\nexport const renderTreeItem_unstable = (state, contextValues) => {\n const {\n slots,\n slotProps\n } = getSlotsNext(state);\n return /*#__PURE__*/createElement(TreeItemProvider, {\n value: contextValues.treeItem\n }, /*#__PURE__*/createElement(slots.root, slotProps.root, /*#__PURE__*/createElement(slots.content, slotProps.content, slots.expandIcon && /*#__PURE__*/createElement(slots.expandIcon, slotProps.expandIcon), slotProps.content.children, /*#__PURE__*/createElement(ButtonContextProvider, {\n value: contextValues.button\n }, slots.actions && /*#__PURE__*/createElement(slots.actions, slotProps.actions))), state.open && slots.subtree && /*#__PURE__*/createElement(slots.subtree, slotProps.subtree)));\n};\n//# sourceMappingURL=renderTreeItem.js.map"],"names":["renderTreeItem_unstable","state","contextValues","slots","slotProps","getSlotsNext","createElement","TreeItemProvider","value","treeItem","root","content","expandIcon","children","ButtonContextProvider","button","actions","open","subtree"],"mappings":"AAAA,wBAAwB,GAAG,uBAAuB;;;;+BAOrCA;;aAAAA;;iCAPqE;gCACrD;0BACI;6BACK;AAI/B,MAAMA,0BAA0B,CAACC,OAAOC,gBAAkB;IAC/D,MAAM,EACJC,MAAK,EACLC,UAAS,EACV,GAAGC,IAAAA,4BAAY,EAACJ;IACjB,OAAO,WAAW,GAAEK,IAAAA,8BAAa,EAACC,0BAAgB,EAAE;QAClDC,OAAON,cAAcO,QAAQ;IAC/B,GAAG,WAAW,GAAEH,IAAAA,8BAAa,EAACH,MAAMO,IAAI,EAAEN,UAAUM,IAAI,EAAE,WAAW,GAAEJ,IAAAA,8BAAa,EAACH,MAAMQ,OAAO,EAAEP,UAAUO,OAAO,EAAER,MAAMS,UAAU,IAAI,WAAW,GAAEN,IAAAA,8BAAa,EAACH,MAAMS,UAAU,EAAER,UAAUQ,UAAU,GAAGR,UAAUO,OAAO,CAACE,QAAQ,EAAE,WAAW,GAAEP,IAAAA,8BAAa,EAACQ,kCAAqB,EAAE;QAC3RN,OAAON,cAAca,MAAM;IAC7B,GAAGZ,MAAMa,OAAO,IAAI,WAAW,GAAEV,IAAAA,8BAAa,EAACH,MAAMa,OAAO,EAAEZ,UAAUY,OAAO,KAAKf,MAAMgB,IAAI,IAAId,MAAMe,OAAO,IAAI,WAAW,GAAEZ,IAAAA,8BAAa,EAACH,MAAMe,OAAO,EAAEd,UAAUc,OAAO;AAChL,GACA,0CAA0C"}
|
|
@@ -16,15 +16,15 @@ const _keyboardKeys = require("@fluentui/keyboard-keys");
|
|
|
16
16
|
const _reactPortal = require("@fluentui/react-portal");
|
|
17
17
|
const _index = require("../../contexts/index");
|
|
18
18
|
const _tokens = require("../../utils/tokens");
|
|
19
|
-
|
|
19
|
+
function useTreeItem_unstable(props, ref) {
|
|
20
20
|
const [children, subtreeChildren] = _react.Children.toArray(props.children);
|
|
21
21
|
const contextLevel = (0, _index.useTreeContext_unstable)((ctx)=>ctx.level);
|
|
22
|
-
const
|
|
22
|
+
const id = (0, _reactUtilities.useId)('fui-TreeItem-', props.id);
|
|
23
|
+
const { content , subtree , expandIcon , leaf: isLeaf = subtreeChildren === undefined , actions , as ='div' , onClick , onKeyDown , ['aria-level']: level = contextLevel , value =id , ...rest } = props;
|
|
23
24
|
const requestOpenChange = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestOpenChange);
|
|
24
25
|
const requestNavigation = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestNavigation);
|
|
25
|
-
const id = (0, _reactUtilities.useId)('fui-TreeItem-', props.id);
|
|
26
26
|
const isBranch = !isLeaf;
|
|
27
|
-
const open = (0, _index.useTreeContext_unstable)((ctx)=>isBranch && ctx.openItems.has(
|
|
27
|
+
const open = (0, _index.useTreeContext_unstable)((ctx)=>isBranch && ctx.openItems.has(value));
|
|
28
28
|
const { dir , targetDocument } = (0, _reactSharedContexts.useFluent_unstable)();
|
|
29
29
|
const expandIconRotation = open ? 90 : dir !== 'rtl' ? 0 : 180;
|
|
30
30
|
const actionsRef = _react.useRef(null);
|
|
@@ -34,6 +34,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
34
34
|
if (!open && isBranch) {
|
|
35
35
|
return requestOpenChange({
|
|
36
36
|
event,
|
|
37
|
+
value,
|
|
37
38
|
open: true,
|
|
38
39
|
type: _tokens.treeDataTypes.arrowRight,
|
|
39
40
|
target: event.currentTarget
|
|
@@ -42,6 +43,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
42
43
|
if (open && isBranch) {
|
|
43
44
|
return requestNavigation({
|
|
44
45
|
event,
|
|
46
|
+
value,
|
|
45
47
|
type: _tokens.treeDataTypes.arrowRight,
|
|
46
48
|
target: event.currentTarget
|
|
47
49
|
});
|
|
@@ -51,6 +53,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
51
53
|
if (open && isBranch) {
|
|
52
54
|
return requestOpenChange({
|
|
53
55
|
event,
|
|
56
|
+
value,
|
|
54
57
|
open: false,
|
|
55
58
|
type: _tokens.treeDataTypes.arrowLeft,
|
|
56
59
|
target: event.currentTarget
|
|
@@ -59,6 +62,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
59
62
|
if (!open && level > 1) {
|
|
60
63
|
return requestNavigation({
|
|
61
64
|
event,
|
|
65
|
+
value,
|
|
62
66
|
target: event.currentTarget,
|
|
63
67
|
type: _tokens.treeDataTypes.arrowLeft
|
|
64
68
|
});
|
|
@@ -67,6 +71,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
67
71
|
const handleEnter = (event)=>{
|
|
68
72
|
requestOpenChange({
|
|
69
73
|
event,
|
|
74
|
+
value,
|
|
70
75
|
open: isLeaf ? open : !open,
|
|
71
76
|
type: _tokens.treeDataTypes.enter,
|
|
72
77
|
target: event.currentTarget
|
|
@@ -85,12 +90,14 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
85
90
|
const isFromExpandIcon = expandIconRef.current && (0, _reactPortal.elementContains)(expandIconRef.current, event.target);
|
|
86
91
|
requestOpenChange({
|
|
87
92
|
event,
|
|
93
|
+
value,
|
|
88
94
|
open: isLeaf ? open : !open,
|
|
89
95
|
type: isFromExpandIcon ? _tokens.treeDataTypes.expandIconClick : _tokens.treeDataTypes.click,
|
|
90
96
|
target: event.currentTarget
|
|
91
97
|
});
|
|
92
98
|
requestNavigation({
|
|
93
99
|
event,
|
|
100
|
+
value,
|
|
94
101
|
target: event.currentTarget,
|
|
95
102
|
type: _tokens.treeDataTypes.click
|
|
96
103
|
});
|
|
@@ -113,24 +120,28 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
113
120
|
case _keyboardKeys.End:
|
|
114
121
|
return requestNavigation({
|
|
115
122
|
event,
|
|
123
|
+
value,
|
|
116
124
|
type: _tokens.treeDataTypes.end,
|
|
117
125
|
target: event.currentTarget
|
|
118
126
|
});
|
|
119
127
|
case _keyboardKeys.Home:
|
|
120
128
|
return requestNavigation({
|
|
121
129
|
event,
|
|
130
|
+
value,
|
|
122
131
|
type: _tokens.treeDataTypes.home,
|
|
123
132
|
target: event.currentTarget
|
|
124
133
|
});
|
|
125
134
|
case _keyboardKeys.ArrowUp:
|
|
126
135
|
return requestNavigation({
|
|
127
136
|
event,
|
|
137
|
+
value,
|
|
128
138
|
type: _tokens.treeDataTypes.arrowUp,
|
|
129
139
|
target: event.currentTarget
|
|
130
140
|
});
|
|
131
141
|
case _keyboardKeys.ArrowDown:
|
|
132
142
|
return requestNavigation({
|
|
133
143
|
event,
|
|
144
|
+
value,
|
|
134
145
|
type: _tokens.treeDataTypes.arrowDown,
|
|
135
146
|
target: event.currentTarget
|
|
136
147
|
});
|
|
@@ -139,6 +150,7 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
139
150
|
if (isTypeAheadCharacter) {
|
|
140
151
|
return requestNavigation({
|
|
141
152
|
event,
|
|
153
|
+
value,
|
|
142
154
|
target: event.currentTarget,
|
|
143
155
|
type: _tokens.treeDataTypes.typeAhead
|
|
144
156
|
});
|
|
@@ -232,6 +244,6 @@ const useTreeItem_unstable = (props, ref)=>{
|
|
|
232
244
|
}
|
|
233
245
|
})
|
|
234
246
|
};
|
|
235
|
-
}
|
|
247
|
+
} //# sourceMappingURL=useTreeItem.js.map
|
|
236
248
|
|
|
237
249
|
//# sourceMappingURL=useTreeItem.js.map
|