@fluentui/react-tree 9.2.1 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.json +201 -1
  2. package/CHANGELOG.md +51 -2
  3. package/dist/index.d.ts +13 -2
  4. package/lib/components/FlatTree/useFlatTree.js +57 -2
  5. package/lib/components/FlatTree/useFlatTree.js.map +1 -1
  6. package/lib/components/FlatTree/useFlatTreeNavigation.js +28 -14
  7. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  8. package/lib/components/FlatTree/useHeadlessFlatTree.js +16 -16
  9. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  10. package/lib/components/Tree/Tree.types.js.map +1 -1
  11. package/lib/components/Tree/useTree.js +7 -7
  12. package/lib/components/Tree/useTree.js.map +1 -1
  13. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  14. package/lib/components/TreeItem/useTreeItem.js +51 -25
  15. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  16. package/lib/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  17. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  18. package/lib/contexts/treeContext.js.map +1 -1
  19. package/lib/hooks/useRootTree.js +24 -78
  20. package/lib/hooks/useRootTree.js.map +1 -1
  21. package/lib/utils/createHTMLElementWalker.js +2 -3
  22. package/lib/utils/createHTMLElementWalker.js.map +1 -1
  23. package/lib/utils/createHeadlessTree.js +5 -3
  24. package/lib/utils/createHeadlessTree.js.map +1 -1
  25. package/lib/utils/flattenTree.js +1 -2
  26. package/lib/utils/flattenTree.js.map +1 -1
  27. package/lib/utils/normalizeOpenItems.js +1 -2
  28. package/lib/utils/normalizeOpenItems.js.map +1 -1
  29. package/lib-commonjs/components/FlatTree/useFlatTree.js +57 -2
  30. package/lib-commonjs/components/FlatTree/useFlatTree.js.map +1 -1
  31. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js +27 -13
  32. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  33. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +16 -16
  34. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  35. package/lib-commonjs/components/Tree/useTree.js +7 -7
  36. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  37. package/lib-commonjs/components/TreeItem/useTreeItem.js +50 -24
  38. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  39. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  40. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  41. package/lib-commonjs/hooks/useRootTree.js +24 -78
  42. package/lib-commonjs/hooks/useRootTree.js.map +1 -1
  43. package/lib-commonjs/utils/createHTMLElementWalker.js +2 -3
  44. package/lib-commonjs/utils/createHTMLElementWalker.js.map +1 -1
  45. package/lib-commonjs/utils/createHeadlessTree.js +5 -3
  46. package/lib-commonjs/utils/createHeadlessTree.js.map +1 -1
  47. package/lib-commonjs/utils/flattenTree.js +1 -2
  48. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  49. package/lib-commonjs/utils/normalizeOpenItems.js +1 -2
  50. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  51. package/package.json +15 -15
@@ -26,7 +26,7 @@ function useHeadlessFlatTree_unstable(props, options = {}) {
26
26
  ]);
27
27
  const [openItems, setOpenItems] = (0, _useControllableOpenItems.useControllableOpenItems)(options);
28
28
  const [checkedItems, setCheckedItems] = (0, _useFlatControllableCheckedItems.useFlatControllableCheckedItems)(options, headlessTree);
29
- const { initialize, navigate } = (0, _useFlatTreeNavigation.useFlatTreeNavigation)(headlessTree);
29
+ const { initialize, navigate } = (0, _useFlatTreeNavigation.useFlatTreeNavigation)();
30
30
  const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
31
31
  const walkerRef = _react.useRef();
32
32
  const initializeWalker = _react.useCallback((root)=>{
@@ -40,30 +40,23 @@ function useHeadlessFlatTree_unstable(props, options = {}) {
40
40
  ]);
41
41
  const treeRef = _react.useRef(null);
42
42
  const handleOpenChange = (0, _reactutilities.useEventCallback)((event, data)=>{
43
- var _options_onOpenChange, _options;
43
+ var _options_onOpenChange;
44
44
  const nextOpenItems = (0, _useControllableOpenItems.createNextOpenItems)(data, openItems);
45
- (_options_onOpenChange = (_options = options).onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(_options, event, {
45
+ (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, {
46
46
  ...data,
47
47
  openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()
48
48
  });
49
49
  setOpenItems(nextOpenItems);
50
50
  });
51
51
  const handleCheckedChange = (0, _reactutilities.useEventCallback)((event, data)=>{
52
- var _options_onCheckedChange, _options;
52
+ var _options_onCheckedChange;
53
53
  const nextCheckedItems = (0, _useFlatControllableCheckedItems.createNextFlatCheckedItems)(data, checkedItems, headlessTree);
54
- (_options_onCheckedChange = (_options = options).onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(_options, event, {
54
+ (_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, {
55
55
  ...data,
56
56
  checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()
57
57
  });
58
58
  setCheckedItems(nextCheckedItems);
59
59
  });
60
- const handleNavigation = (0, _reactutilities.useEventCallback)((event, data)=>{
61
- var _options_onNavigation, _options;
62
- (_options_onNavigation = (_options = options).onNavigation) === null || _options_onNavigation === void 0 ? void 0 : _options_onNavigation.call(_options, event, data);
63
- if (walkerRef.current) {
64
- navigate(data, walkerRef.current);
65
- }
66
- });
67
60
  const getNextNavigableItem = (0, _reactutilities.useEventCallback)((visibleItems, data)=>{
68
61
  const item = headlessTree.get(data.value);
69
62
  if (item) {
@@ -90,17 +83,22 @@ function useHeadlessFlatTree_unstable(props, options = {}) {
90
83
  return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${_getTreeItemValueFromElement.dataTreeItemValueAttrName}="${item.value}"]`);
91
84
  }, []);
92
85
  const ref = (0, _reactutilities.useMergedRefs)(treeRef, initializeWalker);
93
- const getTreeProps = _react.useCallback(()=>({
86
+ const getTreeProps = _react.useCallback(()=>{
87
+ var _options_onNavigation;
88
+ return {
94
89
  ref,
95
90
  openItems,
96
91
  selectionMode: options.selectionMode,
97
92
  checkedItems,
98
93
  onOpenChange: handleOpenChange,
99
94
  onCheckedChange: handleCheckedChange,
100
- onNavigation: handleNavigation
101
- }), [
95
+ onNavigation: (_options_onNavigation = options.onNavigation) !== null && _options_onNavigation !== void 0 ? _options_onNavigation : noop
96
+ };
97
+ }, [
102
98
  openItems,
103
- checkedItems
99
+ checkedItems,
100
+ options.selectionMode,
101
+ options.onNavigation
104
102
  ]);
105
103
  const items = _react.useCallback(()=>headlessTree.visibleItems(openItems), [
106
104
  openItems,
@@ -124,3 +122,5 @@ function useHeadlessFlatTree_unstable(props, options = {}) {
124
122
  items
125
123
  ]);
126
124
  }
125
+ function noop() {
126
+ /* noop */ }
@@ -1 +1 @@
1
- {"version":3,"sources":["useHeadlessFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createHeadlessTree } from '../../utils/createHeadlessTree';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { createNextFlatCheckedItems, useFlatControllableCheckedItems } from './useFlatControllableCheckedItems';\nimport { createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param props - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useHeadlessFlatTree_unstable(props, options = {}) {\n const headlessTree = React.useMemo(()=>createHeadlessTree(props), [\n props\n ]);\n const [openItems, setOpenItems] = useControllableOpenItems(options);\n const [checkedItems, setCheckedItems] = useFlatControllableCheckedItems(options, headlessTree);\n const { initialize, navigate } = useFlatTreeNavigation(headlessTree);\n const { targetDocument } = useFluent_unstable();\n const walkerRef = React.useRef();\n const initializeWalker = React.useCallback((root)=>{\n if (root && targetDocument) {\n walkerRef.current = createHTMLElementWalker(root, targetDocument, treeItemFilter);\n initialize(walkerRef.current);\n }\n }, [\n initialize,\n targetDocument\n ]);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange, _options;\n const nextOpenItems = createNextOpenItems(data, openItems);\n (_options_onOpenChange = (_options = options).onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(_options, event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n setOpenItems(nextOpenItems);\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n var _options_onCheckedChange, _options;\n const nextCheckedItems = createNextFlatCheckedItems(data, checkedItems, headlessTree);\n (_options_onCheckedChange = (_options = options).onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(_options, event, {\n ...data,\n checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()\n });\n setCheckedItems(nextCheckedItems);\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _options_onNavigation, _options;\n (_options_onNavigation = (_options = options).onNavigation) === null || _options_onNavigation === void 0 ? void 0 : _options_onNavigation.call(_options, event, data);\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = headlessTree.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return headlessTree.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\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];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, initializeWalker);\n const getTreeProps = React.useCallback(()=>({\n ref,\n openItems,\n selectionMode: options.selectionMode,\n checkedItems,\n onOpenChange: handleOpenChange,\n onCheckedChange: handleCheckedChange,\n onNavigation: handleNavigation\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems,\n checkedItems\n ]);\n const items = React.useCallback(()=>headlessTree.visibleItems(openItems), [\n openItems,\n headlessTree\n ]);\n return React.useMemo(()=>({\n navigate: (data)=>{\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n },\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\n"],"names":["useHeadlessFlatTree_unstable","props","options","headlessTree","React","useMemo","createHeadlessTree","openItems","setOpenItems","useControllableOpenItems","checkedItems","setCheckedItems","useFlatControllableCheckedItems","initialize","navigate","useFlatTreeNavigation","targetDocument","useFluent_unstable","walkerRef","useRef","initializeWalker","useCallback","root","current","createHTMLElementWalker","treeItemFilter","treeRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","_options","nextOpenItems","createNextOpenItems","onOpenChange","call","dangerouslyGetInternalSet_unstable","handleCheckedChange","_options_onCheckedChange","nextCheckedItems","createNextFlatCheckedItems","onCheckedChange","dangerouslyGetInternalMap_unstable","handleNavigation","_options_onNavigation","onNavigation","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","_treeRef_current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","selectionMode","items"],"mappings":"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"}
1
+ {"version":3,"sources":["useHeadlessFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createHeadlessTree } from '../../utils/createHeadlessTree';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { createNextFlatCheckedItems, useFlatControllableCheckedItems } from './useFlatControllableCheckedItems';\nimport { createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param props - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useHeadlessFlatTree_unstable(props, options = {}) {\n const headlessTree = React.useMemo(()=>createHeadlessTree(props), [\n props\n ]);\n const [openItems, setOpenItems] = useControllableOpenItems(options);\n const [checkedItems, setCheckedItems] = useFlatControllableCheckedItems(options, headlessTree);\n const { initialize, navigate } = useFlatTreeNavigation();\n const { targetDocument } = useFluent_unstable();\n const walkerRef = React.useRef();\n const initializeWalker = React.useCallback((root)=>{\n if (root && targetDocument) {\n walkerRef.current = createHTMLElementWalker(root, targetDocument, treeItemFilter);\n initialize(walkerRef.current);\n }\n }, [\n initialize,\n targetDocument\n ]);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange;\n const nextOpenItems = createNextOpenItems(data, openItems);\n (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n setOpenItems(nextOpenItems);\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n var _options_onCheckedChange;\n const nextCheckedItems = createNextFlatCheckedItems(data, checkedItems, headlessTree);\n (_options_onCheckedChange = options.onCheckedChange) === null || _options_onCheckedChange === void 0 ? void 0 : _options_onCheckedChange.call(options, event, {\n ...data,\n checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()\n });\n setCheckedItems(nextCheckedItems);\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = headlessTree.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return headlessTree.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\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];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, initializeWalker);\n const getTreeProps = React.useCallback(()=>{\n var _options_onNavigation;\n return {\n ref,\n openItems,\n selectionMode: options.selectionMode,\n checkedItems,\n onOpenChange: handleOpenChange,\n onCheckedChange: handleCheckedChange,\n onNavigation: (_options_onNavigation = options.onNavigation) !== null && _options_onNavigation !== void 0 ? _options_onNavigation : noop\n };\n }, // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems,\n checkedItems,\n options.selectionMode,\n options.onNavigation\n ]);\n const items = React.useCallback(()=>headlessTree.visibleItems(openItems), [\n openItems,\n headlessTree\n ]);\n return React.useMemo(()=>({\n navigate: (data)=>{\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n },\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\nfunction noop() {\n/* noop */ }\n"],"names":["useHeadlessFlatTree_unstable","props","options","headlessTree","React","useMemo","createHeadlessTree","openItems","setOpenItems","useControllableOpenItems","checkedItems","setCheckedItems","useFlatControllableCheckedItems","initialize","navigate","useFlatTreeNavigation","targetDocument","useFluent_unstable","walkerRef","useRef","initializeWalker","useCallback","root","current","createHTMLElementWalker","treeItemFilter","treeRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","nextOpenItems","createNextOpenItems","onOpenChange","call","dangerouslyGetInternalSet_unstable","handleCheckedChange","_options_onCheckedChange","nextCheckedItems","createNextFlatCheckedItems","onCheckedChange","dangerouslyGetInternalMap_unstable","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","_treeRef_current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","_options_onNavigation","selectionMode","onNavigation","noop","items"],"mappings":"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"}
@@ -46,9 +46,9 @@ function useNestedRootTree(props, ref) {
46
46
  targetDocument
47
47
  ]);
48
48
  const handleOpenChange = (0, _reactutilities.useEventCallback)((event, data)=>{
49
- var _props_onOpenChange, _props;
49
+ var _props_onOpenChange;
50
50
  const nextOpenItems = (0, _useControllableOpenItems.createNextOpenItems)(data, openItems);
51
- (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, {
51
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, {
52
52
  ...data,
53
53
  openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()
54
54
  });
@@ -56,18 +56,18 @@ function useNestedRootTree(props, ref) {
56
56
  });
57
57
  const handleCheckedChange = (0, _reactutilities.useEventCallback)((event, data)=>{
58
58
  if (walkerRef.current) {
59
- var _props_onCheckedChange, _props;
59
+ var _props_onCheckedChange;
60
60
  const nextCheckedItems = (0, _useNestedControllableCheckedItems.createNextNestedCheckedItems)(data, checkedItems);
61
- (_props_onCheckedChange = (_props = props).onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(_props, event, {
61
+ (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, event, {
62
62
  ...data,
63
63
  checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()
64
64
  });
65
65
  }
66
66
  });
67
67
  const handleNavigation = (0, _reactutilities.useEventCallback)((event, data)=>{
68
- var _props_onNavigation, _props;
69
- (_props_onNavigation = (_props = props).onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(_props, event, data);
70
- if (walkerRef.current) {
68
+ var _props_onNavigation;
69
+ (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, event, data);
70
+ if (walkerRef.current && !event.isDefaultPrevented()) {
71
71
  navigate(data, walkerRef.current);
72
72
  }
73
73
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["useTree.js"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';\nimport { createNextNestedCheckedItems, useNestedCheckedItems } from './useNestedControllableCheckedItems';\nimport { useTreeContext_unstable } from '../../contexts/treeContext';\nimport { useRootTree } from '../../hooks/useRootTree';\nimport { useSubtree } from '../../hooks/useSubtree';\nimport { createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useTreeNavigation } from './useTreeNavigation';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nexport const useTree_unstable = (props, ref)=>{\n const isSubtree = useTreeContext_unstable((ctx)=>ctx.level > 0);\n // as isSubTree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? {\n ...useSubtree(props, ref),\n treeType: 'nested'\n } : useNestedRootTree(props, ref);\n};\nfunction useNestedRootTree(props, ref) {\n const [openItems, setOpenItems] = useControllableOpenItems(props);\n const checkedItems = useNestedCheckedItems(props);\n const { navigate, initialize } = useTreeNavigation();\n const walkerRef = React.useRef();\n const { targetDocument } = useFluent_unstable();\n const initializeWalker = React.useCallback((root)=>{\n if (root && targetDocument) {\n walkerRef.current = createHTMLElementWalker(root, targetDocument, treeItemFilter);\n initialize(walkerRef.current);\n }\n }, [\n initialize,\n targetDocument\n ]);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _props_onOpenChange, _props;\n const nextOpenItems = createNextOpenItems(data, openItems);\n (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n setOpenItems(nextOpenItems);\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n if (walkerRef.current) {\n var _props_onCheckedChange, _props;\n const nextCheckedItems = createNextNestedCheckedItems(data, checkedItems);\n (_props_onCheckedChange = (_props = props).onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(_props, event, {\n ...data,\n checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()\n });\n }\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _props_onNavigation, _props;\n (_props_onNavigation = (_props = props).onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(_props, event, data);\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n });\n return {\n treeType: 'nested',\n ...useRootTree({\n ...props,\n openItems,\n checkedItems,\n onOpenChange: handleOpenChange,\n onNavigation: handleNavigation,\n onCheckedChange: handleCheckedChange\n }, useMergedRefs(ref, initializeWalker))\n };\n}\n"],"names":["useTree_unstable","props","ref","isSubtree","useTreeContext_unstable","ctx","level","useSubtree","treeType","useNestedRootTree","openItems","setOpenItems","useControllableOpenItems","checkedItems","useNestedCheckedItems","navigate","initialize","useTreeNavigation","walkerRef","React","useRef","targetDocument","useFluent_unstable","initializeWalker","useCallback","root","current","createHTMLElementWalker","treeItemFilter","handleOpenChange","useEventCallback","event","data","_props_onOpenChange","_props","nextOpenItems","createNextOpenItems","onOpenChange","call","dangerouslyGetInternalSet_unstable","handleCheckedChange","_props_onCheckedChange","nextCheckedItems","createNextNestedCheckedItems","onCheckedChange","dangerouslyGetInternalMap_unstable","handleNavigation","_props_onNavigation","onNavigation","useRootTree","useMergedRefs"],"mappings":";;;;+BAWaA;;;eAAAA;;;;iEAXU;gCACyB;0CACc;mDACM;6BAC5B;6BACZ;4BACD;yCACa;gCACT;mCACG;qCACC;AAC5B,MAAMA,mBAAmB,CAACC,OAAOC;IACpC,MAAMC,YAAYC,IAAAA,oCAAuB,EAAC,CAACC,MAAMA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOH,YAAY;QACf,GAAGI,IAAAA,sBAAU,EAACN,OAAOC,IAAI;QACzBM,UAAU;IACd,IAAIC,kBAAkBR,OAAOC;AACjC;AACA,SAASO,kBAAkBR,KAAK,EAAEC,GAAG;IACjC,MAAM,CAACQ,WAAWC,aAAa,GAAGC,IAAAA,kDAAwB,EAACX;IAC3D,MAAMY,eAAeC,IAAAA,wDAAqB,EAACb;IAC3C,MAAM,EAAEc,QAAQ,EAAEC,UAAU,EAAE,GAAGC,IAAAA,oCAAiB;IAClD,MAAMC,YAAYC,OAAMC,MAAM;IAC9B,MAAM,EAAEC,cAAc,EAAE,GAAGC,IAAAA,uCAAkB;IAC7C,MAAMC,mBAAmBJ,OAAMK,WAAW,CAAC,CAACC;QACxC,IAAIA,QAAQJ,gBAAgB;YACxBH,UAAUQ,OAAO,GAAGC,IAAAA,gDAAuB,EAACF,MAAMJ,gBAAgBO,8BAAc;YAChFZ,WAAWE,UAAUQ,OAAO;QAChC;IACJ,GAAG;QACCV;QACAK;KACH;IACD,MAAMQ,mBAAmBC,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIC,qBAAqBC;QACzB,MAAMC,gBAAgBC,IAAAA,6CAAmB,EAACJ,MAAMtB;QAC/CuB,CAAAA,sBAAsB,AAACC,CAAAA,SAASjC,KAAI,EAAGoC,YAAY,AAAD,MAAO,QAAQJ,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBK,IAAI,CAACJ,QAAQH,OAAO;YAChJ,GAAGC,IAAI;YACPtB,WAAWyB,cAAcI,kCAAkC;QAC/D;QACA5B,aAAawB;IACjB;IACA,MAAMK,sBAAsBV,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QACjD,IAAId,UAAUQ,OAAO,EAAE;YACnB,IAAIe,wBAAwBP;YAC5B,MAAMQ,mBAAmBC,IAAAA,+DAA4B,EAACX,MAAMnB;YAC3D4B,CAAAA,yBAAyB,AAACP,CAAAA,SAASjC,KAAI,EAAG2C,eAAe,AAAD,MAAO,QAAQH,2BAA2B,KAAK,IAAI,KAAK,IAAIA,uBAAuBH,IAAI,CAACJ,QAAQH,OAAO;gBAC5J,GAAGC,IAAI;gBACPnB,cAAc6B,iBAAiBG,kCAAkC;YACrE;QACJ;IACJ;IACA,MAAMC,mBAAmBhB,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIe,qBAAqBb;QACxBa,CAAAA,sBAAsB,AAACb,CAAAA,SAASjC,KAAI,EAAG+C,YAAY,AAAD,MAAO,QAAQD,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBT,IAAI,CAACJ,QAAQH,OAAOC;QACpJ,IAAId,UAAUQ,OAAO,EAAE;YACnBX,SAASiB,MAAMd,UAAUQ,OAAO;QACpC;IACJ;IACA,OAAO;QACHlB,UAAU;QACV,GAAGyC,IAAAA,wBAAW,EAAC;YACX,GAAGhD,KAAK;YACRS;YACAG;YACAwB,cAAcR;YACdmB,cAAcF;YACdF,iBAAiBJ;QACrB,GAAGU,IAAAA,6BAAa,EAAChD,KAAKqB,kBAAkB;IAC5C;AACJ"}
1
+ {"version":3,"sources":["useTree.js"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';\nimport { createNextNestedCheckedItems, useNestedCheckedItems } from './useNestedControllableCheckedItems';\nimport { useTreeContext_unstable } from '../../contexts/treeContext';\nimport { useRootTree } from '../../hooks/useRootTree';\nimport { useSubtree } from '../../hooks/useSubtree';\nimport { createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useTreeNavigation } from './useTreeNavigation';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nexport const useTree_unstable = (props, ref)=>{\n const isSubtree = useTreeContext_unstable((ctx)=>ctx.level > 0);\n // as isSubTree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? {\n ...useSubtree(props, ref),\n treeType: 'nested'\n } : useNestedRootTree(props, ref);\n};\nfunction useNestedRootTree(props, ref) {\n const [openItems, setOpenItems] = useControllableOpenItems(props);\n const checkedItems = useNestedCheckedItems(props);\n const { navigate, initialize } = useTreeNavigation();\n const walkerRef = React.useRef();\n const { targetDocument } = useFluent_unstable();\n const initializeWalker = React.useCallback((root)=>{\n if (root && targetDocument) {\n walkerRef.current = createHTMLElementWalker(root, targetDocument, treeItemFilter);\n initialize(walkerRef.current);\n }\n }, [\n initialize,\n targetDocument\n ]);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _props_onOpenChange;\n const nextOpenItems = createNextOpenItems(data, openItems);\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()\n });\n setOpenItems(nextOpenItems);\n });\n const handleCheckedChange = useEventCallback((event, data)=>{\n if (walkerRef.current) {\n var _props_onCheckedChange;\n const nextCheckedItems = createNextNestedCheckedItems(data, checkedItems);\n (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, event, {\n ...data,\n checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()\n });\n }\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _props_onNavigation;\n (_props_onNavigation = props.onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(props, event, data);\n if (walkerRef.current && !event.isDefaultPrevented()) {\n navigate(data, walkerRef.current);\n }\n });\n return {\n treeType: 'nested',\n ...useRootTree({\n ...props,\n openItems,\n checkedItems,\n onOpenChange: handleOpenChange,\n onNavigation: handleNavigation,\n onCheckedChange: handleCheckedChange\n }, useMergedRefs(ref, initializeWalker))\n };\n}\n"],"names":["useTree_unstable","props","ref","isSubtree","useTreeContext_unstable","ctx","level","useSubtree","treeType","useNestedRootTree","openItems","setOpenItems","useControllableOpenItems","checkedItems","useNestedCheckedItems","navigate","initialize","useTreeNavigation","walkerRef","React","useRef","targetDocument","useFluent_unstable","initializeWalker","useCallback","root","current","createHTMLElementWalker","treeItemFilter","handleOpenChange","useEventCallback","event","data","_props_onOpenChange","nextOpenItems","createNextOpenItems","onOpenChange","call","dangerouslyGetInternalSet_unstable","handleCheckedChange","_props_onCheckedChange","nextCheckedItems","createNextNestedCheckedItems","onCheckedChange","dangerouslyGetInternalMap_unstable","handleNavigation","_props_onNavigation","onNavigation","isDefaultPrevented","useRootTree","useMergedRefs"],"mappings":";;;;+BAWaA;;;eAAAA;;;;iEAXU;gCACyB;0CACc;mDACM;6BAC5B;6BACZ;4BACD;yCACa;gCACT;mCACG;qCACC;AAC5B,MAAMA,mBAAmB,CAACC,OAAOC;IACpC,MAAMC,YAAYC,IAAAA,oCAAuB,EAAC,CAACC,MAAMA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOH,YAAY;QACf,GAAGI,IAAAA,sBAAU,EAACN,OAAOC,IAAI;QACzBM,UAAU;IACd,IAAIC,kBAAkBR,OAAOC;AACjC;AACA,SAASO,kBAAkBR,KAAK,EAAEC,GAAG;IACjC,MAAM,CAACQ,WAAWC,aAAa,GAAGC,IAAAA,kDAAwB,EAACX;IAC3D,MAAMY,eAAeC,IAAAA,wDAAqB,EAACb;IAC3C,MAAM,EAAEc,QAAQ,EAAEC,UAAU,EAAE,GAAGC,IAAAA,oCAAiB;IAClD,MAAMC,YAAYC,OAAMC,MAAM;IAC9B,MAAM,EAAEC,cAAc,EAAE,GAAGC,IAAAA,uCAAkB;IAC7C,MAAMC,mBAAmBJ,OAAMK,WAAW,CAAC,CAACC;QACxC,IAAIA,QAAQJ,gBAAgB;YACxBH,UAAUQ,OAAO,GAAGC,IAAAA,gDAAuB,EAACF,MAAMJ,gBAAgBO,8BAAc;YAChFZ,WAAWE,UAAUQ,OAAO;QAChC;IACJ,GAAG;QACCV;QACAK;KACH;IACD,MAAMQ,mBAAmBC,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIC;QACJ,MAAMC,gBAAgBC,IAAAA,6CAAmB,EAACH,MAAMtB;QAC/CuB,CAAAA,sBAAsBhC,MAAMmC,YAAY,AAAD,MAAO,QAAQH,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBI,IAAI,CAACpC,OAAO8B,OAAO;YACpI,GAAGC,IAAI;YACPtB,WAAWwB,cAAcI,kCAAkC;QAC/D;QACA3B,aAAauB;IACjB;IACA,MAAMK,sBAAsBT,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QACjD,IAAId,UAAUQ,OAAO,EAAE;YACnB,IAAIc;YACJ,MAAMC,mBAAmBC,IAAAA,+DAA4B,EAACV,MAAMnB;YAC3D2B,CAAAA,yBAAyBvC,MAAM0C,eAAe,AAAD,MAAO,QAAQH,2BAA2B,KAAK,IAAI,KAAK,IAAIA,uBAAuBH,IAAI,CAACpC,OAAO8B,OAAO;gBAChJ,GAAGC,IAAI;gBACPnB,cAAc4B,iBAAiBG,kCAAkC;YACrE;QACJ;IACJ;IACA,MAAMC,mBAAmBf,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIc;QACHA,CAAAA,sBAAsB7C,MAAM8C,YAAY,AAAD,MAAO,QAAQD,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBT,IAAI,CAACpC,OAAO8B,OAAOC;QACxI,IAAId,UAAUQ,OAAO,IAAI,CAACK,MAAMiB,kBAAkB,IAAI;YAClDjC,SAASiB,MAAMd,UAAUQ,OAAO;QACpC;IACJ;IACA,OAAO;QACHlB,UAAU;QACV,GAAGyC,IAAAA,wBAAW,EAAC;YACX,GAAGhD,KAAK;YACRS;YACAG;YACAuB,cAAcP;YACdkB,cAAcF;YACdF,iBAAiBJ;QACrB,GAAGW,IAAAA,6BAAa,EAAChD,KAAKqB,kBAAkB;IAC5C;AACJ"}
@@ -25,6 +25,10 @@ function useTreeItem_unstable(props, ref) {
25
25
  }
26
26
  const requestTreeResponse = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestTreeResponse);
27
27
  const contextLevel = (0, _index.useTreeContext_unstable)((ctx)=>ctx.level);
28
+ const parentValue = (0, _index.useTreeItemContext_unstable)((ctx)=>{
29
+ var _props_parentValue;
30
+ return (_props_parentValue = props.parentValue) !== null && _props_parentValue !== void 0 ? _props_parentValue : ctx.value;
31
+ });
28
32
  // note, if the value is not externally provided,
29
33
  // then selection and expansion will not work properly
30
34
  const value = (0, _reactutilities.useId)('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());
@@ -39,14 +43,17 @@ function useTreeItem_unstable(props, ref) {
39
43
  const layoutRef = _react.useRef(null);
40
44
  const subtreeRef = _react.useRef(null);
41
45
  const selectionRef = _react.useRef(null);
42
- var _props_open;
43
- const open = (0, _index.useTreeContext_unstable)((ctx)=>(_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : ctx.openItems.has(value));
46
+ const open = (0, _index.useTreeContext_unstable)((ctx)=>{
47
+ var _props_open;
48
+ return (_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : ctx.openItems.has(value);
49
+ });
44
50
  const selectionMode = (0, _index.useTreeContext_unstable)((ctx)=>ctx.selectionMode);
45
- var _ctx_checkedItems_get;
46
- const checked = (0, _index.useTreeContext_unstable)((ctx)=>(_ctx_checkedItems_get = ctx.checkedItems.get(value)) !== null && _ctx_checkedItems_get !== void 0 ? _ctx_checkedItems_get : false);
51
+ const checked = (0, _index.useTreeContext_unstable)((ctx)=>{
52
+ var _ctx_checkedItems_get;
53
+ return (_ctx_checkedItems_get = ctx.checkedItems.get(value)) !== null && _ctx_checkedItems_get !== void 0 ? _ctx_checkedItems_get : false;
54
+ });
47
55
  const handleClick = (0, _reactutilities.useEventCallback)((event)=>{
48
- var _onClick;
49
- (_onClick = onClick) === null || _onClick === void 0 ? void 0 : _onClick(event);
56
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
50
57
  if (event.isDefaultPrevented()) {
51
58
  return;
52
59
  }
@@ -64,7 +71,7 @@ function useTreeItem_unstable(props, ref) {
64
71
  }
65
72
  const isEventFromExpandIcon = expandIconRef.current && (0, _reactportal.elementContains)(expandIconRef.current, event.target);
66
73
  _reactdom.unstable_batchedUpdates(()=>{
67
- var _props_onOpenChange, _props;
74
+ var _props_onOpenChange;
68
75
  const data = {
69
76
  event,
70
77
  value,
@@ -72,16 +79,23 @@ function useTreeItem_unstable(props, ref) {
72
79
  target: event.currentTarget,
73
80
  type: isEventFromExpandIcon ? _tokens.treeDataTypes.ExpandIconClick : _tokens.treeDataTypes.Click
74
81
  };
75
- (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, data);
82
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
76
83
  requestTreeResponse({
77
84
  ...data,
78
- itemType
85
+ itemType,
86
+ requestType: 'open'
87
+ });
88
+ requestTreeResponse({
89
+ ...data,
90
+ itemType,
91
+ parentValue,
92
+ requestType: 'navigate',
93
+ type: _tokens.treeDataTypes.Click
79
94
  });
80
95
  });
81
96
  });
82
97
  const handleKeyDown = (0, _reactutilities.useEventCallback)((event)=>{
83
- var _onKeyDown;
84
- (_onKeyDown = onKeyDown) === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(event);
98
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
85
99
  // Ignore keyboard events that do not originate from the current tree item.
86
100
  if (event.isDefaultPrevented() || event.currentTarget !== event.target) {
87
101
  return;
@@ -96,7 +110,7 @@ function useTreeItem_unstable(props, ref) {
96
110
  return;
97
111
  case _tokens.treeDataTypes.Enter:
98
112
  {
99
- var _props_onOpenChange, _props;
113
+ var _props_onOpenChange;
100
114
  const data = {
101
115
  value,
102
116
  event,
@@ -104,10 +118,11 @@ function useTreeItem_unstable(props, ref) {
104
118
  type: event.key,
105
119
  target: event.currentTarget
106
120
  };
107
- (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, data);
121
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
108
122
  return requestTreeResponse({
109
123
  ...data,
110
- itemType
124
+ itemType,
125
+ requestType: 'open'
111
126
  });
112
127
  }
113
128
  case _tokens.treeDataTypes.End:
@@ -115,9 +130,11 @@ function useTreeItem_unstable(props, ref) {
115
130
  case _tokens.treeDataTypes.ArrowUp:
116
131
  case _tokens.treeDataTypes.ArrowDown:
117
132
  return requestTreeResponse({
133
+ requestType: 'navigate',
118
134
  event,
119
135
  value,
120
136
  itemType,
137
+ parentValue,
121
138
  type: event.key,
122
139
  target: event.currentTarget
123
140
  });
@@ -135,12 +152,14 @@ function useTreeItem_unstable(props, ref) {
135
152
  target: event.currentTarget
136
153
  };
137
154
  if (open) {
138
- var _props_onOpenChange1, _props1;
139
- (_props_onOpenChange1 = (_props1 = props).onOpenChange) === null || _props_onOpenChange1 === void 0 ? void 0 : _props_onOpenChange1.call(_props1, event, data);
155
+ var _props_onOpenChange1;
156
+ (_props_onOpenChange1 = props.onOpenChange) === null || _props_onOpenChange1 === void 0 ? void 0 : _props_onOpenChange1.call(props, event, data);
140
157
  }
141
158
  return requestTreeResponse({
142
159
  ...data,
143
- itemType
160
+ itemType,
161
+ parentValue,
162
+ requestType: open ? 'open' : 'navigate'
144
163
  });
145
164
  }
146
165
  case _tokens.treeDataTypes.ArrowRight:
@@ -156,22 +175,26 @@ function useTreeItem_unstable(props, ref) {
156
175
  target: event.currentTarget
157
176
  };
158
177
  if (!open) {
159
- var _props_onOpenChange2, _props2;
160
- (_props_onOpenChange2 = (_props2 = props).onOpenChange) === null || _props_onOpenChange2 === void 0 ? void 0 : _props_onOpenChange2.call(_props2, event, data);
178
+ var _props_onOpenChange2;
179
+ (_props_onOpenChange2 = props.onOpenChange) === null || _props_onOpenChange2 === void 0 ? void 0 : _props_onOpenChange2.call(props, event, data);
161
180
  }
162
181
  return requestTreeResponse({
163
182
  ...data,
164
- itemType
183
+ itemType,
184
+ parentValue,
185
+ requestType: open ? 'navigate' : 'open'
165
186
  });
166
187
  }
167
188
  const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;
168
189
  if (isTypeAheadCharacter) {
169
190
  requestTreeResponse({
191
+ requestType: 'navigate',
170
192
  event,
171
193
  target: event.currentTarget,
172
194
  value,
173
195
  itemType,
174
- type: _tokens.treeDataTypes.TypeAhead
196
+ type: _tokens.treeDataTypes.TypeAhead,
197
+ parentValue
175
198
  });
176
199
  }
177
200
  });
@@ -200,6 +223,7 @@ function useTreeItem_unstable(props, ref) {
200
223
  return;
201
224
  }
202
225
  requestTreeResponse({
226
+ requestType: 'selection',
203
227
  event,
204
228
  value,
205
229
  itemType,
@@ -251,14 +275,16 @@ function useTreeItem_unstable(props, ref) {
251
275
  }
252
276
  function warnIfNoProperPropsFlatTreeItem(props) {
253
277
  if (process.env.NODE_ENV !== 'production') {
254
- if (props['aria-posinset'] === undefined || props['aria-setsize'] === undefined || props['aria-level'] === undefined) {
278
+ if (props['aria-posinset'] === undefined || props['aria-setsize'] === undefined || props['aria-level'] === undefined || props.parentValue === undefined && props['aria-level'] !== 1) {
255
279
  // eslint-disable-next-line no-console
256
280
  console.error(`@fluentui/react-tree [${useTreeItem_unstable.name}]:
257
- A flat treeitem must have "aria-posinset", "aria-setsize", "aria-level" to ensure a11y and navigation.
281
+ A flat treeitem must have "aria-posinset", "aria-setsize", "aria-level"
282
+ and "parentValue" (if "aria-level" > 1) to ensure a11y and navigation.
258
283
 
259
284
  - "aria-posinset": the position of this treeitem in the current level of the tree.
260
285
  - "aria-setsize": the number of siblings in this level of the tree.
261
- - "aria-level": the current level of the treeitem.`);
286
+ - "aria-level": the current level of the treeitem.
287
+ - "parentValue": the "value" property of the parent item of this item.`);
262
288
  }
263
289
  }
264
290
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useTreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { getNativeElementProps, useId, useMergedRefs, useEventCallback, slot } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { useTreeContext_unstable } from '../../contexts/index';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */ export function useTreeItem_unstable(props, ref) {\n var _props_value;\n const treeType = useTreeContext_unstable((ctx)=>ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);\n const contextLevel = useTreeContext_unstable((ctx)=>ctx.level);\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const value = useId('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());\n const { onClick, onKeyDown, as = 'div', itemType = 'leaf', 'aria-level': level = contextLevel, ...rest } = props;\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const [isAsideVisible, setAsideVisible] = React.useState(true);\n const handleActionsRef = React.useCallback((actionsElement)=>{\n setAsideVisible(actionsElement === null);\n }, []);\n const actionsRef = React.useRef(null);\n const expandIconRef = React.useRef(null);\n const layoutRef = React.useRef(null);\n const subtreeRef = React.useRef(null);\n const selectionRef = React.useRef(null);\n var _props_open;\n const open = useTreeContext_unstable((ctx)=>(_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : ctx.openItems.has(value));\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n var _ctx_checkedItems_get;\n const checked = useTreeContext_unstable((ctx)=>(_ctx_checkedItems_get = ctx.checkedItems.get(value)) !== null && _ctx_checkedItems_get !== void 0 ? _ctx_checkedItems_get : false);\n const handleClick = useEventCallback((event)=>{\n var _onClick;\n (_onClick = onClick) === null || _onClick === void 0 ? void 0 : _onClick(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target);\n if (isEventFromSubtree) {\n return;\n }\n const isEventFromSelection = selectionRef.current && elementContains(selectionRef.current, event.target);\n if (isEventFromSelection) {\n return;\n }\n const isEventFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target);\n ReactDOM.unstable_batchedUpdates(()=>{\n var _props_onOpenChange, _props;\n const data = {\n event,\n value,\n open: !open,\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click\n };\n (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, data);\n requestTreeResponse({\n ...data,\n itemType\n });\n });\n });\n const handleKeyDown = useEventCallback((event)=>{\n var _onKeyDown;\n (_onKeyDown = onKeyDown) === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(event);\n // Ignore keyboard events that do not originate from the current tree item.\n if (event.isDefaultPrevented() || event.currentTarget !== event.target) {\n return;\n }\n switch(event.key){\n case Space:\n if (selectionMode !== 'none') {\n var _selectionRef_current;\n (_selectionRef_current = selectionRef.current) === null || _selectionRef_current === void 0 ? void 0 : _selectionRef_current.click();\n event.preventDefault();\n }\n return;\n case treeDataTypes.Enter:\n {\n var _props_onOpenChange, _props;\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n (_props_onOpenChange = (_props = props).onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(_props, event, data);\n return requestTreeResponse({\n ...data,\n itemType\n });\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n return requestTreeResponse({\n event,\n value,\n itemType,\n type: event.key,\n target: event.currentTarget\n });\n case treeDataTypes.ArrowLeft:\n {\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n if (open) {\n var _props_onOpenChange1, _props1;\n (_props_onOpenChange1 = (_props1 = props).onOpenChange) === null || _props_onOpenChange1 === void 0 ? void 0 : _props_onOpenChange1.call(_props1, event, data);\n }\n return requestTreeResponse({\n ...data,\n itemType\n });\n }\n case treeDataTypes.ArrowRight:\n // do not navigate or open if the item is a leaf\n if (itemType === 'leaf') {\n return;\n }\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n if (!open) {\n var _props_onOpenChange2, _props2;\n (_props_onOpenChange2 = (_props2 = props).onOpenChange) === null || _props_onOpenChange2 === void 0 ? void 0 : _props_onOpenChange2.call(_props2, event, data);\n }\n return requestTreeResponse({\n ...data,\n itemType\n });\n }\n const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead\n });\n }\n });\n const handleActionsVisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n if (!isTargetFromSubtree) {\n setActionsVisible(true);\n }\n });\n const handleActionsInvisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n const isRelatedTargetFromActions = Boolean(actionsRef.current && elementContains(actionsRef.current, event.relatedTarget));\n if (isRelatedTargetFromActions) {\n return setActionsVisible(true);\n }\n if (!isTargetFromSubtree) {\n return setActionsVisible(false);\n }\n });\n const handleChange = useEventCallback((event)=>{\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked\n });\n });\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n actionsRef: useMergedRefs(handleActionsRef, actionsRef),\n itemType,\n level,\n components: {\n root: 'div'\n },\n isAsideVisible,\n isActionsVisible,\n root: slot.always(getNativeElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n ...rest,\n ref,\n role: 'treeitem',\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n // aria-selected is required according to WAI-ARIA spec\n // https://www.w3.org/TR/wai-aria-1.1/#treeitem\n // Casting: when selectionMode is 'single', checked is a boolean\n 'aria-selected': selectionMode === 'single' ? checked : 'false',\n 'aria-expanded': itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onMouseOver: handleActionsVisible,\n onFocus: handleActionsVisible,\n onMouseOut: handleActionsInvisible,\n onBlur: handleActionsInvisible,\n onChange: handleChange\n }), {\n elementType: 'div'\n })\n };\n}\nfunction warnIfNoProperPropsFlatTreeItem(props) {\n if (process.env.NODE_ENV !== 'production') {\n if (props['aria-posinset'] === undefined || props['aria-setsize'] === undefined || props['aria-level'] === undefined) {\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-tree [${useTreeItem_unstable.name}]:\nA flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\" to ensure a11y and navigation.\n\n- \"aria-posinset\": the position of this treeitem in the current level of the tree.\n- \"aria-setsize\": the number of siblings in this level of the tree.\n- \"aria-level\": the current level of the treeitem.`);\n }\n }\n}\n"],"names":["useTreeItem_unstable","props","ref","_props_value","treeType","useTreeContext_unstable","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","contextLevel","level","value","useId","toString","onClick","onKeyDown","as","itemType","rest","isActionsVisible","setActionsVisible","React","useState","isAsideVisible","setAsideVisible","handleActionsRef","useCallback","actionsElement","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","_props_open","open","openItems","has","selectionMode","_ctx_checkedItems_get","checked","checkedItems","get","handleClick","useEventCallback","event","_onClick","isDefaultPrevented","isEventFromActions","current","elementContains","target","isEventFromSubtree","isEventFromSelection","isEventFromExpandIcon","ReactDOM","unstable_batchedUpdates","_props_onOpenChange","_props","data","currentTarget","type","treeDataTypes","ExpandIconClick","Click","onOpenChange","call","handleKeyDown","_onKeyDown","key","Space","_selectionRef_current","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","ArrowLeft","_props_onOpenChange1","_props1","ArrowRight","_props_onOpenChange2","_props2","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","TypeAhead","handleActionsVisible","isTargetFromSubtree","Boolean","handleActionsInvisible","isRelatedTargetFromActions","relatedTarget","handleChange","useMergedRefs","components","root","slot","always","getNativeElementProps","tabIndex","dataTreeItemValueAttrName","role","undefined","onMouseOver","onFocus","onMouseOut","onBlur","onChange","elementType","process","env","NODE_ENV","console","error","name"],"mappings":"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"}
1
+ {"version":3,"sources":["useTreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { getNativeElementProps, useId, useMergedRefs, useEventCallback, slot } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts/index';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */ export function useTreeItem_unstable(props, ref) {\n var _props_value;\n const treeType = useTreeContext_unstable((ctx)=>ctx.treeType);\n if (treeType === 'flat') {\n warnIfNoProperPropsFlatTreeItem(props);\n }\n const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);\n const contextLevel = useTreeContext_unstable((ctx)=>ctx.level);\n const parentValue = useTreeItemContext_unstable((ctx)=>{\n var _props_parentValue;\n return (_props_parentValue = props.parentValue) !== null && _props_parentValue !== void 0 ? _props_parentValue : ctx.value;\n });\n // note, if the value is not externally provided,\n // then selection and expansion will not work properly\n const value = useId('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());\n const { onClick, onKeyDown, as = 'div', itemType = 'leaf', 'aria-level': level = contextLevel, ...rest } = props;\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const [isAsideVisible, setAsideVisible] = React.useState(true);\n const handleActionsRef = React.useCallback((actionsElement)=>{\n setAsideVisible(actionsElement === null);\n }, []);\n const actionsRef = React.useRef(null);\n const expandIconRef = React.useRef(null);\n const layoutRef = React.useRef(null);\n const subtreeRef = React.useRef(null);\n const selectionRef = React.useRef(null);\n const open = useTreeContext_unstable((ctx)=>{\n var _props_open;\n return (_props_open = props.open) !== null && _props_open !== void 0 ? _props_open : ctx.openItems.has(value);\n });\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n const checked = useTreeContext_unstable((ctx)=>{\n var _ctx_checkedItems_get;\n return (_ctx_checkedItems_get = ctx.checkedItems.get(value)) !== null && _ctx_checkedItems_get !== void 0 ? _ctx_checkedItems_get : false;\n });\n const handleClick = useEventCallback((event)=>{\n onClick === null || onClick === void 0 ? void 0 : onClick(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target);\n if (isEventFromSubtree) {\n return;\n }\n const isEventFromSelection = selectionRef.current && elementContains(selectionRef.current, event.target);\n if (isEventFromSelection) {\n return;\n }\n const isEventFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target);\n ReactDOM.unstable_batchedUpdates(()=>{\n var _props_onOpenChange;\n const data = {\n event,\n value,\n open: !open,\n target: event.currentTarget,\n type: isEventFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click\n };\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);\n requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open'\n });\n requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: 'navigate',\n type: treeDataTypes.Click\n });\n });\n });\n const handleKeyDown = useEventCallback((event)=>{\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);\n // Ignore keyboard events that do not originate from the current tree item.\n if (event.isDefaultPrevented() || event.currentTarget !== event.target) {\n return;\n }\n switch(event.key){\n case Space:\n if (selectionMode !== 'none') {\n var _selectionRef_current;\n (_selectionRef_current = selectionRef.current) === null || _selectionRef_current === void 0 ? void 0 : _selectionRef_current.click();\n event.preventDefault();\n }\n return;\n case treeDataTypes.Enter:\n {\n var _props_onOpenChange;\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);\n return requestTreeResponse({\n ...data,\n itemType,\n requestType: 'open'\n });\n }\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n return requestTreeResponse({\n requestType: 'navigate',\n event,\n value,\n itemType,\n parentValue,\n type: event.key,\n target: event.currentTarget\n });\n case treeDataTypes.ArrowLeft:\n {\n // do not navigate to parent if the item is on the top level\n if (level === 1 && !open) {\n return;\n }\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n if (open) {\n var _props_onOpenChange1;\n (_props_onOpenChange1 = props.onOpenChange) === null || _props_onOpenChange1 === void 0 ? void 0 : _props_onOpenChange1.call(props, event, data);\n }\n return requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: open ? 'open' : 'navigate'\n });\n }\n case treeDataTypes.ArrowRight:\n // do not navigate or open if the item is a leaf\n if (itemType === 'leaf') {\n return;\n }\n const data = {\n value,\n event,\n open: !open,\n type: event.key,\n target: event.currentTarget\n };\n if (!open) {\n var _props_onOpenChange2;\n (_props_onOpenChange2 = props.onOpenChange) === null || _props_onOpenChange2 === void 0 ? void 0 : _props_onOpenChange2.call(props, event, data);\n }\n return requestTreeResponse({\n ...data,\n itemType,\n parentValue,\n requestType: open ? 'navigate' : 'open'\n });\n }\n const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n requestType: 'navigate',\n event,\n target: event.currentTarget,\n value,\n itemType,\n type: treeDataTypes.TypeAhead,\n parentValue\n });\n }\n });\n const handleActionsVisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n if (!isTargetFromSubtree) {\n setActionsVisible(true);\n }\n });\n const handleActionsInvisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n const isRelatedTargetFromActions = Boolean(actionsRef.current && elementContains(actionsRef.current, event.relatedTarget));\n if (isRelatedTargetFromActions) {\n return setActionsVisible(true);\n }\n if (!isTargetFromSubtree) {\n return setActionsVisible(false);\n }\n });\n const handleChange = useEventCallback((event)=>{\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target);\n if (isEventFromSubtree) {\n return;\n }\n requestTreeResponse({\n requestType: 'selection',\n event,\n value,\n itemType,\n type: 'Change',\n target: event.currentTarget,\n checked: checked === 'mixed' ? true : !checked\n });\n });\n return {\n value,\n open,\n checked,\n subtreeRef,\n layoutRef,\n selectionRef,\n expandIconRef,\n actionsRef: useMergedRefs(handleActionsRef, actionsRef),\n itemType,\n level,\n components: {\n root: 'div'\n },\n isAsideVisible,\n isActionsVisible,\n root: slot.always(getNativeElementProps(as, {\n tabIndex: -1,\n [dataTreeItemValueAttrName]: value,\n ...rest,\n ref,\n role: 'treeitem',\n 'aria-level': level,\n 'aria-checked': selectionMode === 'multiselect' ? checked : undefined,\n // aria-selected is required according to WAI-ARIA spec\n // https://www.w3.org/TR/wai-aria-1.1/#treeitem\n // Casting: when selectionMode is 'single', checked is a boolean\n 'aria-selected': selectionMode === 'single' ? checked : 'false',\n 'aria-expanded': itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onMouseOver: handleActionsVisible,\n onFocus: handleActionsVisible,\n onMouseOut: handleActionsInvisible,\n onBlur: handleActionsInvisible,\n onChange: handleChange\n }), {\n elementType: 'div'\n })\n };\n}\nfunction warnIfNoProperPropsFlatTreeItem(props) {\n if (process.env.NODE_ENV !== 'production') {\n if (props['aria-posinset'] === undefined || props['aria-setsize'] === undefined || props['aria-level'] === undefined || props.parentValue === undefined && props['aria-level'] !== 1) {\n // eslint-disable-next-line no-console\n console.error(`@fluentui/react-tree [${useTreeItem_unstable.name}]:\nA flat treeitem must have \"aria-posinset\", \"aria-setsize\", \"aria-level\"\nand \"parentValue\" (if \"aria-level\" > 1) to ensure a11y and navigation.\n\n- \"aria-posinset\": the position of this treeitem in the current level of the tree.\n- \"aria-setsize\": the number of siblings in this level of the tree.\n- \"aria-level\": the current level of the treeitem.\n- \"parentValue\": the \"value\" property of the parent item of this item.`);\n }\n }\n}\n"],"names":["useTreeItem_unstable","props","ref","_props_value","treeType","useTreeContext_unstable","ctx","warnIfNoProperPropsFlatTreeItem","requestTreeResponse","contextLevel","level","parentValue","useTreeItemContext_unstable","_props_parentValue","value","useId","toString","onClick","onKeyDown","as","itemType","rest","isActionsVisible","setActionsVisible","React","useState","isAsideVisible","setAsideVisible","handleActionsRef","useCallback","actionsElement","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","open","_props_open","openItems","has","selectionMode","checked","_ctx_checkedItems_get","checkedItems","get","handleClick","useEventCallback","event","isDefaultPrevented","isEventFromActions","current","elementContains","target","isEventFromSubtree","isEventFromSelection","isEventFromExpandIcon","ReactDOM","unstable_batchedUpdates","_props_onOpenChange","data","currentTarget","type","treeDataTypes","ExpandIconClick","Click","onOpenChange","call","requestType","handleKeyDown","key","Space","_selectionRef_current","click","preventDefault","Enter","End","Home","ArrowUp","ArrowDown","ArrowLeft","_props_onOpenChange1","ArrowRight","_props_onOpenChange2","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","TypeAhead","handleActionsVisible","isTargetFromSubtree","Boolean","handleActionsInvisible","isRelatedTargetFromActions","relatedTarget","handleChange","useMergedRefs","components","root","slot","always","getNativeElementProps","tabIndex","dataTreeItemValueAttrName","role","undefined","onMouseOver","onFocus","onMouseOut","onBlur","onChange","elementType","process","env","NODE_ENV","console","error","name"],"mappings":";;;;+BAgBoBA;;;eAAAA;;;;iEAhBG;oEACG;gCAC0D;6BACpD;8BACV;wBACQ;uBACuC;6CAC3B;AAS/B,SAASA,qBAAqBC,KAAK,EAAEC,GAAG;IAC/C,IAAIC;IACJ,MAAMC,WAAWC,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIF,QAAQ;IAC5D,IAAIA,aAAa,QAAQ;QACrBG,gCAAgCN;IACpC;IACA,MAAMO,sBAAsBH,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAIE,mBAAmB;IAClF,MAAMC,eAAeJ,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAII,KAAK;IAC7D,MAAMC,cAAcC,IAAAA,kCAA2B,EAAC,CAACN;QAC7C,IAAIO;QACJ,OAAO,AAACA,CAAAA,qBAAqBZ,MAAMU,WAAW,AAAD,MAAO,QAAQE,uBAAuB,KAAK,IAAIA,qBAAqBP,IAAIQ,KAAK;IAC9H;IACA,iDAAiD;IACjD,sDAAsD;IACtD,MAAMA,QAAQC,IAAAA,qBAAK,EAAC,qBAAqB,AAACZ,CAAAA,eAAeF,MAAMa,KAAK,AAAD,MAAO,QAAQX,iBAAiB,KAAK,IAAI,KAAK,IAAIA,aAAaa,QAAQ;IAC1I,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,KAAK,KAAK,EAAEC,WAAW,MAAM,EAAE,cAAcV,QAAQD,YAAY,EAAE,GAAGY,MAAM,GAAGpB;IAC3G,MAAM,CAACqB,kBAAkBC,kBAAkB,GAAGC,OAAMC,QAAQ,CAAC;IAC7D,MAAM,CAACC,gBAAgBC,gBAAgB,GAAGH,OAAMC,QAAQ,CAAC;IACzD,MAAMG,mBAAmBJ,OAAMK,WAAW,CAAC,CAACC;QACxCH,gBAAgBG,mBAAmB;IACvC,GAAG,EAAE;IACL,MAAMC,aAAaP,OAAMQ,MAAM,CAAC;IAChC,MAAMC,gBAAgBT,OAAMQ,MAAM,CAAC;IACnC,MAAME,YAAYV,OAAMQ,MAAM,CAAC;IAC/B,MAAMG,aAAaX,OAAMQ,MAAM,CAAC;IAChC,MAAMI,eAAeZ,OAAMQ,MAAM,CAAC;IAClC,MAAMK,OAAOhC,IAAAA,8BAAuB,EAAC,CAACC;QAClC,IAAIgC;QACJ,OAAO,AAACA,CAAAA,cAAcrC,MAAMoC,IAAI,AAAD,MAAO,QAAQC,gBAAgB,KAAK,IAAIA,cAAchC,IAAIiC,SAAS,CAACC,GAAG,CAAC1B;IAC3G;IACA,MAAM2B,gBAAgBpC,IAAAA,8BAAuB,EAAC,CAACC,MAAMA,IAAImC,aAAa;IACtE,MAAMC,UAAUrC,IAAAA,8BAAuB,EAAC,CAACC;QACrC,IAAIqC;QACJ,OAAO,AAACA,CAAAA,wBAAwBrC,IAAIsC,YAAY,CAACC,GAAG,CAAC/B,MAAK,MAAO,QAAQ6B,0BAA0B,KAAK,IAAIA,wBAAwB;IACxI;IACA,MAAMG,cAAcC,IAAAA,gCAAgB,EAAC,CAACC;QAClC/B,YAAY,QAAQA,YAAY,KAAK,IAAI,KAAK,IAAIA,QAAQ+B;QAC1D,IAAIA,MAAMC,kBAAkB,IAAI;YAC5B;QACJ;QACA,MAAMC,qBAAqBnB,WAAWoB,OAAO,IAAIC,IAAAA,4BAAe,EAACrB,WAAWoB,OAAO,EAAEH,MAAMK,MAAM;QACjG,IAAIH,oBAAoB;YACpB;QACJ;QACA,MAAMI,qBAAqBnB,WAAWgB,OAAO,IAAIC,IAAAA,4BAAe,EAACjB,WAAWgB,OAAO,EAAEH,MAAMK,MAAM;QACjG,IAAIC,oBAAoB;YACpB;QACJ;QACA,MAAMC,uBAAuBnB,aAAae,OAAO,IAAIC,IAAAA,4BAAe,EAAChB,aAAae,OAAO,EAAEH,MAAMK,MAAM;QACvG,IAAIE,sBAAsB;YACtB;QACJ;QACA,MAAMC,wBAAwBvB,cAAckB,OAAO,IAAIC,IAAAA,4BAAe,EAACnB,cAAckB,OAAO,EAAEH,MAAMK,MAAM;QAC1GI,UAASC,uBAAuB,CAAC;YAC7B,IAAIC;YACJ,MAAMC,OAAO;gBACTZ;gBACAlC;gBACAuB,MAAM,CAACA;gBACPgB,QAAQL,MAAMa,aAAa;gBAC3BC,MAAMN,wBAAwBO,qBAAa,CAACC,eAAe,GAAGD,qBAAa,CAACE,KAAK;YACrF;YACCN,CAAAA,sBAAsB1D,MAAMiE,YAAY,AAAD,MAAO,QAAQP,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBQ,IAAI,CAAClE,OAAO+C,OAAOY;YACxIpD,oBAAoB;gBAChB,GAAGoD,IAAI;gBACPxC;gBACAgD,aAAa;YACjB;YACA5D,oBAAoB;gBAChB,GAAGoD,IAAI;gBACPxC;gBACAT;gBACAyD,aAAa;gBACbN,MAAMC,qBAAa,CAACE,KAAK;YAC7B;QACJ;IACJ;IACA,MAAMI,gBAAgBtB,IAAAA,gCAAgB,EAAC,CAACC;QACpC9B,cAAc,QAAQA,cAAc,KAAK,IAAI,KAAK,IAAIA,UAAU8B;QAChE,2EAA2E;QAC3E,IAAIA,MAAMC,kBAAkB,MAAMD,MAAMa,aAAa,KAAKb,MAAMK,MAAM,EAAE;YACpE;QACJ;QACA,OAAOL,MAAMsB,GAAG;YACZ,KAAKC,mBAAK;gBACN,IAAI9B,kBAAkB,QAAQ;oBAC1B,IAAI+B;oBACHA,CAAAA,wBAAwBpC,aAAae,OAAO,AAAD,MAAO,QAAQqB,0BAA0B,KAAK,IAAI,KAAK,IAAIA,sBAAsBC,KAAK;oBAClIzB,MAAM0B,cAAc;gBACxB;gBACA;YACJ,KAAKX,qBAAa,CAACY,KAAK;gBACpB;oBACI,IAAIhB;oBACJ,MAAMC,OAAO;wBACT9C;wBACAkC;wBACAX,MAAM,CAACA;wBACPyB,MAAMd,MAAMsB,GAAG;wBACfjB,QAAQL,MAAMa,aAAa;oBAC/B;oBACCF,CAAAA,sBAAsB1D,MAAMiE,YAAY,AAAD,MAAO,QAAQP,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBQ,IAAI,CAAClE,OAAO+C,OAAOY;oBACxI,OAAOpD,oBAAoB;wBACvB,GAAGoD,IAAI;wBACPxC;wBACAgD,aAAa;oBACjB;gBACJ;YACJ,KAAKL,qBAAa,CAACa,GAAG;YACtB,KAAKb,qBAAa,CAACc,IAAI;YACvB,KAAKd,qBAAa,CAACe,OAAO;YAC1B,KAAKf,qBAAa,CAACgB,SAAS;gBACxB,OAAOvE,oBAAoB;oBACvB4D,aAAa;oBACbpB;oBACAlC;oBACAM;oBACAT;oBACAmD,MAAMd,MAAMsB,GAAG;oBACfjB,QAAQL,MAAMa,aAAa;gBAC/B;YACJ,KAAKE,qBAAa,CAACiB,SAAS;gBACxB;oBACI,4DAA4D;oBAC5D,IAAItE,UAAU,KAAK,CAAC2B,MAAM;wBACtB;oBACJ;oBACA,MAAMuB,OAAO;wBACT9C;wBACAkC;wBACAX,MAAM,CAACA;wBACPyB,MAAMd,MAAMsB,GAAG;wBACfjB,QAAQL,MAAMa,aAAa;oBAC/B;oBACA,IAAIxB,MAAM;wBACN,IAAI4C;wBACHA,CAAAA,uBAAuBhF,MAAMiE,YAAY,AAAD,MAAO,QAAQe,yBAAyB,KAAK,IAAI,KAAK,IAAIA,qBAAqBd,IAAI,CAAClE,OAAO+C,OAAOY;oBAC/I;oBACA,OAAOpD,oBAAoB;wBACvB,GAAGoD,IAAI;wBACPxC;wBACAT;wBACAyD,aAAa/B,OAAO,SAAS;oBACjC;gBACJ;YACJ,KAAK0B,qBAAa,CAACmB,UAAU;gBACzB,gDAAgD;gBAChD,IAAI9D,aAAa,QAAQ;oBACrB;gBACJ;gBACA,MAAMwC,OAAO;oBACT9C;oBACAkC;oBACAX,MAAM,CAACA;oBACPyB,MAAMd,MAAMsB,GAAG;oBACfjB,QAAQL,MAAMa,aAAa;gBAC/B;gBACA,IAAI,CAACxB,MAAM;oBACP,IAAI8C;oBACHA,CAAAA,uBAAuBlF,MAAMiE,YAAY,AAAD,MAAO,QAAQiB,yBAAyB,KAAK,IAAI,KAAK,IAAIA,qBAAqBhB,IAAI,CAAClE,OAAO+C,OAAOY;gBAC/I;gBACA,OAAOpD,oBAAoB;oBACvB,GAAGoD,IAAI;oBACPxC;oBACAT;oBACAyD,aAAa/B,OAAO,aAAa;gBACrC;QACR;QACA,MAAM+C,uBAAuBpC,MAAMsB,GAAG,CAACe,MAAM,KAAK,KAAKrC,MAAMsB,GAAG,CAACgB,KAAK,CAAC,SAAS,CAACtC,MAAMuC,MAAM,IAAI,CAACvC,MAAMwC,OAAO,IAAI,CAACxC,MAAMyC,OAAO;QACjI,IAAIL,sBAAsB;YACtB5E,oBAAoB;gBAChB4D,aAAa;gBACbpB;gBACAK,QAAQL,MAAMa,aAAa;gBAC3B/C;gBACAM;gBACA0C,MAAMC,qBAAa,CAAC2B,SAAS;gBAC7B/E;YACJ;QACJ;IACJ;IACA,MAAMgF,uBAAuB5C,IAAAA,gCAAgB,EAAC,CAACC;QAC3C,MAAM4C,sBAAsBC,QAAQ1D,WAAWgB,OAAO,IAAIC,IAAAA,4BAAe,EAACjB,WAAWgB,OAAO,EAAEH,MAAMK,MAAM;QAC1G,IAAI,CAACuC,qBAAqB;YACtBrE,kBAAkB;QACtB;IACJ;IACA,MAAMuE,yBAAyB/C,IAAAA,gCAAgB,EAAC,CAACC;QAC7C,MAAM4C,sBAAsBC,QAAQ1D,WAAWgB,OAAO,IAAIC,IAAAA,4BAAe,EAACjB,WAAWgB,OAAO,EAAEH,MAAMK,MAAM;QAC1G,MAAM0C,6BAA6BF,QAAQ9D,WAAWoB,OAAO,IAAIC,IAAAA,4BAAe,EAACrB,WAAWoB,OAAO,EAAEH,MAAMgD,aAAa;QACxH,IAAID,4BAA4B;YAC5B,OAAOxE,kBAAkB;QAC7B;QACA,IAAI,CAACqE,qBAAqB;YACtB,OAAOrE,kBAAkB;QAC7B;IACJ;IACA,MAAM0E,eAAelD,IAAAA,gCAAgB,EAAC,CAACC;QACnC,IAAIA,MAAMC,kBAAkB,IAAI;YAC5B;QACJ;QACA,MAAMK,qBAAqBnB,WAAWgB,OAAO,IAAIC,IAAAA,4BAAe,EAACjB,WAAWgB,OAAO,EAAEH,MAAMK,MAAM;QACjG,IAAIC,oBAAoB;YACpB;QACJ;QACA9C,oBAAoB;YAChB4D,aAAa;YACbpB;YACAlC;YACAM;YACA0C,MAAM;YACNT,QAAQL,MAAMa,aAAa;YAC3BnB,SAASA,YAAY,UAAU,OAAO,CAACA;QAC3C;IACJ;IACA,OAAO;QACH5B;QACAuB;QACAK;QACAP;QACAD;QACAE;QACAH;QACAF,YAAYmE,IAAAA,6BAAa,EAACtE,kBAAkBG;QAC5CX;QACAV;QACAyF,YAAY;YACRC,MAAM;QACV;QACA1E;QACAJ;QACA8E,MAAMC,oBAAI,CAACC,MAAM,CAACC,IAAAA,qCAAqB,EAACpF,IAAI;YACxCqF,UAAU,CAAC;YACX,CAACC,sDAAyB,CAAC,EAAE3F;YAC7B,GAAGO,IAAI;YACPnB;YACAwG,MAAM;YACN,cAAchG;YACd,gBAAgB+B,kBAAkB,gBAAgBC,UAAUiE;YAC5D,uDAAuD;YACvD,+CAA+C;YAC/C,gEAAgE;YAChE,iBAAiBlE,kBAAkB,WAAWC,UAAU;YACxD,iBAAiBtB,aAAa,WAAWiB,OAAOsE;YAChD1F,SAAS6B;YACT5B,WAAWmD;YACXuC,aAAajB;YACbkB,SAASlB;YACTmB,YAAYhB;YACZiB,QAAQjB;YACRkB,UAAUf;QACd,IAAI;YACAgB,aAAa;QACjB;IACJ;AACJ;AACA,SAAS1G,gCAAgCN,KAAK;IAC1C,IAAIiH,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;QACvC,IAAInH,KAAK,CAAC,gBAAgB,KAAK0G,aAAa1G,KAAK,CAAC,eAAe,KAAK0G,aAAa1G,KAAK,CAAC,aAAa,KAAK0G,aAAa1G,MAAMU,WAAW,KAAKgG,aAAa1G,KAAK,CAAC,aAAa,KAAK,GAAG;YAClL,sCAAsC;YACtCoH,QAAQC,KAAK,CAAC,CAAC,sBAAsB,EAAEtH,qBAAqBuH,IAAI,CAAC;;;;;;;sEAOP,CAAC;QAC/D;IACJ;AACJ"}
@@ -17,7 +17,6 @@ const _reactradio = require("@fluentui/react-radio");
17
17
  const _TreeItemChevron = require("../TreeItemChevron");
18
18
  const _reacttabster = require("@fluentui/react-tabster");
19
19
  const useTreeItemLayout_unstable = (props, ref)=>{
20
- var _expandIcon, _actions;
21
20
  const { main, iconAfter, iconBefore, as = 'span' } = props;
22
21
  const layoutRef = (0, _contexts.useTreeItemContext_unstable)((ctx)=>ctx.layoutRef);
23
22
  const selectionMode = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.selectionMode);
@@ -46,7 +45,7 @@ const useTreeItemLayout_unstable = (props, ref)=>{
46
45
  },
47
46
  elementType: 'div'
48
47
  });
49
- const expandIconRefs = (0, _reactutilities.useMergedRefs)((_expandIcon = expandIcon) === null || _expandIcon === void 0 ? void 0 : _expandIcon.ref, expandIconRef);
48
+ const expandIconRefs = (0, _reactutilities.useMergedRefs)(expandIcon === null || expandIcon === void 0 ? void 0 : expandIcon.ref, expandIconRef);
50
49
  if (expandIcon) {
51
50
  expandIcon.ref = expandIconRefs;
52
51
  }
@@ -61,7 +60,7 @@ const useTreeItemLayout_unstable = (props, ref)=>{
61
60
  },
62
61
  elementType: 'div'
63
62
  }) : undefined;
64
- const actionsRefs = (0, _reactutilities.useMergedRefs)((_actions = actions) === null || _actions === void 0 ? void 0 : _actions.ref, actionsRef);
63
+ const actionsRefs = (0, _reactutilities.useMergedRefs)(actions === null || actions === void 0 ? void 0 : actions.ref, actionsRef);
65
64
  if (actions) {
66
65
  actions.ref = actionsRefs;
67
66
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useTreeItemLayout.js"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, isResolvedShorthand, useMergedRefs, slot } from '@fluentui/react-utilities';\nimport { useTreeItemContext_unstable, useTreeContext_unstable } from '../../contexts';\nimport { Checkbox } from '@fluentui/react-checkbox';\nimport { Radio } from '@fluentui/react-radio';\nimport { TreeItemChevron } from '../TreeItemChevron';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n/**\n * Create the state required to render TreeItemLayout.\n *\n * The returned state can be modified with hooks such as useTreeItemLayoutStyles_unstable,\n * before being passed to renderTreeItemLayout_unstable.\n *\n * @param props - props from this instance of TreeItemLayout\n * @param ref - reference to root HTMLElement of TreeItemLayout\n */ export const useTreeItemLayout_unstable = (props, ref)=>{\n var _expandIcon, _actions;\n const { main, iconAfter, iconBefore, as = 'span' } = props;\n const layoutRef = useTreeItemContext_unstable((ctx)=>ctx.layoutRef);\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n const [isActionsVisibleExternal, actionsShorthand] = isResolvedShorthand(props.actions) ? [\n props.actions.visible,\n {\n ...props.actions,\n visible: undefined\n }\n ] : [\n undefined,\n props.actions\n ];\n const isActionsVisible = useTreeItemContext_unstable((ctx)=>ctx.isActionsVisible) || isActionsVisibleExternal;\n const isAsideVisible = useTreeItemContext_unstable((ctx)=>ctx.isAsideVisible);\n const selectionRef = useTreeItemContext_unstable((ctx)=>ctx.selectionRef);\n const expandIconRef = useTreeItemContext_unstable((ctx)=>ctx.expandIconRef);\n const actionsRef = useTreeItemContext_unstable((ctx)=>ctx.actionsRef);\n const checked = useTreeItemContext_unstable((ctx)=>ctx.checked);\n const isBranch = useTreeItemContext_unstable((ctx)=>ctx.itemType === 'branch');\n const expandIcon = slot.optional(props.expandIcon, {\n renderByDefault: isBranch,\n defaultProps: {\n children: /*#__PURE__*/ React.createElement(TreeItemChevron, null),\n 'aria-hidden': true\n },\n elementType: 'div'\n });\n const expandIconRefs = useMergedRefs((_expandIcon = expandIcon) === null || _expandIcon === void 0 ? void 0 : _expandIcon.ref, expandIconRef);\n if (expandIcon) {\n expandIcon.ref = expandIconRefs;\n }\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: true,\n axis: 'horizontal'\n });\n const actions = isActionsVisible ? slot.optional(actionsShorthand, {\n defaultProps: {\n ...arrowNavigationProps,\n role: 'toolbar'\n },\n elementType: 'div'\n }) : undefined;\n const actionsRefs = useMergedRefs((_actions = actions) === null || _actions === void 0 ? void 0 : _actions.ref, actionsRef);\n if (actions) {\n actions.ref = actionsRefs;\n }\n return {\n components: {\n root: 'div',\n expandIcon: 'div',\n iconBefore: 'div',\n main: 'div',\n iconAfter: 'div',\n actions: 'div',\n aside: 'div',\n // Casting here to a union between checkbox and radio\n selector: selectionMode === 'multiselect' ? Checkbox : Radio\n },\n buttonContextValue: {\n size: 'small'\n },\n root: slot.always(getNativeElementProps(as, {\n ...props,\n ref: useMergedRefs(ref, layoutRef)\n }), {\n elementType: 'div'\n }),\n iconBefore: slot.optional(iconBefore, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }),\n main: slot.always(main, {\n elementType: 'div'\n }),\n iconAfter: slot.optional(iconAfter, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }),\n aside: isAsideVisible ? slot.optional(props.aside, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }) : undefined,\n actions,\n expandIcon,\n selector: slot.optional(props.selector, {\n renderByDefault: selectionMode !== 'none',\n defaultProps: {\n checked,\n tabIndex: -1,\n 'aria-hidden': true,\n ref: selectionRef\n },\n elementType: selectionMode === 'multiselect' ? Checkbox : Radio\n })\n };\n};\n"],"names":["useTreeItemLayout_unstable","props","ref","_expandIcon","_actions","main","iconAfter","iconBefore","as","layoutRef","useTreeItemContext_unstable","ctx","selectionMode","useTreeContext_unstable","isActionsVisibleExternal","actionsShorthand","isResolvedShorthand","actions","visible","undefined","isActionsVisible","isAsideVisible","selectionRef","expandIconRef","actionsRef","checked","isBranch","itemType","expandIcon","slot","optional","renderByDefault","defaultProps","children","React","createElement","TreeItemChevron","elementType","expandIconRefs","useMergedRefs","arrowNavigationProps","useArrowNavigationGroup","circular","axis","role","actionsRefs","components","root","aside","selector","Checkbox","Radio","buttonContextValue","size","always","getNativeElementProps","tabIndex"],"mappings":"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"}
1
+ {"version":3,"sources":["useTreeItemLayout.js"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, isResolvedShorthand, useMergedRefs, slot } from '@fluentui/react-utilities';\nimport { useTreeItemContext_unstable, useTreeContext_unstable } from '../../contexts';\nimport { Checkbox } from '@fluentui/react-checkbox';\nimport { Radio } from '@fluentui/react-radio';\nimport { TreeItemChevron } from '../TreeItemChevron';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n/**\n * Create the state required to render TreeItemLayout.\n *\n * The returned state can be modified with hooks such as useTreeItemLayoutStyles_unstable,\n * before being passed to renderTreeItemLayout_unstable.\n *\n * @param props - props from this instance of TreeItemLayout\n * @param ref - reference to root HTMLElement of TreeItemLayout\n */ export const useTreeItemLayout_unstable = (props, ref)=>{\n const { main, iconAfter, iconBefore, as = 'span' } = props;\n const layoutRef = useTreeItemContext_unstable((ctx)=>ctx.layoutRef);\n const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);\n const [isActionsVisibleExternal, actionsShorthand] = isResolvedShorthand(props.actions) ? [\n props.actions.visible,\n {\n ...props.actions,\n visible: undefined\n }\n ] : [\n undefined,\n props.actions\n ];\n const isActionsVisible = useTreeItemContext_unstable((ctx)=>ctx.isActionsVisible) || isActionsVisibleExternal;\n const isAsideVisible = useTreeItemContext_unstable((ctx)=>ctx.isAsideVisible);\n const selectionRef = useTreeItemContext_unstable((ctx)=>ctx.selectionRef);\n const expandIconRef = useTreeItemContext_unstable((ctx)=>ctx.expandIconRef);\n const actionsRef = useTreeItemContext_unstable((ctx)=>ctx.actionsRef);\n const checked = useTreeItemContext_unstable((ctx)=>ctx.checked);\n const isBranch = useTreeItemContext_unstable((ctx)=>ctx.itemType === 'branch');\n const expandIcon = slot.optional(props.expandIcon, {\n renderByDefault: isBranch,\n defaultProps: {\n children: /*#__PURE__*/ React.createElement(TreeItemChevron, null),\n 'aria-hidden': true\n },\n elementType: 'div'\n });\n const expandIconRefs = useMergedRefs(expandIcon === null || expandIcon === void 0 ? void 0 : expandIcon.ref, expandIconRef);\n if (expandIcon) {\n expandIcon.ref = expandIconRefs;\n }\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: true,\n axis: 'horizontal'\n });\n const actions = isActionsVisible ? slot.optional(actionsShorthand, {\n defaultProps: {\n ...arrowNavigationProps,\n role: 'toolbar'\n },\n elementType: 'div'\n }) : undefined;\n const actionsRefs = useMergedRefs(actions === null || actions === void 0 ? void 0 : actions.ref, actionsRef);\n if (actions) {\n actions.ref = actionsRefs;\n }\n return {\n components: {\n root: 'div',\n expandIcon: 'div',\n iconBefore: 'div',\n main: 'div',\n iconAfter: 'div',\n actions: 'div',\n aside: 'div',\n // Casting here to a union between checkbox and radio\n selector: selectionMode === 'multiselect' ? Checkbox : Radio\n },\n buttonContextValue: {\n size: 'small'\n },\n root: slot.always(getNativeElementProps(as, {\n ...props,\n ref: useMergedRefs(ref, layoutRef)\n }), {\n elementType: 'div'\n }),\n iconBefore: slot.optional(iconBefore, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }),\n main: slot.always(main, {\n elementType: 'div'\n }),\n iconAfter: slot.optional(iconAfter, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }),\n aside: isAsideVisible ? slot.optional(props.aside, {\n defaultProps: {\n 'aria-hidden': true\n },\n elementType: 'div'\n }) : undefined,\n actions,\n expandIcon,\n selector: slot.optional(props.selector, {\n renderByDefault: selectionMode !== 'none',\n defaultProps: {\n checked,\n tabIndex: -1,\n 'aria-hidden': true,\n ref: selectionRef\n },\n elementType: selectionMode === 'multiselect' ? Checkbox : Radio\n })\n };\n};\n"],"names":["useTreeItemLayout_unstable","props","ref","main","iconAfter","iconBefore","as","layoutRef","useTreeItemContext_unstable","ctx","selectionMode","useTreeContext_unstable","isActionsVisibleExternal","actionsShorthand","isResolvedShorthand","actions","visible","undefined","isActionsVisible","isAsideVisible","selectionRef","expandIconRef","actionsRef","checked","isBranch","itemType","expandIcon","slot","optional","renderByDefault","defaultProps","children","React","createElement","TreeItemChevron","elementType","expandIconRefs","useMergedRefs","arrowNavigationProps","useArrowNavigationGroup","circular","axis","role","actionsRefs","components","root","aside","selector","Checkbox","Radio","buttonContextValue","size","always","getNativeElementProps","tabIndex"],"mappings":"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"}