@fluentui/react-tree 9.1.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 (79) hide show
  1. package/CHANGELOG.json +341 -1
  2. package/CHANGELOG.md +90 -2
  3. package/dist/index.d.ts +30 -3
  4. package/lib/FlatTreeItem.js +1 -0
  5. package/lib/FlatTreeItem.js.map +1 -0
  6. package/lib/components/FlatTree/useFlatTree.js +61 -1
  7. package/lib/components/FlatTree/useFlatTree.js.map +1 -1
  8. package/lib/components/FlatTree/useFlatTreeNavigation.js +28 -14
  9. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  10. package/lib/components/FlatTree/useHeadlessFlatTree.js +22 -19
  11. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  12. package/lib/components/FlatTreeItem/FlatTreeItem.js +4 -0
  13. package/lib/components/FlatTreeItem/FlatTreeItem.js.map +1 -0
  14. package/lib/components/FlatTreeItem/FlatTreeItem.types.js +1 -0
  15. package/lib/components/FlatTreeItem/FlatTreeItem.types.js.map +1 -0
  16. package/lib/components/FlatTreeItem/index.js +2 -0
  17. package/lib/components/FlatTreeItem/index.js.map +1 -0
  18. package/lib/components/Tree/Tree.types.js.map +1 -1
  19. package/lib/components/Tree/useTree.js +28 -19
  20. package/lib/components/Tree/useTree.js.map +1 -1
  21. package/lib/components/Tree/useTreeContextValues.js +2 -1
  22. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  23. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  24. package/lib/components/TreeItem/useTreeItem.js +65 -22
  25. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  26. package/lib/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  27. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  28. package/lib/contexts/treeContext.js +1 -0
  29. package/lib/contexts/treeContext.js.map +1 -1
  30. package/lib/hooks/useRootTree.js +24 -78
  31. package/lib/hooks/useRootTree.js.map +1 -1
  32. package/lib/hooks/useSubtree.js.map +1 -1
  33. package/lib/index.js +4 -2
  34. package/lib/index.js.map +1 -1
  35. package/lib/utils/createHTMLElementWalker.js +4 -5
  36. package/lib/utils/createHTMLElementWalker.js.map +1 -1
  37. package/lib/utils/createHeadlessTree.js +5 -3
  38. package/lib/utils/createHeadlessTree.js.map +1 -1
  39. package/lib/utils/flattenTree.js +1 -2
  40. package/lib/utils/flattenTree.js.map +1 -1
  41. package/lib/utils/normalizeOpenItems.js +1 -2
  42. package/lib/utils/normalizeOpenItems.js.map +1 -1
  43. package/lib-commonjs/FlatTreeItem.js +6 -0
  44. package/lib-commonjs/FlatTreeItem.js.map +1 -0
  45. package/lib-commonjs/components/FlatTree/useFlatTree.js +61 -1
  46. package/lib-commonjs/components/FlatTree/useFlatTree.js.map +1 -1
  47. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js +27 -13
  48. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +1 -1
  49. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +22 -19
  50. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  51. package/lib-commonjs/components/FlatTreeItem/FlatTreeItem.js +12 -0
  52. package/lib-commonjs/components/FlatTreeItem/FlatTreeItem.js.map +1 -0
  53. package/lib-commonjs/components/FlatTreeItem/FlatTreeItem.types.js +4 -0
  54. package/lib-commonjs/components/FlatTreeItem/FlatTreeItem.types.js.map +1 -0
  55. package/lib-commonjs/components/FlatTreeItem/index.js +7 -0
  56. package/lib-commonjs/components/FlatTreeItem/index.js.map +1 -0
  57. package/lib-commonjs/components/Tree/useTree.js +28 -19
  58. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  59. package/lib-commonjs/components/Tree/useTreeContextValues.js +2 -1
  60. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  61. package/lib-commonjs/components/TreeItem/useTreeItem.js +64 -21
  62. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  63. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +2 -3
  64. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  65. package/lib-commonjs/contexts/treeContext.js +1 -0
  66. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  67. package/lib-commonjs/hooks/useRootTree.js +24 -78
  68. package/lib-commonjs/hooks/useRootTree.js.map +1 -1
  69. package/lib-commonjs/index.js +11 -6
  70. package/lib-commonjs/index.js.map +1 -1
  71. package/lib-commonjs/utils/createHTMLElementWalker.js +4 -5
  72. package/lib-commonjs/utils/createHTMLElementWalker.js.map +1 -1
  73. package/lib-commonjs/utils/createHeadlessTree.js +5 -3
  74. package/lib-commonjs/utils/createHeadlessTree.js.map +1 -1
  75. package/lib-commonjs/utils/flattenTree.js +1 -2
  76. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  77. package/lib-commonjs/utils/normalizeOpenItems.js +1 -2
  78. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  79. package/package.json +15 -15
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "FlatTreeItem", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return FlatTreeItem;
9
+ }
10
+ });
11
+ const _TreeItem = require("../TreeItem/TreeItem");
12
+ const FlatTreeItem = _TreeItem.TreeItem;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["FlatTreeItem.js"],"sourcesContent":["import { TreeItem } from '../TreeItem/TreeItem';\n/**\n * The `FlatTreeItem` component represents a single item in a flat tree.\n */ export const FlatTreeItem = TreeItem;\n"],"names":["FlatTreeItem","TreeItem"],"mappings":";;;;+BAGiBA;;;eAAAA;;;0BAHQ;AAGd,MAAMA,eAAeC,kBAAQ"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _export_star = require("@swc/helpers/_/_export_star");
6
+ _export_star._(require("./FlatTreeItem"), exports);
7
+ _export_star._(require("./FlatTreeItem.types"), exports);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './FlatTreeItem';\nexport * from './FlatTreeItem.types';\n"],"names":[],"mappings":";;;;;uBAAc;uBACA"}
@@ -19,30 +19,36 @@ const _useSubtree = require("../../hooks/useSubtree");
19
19
  const _createHTMLElementWalker = require("../../utils/createHTMLElementWalker");
20
20
  const _treeItemFilter = require("../../utils/treeItemFilter");
21
21
  const _useTreeNavigation = require("./useTreeNavigation");
22
+ const _reactsharedcontexts = require("@fluentui/react-shared-contexts");
22
23
  const useTree_unstable = (props, ref)=>{
23
24
  const isSubtree = (0, _treeContext.useTreeContext_unstable)((ctx)=>ctx.level > 0);
24
25
  // as isSubTree is static, this doesn't break rule of hooks
25
26
  // and if this becomes an issue later on, this can be easily converted
26
27
  // eslint-disable-next-line react-hooks/rules-of-hooks
27
- return isSubtree ? (0, _useSubtree.useSubtree)(props, ref) : useNestedRootTree(props, ref);
28
+ return isSubtree ? {
29
+ ...(0, _useSubtree.useSubtree)(props, ref),
30
+ treeType: 'nested'
31
+ } : useNestedRootTree(props, ref);
28
32
  };
29
33
  function useNestedRootTree(props, ref) {
30
34
  const [openItems, setOpenItems] = (0, _useControllableOpenItems.useControllableOpenItems)(props);
31
35
  const checkedItems = (0, _useNestedControllableCheckedItems.useNestedCheckedItems)(props);
32
36
  const { navigate, initialize } = (0, _useTreeNavigation.useTreeNavigation)();
33
37
  const walkerRef = _react.useRef();
38
+ const { targetDocument } = (0, _reactsharedcontexts.useFluent_unstable)();
34
39
  const initializeWalker = _react.useCallback((root)=>{
35
- if (root) {
36
- walkerRef.current = (0, _createHTMLElementWalker.createHTMLElementWalker)(root, _treeItemFilter.treeItemFilter);
40
+ if (root && targetDocument) {
41
+ walkerRef.current = (0, _createHTMLElementWalker.createHTMLElementWalker)(root, targetDocument, _treeItemFilter.treeItemFilter);
37
42
  initialize(walkerRef.current);
38
43
  }
39
44
  }, [
40
- initialize
45
+ initialize,
46
+ targetDocument
41
47
  ]);
42
48
  const handleOpenChange = (0, _reactutilities.useEventCallback)((event, data)=>{
43
- var _props_onOpenChange, _props;
49
+ var _props_onOpenChange;
44
50
  const nextOpenItems = (0, _useControllableOpenItems.createNextOpenItems)(data, openItems);
45
- (_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, {
46
52
  ...data,
47
53
  openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()
48
54
  });
@@ -50,27 +56,30 @@ function useNestedRootTree(props, ref) {
50
56
  });
51
57
  const handleCheckedChange = (0, _reactutilities.useEventCallback)((event, data)=>{
52
58
  if (walkerRef.current) {
53
- var _props_onCheckedChange, _props;
59
+ var _props_onCheckedChange;
54
60
  const nextCheckedItems = (0, _useNestedControllableCheckedItems.createNextNestedCheckedItems)(data, checkedItems);
55
- (_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, {
56
62
  ...data,
57
63
  checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()
58
64
  });
59
65
  }
60
66
  });
61
67
  const handleNavigation = (0, _reactutilities.useEventCallback)((event, data)=>{
62
- var _props_onNavigation, _props;
63
- (_props_onNavigation = (_props = props).onNavigation) === null || _props_onNavigation === void 0 ? void 0 : _props_onNavigation.call(_props, event, data);
64
- 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()) {
65
71
  navigate(data, walkerRef.current);
66
72
  }
67
73
  });
68
- return (0, _useRootTree.useRootTree)({
69
- ...props,
70
- openItems,
71
- checkedItems,
72
- onOpenChange: handleOpenChange,
73
- onNavigation: handleNavigation,
74
- onCheckedChange: handleCheckedChange
75
- }, (0, _reactutilities.useMergedRefs)(ref, initializeWalker));
74
+ return {
75
+ treeType: 'nested',
76
+ ...(0, _useRootTree.useRootTree)({
77
+ ...props,
78
+ openItems,
79
+ checkedItems,
80
+ onOpenChange: handleOpenChange,
81
+ onNavigation: handleNavigation,
82
+ onCheckedChange: handleCheckedChange
83
+ }, (0, _reactutilities.useMergedRefs)(ref, initializeWalker))
84
+ };
76
85
  }
@@ -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';\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 ? useSubtree(props, ref) : 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 initializeWalker = React.useCallback((root)=>{\n if (root) {\n walkerRef.current = createHTMLElementWalker(root, treeItemFilter);\n initialize(walkerRef.current);\n }\n }, [\n initialize\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 useRootTree({\n ...props,\n openItems,\n checkedItems,\n onOpenChange: handleOpenChange,\n onNavigation: handleNavigation,\n onCheckedChange: handleCheckedChange\n }, useMergedRefs(ref, initializeWalker));\n}\n"],"names":["useTree_unstable","props","ref","isSubtree","useTreeContext_unstable","ctx","level","useSubtree","useNestedRootTree","openItems","setOpenItems","useControllableOpenItems","checkedItems","useNestedCheckedItems","navigate","initialize","useTreeNavigation","walkerRef","React","useRef","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":";;;;+BAUaA;;;eAAAA;;;;iEAVU;gCACyB;0CACc;mDACM;6BAC5B;6BACZ;4BACD;yCACa;gCACT;mCACG;AAC3B,MAAMA,mBAAmB,CAACC,OAAOC;IACpC,MAAMC,YAAYC,IAAAA,oCAAuB,EAAC,CAACC,MAAMA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOH,YAAYI,IAAAA,sBAAU,EAACN,OAAOC,OAAOM,kBAAkBP,OAAOC;AACzE;AACA,SAASM,kBAAkBP,KAAK,EAAEC,GAAG;IACjC,MAAM,CAACO,WAAWC,aAAa,GAAGC,IAAAA,kDAAwB,EAACV;IAC3D,MAAMW,eAAeC,IAAAA,wDAAqB,EAACZ;IAC3C,MAAM,EAAEa,QAAQ,EAAEC,UAAU,EAAE,GAAGC,IAAAA,oCAAiB;IAClD,MAAMC,YAAYC,OAAMC,MAAM;IAC9B,MAAMC,mBAAmBF,OAAMG,WAAW,CAAC,CAACC;QACxC,IAAIA,MAAM;YACNL,UAAUM,OAAO,GAAGC,IAAAA,gDAAuB,EAACF,MAAMG,8BAAc;YAChEV,WAAWE,UAAUM,OAAO;QAChC;IACJ,GAAG;QACCR;KACH;IACD,MAAMW,mBAAmBC,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIC,qBAAqBC;QACzB,MAAMC,gBAAgBC,IAAAA,6CAAmB,EAACJ,MAAMpB;QAC/CqB,CAAAA,sBAAsB,AAACC,CAAAA,SAAS9B,KAAI,EAAGiC,YAAY,AAAD,MAAO,QAAQJ,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBK,IAAI,CAACJ,QAAQH,OAAO;YAChJ,GAAGC,IAAI;YACPpB,WAAWuB,cAAcI,kCAAkC;QAC/D;QACA1B,aAAasB;IACjB;IACA,MAAMK,sBAAsBV,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QACjD,IAAIZ,UAAUM,OAAO,EAAE;YACnB,IAAIe,wBAAwBP;YAC5B,MAAMQ,mBAAmBC,IAAAA,+DAA4B,EAACX,MAAMjB;YAC3D0B,CAAAA,yBAAyB,AAACP,CAAAA,SAAS9B,KAAI,EAAGwC,eAAe,AAAD,MAAO,QAAQH,2BAA2B,KAAK,IAAI,KAAK,IAAIA,uBAAuBH,IAAI,CAACJ,QAAQH,OAAO;gBAC5J,GAAGC,IAAI;gBACPjB,cAAc2B,iBAAiBG,kCAAkC;YACrE;QACJ;IACJ;IACA,MAAMC,mBAAmBhB,IAAAA,gCAAgB,EAAC,CAACC,OAAOC;QAC9C,IAAIe,qBAAqBb;QACxBa,CAAAA,sBAAsB,AAACb,CAAAA,SAAS9B,KAAI,EAAG4C,YAAY,AAAD,MAAO,QAAQD,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBT,IAAI,CAACJ,QAAQH,OAAOC;QACpJ,IAAIZ,UAAUM,OAAO,EAAE;YACnBT,SAASe,MAAMZ,UAAUM,OAAO;QACpC;IACJ;IACA,OAAOuB,IAAAA,wBAAW,EAAC;QACf,GAAG7C,KAAK;QACRQ;QACAG;QACAsB,cAAcR;QACdmB,cAAcF;QACdF,iBAAiBJ;IACrB,GAAGU,IAAAA,6BAAa,EAAC7C,KAAKkB;AAC1B"}
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"}
@@ -9,11 +9,12 @@ Object.defineProperty(exports, "useTreeContextValues_unstable", {
9
9
  }
10
10
  });
11
11
  function useTreeContextValues_unstable(state) {
12
- const { openItems, checkedItems, selectionMode, level, appearance, size, requestTreeResponse } = state;
12
+ const { openItems, checkedItems, selectionMode, level, appearance, size, requestTreeResponse, treeType } = state;
13
13
  /**
14
14
  * This context is created with "@fluentui/react-context-selector",
15
15
  * there is no sense to memoize it
16
16
  */ const tree = {
17
+ treeType,
17
18
  size,
18
19
  level,
19
20
  openItems,
@@ -1 +1 @@
1
- {"version":3,"sources":["useTreeContextValues.js"],"sourcesContent":["export function useTreeContextValues_unstable(state) {\n const { openItems, checkedItems, selectionMode, level, appearance, size, requestTreeResponse } = state;\n /**\n * This context is created with \"@fluentui/react-context-selector\",\n * there is no sense to memoize it\n */ const tree = {\n size,\n level,\n openItems,\n appearance,\n checkedItems,\n selectionMode,\n requestTreeResponse\n };\n return {\n tree\n };\n}\n"],"names":["useTreeContextValues_unstable","state","openItems","checkedItems","selectionMode","level","appearance","size","requestTreeResponse","tree"],"mappings":";;;;+BAAgBA;;;eAAAA;;;AAAT,SAASA,8BAA8BC,KAAK;IAC/C,MAAM,EAAEC,SAAS,EAAEC,YAAY,EAAEC,aAAa,EAAEC,KAAK,EAAEC,UAAU,EAAEC,IAAI,EAAEC,mBAAmB,EAAE,GAAGP;IACjG;;;GAGD,GAAG,MAAMQ,OAAO;QACXF;QACAF;QACAH;QACAI;QACAH;QACAC;QACAI;IACJ;IACA,OAAO;QACHC;IACJ;AACJ"}
1
+ {"version":3,"sources":["useTreeContextValues.js"],"sourcesContent":["export function useTreeContextValues_unstable(state) {\n const { openItems, checkedItems, selectionMode, level, appearance, size, requestTreeResponse, treeType } = state;\n /**\n * This context is created with \"@fluentui/react-context-selector\",\n * there is no sense to memoize it\n */ const tree = {\n treeType,\n size,\n level,\n openItems,\n appearance,\n checkedItems,\n selectionMode,\n requestTreeResponse\n };\n return {\n tree\n };\n}\n"],"names":["useTreeContextValues_unstable","state","openItems","checkedItems","selectionMode","level","appearance","size","requestTreeResponse","treeType","tree"],"mappings":";;;;+BAAgBA;;;eAAAA;;;AAAT,SAASA,8BAA8BC,KAAK;IAC/C,MAAM,EAAEC,SAAS,EAAEC,YAAY,EAAEC,aAAa,EAAEC,KAAK,EAAEC,UAAU,EAAEC,IAAI,EAAEC,mBAAmB,EAAEC,QAAQ,EAAE,GAAGR;IAC3G;;;GAGD,GAAG,MAAMS,OAAO;QACXD;QACAF;QACAF;QACAH;QACAI;QACAH;QACAC;QACAI;IACJ;IACA,OAAO;QACHE;IACJ;AACJ"}
@@ -19,8 +19,16 @@ const _index = require("../../contexts/index");
19
19
  const _getTreeItemValueFromElement = require("../../utils/getTreeItemValueFromElement");
20
20
  function useTreeItem_unstable(props, ref) {
21
21
  var _props_value;
22
+ const treeType = (0, _index.useTreeContext_unstable)((ctx)=>ctx.treeType);
23
+ if (treeType === 'flat') {
24
+ warnIfNoProperPropsFlatTreeItem(props);
25
+ }
22
26
  const requestTreeResponse = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestTreeResponse);
23
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
+ });
24
32
  // note, if the value is not externally provided,
25
33
  // then selection and expansion will not work properly
26
34
  const value = (0, _reactutilities.useId)('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());
@@ -35,14 +43,17 @@ function useTreeItem_unstable(props, ref) {
35
43
  const layoutRef = _react.useRef(null);
36
44
  const subtreeRef = _react.useRef(null);
37
45
  const selectionRef = _react.useRef(null);
38
- var _props_open;
39
- 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
+ });
40
50
  const selectionMode = (0, _index.useTreeContext_unstable)((ctx)=>ctx.selectionMode);
41
- var _ctx_checkedItems_get;
42
- 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
+ });
43
55
  const handleClick = (0, _reactutilities.useEventCallback)((event)=>{
44
- var _onClick;
45
- (_onClick = onClick) === null || _onClick === void 0 ? void 0 : _onClick(event);
56
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
46
57
  if (event.isDefaultPrevented()) {
47
58
  return;
48
59
  }
@@ -60,7 +71,7 @@ function useTreeItem_unstable(props, ref) {
60
71
  }
61
72
  const isEventFromExpandIcon = expandIconRef.current && (0, _reactportal.elementContains)(expandIconRef.current, event.target);
62
73
  _reactdom.unstable_batchedUpdates(()=>{
63
- var _props_onOpenChange, _props;
74
+ var _props_onOpenChange;
64
75
  const data = {
65
76
  event,
66
77
  value,
@@ -68,16 +79,23 @@ function useTreeItem_unstable(props, ref) {
68
79
  target: event.currentTarget,
69
80
  type: isEventFromExpandIcon ? _tokens.treeDataTypes.ExpandIconClick : _tokens.treeDataTypes.Click
70
81
  };
71
- (_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);
72
83
  requestTreeResponse({
73
84
  ...data,
74
- itemType
85
+ itemType,
86
+ requestType: 'open'
87
+ });
88
+ requestTreeResponse({
89
+ ...data,
90
+ itemType,
91
+ parentValue,
92
+ requestType: 'navigate',
93
+ type: _tokens.treeDataTypes.Click
75
94
  });
76
95
  });
77
96
  });
78
97
  const handleKeyDown = (0, _reactutilities.useEventCallback)((event)=>{
79
- var _onKeyDown;
80
- (_onKeyDown = onKeyDown) === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(event);
98
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
81
99
  // Ignore keyboard events that do not originate from the current tree item.
82
100
  if (event.isDefaultPrevented() || event.currentTarget !== event.target) {
83
101
  return;
@@ -92,7 +110,7 @@ function useTreeItem_unstable(props, ref) {
92
110
  return;
93
111
  case _tokens.treeDataTypes.Enter:
94
112
  {
95
- var _props_onOpenChange, _props;
113
+ var _props_onOpenChange;
96
114
  const data = {
97
115
  value,
98
116
  event,
@@ -100,10 +118,11 @@ function useTreeItem_unstable(props, ref) {
100
118
  type: event.key,
101
119
  target: event.currentTarget
102
120
  };
103
- (_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);
104
122
  return requestTreeResponse({
105
123
  ...data,
106
- itemType
124
+ itemType,
125
+ requestType: 'open'
107
126
  });
108
127
  }
109
128
  case _tokens.treeDataTypes.End:
@@ -111,9 +130,11 @@ function useTreeItem_unstable(props, ref) {
111
130
  case _tokens.treeDataTypes.ArrowUp:
112
131
  case _tokens.treeDataTypes.ArrowDown:
113
132
  return requestTreeResponse({
133
+ requestType: 'navigate',
114
134
  event,
115
135
  value,
116
136
  itemType,
137
+ parentValue,
117
138
  type: event.key,
118
139
  target: event.currentTarget
119
140
  });
@@ -131,12 +152,14 @@ function useTreeItem_unstable(props, ref) {
131
152
  target: event.currentTarget
132
153
  };
133
154
  if (open) {
134
- var _props_onOpenChange1, _props1;
135
- (_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);
136
157
  }
137
158
  return requestTreeResponse({
138
159
  ...data,
139
- itemType
160
+ itemType,
161
+ parentValue,
162
+ requestType: open ? 'open' : 'navigate'
140
163
  });
141
164
  }
142
165
  case _tokens.treeDataTypes.ArrowRight:
@@ -152,22 +175,26 @@ function useTreeItem_unstable(props, ref) {
152
175
  target: event.currentTarget
153
176
  };
154
177
  if (!open) {
155
- var _props_onOpenChange2, _props2;
156
- (_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);
157
180
  }
158
181
  return requestTreeResponse({
159
182
  ...data,
160
- itemType
183
+ itemType,
184
+ parentValue,
185
+ requestType: open ? 'navigate' : 'open'
161
186
  });
162
187
  }
163
188
  const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;
164
189
  if (isTypeAheadCharacter) {
165
190
  requestTreeResponse({
191
+ requestType: 'navigate',
166
192
  event,
167
193
  target: event.currentTarget,
168
194
  value,
169
195
  itemType,
170
- type: _tokens.treeDataTypes.TypeAhead
196
+ type: _tokens.treeDataTypes.TypeAhead,
197
+ parentValue
171
198
  });
172
199
  }
173
200
  });
@@ -196,6 +223,7 @@ function useTreeItem_unstable(props, ref) {
196
223
  return;
197
224
  }
198
225
  requestTreeResponse({
226
+ requestType: 'selection',
199
227
  event,
200
228
  value,
201
229
  itemType,
@@ -245,3 +273,18 @@ function useTreeItem_unstable(props, ref) {
245
273
  })
246
274
  };
247
275
  }
276
+ function warnIfNoProperPropsFlatTreeItem(props) {
277
+ if (process.env.NODE_ENV !== 'production') {
278
+ if (props['aria-posinset'] === undefined || props['aria-setsize'] === undefined || props['aria-level'] === undefined || props.parentValue === undefined && props['aria-level'] !== 1) {
279
+ // eslint-disable-next-line no-console
280
+ console.error(`@fluentui/react-tree [${useTreeItem_unstable.name}]:
281
+ A flat treeitem must have "aria-posinset", "aria-setsize", "aria-level"
282
+ and "parentValue" (if "aria-level" > 1) to ensure a11y and navigation.
283
+
284
+ - "aria-posinset": the position of this treeitem in the current level of the tree.
285
+ - "aria-setsize": the number of siblings in this level of the tree.
286
+ - "aria-level": the current level of the treeitem.
287
+ - "parentValue": the "value" property of the parent item of this item.`);
288
+ }
289
+ }
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 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}\n"],"names":["useTreeItem_unstable","props","ref","_props_value","requestTreeResponse","useTreeContext_unstable","ctx","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"],"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":"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"}
@@ -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":";;;;+BAeiBA;;;eAAAA;;;;iEAfM;gCACyD;0BACX;+BAC5C;4BACH;iCACU;8BACQ;AAS7B,MAAMA,6BAA6B,CAACC,OAAOC;IAClD,IAAIC,aAAaC;IACjB,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,UAAU,EAAEC,KAAK,MAAM,EAAE,GAAGP;IACrD,MAAMQ,YAAYC,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIF,SAAS;IAClE,MAAMG,gBAAgBC,IAAAA,iCAAuB,EAAC,CAACF,MAAMA,IAAIC,aAAa;IACtE,MAAM,CAACE,0BAA0BC,iBAAiB,GAAGC,IAAAA,mCAAmB,EAACf,MAAMgB,OAAO,IAAI;QACtFhB,MAAMgB,OAAO,CAACC,OAAO;QACrB;YACI,GAAGjB,MAAMgB,OAAO;YAChBC,SAASC;QACb;KACH,GAAG;QACAA;QACAlB,MAAMgB,OAAO;KAChB;IACD,MAAMG,mBAAmBV,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIS,gBAAgB,KAAKN;IACrF,MAAMO,iBAAiBX,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIU,cAAc;IAC5E,MAAMC,eAAeZ,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIW,YAAY;IACxE,MAAMC,gBAAgBb,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIY,aAAa;IAC1E,MAAMC,aAAad,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIa,UAAU;IACpE,MAAMC,UAAUf,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIc,OAAO;IAC9D,MAAMC,WAAWhB,IAAAA,qCAA2B,EAAC,CAACC,MAAMA,IAAIgB,QAAQ,KAAK;IACrE,MAAMC,aAAaC,oBAAI,CAACC,QAAQ,CAAC7B,MAAM2B,UAAU,EAAE;QAC/CG,iBAAiBL;QACjBM,cAAc;YACVC,UAAU,WAAW,GAAGC,OAAMC,aAAa,CAACC,gCAAe,EAAE;YAC7D,eAAe;QACnB;QACAC,aAAa;IACjB;IACA,MAAMC,iBAAiBC,IAAAA,6BAAa,EAAC,AAACpC,CAAAA,cAAcyB,UAAS,MAAO,QAAQzB,gBAAgB,KAAK,IAAI,KAAK,IAAIA,YAAYD,GAAG,EAAEqB;IAC/H,IAAIK,YAAY;QACZA,WAAW1B,GAAG,GAAGoC;IACrB;IACA,MAAME,uBAAuBC,IAAAA,qCAAuB,EAAC;QACjDC,UAAU;QACVC,MAAM;IACV;IACA,MAAM1B,UAAUG,mBAAmBS,oBAAI,CAACC,QAAQ,CAACf,kBAAkB;QAC/DiB,cAAc;YACV,GAAGQ,oBAAoB;YACvBI,MAAM;QACV;QACAP,aAAa;IACjB,KAAKlB;IACL,MAAM0B,cAAcN,IAAAA,6BAAa,EAAC,AAACnC,CAAAA,WAAWa,OAAM,MAAO,QAAQb,aAAa,KAAK,IAAI,KAAK,IAAIA,SAASF,GAAG,EAAEsB;IAChH,IAAIP,SAAS;QACTA,QAAQf,GAAG,GAAG2C;IAClB;IACA,OAAO;QACHC,YAAY;YACRC,MAAM;YACNnB,YAAY;YACZrB,YAAY;YACZF,MAAM;YACNC,WAAW;YACXW,SAAS;YACT+B,OAAO;YACP,qDAAqD;YACrDC,UAAUrC,kBAAkB,gBAAgBsC,uBAAQ,GAAGC,iBAAK;QAChE;QACAC,oBAAoB;YAChBC,MAAM;QACV;QACAN,MAAMlB,oBAAI,CAACyB,MAAM,CAACC,IAAAA,qCAAqB,EAAC/C,IAAI;YACxC,GAAGP,KAAK;YACRC,KAAKqC,IAAAA,6BAAa,EAACrC,KAAKO;QAC5B,IAAI;YACA4B,aAAa;QACjB;QACA9B,YAAYsB,oBAAI,CAACC,QAAQ,CAACvB,YAAY;YAClCyB,cAAc;gBACV,eAAe;YACnB;YACAK,aAAa;QACjB;QACAhC,MAAMwB,oBAAI,CAACyB,MAAM,CAACjD,MAAM;YACpBgC,aAAa;QACjB;QACA/B,WAAWuB,oBAAI,CAACC,QAAQ,CAACxB,WAAW;YAChC0B,cAAc;gBACV,eAAe;YACnB;YACAK,aAAa;QACjB;QACAW,OAAO3B,iBAAiBQ,oBAAI,CAACC,QAAQ,CAAC7B,MAAM+C,KAAK,EAAE;YAC/ChB,cAAc;gBACV,eAAe;YACnB;YACAK,aAAa;QACjB,KAAKlB;QACLF;QACAW;QACAqB,UAAUpB,oBAAI,CAACC,QAAQ,CAAC7B,MAAMgD,QAAQ,EAAE;YACpClB,iBAAiBnB,kBAAkB;YACnCoB,cAAc;gBACVP;gBACA+B,UAAU,CAAC;gBACX,eAAe;gBACftD,KAAKoB;YACT;YACAe,aAAazB,kBAAkB,gBAAgBsC,uBAAQ,GAAGC,iBAAK;QACnE;IACJ;AACJ"}
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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"}
@@ -23,6 +23,7 @@ const _reactcontextselector = require("@fluentui/react-context-selector");
23
23
  const _ImmutableSet = require("../utils/ImmutableSet");
24
24
  const _ImmutableMap = require("../utils/ImmutableMap");
25
25
  const defaultContextValue = {
26
+ treeType: 'nested',
26
27
  level: 0,
27
28
  selectionMode: 'none',
28
29
  openItems: _ImmutableSet.ImmutableSet.empty,
@@ -1 +1 @@
1
- {"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nconst defaultContextValue = {\n level: 0,\n selectionMode: 'none',\n openItems: ImmutableSet.empty,\n checkedItems: ImmutableMap.empty,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","level","selectionMode","openItems","ImmutableSet","empty","checkedItems","ImmutableMap","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAcaA,WAAW;eAAXA;;IACYC,YAAY;eAAZA;;IACZC,uBAAuB;eAAvBA;;;sCAhBqC;8BACrB;8BACA;AAC7B,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,eAAe;IACfC,WAAWC,0BAAY,CAACC,KAAK;IAC7BC,cAAcC,0BAAY,CAACF,KAAK;IAChCG,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF;AACT,QAAQ,GAAG;AACJ,MAAMZ,cAAce,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUhB,YAAY,EAAE,GAAGD;AACnC,MAAME,0BAA0B,CAACgB,WAAWC,IAAAA,wCAAkB,EAACnB,aAAa,CAACoB,MAAMjB,mBAAmB,GAAGe,SAASE"}
1
+ {"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { ImmutableMap } from '../utils/ImmutableMap';\nconst defaultContextValue = {\n treeType: 'nested',\n level: 0,\n selectionMode: 'none',\n openItems: ImmutableSet.empty,\n checkedItems: ImmutableMap.empty,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","treeType","level","selectionMode","openItems","ImmutableSet","empty","checkedItems","ImmutableMap","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAeaA,WAAW;eAAXA;;IACYC,YAAY;eAAZA;;IACZC,uBAAuB;eAAvBA;;;sCAjBqC;8BACrB;8BACA;AAC7B,MAAMC,sBAAsB;IACxBC,UAAU;IACVC,OAAO;IACPC,eAAe;IACfC,WAAWC,0BAAY,CAACC,KAAK;IAC7BC,cAAcC,0BAAY,CAACF,KAAK;IAChCG,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF;AACT,QAAQ,GAAG;AACJ,MAAMb,cAAcgB,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUjB,YAAY,EAAE,GAAGD;AACnC,MAAME,0BAA0B,CAACiB,WAAWC,IAAAA,wCAAkB,EAACpB,aAAa,CAACqB,MAAMlB,mBAAmB,GAAGgB,SAASE"}