@grafana/ui
Version:
Grafana Components Library
105 lines (97 loc) • 3.78 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var hoistNonReactStatics = require('hoist-non-react-statics');
var memoize = require('micro-memoize');
var React = require('react');
var data = require('@grafana/data');
var stylesFactory = require('./stylesFactory.cjs');
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
function _interopNamespaceCompat(e) {
if (e && typeof e === 'object' && 'default' in e) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n.default = e;
return Object.freeze(n);
}
var hoistNonReactStatics__default = /*#__PURE__*/_interopDefaultCompat(hoistNonReactStatics);
var memoize__default = /*#__PURE__*/_interopDefaultCompat(memoize);
var React__namespace = /*#__PURE__*/_interopNamespaceCompat(React);
;
let ThemeContextMock = null;
const memoizedStyleCreators = /* @__PURE__ */ new WeakMap();
const withTheme = (Component) => {
const WithTheme = (props) => {
const ContextComponent = ThemeContextMock || data.ThemeContext;
return (
// @ts-ignore
/* @__PURE__ */ jsxRuntime.jsx(ContextComponent.Consumer, { children: (theme) => /* @__PURE__ */ jsxRuntime.jsx(Component, { ...props, theme: theme.v1 }) })
);
};
WithTheme.displayName = `WithTheme(${Component.displayName})`;
hoistNonReactStatics__default.default(WithTheme, Component);
return WithTheme;
};
const withTheme2 = (Component) => {
const WithTheme = (props) => {
const ContextComponent = ThemeContextMock || data.ThemeContext;
return (
// @ts-ignore
/* @__PURE__ */ jsxRuntime.jsx(ContextComponent.Consumer, { children: (theme) => /* @__PURE__ */ jsxRuntime.jsx(Component, { ...props, theme }) })
);
};
WithTheme.displayName = `WithTheme(${Component.displayName})`;
hoistNonReactStatics__default.default(WithTheme, Component);
return WithTheme;
};
function useTheme() {
return React.useContext(ThemeContextMock || data.ThemeContext).v1;
}
function useTheme2() {
return React.useContext(ThemeContextMock || data.ThemeContext);
}
function useStyles(getStyles) {
const theme = useTheme();
let memoizedStyleCreator = memoizedStyleCreators.get(getStyles);
if (!memoizedStyleCreator) {
memoizedStyleCreator = stylesFactory.stylesFactory(getStyles);
memoizedStyleCreators.set(getStyles, memoizedStyleCreator);
}
return memoizedStyleCreator(theme);
}
function useStyles2(getStyles, ...additionalArguments) {
const theme = useTheme2();
if (!theme.colors.background.elevated) {
theme.colors.background.elevated = theme.colors.mode === "light" ? theme.colors.background.primary : theme.colors.background.secondary;
}
let memoizedStyleCreator = memoizedStyleCreators.get(getStyles);
if (!memoizedStyleCreator) {
memoizedStyleCreator = memoize__default.default(getStyles, { maxSize: 10 });
memoizedStyleCreators.set(getStyles, memoizedStyleCreator);
}
return memoizedStyleCreator(theme, ...additionalArguments);
}
const mockThemeContext = (theme) => {
ThemeContextMock = React__namespace.createContext(theme);
return () => {
ThemeContextMock = null;
};
};
exports.mockThemeContext = mockThemeContext;
exports.useStyles = useStyles;
exports.useStyles2 = useStyles2;
exports.useTheme = useTheme;
exports.useTheme2 = useTheme2;
exports.withTheme = withTheme;
exports.withTheme2 = withTheme2;
//# sourceMappingURL=ThemeContext.cjs.map