first commit

This commit is contained in:
Stefan Hacker
2026-04-03 09:38:48 +02:00
commit 37ad745546
47450 changed files with 3120798 additions and 0 deletions
@@ -0,0 +1,21 @@
import type { ExtendedCSSStyleSheet } from '@fluentui/merge-styles';
import * as React from 'react';
import type { AdoptedStylesheetExHook, AdoptedStylesheetHook } from '../hooks/useAdoptedStylesheet';
import type { ShadowConfigHook } from '../hooks/useShadowConfig';
import type { HasMergeStylesShadowRootContextHook, MergeStylesShadowRootContextHook } from '../hooks/useMergeStylesShadowRoot';
import type { MergeStylesRootStylesheetsHook } from '../hooks/useMergeStylesRootStylesheets';
import type { UseStyledHook } from '../hooks/useStyled';
export declare const getNewContext: () => MergeStylesDefaultContextValue;
export type UseWindowHook = () => Window | undefined;
export type MergeStylesDefaultContextValue = {
stylesheets: Map<string, ExtendedCSSStyleSheet>;
useAdoptedStylesheetEx: AdoptedStylesheetExHook;
useAdoptedStylesheet: AdoptedStylesheetHook;
useShadowConfig: ShadowConfigHook;
useMergeStylesShadowRootContext: MergeStylesShadowRootContextHook;
useHasMergeStylesShadowRootContext: HasMergeStylesShadowRootContextHook;
useMergeStylesRootStylesheets: MergeStylesRootStylesheetsHook;
useWindow: UseWindowHook;
useStyled: UseStyledHook;
};
export declare const MergeStylesDefaultContext: React.Context<MergeStylesDefaultContextValue>;
@@ -0,0 +1,21 @@
import { DEFAULT_SHADOW_CONFIG } from '@fluentui/merge-styles';
import * as React from 'react';
var noop = function () { return false; };
var noopShadow = function () { return DEFAULT_SHADOW_CONFIG; };
var noopRootStylesheets = function () { return new Map(); };
var noopUndefined = function () { return undefined; };
export var getNewContext = function () {
return {
stylesheets: new Map(),
useAdoptedStylesheetEx: noop,
useAdoptedStylesheet: noop,
useShadowConfig: noopShadow,
useMergeStylesShadowRootContext: noopUndefined,
useHasMergeStylesShadowRootContext: noop,
useMergeStylesRootStylesheets: noopRootStylesheets,
useWindow: noopUndefined,
useStyled: noopUndefined,
};
};
export var MergeStylesDefaultContext = React.createContext(getNewContext());
//# sourceMappingURL=MergeStylesDefaultContext.js.map
@@ -0,0 +1 @@
{"version":3,"file":"MergeStylesDefaultContext.js","sourceRoot":"../src/","sources":["shadowDom/contexts/MergeStylesDefaultContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,IAAM,IAAI,GAAG,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC;AACzB,IAAM,UAAU,GAAG,cAAM,OAAA,qBAAqB,EAArB,CAAqB,CAAC;AAC/C,IAAM,mBAAmB,GAAG,cAAM,OAAA,IAAI,GAAG,EAAE,EAAT,CAAS,CAAC;AAC5C,IAAM,aAAa,GAAG,cAAM,OAAA,SAAS,EAAT,CAAS,CAAC;AAEtC,MAAM,CAAC,IAAM,aAAa,GAAG;IAC3B,OAAO;QACL,WAAW,EAAE,IAAI,GAAG,EAAE;QACtB,sBAAsB,EAAE,IAAI;QAC5B,oBAAoB,EAAE,IAAI;QAC1B,eAAe,EAAE,UAAU;QAC3B,+BAA+B,EAAE,aAAa;QAC9C,kCAAkC,EAAE,IAAI;QACxC,6BAA6B,EAAE,mBAAmB;QAClD,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,aAAa;KACzB,CAAC;AACJ,CAAC,CAAC;AAgBF,MAAM,CAAC,IAAM,yBAAyB,GAAG,KAAK,CAAC,aAAa,CAAiC,aAAa,EAAE,CAAC,CAAC","sourcesContent":["import { DEFAULT_SHADOW_CONFIG } from '@fluentui/merge-styles';\nimport type { ExtendedCSSStyleSheet } from '@fluentui/merge-styles';\nimport * as React from 'react';\n\nimport type { AdoptedStylesheetExHook, AdoptedStylesheetHook } from '../hooks/useAdoptedStylesheet';\nimport type { ShadowConfigHook } from '../hooks/useShadowConfig';\nimport type {\n HasMergeStylesShadowRootContextHook,\n MergeStylesShadowRootContextHook,\n} from '../hooks/useMergeStylesShadowRoot';\nimport type { MergeStylesRootStylesheetsHook } from '../hooks/useMergeStylesRootStylesheets';\nimport type { UseStyledHook } from '../hooks/useStyled';\n\nconst noop = () => false;\nconst noopShadow = () => DEFAULT_SHADOW_CONFIG;\nconst noopRootStylesheets = () => new Map();\nconst noopUndefined = () => undefined;\n\nexport const getNewContext = (): MergeStylesDefaultContextValue => {\n return {\n stylesheets: new Map(),\n useAdoptedStylesheetEx: noop,\n useAdoptedStylesheet: noop,\n useShadowConfig: noopShadow,\n useMergeStylesShadowRootContext: noopUndefined,\n useHasMergeStylesShadowRootContext: noop,\n useMergeStylesRootStylesheets: noopRootStylesheets,\n useWindow: noopUndefined,\n useStyled: noopUndefined,\n };\n};\n\nexport type UseWindowHook = () => Window | undefined;\n\nexport type MergeStylesDefaultContextValue = {\n stylesheets: Map<string, ExtendedCSSStyleSheet>;\n useAdoptedStylesheetEx: AdoptedStylesheetExHook;\n useAdoptedStylesheet: AdoptedStylesheetHook;\n useShadowConfig: ShadowConfigHook;\n useMergeStylesShadowRootContext: MergeStylesShadowRootContextHook;\n useHasMergeStylesShadowRootContext: HasMergeStylesShadowRootContextHook;\n useMergeStylesRootStylesheets: MergeStylesRootStylesheetsHook;\n useWindow: UseWindowHook;\n useStyled: UseStyledHook;\n};\n\nexport const MergeStylesDefaultContext = React.createContext<MergeStylesDefaultContextValue>(getNewContext());\n"]}
@@ -0,0 +1,51 @@
import * as React from 'react';
import type { ExtendedCSSStyleSheet } from '@fluentui/merge-styles';
import type { AdoptedStylesheetExHook, AdoptedStylesheetHook } from '../hooks/useAdoptedStylesheet';
import type { ShadowConfigHook } from '../hooks/useShadowConfig';
import type { HasMergeStylesShadowRootContextHook, MergeStylesShadowRootContextHook } from '../hooks/useMergeStylesShadowRoot';
import type { MergeStylesRootStylesheetsHook } from '../hooks/useMergeStylesRootStylesheets';
import type { UseStyledHook } from '../hooks/useStyled';
import type { UseWindowHook } from './MergeStylesDefaultContext';
declare global {
interface DocumentOrShadowRoot {
/** [MDN Reference](https://developer.mozilla.org/docs/Web/API/Document/adoptedStyleSheets) */
adoptedStyleSheets: CSSStyleSheet[];
}
}
export type MergeStylesRootContextValue = {
stylesheets: Map<string, ExtendedCSSStyleSheet>;
useAdoptedStylesheetEx: AdoptedStylesheetExHook;
useAdoptedStylesheet: AdoptedStylesheetHook;
useShadowConfig: ShadowConfigHook;
useMergeStylesShadowRootContext: MergeStylesShadowRootContextHook;
useHasMergeStylesShadowRootContext: HasMergeStylesShadowRootContextHook;
useMergeStylesRootStylesheets: MergeStylesRootStylesheetsHook;
useWindow: UseWindowHook;
useStyled: UseStyledHook;
};
export declare const MergeStylesRootContext: React.Context<MergeStylesRootContextValue>;
export type MergeStylesRootProviderProps = {
children?: React.ReactNode;
/**
* Map of stylesheets available in the context.
*/
stylesheets?: Map<string, ExtendedCSSStyleSheet>;
/**
* Optional `window` object to use for reading adopted stylesheets.
* Useful for multi-window scenarios.
*/
window?: Window;
useAdoptedStylesheetEx?: AdoptedStylesheetExHook;
useAdoptedStylesheet?: AdoptedStylesheetHook;
useShadowConfig?: ShadowConfigHook;
useMergeStylesShadowRootContext?: MergeStylesShadowRootContextHook;
useHasMergeStylesShadowRootContext?: HasMergeStylesShadowRootContextHook;
useMergeStylesRootStylesheets?: MergeStylesRootStylesheetsHook;
useWindow?: UseWindowHook;
useStyled?: UseStyledHook;
};
/**
* Root context provider for mergeStyles shadow DOM.
* Typically this is placed at the render root of your React application.
*/
export declare const MergeStylesRootProvider: React.FC<MergeStylesRootProviderProps>;
@@ -0,0 +1,88 @@
import { __assign, __rest } from "tslib";
import * as React from 'react';
import { GLOBAL_STYLESHEET_KEY, ShadowDomStylesheet, makeShadowConfig } from '@fluentui/merge-styles';
import { getWindow } from '../../dom';
import { MergeStylesDefaultContext, getNewContext } from './MergeStylesDefaultContext';
import { useAdoptedStylesheet as useAdoptedStylesheetDefault, useAdoptedStylesheetEx as useAdoptedStylesheetExDefault, } from '../hooks/useAdoptedStylesheet';
import { useShadowConfig as useShadowConfigDefault } from '../hooks/useShadowConfig';
import { useHasMergeStylesShadowRootContext as useHasMergeStylesShadowRootContextDefault, useMergeStylesShadowRootContext as useMergeStylesShadowRootContextDefault, } from '../hooks/useMergeStylesShadowRoot';
import { useMergeStylesRootStylesheets as useMergeStylesRootStylesheetsDefault } from '../hooks/useMergeStylesRootStylesheets';
import { useStyled as useStyledDefault } from '../hooks/useStyled';
import { useWindow as useWindowDefault } from '@fluentui/react-window-provider';
export var MergeStylesRootContext = React.createContext(getNewContext());
/**
* Root context provider for mergeStyles shadow DOM.
* Typically this is placed at the render root of your React application.
*/
export var MergeStylesRootProvider = function (_a) {
var userSheets = _a.stylesheets, userWindow = _a.window, useAdoptedStylesheet = _a.useAdoptedStylesheet, useAdoptedStylesheetEx = _a.useAdoptedStylesheetEx, useShadowConfig = _a.useShadowConfig, useMergeStylesShadowRootContext = _a.useMergeStylesShadowRootContext, useHasMergeStylesShadowRootContext = _a.useHasMergeStylesShadowRootContext, useMergeStylesRootStylesheets = _a.useMergeStylesRootStylesheets, useWindow = _a.useWindow, useStyled = _a.useStyled, props = __rest(_a, ["stylesheets", "window", "useAdoptedStylesheet", "useAdoptedStylesheetEx", "useShadowConfig", "useMergeStylesShadowRootContext", "useHasMergeStylesShadowRootContext", "useMergeStylesRootStylesheets", "useWindow", "useStyled"]);
var win = userWindow !== null && userWindow !== void 0 ? userWindow : getWindow();
var _b = React.useState(function () { return userSheets || new Map(); }), stylesheets = _b[0], setStylesheets = _b[1];
var sheetHandler = React.useCallback(function (_a) {
var key = _a.key, sheet = _a.sheet;
setStylesheets(function (prev) {
var next = new Map(prev);
next.set(key, sheet);
return next;
});
}, []);
// Update stylesheets based on user style sheet changes
React.useEffect(function () {
setStylesheets(userSheets || new Map());
}, [userSheets]);
// Wire up listener for adopted stylesheets
React.useEffect(function () {
if (!win) {
return;
}
var sheet = ShadowDomStylesheet.getInstance(makeShadowConfig(GLOBAL_STYLESHEET_KEY, false, win));
var off = sheet.onAddSheet(sheetHandler);
return function () {
off();
};
}, [win, sheetHandler]);
// Read stylesheets from window on mount
React.useEffect(function () {
if (!win) {
return;
}
var changed = false;
var next = new Map(stylesheets);
var sheet = ShadowDomStylesheet.getInstance(makeShadowConfig(GLOBAL_STYLESHEET_KEY, false, win));
var adoptedSheets = sheet.getAdoptedSheets();
adoptedSheets.forEach(function (adoptedSheet, key) {
next.set(key, adoptedSheet);
changed = true;
});
if (changed) {
setStylesheets(next);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
var defaultValues = React.useMemo(function () {
return {
stylesheets: stylesheets,
useAdoptedStylesheet: useAdoptedStylesheet || useAdoptedStylesheetDefault,
useAdoptedStylesheetEx: useAdoptedStylesheetEx || useAdoptedStylesheetExDefault,
useShadowConfig: useShadowConfig || useShadowConfigDefault,
useMergeStylesShadowRootContext: useMergeStylesShadowRootContext || useMergeStylesShadowRootContextDefault,
useHasMergeStylesShadowRootContext: useHasMergeStylesShadowRootContext || useHasMergeStylesShadowRootContextDefault,
useMergeStylesRootStylesheets: useMergeStylesRootStylesheets || useMergeStylesRootStylesheetsDefault,
useWindow: useWindow || useWindowDefault,
useStyled: useStyled || useStyledDefault,
};
}, [
stylesheets,
useAdoptedStylesheet,
useAdoptedStylesheetEx,
useShadowConfig,
useMergeStylesShadowRootContext,
useHasMergeStylesShadowRootContext,
useMergeStylesRootStylesheets,
useWindow,
useStyled,
]);
return (React.createElement(MergeStylesDefaultContext.Provider, { value: defaultValues },
React.createElement(MergeStylesRootContext.Provider, __assign({ value: defaultValues }, props))));
};
//# sourceMappingURL=MergeStylesRootContext.js.map
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
import type * as React from 'react';
export type MergeStylesContextConsumerProps = {
stylesheetKey: string;
children: (inShadow: boolean) => React.ReactElement<any, any>;
};
export declare const MergeStylesShadowRootConsumer: React.FC<MergeStylesContextConsumerProps>;
@@ -0,0 +1,14 @@
import { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';
import { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';
import { useMergeStylesShadowRootContext } from '../hooks/useMergeStylesShadowRoot';
export var MergeStylesShadowRootConsumer = function (_a) {
var stylesheetKey = _a.stylesheetKey, children = _a.children;
var _b = useMergeStylesHooks(), useAdoptedStylesheetEx = _b.useAdoptedStylesheetEx, useMergeStylesRootStylesheets = _b.useMergeStylesRootStylesheets, useWindow = _b.useWindow;
var shadowCtx = useMergeStylesShadowRootContext();
var rootMergeStyles = useMergeStylesRootStylesheets();
var win = useWindow();
useAdoptedStylesheetEx(GLOBAL_STYLESHEET_KEY, shadowCtx, rootMergeStyles, win);
useAdoptedStylesheetEx(stylesheetKey, shadowCtx, rootMergeStyles, win);
return children(!!shadowCtx);
};
//# sourceMappingURL=MergeStylesShadowRootConsumer.js.map
@@ -0,0 +1 @@
{"version":3,"file":"MergeStylesShadowRootConsumer.js","sourceRoot":"../src/","sources":["shadowDom/contexts/MergeStylesShadowRootConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAQpF,MAAM,CAAC,IAAM,6BAA6B,GAA8C,UAAC,EAGxF;QAFC,aAAa,mBAAA,EACb,QAAQ,cAAA;IAEF,IAAA,KAAuE,mBAAmB,EAAE,EAA1F,sBAAsB,4BAAA,EAAE,6BAA6B,mCAAA,EAAE,SAAS,eAA0B,CAAC;IACnG,IAAM,SAAS,GAAG,+BAA+B,EAAE,CAAC;IACpD,IAAM,eAAe,GAAG,6BAA6B,EAAE,CAAC;IACxD,IAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,sBAAsB,CAAC,qBAAqB,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAC/E,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAEvE,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC,CAAC","sourcesContent":["import type * as React from 'react';\nimport { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';\nimport { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';\nimport { useMergeStylesShadowRootContext } from '../hooks/useMergeStylesShadowRoot';\n\nexport type MergeStylesContextConsumerProps = {\n stylesheetKey: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: (inShadow: boolean) => React.ReactElement<any, any>;\n};\n\nexport const MergeStylesShadowRootConsumer: React.FC<MergeStylesContextConsumerProps> = ({\n stylesheetKey,\n children,\n}) => {\n const { useAdoptedStylesheetEx, useMergeStylesRootStylesheets, useWindow } = useMergeStylesHooks();\n const shadowCtx = useMergeStylesShadowRootContext();\n const rootMergeStyles = useMergeStylesRootStylesheets();\n const win = useWindow();\n\n useAdoptedStylesheetEx(GLOBAL_STYLESHEET_KEY, shadowCtx, rootMergeStyles, win);\n useAdoptedStylesheetEx(stylesheetKey, shadowCtx, rootMergeStyles, win);\n\n return children(!!shadowCtx);\n};\n"]}
@@ -0,0 +1,23 @@
import * as React from 'react';
export type MergeStylesShadowRootContextValue = {
/**
* Map of stylesheets available in the context.
*/
stylesheets: Map<string, CSSStyleSheet>;
/**
* Shadow root for this context.
*/
shadowRoot?: ShadowRoot | null;
};
export declare const MergeStylesShadowRootContext: React.Context<MergeStylesShadowRootContextValue | undefined>;
export type MergeStylesShadowRootProviderProps = {
children?: React.ReactNode;
/**
* Shadow root for this context.
*/
shadowRoot?: ShadowRoot | null;
};
/**
* Context for a shadow root.
*/
export declare const MergeStylesShadowRootProvider: React.FC<MergeStylesShadowRootProviderProps>;
@@ -0,0 +1,26 @@
import { __assign, __rest } from "tslib";
import * as React from 'react';
import { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';
import { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';
export var MergeStylesShadowRootContext = React.createContext(undefined);
/**
* Context for a shadow root.
*/
export var MergeStylesShadowRootProvider = function (_a) {
var shadowRoot = _a.shadowRoot, props = __rest(_a, ["shadowRoot"]);
var value = React.useMemo(function () {
return {
stylesheets: new Map(),
shadowRoot: shadowRoot,
};
}, [shadowRoot]);
return (React.createElement(MergeStylesShadowRootContext.Provider, __assign({ value: value }, props),
React.createElement(GlobalStyles, null),
props.children));
};
var GlobalStyles = function (props) {
var useAdoptedStylesheet = useMergeStylesHooks().useAdoptedStylesheet;
useAdoptedStylesheet(GLOBAL_STYLESHEET_KEY);
return null;
};
//# sourceMappingURL=MergeStylesShadowRootContext.js.map
@@ -0,0 +1 @@
{"version":3,"file":"MergeStylesShadowRootContext.js","sourceRoot":"../src/","sources":["shadowDom/contexts/MergeStylesShadowRootContext.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAcnE,MAAM,CAAC,IAAM,4BAA4B,GAAG,KAAK,CAAC,aAAa,CAC7D,SAAS,CACV,CAAC;AAUF;;GAEG;AACH,MAAM,CAAC,IAAM,6BAA6B,GAAiD,UAAC,EAG3F;IAFC,IAAA,UAAU,gBAAA,EACP,KAAK,cAFkF,cAG3F,CADS;IAER,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,OAAO;YACL,WAAW,EAAE,IAAI,GAAG,EAAE;YACtB,UAAU,YAAA;SACX,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,oBAAC,4BAA4B,CAAC,QAAQ,aAAC,KAAK,EAAE,KAAK,IAAM,KAAK;QAC5D,oBAAC,YAAY,OAAG;QACf,KAAK,CAAC,QAAQ,CACuB,CACzC,CAAC;AACJ,CAAC,CAAC;AAEF,IAAM,YAAY,GAAa,UAAA,KAAK;IAC1B,IAAA,oBAAoB,GAAK,mBAAmB,EAAE,qBAA1B,CAA2B;IACvD,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["import * as React from 'react';\nimport { GLOBAL_STYLESHEET_KEY } from '@fluentui/merge-styles';\nimport { useMergeStylesHooks } from '../hooks/useMergeStylesHooks';\n\nexport type MergeStylesShadowRootContextValue = {\n /**\n * Map of stylesheets available in the context.\n */\n stylesheets: Map<string, CSSStyleSheet>;\n\n /**\n * Shadow root for this context.\n */\n shadowRoot?: ShadowRoot | null;\n};\n\nexport const MergeStylesShadowRootContext = React.createContext<MergeStylesShadowRootContextValue | undefined>(\n undefined,\n);\n\nexport type MergeStylesShadowRootProviderProps = {\n children?: React.ReactNode;\n /**\n * Shadow root for this context.\n */\n shadowRoot?: ShadowRoot | null;\n};\n\n/**\n * Context for a shadow root.\n */\nexport const MergeStylesShadowRootProvider: React.FC<MergeStylesShadowRootProviderProps> = ({\n shadowRoot,\n ...props\n}) => {\n const value = React.useMemo(() => {\n return {\n stylesheets: new Map(),\n shadowRoot,\n };\n }, [shadowRoot]);\n\n return (\n <MergeStylesShadowRootContext.Provider value={value} {...props}>\n <GlobalStyles />\n {props.children}\n </MergeStylesShadowRootContext.Provider>\n );\n};\n\nconst GlobalStyles: React.FC = props => {\n const { useAdoptedStylesheet } = useMergeStylesHooks();\n useAdoptedStylesheet(GLOBAL_STYLESHEET_KEY);\n return null;\n};\n"]}