@fluentui/react-provider 0.0.0-nightly-20220302-0405.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +3190 -0
- package/CHANGELOG.md +1174 -0
- package/LICENSE +15 -0
- package/README.md +5 -0
- package/dist/react-provider.d.ts +69 -0
- package/lib/FluentProvider.d.ts +1 -0
- package/lib/FluentProvider.js +2 -0
- package/lib/FluentProvider.js.map +1 -0
- package/lib/components/FluentProvider/FluentProvider.d.ts +3 -0
- package/lib/components/FluentProvider/FluentProvider.js +13 -0
- package/lib/components/FluentProvider/FluentProvider.js.map +1 -0
- package/lib/components/FluentProvider/FluentProvider.types.d.ts +26 -0
- package/lib/components/FluentProvider/FluentProvider.types.js +2 -0
- package/lib/components/FluentProvider/FluentProvider.types.js.map +1 -0
- package/lib/components/FluentProvider/index.d.ts +6 -0
- package/lib/components/FluentProvider/index.js +7 -0
- package/lib/components/FluentProvider/index.js.map +1 -0
- package/lib/components/FluentProvider/renderFluentProvider.d.ts +5 -0
- package/lib/components/FluentProvider/renderFluentProvider.js +27 -0
- package/lib/components/FluentProvider/renderFluentProvider.js.map +1 -0
- package/lib/components/FluentProvider/useFluentProvider.d.ts +12 -0
- package/lib/components/FluentProvider/useFluentProvider.js +74 -0
- package/lib/components/FluentProvider/useFluentProvider.js.map +1 -0
- package/lib/components/FluentProvider/useFluentProviderContextValues.d.ts +2 -0
- package/lib/components/FluentProvider/useFluentProviderContextValues.js +24 -0
- package/lib/components/FluentProvider/useFluentProviderContextValues.js.map +1 -0
- package/lib/components/FluentProvider/useFluentProviderStyles.d.ts +4 -0
- package/lib/components/FluentProvider/useFluentProviderStyles.js +24 -0
- package/lib/components/FluentProvider/useFluentProviderStyles.js.map +1 -0
- package/lib/components/FluentProvider/useThemeStyleTag.d.ts +7 -0
- package/lib/components/FluentProvider/useThemeStyleTag.js +56 -0
- package/lib/components/FluentProvider/useThemeStyleTag.js.map +1 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -0
- package/lib/tsdoc-metadata.json +11 -0
- package/lib-commonjs/FluentProvider.d.ts +1 -0
- package/lib-commonjs/FluentProvider.js +10 -0
- package/lib-commonjs/FluentProvider.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.d.ts +3 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.js +25 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.types.d.ts +26 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.types.js +6 -0
- package/lib-commonjs/components/FluentProvider/FluentProvider.types.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/index.d.ts +6 -0
- package/lib-commonjs/components/FluentProvider/index.js +20 -0
- package/lib-commonjs/components/FluentProvider/index.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/renderFluentProvider.d.ts +5 -0
- package/lib-commonjs/components/FluentProvider/renderFluentProvider.js +40 -0
- package/lib-commonjs/components/FluentProvider/renderFluentProvider.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/useFluentProvider.d.ts +12 -0
- package/lib-commonjs/components/FluentProvider/useFluentProvider.js +88 -0
- package/lib-commonjs/components/FluentProvider/useFluentProvider.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.d.ts +2 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.js +35 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderContextValues.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.d.ts +4 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.js +35 -0
- package/lib-commonjs/components/FluentProvider/useFluentProviderStyles.js.map +1 -0
- package/lib-commonjs/components/FluentProvider/useThemeStyleTag.d.ts +7 -0
- package/lib-commonjs/components/FluentProvider/useThemeStyleTag.js +68 -0
- package/lib-commonjs/components/FluentProvider/useThemeStyleTag.js.map +1 -0
- package/lib-commonjs/index.d.ts +2 -0
- package/lib-commonjs/index.js +26 -0
- package/lib-commonjs/index.js.map +1 -0
- package/package.json +65 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
|
7
|
+
const tslib_1 = /*#__PURE__*/require("tslib");
|
8
|
+
|
9
|
+
tslib_1.__exportStar(require("./FluentProvider"), exports);
|
10
|
+
|
11
|
+
tslib_1.__exportStar(require("./FluentProvider.types"), exports);
|
12
|
+
|
13
|
+
tslib_1.__exportStar(require("./renderFluentProvider"), exports);
|
14
|
+
|
15
|
+
tslib_1.__exportStar(require("./useFluentProvider"), exports);
|
16
|
+
|
17
|
+
tslib_1.__exportStar(require("./useFluentProviderStyles"), exports);
|
18
|
+
|
19
|
+
tslib_1.__exportStar(require("./useFluentProviderContextValues"), exports);
|
20
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
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","sourcesContent":["export * from './FluentProvider';\nexport * from './FluentProvider.types';\nexport * from './renderFluentProvider';\nexport * from './useFluentProvider';\nexport * from './useFluentProviderStyles';\nexport * from './useFluentProviderContextValues';\n"],"sourceRoot":"../src/"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import type { FluentProviderContextValues, FluentProviderState } from './FluentProvider.types';
|
2
|
+
/**
|
3
|
+
* Render the final JSX of FluentProvider
|
4
|
+
*/
|
5
|
+
export declare const renderFluentProvider_unstable: (state: FluentProviderState, contextValues: FluentProviderContextValues) => JSX.Element;
|
@@ -0,0 +1,40 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.renderFluentProvider_unstable = void 0;
|
7
|
+
|
8
|
+
const React = /*#__PURE__*/require("react");
|
9
|
+
|
10
|
+
const react_1 = /*#__PURE__*/require("@griffel/react");
|
11
|
+
|
12
|
+
const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
|
13
|
+
|
14
|
+
const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
|
15
|
+
/**
|
16
|
+
* Render the final JSX of FluentProvider
|
17
|
+
*/
|
18
|
+
|
19
|
+
|
20
|
+
const renderFluentProvider_unstable = (state, contextValues) => {
|
21
|
+
const {
|
22
|
+
slots,
|
23
|
+
slotProps
|
24
|
+
} = react_utilities_1.getSlots(state);
|
25
|
+
return React.createElement(react_shared_contexts_1.ProviderContext.Provider, {
|
26
|
+
value: contextValues.provider
|
27
|
+
}, React.createElement(react_shared_contexts_1.ThemeContext.Provider, {
|
28
|
+
value: contextValues.theme
|
29
|
+
}, React.createElement(react_shared_contexts_1.ThemeClassNameContext.Provider, {
|
30
|
+
value: contextValues.themeClassName
|
31
|
+
}, React.createElement(react_shared_contexts_1.TooltipContext.Provider, {
|
32
|
+
value: contextValues.tooltip
|
33
|
+
}, React.createElement(react_1.TextDirectionProvider, {
|
34
|
+
dir: contextValues.textDirection
|
35
|
+
}, React.createElement(slots.root, { ...slotProps.root
|
36
|
+
}, state.root.children))))));
|
37
|
+
};
|
38
|
+
|
39
|
+
exports.renderFluentProvider_unstable = renderFluentProvider_unstable;
|
40
|
+
//# sourceMappingURL=renderFluentProvider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["components/FluentProvider/renderFluentProvider.tsx"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,gBAAA,CAAA;;AACA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AACA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;AAGA;;AAEG;;;AACI,MAAM,6BAA6B,GAAG,CAC3C,KAD2C,EAE3C,aAF2C,KAGzC;AACF,QAAM;AAAE,IAAA,KAAF;AAAS,IAAA;AAAT,MAAuB,iBAAA,CAAA,QAAA,CAA8B,KAA9B,CAA7B;AAEA,SACE,KAAA,CAAA,aAAA,CAAC,uBAAA,CAAA,eAAA,CAAgB,QAAjB,EAAyB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAzB,EACE,KAAA,CAAA,aAAA,CAAC,uBAAA,CAAA,YAAA,CAAa,QAAd,EAAsB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAtB,EACE,KAAA,CAAA,aAAA,CAAC,uBAAA,CAAA,qBAAA,CAAsB,QAAvB,EAA+B;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAA/B,EACE,KAAA,CAAA,aAAA,CAAC,uBAAA,CAAA,cAAA,CAAe,QAAhB,EAAwB;AAAC,IAAA,KAAK,EAAE,aAAa,CAAC;AAAtB,GAAxB,EACE,KAAA,CAAA,aAAA,CAAC,OAAA,CAAA,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;;AAAM,OAAA,CAAA,6BAAA,GAA6B,6BAA7B","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/"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import type { FluentProviderProps, FluentProviderState } from './FluentProvider.types';
|
3
|
+
/**
|
4
|
+
* Create the state required to render FluentProvider.
|
5
|
+
*
|
6
|
+
* The returned state can be modified with hooks such as useFluentProviderStyles_unstable,
|
7
|
+
* before being passed to renderFluentProvider_unstable.
|
8
|
+
*
|
9
|
+
* @param props - props from this instance of FluentProvider
|
10
|
+
* @param ref - reference to root HTMLElement of FluentProvider
|
11
|
+
*/
|
12
|
+
export declare const useFluentProvider_unstable: (props: FluentProviderProps, ref: React.Ref<HTMLElement>) => FluentProviderState;
|
@@ -0,0 +1,88 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useFluentProvider_unstable = void 0;
|
7
|
+
|
8
|
+
const react_tabster_1 = /*#__PURE__*/require("@fluentui/react-tabster");
|
9
|
+
|
10
|
+
const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
|
11
|
+
|
12
|
+
const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
|
13
|
+
|
14
|
+
const React = /*#__PURE__*/require("react");
|
15
|
+
|
16
|
+
const useThemeStyleTag_1 = /*#__PURE__*/require("./useThemeStyleTag");
|
17
|
+
/**
|
18
|
+
* Create the state required to render FluentProvider.
|
19
|
+
*
|
20
|
+
* The returned state can be modified with hooks such as useFluentProviderStyles_unstable,
|
21
|
+
* before being passed to renderFluentProvider_unstable.
|
22
|
+
*
|
23
|
+
* @param props - props from this instance of FluentProvider
|
24
|
+
* @param ref - reference to root HTMLElement of FluentProvider
|
25
|
+
*/
|
26
|
+
|
27
|
+
|
28
|
+
const useFluentProvider_unstable = (props, ref) => {
|
29
|
+
const parentContext = react_shared_contexts_1.useFluent();
|
30
|
+
const parentTheme = react_shared_contexts_1.useTheme();
|
31
|
+
/**
|
32
|
+
* TODO: add merge functions to "dir" merge,
|
33
|
+
* nesting providers with the same "dir" should not add additional attributes to DOM
|
34
|
+
* see https://github.com/microsoft/fluentui/blob/0dc74a19f3aa5a058224c20505016fbdb84db172/packages/fluentui/react-northstar/src/utils/mergeProviderContexts.ts#L89-L93
|
35
|
+
*/
|
36
|
+
|
37
|
+
const {
|
38
|
+
dir = parentContext.dir,
|
39
|
+
targetDocument = parentContext.targetDocument,
|
40
|
+
theme
|
41
|
+
} = props;
|
42
|
+
const mergedTheme = mergeThemes(parentTheme, theme);
|
43
|
+
React.useEffect(() => {
|
44
|
+
if (process.env.NODE_ENV !== 'production' && mergedTheme === undefined) {
|
45
|
+
// eslint-disable-next-line no-console
|
46
|
+
console.warn(`
|
47
|
+
FluentProvider: your "theme" is not defined !
|
48
|
+
=============================================
|
49
|
+
Make sure your root FluentProvider has set a theme or you're setting the theme in your child FluentProvider.
|
50
|
+
`);
|
51
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
52
|
+
|
53
|
+
}, []);
|
54
|
+
return {
|
55
|
+
dir,
|
56
|
+
targetDocument,
|
57
|
+
theme: mergedTheme,
|
58
|
+
themeClassName: useThemeStyleTag_1.useThemeStyleTag({
|
59
|
+
theme: mergedTheme,
|
60
|
+
targetDocument
|
61
|
+
}),
|
62
|
+
components: {
|
63
|
+
root: 'div'
|
64
|
+
},
|
65
|
+
root: react_utilities_1.getNativeElementProps('div', { ...props,
|
66
|
+
dir,
|
67
|
+
ref: react_utilities_1.useMergedRefs(ref, react_tabster_1.useKeyboardNavAttribute())
|
68
|
+
})
|
69
|
+
};
|
70
|
+
};
|
71
|
+
|
72
|
+
exports.useFluentProvider_unstable = useFluentProvider_unstable;
|
73
|
+
|
74
|
+
function mergeThemes(a, b) {
|
75
|
+
// Merge impacts perf: we should like to avoid it if it's possible
|
76
|
+
if (a && b) {
|
77
|
+
return { ...a,
|
78
|
+
...b
|
79
|
+
};
|
80
|
+
}
|
81
|
+
|
82
|
+
if (a) {
|
83
|
+
return a;
|
84
|
+
}
|
85
|
+
|
86
|
+
return b;
|
87
|
+
}
|
88
|
+
//# sourceMappingURL=useFluentProvider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["components/FluentProvider/useFluentProvider.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,eAAA,gBAAA,OAAA,CAAA,yBAAA,CAAA;;AAEA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AACA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,kBAAA,gBAAA,OAAA,CAAA,oBAAA,CAAA;AAGA;;;;;;;;AAQG;;;AACI,MAAM,0BAA0B,GAAG,CACxC,KADwC,EAExC,GAFwC,KAGjB;AACvB,QAAM,aAAa,GAAG,uBAAA,CAAA,SAAA,EAAtB;AACA,QAAM,WAAW,GAAG,uBAAA,CAAA,QAAA,EAApB;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,kBAAA,CAAA,gBAAA,CAAiB;AAAE,MAAA,KAAK,EAAE,WAAT;AAAsB,MAAA;AAAtB,KAAjB,CAJX;AAML,IAAA,UAAU,EAAE;AACV,MAAA,IAAI,EAAE;AADI,KANP;AAUL,IAAA,IAAI,EAAE,iBAAA,CAAA,qBAAA,CAAsB,KAAtB,EAA6B,EACjC,GAAG,KAD8B;AAEjC,MAAA,GAFiC;AAGjC,MAAA,GAAG,EAAE,iBAAA,CAAA,aAAA,CAAc,GAAd,EAAmB,eAAA,CAAA,uBAAA,EAAnB;AAH4B,KAA7B;AAVD,GAAP;AAgBD,CA3CM;;AAAM,OAAA,CAAA,0BAAA,GAA0B,0BAA1B;;AA6Cb,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 { useThemeStyleTag } from './useThemeStyleTag';\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: useThemeStyleTag({ 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/"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useFluentProviderContextValues_unstable = void 0;
|
7
|
+
|
8
|
+
const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
|
9
|
+
|
10
|
+
const React = /*#__PURE__*/require("react");
|
11
|
+
|
12
|
+
function useFluentProviderContextValues_unstable(state) {
|
13
|
+
const {
|
14
|
+
root,
|
15
|
+
dir,
|
16
|
+
targetDocument,
|
17
|
+
theme
|
18
|
+
} = state;
|
19
|
+
const provider = React.useMemo(() => ({
|
20
|
+
dir,
|
21
|
+
targetDocument
|
22
|
+
}), [dir, targetDocument]); // "Tooltip" component mutates an object in this context, instance should be stable
|
23
|
+
|
24
|
+
const tooltip = react_utilities_1.useConst({});
|
25
|
+
return {
|
26
|
+
provider,
|
27
|
+
textDirection: dir,
|
28
|
+
tooltip,
|
29
|
+
theme,
|
30
|
+
themeClassName: root.className
|
31
|
+
};
|
32
|
+
}
|
33
|
+
|
34
|
+
exports.useFluentProviderContextValues_unstable = useFluentProviderContextValues_unstable;
|
35
|
+
//# sourceMappingURL=useFluentProviderContextValues.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["components/FluentProvider/useFluentProviderContextValues.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AAGA,SAAgB,uCAAhB,CAAwD,KAAxD,EAAkF;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,iBAAA,CAAA,QAAA,CAAS,EAAT,CAAhB;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;;AAdD,OAAA,CAAA,uCAAA,GAAA,uCAAA","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/"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { FluentProviderState } from './FluentProvider.types';
|
2
|
+
export declare const fluentProviderClassName = "fui-FluentProvider";
|
3
|
+
/** Applies style classnames to slots */
|
4
|
+
export declare const useFluentProviderStyles_unstable: (state: FluentProviderState) => FluentProviderState;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useFluentProviderStyles_unstable = exports.fluentProviderClassName = void 0;
|
7
|
+
|
8
|
+
const react_1 = /*#__PURE__*/require("@griffel/react");
|
9
|
+
|
10
|
+
const react_theme_1 = /*#__PURE__*/require("@fluentui/react-theme");
|
11
|
+
|
12
|
+
exports.fluentProviderClassName = 'fui-FluentProvider';
|
13
|
+
|
14
|
+
const useStyles = /*#__PURE__*/react_1.__styles({
|
15
|
+
"root": {
|
16
|
+
"sj55zd": "f19n0e5",
|
17
|
+
"De3pzq": "fxugw4r",
|
18
|
+
"Bahqtrf": "fk6fouc",
|
19
|
+
"Be2twd7": "fkhj508",
|
20
|
+
"Bhrd7zp": "figsok6"
|
21
|
+
}
|
22
|
+
}, {
|
23
|
+
"d": [".f19n0e5{color:var(--colorNeutralForeground1);}", ".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}"]
|
24
|
+
});
|
25
|
+
/** Applies style classnames to slots */
|
26
|
+
|
27
|
+
|
28
|
+
const useFluentProviderStyles_unstable = state => {
|
29
|
+
const styles = useStyles();
|
30
|
+
state.root.className = react_1.mergeClasses(exports.fluentProviderClassName, state.themeClassName, styles.root, state.root.className);
|
31
|
+
return state;
|
32
|
+
};
|
33
|
+
|
34
|
+
exports.useFluentProviderStyles_unstable = useFluentProviderStyles_unstable;
|
35
|
+
//# sourceMappingURL=useFluentProviderStyles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["components/FluentProvider/useFluentProviderStyles.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,OAAA,gBAAA,OAAA,CAAA,gBAAA,CAAA;;AACA,MAAA,aAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;;AAGa,OAAA,CAAA,uBAAA,GAA0B,oBAA1B;;AAEb,MAAM,SAAS,gBAAG,OAAA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAlB;AAUA;;;AACO,MAAM,gCAAgC,GAAI,KAAD,IAA+B;AAC7E,QAAM,MAAM,GAAG,SAAS,EAAxB;AAEA,EAAA,KAAK,CAAC,IAAN,CAAW,SAAX,GAAuB,OAAA,CAAA,YAAA,CAAa,OAAA,CAAA,uBAAb,EAAsC,KAAK,CAAC,cAA5C,EAA4D,MAAM,CAAC,IAAnE,EAAyE,KAAK,CAAC,IAAN,CAAW,SAApF,CAAvB;AAEA,SAAO,KAAP;AACD,CANM;;AAAM,OAAA,CAAA,gCAAA,GAAgC,gCAAhC","sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nimport type { FluentProviderState } from './FluentProvider.types';\n\nexport const fluentProviderClassName = 'fui-FluentProvider';\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(fluentProviderClassName, state.themeClassName, styles.root, state.root.className);\n\n return state;\n};\n"],"sourceRoot":"../src/"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import type { FluentProviderState } from './FluentProvider.types';
|
2
|
+
/**
|
3
|
+
* Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class
|
4
|
+
*
|
5
|
+
* @returns CSS class to apply the rule
|
6
|
+
*/
|
7
|
+
export declare const useThemeStyleTag: (options: Pick<FluentProviderState, 'theme' | 'targetDocument'>) => string;
|
@@ -0,0 +1,68 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useThemeStyleTag = void 0;
|
7
|
+
|
8
|
+
const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
|
9
|
+
|
10
|
+
const React = /*#__PURE__*/require("react");
|
11
|
+
|
12
|
+
const useFluentProviderStyles_1 = /*#__PURE__*/require("./useFluentProviderStyles");
|
13
|
+
/**
|
14
|
+
* Writes a theme as css variables in a style tag on the provided targetDocument as a rule applied to a CSS class
|
15
|
+
*
|
16
|
+
* @returns CSS class to apply the rule
|
17
|
+
*/
|
18
|
+
|
19
|
+
|
20
|
+
const useThemeStyleTag = options => {
|
21
|
+
const {
|
22
|
+
targetDocument,
|
23
|
+
theme
|
24
|
+
} = options;
|
25
|
+
const styleTagId = react_utilities_1.useId(useFluentProviderStyles_1.fluentProviderClassName);
|
26
|
+
const styleTag = React.useMemo(() => {
|
27
|
+
if (!targetDocument) {
|
28
|
+
return null;
|
29
|
+
}
|
30
|
+
|
31
|
+
const tag = targetDocument.createElement('style');
|
32
|
+
tag.setAttribute('id', styleTagId);
|
33
|
+
targetDocument.head.appendChild(tag);
|
34
|
+
return tag;
|
35
|
+
}, [styleTagId, targetDocument]);
|
36
|
+
const cssRule = React.useMemo(() => {
|
37
|
+
const cssVarsAsString = theme ? Object.keys(theme).reduce((cssVarRule, cssVar) => {
|
38
|
+
cssVarRule += `--${cssVar}: ${theme[cssVar]}; `;
|
39
|
+
return cssVarRule;
|
40
|
+
}, '') : ''; // result: .fluent-provider1 { --css-var: '#fff' }
|
41
|
+
|
42
|
+
return `.${styleTagId} { ${cssVarsAsString} }`;
|
43
|
+
}, [theme, styleTagId]);
|
44
|
+
const previousCssRule = react_utilities_1.usePrevious(cssRule);
|
45
|
+
|
46
|
+
if (styleTag && previousCssRule !== cssRule) {
|
47
|
+
const sheet = styleTag.sheet;
|
48
|
+
|
49
|
+
if (sheet.cssRules.length > 0) {
|
50
|
+
sheet.deleteRule(0);
|
51
|
+
}
|
52
|
+
|
53
|
+
sheet.insertRule(cssRule, 0);
|
54
|
+
} // Removes the style tag from the targetDocument on unmount or change
|
55
|
+
|
56
|
+
|
57
|
+
React.useEffect(() => {
|
58
|
+
return () => {
|
59
|
+
if (styleTag) {
|
60
|
+
styleTag.remove();
|
61
|
+
}
|
62
|
+
};
|
63
|
+
}, [styleTag]);
|
64
|
+
return styleTagId;
|
65
|
+
};
|
66
|
+
|
67
|
+
exports.useThemeStyleTag = useThemeStyleTag;
|
68
|
+
//# sourceMappingURL=useThemeStyleTag.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["components/FluentProvider/useThemeStyleTag.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AACA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AAEA,MAAA,yBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;AAEA;;;;AAIG;;;AACI,MAAM,gBAAgB,GAAI,OAAD,IAAmE;AACjG,QAAM;AAAE,IAAA,cAAF;AAAkB,IAAA;AAAlB,MAA4B,OAAlC;AAEA,QAAM,UAAU,GAAG,iBAAA,CAAA,KAAA,CAAM,yBAAA,CAAA,uBAAN,CAAnB;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,iBAAA,CAAA,WAAA,CAAY,OAAZ,CAAxB;;AAEA,MAAI,QAAQ,IAAI,eAAe,KAAK,OAApC,EAA6C;AAC3C,UAAM,KAAK,GAAG,QAAQ,CAAC,KAAvB;;AAEA,QAAI,KAAK,CAAC,QAAN,CAAe,MAAf,GAAwB,CAA5B,EAA+B;AAC7B,MAAA,KAAK,CAAC,UAAN,CAAiB,CAAjB;AACD;;AAED,IAAA,KAAK,CAAC,UAAN,CAAiB,OAAjB,EAA0B,CAA1B;AACD,GApCgG,CAsCjG;;;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,CAhDM;;AAAM,OAAA,CAAA,gBAAA,GAAgB,gBAAhB","sourcesContent":["import { useId, usePrevious } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport type { FluentProviderState } from './FluentProvider.types';\nimport { fluentProviderClassName } 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 useThemeStyleTag = (options: Pick<FluentProviderState, 'theme' | 'targetDocument'>) => {\n const { targetDocument, theme } = options;\n\n const styleTagId = useId(fluentProviderClassName);\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 as CSSStyleSheet;\n\n if (sheet.cssRules.length > 0) {\n sheet.deleteRule(0);\n }\n\n sheet.insertRule(cssRule, 0);\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/"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.useTheme = exports.useFluent = void 0;
|
7
|
+
|
8
|
+
const tslib_1 = /*#__PURE__*/require("tslib");
|
9
|
+
|
10
|
+
tslib_1.__exportStar(require("./FluentProvider"), exports);
|
11
|
+
|
12
|
+
var react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
|
13
|
+
|
14
|
+
Object.defineProperty(exports, "useFluent", {
|
15
|
+
enumerable: true,
|
16
|
+
get: function () {
|
17
|
+
return react_shared_contexts_1.useFluent;
|
18
|
+
}
|
19
|
+
});
|
20
|
+
Object.defineProperty(exports, "useTheme", {
|
21
|
+
enumerable: true,
|
22
|
+
get: function () {
|
23
|
+
return react_shared_contexts_1.useTheme;
|
24
|
+
}
|
25
|
+
});
|
26
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,kBAAA,CAAA,EAAA,OAAA;;AACA,IAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;;AAAS,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,WAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,uBAAA,CAAA,SAAA;AAAS;AAAT,CAAA;AAAW,MAAA,CAAA,cAAA,CAAA,OAAA,EAAA,UAAA,EAAA;AAAA,EAAA,UAAA,EAAA,IAAA;AAAA,EAAA,GAAA,EAAA,YAAA;AAAA,WAAA,uBAAA,CAAA,QAAA;AAAQ;AAAR,CAAA","sourcesContent":["export * from './FluentProvider';\nexport { useFluent, useTheme } from '@fluentui/react-shared-contexts';\n"],"sourceRoot":"../src/"}
|
package/package.json
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
{
|
2
|
+
"name": "@fluentui/react-provider",
|
3
|
+
"version": "0.0.0-nightly-20220302-0405.1",
|
4
|
+
"description": "Fluent UI React provider component",
|
5
|
+
"main": "lib-commonjs/index.js",
|
6
|
+
"module": "lib/index.js",
|
7
|
+
"typings": "lib/index.d.ts",
|
8
|
+
"sideEffects": false,
|
9
|
+
"repository": {
|
10
|
+
"type": "git",
|
11
|
+
"url": "https://github.com/microsoft/fluentui"
|
12
|
+
},
|
13
|
+
"license": "MIT",
|
14
|
+
"scripts": {
|
15
|
+
"build": "just-scripts build",
|
16
|
+
"bundle-size": "bundle-size measure",
|
17
|
+
"test": "jest --passWithNoTests",
|
18
|
+
"clean": "just-scripts clean",
|
19
|
+
"code-style": "just-scripts code-style",
|
20
|
+
"just": "just-scripts",
|
21
|
+
"lint": "just-scripts lint",
|
22
|
+
"docs": "api-extractor run --config=config/api-extractor.local.json --local",
|
23
|
+
"build:local": "tsc -p ./tsconfig.lib.json --module esnext --emitDeclarationOnly && node ../../scripts/typescript/normalize-import --output ./dist/packages/react-provider/src && yarn docs",
|
24
|
+
"storybook": "node ../../scripts/storybook/runner",
|
25
|
+
"start": "yarn storybook",
|
26
|
+
"type-check": "tsc -b tsconfig.json"
|
27
|
+
},
|
28
|
+
"devDependencies": {
|
29
|
+
"@fluentui/eslint-plugin": "*",
|
30
|
+
"@fluentui/react-conformance": "*",
|
31
|
+
"@fluentui/react-conformance-griffel": "0.0.0-nightly-20220302-0405.1",
|
32
|
+
"@fluentui/scripts": "^1.0.0",
|
33
|
+
"@types/enzyme": "3.10.3",
|
34
|
+
"@types/enzyme-adapter-react-16": "1.0.3",
|
35
|
+
"@types/react": "16.9.42",
|
36
|
+
"@types/react-dom": "16.9.10",
|
37
|
+
"@types/react-test-renderer": "^16.0.0",
|
38
|
+
"enzyme": "~3.10.0",
|
39
|
+
"enzyme-adapter-react-16": "^1.15.0",
|
40
|
+
"react": "16.8.6",
|
41
|
+
"react-dom": "16.8.6",
|
42
|
+
"react-test-renderer": "^16.3.0"
|
43
|
+
},
|
44
|
+
"dependencies": {
|
45
|
+
"@griffel/react": "1.0.0",
|
46
|
+
"@fluentui/react-shared-contexts": "0.0.0-nightly-20220302-0405.1",
|
47
|
+
"@fluentui/react-tabster": "0.0.0-nightly-20220302-0405.1",
|
48
|
+
"@fluentui/react-theme": "0.0.0-nightly-20220302-0405.1",
|
49
|
+
"@fluentui/react-utilities": "0.0.0-nightly-20220302-0405.1",
|
50
|
+
"tslib": "^2.1.0"
|
51
|
+
},
|
52
|
+
"peerDependencies": {
|
53
|
+
"@types/react": ">=16.8.0 <18.0.0",
|
54
|
+
"@types/react-dom": ">=16.8.0 <18.0.0",
|
55
|
+
"react": ">=16.8.0 <18.0.0",
|
56
|
+
"react-dom": ">=16.8.0 <18.0.0"
|
57
|
+
},
|
58
|
+
"beachball": {
|
59
|
+
"disallowedChangeTypes": [
|
60
|
+
"major",
|
61
|
+
"minor",
|
62
|
+
"patch"
|
63
|
+
]
|
64
|
+
}
|
65
|
+
}
|