@fluentui/react-tree 9.0.0-beta.5 → 9.0.0-beta.6
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/.swcrc +30 -0
- package/CHANGELOG.json +100 -1
- package/CHANGELOG.md +25 -2
- package/lib/Tree.js.map +1 -1
- package/lib/TreeItem.js.map +1 -1
- package/lib/TreeItemLayout.js.map +1 -1
- package/lib/TreeItemPersonaLayout.js.map +1 -1
- package/lib/components/Tree/Tree.js.map +1 -1
- package/lib/components/Tree/Tree.types.js +1 -1
- package/lib/components/Tree/Tree.types.js.map +1 -1
- package/lib/components/Tree/index.js.map +1 -1
- package/lib/components/Tree/renderTree.js +1 -3
- package/lib/components/Tree/renderTree.js.map +1 -1
- package/lib/components/Tree/useTree.js +5 -4
- package/lib/components/Tree/useTree.js.map +1 -1
- package/lib/components/Tree/useTreeContextValues.js +3 -3
- package/lib/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib/components/Tree/useTreeStyles.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.js.map +1 -1
- package/lib/components/TreeItem/TreeItem.types.js +1 -1
- package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib/components/TreeItem/index.js.map +1 -1
- package/lib/components/TreeItem/renderTreeItem.js +2 -12
- package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib/components/TreeItem/useTreeItemStyles.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib/components/TreeItemLayout/index.js.map +1 -1
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -9
- package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayout.js +1 -0
- package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +2 -14
- package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +1 -0
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
- package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib/contexts/index.js.map +1 -1
- package/lib/contexts/treeContext.js +1 -2
- package/lib/contexts/treeContext.js.map +1 -1
- package/lib/contexts/treeItemContext.js +2 -4
- package/lib/contexts/treeItemContext.js.map +1 -1
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useFlatTree.js +2 -4
- package/lib/hooks/useFlatTree.js.map +1 -1
- package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib/hooks/useHTMLElementWalker.js +5 -5
- package/lib/hooks/useHTMLElementWalker.js.map +1 -1
- package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib/hooks/useOpenItemsState.js.map +1 -1
- package/lib/hooks/useRovingTabIndexes.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/ImmutableSet.js.map +1 -1
- package/lib/utils/assert.js +1 -0
- package/lib/utils/assert.js.map +1 -1
- package/lib/utils/createUnfilteredFlatTree.js +3 -4
- package/lib/utils/createUnfilteredFlatTree.js.map +1 -1
- package/lib/utils/createVisibleFlatTree.js +10 -7
- package/lib/utils/createVisibleFlatTree.js.map +1 -1
- package/lib/utils/flattenTree.js +3 -4
- package/lib/utils/flattenTree.js.map +1 -1
- package/lib/utils/nextTypeAheadElement.js +2 -2
- package/lib/utils/nextTypeAheadElement.js.map +1 -1
- package/lib/utils/normalizeOpenItems.js.map +1 -1
- package/lib/utils/tokens.js.map +1 -1
- package/lib/utils/treeItemFilter.js.map +1 -1
- package/lib-commonjs/Tree.js +5 -4
- package/lib-commonjs/Tree.js.map +1 -1
- package/lib-commonjs/TreeItem.js +5 -4
- package/lib-commonjs/TreeItem.js.map +1 -1
- package/lib-commonjs/TreeItemLayout.js +5 -4
- package/lib-commonjs/TreeItemLayout.js.map +1 -1
- package/lib-commonjs/TreeItemPersonaLayout.js +5 -4
- package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/Tree/Tree.js +18 -22
- package/lib-commonjs/components/Tree/Tree.js.map +1 -1
- package/lib-commonjs/components/Tree/Tree.types.js +5 -2
- package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
- package/lib-commonjs/components/Tree/index.js +10 -9
- package/lib-commonjs/components/Tree/index.js.map +1 -1
- package/lib-commonjs/components/Tree/renderTree.js +16 -18
- package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
- package/lib-commonjs/components/Tree/useTree.js +88 -101
- package/lib-commonjs/components/Tree/useTree.js.map +1 -1
- package/lib-commonjs/components/Tree/useTreeContextValues.js +22 -28
- package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
- package/lib-commonjs/components/Tree/useTreeStyles.js +31 -20
- package/lib-commonjs/components/Tree/useTreeStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItem/TreeItem.js +18 -17
- package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/TreeItem.types.js +5 -3
- package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
- package/lib-commonjs/components/TreeItem/index.js +9 -8
- package/lib-commonjs/components/TreeItem/index.js.map +1 -1
- package/lib-commonjs/components/TreeItem/renderTreeItem.js +19 -32
- package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItem.js +229 -249
- package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +24 -20
- package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +353 -188
- package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +16 -15
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +3 -2
- package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/index.js +9 -8
- package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -27
- package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +42 -52
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +126 -88
- package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +18 -17
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +3 -2
- package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/index.js +9 -8
- package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -34
- package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +46 -61
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +18 -15
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +165 -101
- package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
- package/lib-commonjs/contexts/index.js +6 -5
- package/lib-commonjs/contexts/index.js.map +1 -1
- package/lib-commonjs/contexts/treeContext.js +25 -17
- package/lib-commonjs/contexts/treeContext.js.map +1 -1
- package/lib-commonjs/contexts/treeItemContext.js +20 -12
- package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
- package/lib-commonjs/hooks/index.js +7 -6
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTree.js +45 -51
- package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
- package/lib-commonjs/hooks/useFlatTreeNavigation.js +70 -69
- package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useHTMLElementWalker.js +94 -83
- package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
- package/lib-commonjs/hooks/useNestedTreeNavigation.js +61 -58
- package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
- package/lib-commonjs/hooks/useOpenItemsState.js +32 -22
- package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
- package/lib-commonjs/hooks/useRovingTabIndexes.js +56 -53
- package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
- package/lib-commonjs/index.js +48 -180
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/utils/ImmutableSet.js +39 -38
- package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
- package/lib-commonjs/utils/assert.js +13 -9
- package/lib-commonjs/utils/assert.js.map +1 -1
- package/lib-commonjs/utils/createUnfilteredFlatTree.js +84 -75
- package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +1 -1
- package/lib-commonjs/utils/createVisibleFlatTree.js +77 -78
- package/lib-commonjs/utils/createVisibleFlatTree.js.map +1 -1
- package/lib-commonjs/utils/flattenTree.js +25 -29
- package/lib-commonjs/utils/flattenTree.js.map +1 -1
- package/lib-commonjs/utils/nextTypeAheadElement.js +18 -16
- package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
- package/lib-commonjs/utils/normalizeOpenItems.js +13 -9
- package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
- package/lib-commonjs/utils/tokens.js +30 -20
- package/lib-commonjs/utils/tokens.js.map +1 -1
- package/lib-commonjs/utils/treeItemFilter.js +9 -7
- package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
- package/package.json +19 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isHTMLElement","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","FILTER_REJECT","filterResult","
|
|
1
|
+
{"version":3,"names":["isHTMLElement","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","FILTER_REJECT","filterResult","_temporaryFilter","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","useHTMLElementWalkerRef","walkerRef","useRef","rootRefCallback","element1","current"],"sources":["../../src/hooks/useHTMLElementWalker.ts"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nimport * as React from 'react';\n\nexport interface HTMLElementWalker {\n readonly root: HTMLElement;\n currentElement: HTMLElement;\n firstChild(filter?: HTMLElementFilter): HTMLElement | null;\n lastChild(filter?: HTMLElementFilter): HTMLElement | null;\n nextElement(filter?: HTMLElementFilter): HTMLElement | null;\n nextSibling(filter?: HTMLElementFilter): HTMLElement | null;\n parentElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousSibling(filter?: HTMLElementFilter): HTMLElement | null;\n}\n\nexport type HTMLElementFilter = (element: HTMLElement) => number;\n\nexport function createHTMLElementWalker(\n root: HTMLElement,\n filter: HTMLElementFilter = () => NodeFilter.FILTER_ACCEPT,\n): HTMLElementWalker {\n let temporaryFilter: HTMLElementFilter | undefined;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n return filterResult === NodeFilter.FILTER_ACCEPT ? temporaryFilter?.(node) ?? filterResult : filterResult;\n },\n });\n return {\n get root() {\n return treeWalker.root as HTMLElement;\n },\n get currentElement() {\n return treeWalker.currentNode as HTMLElement;\n },\n set currentElement(element) {\n treeWalker.currentNode = element;\n },\n firstChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n lastChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n parentElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n };\n}\n\nexport const useHTMLElementWalkerRef = (filter?: HTMLElementFilter) => {\n const walkerRef = React.useRef<HTMLElementWalker>();\n\n const rootRefCallback = (element?: HTMLElement) => {\n if (!element) {\n walkerRef.current = undefined;\n return;\n }\n walkerRef.current = createHTMLElementWalker(element, filter);\n };\n return [walkerRef as React.RefObject<HTMLElementWalker>, rootRefCallback as React.Ref<HTMLElement>] as const;\n};\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ;AAC9B,YAAYC,KAAA,MAAW;AAgBvB,OAAO,SAASC,wBACdC,IAAiB,EACjBC,MAAA,GAA4BA,CAAA,KAAMC,UAAA,CAAWC,aAAa,EACvC;EACnB,IAAIC,eAAA;EACJ,MAAMC,UAAA,GAAaC,QAAA,CAASC,gBAAgB,CAACP,IAAA,EAAME,UAAA,CAAWM,YAAY,EAAE;IAC1EC,WAAWC,IAAU,EAAE;MACrB,IAAI,CAACb,aAAA,CAAca,IAAA,GAAO;QACxB,OAAOR,UAAA,CAAWS,aAAa;MACjC;MACA,MAAMC,YAAA,GAAeX,MAAA,CAAOS,IAAA;UACuBG,gBAAA;MAAnD,OAAOD,YAAA,KAAiBV,UAAA,CAAWC,aAAa,GAAG,CAAAU,gBAAA,GAAAT,eAAA,aAAAA,eAAA,uBAAAA,eAAA,CAAkBM,IAAA,eAAlBG,gBAAA,cAAAA,gBAAA,GAA2BD,YAAY,GAAGA,YAAY;IAC3G;EACF;EACA,OAAO;IACL,IAAIZ,KAAA,EAAO;MACT,OAAOK,UAAA,CAAWL,IAAI;IACxB;IACA,IAAIc,eAAA,EAAiB;MACnB,OAAOT,UAAA,CAAWU,WAAW;IAC/B;IACA,IAAID,eAAeE,OAAA,EAAS;MAC1BX,UAAA,CAAWU,WAAW,GAAGC,OAAA;IAC3B;IACAC,UAAA,EAAYC,WAAA,IAAe;MACzBd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWY,UAAU;MACpCb,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAE,SAAA,EAAWH,WAAA,IAAe;MACxBd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWgB,SAAS;MACnCjB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAG,WAAA,EAAaJ,WAAA,IAAe;MAC1Bd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWkB,QAAQ;MAClCnB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAK,WAAA,EAAaN,WAAA,IAAe;MAC1Bd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWmB,WAAW;MACrCpB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAM,aAAA,EAAeP,WAAA,IAAe;MAC5Bd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWqB,UAAU;MACpCtB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAQ,eAAA,EAAiBT,WAAA,IAAe;MAC9Bd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWuB,YAAY;MACtCxB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;IACAU,eAAA,EAAiBX,WAAA,IAAe;MAC9Bd,eAAA,GAAkBc,WAAA;MAClB,MAAMC,MAAA,GAASd,UAAA,CAAWwB,eAAe;MACzCzB,eAAA,GAAkBgB,SAAA;MAClB,OAAOD,MAAA;IACT;EACF;AACF;AAEA,OAAO,MAAMW,uBAAA,GAA2B7B,MAAA,IAA+B;EACrE,MAAM8B,SAAA,GAAYjC,KAAA,CAAMkC,MAAM;EAE9B,MAAMC,eAAA,GAAmBC,QAAA,IAA0B;IACjD,IAAI,CAACA,QAAA,EAAS;MACZH,SAAA,CAAUI,OAAO,GAAGf,SAAA;MACpB;IACF;IACAW,SAAA,CAAUI,OAAO,GAAGpC,uBAAA,CAAwBmC,QAAA,EAASjC,MAAA;EACvD;EACA,OAAO,CAAC8B,SAAA,EAAiDE,eAAA,CAA0C;AACrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useMergedRefs","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":["
|
|
1
|
+
{"version":3,"names":["useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useMergedRefs","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 { 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';\nimport { useMergedRefs } from '@fluentui/react-utilities';\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":"AACA,SAA4BA,uBAAuB,QAAQ;AAC3D,SAASC,oBAAoB,QAAQ;AACrC,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,aAAa,QAAQ;AAE9B,OAAO,SAASC,wBAAA,EAA0B;EACxC,MAAM,CAAC;IAAEC;EAAI,CAAE,EAAEC,aAAA,CAAc,GAAGJ,iBAAA,CAAkBD,cAAA;EACpD,MAAM,CAACM,SAAA,EAAWC,OAAA,CAAQ,GAAGV,uBAAA,CAAwBG,cAAA;EAErD,MAAMQ,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,KAAKb,aAAA,CAAcc,KAAK;QACtB,OAAOJ,IAAA,CAAKK,MAAM;MACpB,KAAKf,aAAA,CAAcgB,SAAS;QAC1BJ,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOhB,oBAAA,CAAqBa,cAAA,EAAgBF,IAAA,CAAKQ,KAAK,CAACC,GAAG;MAC5D,KAAKnB,aAAA,CAAcoB,SAAS;QAC1BR,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeS,aAAa;MACrC,KAAKrB,aAAA,CAAcsB,UAAU;QAC3BV,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeW,UAAU;MAClC,KAAKvB,aAAA,CAAcwB,GAAG;QACpBZ,cAAA,CAAeK,cAAc,GAAGL,cAAA,CAAea,IAAI;QACnD,OAAOC,kBAAA,CAAmBd,cAAA;MAC5B,KAAKZ,aAAA,CAAc2B,IAAI;QACrBf,cAAA,CAAeK,cAAc,GAAGL,cAAA,CAAea,IAAI;QACnD,OAAOb,cAAA,CAAeW,UAAU;MAClC,KAAKvB,aAAA,CAAc4B,SAAS;QAC1BhB,cAAA,CAAeK,cAAc,GAAGP,IAAA,CAAKK,MAAM;QAC3C,OAAOH,cAAA,CAAeiB,WAAW;MACnC,KAAK7B,aAAA,CAAc8B,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,EAAU7B,aAAA,CAAcK,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"}
|
|
@@ -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","id","target","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"sources":["
|
|
1
|
+
{"version":3,"names":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","previousOpenItems","id","target","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"sources":["../../src/hooks/useOpenItemsState.ts"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { TreeItemId, TreeOpenChangeData, TreeProps } from '../Tree';\nimport { createImmutableSet, emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\n\nexport function useOpenItemsState(props: Pick<TreeProps, '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) =>\n setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)),\n );\n return [openItems, updateOpenItems] as const;\n}\n\nfunction createNextOpenItems(\n data: TreeOpenChangeData,\n previousOpenItems: ImmutableSet<TreeItemId>,\n): ImmutableSet<TreeItemId> {\n const id = data.target.id;\n const previousOpenItemsHasId = previousOpenItems.has(id);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(id) : nextOpenItems.delete(id);\n}\n"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,gBAAgB,QAAQ;AACvD,YAAYC,KAAA,MAAW;AAEvB,SAASC,kBAAkB,EAAEC,iBAAiB,QAAsB;AAEpE,OAAO,SAASC,kBAAkBC,KAAwD,EAAE;EAC1F,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,IAAwB,EACxBG,iBAA2C,EACjB;EAC1B,MAAMC,EAAA,GAAKJ,IAAA,CAAKK,MAAM,CAACD,EAAE;EACzB,MAAME,sBAAA,GAAyBH,iBAAA,CAAkBI,GAAG,CAACH,EAAA;EACrD,IAAIJ,IAAA,CAAKQ,IAAI,GAAGF,sBAAA,GAAyB,CAACA,sBAAsB,EAAE;IAChE,OAAOH,iBAAA;EACT;EACA,MAAMM,aAAA,GAAgBrB,kBAAA,CAAmBe,iBAAA;EACzC,OAAOH,IAAA,CAAKQ,IAAI,GAAGC,aAAA,CAAcC,GAAG,CAACN,EAAA,IAAMK,aAAA,CAAcE,MAAM,CAACP,EAAA,CAAG;AACrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMergedRefs","React","useHTMLElementWalkerRef","useRovingTabIndex","filter","currentElementRef","useRef","walkerRef","rootRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus"],"sources":["
|
|
1
|
+
{"version":3,"names":["useMergedRefs","React","useHTMLElementWalkerRef","useRovingTabIndex","filter","currentElementRef","useRef","walkerRef","rootRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus"],"sources":["../../src/hooks/useRovingTabIndexes.ts"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { HTMLElementFilter, useHTMLElementWalkerRef } from './useHTMLElementWalker';\n\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */\nexport function useRovingTabIndex(filter?: HTMLElementFilter) {\n const currentElementRef = React.useRef<HTMLElement>();\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);\n\n const rootRefCallback = (element?: HTMLElement) => {\n if (!element) {\n return;\n }\n reset();\n };\n\n function reset() {\n if (!walkerRef.current) {\n return;\n }\n const walker = walkerRef.current;\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild(element =>\n element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP,\n );\n walker.currentElement = walker.root;\n tabbableChild ??= walker.firstChild();\n if (!tabbableChild) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('useRovingTabIndexes: internal error, no tabbable element was found');\n }\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement: HTMLElement | null = null;\n while ((nextElement = walker.nextElement()) && nextElement !== tabbableChild) {\n nextElement.tabIndex = -1;\n }\n }\n function rove(nextElement: HTMLElement) {\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }\n\n return [\n {\n rove,\n reset,\n },\n useMergedRefs(rootRef, rootRefCallback) as React.Ref<HTMLElement>,\n ] as const;\n}\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ;AAC9B,YAAYC,KAAA,MAAW;AACvB,SAA4BC,uBAAuB,QAAQ;AAE3D;;;AAGA,OAAO,SAASC,kBAAkBC,MAA0B,EAAE;EAC5D,MAAMC,iBAAA,GAAoBJ,KAAA,CAAMK,MAAM;EACtC,MAAM,CAACC,SAAA,EAAWC,OAAA,CAAQ,GAAGN,uBAAA,CAAwBE,MAAA;EAErD,MAAMK,eAAA,GAAmBC,OAAA,IAA0B;IACjD,IAAI,CAACA,OAAA,EAAS;MACZ;IACF;IACAC,KAAA;EACF;EAEA,SAASA,MAAA,EAAQ;IACf,IAAI,CAACJ,SAAA,CAAUK,OAAO,EAAE;MACtB;IACF;IACA,MAAMC,MAAA,GAASN,SAAA,CAAUK,OAAO;IAChCC,MAAA,CAAOC,cAAc,GAAGD,MAAA,CAAOE,IAAI;IACnC,IAAIC,aAAA,GAAgBH,MAAA,CAAOI,UAAU,CAACP,OAAA,IACpCA,OAAA,CAAQQ,QAAQ,KAAK,IAAIC,UAAA,CAAWC,aAAa,GAAGD,UAAA,CAAWE,WAAW;IAE5ER,MAAA,CAAOC,cAAc,GAAGD,MAAA,CAAOE,IAAI;IACnCC,aAAA,aAAAA,aAAA,cAAAA,aAAA,GAAAA,aAAA,GAAkBH,MAAA,CAAOI,UAAU,EAAE;IACrC,IAAI,CAACD,aAAA,EAAe;MAClB,IAAIM,OAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C;QACAC,OAAA,CAAQC,IAAI,CAAC;MACf;MACA;IACF;IACAV,aAAA,CAAcE,QAAQ,GAAG;IACzBb,iBAAA,CAAkBO,OAAO,GAAGI,aAAA;IAC5B,IAAIW,WAAA,GAAkC,IAAI;IAC1C,OAAO,CAACA,WAAA,GAAcd,MAAA,CAAOc,WAAW,EAAC,KAAMA,WAAA,KAAgBX,aAAA,EAAe;MAC5EW,WAAA,CAAYT,QAAQ,GAAG,CAAC;IAC1B;EACF;EACA,SAASU,KAAKD,WAAwB,EAAE;IACtC,IAAI,CAACtB,iBAAA,CAAkBO,OAAO,EAAE;MAC9B;IACF;IACAP,iBAAA,CAAkBO,OAAO,CAACM,QAAQ,GAAG,CAAC;IACtCS,WAAA,CAAYT,QAAQ,GAAG;IACvBS,WAAA,CAAYE,KAAK;IACjBxB,iBAAA,CAAkBO,OAAO,GAAGe,WAAA;EAC9B;EAEA,OAAO,CACL;IACEC,IAAA;IACAjB;EACF,GACAX,aAAA,CAAcQ,OAAA,EAASC,eAAA,EACxB;AACH"}
|
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/
|
|
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 TreeItemId,\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;AAYP,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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["emptyImmutableSet","createImmutableSet","iterable","internalSet","Set","dangerouslyCreateImmutableSet","size","add","value","nextSet","clear","delete","has","Symbol","iterator"],"sources":["
|
|
1
|
+
{"version":3,"names":["emptyImmutableSet","createImmutableSet","iterable","internalSet","Set","dangerouslyCreateImmutableSet","size","add","value","nextSet","clear","delete","has","Symbol","iterator"],"sources":["../../src/utils/ImmutableSet.ts"],"sourcesContent":["export interface ImmutableSet<Value> {\n /**\n * The number of (unique) elements in a ImmutableSet.\n */\n readonly size: number;\n /**\n * Creates a new ImmutableSet containing all previous element plus the one provided as argument\n * @param value - new value to be included in the new ImmutableSet instance\n */\n add(value: Value): ImmutableSet<Value>;\n /**\n * Returns a reference to ImmutableSet.emptySet\n */\n clear(): ImmutableSet<Value>;\n /**\n * Creates a new ImmutableSet with the original items and removes a specified value from the new ImmutableSet.\n */\n delete(value: Value): ImmutableSet<Value>;\n /**\n * @returns a boolean indicating whether an element with the specified value exists in the ImmutableSet or not.\n */\n has(value: Value): boolean;\n /** Iterates over values in the ImmutableSet. */\n [Symbol.iterator](): IterableIterator<Value>;\n}\n\nexport const emptyImmutableSet = createImmutableSet<never>();\n\n/**\n * properly creates an ImmutableSet instance from an iterable\n */\nexport function createImmutableSet<Value>(iterable?: Iterable<Value>): ImmutableSet<Value> {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */\nexport function dangerouslyCreateImmutableSet<Value>(internalSet: Set<Value>): ImmutableSet<Value> {\n return {\n size: internalSet.size,\n add(value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear() {\n return emptyImmutableSet;\n },\n delete(value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has(value) {\n return internalSet.has(value);\n },\n [Symbol.iterator]() {\n return internalSet[Symbol.iterator]();\n },\n };\n}\n"],"mappings":"AA0BA,OAAO,MAAMA,iBAAA,gBAAoBC,kBAAA;AAEjC;;;AAGA,OAAO,SAASA,mBAA0BC,QAA0B,EAAuB;EACzF,MAAMC,WAAA,GAAc,IAAIC,GAAA,CAAIF,QAAA;EAC5B,OAAOG,6BAAA,CAA8BF,WAAA;AACvC;AACA;;;;AAIA,OAAO,SAASE,8BAAqCF,WAAuB,EAAuB;EACjG,OAAO;IACLG,IAAA,EAAMH,WAAA,CAAYG,IAAI;IACtBC,IAAIC,KAAK,EAAE;MACT,MAAMC,OAAA,GAAU,IAAIL,GAAA,CAAID,WAAA;MACxBM,OAAA,CAAQF,GAAG,CAACC,KAAA;MACZ,OAAOH,6BAAA,CAA8BI,OAAA;IACvC;IACAC,MAAA,EAAQ;MACN,OAAOV,iBAAA;IACT;IACAW,OAAOH,KAAK,EAAE;MACZ,MAAMC,OAAA,GAAU,IAAIL,GAAA,CAAID,WAAA;MACxBM,OAAA,CAAQE,MAAM,CAACH,KAAA;MACf,OAAOH,6BAAA,CAA8BI,OAAA;IACvC;IACAG,IAAIJ,KAAK,EAAE;MACT,OAAOL,WAAA,CAAYS,GAAG,CAACJ,KAAA;IACzB;IACA,CAACK,MAAA,CAAOC,QAAQ,IAAI;MAClB,OAAOX,WAAW,CAACU,MAAA,CAAOC,QAAQ,CAAC;IACrC;EACF;AACF"}
|
package/lib/utils/assert.js
CHANGED
package/lib/utils/assert.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assertIsDefinedRef","refObject","msg","current","undefined","process","env","NODE_ENV","TypeError"],"sources":["
|
|
1
|
+
{"version":3,"names":["React","assertIsDefinedRef","refObject","msg","current","undefined","process","env","NODE_ENV","TypeError"],"sources":["../../src/utils/assert.ts"],"sourcesContent":["import * as React from 'react';\n\nexport function assertIsDefinedRef<V>(\n refObject: React.RefObject<V | null | undefined>,\n msg = `assertIsDefinedRef: reference not properly defined ${refObject}`,\n): asserts refObject is React.MutableRefObject<V> {\n // eslint-disable-next-line eqeqeq\n if (refObject.current == undefined && process.env.NODE_ENV === 'development') {\n throw new TypeError(msg);\n }\n}\n"],"mappings":"AAAA,YAAYA,KAAA,MAAW;AAEvB,OAAO,SAASC,mBACdC,SAAgD,EAChDC,GAAA,GAAO,sDAAqDD,SAAU,EAAC,EACvB;EAChD;EACA,IAAIA,SAAA,CAAUE,OAAO,IAAIC,SAAA,IAAaC,OAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;IAC5E,MAAM,IAAIC,SAAA,CAAUN,GAAA;EACtB;AACF"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* creates a list of flat tree items
|
|
3
3
|
* and provides a map to access each item by id
|
|
4
|
-
*/
|
|
5
|
-
export function createUnfilteredFlatTree(flatTreeItemProps) {
|
|
6
|
-
var _a;
|
|
4
|
+
*/export function createUnfilteredFlatTree(flatTreeItemProps) {
|
|
7
5
|
const root = createRootFlatTreeItem();
|
|
8
6
|
const itemsPerId = new Map([[root.id, root]]);
|
|
9
7
|
const items = [];
|
|
@@ -22,7 +20,8 @@ export function createUnfilteredFlatTree(flatTreeItemProps) {
|
|
|
22
20
|
break;
|
|
23
21
|
}
|
|
24
22
|
const isLeaf = (nextItemProps === null || nextItemProps === void 0 ? void 0 : nextItemProps.parentId) !== treeItemProps.id;
|
|
25
|
-
|
|
23
|
+
var _currentParent_level;
|
|
24
|
+
const currentLevel = ((_currentParent_level = currentParent.level) !== null && _currentParent_level !== void 0 ? _currentParent_level : 0) + 1;
|
|
26
25
|
const currentChildrenSize = ++currentParent.childrenSize;
|
|
27
26
|
const flatTreeItem = {
|
|
28
27
|
id: treeItemProps.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createUnfilteredFlatTree","flatTreeItemProps","root","createRootFlatTreeItem","itemsPerId","Map","id","items","index","length","parentId","flatTreeRootParentId","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","isLeaf","
|
|
1
|
+
{"version":3,"names":["createUnfilteredFlatTree","flatTreeItemProps","root","createRootFlatTreeItem","itemsPerId","Map","id","items","index","length","parentId","flatTreeRootParentId","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","isLeaf","_currentParent_level","currentLevel","level","currentChildrenSize","childrenSize","flatTreeItem","getTreeItemProps","leaf","set","push"],"sources":["../../src/utils/createUnfilteredFlatTree.ts"],"sourcesContent":["import { FlatTreeItem, FlatTreeItemProps } from '../hooks/useFlatTree';\n\n/**\n * @internal\n */\nexport type UnfilteredFlatTree = {\n items: FlatTreeItem[];\n itemsPerId: Map<string, FlatTreeItem>;\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 createUnfilteredFlatTree(flatTreeItemProps: FlatTreeItemProps[]): UnfilteredFlatTree {\n const root = createRootFlatTreeItem();\n const itemsPerId = new Map<string, FlatTreeItem>([[root.id, root]]);\n const items: FlatTreeItem[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId = flatTreeRootParentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps = flatTreeItemProps[index + 1] as FlatTreeItemProps | undefined;\n const currentParent = itemsPerId.get(parentId);\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} not properly initialized, make sure provided items are organized`,\n );\n }\n break;\n }\n const isLeaf = nextItemProps?.parentId !== treeItemProps.id;\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n\n const flatTreeItem: FlatTreeItem = {\n id: treeItemProps.id,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n leaf: isLeaf,\n }),\n level: currentLevel,\n parentId,\n childrenSize: 0,\n index: -1,\n };\n itemsPerId.set(flatTreeItem.id, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n return { items, itemsPerId };\n}\n\nexport const flatTreeRootParentId = '__fuiFlatTreeRoot';\n\nfunction createRootFlatTreeItem(): FlatTreeItem {\n return {\n id: flatTreeRootParentId,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV === 'development') {\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 { id: flatTreeRootParentId, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, leaf: true };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV === 'development') {\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"],"mappings":"AAUA;;;GAIA,OAAO,SAASA,yBAAyBC,iBAAsC,EAAsB;EACnG,MAAMC,IAAA,GAAOC,sBAAA;EACb,MAAMC,UAAA,GAAa,IAAIC,GAAA,CAA0B,CAAC,CAACH,IAAA,CAAKI,EAAE,EAAEJ,IAAA,CAAK,CAAC;EAClE,MAAMK,KAAA,GAAwB,EAAE;EAEhC,KAAK,IAAIC,KAAA,GAAQ,GAAGA,KAAA,GAAQP,iBAAA,CAAkBQ,MAAM,EAAED,KAAA,IAAS;IAC7D,MAAM;MAAEE,QAAA,GAAWC,oBAAA;MAAsB,GAAGC;IAAA,CAAe,GAAGX,iBAAiB,CAACO,KAAA,CAAM;IAEtF,MAAMK,aAAA,GAAgBZ,iBAAiB,CAACO,KAAA,GAAQ,EAAE;IAClD,MAAMM,aAAA,GAAgBV,UAAA,CAAWW,GAAG,CAACL,QAAA;IACrC,IAAI,CAACI,aAAA,EAAe;MAClB,IAAIE,OAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C;QACAC,OAAA,CAAQC,KAAK,CACV,qBAAoBnB,iBAAiB,CAACO,KAAA,CAAM,CAACF,EAAG,mEAAkE;MAEvH;MACA;IACF;IACA,MAAMe,MAAA,GAAS,CAAAR,aAAA,aAAAA,aAAA,uBAAAA,aAAA,CAAeH,QAAQ,MAAKE,aAAA,CAAcN,EAAE;QACrCgB,oBAAA;IAAtB,MAAMC,YAAA,GAAe,CAAC,CAAAD,oBAAA,GAAAR,aAAA,CAAcU,KAAK,cAAnBF,oBAAA,cAAAA,oBAAA,GAAuB,CAAC,IAAI;IAClD,MAAMG,mBAAA,GAAsB,EAAEX,aAAA,CAAcY,YAAY;IAExD,MAAMC,YAAA,GAA6B;MACjCrB,EAAA,EAAIM,aAAA,CAAcN,EAAE;MACpBsB,gBAAA,EAAkBA,CAAA,MAAO;QACvB,GAAGhB,aAAa;QAChB,cAAcW,YAAA;QACd,iBAAiBE,mBAAA;QACjB,gBAAgBX,aAAA,CAAcY,YAAY;QAC1CG,IAAA,EAAMR;MACR;MACAG,KAAA,EAAOD,YAAA;MACPb,QAAA;MACAgB,YAAA,EAAc;MACdlB,KAAA,EAAO,CAAC;IACV;IACAJ,UAAA,CAAW0B,GAAG,CAACH,YAAA,CAAarB,EAAE,EAAEqB,YAAA;IAChCpB,KAAA,CAAMwB,IAAI,CAACJ,YAAA;EACb;EAEA,OAAO;IAAEpB,KAAA;IAAOH;EAAW;AAC7B;AAEA,OAAO,MAAMO,oBAAA,GAAuB;AAEpC,SAASR,uBAAA,EAAuC;EAC9C,OAAO;IACLG,EAAA,EAAIK,oBAAA;IACJiB,gBAAA,EAAkBA,CAAA,KAAM;MACtB,IAAIZ,OAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C;QACAC,OAAA,CAAQC,KAAK,CAAC;MAChB;MACA,OAAO;QAAEd,EAAA,EAAIK,oBAAA;QAAsB,gBAAgB,CAAC;QAAG,cAAc,CAAC;QAAG,iBAAiB,CAAC;QAAGkB,IAAA,EAAM;MAAK;IAC3G;IACAH,YAAA,EAAc;IACd,IAAIlB,MAAA,EAAQ;MACV,IAAIQ,OAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C;QACAC,OAAA,CAAQC,KAAK,CAAC;MAChB;MACA,OAAO,CAAC;IACV;IACAI,KAAA,EAAO;EACT;AACF"}
|
|
@@ -6,34 +6,37 @@ import { treeDataTypes } from './tokens';
|
|
|
6
6
|
export function createVisibleFlatTree(unfilteredFlatTree, openItems) {
|
|
7
7
|
let visibleItems = null;
|
|
8
8
|
const getNextNavigableItem = data => {
|
|
9
|
-
var _a, _b, _c, _d;
|
|
10
9
|
const item = unfilteredFlatTree.itemsPerId.get(data.target.id);
|
|
11
10
|
if (!item || !visibleItems) {
|
|
12
11
|
return null;
|
|
13
12
|
}
|
|
14
13
|
switch (data.type) {
|
|
15
14
|
case treeDataTypes.arrowLeft:
|
|
16
|
-
|
|
15
|
+
var _unfilteredFlatTree_itemsPerId_get;
|
|
16
|
+
return item.parentId ? (_unfilteredFlatTree_itemsPerId_get = unfilteredFlatTree.itemsPerId.get(item.parentId)) !== null && _unfilteredFlatTree_itemsPerId_get !== void 0 ? _unfilteredFlatTree_itemsPerId_get : null : null;
|
|
17
17
|
case treeDataTypes.arrowRight:
|
|
18
|
-
|
|
18
|
+
var _visibleItems_;
|
|
19
|
+
return (_visibleItems_ = visibleItems[item.index + 1]) !== null && _visibleItems_ !== void 0 ? _visibleItems_ : null;
|
|
19
20
|
case treeDataTypes.end:
|
|
20
21
|
return visibleItems[visibleItems.length - 1];
|
|
21
22
|
case treeDataTypes.home:
|
|
22
23
|
return visibleItems[0];
|
|
23
24
|
case treeDataTypes.arrowDown:
|
|
24
|
-
|
|
25
|
+
var _visibleItems_1;
|
|
26
|
+
return (_visibleItems_1 = visibleItems[item.index + 1]) !== null && _visibleItems_1 !== void 0 ? _visibleItems_1 : null;
|
|
25
27
|
case treeDataTypes.arrowUp:
|
|
26
|
-
|
|
28
|
+
var _visibleItems_2;
|
|
29
|
+
return (_visibleItems_2 = visibleItems[item.index - 1]) !== null && _visibleItems_2 !== void 0 ? _visibleItems_2 : null;
|
|
27
30
|
default:
|
|
28
31
|
return null;
|
|
29
32
|
}
|
|
30
33
|
};
|
|
31
34
|
function* makeVisibleItemsGenerator() {
|
|
32
|
-
var _a;
|
|
33
35
|
visibleItems = [];
|
|
34
36
|
for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {
|
|
35
37
|
const item = unfilteredFlatTree.items[index];
|
|
36
|
-
|
|
38
|
+
var _item_parentId;
|
|
39
|
+
const parent = unfilteredFlatTree.itemsPerId.get((_item_parentId = item.parentId) !== null && _item_parentId !== void 0 ? _item_parentId : flatTreeRootParentId);
|
|
37
40
|
if (!parent) {
|
|
38
41
|
break;
|
|
39
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["flatTreeRootParentId","treeDataTypes","createVisibleFlatTree","unfilteredFlatTree","openItems","visibleItems","getNextNavigableItem","data","item","itemsPerId","get","target","id","type","arrowLeft","
|
|
1
|
+
{"version":3,"names":["flatTreeRootParentId","treeDataTypes","createVisibleFlatTree","unfilteredFlatTree","openItems","visibleItems","getNextNavigableItem","data","item","itemsPerId","get","target","id","type","arrowLeft","_unfilteredFlatTree_itemsPerId_get","parentId","arrowRight","_visibleItems_","index","end","length","home","arrowDown","_visibleItems_1","arrowUp","_visibleItems_2","makeVisibleItemsGenerator","visibleIndex","items","_item_parentId","parent","isFlatTreeItemVisible","push","childrenSize","flatTree","level","has"],"sources":["../../src/utils/createVisibleFlatTree.ts"],"sourcesContent":["import { FlatTree, FlatTreeItem } from '../hooks/useFlatTree';\nimport { TreeItemId, TreeNavigationData_unstable } from '../Tree';\nimport { flatTreeRootParentId, UnfilteredFlatTree } from './createUnfilteredFlatTree';\nimport { ImmutableSet } from './ImmutableSet';\nimport { treeDataTypes } from './tokens';\n\n/**\n * creates methods that depend on the unfilteredFlatTree and the current available openItems\n */\nexport function createVisibleFlatTree(\n unfilteredFlatTree: UnfilteredFlatTree,\n openItems: ImmutableSet<TreeItemId>,\n): Pick<FlatTree, 'items' | 'getNextNavigableItem'> {\n let visibleItems: FlatTreeItem[] | null = null;\n\n const getNextNavigableItem = (data: TreeNavigationData_unstable): FlatTreeItem | null => {\n const item = unfilteredFlatTree.itemsPerId.get(data.target.id);\n if (!item || !visibleItems) {\n return null;\n }\n switch (data.type) {\n case treeDataTypes.arrowLeft:\n return item.parentId ? unfilteredFlatTree.itemsPerId.get(item.parentId) ?? null : null;\n case treeDataTypes.arrowRight:\n return visibleItems[item.index + 1] ?? null;\n case treeDataTypes.end:\n return visibleItems[visibleItems.length - 1];\n case treeDataTypes.home:\n return visibleItems[0];\n case treeDataTypes.arrowDown:\n return visibleItems[item.index + 1] ?? null;\n case treeDataTypes.arrowUp:\n return visibleItems[item.index - 1] ?? null;\n default:\n return null;\n }\n };\n\n function* makeVisibleItemsGenerator() {\n visibleItems = [];\n for (let index = 0, visibleIndex = 0; index < unfilteredFlatTree.items.length; index++) {\n const item = unfilteredFlatTree.items[index];\n const parent = unfilteredFlatTree.itemsPerId.get(item.parentId ?? flatTreeRootParentId);\n if (!parent) {\n break;\n }\n if (isFlatTreeItemVisible(item, { openItems, unfilteredFlatTree })) {\n item.index = visibleIndex++;\n visibleItems.push({ ...item });\n yield item;\n } else {\n index += parent.childrenSize - 1 + item.childrenSize;\n }\n }\n }\n\n return {\n getNextNavigableItem,\n items: () => {\n return visibleItems || makeVisibleItemsGenerator();\n },\n };\n}\n\nfunction isFlatTreeItemVisible(\n item: FlatTreeItem,\n {\n openItems,\n unfilteredFlatTree: flatTree,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n unfilteredFlatTree: UnfilteredFlatTree;\n },\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentId && item.parentId !== flatTreeRootParentId) {\n if (!openItems.has(item.parentId)) {\n return false;\n }\n const parent = flatTree.itemsPerId.get(item.parentId);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n\n return true;\n}\n"],"mappings":"AAEA,SAASA,oBAAoB,QAA4B;AAEzD,SAASC,aAAa,QAAQ;AAE9B;;;AAGA,OAAO,SAASC,sBACdC,kBAAsC,EACtCC,SAAmC,EACe;EAClD,IAAIC,YAAA,GAAsC,IAAI;EAE9C,MAAMC,oBAAA,GAAwBC,IAAA,IAA2D;IACvF,MAAMC,IAAA,GAAOL,kBAAA,CAAmBM,UAAU,CAACC,GAAG,CAACH,IAAA,CAAKI,MAAM,CAACC,EAAE;IAC7D,IAAI,CAACJ,IAAA,IAAQ,CAACH,YAAA,EAAc;MAC1B,OAAO,IAAI;IACb;IACA,QAAQE,IAAA,CAAKM,IAAI;MACf,KAAKZ,aAAA,CAAca,SAAS;YACHC,kCAAA;QAAvB,OAAOP,IAAA,CAAKQ,QAAQ,GAAG,CAAAD,kCAAA,GAAAZ,kBAAA,CAAmBM,UAAU,CAACC,GAAG,CAACF,IAAA,CAAKQ,QAAQ,eAA/CD,kCAAA,cAAAA,kCAAA,GAAoD,IAAI,GAAG,IAAI;MACxF,KAAKd,aAAA,CAAcgB,UAAU;YACpBC,cAAA;QAAP,OAAO,CAAAA,cAAA,GAAAb,YAAY,CAACG,IAAA,CAAKW,KAAK,GAAG,EAAE,cAA5BD,cAAA,cAAAA,cAAA,GAAgC,IAAI;MAC7C,KAAKjB,aAAA,CAAcmB,GAAG;QACpB,OAAOf,YAAY,CAACA,YAAA,CAAagB,MAAM,GAAG,EAAE;MAC9C,KAAKpB,aAAA,CAAcqB,IAAI;QACrB,OAAOjB,YAAY,CAAC,EAAE;MACxB,KAAKJ,aAAA,CAAcsB,SAAS;YACnBC,eAAA;QAAP,OAAO,CAAAA,eAAA,GAAAnB,YAAY,CAACG,IAAA,CAAKW,KAAK,GAAG,EAAE,cAA5BK,eAAA,cAAAA,eAAA,GAAgC,IAAI;MAC7C,KAAKvB,aAAA,CAAcwB,OAAO;YACjBC,eAAA;QAAP,OAAO,CAAAA,eAAA,GAAArB,YAAY,CAACG,IAAA,CAAKW,KAAK,GAAG,EAAE,cAA5BO,eAAA,cAAAA,eAAA,GAAgC,IAAI;MAC7C;QACE,OAAO,IAAI;IAAA;EAEjB;EAEA,UAAUC,0BAAA,EAA4B;IACpCtB,YAAA,GAAe,EAAE;IACjB,KAAK,IAAIc,KAAA,GAAQ,GAAGS,YAAA,GAAe,GAAGT,KAAA,GAAQhB,kBAAA,CAAmB0B,KAAK,CAACR,MAAM,EAAEF,KAAA,IAAS;MACtF,MAAMX,IAAA,GAAOL,kBAAA,CAAmB0B,KAAK,CAACV,KAAA,CAAM;UACKW,cAAA;MAAjD,MAAMC,MAAA,GAAS5B,kBAAA,CAAmBM,UAAU,CAACC,GAAG,CAAC,CAAAoB,cAAA,GAAAtB,IAAA,CAAKQ,QAAQ,cAAbc,cAAA,cAAAA,cAAA,GAAiB9B,oBAAoB;MACtF,IAAI,CAAC+B,MAAA,EAAQ;QACX;MACF;MACA,IAAIC,qBAAA,CAAsBxB,IAAA,EAAM;QAAEJ,SAAA;QAAWD;MAAmB,IAAI;QAClEK,IAAA,CAAKW,KAAK,GAAGS,YAAA;QACbvB,YAAA,CAAa4B,IAAI,CAAC;UAAE,GAAGzB;QAAK;QAC5B,MAAMA,IAAA;MACR,OAAO;QACLW,KAAA,IAASY,MAAA,CAAOG,YAAY,GAAG,IAAI1B,IAAA,CAAK0B,YAAY;MACtD;IACF;EACF;EAEA,OAAO;IACL5B,oBAAA;IACAuB,KAAA,EAAOA,CAAA,KAAM;MACX,OAAOxB,YAAA,IAAgBsB,yBAAA;IACzB;EACF;AACF;AAEA,SAASK,sBACPxB,IAAkB,EAClB;EACEJ,SAAA;EACAD,kBAAA,EAAoBgC;AAAQ,CAI7B,EACD;EACA,IAAI3B,IAAA,CAAK4B,KAAK,KAAK,GAAG;IACpB,OAAO,IAAI;EACb;EACA,OAAO5B,IAAA,CAAKQ,QAAQ,IAAIR,IAAA,CAAKQ,QAAQ,KAAKhB,oBAAA,EAAsB;IAC9D,IAAI,CAACI,SAAA,CAAUiC,GAAG,CAAC7B,IAAA,CAAKQ,QAAQ,GAAG;MACjC,OAAO,KAAK;IACd;IACA,MAAMe,MAAA,GAASI,QAAA,CAAS1B,UAAU,CAACC,GAAG,CAACF,IAAA,CAAKQ,QAAQ;IACpD,IAAI,CAACe,MAAA,EAAQ;MACX,OAAO,KAAK;IACd;IACAvB,IAAA,GAAOuB,MAAA;EACT;EAEA,OAAO,IAAI;AACb"}
|
package/lib/utils/flattenTree.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
let count = 1;
|
|
2
2
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
3
3
|
function flattenTreeRecursive_unstable(items, parent, level = 1) {
|
|
4
|
-
var _a;
|
|
5
4
|
const flatTreeItems = [];
|
|
6
5
|
for (let index = 0; index < items.length; index++) {
|
|
7
6
|
const {
|
|
8
7
|
subtree,
|
|
9
8
|
...item
|
|
10
9
|
} = items[index];
|
|
10
|
+
var _item_id;
|
|
11
11
|
const flatTreeItem = {
|
|
12
12
|
'aria-level': level,
|
|
13
13
|
'aria-posinset': index + 1,
|
|
14
14
|
'aria-setsize': items.length,
|
|
15
15
|
parentId: parent === null || parent === void 0 ? void 0 : parent.id,
|
|
16
|
-
id: (
|
|
16
|
+
id: (_item_id = item.id) !== null && _item_id !== void 0 ? _item_id : `fui-FlatTreeItem-${count++}`,
|
|
17
17
|
leaf: subtree === undefined,
|
|
18
18
|
...item
|
|
19
19
|
};
|
|
@@ -26,7 +26,6 @@ function flattenTreeRecursive_unstable(items, parent, level = 1) {
|
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`
|
|
29
|
-
*/
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
29
|
+
*/ // eslint-disable-next-line @typescript-eslint/naming-convention
|
|
31
30
|
export const flattenTree_unstable = flattenTreeRecursive_unstable;
|
|
32
31
|
//# sourceMappingURL=flattenTree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["count","flattenTreeRecursive_unstable","items","parent","level","flatTreeItems","index","length","subtree","item","flatTreeItem","parentId","id","
|
|
1
|
+
{"version":3,"names":["count","flattenTreeRecursive_unstable","items","parent","level","flatTreeItems","index","length","subtree","item","_item_id","flatTreeItem","parentId","id","leaf","undefined","push","flattenTree_unstable"],"sources":["../../src/utils/flattenTree.ts"],"sourcesContent":["import { FlatTreeItemProps } from '../hooks/useFlatTree';\nimport { TreeItemProps } from '../TreeItem';\n\nexport type NestedTreeItem = Omit<TreeItemProps, 'subtree'> & {\n subtree?: NestedTreeItem[];\n};\n\nlet count = 1;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction flattenTreeRecursive_unstable(\n items: NestedTreeItem[],\n parent?: FlatTreeItemProps,\n level = 1,\n): FlatTreeItemProps[] {\n const flatTreeItems: FlatTreeItemProps[] = [];\n for (let index = 0; index < items.length; index++) {\n const { subtree, ...item } = items[index];\n const flatTreeItem: FlatTreeItemProps = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentId: parent?.id,\n id: item.id ?? `fui-FlatTreeItem-${count++}`,\n leaf: subtree === undefined,\n ...item,\n };\n flatTreeItems.push(flatTreeItem);\n if (subtree !== undefined) {\n flatTreeItems.push(...flattenTreeRecursive_unstable(subtree, flatTreeItem, level + 1));\n }\n }\n return flatTreeItems;\n}\n\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable: (items: NestedTreeItem[]) => FlatTreeItemProps[] = flattenTreeRecursive_unstable;\n"],"mappings":"AAOA,IAAIA,KAAA,GAAQ;AAEZ;AACA,SAASC,8BACPC,KAAuB,EACvBC,MAA0B,EAC1BC,KAAA,GAAQ,CAAC,EACY;EACrB,MAAMC,aAAA,GAAqC,EAAE;EAC7C,KAAK,IAAIC,KAAA,GAAQ,GAAGA,KAAA,GAAQJ,KAAA,CAAMK,MAAM,EAAED,KAAA,IAAS;IACjD,MAAM;MAAEE,OAAA;MAAS,GAAGC;IAAA,CAAM,GAAGP,KAAK,CAACI,KAAA,CAAM;QAMnCI,QAAA;IALN,MAAMC,YAAA,GAAkC;MACtC,cAAcP,KAAA;MACd,iBAAiBE,KAAA,GAAQ;MACzB,gBAAgBJ,KAAA,CAAMK,MAAM;MAC5BK,QAAA,EAAUT,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQU,EAAE;MACpBA,EAAA,EAAI,CAAAH,QAAA,GAAAD,IAAA,CAAKI,EAAE,cAAPH,QAAA,cAAAA,QAAA,GAAY,oBAAmBV,KAAA,EAAQ,EAAC;MAC5Cc,IAAA,EAAMN,OAAA,KAAYO,SAAA;MAClB,GAAGN;IACL;IACAJ,aAAA,CAAcW,IAAI,CAACL,YAAA;IACnB,IAAIH,OAAA,KAAYO,SAAA,EAAW;MACzBV,aAAA,CAAcW,IAAI,IAAIf,6BAAA,CAA8BO,OAAA,EAASG,YAAA,EAAcP,KAAA,GAAQ;IACrF;EACF;EACA,OAAOC,aAAA;AACT;AAEA;;GAAA,CAGA;AACA,OAAO,MAAMY,oBAAA,GAAyEhB,6BAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export function nextTypeAheadElement(treeWalker, key) {
|
|
2
2
|
const keyToLowerCase = key.toLowerCase();
|
|
3
3
|
const typeAheadFilter = element => {
|
|
4
|
-
var
|
|
5
|
-
return ((
|
|
4
|
+
var _element_textContent;
|
|
5
|
+
return ((_element_textContent = element.textContent) === null || _element_textContent === void 0 ? void 0 : _element_textContent.trim().charAt(0).toLowerCase()) === keyToLowerCase ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
6
6
|
};
|
|
7
7
|
let nextElement = treeWalker.nextElement(typeAheadFilter);
|
|
8
8
|
if (!nextElement) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["nextTypeAheadElement","treeWalker","key","keyToLowerCase","toLowerCase","typeAheadFilter","element","
|
|
1
|
+
{"version":3,"names":["nextTypeAheadElement","treeWalker","key","keyToLowerCase","toLowerCase","typeAheadFilter","element","_element_textContent","textContent","trim","charAt","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","nextElement","currentElement","root"],"sources":["../../src/utils/nextTypeAheadElement.ts"],"sourcesContent":["import { HTMLElementWalker } from '../hooks/useHTMLElementWalker';\n\nexport function nextTypeAheadElement(treeWalker: HTMLElementWalker, key: string) {\n const keyToLowerCase = key.toLowerCase();\n const typeAheadFilter = (element: HTMLElement) => {\n return element.textContent?.trim().charAt(0).toLowerCase() === keyToLowerCase\n ? NodeFilter.FILTER_ACCEPT\n : NodeFilter.FILTER_SKIP;\n };\n let nextElement = treeWalker.nextElement(typeAheadFilter);\n if (!nextElement) {\n treeWalker.currentElement = treeWalker.root;\n nextElement = treeWalker.nextElement(typeAheadFilter);\n }\n return nextElement;\n}\n"],"mappings":"AAEA,OAAO,SAASA,qBAAqBC,UAA6B,EAAEC,GAAW,EAAE;EAC/E,MAAMC,cAAA,GAAiBD,GAAA,CAAIE,WAAW;EACtC,MAAMC,eAAA,GAAmBC,OAAA,IAAyB;QACzCC,oBAAA;IAAP,OAAO,EAAAA,oBAAA,GAAAD,OAAA,CAAQE,WAAW,cAAnBD,oBAAA,uBAAAA,oBAAA,CAAqBE,IAAA,GAAOC,MAAM,CAAC,GAAGN,WAAW,EAAE,MAAKD,cAAA,GAC3DQ,UAAA,CAAWC,aAAa,GACxBD,UAAA,CAAWE,WAAW;EAC5B;EACA,IAAIC,WAAA,GAAcb,UAAA,CAAWa,WAAW,CAACT,eAAA;EACzC,IAAI,CAACS,WAAA,EAAa;IAChBb,UAAA,CAAWc,cAAc,GAAGd,UAAA,CAAWe,IAAI;IAC3CF,WAAA,GAAcb,UAAA,CAAWa,WAAW,CAACT,eAAA;EACvC;EACA,OAAOS,WAAA;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["normalizeOpenItems","openSubtrees","options","keepUndefined","undefined","Array","isArray"],"sources":["
|
|
1
|
+
{"version":3,"names":["normalizeOpenItems","openSubtrees","options","keepUndefined","undefined","Array","isArray"],"sources":["../../src/utils/normalizeOpenItems.ts"],"sourcesContent":["export function normalizeOpenItems(\n openSubtrees?: string | string[],\n options?: {\n keepUndefined?: false;\n },\n): string[];\n\nexport function normalizeOpenItems(\n openSubtrees?: string | string[],\n options?: {\n keepUndefined: true;\n },\n): string[] | undefined;\n\nexport function normalizeOpenItems(\n openSubtrees?: string | string[],\n options?: {\n keepUndefined?: boolean;\n },\n): string[] | undefined {\n if (!openSubtrees) {\n return options?.keepUndefined ? undefined : [];\n }\n return Array.isArray(openSubtrees) ? openSubtrees : [openSubtrees];\n}\n"],"mappings":"AAcA,OAAO,SAASA,mBACdC,YAAgC,EAChCC,OAEC,EACqB;EACtB,IAAI,CAACD,YAAA,EAAc;IACjB,OAAO,CAAAC,OAAA,aAAAA,OAAA,uBAAAA,OAAA,CAASC,aAAa,IAAGC,SAAA,GAAY,EAAE;EAChD;EACA,OAAOC,KAAA,CAAMC,OAAO,CAACL,YAAA,IAAgBA,YAAA,GAAe,CAACA,YAAA,CAAa;AACpE"}
|
package/lib/utils/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","End","Home","treeItemLevelToken","treeAvatarSize","medium","small","treeDataTypes","arrowLeft","arrowRight","enter","click","expandIconClick","end","home","arrowUp","arrowDown","typeAhead"],"sources":["
|
|
1
|
+
{"version":3,"names":["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","End","Home","treeItemLevelToken","treeAvatarSize","medium","small","treeDataTypes","arrowLeft","arrowRight","enter","click","expandIconClick","end","home","arrowUp","arrowDown","typeAhead"],"sources":["../../src/utils/tokens.ts"],"sourcesContent":["import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home } from '@fluentui/keyboard-keys';\nimport { TreeNavigationData_unstable, TreeOpenChangeData } from '../Tree';\n\nexport const treeItemLevelToken = '--fluent-TreeItem--level' as const;\n\nexport const treeAvatarSize = {\n medium: 32,\n small: 24,\n} as const;\n\nexport const treeDataTypes: {\n readonly [K in Uncapitalize<TreeOpenChangeData['type'] | TreeNavigationData_unstable['type']>]: Capitalize<K>;\n} = {\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n enter: 'Enter',\n click: 'Click',\n expandIconClick: 'ExpandIconClick',\n end: End,\n home: Home,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n typeAhead: 'TypeAhead',\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,OAAO,EAAEC,GAAG,EAAEC,IAAI,QAAQ;AAGrE,OAAO,MAAMC,kBAAA,GAAqB;AAElC,OAAO,MAAMC,cAAA,GAAiB;EAC5BC,MAAA,EAAQ;EACRC,KAAA,EAAO;AACT;AAEA,OAAO,MAAMC,aAAA,GAET;EACFC,SAAA,EAAWV,SAAA;EACXW,UAAA,EAAYV,UAAA;EACZW,KAAA,EAAO;EACPC,KAAA,EAAO;EACPC,eAAA,EAAiB;EACjBC,GAAA,EAAKZ,GAAA;EACLa,IAAA,EAAMZ,IAAA;EACNa,OAAA,EAASf,OAAA;EACTgB,SAAA,EAAWnB,SAAA;EACXoB,SAAA,EAAW;AACb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["treeItemFilter","element","getAttribute","NodeFilter","FILTER_ACCEPT","FILTER_SKIP"],"sources":["
|
|
1
|
+
{"version":3,"names":["treeItemFilter","element","getAttribute","NodeFilter","FILTER_ACCEPT","FILTER_SKIP"],"sources":["../../src/utils/treeItemFilter.ts"],"sourcesContent":["export const treeItemFilter = (element: HTMLElement) => {\n return element.getAttribute('role') === 'treeitem' ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,cAAA,GAAkBC,OAAA,IAAyB;EACtD,OAAOA,OAAA,CAAQC,YAAY,CAAC,YAAY,aAAaC,UAAA,CAAWC,aAAa,GAAGD,UAAA,CAAWE,WAAW;AACxG"}
|
package/lib-commonjs/Tree.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
|
+
_exportStar(require("./components/Tree/index"), exports);
|
|
7
|
+
//# sourceMappingURL=Tree.js.map
|
|
8
|
+
|
|
8
9
|
//# sourceMappingURL=Tree.js.map
|
package/lib-commonjs/Tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../lib/Tree.js"],"sourcesContent":["export * from './components/Tree/index';\n//# sourceMappingURL=Tree.js.map"],"names":[],"mappings":";;;;;oBAAc;CACd,gCAAgC"}
|
package/lib-commonjs/TreeItem.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
|
+
_exportStar(require("./components/TreeItem/index"), exports);
|
|
7
|
+
//# sourceMappingURL=TreeItem.js.map
|
|
8
|
+
|
|
8
9
|
//# sourceMappingURL=TreeItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../lib/TreeItem.js"],"sourcesContent":["export * from './components/TreeItem/index';\n//# sourceMappingURL=TreeItem.js.map"],"names":[],"mappings":";;;;;oBAAc;CACd,oCAAoC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
|
+
_exportStar(require("./components/TreeItemLayout/index"), exports);
|
|
7
|
+
//# sourceMappingURL=TreeItemLayout.js.map
|
|
8
|
+
|
|
8
9
|
//# sourceMappingURL=TreeItemLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../lib/TreeItemLayout.js"],"sourcesContent":["export * from './components/TreeItemLayout/index';\n//# sourceMappingURL=TreeItemLayout.js.map"],"names":[],"mappings":";;;;;oBAAc;CACd,0CAA0C"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
5
4
|
});
|
|
6
|
-
const
|
|
7
|
-
|
|
5
|
+
const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
|
|
6
|
+
_exportStar(require("./components/TreeItemPersonaLayout/index"), exports);
|
|
7
|
+
//# sourceMappingURL=TreeItemPersonaLayout.js.map
|
|
8
|
+
|
|
8
9
|
//# sourceMappingURL=TreeItemPersonaLayout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../lib/TreeItemPersonaLayout.js"],"sourcesContent":["export * from './components/TreeItemPersonaLayout/index';\n//# sourceMappingURL=TreeItemPersonaLayout.js.map"],"names":[],"mappings":";;;;;oBAAc;CACd,iDAAiD"}
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
2
|
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Tree", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>Tree
|
|
5
8
|
});
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* an item representing a folder can be expanded to reveal the contents of the folder,
|
|
18
|
-
* which may be files, folders, or both.
|
|
19
|
-
*/
|
|
20
|
-
exports.Tree = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
21
|
-
const state = useTree_1.useTree_unstable(props, ref);
|
|
22
|
-
useTreeStyles_1.useTreeStyles_unstable(state);
|
|
23
|
-
const contextValues = useTreeContextValues_1.useTreeContextValues_unstable(state);
|
|
24
|
-
return renderTree_1.renderTree_unstable(state, contextValues);
|
|
9
|
+
const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
|
|
10
|
+
const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
|
|
11
|
+
const _useTree = require("./useTree");
|
|
12
|
+
const _renderTree = require("./renderTree");
|
|
13
|
+
const _useTreeStyles = require("./useTreeStyles");
|
|
14
|
+
const _useTreeContextValues = require("./useTreeContextValues");
|
|
15
|
+
const Tree = /*#__PURE__*/ _react.forwardRef((props, ref)=>{
|
|
16
|
+
const state = (0, _useTree.useTree_unstable)(props, ref);
|
|
17
|
+
(0, _useTreeStyles.useTreeStyles_unstable)(state);
|
|
18
|
+
const contextValues = (0, _useTreeContextValues.useTreeContextValues_unstable)(state);
|
|
19
|
+
return (0, _renderTree.renderTree_unstable)(state, contextValues);
|
|
25
20
|
});
|
|
26
|
-
|
|
21
|
+
Tree.displayName = 'Tree'; //# sourceMappingURL=Tree.js.map
|
|
22
|
+
|
|
27
23
|
//# sourceMappingURL=Tree.js.map
|