Files
flights_web_raw/apps/angular/node_modules/emotion-theming/dist/emotion-theming.browser.esm.js
T

72 lines
3.1 KiB
JavaScript

import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
import React, { createElement, forwardRef } from 'react';
import { ThemeContext } from '@emotion/core';
import weakMemoize from '@emotion/weak-memoize';
import _extends from '@babel/runtime/helpers/esm/extends';
import hoistNonReactStatics from 'hoist-non-react-statics';
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
var getTheme = function getTheme(outerTheme, theme) {
if (typeof theme === 'function') {
var mergedTheme = theme(outerTheme);
if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {
throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');
}
return mergedTheme;
}
if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {
throw new Error('[ThemeProvider] Please make your theme prop a plain object');
}
return _objectSpread({}, outerTheme, {}, theme);
};
var createCacheWithTheme = weakMemoize(function (outerTheme) {
return weakMemoize(function (theme) {
return getTheme(outerTheme, theme);
});
});
var ThemeProvider = function ThemeProvider(props) {
return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {
if (props.theme !== theme) {
theme = createCacheWithTheme(theme)(props.theme);
}
return /*#__PURE__*/createElement(ThemeContext.Provider, {
value: theme
}, props.children);
});
};
// should we change this to be forwardRef/withCSSContext style so it doesn't merge with props?
function withTheme(Component) {
var componentName = Component.displayName || Component.name || 'Component';
var render = function render(props, ref) {
return /*#__PURE__*/createElement(ThemeContext.Consumer, null, function (theme) {
return /*#__PURE__*/createElement(Component, _extends({
theme: theme,
ref: ref
}, props));
});
}; // $FlowFixMe
var WithTheme = /*#__PURE__*/forwardRef(render);
WithTheme.displayName = "WithTheme(" + componentName + ")";
return hoistNonReactStatics(WithTheme, Component);
}
function useTheme() {
return React.useContext(ThemeContext);
}
export { ThemeProvider, useTheme, withTheme };