{"version":3,"file":"OdysseyThemeProvider.cjs","names":["_styled","_interopRequireDefault","require","_styles","_utils","Tokens","_interopRequireWildcard","_react","_OdysseyDesignTokensContext","_OdysseyThemeProviderPropsContext","_useContrastMode","_useThemeCache","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","StyledContrastContainerStyles","styled","height","OdysseyThemeProvider","children","contrastMode","contrastModeProp","designTokensOverride","designTokensOverrideProp","hasWrapperElement","shadowDomElement","shadowRootElement","shadowRootElementProp","themeOverride","themeOverrideProp","odysseyThemeProviderPropsContext","useOdysseyThemeProviderPropsContext","contrastContainerRef","useContrastMode","parentOdysseyTokens","useOdysseyDesignTokens","odysseyTokens","useMemo","getOrCreateTheme","themeCache","useThemeCache","odysseyTheme","customOdysseyTheme","createTheme","deepmerge","contrastModeProviderValue","providerComponents","jsx","ThemeCacheContext","Provider","value","ContrastModeContext","ThemeProvider","theme","OdysseyThemeProviderPropsProvider","OdysseyDesignTokensContext","ref","MemoizedOdysseyThemeProvider","exports","memo","displayName"],"sources":["../../src/OdysseyThemeProvider.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2022-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport styled from \"@emotion/styled\";\nimport {\n  createTheme,\n  ThemeProvider as MuiThemeProvider,\n} from \"@mui/material/styles\";\nimport { deepmerge } from \"@mui/utils\";\nimport * as Tokens from \"@okta/odyssey-design-tokens\";\nimport { memo, ReactNode, useMemo } from \"react\";\n\nimport {\n  OdysseyDesignTokensContext,\n  useOdysseyDesignTokens,\n} from \"./OdysseyDesignTokensContext.js\";\nimport {\n  type OdysseyThemeProviderContextProps,\n  OdysseyThemeProviderPropsProvider,\n  useOdysseyThemeProviderPropsContext,\n} from \"./OdysseyThemeProviderPropsContext.js\";\nimport {\n  ContrastMode,\n  ContrastModeContext,\n  useContrastMode,\n} from \"./useContrastMode.js\";\nimport { ThemeCacheContext, useThemeCache } from \"./useThemeCache.js\";\n\nconst StyledContrastContainerStyles = styled(\"div\")({\n  height: \"inherit\",\n});\n\nexport type OdysseyThemeProviderProps = OdysseyThemeProviderContextProps & {\n  /** The content to render inside the Odyssey theme context. */\n  children: ReactNode;\n  /**\n   * Overrides the contrast mode for child components, enabling high-contrast or low-contrast rendering within this subtree.\n   */\n  contrastMode?: ContrastMode;\n  /**\n   * If `true`, wraps children in a div used for contrast changes and height calculations.\n   * Set to `false` when no background color change is needed and full-height rendering is not required.\n   * @default true\n   */\n  hasWrapperElement?: boolean;\n  /** @deprecated Use shadowRootElement instead */\n  shadowDomElement?: HTMLDivElement | HTMLElement;\n};\n\n/**\n * This function doesn't include the Emotion Cache or Translations. You should probably be using `OdysseyProvider`.\n *\n * Some teams have a need to wrap separately (SIW), but most teams will never need to use this explicitly.\n */\nconst OdysseyThemeProvider = ({\n  children,\n  contrastMode: contrastModeProp,\n  designTokensOverride: designTokensOverrideProp,\n  hasWrapperElement = true,\n  shadowDomElement,\n  shadowRootElement: shadowRootElementProp,\n  themeOverride: themeOverrideProp,\n}: OdysseyThemeProviderProps) => {\n  const odysseyThemeProviderPropsContext =\n    useOdysseyThemeProviderPropsContext();\n\n  const designTokensOverride =\n    designTokensOverrideProp ??\n    odysseyThemeProviderPropsContext.designTokensOverride;\n\n  const shadowRootElement =\n    shadowRootElementProp ??\n    shadowDomElement ??\n    odysseyThemeProviderPropsContext.shadowRootElement; // Adding `odysseyThemeProviderPropsContext.shadowRootElement` fixes popovers not being styled in `Surface`.\n\n  const themeOverride =\n    themeOverrideProp ?? odysseyThemeProviderPropsContext.themeOverride;\n\n  const { contrastMode, contrastContainerRef } = useContrastMode({\n    contrastMode: contrastModeProp,\n  });\n\n  const parentOdysseyTokens = useOdysseyDesignTokens();\n\n  const odysseyTokens = useMemo(\n    () =>\n      designTokensOverrideProp\n        ? { ...Tokens, ...designTokensOverrideProp }\n        : parentOdysseyTokens,\n    [designTokensOverrideProp, parentOdysseyTokens],\n  );\n\n  const { getOrCreateTheme, themeCache } = useThemeCache({\n    odysseyTokens,\n    shadowRootElement,\n  });\n\n  const odysseyTheme = useMemo(\n    () => getOrCreateTheme(contrastMode),\n    [getOrCreateTheme, contrastMode],\n  );\n\n  const customOdysseyTheme = useMemo(\n    () => createTheme(deepmerge(odysseyTheme, themeOverride || {})),\n    [odysseyTheme, themeOverride],\n  );\n\n  const contrastModeProviderValue = useMemo(\n    () => ({\n      contrastContainerRef,\n      contrastMode,\n    }),\n    [contrastContainerRef, contrastMode],\n  );\n\n  const providerComponents = useMemo(\n    () => (\n      <ThemeCacheContext.Provider value={themeCache}>\n        <ContrastModeContext.Provider value={contrastModeProviderValue}>\n          <MuiThemeProvider theme={customOdysseyTheme}>\n            <OdysseyThemeProviderPropsProvider\n              designTokensOverride={designTokensOverride}\n              shadowRootElement={shadowRootElement}\n              themeOverride={themeOverride}\n            >\n              <OdysseyDesignTokensContext.Provider value={odysseyTokens}>\n                {children}\n              </OdysseyDesignTokensContext.Provider>\n            </OdysseyThemeProviderPropsProvider>\n          </MuiThemeProvider>\n        </ContrastModeContext.Provider>\n      </ThemeCacheContext.Provider>\n    ),\n    [\n      children,\n      contrastModeProviderValue,\n      customOdysseyTheme,\n      designTokensOverride,\n      odysseyTokens,\n      shadowRootElement,\n      themeCache,\n      themeOverride,\n    ],\n  );\n\n  return hasWrapperElement ? (\n    <StyledContrastContainerStyles ref={contrastContainerRef}>\n      {providerComponents}\n    </StyledContrastContainerStyles>\n  ) : (\n    providerComponents\n  );\n};\n\nconst MemoizedOdysseyThemeProvider = memo(OdysseyThemeProvider);\nMemoizedOdysseyThemeProvider.displayName = \"OdysseyThemeProvider\";\n\nexport { MemoizedOdysseyThemeProvider as OdysseyThemeProvider };\n"],"mappings":"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","ignoreList":[]}