@fluentui/react-tree 9.0.0-beta.30 → 9.0.0-beta.31

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 (104) hide show
  1. package/CHANGELOG.json +100 -1
  2. package/CHANGELOG.md +25 -2
  3. package/dist/index.d.ts +16 -15
  4. package/lib/components/FlatTree/FlatTree.js +6 -2
  5. package/lib/components/FlatTree/FlatTree.js.map +1 -1
  6. package/lib/components/FlatTree/index.js +2 -1
  7. package/lib/components/FlatTree/index.js.map +1 -1
  8. package/lib/components/FlatTree/renderFlatTree.js +2 -0
  9. package/lib/components/FlatTree/renderFlatTree.js.map +1 -0
  10. package/lib/components/FlatTree/useFlatControllableCheckedItems.js +27 -14
  11. package/lib/components/FlatTree/useFlatControllableCheckedItems.js.map +1 -1
  12. package/lib/components/FlatTree/useFlatTreeContextValues.js +2 -0
  13. package/lib/components/FlatTree/useFlatTreeContextValues.js.map +1 -0
  14. package/lib/components/FlatTree/useFlatTreeStyles.styles.js +1 -1
  15. package/lib/components/FlatTree/useHeadlessFlatTree.js +13 -5
  16. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  17. package/lib/components/Tree/Tree.js +2 -1
  18. package/lib/components/Tree/Tree.js.map +1 -1
  19. package/lib/components/Tree/Tree.types.js.map +1 -1
  20. package/lib/components/Tree/renderTree.js +3 -3
  21. package/lib/components/Tree/renderTree.js.map +1 -1
  22. package/lib/components/Tree/useNestedControllableCheckedItems.js +22 -0
  23. package/lib/components/Tree/useNestedControllableCheckedItems.js.map +1 -0
  24. package/lib/components/Tree/useTree.js +27 -17
  25. package/lib/components/Tree/useTree.js.map +1 -1
  26. package/lib/components/Tree/useTreeStyles.styles.js +1 -1
  27. package/lib/components/TreeItem/renderTreeItem.js +4 -4
  28. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  29. package/lib/components/TreeItem/useTreeItem.js +7 -11
  30. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  31. package/lib/components/TreeItem/useTreeItemStyles.styles.js +1 -1
  32. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +4 -4
  33. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  34. package/lib/components/TreeItemLayout/useTreeItemLayout.js +27 -19
  35. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  36. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +5 -5
  37. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +5 -5
  38. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  39. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +9 -7
  40. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  41. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +7 -7
  42. package/lib/contexts/treeItemContext.js +1 -1
  43. package/lib/contexts/treeItemContext.js.map +1 -1
  44. package/lib/hooks/useRootTree.js +4 -2
  45. package/lib/hooks/useRootTree.js.map +1 -1
  46. package/lib/hooks/useSubtree.js +4 -2
  47. package/lib/hooks/useSubtree.js.map +1 -1
  48. package/lib/utils/createHeadlessTree.js +2 -1
  49. package/lib/utils/createHeadlessTree.js.map +1 -1
  50. package/lib/utils/getTreeItemValueFromElement.js.map +1 -1
  51. package/lib-commonjs/components/FlatTree/FlatTree.js +4 -3
  52. package/lib-commonjs/components/FlatTree/FlatTree.js.map +1 -1
  53. package/lib-commonjs/components/FlatTree/index.js +2 -11
  54. package/lib-commonjs/components/FlatTree/index.js.map +1 -1
  55. package/lib-commonjs/components/FlatTree/renderFlatTree.js +10 -0
  56. package/lib-commonjs/components/FlatTree/renderFlatTree.js.map +1 -0
  57. package/lib-commonjs/components/FlatTree/useFlatControllableCheckedItems.js +27 -14
  58. package/lib-commonjs/components/FlatTree/useFlatControllableCheckedItems.js.map +1 -1
  59. package/lib-commonjs/components/FlatTree/useFlatTreeContextValues.js +10 -0
  60. package/lib-commonjs/components/FlatTree/useFlatTreeContextValues.js.map +1 -0
  61. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js +2 -2
  62. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js.map +1 -1
  63. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +13 -5
  64. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -1
  65. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  66. package/lib-commonjs/components/Tree/renderTree.js +2 -2
  67. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  68. package/lib-commonjs/components/Tree/useNestedControllableCheckedItems.js +37 -0
  69. package/lib-commonjs/components/Tree/useNestedControllableCheckedItems.js.map +1 -0
  70. package/lib-commonjs/components/Tree/useTree.js +27 -17
  71. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  72. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +2 -2
  73. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -1
  74. package/lib-commonjs/components/TreeItem/renderTreeItem.js +3 -3
  75. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  76. package/lib-commonjs/components/TreeItem/useTreeItem.js +5 -8
  77. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  78. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +2 -2
  79. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -1
  80. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +3 -3
  81. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  82. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +26 -18
  83. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  84. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +26 -26
  85. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -1
  86. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +4 -4
  87. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  88. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +8 -6
  89. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  90. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +40 -40
  91. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -1
  92. package/lib-commonjs/contexts/treeItemContext.js +1 -1
  93. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  94. package/lib-commonjs/hooks/useRootTree.js +3 -1
  95. package/lib-commonjs/hooks/useRootTree.js.map +1 -1
  96. package/lib-commonjs/hooks/useSubtree.js +3 -1
  97. package/lib-commonjs/hooks/useSubtree.js.map +1 -1
  98. package/lib-commonjs/utils/createHeadlessTree.js +2 -1
  99. package/lib-commonjs/utils/createHeadlessTree.js.map +1 -1
  100. package/package.json +12 -12
  101. package/lib/components/Tree/useControllableCheckedItems.js +0 -94
  102. package/lib/components/Tree/useControllableCheckedItems.js.map +0 -1
  103. package/lib-commonjs/components/Tree/useControllableCheckedItems.js +0 -103
  104. package/lib-commonjs/components/Tree/useControllableCheckedItems.js.map +0 -1
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { ImmutableMap } from '../../utils/ImmutableMap';
3
+ import { createCheckedItems } from '../../utils/createCheckedItems';
4
+ export function useNestedCheckedItems(props) {
5
+ return React.useMemo(()=>createCheckedItems(props.checkedItems), [
6
+ props.checkedItems
7
+ ]);
8
+ }
9
+ export function createNextNestedCheckedItems(data, previousCheckedItems) {
10
+ if (data.selectionMode === 'single') {
11
+ return ImmutableMap.create([
12
+ [
13
+ data.value,
14
+ data.checked
15
+ ]
16
+ ]);
17
+ }
18
+ if (data.selectionMode === 'multiselect') {
19
+ return previousCheckedItems.set(data.value, data.checked);
20
+ }
21
+ return previousCheckedItems;
22
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useNestedControllableCheckedItems.ts"],"sourcesContent":["import * as React from 'react';\nimport type { TreeCheckedChangeData, TreeProps } from './Tree.types';\nimport { ImmutableMap } from '../../utils/ImmutableMap';\nimport { createCheckedItems } from '../../utils/createCheckedItems';\nimport { TreeItemValue } from '../TreeItem/TreeItem.types';\n\nexport function useNestedCheckedItems(props: Pick<TreeProps, 'checkedItems'>) {\n return React.useMemo(() => createCheckedItems(props.checkedItems), [props.checkedItems]);\n}\n\nexport function createNextNestedCheckedItems(\n data: TreeCheckedChangeData,\n previousCheckedItems: ImmutableMap<TreeItemValue, 'mixed' | boolean>,\n): ImmutableMap<TreeItemValue, 'mixed' | boolean> {\n if (data.selectionMode === 'single') {\n return ImmutableMap.create([[data.value, data.checked]]);\n }\n if (data.selectionMode === 'multiselect') {\n return previousCheckedItems.set(data.value, data.checked);\n }\n return previousCheckedItems;\n}\n"],"names":["React","ImmutableMap","createCheckedItems","useNestedCheckedItems","props","useMemo","checkedItems","createNextNestedCheckedItems","data","previousCheckedItems","selectionMode","create","value","checked","set"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,kBAAkB,QAAQ,iCAAiC;AAGpE,OAAO,SAASC,sBAAsBC,KAAsC,EAAE;IAC5E,OAAOJ,MAAMK,OAAO,CAAC,IAAMH,mBAAmBE,MAAME,YAAY,GAAG;QAACF,MAAME,YAAY;KAAC;AACzF,CAAC;AAED,OAAO,SAASC,6BACdC,IAA2B,EAC3BC,oBAAoE,EACpB;IAChD,IAAID,KAAKE,aAAa,KAAK,UAAU;QACnC,OAAOT,aAAaU,MAAM,CAAC;YAAC;gBAACH,KAAKI,KAAK;gBAAEJ,KAAKK,OAAO;aAAC;SAAC;IACzD,CAAC;IACD,IAAIL,KAAKE,aAAa,KAAK,eAAe;QACxC,OAAOD,qBAAqBK,GAAG,CAACN,KAAKI,KAAK,EAAEJ,KAAKK,OAAO;IAC1D,CAAC;IACD,OAAOJ;AACT,CAAC"}
@@ -1,16 +1,23 @@
1
1
  import * as React from 'react';
2
2
  import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
3
3
  import { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';
4
- import { useTreeNavigation } from './useTreeNavigation';
5
- import { useControllableCheckedItems } from './useControllableCheckedItems';
4
+ import { createNextNestedCheckedItems, useNestedCheckedItems } from './useNestedControllableCheckedItems';
6
5
  import { useTreeContext_unstable } from '../../contexts/treeContext';
7
6
  import { useRootTree } from '../../hooks/useRootTree';
8
7
  import { useSubtree } from '../../hooks/useSubtree';
9
8
  import { createHTMLElementWalker } from '../../utils/createHTMLElementWalker';
10
9
  import { treeItemFilter } from '../../utils/treeItemFilter';
10
+ import { useTreeNavigation } from './useTreeNavigation';
11
11
  export const useTree_unstable = (props, ref)=>{
12
+ const isSubtree = useTreeContext_unstable((ctx)=>ctx.level > 0);
13
+ // as isSubTree is static, this doesn't break rule of hooks
14
+ // and if this becomes an issue later on, this can be easily converted
15
+ // eslint-disable-next-line react-hooks/rules-of-hooks
16
+ return isSubtree ? useSubtree(props, ref) : useNestedRootTree(props, ref);
17
+ };
18
+ function useNestedRootTree(props, ref) {
12
19
  const [openItems, setOpenItems] = useControllableOpenItems(props);
13
- const [checkedItems] = useControllableCheckedItems(props);
20
+ const checkedItems = useNestedCheckedItems(props);
14
21
  const { navigate , initialize } = useTreeNavigation();
15
22
  const walkerRef = React.useRef();
16
23
  const initializeWalker = React.useCallback((root)=>{
@@ -23,13 +30,22 @@ export const useTree_unstable = (props, ref)=>{
23
30
  ]);
24
31
  const handleOpenChange = useEventCallback((event, data)=>{
25
32
  var _props_onOpenChange;
26
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, data);
27
- setOpenItems(createNextOpenItems(data, openItems));
33
+ const nextOpenItems = createNextOpenItems(data, openItems);
34
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, event, {
35
+ ...data,
36
+ openItems: nextOpenItems.dangerouslyGetInternalSet_unstable()
37
+ });
38
+ setOpenItems(nextOpenItems);
28
39
  });
29
40
  const handleCheckedChange = useEventCallback((event, data)=>{
30
- var _props_onCheckedChange;
31
- (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, event, data);
32
- // TODO: implement next checked items for tree
41
+ if (walkerRef.current) {
42
+ var _props_onCheckedChange;
43
+ const nextCheckedItems = createNextNestedCheckedItems(data, checkedItems);
44
+ (_props_onCheckedChange = props.onCheckedChange) === null || _props_onCheckedChange === void 0 ? void 0 : _props_onCheckedChange.call(props, event, {
45
+ ...data,
46
+ checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable()
47
+ });
48
+ }
33
49
  });
34
50
  const handleNavigation = useEventCallback((event, data)=>{
35
51
  var _props_onNavigation_unstable;
@@ -38,7 +54,7 @@ export const useTree_unstable = (props, ref)=>{
38
54
  navigate(data, walkerRef.current);
39
55
  }
40
56
  });
41
- const baseProps = {
57
+ return useRootTree({
42
58
  ...props,
43
59
  openItems,
44
60
  checkedItems,
@@ -46,11 +62,5 @@ export const useTree_unstable = (props, ref)=>{
46
62
  // eslint-disable-next-line @typescript-eslint/naming-convention
47
63
  onNavigation_unstable: handleNavigation,
48
64
  onCheckedChange: handleCheckedChange
49
- };
50
- const baseRef = useMergedRefs(ref, initializeWalker);
51
- const isSubtree = useTreeContext_unstable((ctx)=>ctx.level > 0);
52
- // as isSubTree is static, this doesn't break rule of hooks
53
- // and if this becomes an issue later on, this can be easily converted
54
- // eslint-disable-next-line react-hooks/rules-of-hooks
55
- return isSubtree ? useSubtree(baseProps, baseRef) : useRootTree(baseProps, baseRef);
56
- };
65
+ }, useMergedRefs(ref, initializeWalker));
66
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["useTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport type {\n TreeCheckedChangeData,\n TreeCheckedChangeEvent,\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n TreeState,\n} from './Tree.types';\nimport { createNextOpenItems, useControllableOpenItems } from '../../hooks/useControllableOpenItems';\nimport { useTreeNavigation } from './useTreeNavigation';\nimport { useControllableCheckedItems } from './useControllableCheckedItems';\nimport { useTreeContext_unstable } from '../../contexts/treeContext';\nimport { useRootTree } from '../../hooks/useRootTree';\nimport { useSubtree } from '../../hooks/useSubtree';\nimport { HTMLElementWalker, createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\n\nexport const useTree_unstable = (props: TreeProps, ref: React.Ref<HTMLElement>): TreeState => {\n const [openItems, setOpenItems] = useControllableOpenItems(props);\n const [checkedItems] = useControllableCheckedItems(props);\n const { navigate, initialize } = useTreeNavigation();\n const walkerRef = React.useRef<HTMLElementWalker>();\n const initializeWalker = React.useCallback(\n (root: HTMLElement | null) => {\n if (root) {\n walkerRef.current = createHTMLElementWalker(root, treeItemFilter);\n initialize(walkerRef.current);\n }\n },\n [initialize],\n );\n\n const handleOpenChange = useEventCallback((event: TreeOpenChangeEvent, data: TreeOpenChangeData) => {\n props.onOpenChange?.(event, data);\n setOpenItems(createNextOpenItems(data, openItems));\n });\n const handleCheckedChange = useEventCallback((event: TreeCheckedChangeEvent, data: TreeCheckedChangeData) => {\n props.onCheckedChange?.(event, data);\n // TODO: implement next checked items for tree\n });\n const handleNavigation = useEventCallback(\n (event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable) => {\n props.onNavigation_unstable?.(event, data);\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n },\n );\n\n const baseProps = {\n ...props,\n openItems,\n checkedItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n onCheckedChange: handleCheckedChange,\n };\n\n const baseRef = useMergedRefs(ref, initializeWalker);\n\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(baseProps, baseRef) : useRootTree(baseProps, baseRef);\n};\n"],"names":["React","useEventCallback","useMergedRefs","createNextOpenItems","useControllableOpenItems","useTreeNavigation","useControllableCheckedItems","useTreeContext_unstable","useRootTree","useSubtree","createHTMLElementWalker","treeItemFilter","useTree_unstable","props","ref","openItems","setOpenItems","checkedItems","navigate","initialize","walkerRef","useRef","initializeWalker","useCallback","root","current","handleOpenChange","event","data","onOpenChange","handleCheckedChange","onCheckedChange","handleNavigation","onNavigation_unstable","baseProps","baseRef","isSubtree","ctx","level"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,EAAEC,aAAa,QAAQ,4BAA4B;AAW5E,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,uCAAuC;AACrG,SAASC,iBAAiB,QAAQ,sBAAsB;AACxD,SAASC,2BAA2B,QAAQ,gCAAgC;AAC5E,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAA4BC,uBAAuB,QAAQ,sCAAsC;AACjG,SAASC,cAAc,QAAQ,6BAA6B;AAE5D,OAAO,MAAMC,mBAAmB,CAACC,OAAkBC,MAA2C;IAC5F,MAAM,CAACC,WAAWC,aAAa,GAAGZ,yBAAyBS;IAC3D,MAAM,CAACI,aAAa,GAAGX,4BAA4BO;IACnD,MAAM,EAAEK,SAAQ,EAAEC,WAAU,EAAE,GAAGd;IACjC,MAAMe,YAAYpB,MAAMqB,MAAM;IAC9B,MAAMC,mBAAmBtB,MAAMuB,WAAW,CACxC,CAACC,OAA6B;QAC5B,IAAIA,MAAM;YACRJ,UAAUK,OAAO,GAAGf,wBAAwBc,MAAMb;YAClDQ,WAAWC,UAAUK,OAAO;QAC9B,CAAC;IACH,GACA;QAACN;KAAW;IAGd,MAAMO,mBAAmBzB,iBAAiB,CAAC0B,OAA4BC,OAA6B;YAClGf;QAAAA,CAAAA,sBAAAA,MAAMgB,YAAY,cAAlBhB,iCAAAA,KAAAA,IAAAA,oBAAAA,KAAAA,OAAqBc,OAAOC;QAC5BZ,aAAab,oBAAoByB,MAAMb;IACzC;IACA,MAAMe,sBAAsB7B,iBAAiB,CAAC0B,OAA+BC,OAAgC;YAC3Gf;QAAAA,CAAAA,yBAAAA,MAAMkB,eAAe,cAArBlB,oCAAAA,KAAAA,IAAAA,uBAAAA,KAAAA,OAAwBc,OAAOC;IAC/B,+CAA+C;IACjD;IACA,MAAMI,mBAAmB/B,iBACvB,CAAC0B,OAAqCC,OAAsC;YAC1Ef;QAAAA,CAAAA,+BAAAA,MAAMoB,qBAAqB,cAA3BpB,0CAAAA,KAAAA,IAAAA,6BAAAA,KAAAA,OAA8Bc,OAAOC;QACrC,IAAIR,UAAUK,OAAO,EAAE;YACrBP,SAASU,MAAMR,UAAUK,OAAO;QAClC,CAAC;IACH;IAGF,MAAMS,YAAY;QAChB,GAAGrB,KAAK;QACRE;QACAE;QACAY,cAAcH;QACd,gEAAgE;QAChEO,uBAAuBD;QACvBD,iBAAiBD;IACnB;IAEA,MAAMK,UAAUjC,cAAcY,KAAKQ;IAEnC,MAAMc,YAAY7B,wBAAwB8B,CAAAA,MAAOA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOF,YAAY3B,WAAWyB,WAAWC,WAAW3B,YAAY0B,WAAWC,QAAQ;AACrF,EAAE"}
1
+ {"version":3,"sources":["useTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport type {\n TreeCheckedChangeData,\n TreeCheckedChangeEvent,\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n TreeState,\n} from './Tree.types';\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 { HTMLElementWalker, createHTMLElementWalker } from '../../utils/createHTMLElementWalker';\nimport { treeItemFilter } from '../../utils/treeItemFilter';\nimport { useTreeNavigation } from './useTreeNavigation';\n\nexport const useTree_unstable = (props: TreeProps, ref: React.Ref<HTMLElement>): TreeState => {\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};\n\nfunction useNestedRootTree(props: TreeProps, ref: React.Ref<HTMLElement>): TreeState {\n const [openItems, setOpenItems] = useControllableOpenItems(props);\n const checkedItems = useNestedCheckedItems(props);\n const { navigate, initialize } = useTreeNavigation();\n const walkerRef = React.useRef<HTMLElementWalker>();\n const initializeWalker = React.useCallback(\n (root: HTMLElement | null) => {\n if (root) {\n walkerRef.current = createHTMLElementWalker(root, treeItemFilter);\n initialize(walkerRef.current);\n }\n },\n [initialize],\n );\n\n const handleOpenChange = useEventCallback((event: TreeOpenChangeEvent, data: TreeOpenChangeData) => {\n const nextOpenItems = createNextOpenItems(data, openItems);\n props.onOpenChange?.(event, {\n ...data,\n openItems: nextOpenItems.dangerouslyGetInternalSet_unstable(),\n });\n setOpenItems(nextOpenItems);\n });\n\n const handleCheckedChange = useEventCallback((event: TreeCheckedChangeEvent, data: TreeCheckedChangeData) => {\n if (walkerRef.current) {\n const nextCheckedItems = createNextNestedCheckedItems(data, checkedItems);\n props.onCheckedChange?.(event, {\n ...data,\n checkedItems: nextCheckedItems.dangerouslyGetInternalMap_unstable(),\n });\n }\n });\n const handleNavigation = useEventCallback(\n (event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable) => {\n props.onNavigation_unstable?.(event, data);\n if (walkerRef.current) {\n navigate(data, walkerRef.current);\n }\n },\n );\n\n return useRootTree(\n {\n ...props,\n openItems,\n checkedItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n onCheckedChange: handleCheckedChange,\n },\n useMergedRefs(ref, initializeWalker),\n );\n}\n"],"names":["React","useEventCallback","useMergedRefs","createNextOpenItems","useControllableOpenItems","createNextNestedCheckedItems","useNestedCheckedItems","useTreeContext_unstable","useRootTree","useSubtree","createHTMLElementWalker","treeItemFilter","useTreeNavigation","useTree_unstable","props","ref","isSubtree","ctx","level","useNestedRootTree","openItems","setOpenItems","checkedItems","navigate","initialize","walkerRef","useRef","initializeWalker","useCallback","root","current","handleOpenChange","event","data","nextOpenItems","onOpenChange","dangerouslyGetInternalSet_unstable","handleCheckedChange","nextCheckedItems","onCheckedChange","dangerouslyGetInternalMap_unstable","handleNavigation","onNavigation_unstable"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,EAAEC,aAAa,QAAQ,4BAA4B;AAW5E,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ,uCAAuC;AACrG,SAASC,4BAA4B,EAAEC,qBAAqB,QAAQ,sCAAsC;AAC1G,SAASC,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAA4BC,uBAAuB,QAAQ,sCAAsC;AACjG,SAASC,cAAc,QAAQ,6BAA6B;AAC5D,SAASC,iBAAiB,QAAQ,sBAAsB;AAExD,OAAO,MAAMC,mBAAmB,CAACC,OAAkBC,MAA2C;IAC5F,MAAMC,YAAYT,wBAAwBU,CAAAA,MAAOA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOF,YAAYP,WAAWK,OAAOC,OAAOI,kBAAkBL,OAAOC,IAAI;AAC3E,EAAE;AAEF,SAASI,kBAAkBL,KAAgB,EAAEC,GAA2B,EAAa;IACnF,MAAM,CAACK,WAAWC,aAAa,GAAGjB,yBAAyBU;IAC3D,MAAMQ,eAAehB,sBAAsBQ;IAC3C,MAAM,EAAES,SAAQ,EAAEC,WAAU,EAAE,GAAGZ;IACjC,MAAMa,YAAYzB,MAAM0B,MAAM;IAC9B,MAAMC,mBAAmB3B,MAAM4B,WAAW,CACxC,CAACC,OAA6B;QAC5B,IAAIA,MAAM;YACRJ,UAAUK,OAAO,GAAGpB,wBAAwBmB,MAAMlB;YAClDa,WAAWC,UAAUK,OAAO;QAC9B,CAAC;IACH,GACA;QAACN;KAAW;IAGd,MAAMO,mBAAmB9B,iBAAiB,CAAC+B,OAA4BC,OAA6B;YAElGnB;QADA,MAAMoB,gBAAgB/B,oBAAoB8B,MAAMb;QAChDN,CAAAA,sBAAAA,MAAMqB,YAAY,cAAlBrB,iCAAAA,KAAAA,IAAAA,oBAAAA,KAAAA,OAAqBkB,OAAO;YAC1B,GAAGC,IAAI;YACPb,WAAWc,cAAcE,kCAAkC;QAC7D;QACAf,aAAaa;IACf;IAEA,MAAMG,sBAAsBpC,iBAAiB,CAAC+B,OAA+BC,OAAgC;QAC3G,IAAIR,UAAUK,OAAO,EAAE;gBAErBhB;YADA,MAAMwB,mBAAmBjC,6BAA6B4B,MAAMX;YAC5DR,CAAAA,yBAAAA,MAAMyB,eAAe,cAArBzB,oCAAAA,KAAAA,IAAAA,uBAAAA,KAAAA,OAAwBkB,OAAO;gBAC7B,GAAGC,IAAI;gBACPX,cAAcgB,iBAAiBE,kCAAkC;YACnE;QACF,CAAC;IACH;IACA,MAAMC,mBAAmBxC,iBACvB,CAAC+B,OAAqCC,OAAsC;YAC1EnB;QAAAA,CAAAA,+BAAAA,MAAM4B,qBAAqB,cAA3B5B,0CAAAA,KAAAA,IAAAA,6BAAAA,KAAAA,OAA8BkB,OAAOC;QACrC,IAAIR,UAAUK,OAAO,EAAE;YACrBP,SAASU,MAAMR,UAAUK,OAAO;QAClC,CAAC;IACH;IAGF,OAAOtB,YACL;QACE,GAAGM,KAAK;QACRM;QACAE;QACAa,cAAcJ;QACd,gEAAgE;QAChEW,uBAAuBD;QACvBF,iBAAiBF;IACnB,GACAnC,cAAca,KAAKY;AAEvB"}
@@ -13,7 +13,7 @@ const useStyles = /*#__PURE__*/__styles({
13
13
  z8tnut: "fclwglc"
14
14
  }
15
15
  }, {
16
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f1vx9l62{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}", ".f1j0q4x9{row-gap:var(--spacingVerticalXXS);}", ".fclwglc{padding-top:var(--spacingVerticalXXS);}"]
16
+ d: [".f22iagw{display:flex;}", ".f1vx9l62{flex-direction:column;}", ".f1j0q4x9{row-gap:var(--spacingVerticalXXS);}", ".fclwglc{padding-top:var(--spacingVerticalXXS);}"]
17
17
  });
18
18
  export const useTreeStyles_unstable = state => {
19
19
  const styles = useStyles();
@@ -1,11 +1,11 @@
1
1
  /** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';
2
- import { getSlotsNext } from '@fluentui/react-utilities';
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
3
  import { TreeItemProvider } from '../../contexts';
4
4
  /**
5
5
  * Render the final JSX of TreeItem
6
6
  */ export const renderTreeItem_unstable = (state, contextValues)=>{
7
- const { slots , slotProps } = getSlotsNext(state);
8
- return /*#__PURE__*/ createElement(slots.root, slotProps.root, /*#__PURE__*/ createElement(TreeItemProvider, {
7
+ assertSlots(state);
8
+ return /*#__PURE__*/ createElement(state.root, null, /*#__PURE__*/ createElement(TreeItemProvider, {
9
9
  value: contextValues.treeItem
10
- }, slotProps.root.children));
10
+ }, state.root.children));
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["renderTreeItem.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport type { TreeItemState, TreeItemContextValues, TreeItemSlots } from './TreeItem.types';\nimport { TreeItemProvider } from '../../contexts';\n\n/**\n * Render the final JSX of TreeItem\n */\nexport const renderTreeItem_unstable = (state: TreeItemState, contextValues: TreeItemContextValues) => {\n const { slots, slotProps } = getSlotsNext<TreeItemSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n <TreeItemProvider value={contextValues.treeItem}>{slotProps.root.children}</TreeItemProvider>\n </slots.root>\n );\n};\n"],"names":["createElement","getSlotsNext","TreeItemProvider","renderTreeItem_unstable","state","contextValues","slots","slotProps","root","value","treeItem","children"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAEzD,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD;;CAEC,GACD,OAAO,MAAMC,0BAA0B,CAACC,OAAsBC,gBAAyC;IACrG,MAAM,EAAEC,MAAK,EAAEC,UAAS,EAAE,GAAGN,aAA4BG;IAEzD,qBACE,AAdJ,cAcKE,MAAME,IAAI,EAAKD,UAAUC,IAAI,gBAC5B,AAfN,cAeON;QAAiBO,OAAOJ,cAAcK,QAAQ;OAAGH,UAAUC,IAAI,CAACG,QAAQ;AAG/E,EAAE"}
1
+ {"version":3,"sources":["renderTreeItem.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { TreeItemState, TreeItemContextValues, TreeItemSlots } from './TreeItem.types';\nimport { TreeItemProvider } from '../../contexts';\n\n/**\n * Render the final JSX of TreeItem\n */\nexport const renderTreeItem_unstable = (state: TreeItemState, contextValues: TreeItemContextValues) => {\n assertSlots<TreeItemSlots>(state);\n\n return (\n <state.root>\n <TreeItemProvider value={contextValues.treeItem}>{state.root.children}</TreeItemProvider>\n </state.root>\n );\n};\n"],"names":["createElement","assertSlots","TreeItemProvider","renderTreeItem_unstable","state","contextValues","root","value","treeItem","children"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,WAAW,QAAQ,4BAA4B;AAExD,SAASC,gBAAgB,QAAQ,iBAAiB;AAElD;;CAEC,GACD,OAAO,MAAMC,0BAA0B,CAACC,OAAsBC,gBAAyC;IACrGJ,YAA2BG;IAE3B,qBACE,AAdJ,cAcKA,MAAME,IAAI,sBACT,AAfN,cAeOJ;QAAiBK,OAAOF,cAAcG,QAAQ;OAAGJ,MAAME,IAAI,CAACG,QAAQ;AAG3E,EAAE"}
@@ -1,8 +1,7 @@
1
1
  import * as React from 'react';
2
- import { getNativeElementProps, useId, useMergedRefs } from '@fluentui/react-utilities';
3
- import { useEventCallback } from '@fluentui/react-utilities';
2
+ import { getNativeElementProps, useId, useMergedRefs, useEventCallback, slot } from '@fluentui/react-utilities';
4
3
  import { elementContains } from '@fluentui/react-portal';
5
- import { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts/index';
4
+ import { useTreeContext_unstable } from '../../contexts/index';
6
5
  import { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';
7
6
  import { Space } from '@fluentui/keyboard-keys';
8
7
  import { treeDataTypes } from '../../utils/tokens';
@@ -34,13 +33,8 @@ import { treeDataTypes } from '../../utils/tokens';
34
33
  const selectionRef = React.useRef(null);
35
34
  const open = useTreeContext_unstable((ctx)=>ctx.openItems.has(value));
36
35
  const selectionMode = useTreeContext_unstable((ctx)=>ctx.selectionMode);
37
- const parentChecked = useTreeItemContext_unstable((ctx)=>ctx.checked);
38
- const checked = useTreeContext_unstable((ctx)=>{
39
- if (selectionMode === 'multiselect' && typeof parentChecked === 'boolean') {
40
- return parentChecked;
41
- }
42
- return ctx.checkedItems.get(value);
43
- });
36
+ var _ctx_checkedItems_get;
37
+ const checked = useTreeContext_unstable((ctx)=>(_ctx_checkedItems_get = ctx.checkedItems.get(value)) !== null && _ctx_checkedItems_get !== void 0 ? _ctx_checkedItems_get : false);
44
38
  const handleClick = useEventCallback((event)=>{
45
39
  onClick === null || onClick === void 0 ? void 0 : onClick(event);
46
40
  if (event.isDefaultPrevented()) {
@@ -157,7 +151,7 @@ import { treeDataTypes } from '../../utils/tokens';
157
151
  },
158
152
  isAsideVisible,
159
153
  isActionsVisible,
160
- root: getNativeElementProps(as, {
154
+ root: slot.always(getNativeElementProps(as, {
161
155
  tabIndex: -1,
162
156
  ...rest,
163
157
  ref,
@@ -174,6 +168,8 @@ import { treeDataTypes } from '../../utils/tokens';
174
168
  onMouseOut: handleActionsInvisible,
175
169
  onBlur: handleActionsInvisible,
176
170
  onChange: handleChange
171
+ }), {
172
+ elementType: 'div'
177
173
  })
178
174
  };
179
175
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport type { TreeItemProps, TreeItemState } from './TreeItem.types';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts/index';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\n\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 */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n const contextLevel = useTreeContext_unstable(ctx => ctx.level);\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?.toString());\n\n const { onClick, onKeyDown, as = 'div', itemType = 'leaf', 'aria-level': level = contextLevel, ...rest } = props;\n\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const [isAsideVisible, setAsideVisible] = React.useState(true);\n\n const handleActionsRef = (actionsElement: HTMLDivElement | null) => {\n setAsideVisible(actionsElement === null);\n };\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n\n const open = useTreeContext_unstable(ctx => ctx.openItems.has(value));\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const parentChecked = useTreeItemContext_unstable(ctx => ctx.checked);\n const checked = useTreeContext_unstable(ctx => {\n if (selectionMode === 'multiselect' && typeof parentChecked === 'boolean') {\n return parentChecked;\n }\n return ctx.checkedItems.get(value);\n });\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n const isEventFromSelection = selectionRef.current && elementContains(selectionRef.current, event.target as Node);\n if (isEventFromSelection) {\n return;\n }\n const isFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target as Node);\n requestTreeResponse({\n event,\n value,\n itemType,\n target: event.currentTarget,\n type: isFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n 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 selectionRef.current?.click();\n event.preventDefault();\n }\n return;\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.Enter:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.ArrowLeft:\n case treeDataTypes.ArrowRight:\n return requestTreeResponse({ event, target: event.currentTarget, value, itemType, type: event.key });\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({ event, target: event.currentTarget, value, itemType, type: treeDataTypes.TypeAhead });\n }\n });\n\n const handleActionsVisible = useEventCallback((event: React.FocusEvent | React.MouseEvent) => {\n const isTargetFromSubtree = Boolean(\n subtreeRef.current && elementContains(subtreeRef.current, event.target as Node),\n );\n if (!isTargetFromSubtree) {\n setActionsVisible(true);\n }\n });\n\n const handleActionsInvisible = useEventCallback((event: React.FocusEvent | React.MouseEvent) => {\n const isTargetFromSubtree = Boolean(\n subtreeRef.current && elementContains(subtreeRef.current, event.target as Node),\n );\n const isRelatedTargetFromActions = Boolean(\n actionsRef.current && elementContains(actionsRef.current, event.relatedTarget as Node),\n );\n if (isRelatedTargetFromActions) {\n return setActionsVisible(true);\n }\n if (!isTargetFromSubtree) {\n return setActionsVisible(false);\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\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\n const isBranch = itemType === 'branch';\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: getNativeElementProps(as, {\n tabIndex: -1,\n ...rest,\n ref,\n role: 'treeitem',\n 'aria-level': level,\n [dataTreeItemValueAttrName]: value,\n 'aria-checked':\n selectionMode === 'multiselect' ? (checked === 'mixed' ? undefined : checked ?? false) : undefined,\n 'aria-selected': selectionMode === 'single' ? checked : undefined,\n 'aria-expanded': isBranch ? 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 };\n}\n"],"names":["React","getNativeElementProps","useId","useMergedRefs","useEventCallback","elementContains","useTreeContext_unstable","useTreeItemContext_unstable","dataTreeItemValueAttrName","Space","treeDataTypes","useTreeItem_unstable","props","ref","contextLevel","ctx","level","value","toString","onClick","onKeyDown","as","itemType","rest","requestTreeResponse","isActionsVisible","setActionsVisible","useState","isAsideVisible","setAsideVisible","handleActionsRef","actionsElement","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","open","openItems","has","selectionMode","parentChecked","checked","checkedItems","get","handleClick","event","isDefaultPrevented","isEventFromActions","current","target","isEventFromSubtree","isEventFromSelection","isFromExpandIcon","currentTarget","type","ExpandIconClick","Click","handleKeyDown","key","click","preventDefault","End","Home","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","TypeAhead","handleActionsVisible","isTargetFromSubtree","Boolean","handleActionsInvisible","isRelatedTargetFromActions","relatedTarget","handleChange","isBranch","components","root","tabIndex","role","undefined","onMouseOver","onFocus","onMouseOut","onBlur","onChange"],"mappings":"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"}
1
+ {"version":3,"sources":["useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useId, useMergedRefs, useEventCallback, slot } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport type { TreeItemProps, TreeItemState } from './TreeItem.types';\nimport { useTreeContext_unstable } from '../../contexts/index';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\nimport { Space } from '@fluentui/keyboard-keys';\nimport { treeDataTypes } from '../../utils/tokens';\n\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 */\nexport function useTreeItem_unstable(props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState {\n const contextLevel = useTreeContext_unstable(ctx => ctx.level);\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?.toString());\n\n const { onClick, onKeyDown, as = 'div', itemType = 'leaf', 'aria-level': level = contextLevel, ...rest } = props;\n\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const [isAsideVisible, setAsideVisible] = React.useState(true);\n\n const handleActionsRef = (actionsElement: HTMLDivElement | null) => {\n setAsideVisible(actionsElement === null);\n };\n\n const actionsRef = React.useRef<HTMLDivElement>(null);\n const expandIconRef = React.useRef<HTMLDivElement>(null);\n const layoutRef = React.useRef<HTMLDivElement>(null);\n const subtreeRef = React.useRef<HTMLDivElement>(null);\n const selectionRef = React.useRef<HTMLInputElement>(null);\n\n const open = useTreeContext_unstable(ctx => ctx.openItems.has(value));\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n const checked = useTreeContext_unstable(ctx => ctx.checkedItems.get(value) ?? false);\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n const isEventFromSelection = selectionRef.current && elementContains(selectionRef.current, event.target as Node);\n if (isEventFromSelection) {\n return;\n }\n const isFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target as Node);\n requestTreeResponse({\n event,\n value,\n itemType,\n target: event.currentTarget,\n type: isFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click,\n });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n 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 selectionRef.current?.click();\n event.preventDefault();\n }\n return;\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.Enter:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.ArrowLeft:\n case treeDataTypes.ArrowRight:\n return requestTreeResponse({ event, target: event.currentTarget, value, itemType, type: event.key });\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({ event, target: event.currentTarget, value, itemType, type: treeDataTypes.TypeAhead });\n }\n });\n\n const handleActionsVisible = useEventCallback((event: React.FocusEvent | React.MouseEvent) => {\n const isTargetFromSubtree = Boolean(\n subtreeRef.current && elementContains(subtreeRef.current, event.target as Node),\n );\n if (!isTargetFromSubtree) {\n setActionsVisible(true);\n }\n });\n\n const handleActionsInvisible = useEventCallback((event: React.FocusEvent | React.MouseEvent) => {\n const isTargetFromSubtree = Boolean(\n subtreeRef.current && elementContains(subtreeRef.current, event.target as Node),\n );\n const isRelatedTargetFromActions = Boolean(\n actionsRef.current && elementContains(actionsRef.current, event.relatedTarget as Node),\n );\n if (isRelatedTargetFromActions) {\n return setActionsVisible(true);\n }\n if (!isTargetFromSubtree) {\n return setActionsVisible(false);\n }\n });\n\n const handleChange = useEventCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\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\n const isBranch = itemType === 'branch';\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(\n getNativeElementProps(as, {\n tabIndex: -1,\n ...rest,\n ref,\n role: 'treeitem',\n 'aria-level': level,\n [dataTreeItemValueAttrName]: value,\n 'aria-checked':\n selectionMode === 'multiselect' ? (checked === 'mixed' ? undefined : checked ?? false) : undefined,\n 'aria-selected': selectionMode === 'single' ? checked : undefined,\n 'aria-expanded': isBranch ? 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":["React","getNativeElementProps","useId","useMergedRefs","useEventCallback","slot","elementContains","useTreeContext_unstable","dataTreeItemValueAttrName","Space","treeDataTypes","useTreeItem_unstable","props","ref","contextLevel","ctx","level","value","toString","onClick","onKeyDown","as","itemType","rest","requestTreeResponse","isActionsVisible","setActionsVisible","useState","isAsideVisible","setAsideVisible","handleActionsRef","actionsElement","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","selectionRef","open","openItems","has","selectionMode","checked","checkedItems","get","handleClick","event","isDefaultPrevented","isEventFromActions","current","target","isEventFromSubtree","isEventFromSelection","isFromExpandIcon","currentTarget","type","ExpandIconClick","Click","handleKeyDown","key","click","preventDefault","End","Home","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","TypeAhead","handleActionsVisible","isTargetFromSubtree","Boolean","handleActionsInvisible","isRelatedTargetFromActions","relatedTarget","handleChange","isBranch","components","root","always","tabIndex","role","undefined","onMouseOver","onFocus","onMouseOut","onBlur","onChange","elementType"],"mappings":"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"}
@@ -79,7 +79,7 @@ const useRootStyles = /*#__PURE__*/__styles({
79
79
  Ghsupd: ["fs1por5", "f4stah7"]
80
80
  }
81
81
  }, {
82
- d: [".f10bgyvd{--fluent-TreeItem--level:1;}", ".f1h0rod3{--fluent-TreeItem--level:2;}", ".fgoqafk{--fluent-TreeItem--level:3;}", ".f75dvuh{--fluent-TreeItem--level:4;}", ".fqk7yw6{--fluent-TreeItem--level:5;}", ".f1r3z17b{--fluent-TreeItem--level:6;}", ".f1hrpd1h{--fluent-TreeItem--level:7;}", ".f1iy65d0{--fluent-TreeItem--level:8;}", ".ftg42e5{--fluent-TreeItem--level:9;}", ".fyat3t{--fluent-TreeItem--level:10;}", ".f10pi13n{position:relative;}", ".f1k6fduh{cursor:pointer;}", ".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f1vx9l62{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}", ".f1ewtqcl{box-sizing:border-box;}", ".fhovq9v{background-color:var(--colorSubtleBackground);}", ".fkfq4zb{color:var(--colorNeutralForeground2);}", ".flk2ux3{padding-right:var(--spacingHorizontalNone);}", ".fkl3uby{padding-left:var(--spacingHorizontalNone);}", ".f8hki3x[data-fui-focus-visible]{border-top-color:transparent;}", ".f1d2448m[data-fui-focus-visible]{border-right-color:transparent;}", ".ffh67wi[data-fui-focus-visible]{border-left-color:transparent;}", ".f1bjia2o[data-fui-focus-visible]{border-bottom-color:transparent;}", ".f15bsgw9[data-fui-focus-visible]::after{content:\"\";}", ".f14e48fq[data-fui-focus-visible]::after{position:absolute;}", ".f18yb2kv[data-fui-focus-visible]::after{pointer-events:none;}", ".fd6o370[data-fui-focus-visible]::after{z-index:1;}", ".fh1cnn4[data-fui-focus-visible]::after{border-top-style:solid;}", ".fy7oxxb[data-fui-focus-visible]::after{border-right-style:solid;}", ".f184ne2d[data-fui-focus-visible]::after{border-left-style:solid;}", ".fpukqih[data-fui-focus-visible]::after{border-bottom-style:solid;}", ".frrh606[data-fui-focus-visible]::after{border-top-width:2px;}", ".f1v5zibi[data-fui-focus-visible]::after{border-right-width:2px;}", ".fo2hd23[data-fui-focus-visible]::after{border-left-width:2px;}", ".ful5kiu[data-fui-focus-visible]::after{border-bottom-width:2px;}", ".f1jqcqds[data-fui-focus-visible]::after{border-bottom-right-radius:var(--borderRadiusMedium);}", ".ftffrms[data-fui-focus-visible]::after{border-bottom-left-radius:var(--borderRadiusMedium);}", ".f2e7qr6[data-fui-focus-visible]::after{border-top-right-radius:var(--borderRadiusMedium);}", ".fsr1zz6[data-fui-focus-visible]::after{border-top-left-radius:var(--borderRadiusMedium);}", ".f1dvezut[data-fui-focus-visible]::after{border-top-color:var(--colorStrokeFocus2);}", ".fd0oaoj[data-fui-focus-visible]::after{border-right-color:var(--colorStrokeFocus2);}", ".f1cwg4i8[data-fui-focus-visible]::after{border-left-color:var(--colorStrokeFocus2);}", ".fjvm52t[data-fui-focus-visible]::after{border-bottom-color:var(--colorStrokeFocus2);}", ".f57olzd[data-fui-focus-visible]::after{top:calc(2px * -1);}", ".f4stah7[data-fui-focus-visible]::after{right:calc(2px * -1);}", ".fs1por5[data-fui-focus-visible]::after{left:calc(2px * -1);}", ".f480a47[data-fui-focus-visible]::after{bottom:calc(2px * -1);}"],
82
+ d: [".f10bgyvd{--fluent-TreeItem--level:1;}", ".f1h0rod3{--fluent-TreeItem--level:2;}", ".fgoqafk{--fluent-TreeItem--level:3;}", ".f75dvuh{--fluent-TreeItem--level:4;}", ".fqk7yw6{--fluent-TreeItem--level:5;}", ".f1r3z17b{--fluent-TreeItem--level:6;}", ".f1hrpd1h{--fluent-TreeItem--level:7;}", ".f1iy65d0{--fluent-TreeItem--level:8;}", ".ftg42e5{--fluent-TreeItem--level:9;}", ".fyat3t{--fluent-TreeItem--level:10;}", ".f10pi13n{position:relative;}", ".f1k6fduh{cursor:pointer;}", ".f22iagw{display:flex;}", ".f1vx9l62{flex-direction:column;}", ".f1ewtqcl{box-sizing:border-box;}", ".fhovq9v{background-color:var(--colorSubtleBackground);}", ".fkfq4zb{color:var(--colorNeutralForeground2);}", ".flk2ux3{padding-right:var(--spacingHorizontalNone);}", ".fkl3uby{padding-left:var(--spacingHorizontalNone);}", ".f8hki3x[data-fui-focus-visible]{border-top-color:transparent;}", ".f1d2448m[data-fui-focus-visible]{border-right-color:transparent;}", ".ffh67wi[data-fui-focus-visible]{border-left-color:transparent;}", ".f1bjia2o[data-fui-focus-visible]{border-bottom-color:transparent;}", ".f15bsgw9[data-fui-focus-visible]::after{content:\"\";}", ".f14e48fq[data-fui-focus-visible]::after{position:absolute;}", ".f18yb2kv[data-fui-focus-visible]::after{pointer-events:none;}", ".fd6o370[data-fui-focus-visible]::after{z-index:1;}", ".fh1cnn4[data-fui-focus-visible]::after{border-top-style:solid;}", ".fy7oxxb[data-fui-focus-visible]::after{border-right-style:solid;}", ".f184ne2d[data-fui-focus-visible]::after{border-left-style:solid;}", ".fpukqih[data-fui-focus-visible]::after{border-bottom-style:solid;}", ".frrh606[data-fui-focus-visible]::after{border-top-width:2px;}", ".f1v5zibi[data-fui-focus-visible]::after{border-right-width:2px;}", ".fo2hd23[data-fui-focus-visible]::after{border-left-width:2px;}", ".ful5kiu[data-fui-focus-visible]::after{border-bottom-width:2px;}", ".f1jqcqds[data-fui-focus-visible]::after{border-bottom-right-radius:var(--borderRadiusMedium);}", ".ftffrms[data-fui-focus-visible]::after{border-bottom-left-radius:var(--borderRadiusMedium);}", ".f2e7qr6[data-fui-focus-visible]::after{border-top-right-radius:var(--borderRadiusMedium);}", ".fsr1zz6[data-fui-focus-visible]::after{border-top-left-radius:var(--borderRadiusMedium);}", ".f1dvezut[data-fui-focus-visible]::after{border-top-color:var(--colorStrokeFocus2);}", ".fd0oaoj[data-fui-focus-visible]::after{border-right-color:var(--colorStrokeFocus2);}", ".f1cwg4i8[data-fui-focus-visible]::after{border-left-color:var(--colorStrokeFocus2);}", ".fjvm52t[data-fui-focus-visible]::after{border-bottom-color:var(--colorStrokeFocus2);}", ".f57olzd[data-fui-focus-visible]::after{top:calc(2px * -1);}", ".f4stah7[data-fui-focus-visible]::after{right:calc(2px * -1);}", ".fs1por5[data-fui-focus-visible]::after{left:calc(2px * -1);}", ".f480a47[data-fui-focus-visible]::after{bottom:calc(2px * -1);}"],
83
83
  f: [".ftqa4ok:focus{outline-style:none;}"],
84
84
  i: [".f2hkw1w:focus-visible{outline-style:none;}"]
85
85
  });
@@ -1,11 +1,11 @@
1
1
  /** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';
2
- import { getSlotsNext } from '@fluentui/react-utilities';
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
3
  import { ButtonContextProvider } from '@fluentui/react-button';
4
4
  /**
5
5
  * Render the final JSX of TreeItemLayout
6
6
  */ export const renderTreeItemLayout_unstable = (state)=>{
7
- const { slots , slotProps } = getSlotsNext(state);
8
- return /*#__PURE__*/ createElement(slots.root, slotProps.root, slots.expandIcon && /*#__PURE__*/ createElement(slots.expandIcon, slotProps.expandIcon), slots.selector && /*#__PURE__*/ createElement(slots.selector, slotProps.selector), slots.iconBefore && /*#__PURE__*/ createElement(slots.iconBefore, slotProps.iconBefore), /*#__PURE__*/ createElement(slots.main, slotProps.main, slotProps.root.children), slots.iconAfter && /*#__PURE__*/ createElement(slots.iconAfter, slotProps.iconAfter), /*#__PURE__*/ createElement(ButtonContextProvider, {
7
+ assertSlots(state);
8
+ return /*#__PURE__*/ createElement(state.root, null, state.expandIcon && /*#__PURE__*/ createElement(state.expandIcon, null), state.selector && /*#__PURE__*/ createElement(state.selector, null), state.iconBefore && /*#__PURE__*/ createElement(state.iconBefore, null), /*#__PURE__*/ createElement(state.main, null, state.root.children), state.iconAfter && /*#__PURE__*/ createElement(state.iconAfter, null), /*#__PURE__*/ createElement(ButtonContextProvider, {
9
9
  value: state.buttonContextValue
10
- }, slots.actions && /*#__PURE__*/ createElement(slots.actions, slotProps.actions), slots.aside && /*#__PURE__*/ createElement(slots.aside, slotProps.aside)));
10
+ }, state.actions && /*#__PURE__*/ createElement(state.actions, null), state.aside && /*#__PURE__*/ createElement(state.aside, null)));
11
11
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["renderTreeItemLayout.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport type { TreeItemLayoutState, TreeItemLayoutSlots } from './TreeItemLayout.types';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of TreeItemLayout\n */\nexport const renderTreeItemLayout_unstable = (state: TreeItemLayoutState) => {\n const { slots, slotProps } = getSlotsNext<TreeItemLayoutSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n {slots.expandIcon && <slots.expandIcon {...slotProps.expandIcon} />}\n {slots.selector && <slots.selector {...slotProps.selector} />}\n {slots.iconBefore && <slots.iconBefore {...slotProps.iconBefore} />}\n <slots.main {...slotProps.main}>{slotProps.root.children}</slots.main>\n {slots.iconAfter && <slots.iconAfter {...slotProps.iconAfter} />}\n <ButtonContextProvider value={state.buttonContextValue}>\n {slots.actions && <slots.actions {...slotProps.actions} />}\n {slots.aside && <slots.aside {...slotProps.aside} />}\n </ButtonContextProvider>\n </slots.root>\n );\n};\n"],"names":["createElement","getSlotsNext","ButtonContextProvider","renderTreeItemLayout_unstable","state","slots","slotProps","root","expandIcon","selector","iconBefore","main","children","iconAfter","value","buttonContextValue","actions","aside"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAEzD,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;CAEC,GACD,OAAO,MAAMC,gCAAgC,CAACC,QAA+B;IAC3E,MAAM,EAAEC,MAAK,EAAEC,UAAS,EAAE,GAAGL,aAAkCG;IAE/D,qBACE,AAdJ,cAcKC,MAAME,IAAI,EAAKD,UAAUC,IAAI,EAC3BF,MAAMG,UAAU,kBAAI,AAf3B,cAe4BH,MAAMG,UAAU,EAAKF,UAAUE,UAAU,GAC9DH,MAAMI,QAAQ,kBAAI,AAhBzB,cAgB0BJ,MAAMI,QAAQ,EAAKH,UAAUG,QAAQ,GACxDJ,MAAMK,UAAU,kBAAI,AAjB3B,cAiB4BL,MAAMK,UAAU,EAAKJ,UAAUI,UAAU,iBAC/D,AAlBN,cAkBOL,MAAMM,IAAI,EAAKL,UAAUK,IAAI,EAAGL,UAAUC,IAAI,CAACK,QAAQ,GACvDP,MAAMQ,SAAS,kBAAI,AAnB1B,cAmB2BR,MAAMQ,SAAS,EAAKP,UAAUO,SAAS,iBAC5D,AApBN,cAoBOX;QAAsBY,OAAOV,MAAMW,kBAAkB;OACnDV,MAAMW,OAAO,kBAAI,AArB1B,cAqB2BX,MAAMW,OAAO,EAAKV,UAAUU,OAAO,GACrDX,MAAMY,KAAK,kBAAI,AAtBxB,cAsByBZ,MAAMY,KAAK,EAAKX,UAAUW,KAAK;AAIxD,EAAE"}
1
+ {"version":3,"sources":["renderTreeItemLayout.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { TreeItemLayoutState, TreeItemLayoutSlots } from './TreeItemLayout.types';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of TreeItemLayout\n */\nexport const renderTreeItemLayout_unstable = (state: TreeItemLayoutState) => {\n assertSlots<TreeItemLayoutSlots>(state);\n\n return (\n <state.root>\n {state.expandIcon && <state.expandIcon />}\n {state.selector && <state.selector />}\n {state.iconBefore && <state.iconBefore />}\n <state.main>{state.root.children}</state.main>\n {state.iconAfter && <state.iconAfter />}\n <ButtonContextProvider value={state.buttonContextValue}>\n {state.actions && <state.actions />}\n {state.aside && <state.aside />}\n </ButtonContextProvider>\n </state.root>\n );\n};\n"],"names":["createElement","assertSlots","ButtonContextProvider","renderTreeItemLayout_unstable","state","root","expandIcon","selector","iconBefore","main","children","iconAfter","value","buttonContextValue","actions","aside"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,WAAW,QAAQ,4BAA4B;AAExD,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;CAEC,GACD,OAAO,MAAMC,gCAAgC,CAACC,QAA+B;IAC3EH,YAAiCG;IAEjC,qBACE,AAdJ,cAcKA,MAAMC,IAAI,QACRD,MAAME,UAAU,kBAAI,AAf3B,cAe4BF,MAAME,UAAU,SACrCF,MAAMG,QAAQ,kBAAI,AAhBzB,cAgB0BH,MAAMG,QAAQ,SACjCH,MAAMI,UAAU,kBAAI,AAjB3B,cAiB4BJ,MAAMI,UAAU,uBACtC,AAlBN,cAkBOJ,MAAMK,IAAI,QAAEL,MAAMC,IAAI,CAACK,QAAQ,GAC/BN,MAAMO,SAAS,kBAAI,AAnB1B,cAmB2BP,MAAMO,SAAS,uBACpC,AApBN,cAoBOT;QAAsBU,OAAOR,MAAMS,kBAAkB;OACnDT,MAAMU,OAAO,kBAAI,AArB1B,cAqB2BV,MAAMU,OAAO,SAC/BV,MAAMW,KAAK,kBAAI,AAtBxB,cAsByBX,MAAMW,KAAK;AAIpC,EAAE"}
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { getNativeElementProps, isResolvedShorthand, resolveShorthand, useMergedRefs } from '@fluentui/react-utilities';
2
+ import { getNativeElementProps, isResolvedShorthand, useMergedRefs, slot } from '@fluentui/react-utilities';
3
3
  import { useTreeItemContext_unstable, useTreeContext_unstable } from '../../contexts';
4
4
  import { Checkbox } from '@fluentui/react-checkbox';
5
5
  import { Radio } from '@fluentui/react-radio';
@@ -32,15 +32,15 @@ import { useArrowNavigationGroup } from '@fluentui/react-tabster';
32
32
  const selectionRef = useTreeItemContext_unstable((ctx)=>ctx.selectionRef);
33
33
  const expandIconRef = useTreeItemContext_unstable((ctx)=>ctx.expandIconRef);
34
34
  const actionsRef = useTreeItemContext_unstable((ctx)=>ctx.actionsRef);
35
- var _ctx_checked;
36
- const checked = useTreeItemContext_unstable((ctx)=>(_ctx_checked = ctx.checked) !== null && _ctx_checked !== void 0 ? _ctx_checked : false);
35
+ const checked = useTreeItemContext_unstable((ctx)=>ctx.checked);
37
36
  const isBranch = useTreeItemContext_unstable((ctx)=>ctx.itemType === 'branch');
38
- const expandIcon = resolveShorthand(props.expandIcon, {
39
- required: isBranch,
37
+ const expandIcon = slot.optional(props.expandIcon, {
38
+ renderByDefault: isBranch,
40
39
  defaultProps: {
41
40
  children: /*#__PURE__*/ React.createElement(TreeItemChevron, null),
42
41
  'aria-hidden': true
43
- }
42
+ },
43
+ elementType: 'div'
44
44
  });
45
45
  const expandIconRefs = useMergedRefs(expandIcon === null || expandIcon === void 0 ? void 0 : expandIcon.ref, expandIconRef);
46
46
  if (expandIcon) {
@@ -50,11 +50,12 @@ import { useArrowNavigationGroup } from '@fluentui/react-tabster';
50
50
  circular: true,
51
51
  axis: 'horizontal'
52
52
  });
53
- const actions = isActionsVisible ? resolveShorthand(actionsShorthand, {
53
+ const actions = isActionsVisible ? slot.optional(actionsShorthand, {
54
54
  defaultProps: {
55
55
  ...arrowNavigationProps,
56
56
  role: 'toolbar'
57
- }
57
+ },
58
+ elementType: 'div'
58
59
  }) : undefined;
59
60
  const actionsRefs = useMergedRefs(actions === null || actions === void 0 ? void 0 : actions.ref, actionsRef);
60
61
  if (actions) {
@@ -75,34 +76,41 @@ import { useArrowNavigationGroup } from '@fluentui/react-tabster';
75
76
  buttonContextValue: {
76
77
  size: 'small'
77
78
  },
78
- root: getNativeElementProps(as, {
79
+ root: slot.always(getNativeElementProps(as, {
79
80
  ...props,
80
81
  ref: useMergedRefs(ref, layoutRef)
82
+ }), {
83
+ elementType: 'div'
81
84
  }),
82
- iconBefore: resolveShorthand(iconBefore, {
85
+ iconBefore: slot.optional(iconBefore, {
83
86
  defaultProps: {
84
87
  'aria-hidden': true
85
- }
88
+ },
89
+ elementType: 'div'
86
90
  }),
87
- main: resolveShorthand(main, {
88
- required: true
91
+ main: slot.always(main, {
92
+ elementType: 'div'
89
93
  }),
90
- iconAfter: resolveShorthand(iconAfter, {
94
+ iconAfter: slot.optional(iconAfter, {
91
95
  defaultProps: {
92
96
  'aria-hidden': true
93
- }
97
+ },
98
+ elementType: 'div'
94
99
  }),
95
- aside: isAsideVisible ? resolveShorthand(props.aside) : undefined,
100
+ aside: isAsideVisible ? slot.optional(props.aside, {
101
+ elementType: 'div'
102
+ }) : undefined,
96
103
  actions,
97
104
  expandIcon,
98
- selector: resolveShorthand(props.selector, {
99
- required: selectionMode !== 'none',
105
+ selector: slot.optional(props.selector, {
106
+ renderByDefault: selectionMode !== 'none',
100
107
  defaultProps: {
101
108
  checked,
102
109
  tabIndex: -1,
103
110
  'aria-hidden': true,
104
111
  ref: selectionRef
105
- }
112
+ },
113
+ elementType: selectionMode === 'multiselect' ? Checkbox : Radio
106
114
  })
107
115
  };
108
116
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["useTreeItemLayout.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n ExtractSlotProps,\n getNativeElementProps,\n isResolvedShorthand,\n resolveShorthand,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useTreeItemContext_unstable, useTreeContext_unstable } from '../../contexts';\nimport type { TreeItemLayoutProps, TreeItemLayoutSlots, TreeItemLayoutState } from './TreeItemLayout.types';\nimport { Checkbox, CheckboxProps } from '@fluentui/react-checkbox';\nimport { Radio, RadioProps } from '@fluentui/react-radio';\nimport { TreeItemChevron } from '../TreeItemChevron';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\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 */\nexport const useTreeItemLayout_unstable = (\n props: TreeItemLayoutProps,\n ref: React.Ref<HTMLElement>,\n): TreeItemLayoutState => {\n const { main, iconAfter, iconBefore, as = 'span' } = props;\n\n const layoutRef = useTreeItemContext_unstable(ctx => ctx.layoutRef);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n\n const [isActionsVisibleExternal, actionsShorthand]: [boolean | undefined, TreeItemLayoutSlots['actions']] =\n isResolvedShorthand(props.actions)\n ? // .visible prop should not be propagated to the DOM\n [props.actions.visible, { ...props.actions, visible: undefined }]\n : [undefined, 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 ?? false);\n const isBranch = useTreeItemContext_unstable(ctx => ctx.itemType === 'branch');\n\n const expandIcon = resolveShorthand(props.expandIcon, {\n required: isBranch,\n defaultProps: {\n children: <TreeItemChevron />,\n 'aria-hidden': true,\n },\n });\n\n const expandIconRefs = useMergedRefs(expandIcon?.ref, expandIconRef);\n if (expandIcon) {\n expandIcon.ref = expandIconRefs;\n }\n\n const arrowNavigationProps = useArrowNavigationGroup({\n circular: true,\n axis: 'horizontal',\n });\n const actions = isActionsVisible\n ? resolveShorthand(actionsShorthand, {\n defaultProps: {\n ...arrowNavigationProps,\n role: 'toolbar',\n } as ExtractSlotProps<TreeItemLayoutSlots['actions']>,\n })\n : undefined;\n\n const actionsRefs = useMergedRefs(actions?.ref, actionsRef);\n if (actions) {\n actions.ref = actionsRefs;\n }\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) as React.ElementType<CheckboxProps | RadioProps>,\n },\n buttonContextValue: { size: 'small' },\n root: getNativeElementProps(as, { ...props, ref: useMergedRefs(ref, layoutRef) }),\n iconBefore: resolveShorthand(iconBefore, { defaultProps: { 'aria-hidden': true } }),\n main: resolveShorthand(main, { required: true }),\n iconAfter: resolveShorthand(iconAfter, { defaultProps: { 'aria-hidden': true } }),\n aside: isAsideVisible ? resolveShorthand(props.aside) : undefined,\n actions,\n expandIcon,\n selector: resolveShorthand(props.selector, {\n required: selectionMode !== 'none',\n defaultProps: {\n checked,\n tabIndex: -1,\n 'aria-hidden': true,\n ref: selectionRef,\n },\n }),\n };\n};\n"],"names":["React","getNativeElementProps","isResolvedShorthand","resolveShorthand","useMergedRefs","useTreeItemContext_unstable","useTreeContext_unstable","Checkbox","Radio","TreeItemChevron","useArrowNavigationGroup","useTreeItemLayout_unstable","props","ref","main","iconAfter","iconBefore","as","layoutRef","ctx","selectionMode","isActionsVisibleExternal","actionsShorthand","actions","visible","undefined","isActionsVisible","isAsideVisible","selectionRef","expandIconRef","actionsRef","checked","isBranch","itemType","expandIcon","required","defaultProps","children","expandIconRefs","arrowNavigationProps","circular","axis","role","actionsRefs","components","root","aside","selector","buttonContextValue","size","tabIndex"],"mappings":"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"}
1
+ {"version":3,"sources":["useTreeItemLayout.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n ExtractSlotProps,\n getNativeElementProps,\n isResolvedShorthand,\n useMergedRefs,\n slot,\n} from '@fluentui/react-utilities';\nimport { useTreeItemContext_unstable, useTreeContext_unstable } from '../../contexts';\nimport type { TreeItemLayoutProps, TreeItemLayoutSlots, TreeItemLayoutState } from './TreeItemLayout.types';\nimport { Checkbox, CheckboxProps } from '@fluentui/react-checkbox';\nimport { Radio, RadioProps } from '@fluentui/react-radio';\nimport { TreeItemChevron } from '../TreeItemChevron';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\n\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 */\nexport const useTreeItemLayout_unstable = (\n props: TreeItemLayoutProps,\n ref: React.Ref<HTMLElement>,\n): TreeItemLayoutState => {\n const { main, iconAfter, iconBefore, as = 'span' } = props;\n\n const layoutRef = useTreeItemContext_unstable(ctx => ctx.layoutRef);\n const selectionMode = useTreeContext_unstable(ctx => ctx.selectionMode);\n\n const [isActionsVisibleExternal, actionsShorthand]: [boolean | undefined, TreeItemLayoutSlots['actions']] =\n isResolvedShorthand(props.actions)\n ? // .visible prop should not be propagated to the DOM\n [props.actions.visible, { ...props.actions, visible: undefined }]\n : [undefined, 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\n const expandIcon = slot.optional(props.expandIcon, {\n renderByDefault: isBranch,\n defaultProps: {\n children: <TreeItemChevron />,\n 'aria-hidden': true,\n },\n elementType: 'div',\n });\n const expandIconRefs = useMergedRefs(expandIcon?.ref, expandIconRef);\n if (expandIcon) {\n expandIcon.ref = expandIconRefs;\n }\n const arrowNavigationProps = useArrowNavigationGroup({ circular: true, axis: 'horizontal' });\n const actions = isActionsVisible\n ? slot.optional(actionsShorthand, {\n defaultProps: { ...arrowNavigationProps, role: 'toolbar' } as ExtractSlotProps<TreeItemLayoutSlots['actions']>,\n elementType: 'div',\n })\n : undefined;\n const actionsRefs = useMergedRefs(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) as React.ElementType<CheckboxProps | RadioProps>,\n },\n buttonContextValue: { size: 'small' },\n root: slot.always(getNativeElementProps(as, { ...props, ref: useMergedRefs(ref, layoutRef) }), {\n elementType: 'div',\n }),\n iconBefore: slot.optional(iconBefore, { defaultProps: { 'aria-hidden': true }, elementType: 'div' }),\n main: slot.always(main, { elementType: 'div' }),\n iconAfter: slot.optional(iconAfter, { defaultProps: { 'aria-hidden': true }, elementType: 'div' }),\n aside: isAsideVisible ? slot.optional(props.aside, { elementType: 'div' }) : 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 // casting here to a union between checkbox and radio\n // since ref is not present on the selector signature\n // FIXME: look into Slot type to see if we can make this work\n } as CheckboxProps | RadioProps,\n elementType: (selectionMode === 'multiselect' ? Checkbox : Radio) as React.ElementType<\n CheckboxProps | RadioProps\n >,\n }),\n };\n};\n"],"names":["React","getNativeElementProps","isResolvedShorthand","useMergedRefs","slot","useTreeItemContext_unstable","useTreeContext_unstable","Checkbox","Radio","TreeItemChevron","useArrowNavigationGroup","useTreeItemLayout_unstable","props","ref","main","iconAfter","iconBefore","as","layoutRef","ctx","selectionMode","isActionsVisibleExternal","actionsShorthand","actions","visible","undefined","isActionsVisible","isAsideVisible","selectionRef","expandIconRef","actionsRef","checked","isBranch","itemType","expandIcon","optional","renderByDefault","defaultProps","children","elementType","expandIconRefs","arrowNavigationProps","circular","axis","role","actionsRefs","components","root","aside","selector","buttonContextValue","size","always","tabIndex"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAEEC,qBAAqB,EACrBC,mBAAmB,EACnBC,aAAa,EACbC,IAAI,QACC,4BAA4B;AACnC,SAASC,2BAA2B,EAAEC,uBAAuB,QAAQ,iBAAiB;AAEtF,SAASC,QAAQ,QAAuB,2BAA2B;AACnE,SAASC,KAAK,QAAoB,wBAAwB;AAC1D,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,uBAAuB,QAAQ,0BAA0B;AAElE;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC,MACwB;IACxB,MAAM,EAAEC,KAAI,EAAEC,UAAS,EAAEC,WAAU,EAAEC,IAAK,OAAM,EAAE,GAAGL;IAErD,MAAMM,YAAYb,4BAA4Bc,CAAAA,MAAOA,IAAID,SAAS;IAClE,MAAME,gBAAgBd,wBAAwBa,CAAAA,MAAOA,IAAIC,aAAa;IAEtE,MAAM,CAACC,0BAA0BC,iBAAiB,GAChDpB,oBAAoBU,MAAMW,OAAO,IAE7B;QAACX,MAAMW,OAAO,CAACC,OAAO;QAAE;YAAE,GAAGZ,MAAMW,OAAO;YAAEC,SAASC;QAAU;KAAE,GACjE;QAACA;QAAWb,MAAMW,OAAO;KAAC;IAEhC,MAAMG,mBAAmBrB,4BAA4Bc,CAAAA,MAAOA,IAAIO,gBAAgB,KAAKL;IACrF,MAAMM,iBAAiBtB,4BAA4Bc,CAAAA,MAAOA,IAAIQ,cAAc;IAC5E,MAAMC,eAAevB,4BAA4Bc,CAAAA,MAAOA,IAAIS,YAAY;IACxE,MAAMC,gBAAgBxB,4BAA4Bc,CAAAA,MAAOA,IAAIU,aAAa;IAC1E,MAAMC,aAAazB,4BAA4Bc,CAAAA,MAAOA,IAAIW,UAAU;IACpE,MAAMC,UAAU1B,4BAA4Bc,CAAAA,MAAOA,IAAIY,OAAO;IAC9D,MAAMC,WAAW3B,4BAA4Bc,CAAAA,MAAOA,IAAIc,QAAQ,KAAK;IAErE,MAAMC,aAAa9B,KAAK+B,QAAQ,CAACvB,MAAMsB,UAAU,EAAE;QACjDE,iBAAiBJ;QACjBK,cAAc;YACZC,wBAAU,oBAAC7B;YACX,eAAe,IAAI;QACrB;QACA8B,aAAa;IACf;IACA,MAAMC,iBAAiBrC,cAAc+B,uBAAAA,wBAAAA,KAAAA,IAAAA,WAAYrB,GAAG,EAAEgB;IACtD,IAAIK,YAAY;QACdA,WAAWrB,GAAG,GAAG2B;IACnB,CAAC;IACD,MAAMC,uBAAuB/B,wBAAwB;QAAEgC,UAAU,IAAI;QAAEC,MAAM;IAAa;IAC1F,MAAMpB,UAAUG,mBACZtB,KAAK+B,QAAQ,CAACb,kBAAkB;QAC9Be,cAAc;YAAE,GAAGI,oBAAoB;YAAEG,MAAM;QAAU;QACzDL,aAAa;IACf,KACAd,SAAS;IACb,MAAMoB,cAAc1C,cAAcoB,oBAAAA,qBAAAA,KAAAA,IAAAA,QAASV,GAAG,EAAEiB;IAChD,IAAIP,SAAS;QACXA,QAAQV,GAAG,GAAGgC;IAChB,CAAC;IACD,OAAO;QACLC,YAAY;YACVC,MAAM;YACNb,YAAY;YACZlB,YAAY;YACZF,MAAM;YACNC,WAAW;YACXQ,SAAS;YACTyB,OAAO;YACP,qDAAqD;YACrDC,UAAW7B,kBAAkB,gBAAgBb,WAAWC,KAAK;QAC/D;QACA0C,oBAAoB;YAAEC,MAAM;QAAQ;QACpCJ,MAAM3C,KAAKgD,MAAM,CAACnD,sBAAsBgB,IAAI;YAAE,GAAGL,KAAK;YAAEC,KAAKV,cAAcU,KAAKK;QAAW,IAAI;YAC7FqB,aAAa;QACf;QACAvB,YAAYZ,KAAK+B,QAAQ,CAACnB,YAAY;YAAEqB,cAAc;gBAAE,eAAe,IAAI;YAAC;YAAGE,aAAa;QAAM;QAClGzB,MAAMV,KAAKgD,MAAM,CAACtC,MAAM;YAAEyB,aAAa;QAAM;QAC7CxB,WAAWX,KAAK+B,QAAQ,CAACpB,WAAW;YAAEsB,cAAc;gBAAE,eAAe,IAAI;YAAC;YAAGE,aAAa;QAAM;QAChGS,OAAOrB,iBAAiBvB,KAAK+B,QAAQ,CAACvB,MAAMoC,KAAK,EAAE;YAAET,aAAa;QAAM,KAAKd,SAAS;QACtFF;QACAW;QACAe,UAAU7C,KAAK+B,QAAQ,CAACvB,MAAMqC,QAAQ,EAAE;YACtCb,iBAAiBhB,kBAAkB;YACnCiB,cAAc;gBACZN;gBACAsB,UAAU,CAAC;gBACX,eAAe,IAAI;gBACnBxC,KAAKe;YAIP;YACAW,aAAcnB,kBAAkB,gBAAgBb,WAAWC,KAAK;QAGlE;IACF;AACF,EAAE"}
@@ -67,7 +67,7 @@ const useRootStyles = /*#__PURE__*/__styles({
67
67
  ecr2s2: "fophhak"
68
68
  }
69
69
  }, {
70
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f122n59{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}", ".f1nxs5xn{min-height:32px;}", ".f1ewtqcl{box-sizing:border-box;}", ".f15ws6j{-ms-grid-row:layout;grid-row-start:layout;}", ".f135tdbu{-ms-grid-column:layout;grid-column-start:layout;}", ".f2e2169{-ms-grid-row-span:layout;grid-row-end:layout;}", ".f4rqp6x{-ms-grid-column-span:layout;grid-column-end:layout;}", ".f1aa9q02{border-bottom-right-radius:var(--borderRadiusMedium);}", ".f16jpd5f{border-bottom-left-radius:var(--borderRadiusMedium);}", ".f1jar5jt{border-top-right-radius:var(--borderRadiusMedium);}", ".fyu767a{border-top-left-radius:var(--borderRadiusMedium);}", ".f1k1erfc{padding-left:calc(var(--fluent-TreeItem--level, 1) * var(--spacingHorizontalXXL));}", ".faevyjx{padding-right:calc(var(--fluent-TreeItem--level, 1) * var(--spacingHorizontalXXL));}", ".fo100m9{padding-left:calc((var(--fluent-TreeItem--level, 1) - 1) * var(--spacingHorizontalXXL));}", ".f6yw3pu{padding-right:calc((var(--fluent-TreeItem--level, 1) - 1) * var(--spacingHorizontalXXL));}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f1pha7fy{min-height:24px;}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".f1c21dwh{background-color:var(--colorTransparentBackground);}"],
70
+ d: [".f22iagw{display:flex;}", ".f122n59{align-items:center;}", ".f1nxs5xn{min-height:32px;}", ".f1ewtqcl{box-sizing:border-box;}", ".f15ws6j{grid-row-start:layout;}", ".f135tdbu{grid-column-start:layout;}", ".f2e2169{grid-row-end:layout;}", ".f4rqp6x{grid-column-end:layout;}", ".f1aa9q02{border-bottom-right-radius:var(--borderRadiusMedium);}", ".f16jpd5f{border-bottom-left-radius:var(--borderRadiusMedium);}", ".f1jar5jt{border-top-right-radius:var(--borderRadiusMedium);}", ".fyu767a{border-top-left-radius:var(--borderRadiusMedium);}", ".f1k1erfc{padding-left:calc(var(--fluent-TreeItem--level, 1) * var(--spacingHorizontalXXL));}", ".faevyjx{padding-right:calc(var(--fluent-TreeItem--level, 1) * var(--spacingHorizontalXXL));}", ".fo100m9{padding-left:calc((var(--fluent-TreeItem--level, 1) - 1) * var(--spacingHorizontalXXL));}", ".f6yw3pu{padding-right:calc((var(--fluent-TreeItem--level, 1) - 1) * var(--spacingHorizontalXXL));}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f1pha7fy{min-height:24px;}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".f1c21dwh{background-color:var(--colorTransparentBackground);}"],
71
71
  a: [".flvvhsy:active{color:var(--colorNeutralForeground2Pressed);}", ".f1wfn5kd:active{background-color:var(--colorSubtleBackgroundPressed);}", ".f1ih54s9:active .fui-TreeItemLayout__expandIcon{color:var(--colorNeutralForeground3Pressed);}", ".fkam630:active{background-color:var(--colorSubtleBackgroundLightAlphaPressed);}", ".fophhak:active{background-color:var(--colorTransparentBackgroundPressed);}"],
72
72
  h: [".fnwyq0v:hover{color:var(--colorNeutralForeground2Hover);}", ".f1t94bn6:hover{background-color:var(--colorSubtleBackgroundHover);}", ".f1jk1nfw:hover .fui-TreeItemLayout__expandIcon{color:var(--colorNeutralForeground3Hover);}", ".f146ro5n:hover{background-color:var(--colorSubtleBackgroundLightAlphaHover);}", ".fjxutwb:hover{background-color:var(--colorTransparentBackgroundHover);}"]
73
73
  });
@@ -90,7 +90,7 @@ const useActionsStyles = /*#__PURE__*/__styles({
90
90
  uwmqm3: ["f1f5gg8d", "f1vdfbxk"]
91
91
  }
92
92
  }, {
93
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".fcgxt0o{margin-left:auto;}", ".f1ujusj6{margin-right:auto;}", ".f10pi13n{position:relative;}", ".f19g0ac{z-index:1;}", ".fobksn0{-ms-grid-row:aside;grid-row-start:aside;}", ".fmy5l6f{-ms-grid-column:aside;grid-column-start:aside;}", ".fzqypwc{-ms-grid-row-span:aside;grid-row-end:aside;}", ".f1tmftl3{-ms-grid-column-span:aside;grid-column-end:aside;}", ".f1g0x7ka{padding-top:0;}", ".f1vdfbxk{padding-right:var(--spacingHorizontalS);}", ".f1f5gg8d{padding-left:var(--spacingHorizontalS);}", ".f1qch9an{padding-bottom:0;}"]
93
+ d: [".f22iagw{display:flex;}", ".fcgxt0o{margin-left:auto;}", ".f1ujusj6{margin-right:auto;}", ".f10pi13n{position:relative;}", ".f19g0ac{z-index:1;}", ".fobksn0{grid-row-start:aside;}", ".fmy5l6f{grid-column-start:aside;}", ".fzqypwc{grid-row-end:aside;}", ".f1tmftl3{grid-column-end:aside;}", ".f1g0x7ka{padding-top:0;}", ".f1vdfbxk{padding-right:var(--spacingHorizontalS);}", ".f1f5gg8d{padding-left:var(--spacingHorizontalS);}", ".f1qch9an{padding-bottom:0;}"]
94
94
  });
95
95
  /**
96
96
  * Styles for the action icon slot
@@ -113,7 +113,7 @@ const useAsideStyles = /*#__PURE__*/__styles({
113
113
  Belr9w4: "f14sijuj"
114
114
  }
115
115
  }, {
116
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".fcgxt0o{margin-left:auto;}", ".f1ujusj6{margin-right:auto;}", ".f122n59{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}", ".f11zp4z2{z-index:0;}", ".fobksn0{-ms-grid-row:aside;grid-row-start:aside;}", ".fmy5l6f{-ms-grid-column:aside;grid-column-start:aside;}", ".fzqypwc{-ms-grid-row-span:aside;grid-row-end:aside;}", ".f1tmftl3{-ms-grid-column-span:aside;grid-column-end:aside;}", ".f1g0x7ka{padding-top:0;}", ".fw5db7e{padding-right:var(--spacingHorizontalM);}", ".f1uw59to{padding-left:var(--spacingHorizontalM);}", ".f1qch9an{padding-bottom:0;}", ".f1ufnopg{-webkit-column-gap:var(--spacingHorizontalXS);column-gap:var(--spacingHorizontalXS);}", ".f14sijuj{row-gap:var(--spacingHorizontalXS);}"]
116
+ d: [".f22iagw{display:flex;}", ".fcgxt0o{margin-left:auto;}", ".f1ujusj6{margin-right:auto;}", ".f122n59{align-items:center;}", ".f11zp4z2{z-index:0;}", ".fobksn0{grid-row-start:aside;}", ".fmy5l6f{grid-column-start:aside;}", ".fzqypwc{grid-row-end:aside;}", ".f1tmftl3{grid-column-end:aside;}", ".f1g0x7ka{padding-top:0;}", ".fw5db7e{padding-right:var(--spacingHorizontalM);}", ".f1uw59to{padding-left:var(--spacingHorizontalM);}", ".f1qch9an{padding-bottom:0;}", ".f1ufnopg{column-gap:var(--spacingHorizontalXS);}", ".f14sijuj{row-gap:var(--spacingHorizontalXS);}"]
117
117
  });
118
118
  /**
119
119
  * Styles for the expand icon slot
@@ -135,7 +135,7 @@ const useExpandIconStyles = /*#__PURE__*/__styles({
135
135
  uwmqm3: ["f1cnd47f", "fhxju0i"]
136
136
  }
137
137
  }, {
138
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f122n59{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}", ".f4d9j23{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}", ".f17fgpbq{min-width:24px;}", ".f1ewtqcl{box-sizing:border-box;}", ".f11d4kpn{color:var(--colorNeutralForeground3);}", ".f1jhi6b8{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0;}", ".fi64zpg{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", ".f1rmlqtg{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;}", ".f1ywm7hm{padding-top:var(--spacingVerticalXS);}", ".fhxju0i{padding-right:0;}", ".f1cnd47f{padding-left:0;}", ".f14wxoun{padding-bottom:var(--spacingVerticalXS);}"]
138
+ d: [".f22iagw{display:flex;}", ".f122n59{align-items:center;}", ".f4d9j23{justify-content:center;}", ".f17fgpbq{min-width:24px;}", ".f1ewtqcl{box-sizing:border-box;}", ".f11d4kpn{color:var(--colorNeutralForeground3);}", ".f1jhi6b8{flex-grow:0;}", ".fi64zpg{flex-shrink:0;}", ".f1rmlqtg{flex-basis:auto;}", ".f1ywm7hm{padding-top:var(--spacingVerticalXS);}", ".fhxju0i{padding-right:0;}", ".f1cnd47f{padding-left:0;}", ".f14wxoun{padding-bottom:var(--spacingVerticalXS);}"]
139
139
  });
140
140
  /**
141
141
  * Styles for the content slot
@@ -162,7 +162,7 @@ const useIconStyles = /*#__PURE__*/__styles({
162
162
  Be2twd7: "f1pp30po"
163
163
  }
164
164
  }, {
165
- d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f122n59{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}", ".fkfq4zb{color:var(--colorNeutralForeground2);}", ".f106mvju{line-height:var(--lineHeightBase500);}", ".f1pp30po{font-size:var(--fontSizeBase500);}"]
165
+ d: [".f22iagw{display:flex;}", ".f122n59{align-items:center;}", ".fkfq4zb{color:var(--colorNeutralForeground2);}", ".f106mvju{line-height:var(--lineHeightBase500);}", ".f1pp30po{font-size:var(--fontSizeBase500);}"]
166
166
  });
167
167
  const useIconBeforeStyles = /*#__PURE__*/__styles({
168
168
  medium: {
@@ -1,14 +1,14 @@
1
1
  /** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';
2
- import { getSlotsNext } from '@fluentui/react-utilities';
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
3
  import { AvatarContextProvider } from '@fluentui/react-avatar';
4
4
  import { ButtonContextProvider } from '@fluentui/react-button';
5
5
  /**
6
6
  * Render the final JSX of TreeItemPersonaLayout
7
7
  */ export const renderTreeItemPersonaLayout_unstable = (state, contextValues)=>{
8
- const { slots , slotProps } = getSlotsNext(state);
9
- return /*#__PURE__*/ createElement(slots.root, slotProps.root, slots.expandIcon && /*#__PURE__*/ createElement(slots.expandIcon, slotProps.expandIcon), slots.selector && /*#__PURE__*/ createElement(slots.selector, slotProps.selector), /*#__PURE__*/ createElement(AvatarContextProvider, {
8
+ assertSlots(state);
9
+ return /*#__PURE__*/ createElement(state.root, null, state.expandIcon && /*#__PURE__*/ createElement(state.expandIcon, null), state.selector && /*#__PURE__*/ createElement(state.selector, null), /*#__PURE__*/ createElement(AvatarContextProvider, {
10
10
  value: contextValues.avatar
11
- }, /*#__PURE__*/ createElement(slots.media, slotProps.media)), /*#__PURE__*/ createElement(slots.main, slotProps.main), slots.description && /*#__PURE__*/ createElement(slots.description, slotProps.description), /*#__PURE__*/ createElement(ButtonContextProvider, {
11
+ }, /*#__PURE__*/ createElement(state.media, null)), /*#__PURE__*/ createElement(state.main, null), state.description && /*#__PURE__*/ createElement(state.description, null), /*#__PURE__*/ createElement(ButtonContextProvider, {
12
12
  value: state.buttonContextValue
13
- }, slots.actions && /*#__PURE__*/ createElement(slots.actions, slotProps.actions), slots.aside && /*#__PURE__*/ createElement(slots.aside, slotProps.aside)));
13
+ }, state.actions && /*#__PURE__*/ createElement(state.actions, null), state.aside && /*#__PURE__*/ createElement(state.aside, null)));
14
14
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["renderTreeItemPersonaLayout.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport type {\n TreeItemPersonaLayoutState,\n TreeItemPersonaLayoutContextValues,\n TreeItemPersonaLayoutSlots,\n} from './TreeItemPersonaLayout.types';\nimport { AvatarContextProvider } from '@fluentui/react-avatar';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of TreeItemPersonaLayout\n */\nexport const renderTreeItemPersonaLayout_unstable = (\n state: TreeItemPersonaLayoutState,\n contextValues: TreeItemPersonaLayoutContextValues,\n) => {\n const { slots, slotProps } = getSlotsNext<TreeItemPersonaLayoutSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n {slots.expandIcon && <slots.expandIcon {...slotProps.expandIcon} />}\n {slots.selector && <slots.selector {...slotProps.selector} />}\n <AvatarContextProvider value={contextValues.avatar}>\n <slots.media {...slotProps.media} />\n </AvatarContextProvider>\n <slots.main {...slotProps.main} />\n {slots.description && <slots.description {...slotProps.description} />}\n <ButtonContextProvider value={state.buttonContextValue}>\n {slots.actions && <slots.actions {...slotProps.actions} />}\n {slots.aside && <slots.aside {...slotProps.aside} />}\n </ButtonContextProvider>\n </slots.root>\n );\n};\n"],"names":["createElement","getSlotsNext","AvatarContextProvider","ButtonContextProvider","renderTreeItemPersonaLayout_unstable","state","contextValues","slots","slotProps","root","expandIcon","selector","value","avatar","media","main","description","buttonContextValue","actions","aside"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAMzD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;CAEC,GACD,OAAO,MAAMC,uCAAuC,CAClDC,OACAC,gBACG;IACH,MAAM,EAAEC,MAAK,EAAEC,UAAS,EAAE,GAAGP,aAAyCI;IAEtE,qBACE,AAtBJ,cAsBKE,MAAME,IAAI,EAAKD,UAAUC,IAAI,EAC3BF,MAAMG,UAAU,kBAAI,AAvB3B,cAuB4BH,MAAMG,UAAU,EAAKF,UAAUE,UAAU,GAC9DH,MAAMI,QAAQ,kBAAI,AAxBzB,cAwB0BJ,MAAMI,QAAQ,EAAKH,UAAUG,QAAQ,iBACzD,AAzBN,cAyBOT;QAAsBU,OAAON,cAAcO,MAAM;qBAChD,AA1BR,cA0BSN,MAAMO,KAAK,EAAKN,UAAUM,KAAK,kBAElC,AA5BN,cA4BOP,MAAMQ,IAAI,EAAKP,UAAUO,IAAI,GAC7BR,MAAMS,WAAW,kBAAI,AA7B5B,cA6B6BT,MAAMS,WAAW,EAAKR,UAAUQ,WAAW,iBAClE,AA9BN,cA8BOb;QAAsBS,OAAOP,MAAMY,kBAAkB;OACnDV,MAAMW,OAAO,kBAAI,AA/B1B,cA+B2BX,MAAMW,OAAO,EAAKV,UAAUU,OAAO,GACrDX,MAAMY,KAAK,kBAAI,AAhCxB,cAgCyBZ,MAAMY,KAAK,EAAKX,UAAUW,KAAK;AAIxD,EAAE"}
1
+ {"version":3,"sources":["renderTreeItemPersonaLayout.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type {\n TreeItemPersonaLayoutState,\n TreeItemPersonaLayoutContextValues,\n TreeItemPersonaLayoutSlots,\n} from './TreeItemPersonaLayout.types';\nimport { AvatarContextProvider } from '@fluentui/react-avatar';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of TreeItemPersonaLayout\n */\nexport const renderTreeItemPersonaLayout_unstable = (\n state: TreeItemPersonaLayoutState,\n contextValues: TreeItemPersonaLayoutContextValues,\n) => {\n assertSlots<TreeItemPersonaLayoutSlots>(state);\n\n return (\n <state.root>\n {state.expandIcon && <state.expandIcon />}\n {state.selector && <state.selector />}\n <AvatarContextProvider value={contextValues.avatar}>\n <state.media />\n </AvatarContextProvider>\n <state.main />\n {state.description && <state.description />}\n <ButtonContextProvider value={state.buttonContextValue}>\n {state.actions && <state.actions />}\n {state.aside && <state.aside />}\n </ButtonContextProvider>\n </state.root>\n );\n};\n"],"names":["createElement","assertSlots","AvatarContextProvider","ButtonContextProvider","renderTreeItemPersonaLayout_unstable","state","contextValues","root","expandIcon","selector","value","avatar","media","main","description","buttonContextValue","actions","aside"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,WAAW,QAAQ,4BAA4B;AAMxD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,qBAAqB,QAAQ,yBAAyB;AAE/D;;CAEC,GACD,OAAO,MAAMC,uCAAuC,CAClDC,OACAC,gBACG;IACHL,YAAwCI;IAExC,qBACE,AAtBJ,cAsBKA,MAAME,IAAI,QACRF,MAAMG,UAAU,kBAAI,AAvB3B,cAuB4BH,MAAMG,UAAU,SACrCH,MAAMI,QAAQ,kBAAI,AAxBzB,cAwB0BJ,MAAMI,QAAQ,uBAClC,AAzBN,cAyBOP;QAAsBQ,OAAOJ,cAAcK,MAAM;qBAChD,AA1BR,cA0BSN,MAAMO,KAAK,wBAEd,AA5BN,cA4BOP,MAAMQ,IAAI,SACVR,MAAMS,WAAW,kBAAI,AA7B5B,cA6B6BT,MAAMS,WAAW,uBACxC,AA9BN,cA8BOX;QAAsBO,OAAOL,MAAMU,kBAAkB;OACnDV,MAAMW,OAAO,kBAAI,AA/B1B,cA+B2BX,MAAMW,OAAO,SAC/BX,MAAMY,KAAK,kBAAI,AAhCxB,cAgCyBZ,MAAMY,KAAK;AAIpC,EAAE"}