@fluentui/react-provider 9.0.0-nightly.f81b28ceb3.1 → 9.0.0-rc.11

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 (73) hide show
  1. package/CHANGELOG.json +704 -22
  2. package/CHANGELOG.md +290 -112
  3. package/dist/index.d.ts +78 -0
  4. package/{lib → dist}/tsdoc-metadata.json +0 -0
  5. package/lib/FluentProvider.js.map +1 -1
  6. package/lib/components/FluentProvider/FluentProvider.js +9 -9
  7. package/lib/components/FluentProvider/FluentProvider.js.map +1 -1
  8. package/lib/components/FluentProvider/FluentProvider.types.js.map +1 -1
  9. package/lib/components/FluentProvider/index.js +2 -0
  10. package/lib/components/FluentProvider/index.js.map +1 -1
  11. package/lib/components/FluentProvider/renderFluentProvider.js +10 -8
  12. package/lib/components/FluentProvider/renderFluentProvider.js.map +1 -1
  13. package/lib/components/FluentProvider/useFluentProvider.js +46 -23
  14. package/lib/components/FluentProvider/useFluentProvider.js.map +1 -1
  15. package/lib/components/FluentProvider/useFluentProviderContextValues.js +16 -15
  16. package/lib/components/FluentProvider/useFluentProviderContextValues.js.map +1 -1
  17. package/lib/components/FluentProvider/useFluentProviderStyles.js +9 -5
  18. package/lib/components/FluentProvider/useFluentProviderStyles.js.map +1 -1
  19. package/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js +61 -0
  20. package/lib/components/FluentProvider/useFluentProviderThemeStyleTag.js.map +1 -0
  21. package/lib/index.js +1 -1
  22. package/lib/index.js.map +1 -1
  23. package/lib-commonjs/FluentProvider.js +1 -1
  24. package/lib-commonjs/FluentProvider.js.map +1 -1
  25. package/lib-commonjs/components/FluentProvider/FluentProvider.js +10 -10
  26. package/lib-commonjs/components/FluentProvider/FluentProvider.js.map +1 -1
  27. package/lib-commonjs/components/FluentProvider/FluentProvider.types.js.map +1 -1
  28. package/lib-commonjs/components/FluentProvider/index.js +5 -1
  29. package/lib-commonjs/components/FluentProvider/index.js.map +1 -1
  30. package/lib-commonjs/components/FluentProvider/renderFluentProvider.js +15 -14
  31. package/lib-commonjs/components/FluentProvider/renderFluentProvider.js.map +1 -1
  32. package/lib-commonjs/components/FluentProvider/useFluentProvider.js +52 -30
  33. package/lib-commonjs/components/FluentProvider/useFluentProvider.js.map +1 -1
  34. package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.js +20 -19
  35. package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.js.map +1 -1
  36. package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.js +13 -7
  37. package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.js.map +1 -1
  38. package/lib-commonjs/components/FluentProvider/useFluentProviderThemeStyleTag.js +73 -0
  39. package/lib-commonjs/components/FluentProvider/useFluentProviderThemeStyleTag.js.map +1 -0
  40. package/lib-commonjs/index.js +44 -3
  41. package/lib-commonjs/index.js.map +1 -1
  42. package/package.json +21 -26
  43. package/dist/react-provider.d.ts +0 -67
  44. package/lib/FluentProvider.d.ts +0 -1
  45. package/lib/common/isConformant.d.ts +0 -4
  46. package/lib/common/isConformant.js +0 -12
  47. package/lib/common/isConformant.js.map +0 -1
  48. package/lib/components/FluentProvider/FluentProvider.d.ts +0 -3
  49. package/lib/components/FluentProvider/FluentProvider.types.d.ts +0 -25
  50. package/lib/components/FluentProvider/index.d.ts +0 -5
  51. package/lib/components/FluentProvider/renderFluentProvider.d.ts +0 -5
  52. package/lib/components/FluentProvider/useFluentProvider.d.ts +0 -13
  53. package/lib/components/FluentProvider/useFluentProviderContextValues.d.ts +0 -2
  54. package/lib/components/FluentProvider/useFluentProviderStyles.d.ts +0 -3
  55. package/lib/components/FluentProvider/useThemeStyleTag.d.ts +0 -7
  56. package/lib/components/FluentProvider/useThemeStyleTag.js +0 -58
  57. package/lib/components/FluentProvider/useThemeStyleTag.js.map +0 -1
  58. package/lib/index.d.ts +0 -2
  59. package/lib-commonjs/FluentProvider.d.ts +0 -1
  60. package/lib-commonjs/common/isConformant.d.ts +0 -4
  61. package/lib-commonjs/common/isConformant.js +0 -23
  62. package/lib-commonjs/common/isConformant.js.map +0 -1
  63. package/lib-commonjs/components/FluentProvider/FluentProvider.d.ts +0 -3
  64. package/lib-commonjs/components/FluentProvider/FluentProvider.types.d.ts +0 -25
  65. package/lib-commonjs/components/FluentProvider/index.d.ts +0 -5
  66. package/lib-commonjs/components/FluentProvider/renderFluentProvider.d.ts +0 -5
  67. package/lib-commonjs/components/FluentProvider/useFluentProvider.d.ts +0 -13
  68. package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.d.ts +0 -2
  69. package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.d.ts +0 -3
  70. package/lib-commonjs/components/FluentProvider/useThemeStyleTag.d.ts +0 -7
  71. package/lib-commonjs/components/FluentProvider/useThemeStyleTag.js +0 -70
  72. package/lib-commonjs/components/FluentProvider/useThemeStyleTag.js.map +0 -1
  73. package/lib-commonjs/index.d.ts +0 -2
@@ -0,0 +1,78 @@
1
+ import { ComponentProps } from '@fluentui/react-utilities';
2
+ import type { ComponentState } from '@fluentui/react-utilities';
3
+ import type { PartialTheme } from '@fluentui/react-theme';
4
+ import type { ProviderContextValue } from '@fluentui/react-shared-contexts';
5
+ import * as React_2 from 'react';
6
+ import type { Slot } from '@fluentui/react-utilities';
7
+ import { SlotClassNames } from '@fluentui/react-utilities';
8
+ import { Theme } from '@fluentui/react-theme';
9
+ import type { ThemeClassNameContextValue } from '@fluentui/react-shared-contexts';
10
+ import type { TooltipContextType } from '@fluentui/react-shared-contexts';
11
+ import { useFluent } from '@fluentui/react-shared-contexts';
12
+ import { useTheme } from '@fluentui/react-shared-contexts';
13
+
14
+ export declare const FluentProvider: React_2.ForwardRefExoticComponent<Omit<ComponentProps<FluentProviderSlots, "root">, "dir"> & {
15
+ dir?: "ltr" | "rtl" | undefined;
16
+ targetDocument?: Document | undefined;
17
+ theme?: Partial<Theme> | undefined;
18
+ } & React_2.RefAttributes<HTMLElement>>;
19
+
20
+ export declare const fluentProviderClassNames: SlotClassNames<FluentProviderSlots>;
21
+
22
+ export declare type FluentProviderContextValues = Pick<FluentProviderState, 'theme'> & {
23
+ provider: ProviderContextValue;
24
+ themeClassName: ThemeClassNameContextValue;
25
+ textDirection: 'ltr' | 'rtl';
26
+ tooltip: TooltipContextType;
27
+ };
28
+
29
+ export declare type FluentProviderProps = Omit<ComponentProps<FluentProviderSlots>, 'dir'> & {
30
+ /** Sets the direction of text & generated styles. */
31
+ dir?: 'ltr' | 'rtl';
32
+ /** Provides the document, can be undefined during SSR render. */
33
+ targetDocument?: Document;
34
+ theme?: PartialTheme;
35
+ };
36
+
37
+ export declare type FluentProviderSlots = {
38
+ root: Slot<'div'>;
39
+ };
40
+
41
+ export declare type FluentProviderState = ComponentState<FluentProviderSlots> & Pick<FluentProviderProps, 'targetDocument'> & Required<Pick<FluentProviderProps, 'dir'>> & {
42
+ theme: Theme | Partial<Theme> | undefined;
43
+ themeClassName: string;
44
+ };
45
+
46
+ /**
47
+ * Render the final JSX of FluentProvider
48
+ */
49
+ export declare const renderFluentProvider_unstable: (state: FluentProviderState, contextValues: FluentProviderContextValues) => JSX.Element;
50
+
51
+ export { useFluent }
52
+
53
+ /**
54
+ * Create the state required to render FluentProvider.
55
+ *
56
+ * The returned state can be modified with hooks such as useFluentProviderStyles_unstable,
57
+ * before being passed to renderFluentProvider_unstable.
58
+ *
59
+ * @param props - props from this instance of FluentProvider
60
+ * @param ref - reference to root HTMLElement of FluentProvider
61
+ */
62
+ export declare const useFluentProvider_unstable: (props: FluentProviderProps, ref: React_2.Ref<HTMLElement>) => FluentProviderState;
63
+
64
+ export declare function useFluentProviderContextValues_unstable(state: FluentProviderState): FluentProviderContextValues;
65
+
66
+ /** Applies style classnames to slots */
67
+ export declare const useFluentProviderStyles_unstable: (state: FluentProviderState) => FluentProviderState;
68
+
69
+ /**
70
+ * Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class
71
+ *
72
+ * @returns CSS class to apply the rule
73
+ */
74
+ export declare const useFluentProviderThemeStyleTag: (options: Pick<FluentProviderState, 'theme' | 'targetDocument'>) => string;
75
+
76
+ export { useTheme }
77
+
78
+ export { }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"FluentProvider.js","sourceRoot":"","sources":["../src/FluentProvider.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"FluentProvider.js","sourceRoot":"../src/","sources":["FluentProvider.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC","sourcesContent":["export * from './components/FluentProvider/index';\n"]}
@@ -1,13 +1,13 @@
1
1
  import * as React from 'react';
2
- import { renderFluentProvider } from './renderFluentProvider';
3
- import { useFluentProvider } from './useFluentProvider';
4
- import { useFluentProviderStyles } from './useFluentProviderStyles';
5
- import { useFluentProviderContextValues } from './useFluentProviderContextValues';
6
- export var FluentProvider = /*#__PURE__*/React.forwardRef(function (props, ref) {
7
- var state = useFluentProvider(props, ref);
8
- useFluentProviderStyles(state);
9
- var contextValues = useFluentProviderContextValues(state);
10
- return renderFluentProvider(state, contextValues);
2
+ import { renderFluentProvider_unstable } from './renderFluentProvider';
3
+ import { useFluentProvider_unstable } from './useFluentProvider';
4
+ import { useFluentProviderStyles_unstable } from './useFluentProviderStyles';
5
+ import { useFluentProviderContextValues_unstable } from './useFluentProviderContextValues';
6
+ export const FluentProvider = /*#__PURE__*/React.forwardRef((props, ref) => {
7
+ const state = useFluentProvider_unstable(props, ref);
8
+ useFluentProviderStyles_unstable(state);
9
+ const contextValues = useFluentProviderContextValues_unstable(state);
10
+ return renderFluentProvider_unstable(state, contextValues);
11
11
  });
12
12
  FluentProvider.displayName = 'FluentProvider';
13
13
  //# sourceMappingURL=FluentProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/FluentProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,oBAAT,QAAqC,wBAArC;AACA,SAAS,iBAAT,QAAkC,qBAAlC;AACA,SAAS,uBAAT,QAAwC,2BAAxC;AACA,SAAS,8BAAT,QAA+C,kCAA/C;AAGA,OAAO,IAAM,cAAc,gBAAG,KAAK,CAAC,UAAN,CAAmD,UAAC,KAAD,EAAQ,GAAR,EAAW;AAC1F,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAD,EAAQ,GAAR,CAA/B;AACA,EAAA,uBAAuB,CAAC,KAAD,CAAvB;AAEA,MAAM,aAAa,GAAG,8BAA8B,CAAC,KAAD,CAApD;AAEA,SAAO,oBAAoB,CAAC,KAAD,EAAQ,aAAR,CAA3B;AACD,CAP6B,CAAvB;AASP,cAAc,CAAC,WAAf,GAA6B,gBAA7B","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/FluentProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,6BAAT,QAA8C,wBAA9C;AACA,SAAS,0BAAT,QAA2C,qBAA3C;AACA,SAAS,gCAAT,QAAiD,2BAAjD;AACA,SAAS,uCAAT,QAAwD,kCAAxD;AAGA,OAAO,MAAM,cAAc,gBAAG,KAAK,CAAC,UAAN,CAAmD,CAAC,KAAD,EAAQ,GAAR,KAAe;AAC9F,QAAM,KAAK,GAAG,0BAA0B,CAAC,KAAD,EAAQ,GAAR,CAAxC;AACA,EAAA,gCAAgC,CAAC,KAAD,CAAhC;AAEA,QAAM,aAAa,GAAG,uCAAuC,CAAC,KAAD,CAA7D;AAEA,SAAO,6BAA6B,CAAC,KAAD,EAAQ,aAAR,CAApC;AACD,CAP6B,CAAvB;AASP,cAAc,CAAC,WAAf,GAA6B,gBAA7B","sourcesContent":["import * as React from 'react';\nimport { renderFluentProvider_unstable } from './renderFluentProvider';\nimport { useFluentProvider_unstable } from './useFluentProvider';\nimport { useFluentProviderStyles_unstable } from './useFluentProviderStyles';\nimport { useFluentProviderContextValues_unstable } from './useFluentProviderContextValues';\nimport type { FluentProviderProps } from './FluentProvider.types';\n\nexport const FluentProvider = React.forwardRef<HTMLElement, FluentProviderProps>((props, ref) => {\n const state = useFluentProvider_unstable(props, ref);\n useFluentProviderStyles_unstable(state);\n\n const contextValues = useFluentProviderContextValues_unstable(state);\n\n return renderFluentProvider_unstable(state, contextValues);\n});\n\nFluentProvider.displayName = 'FluentProvider';\n"],"sourceRoot":"../src/"}
@@ -1 +1 @@
1
- {"version":3,"file":"FluentProvider.types.js","sourceRoot":"","sources":["../../../src/components/FluentProvider/FluentProvider.types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"FluentProvider.types.js","sourceRoot":"../src/","sources":["components/FluentProvider/FluentProvider.types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ProviderContextValue,\n TooltipContextType,\n ThemeClassNameContextValue,\n} from '@fluentui/react-shared-contexts';\nimport type { PartialTheme, Theme } from '@fluentui/react-theme';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type FluentProviderSlots = {\n root: Slot<'div'>;\n};\n\nexport type FluentProviderProps = Omit<ComponentProps<FluentProviderSlots>, 'dir'> & {\n /** Sets the direction of text & generated styles. */\n dir?: 'ltr' | 'rtl';\n\n /** Provides the document, can be undefined during SSR render. */\n targetDocument?: Document;\n\n theme?: PartialTheme;\n};\n\nexport type FluentProviderState = ComponentState<FluentProviderSlots> &\n Pick<FluentProviderProps, 'targetDocument'> &\n Required<Pick<FluentProviderProps, 'dir'>> & {\n theme: Theme | Partial<Theme> | undefined;\n themeClassName: string;\n };\n\nexport type FluentProviderContextValues = Pick<FluentProviderState, 'theme'> & {\n provider: ProviderContextValue;\n themeClassName: ThemeClassNameContextValue;\n textDirection: 'ltr' | 'rtl';\n tooltip: TooltipContextType;\n};\n"]}
@@ -2,5 +2,7 @@ export * from './FluentProvider';
2
2
  export * from './FluentProvider.types';
3
3
  export * from './renderFluentProvider';
4
4
  export * from './useFluentProvider';
5
+ export * from './useFluentProviderStyles';
5
6
  export * from './useFluentProviderContextValues';
7
+ export * from './useFluentProviderThemeStyleTag';
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/FluentProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["components/FluentProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC","sourcesContent":["export * from './FluentProvider';\nexport * from './FluentProvider.types';\nexport * from './renderFluentProvider';\nexport * from './useFluentProvider';\nexport * from './useFluentProviderStyles';\nexport * from './useFluentProviderContextValues';\nexport * from './useFluentProviderThemeStyleTag';\n"]}
@@ -1,17 +1,16 @@
1
- import { __assign } from "tslib";
2
1
  import * as React from 'react';
2
+ import { TextDirectionProvider } from '@griffel/react';
3
3
  import { ProviderContext, TooltipContext, ThemeContext, ThemeClassNameContext } from '@fluentui/react-shared-contexts';
4
4
  import { getSlots } from '@fluentui/react-utilities';
5
- import { fluentProviderShorthandProps } from './useFluentProvider';
6
5
  /**
7
6
  * Render the final JSX of FluentProvider
8
7
  */
9
8
 
10
- export var renderFluentProvider = function (state, contextValues) {
11
- var _a = getSlots(state, fluentProviderShorthandProps),
12
- slots = _a.slots,
13
- slotProps = _a.slotProps;
14
-
9
+ export const renderFluentProvider_unstable = (state, contextValues) => {
10
+ const {
11
+ slots,
12
+ slotProps
13
+ } = getSlots(state);
15
14
  return /*#__PURE__*/React.createElement(ProviderContext.Provider, {
16
15
  value: contextValues.provider
17
16
  }, /*#__PURE__*/React.createElement(ThemeContext.Provider, {
@@ -20,6 +19,9 @@ export var renderFluentProvider = function (state, contextValues) {
20
19
  value: contextValues.themeClassName
21
20
  }, /*#__PURE__*/React.createElement(TooltipContext.Provider, {
22
21
  value: contextValues.tooltip
23
- }, /*#__PURE__*/React.createElement(slots.root, __assign({}, slotProps.root), state.root.children)))));
22
+ }, /*#__PURE__*/React.createElement(TextDirectionProvider, {
23
+ dir: contextValues.textDirection
24
+ }, /*#__PURE__*/React.createElement(slots.root, { ...slotProps.root
25
+ }, state.root.children))))));
24
26
  };
25
27
  //# sourceMappingURL=renderFluentProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/renderFluentProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,eAAT,EAA0B,cAA1B,EAA0C,YAA1C,EAAwD,qBAAxD,QAAqF,iCAArF;AACA,SAAS,QAAT,QAAyB,2BAAzB;AAEA,SAAS,4BAAT,QAA6C,qBAA7C;AAEA;;AAEG;;AACH,OAAO,IAAM,oBAAoB,GAAG,UAAC,KAAD,EAA6B,aAA7B,EAAuE;AACnG,MAAA,EAAA,GAAuB,QAAQ,CAAsB,KAAtB,EAA6B,4BAA7B,CAA/B;AAAA,MAAE,KAAK,GAAA,EAAA,CAAA,KAAP;AAAA,MAAS,SAAS,GAAA,EAAA,CAAA,SAAlB;;AAEN,sBACE,KAAA,CAAA,aAAA,CAAC,eAAe,CAAC,QAAjB,EAAyB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAzB,eACE,KAAA,CAAA,aAAA,CAAC,YAAY,CAAC,QAAd,EAAsB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAtB,eACE,KAAA,CAAA,aAAA,CAAC,qBAAqB,CAAC,QAAvB,EAA+B;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAA/B,eACE,KAAA,CAAA,aAAA,CAAC,cAAc,CAAC,QAAhB,EAAwB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAxB,eACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,QAAA,CAAA,EAAA,EAAK,SAAS,CAAC,IAAf,CAAX,EAAiC,KAAK,CAAC,IAAN,CAAW,QAA5C,CADF,CADF,CADF,CADF,CADF;AAWD,CAdM","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/renderFluentProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,qBAAT,QAAsC,gBAAtC;AACA,SAAS,eAAT,EAA0B,cAA1B,EAA0C,YAA1C,EAAwD,qBAAxD,QAAqF,iCAArF;AACA,SAAS,QAAT,QAAyB,2BAAzB;AAGA;;AAEG;;AACH,OAAO,MAAM,6BAA6B,GAAG,CAC3C,KAD2C,EAE3C,aAF2C,KAGzC;AACF,QAAM;AAAE,IAAA,KAAF;AAAS,IAAA;AAAT,MAAuB,QAAQ,CAAsB,KAAtB,CAArC;AAEA,sBACE,KAAA,CAAA,aAAA,CAAC,eAAe,CAAC,QAAjB,EAAyB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAzB,eACE,KAAA,CAAA,aAAA,CAAC,YAAY,CAAC,QAAd,EAAsB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAtB,eACE,KAAA,CAAA,aAAA,CAAC,qBAAqB,CAAC,QAAvB,EAA+B;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAA/B,eACE,KAAA,CAAA,aAAA,CAAC,cAAc,CAAC,QAAhB,EAAwB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAxB,eACE,KAAA,CAAA,aAAA,CAAC,qBAAD,EAAsB;AAAC,IAAA,GAAG,EAAE,aAAa,CAAC;AAApB,GAAtB,eACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,EAAA,GAAK,SAAS,CAAC;AAAf,GAAX,EAAiC,KAAK,CAAC,IAAN,CAAW,QAA5C,CADF,CADF,CADF,CADF,CADF,CADF;AAaD,CAnBM","sourcesContent":["import * as React from 'react';\nimport { TextDirectionProvider } from '@griffel/react';\nimport { ProviderContext, TooltipContext, ThemeContext, ThemeClassNameContext } from '@fluentui/react-shared-contexts';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { FluentProviderSlots, FluentProviderContextValues, FluentProviderState } from './FluentProvider.types';\n\n/**\n * Render the final JSX of FluentProvider\n */\nexport const renderFluentProvider_unstable = (\n state: FluentProviderState,\n contextValues: FluentProviderContextValues,\n) => {\n const { slots, slotProps } = getSlots<FluentProviderSlots>(state);\n\n return (\n <ProviderContext.Provider value={contextValues.provider}>\n <ThemeContext.Provider value={contextValues.theme}>\n <ThemeClassNameContext.Provider value={contextValues.themeClassName}>\n <TooltipContext.Provider value={contextValues.tooltip}>\n <TextDirectionProvider dir={contextValues.textDirection}>\n <slots.root {...slotProps.root}>{state.root.children}</slots.root>\n </TextDirectionProvider>\n </TooltipContext.Provider>\n </ThemeClassNameContext.Provider>\n </ThemeContext.Provider>\n </ProviderContext.Provider>\n );\n};\n"],"sourceRoot":"../src/"}
@@ -1,51 +1,74 @@
1
- import { __assign } from "tslib";
2
1
  import { useKeyboardNavAttribute } from '@fluentui/react-tabster';
3
- import { mergeThemes } from '@fluentui/react-theme';
4
2
  import { useFluent, useTheme } from '@fluentui/react-shared-contexts';
5
3
  import { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';
6
- import { useThemeStyleTag } from './useThemeStyleTag';
7
- export var fluentProviderShorthandProps = ['root'];
4
+ import * as React from 'react';
5
+ import { useFluentProviderThemeStyleTag } from './useFluentProviderThemeStyleTag';
8
6
  /**
9
7
  * Create the state required to render FluentProvider.
10
8
  *
11
- * The returned state can be modified with hooks such as useFluentProviderStyles,
12
- * before being passed to renderFluentProvider.
9
+ * The returned state can be modified with hooks such as useFluentProviderStyles_unstable,
10
+ * before being passed to renderFluentProvider_unstable.
13
11
  *
14
12
  * @param props - props from this instance of FluentProvider
15
13
  * @param ref - reference to root HTMLElement of FluentProvider
16
14
  */
17
15
 
18
- export var useFluentProvider = function (props, ref) {
19
- var parentContext = useFluent();
20
- var parentTheme = useTheme();
16
+ export const useFluentProvider_unstable = (props, ref) => {
17
+ const parentContext = useFluent();
18
+ const parentTheme = useTheme();
21
19
  /**
22
20
  * TODO: add merge functions to "dir" merge,
23
21
  * nesting providers with the same "dir" should not add additional attributes to DOM
24
22
  * see https://github.com/microsoft/fluentui/blob/0dc74a19f3aa5a058224c20505016fbdb84db172/packages/fluentui/react-northstar/src/utils/mergeProviderContexts.ts#L89-L93
25
23
  */
26
24
 
27
- var _a = props.dir,
28
- dir = _a === void 0 ? parentContext.dir : _a,
29
- _b = props.targetDocument,
30
- targetDocument = _b === void 0 ? parentContext.targetDocument : _b,
31
- _c = props.theme,
32
- theme = _c === void 0 ? {} : _c;
33
- var mergedTheme = mergeThemes(parentTheme, theme);
25
+ const {
26
+ dir = parentContext.dir,
27
+ targetDocument = parentContext.targetDocument,
28
+ theme
29
+ } = props;
30
+ const mergedTheme = mergeThemes(parentTheme, theme);
31
+ React.useEffect(() => {
32
+ if (process.env.NODE_ENV !== 'production' && mergedTheme === undefined) {
33
+ // eslint-disable-next-line no-console
34
+ console.warn(`
35
+ FluentProvider: your "theme" is not defined !
36
+ =============================================
37
+ Make sure your root FluentProvider has set a theme or you're setting the theme in your child FluentProvider.
38
+ `);
39
+ } // eslint-disable-next-line react-hooks/exhaustive-deps
40
+
41
+ }, []);
34
42
  return {
35
- dir: dir,
36
- targetDocument: targetDocument,
43
+ dir,
44
+ targetDocument,
37
45
  theme: mergedTheme,
38
- themeClassName: useThemeStyleTag({
46
+ themeClassName: useFluentProviderThemeStyleTag({
39
47
  theme: mergedTheme,
40
- targetDocument: targetDocument
48
+ targetDocument
41
49
  }),
42
50
  components: {
43
51
  root: 'div'
44
52
  },
45
- root: getNativeElementProps('div', __assign(__assign({}, props), {
46
- dir: dir,
53
+ root: getNativeElementProps('div', { ...props,
54
+ dir,
47
55
  ref: useMergedRefs(ref, useKeyboardNavAttribute())
48
- }))
56
+ })
49
57
  };
50
58
  };
59
+
60
+ function mergeThemes(a, b) {
61
+ // Merge impacts perf: we should like to avoid it if it's possible
62
+ if (a && b) {
63
+ return { ...a,
64
+ ...b
65
+ };
66
+ }
67
+
68
+ if (a) {
69
+ return a;
70
+ }
71
+
72
+ return b;
73
+ }
51
74
  //# sourceMappingURL=useFluentProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/useFluentProvider.ts"],"names":[],"mappings":";AAAA,SAAS,uBAAT,QAAwC,yBAAxC;AACA,SAAS,WAAT,QAA4B,uBAA5B;AACA,SAAS,SAAT,EAAoB,QAApB,QAAoC,iCAApC;AACA,SAAS,qBAAT,EAAgC,aAAhC,QAAqD,2BAArD;AAEA,SAAS,gBAAT,QAAiC,oBAAjC;AAGA,OAAO,IAAM,4BAA4B,GAAkC,CAAC,MAAD,CAApE;AAEP;;;;;;;;AAQG;;AACH,OAAO,IAAM,iBAAiB,GAAG,UAAC,KAAD,EAA6B,GAA7B,EAAwD;AACvF,MAAM,aAAa,GAAG,SAAS,EAA/B;AACA,MAAM,WAAW,GAAG,QAAQ,EAA5B;AAEA;;;;AAIG;;AACK,MAAA,EAAA,GAAuF,KAAK,CAArE,GAAvB;AAAA,MAAA,GAAG,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,aAAa,CAAC,GAAjB,GAAoB,EAAvB;AAAA,MAAyB,EAAA,GAA8D,KAAK,CAAtB,cAAtE;AAAA,MAAyB,cAAc,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,aAAa,CAAC,cAAjB,GAA+B,EAAtE;AAAA,MAAwE,EAAA,GAAe,KAAK,CAAV,KAAlF;AAAA,MAAwE,KAAK,GAAA,EAAA,KAAA,KAAA,CAAA,GAAG,EAAH,GAAK,EAAlF;AACR,MAAM,WAAW,GAAG,WAAW,CAAC,WAAD,EAAc,KAAd,CAA/B;AAEA,SAAO;AACL,IAAA,GAAG,EAAA,GADE;AAEL,IAAA,cAAc,EAAA,cAFT;AAGL,IAAA,KAAK,EAAE,WAHF;AAIL,IAAA,cAAc,EAAE,gBAAgB,CAAC;AAAE,MAAA,KAAK,EAAE,WAAT;AAAsB,MAAA,cAAc,EAAA;AAApC,KAAD,CAJ3B;AAML,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE;AADI,KANP;AAUL,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAD,EAAM,QAAA,CAAA,QAAA,CAAA,EAAA,EAC5B,KAD4B,CAAA,EACvB;AACR,MAAA,GAAG,EAAA,GADK;AAER,MAAA,GAAG,EAAE,aAAa,CAAC,GAAD,EAAM,uBAAuB,EAA7B;AAFV,KADuB,CAAN;AAVtB,GAAP;AAgBD,CA5BM","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/useFluentProvider.ts"],"names":[],"mappings":"AAAA,SAAS,uBAAT,QAAwC,yBAAxC;AAEA,SAAS,SAAT,EAAoB,QAApB,QAAoC,iCAApC;AACA,SAAS,qBAAT,EAAgC,aAAhC,QAAqD,2BAArD;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AACA,SAAS,8BAAT,QAA+C,kCAA/C;AAGA;;;;;;;;AAQG;;AACH,OAAO,MAAM,0BAA0B,GAAG,CACxC,KADwC,EAExC,GAFwC,KAGjB;AACvB,QAAM,aAAa,GAAG,SAAS,EAA/B;AACA,QAAM,WAAW,GAAG,QAAQ,EAA5B;AAEA;;;;AAIG;;AACH,QAAM;AAAE,IAAA,GAAG,GAAG,aAAa,CAAC,GAAtB;AAA2B,IAAA,cAAc,GAAG,aAAa,CAAC,cAA1D;AAA0E,IAAA;AAA1E,MAAoF,KAA1F;AACA,QAAM,WAAW,GAAG,WAAW,CAAC,WAAD,EAAc,KAAd,CAA/B;AAEA,EAAA,KAAK,CAAC,SAAN,CAAgB,MAAK;AACnB,QAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,KAAyB,YAAzB,IAAyC,WAAW,KAAK,SAA7D,EAAwE;AACtE;AACA,MAAA,OAAO,CAAC,IAAR,CAAa;;;;AAIZ,OAJD;AAKD,KARkB,CASnB;;AACD,GAVD,EAUG,EAVH;AAYA,SAAO;AACL,IAAA,GADK;AAEL,IAAA,cAFK;AAGL,IAAA,KAAK,EAAE,WAHF;AAIL,IAAA,cAAc,EAAE,8BAA8B,CAAC;AAAE,MAAA,KAAK,EAAE,WAAT;AAAsB,MAAA;AAAtB,KAAD,CAJzC;AAML,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE;AADI,KANP;AAUL,IAAA,IAAI,EAAE,qBAAqB,CAAC,KAAD,EAAQ,EACjC,GAAG,KAD8B;AAEjC,MAAA,GAFiC;AAGjC,MAAA,GAAG,EAAE,aAAa,CAAC,GAAD,EAAM,uBAAuB,EAA7B;AAHe,KAAR;AAVtB,GAAP;AAgBD,CA3CM;;AA6CP,SAAS,WAAT,CAAqB,CAArB,EAA4D,CAA5D,EAAuE;AACrE;AACA,MAAI,CAAC,IAAI,CAAT,EAAY;AACV,WAAO,EAAE,GAAG,CAAL;AAAQ,SAAG;AAAX,KAAP;AACD;;AAED,MAAI,CAAJ,EAAO;AACL,WAAO,CAAP;AACD;;AAED,SAAO,CAAP;AACD","sourcesContent":["import { useKeyboardNavAttribute } from '@fluentui/react-tabster';\nimport type { Theme } from '@fluentui/react-theme';\nimport { useFluent, useTheme } from '@fluentui/react-shared-contexts';\nimport { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useFluentProviderThemeStyleTag } from './useFluentProviderThemeStyleTag';\nimport type { FluentProviderProps, FluentProviderState } from './FluentProvider.types';\n\n/**\n * Create the state required to render FluentProvider.\n *\n * The returned state can be modified with hooks such as useFluentProviderStyles_unstable,\n * before being passed to renderFluentProvider_unstable.\n *\n * @param props - props from this instance of FluentProvider\n * @param ref - reference to root HTMLElement of FluentProvider\n */\nexport const useFluentProvider_unstable = (\n props: FluentProviderProps,\n ref: React.Ref<HTMLElement>,\n): FluentProviderState => {\n const parentContext = useFluent();\n const parentTheme = useTheme();\n\n /**\n * TODO: add merge functions to \"dir\" merge,\n * nesting providers with the same \"dir\" should not add additional attributes to DOM\n * see https://github.com/microsoft/fluentui/blob/0dc74a19f3aa5a058224c20505016fbdb84db172/packages/fluentui/react-northstar/src/utils/mergeProviderContexts.ts#L89-L93\n */\n const { dir = parentContext.dir, targetDocument = parentContext.targetDocument, theme } = props;\n const mergedTheme = mergeThemes(parentTheme, theme);\n\n React.useEffect(() => {\n if (process.env.NODE_ENV !== 'production' && mergedTheme === undefined) {\n // eslint-disable-next-line no-console\n console.warn(`\n FluentProvider: your \"theme\" is not defined !\n =============================================\n Make sure your root FluentProvider has set a theme or you're setting the theme in your child FluentProvider.\n `);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n dir,\n targetDocument,\n theme: mergedTheme,\n themeClassName: useFluentProviderThemeStyleTag({ theme: mergedTheme, targetDocument }),\n\n components: {\n root: 'div',\n },\n\n root: getNativeElementProps('div', {\n ...props,\n dir,\n ref: useMergedRefs(ref, useKeyboardNavAttribute()),\n }),\n };\n};\n\nfunction mergeThemes(a: Theme | Partial<Theme> | undefined, b: typeof a): Theme | Partial<Theme> | undefined {\n // Merge impacts perf: we should like to avoid it if it's possible\n if (a && b) {\n return { ...a, ...b };\n }\n\n if (a) {\n return a;\n }\n\n return b;\n}\n"],"sourceRoot":"../src/"}
@@ -1,22 +1,23 @@
1
1
  import { useConst } from '@fluentui/react-utilities';
2
2
  import * as React from 'react';
3
- export function useFluentProviderContextValues(state) {
4
- var root = state.root,
5
- dir = state.dir,
6
- targetDocument = state.targetDocument,
7
- theme = state.theme;
8
- var provider = React.useMemo(function () {
9
- return {
10
- dir: dir,
11
- targetDocument: targetDocument
12
- };
13
- }, [dir, targetDocument]); // "Tooltip" component mutates an object in this context, instance should be stable
3
+ export function useFluentProviderContextValues_unstable(state) {
4
+ const {
5
+ root,
6
+ dir,
7
+ targetDocument,
8
+ theme
9
+ } = state;
10
+ const provider = React.useMemo(() => ({
11
+ dir,
12
+ targetDocument
13
+ }), [dir, targetDocument]); // "Tooltip" component mutates an object in this context, instance should be stable
14
14
 
15
- var tooltip = useConst({});
15
+ const tooltip = useConst({});
16
16
  return {
17
- provider: provider,
18
- tooltip: tooltip,
19
- theme: theme,
17
+ provider,
18
+ textDirection: dir,
19
+ tooltip,
20
+ theme,
20
21
  themeClassName: root.className
21
22
  };
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/useFluentProviderContextValues.ts"],"names":[],"mappings":"AAAA,SAAS,QAAT,QAAyB,2BAAzB;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAGA,OAAM,SAAU,8BAAV,CAAyC,KAAzC,EAAmE;AAC/D,MAAA,IAAI,GAAiC,KAAK,CAAtC,IAAJ;AAAA,MAAM,GAAG,GAA4B,KAAK,CAAjC,GAAT;AAAA,MAAW,cAAc,GAAY,KAAK,CAAjB,cAAzB;AAAA,MAA2B,KAAK,GAAK,KAAK,CAAV,KAAhC;AAER,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAN,CAAc,YAAA;AAAM,WAAC;AAAE,MAAA,GAAG,EAAA,GAAL;AAAO,MAAA,cAAc,EAAtB;AAAC,KAAD;AAAyB,GAA7C,EAA+C,CAAC,GAAD,EAAM,cAAN,CAA/C,CAAjB,CAHuE,CAIvE;;AACA,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAD,CAAxB;AAEA,SAAO;AACL,IAAA,QAAQ,EAAA,QADH;AAEL,IAAA,OAAO,EAAA,OAFF;AAGL,IAAA,KAAK,EAAA,KAHA;AAIL,IAAA,cAAc,EAAE,IAAI,CAAC;AAJhB,GAAP;AAMD","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/useFluentProviderContextValues.ts"],"names":[],"mappings":"AAAA,SAAS,QAAT,QAAyB,2BAAzB;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAGA,OAAM,SAAU,uCAAV,CAAkD,KAAlD,EAA4E;AAChF,QAAM;AAAE,IAAA,IAAF;AAAQ,IAAA,GAAR;AAAa,IAAA,cAAb;AAA6B,IAAA;AAA7B,MAAuC,KAA7C;AAEA,QAAM,QAAQ,GAAG,KAAK,CAAC,OAAN,CAAc,OAAO;AAAE,IAAA,GAAF;AAAO,IAAA;AAAP,GAAP,CAAd,EAA+C,CAAC,GAAD,EAAM,cAAN,CAA/C,CAAjB,CAHgF,CAIhF;;AACA,QAAM,OAAO,GAAG,QAAQ,CAAC,EAAD,CAAxB;AAEA,SAAO;AACL,IAAA,QADK;AAEL,IAAA,aAAa,EAAE,GAFV;AAGL,IAAA,OAHK;AAIL,IAAA,KAJK;AAKL,IAAA,cAAc,EAAE,IAAI,CAAC;AALhB,GAAP;AAOD","sourcesContent":["import { useConst } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport type { FluentProviderContextValues, FluentProviderState } from './FluentProvider.types';\n\nexport function useFluentProviderContextValues_unstable(state: FluentProviderState): FluentProviderContextValues {\n const { root, dir, targetDocument, theme } = state;\n\n const provider = React.useMemo(() => ({ dir, targetDocument }), [dir, targetDocument]);\n // \"Tooltip\" component mutates an object in this context, instance should be stable\n const tooltip = useConst({});\n\n return {\n provider,\n textDirection: dir,\n tooltip,\n theme,\n themeClassName: root.className!,\n };\n}\n"],"sourceRoot":"../src/"}
@@ -1,6 +1,10 @@
1
- import { __styles, mergeClasses } from '@fluentui/react-make-styles';
1
+ import { __styles, mergeClasses } from '@griffel/react';
2
+ import { tokens } from '@fluentui/react-theme';
3
+ export const fluentProviderClassNames = {
4
+ root: 'fui-FluentProvider'
5
+ };
2
6
 
3
- var useStyles = /*#__PURE__*/__styles({
7
+ const useStyles = /*#__PURE__*/__styles({
4
8
  "root": {
5
9
  "sj55zd": "f19n0e5",
6
10
  "De3pzq": "fxugw4r",
@@ -14,9 +18,9 @@ var useStyles = /*#__PURE__*/__styles({
14
18
  /** Applies style classnames to slots */
15
19
 
16
20
 
17
- export var useFluentProviderStyles = function (state) {
18
- var styles = useStyles();
19
- state.root.className = mergeClasses(state.themeClassName, styles.root, state.root.className);
21
+ export const useFluentProviderStyles_unstable = state => {
22
+ const styles = useStyles();
23
+ state.root.className = mergeClasses(fluentProviderClassNames.root, state.themeClassName, styles.root, state.root.className);
20
24
  return state;
21
25
  };
22
26
  //# sourceMappingURL=useFluentProviderStyles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/useFluentProviderStyles.ts"],"names":[],"mappings":"AAAA,mBAAqB,YAArB,QAAyC,6BAAzC;;AAGA,IAAM,SAAS,gBAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;AAUA;;;AACA,OAAO,IAAM,uBAAuB,GAAG,UAAC,KAAD,EAA2B;AAChE,MAAM,MAAM,GAAG,SAAS,EAAxB;AAEA,EAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,YAAY,CAAC,KAAK,CAAC,cAAP,EAAuB,MAAM,CAAC,IAA9B,EAAoC,KAAK,CAAC,IAAN,CAAW,SAA/C,CAAnC;AAEA,SAAO,KAAP;AACD,CANM","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/useFluentProviderStyles.ts"],"names":[],"mappings":"AAAA,mBAAqB,YAArB,QAAyC,gBAAzC;AACA,SAAS,MAAT,QAAuB,uBAAvB;AAIA,OAAO,MAAM,wBAAwB,GAAwC;AAC3E,EAAA,IAAI,EAAE;AADqE,CAAtE;;AAIP,MAAM,SAAS,gBAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;AAUA;;;AACA,OAAO,MAAM,gCAAgC,GAAI,KAAD,IAA+B;AAC7E,QAAM,MAAM,GAAG,SAAS,EAAxB;AAEA,EAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,YAAY,CACjC,wBAAwB,CAAC,IADQ,EAEjC,KAAK,CAAC,cAF2B,EAGjC,MAAM,CAAC,IAH0B,EAIjC,KAAK,CAAC,IAAN,CAAW,SAJsB,CAAnC;AAOA,SAAO,KAAP;AACD,CAXM","sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport type { FluentProviderSlots, FluentProviderState } from './FluentProvider.types';\nimport { SlotClassNames } from '@fluentui/react-utilities';\n\nexport const fluentProviderClassNames: SlotClassNames<FluentProviderSlots> = {\n root: 'fui-FluentProvider',\n};\n\nconst useStyles = makeStyles({\n root: {\n color: tokens.colorNeutralForeground1,\n backgroundColor: tokens.colorNeutralBackground1,\n fontFamily: tokens.fontFamilyBase,\n fontSize: tokens.fontSizeBase300,\n fontWeight: tokens.fontWeightRegular,\n },\n});\n\n/** Applies style classnames to slots */\nexport const useFluentProviderStyles_unstable = (state: FluentProviderState) => {\n const styles = useStyles();\n\n state.root.className = mergeClasses(\n fluentProviderClassNames.root,\n state.themeClassName,\n styles.root,\n state.root.className,\n );\n\n return state;\n};\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,61 @@
1
+ import { useId, usePrevious } from '@fluentui/react-utilities';
2
+ import * as React from 'react';
3
+ import { fluentProviderClassNames } from './useFluentProviderStyles';
4
+ /**
5
+ * Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class
6
+ *
7
+ * @returns CSS class to apply the rule
8
+ */
9
+
10
+ export const useFluentProviderThemeStyleTag = options => {
11
+ const {
12
+ targetDocument,
13
+ theme
14
+ } = options;
15
+ const styleTagId = useId(fluentProviderClassNames.root);
16
+ const styleTag = React.useMemo(() => {
17
+ if (!targetDocument) {
18
+ return null;
19
+ }
20
+
21
+ const tag = targetDocument.createElement('style');
22
+ tag.setAttribute('id', styleTagId);
23
+ targetDocument.head.appendChild(tag);
24
+ return tag;
25
+ }, [styleTagId, targetDocument]);
26
+ const cssRule = React.useMemo(() => {
27
+ const cssVarsAsString = theme ? Object.keys(theme).reduce((cssVarRule, cssVar) => {
28
+ cssVarRule += `--${cssVar}: ${theme[cssVar]}; `;
29
+ return cssVarRule;
30
+ }, '') : ''; // result: .fluent-provider1 { --css-var: '#fff' }
31
+
32
+ return `.${styleTagId} { ${cssVarsAsString} }`;
33
+ }, [theme, styleTagId]);
34
+ const previousCssRule = usePrevious(cssRule);
35
+
36
+ if (styleTag && previousCssRule !== cssRule) {
37
+ const sheet = styleTag.sheet;
38
+
39
+ if (sheet) {
40
+ if (sheet.cssRules.length > 0) {
41
+ sheet.deleteRule(0);
42
+ }
43
+
44
+ sheet.insertRule(cssRule, 0);
45
+ } else if (process.env.NODE_ENV !== 'production') {
46
+ // eslint-disable-next-line no-console
47
+ console.error('FluentProvider: No sheet available on styleTag, styles will not be inserted into DOM.');
48
+ }
49
+ } // Removes the style tag from the targetDocument on unmount or change
50
+
51
+
52
+ React.useEffect(() => {
53
+ return () => {
54
+ if (styleTag) {
55
+ styleTag.remove();
56
+ }
57
+ };
58
+ }, [styleTag]);
59
+ return styleTagId;
60
+ };
61
+ //# sourceMappingURL=useFluentProviderThemeStyleTag.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["components/FluentProvider/useFluentProviderThemeStyleTag.ts"],"names":[],"mappings":"AAAA,SAAS,KAAT,EAAgB,WAAhB,QAAmC,2BAAnC;AACA,OAAO,KAAK,KAAZ,MAAuB,OAAvB;AAEA,SAAS,wBAAT,QAAyC,2BAAzC;AAEA;;;;AAIG;;AACH,OAAO,MAAM,8BAA8B,GAAI,OAAD,IAAmE;AAC/G,QAAM;AAAE,IAAA,cAAF;AAAkB,IAAA;AAAlB,MAA4B,OAAlC;AAEA,QAAM,UAAU,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAA1B,CAAxB;AACA,QAAM,QAAQ,GAAG,KAAK,CAAC,OAAN,CAAc,MAAK;AAClC,QAAI,CAAC,cAAL,EAAqB;AACnB,aAAO,IAAP;AACD;;AAED,UAAM,GAAG,GAAG,cAAc,CAAC,aAAf,CAA6B,OAA7B,CAAZ;AACA,IAAA,GAAG,CAAC,YAAJ,CAAiB,IAAjB,EAAuB,UAAvB;AACA,IAAA,cAAc,CAAC,IAAf,CAAoB,WAApB,CAAgC,GAAhC;AACA,WAAO,GAAP;AACD,GATgB,EASd,CAAC,UAAD,EAAa,cAAb,CATc,CAAjB;AAWA,QAAM,OAAO,GAAG,KAAK,CAAC,OAAN,CAAc,MAAK;AACjC,UAAM,eAAe,GAAG,KAAK,GACxB,MAAM,CAAC,IAAP,CAAY,KAAZ,EAA8C,MAA9C,CAAqD,CAAC,UAAD,EAAa,MAAb,KAAuB;AAC3E,MAAA,UAAU,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC,MAAD,CAAQ,IAA3C;AACA,aAAO,UAAP;AACD,KAHA,EAGE,EAHF,CADwB,GAKzB,EALJ,CADiC,CAQjC;;AACA,WAAO,IAAI,UAAU,MAAM,eAAe,IAA1C;AACD,GAVe,EAUb,CAAC,KAAD,EAAQ,UAAR,CAVa,CAAhB;AAWA,QAAM,eAAe,GAAG,WAAW,CAAC,OAAD,CAAnC;;AAEA,MAAI,QAAQ,IAAI,eAAe,KAAK,OAApC,EAA6C;AAC3C,UAAM,KAAK,GAAG,QAAQ,CAAC,KAAvB;;AAEA,QAAI,KAAJ,EAAW;AACT,UAAI,KAAK,CAAC,QAAN,CAAe,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,QAAA,KAAK,CAAC,UAAN,CAAiB,CAAjB;AACD;;AACD,MAAA,KAAK,CAAC,UAAN,CAAiB,OAAjB,EAA0B,CAA1B;AACD,KALD,MAKO,IAAI,OAAO,CAAC,GAAR,CAAY,QAAZ,KAAyB,YAA7B,EAA2C;AAChD;AACA,MAAA,OAAO,CAAC,KAAR,CAAc,uFAAd;AACD;AACF,GAxC8G,CA0C/G;;;AACA,EAAA,KAAK,CAAC,SAAN,CAAgB,MAAK;AACnB,WAAO,MAAK;AACV,UAAI,QAAJ,EAAc;AACZ,QAAA,QAAQ,CAAC,MAAT;AACD;AACF,KAJD;AAKD,GAND,EAMG,CAAC,QAAD,CANH;AAQA,SAAO,UAAP;AACD,CApDM","sourcesContent":["import { useId, usePrevious } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport type { FluentProviderState } from './FluentProvider.types';\nimport { fluentProviderClassNames } from './useFluentProviderStyles';\n\n/**\n * Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class\n *\n * @returns CSS class to apply the rule\n */\nexport const useFluentProviderThemeStyleTag = (options: Pick<FluentProviderState, 'theme' | 'targetDocument'>) => {\n const { targetDocument, theme } = options;\n\n const styleTagId = useId(fluentProviderClassNames.root);\n const styleTag = React.useMemo(() => {\n if (!targetDocument) {\n return null;\n }\n\n const tag = targetDocument.createElement('style');\n tag.setAttribute('id', styleTagId);\n targetDocument.head.appendChild(tag);\n return tag;\n }, [styleTagId, targetDocument]);\n\n const cssRule = React.useMemo(() => {\n const cssVarsAsString = theme\n ? (Object.keys(theme) as (keyof typeof theme)[]).reduce((cssVarRule, cssVar) => {\n cssVarRule += `--${cssVar}: ${theme[cssVar]}; `;\n return cssVarRule;\n }, '')\n : '';\n\n // result: .fluent-provider1 { --css-var: '#fff' }\n return `.${styleTagId} { ${cssVarsAsString} }`;\n }, [theme, styleTagId]);\n const previousCssRule = usePrevious(cssRule);\n\n if (styleTag && previousCssRule !== cssRule) {\n const sheet = styleTag.sheet;\n\n if (sheet) {\n if (sheet.cssRules.length > 0) {\n sheet.deleteRule(0);\n }\n sheet.insertRule(cssRule, 0);\n } else if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('FluentProvider: No sheet available on styleTag, styles will not be inserted into DOM.');\n }\n }\n\n // Removes the style tag from the targetDocument on unmount or change\n React.useEffect(() => {\n return () => {\n if (styleTag) {\n styleTag.remove();\n }\n };\n }, [styleTag]);\n\n return styleTagId;\n};\n"],"sourceRoot":"../src/"}
package/lib/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export * from './FluentProvider';
1
+ export { fluentProviderClassNames, FluentProvider, renderFluentProvider_unstable, useFluentProviderContextValues_unstable, useFluentProvider_unstable, useFluentProviderStyles_unstable, useFluentProviderThemeStyleTag } from './FluentProvider';
2
2
  export { useFluent, useTheme } from '@fluentui/react-shared-contexts';
3
3
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,SACE,wBADF,EAEE,cAFF,EAGE,6BAHF,EAIE,uCAJF,EAKE,0BALF,EAME,gCANF,EAOE,8BAPF,QAQO,kBARP;AAgBA,SAAS,SAAT,EAAoB,QAApB,QAAoC,iCAApC","sourcesContent":["export {\n fluentProviderClassNames,\n FluentProvider,\n renderFluentProvider_unstable,\n useFluentProviderContextValues_unstable,\n useFluentProvider_unstable,\n useFluentProviderStyles_unstable,\n useFluentProviderThemeStyleTag,\n} from './FluentProvider';\nexport type {\n FluentProviderContextValues,\n FluentProviderProps,\n FluentProviderState,\n FluentProviderSlots,\n} from './FluentProvider';\n\nexport { useFluent, useTheme } from '@fluentui/react-shared-contexts';\n"],"sourceRoot":"../src/"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var tslib_1 = /*#__PURE__*/require("tslib");
7
+ const tslib_1 = /*#__PURE__*/require("tslib");
8
8
 
9
9
  tslib_1.__exportStar(require("./components/FluentProvider/index"), exports);
10
10
  //# sourceMappingURL=FluentProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/FluentProvider.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mCAAA,CAAA,EAAA,OAAA","sourceRoot":""}
1
+ {"version":3,"sources":["FluentProvider.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mCAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './components/FluentProvider/index';\n"],"sourceRoot":"../src/"}
@@ -5,21 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.FluentProvider = void 0;
7
7
 
8
- var React = /*#__PURE__*/require("react");
8
+ const React = /*#__PURE__*/require("react");
9
9
 
10
- var renderFluentProvider_1 = /*#__PURE__*/require("./renderFluentProvider");
10
+ const renderFluentProvider_1 = /*#__PURE__*/require("./renderFluentProvider");
11
11
 
12
- var useFluentProvider_1 = /*#__PURE__*/require("./useFluentProvider");
12
+ const useFluentProvider_1 = /*#__PURE__*/require("./useFluentProvider");
13
13
 
14
- var useFluentProviderStyles_1 = /*#__PURE__*/require("./useFluentProviderStyles");
14
+ const useFluentProviderStyles_1 = /*#__PURE__*/require("./useFluentProviderStyles");
15
15
 
16
- var useFluentProviderContextValues_1 = /*#__PURE__*/require("./useFluentProviderContextValues");
16
+ const useFluentProviderContextValues_1 = /*#__PURE__*/require("./useFluentProviderContextValues");
17
17
 
18
- exports.FluentProvider = /*#__PURE__*/React.forwardRef(function (props, ref) {
19
- var state = useFluentProvider_1.useFluentProvider(props, ref);
20
- useFluentProviderStyles_1.useFluentProviderStyles(state);
21
- var contextValues = useFluentProviderContextValues_1.useFluentProviderContextValues(state);
22
- return renderFluentProvider_1.renderFluentProvider(state, contextValues);
18
+ exports.FluentProvider = /*#__PURE__*/React.forwardRef((props, ref) => {
19
+ const state = useFluentProvider_1.useFluentProvider_unstable(props, ref);
20
+ useFluentProviderStyles_1.useFluentProviderStyles_unstable(state);
21
+ const contextValues = useFluentProviderContextValues_1.useFluentProviderContextValues_unstable(state);
22
+ return renderFluentProvider_1.renderFluentProvider_unstable(state, contextValues);
23
23
  });
24
24
  exports.FluentProvider.displayName = 'FluentProvider';
25
25
  //# sourceMappingURL=FluentProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/FluentProvider.tsx"],"names":[],"mappings":";;;;;;;AAAA,IAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,IAAA,sBAAA,gBAAA,OAAA,CAAA,wBAAA,CAAA;;AACA,IAAA,mBAAA,gBAAA,OAAA,CAAA,qBAAA,CAAA;;AACA,IAAA,yBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,IAAA,gCAAA,gBAAA,OAAA,CAAA,kCAAA,CAAA;;AAGa,OAAA,CAAA,cAAA,gBAAiB,KAAK,CAAC,UAAN,CAAmD,UAAC,KAAD,EAAQ,GAAR,EAAW;AAC1F,MAAM,KAAK,GAAG,mBAAA,CAAA,iBAAA,CAAkB,KAAlB,EAAyB,GAAzB,CAAd;AACA,EAAA,yBAAA,CAAA,uBAAA,CAAwB,KAAxB;AAEA,MAAM,aAAa,GAAG,gCAAA,CAAA,8BAAA,CAA+B,KAA/B,CAAtB;AAEA,SAAO,sBAAA,CAAA,oBAAA,CAAqB,KAArB,EAA4B,aAA5B,CAAP;AACD,CAP6B,CAAjB;AASb,OAAA,CAAA,cAAA,CAAe,WAAf,GAA6B,gBAA7B","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/FluentProvider.tsx"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,sBAAA,gBAAA,OAAA,CAAA,wBAAA,CAAA;;AACA,MAAA,mBAAA,gBAAA,OAAA,CAAA,qBAAA,CAAA;;AACA,MAAA,yBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,gCAAA,gBAAA,OAAA,CAAA,kCAAA,CAAA;;AAGa,OAAA,CAAA,cAAA,gBAAiB,KAAK,CAAC,UAAN,CAAmD,CAAC,KAAD,EAAQ,GAAR,KAAe;AAC9F,QAAM,KAAK,GAAG,mBAAA,CAAA,0BAAA,CAA2B,KAA3B,EAAkC,GAAlC,CAAd;AACA,EAAA,yBAAA,CAAA,gCAAA,CAAiC,KAAjC;AAEA,QAAM,aAAa,GAAG,gCAAA,CAAA,uCAAA,CAAwC,KAAxC,CAAtB;AAEA,SAAO,sBAAA,CAAA,6BAAA,CAA8B,KAA9B,EAAqC,aAArC,CAAP;AACD,CAP6B,CAAjB;AASb,OAAA,CAAA,cAAA,CAAe,WAAf,GAA6B,gBAA7B","sourcesContent":["import * as React from 'react';\nimport { renderFluentProvider_unstable } from './renderFluentProvider';\nimport { useFluentProvider_unstable } from './useFluentProvider';\nimport { useFluentProviderStyles_unstable } from './useFluentProviderStyles';\nimport { useFluentProviderContextValues_unstable } from './useFluentProviderContextValues';\nimport type { FluentProviderProps } from './FluentProvider.types';\n\nexport const FluentProvider = React.forwardRef<HTMLElement, FluentProviderProps>((props, ref) => {\n const state = useFluentProvider_unstable(props, ref);\n useFluentProviderStyles_unstable(state);\n\n const contextValues = useFluentProviderContextValues_unstable(state);\n\n return renderFluentProvider_unstable(state, contextValues);\n});\n\nFluentProvider.displayName = 'FluentProvider';\n"],"sourceRoot":"../src/"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":""}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":"../src/"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- var tslib_1 = /*#__PURE__*/require("tslib");
7
+ const tslib_1 = /*#__PURE__*/require("tslib");
8
8
 
9
9
  tslib_1.__exportStar(require("./FluentProvider"), exports);
10
10
 
@@ -14,5 +14,9 @@ tslib_1.__exportStar(require("./renderFluentProvider"), exports);
14
14
 
15
15
  tslib_1.__exportStar(require("./useFluentProvider"), exports);
16
16
 
17
+ tslib_1.__exportStar(require("./useFluentProviderStyles"), exports);
18
+
17
19
  tslib_1.__exportStar(require("./useFluentProviderContextValues"), exports);
20
+
21
+ tslib_1.__exportStar(require("./useFluentProviderThemeStyleTag"), exports);
18
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FluentProvider/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kCAAA,CAAA,EAAA,OAAA","sourceRoot":""}
1
+ {"version":3,"sources":["components/FluentProvider/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kCAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kCAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './FluentProvider';\nexport * from './FluentProvider.types';\nexport * from './renderFluentProvider';\nexport * from './useFluentProvider';\nexport * from './useFluentProviderStyles';\nexport * from './useFluentProviderContextValues';\nexport * from './useFluentProviderThemeStyleTag';\n"],"sourceRoot":"../src/"}
@@ -3,27 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.renderFluentProvider = void 0;
6
+ exports.renderFluentProvider_unstable = void 0;
7
7
 
8
- var tslib_1 = /*#__PURE__*/require("tslib");
8
+ const React = /*#__PURE__*/require("react");
9
9
 
10
- var React = /*#__PURE__*/require("react");
10
+ const react_1 = /*#__PURE__*/require("@griffel/react");
11
11
 
12
- var react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
12
+ const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
13
13
 
14
- var react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
15
-
16
- var useFluentProvider_1 = /*#__PURE__*/require("./useFluentProvider");
14
+ const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
17
15
  /**
18
16
  * Render the final JSX of FluentProvider
19
17
  */
20
18
 
21
19
 
22
- var renderFluentProvider = function (state, contextValues) {
23
- var _a = react_utilities_1.getSlots(state, useFluentProvider_1.fluentProviderShorthandProps),
24
- slots = _a.slots,
25
- slotProps = _a.slotProps;
26
-
20
+ const renderFluentProvider_unstable = (state, contextValues) => {
21
+ const {
22
+ slots,
23
+ slotProps
24
+ } = react_utilities_1.getSlots(state);
27
25
  return React.createElement(react_shared_contexts_1.ProviderContext.Provider, {
28
26
  value: contextValues.provider
29
27
  }, React.createElement(react_shared_contexts_1.ThemeContext.Provider, {
@@ -32,8 +30,11 @@ var renderFluentProvider = function (state, contextValues) {
32
30
  value: contextValues.themeClassName
33
31
  }, React.createElement(react_shared_contexts_1.TooltipContext.Provider, {
34
32
  value: contextValues.tooltip
35
- }, React.createElement(slots.root, tslib_1.__assign({}, slotProps.root), state.root.children)))));
33
+ }, React.createElement(react_1.TextDirectionProvider, {
34
+ dir: contextValues.textDirection
35
+ }, React.createElement(slots.root, { ...slotProps.root
36
+ }, state.root.children))))));
36
37
  };
37
38
 
38
- exports.renderFluentProvider = renderFluentProvider;
39
+ exports.renderFluentProvider_unstable = renderFluentProvider_unstable;
39
40
  //# sourceMappingURL=renderFluentProvider.js.map