@edx/frontend-platform 8.3.2 → 8.3.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edx/frontend-platform",
3
- "version": "8.3.2",
3
+ "version": "8.3.4",
4
4
  "description": "Foundational application framework for Open edX micro-frontend applications.",
5
5
  "main": "index.js",
6
6
  "publishConfig": {
@@ -40,7 +40,7 @@
40
40
  "@testing-library/dom": "10.4.0",
41
41
  "@testing-library/jest-dom": "6.6.3",
42
42
  "@testing-library/react": "16.2.0",
43
- "@testing-library/user-event": "14.4.3",
43
+ "@testing-library/user-event": "14.6.1",
44
44
  "axios-mock-adapter": "^1.22.0",
45
45
  "husky": "8.0.3",
46
46
  "jest-environment-jsdom": "29.7.0",
@@ -58,7 +58,7 @@
58
58
  "@cospired/i18n-iso-languages": "4.2.0",
59
59
  "@formatjs/intl-pluralrules": "4.3.3",
60
60
  "@formatjs/intl-relativetimeformat": "10.0.1",
61
- "axios": "1.8.2",
61
+ "axios": "1.8.4",
62
62
  "axios-cache-interceptor": "1.6.2",
63
63
  "form-urlencoded": "4.1.4",
64
64
  "glob": "7.2.3",
@@ -1,4 +1,5 @@
1
- var _excluded = ["fileName"];
1
+ var _excluded = ["fileName"],
2
+ _excluded2 = ["fileName"];
2
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
5
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
@@ -135,18 +136,24 @@ var useParagonThemeUrls = function useParagonThemeUrls() {
135
136
 
136
137
  // If we don't have the core default or any theme variants, use the PARAGON_THEME
137
138
  if (!coreCss["default"] || isEmptyObject(themeVariantsCss) || isEmptyObject(defaultThemeVariants)) {
138
- var _PARAGON_THEME$parago, _PARAGON_THEME$parago2, _PARAGON_THEME$parago3;
139
- var localCoreUrl = (_PARAGON_THEME$parago = PARAGON_THEME.paragon) === null || _PARAGON_THEME$parago === void 0 || (_PARAGON_THEME$parago = _PARAGON_THEME$parago.themeUrls) === null || _PARAGON_THEME$parago === void 0 ? void 0 : _PARAGON_THEME$parago.core;
140
- var localThemeVariants = (_PARAGON_THEME$parago2 = PARAGON_THEME.paragon) === null || _PARAGON_THEME$parago2 === void 0 || (_PARAGON_THEME$parago2 = _PARAGON_THEME$parago2.themeUrls) === null || _PARAGON_THEME$parago2 === void 0 ? void 0 : _PARAGON_THEME$parago2.variants;
141
- var localDefaultThemeVariants = (_PARAGON_THEME$parago3 = PARAGON_THEME.paragon) === null || _PARAGON_THEME$parago3 === void 0 || (_PARAGON_THEME$parago3 = _PARAGON_THEME$parago3.themeUrls) === null || _PARAGON_THEME$parago3 === void 0 ? void 0 : _PARAGON_THEME$parago3.defaults;
142
- if (isEmptyObject(localCoreUrl) || isEmptyObject(localThemeVariants)) {
139
+ var _PARAGON_THEME3, _PARAGON_THEME4, _PARAGON_THEME5, _PARAGON_THEME6, _PARAGON_THEME7, _PARAGON_THEME8;
140
+ var localParagonCoreUrl = (_PARAGON_THEME3 = PARAGON_THEME) === null || _PARAGON_THEME3 === void 0 || (_PARAGON_THEME3 = _PARAGON_THEME3.paragon) === null || _PARAGON_THEME3 === void 0 || (_PARAGON_THEME3 = _PARAGON_THEME3.themeUrls) === null || _PARAGON_THEME3 === void 0 ? void 0 : _PARAGON_THEME3.core;
141
+ var localParagonThemeVariants = (_PARAGON_THEME4 = PARAGON_THEME) === null || _PARAGON_THEME4 === void 0 || (_PARAGON_THEME4 = _PARAGON_THEME4.paragon) === null || _PARAGON_THEME4 === void 0 || (_PARAGON_THEME4 = _PARAGON_THEME4.themeUrls) === null || _PARAGON_THEME4 === void 0 ? void 0 : _PARAGON_THEME4.variants;
142
+ var localParagonDefaultThemeVariants = (_PARAGON_THEME5 = PARAGON_THEME) === null || _PARAGON_THEME5 === void 0 || (_PARAGON_THEME5 = _PARAGON_THEME5.paragon) === null || _PARAGON_THEME5 === void 0 || (_PARAGON_THEME5 = _PARAGON_THEME5.themeUrls) === null || _PARAGON_THEME5 === void 0 ? void 0 : _PARAGON_THEME5.defaults;
143
+ var localBrandCoreUrl = (_PARAGON_THEME6 = PARAGON_THEME) === null || _PARAGON_THEME6 === void 0 || (_PARAGON_THEME6 = _PARAGON_THEME6.brand) === null || _PARAGON_THEME6 === void 0 || (_PARAGON_THEME6 = _PARAGON_THEME6.themeUrls) === null || _PARAGON_THEME6 === void 0 ? void 0 : _PARAGON_THEME6.core;
144
+ var localBrandThemeVariants = (_PARAGON_THEME7 = PARAGON_THEME) === null || _PARAGON_THEME7 === void 0 || (_PARAGON_THEME7 = _PARAGON_THEME7.brand) === null || _PARAGON_THEME7 === void 0 || (_PARAGON_THEME7 = _PARAGON_THEME7.themeUrls) === null || _PARAGON_THEME7 === void 0 ? void 0 : _PARAGON_THEME7.variants;
145
+ var localBrandDefaultThemeVariants = (_PARAGON_THEME8 = PARAGON_THEME) === null || _PARAGON_THEME8 === void 0 || (_PARAGON_THEME8 = _PARAGON_THEME8.brand) === null || _PARAGON_THEME8 === void 0 || (_PARAGON_THEME8 = _PARAGON_THEME8.themeUrls) === null || _PARAGON_THEME8 === void 0 ? void 0 : _PARAGON_THEME8.defaults;
146
+ if (isEmptyObject(localParagonCoreUrl) || isEmptyObject(localParagonThemeVariants)) {
143
147
  return undefined;
144
148
  }
145
149
  if (!coreCss["default"]) {
146
- coreCss["default"] = fallbackThemeUrl(localCoreUrl === null || localCoreUrl === void 0 ? void 0 : localCoreUrl.fileName);
150
+ coreCss["default"] = fallbackThemeUrl(localParagonCoreUrl === null || localParagonCoreUrl === void 0 ? void 0 : localParagonCoreUrl.fileName);
151
+ }
152
+ if (!coreCss.brandOverride && localBrandCoreUrl) {
153
+ coreCss.brandOverride = fallbackThemeUrl(localBrandCoreUrl === null || localBrandCoreUrl === void 0 ? void 0 : localBrandCoreUrl.fileName);
147
154
  }
148
155
  if (isEmptyObject(themeVariantsCss)) {
149
- Object.entries(localThemeVariants).forEach(function (_ref5) {
156
+ Object.entries(localParagonThemeVariants).forEach(function (_ref5) {
150
157
  var _ref6 = _slicedToArray(_ref5, 2),
151
158
  themeVariant = _ref6[0],
152
159
  _ref4 = _ref6[1];
@@ -158,12 +165,25 @@ var useParagonThemeUrls = function useParagonThemeUrls() {
158
165
  }, rest.urls)
159
166
  };
160
167
  });
168
+ Object.entries(localBrandThemeVariants).forEach(function (_ref8) {
169
+ var _themeVariantsCss$the;
170
+ var _ref9 = _slicedToArray(_ref8, 2),
171
+ themeVariant = _ref9[0],
172
+ _ref7 = _ref9[1];
173
+ var fileName = _ref7.fileName,
174
+ rest = _objectWithoutProperties(_ref7, _excluded2);
175
+ themeVariantsCss[themeVariant] = {
176
+ urls: _objectSpread(_objectSpread({
177
+ brandOverride: fallbackThemeUrl(fileName)
178
+ }, rest.urls), (_themeVariantsCss$the = themeVariantsCss[themeVariant]) === null || _themeVariantsCss$the === void 0 ? void 0 : _themeVariantsCss$the.urls)
179
+ };
180
+ });
161
181
  }
162
182
  return {
163
183
  core: {
164
184
  urls: coreCss
165
185
  },
166
- defaults: defaultThemeVariants || localDefaultThemeVariants,
186
+ defaults: defaultThemeVariants || _objectSpread(_objectSpread({}, localParagonDefaultThemeVariants), localBrandDefaultThemeVariants),
167
187
  variants: themeVariantsCss
168
188
  };
169
189
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useParagonThemeUrls.js","names":["useMemo","fallbackThemeUrl","isEmptyObject","getConfig","handleVersionSubstitution","_ref","url","wildcardKeyword","localVersion","includes","replaceAll","useParagonThemeUrls","_paragonThemeUrls$cor","_paragonThemeUrls$cor2","_paragonThemeUrls$cor3","_PARAGON_THEME","_PARAGON_THEME2","_getConfig","paragonThemeUrls","PARAGON_THEME_URLS","undefined","paragonCoreCssUrl","_typeof","core","urls","brandCoreCssUrl","brandOverride","defaultThemeVariants","defaults","localParagonVersion","PARAGON_THEME","paragon","version","localBrandVersion","brand","coreCss","themeVariantsCss","themeVariantsEntries","Object","entries","variants","forEach","_ref2","_ref3","_slicedToArray","themeVariant","_ref3$","themeVariantMetadata","_PARAGON_THEME$parago","_PARAGON_THEME$parago2","_PARAGON_THEME$parago3","localCoreUrl","themeUrls","localThemeVariants","localDefaultThemeVariants","fileName","_ref5","_ref6","_ref4","rest","_objectWithoutProperties","_excluded","_objectSpread"],"sources":["../../../../src/react/hooks/paragon/useParagonThemeUrls.js"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { fallbackThemeUrl, isEmptyObject } from './utils';\nimport { getConfig } from '../../../config';\n\n/**\n * Replaces a wildcard in the URL string with a provided local version string.\n * This is typically used to substitute a version placeholder (e.g., `$paragonVersion`)\n * in URLs with actual version values.\n *\n * @param {Object} args - The arguments object for version substitution.\n * @param {string} args.url - The URL string that may contain a wildcard keyword (e.g., `$paragonVersion`).\n * @param {string} args.wildcardKeyword - The keyword (e.g., `$paragonVersion`) in the URL to be replaced\n * with the local version.\n * @param {string} args.localVersion - The local version string to replace the wildcard with.\n *\n * @returns {string} The URL with the wildcard keyword replaced by the provided version string.\n * If the conditions are not met (e.g., missing URL or version), the original URL is returned.\n *\n * @example\n * const url = 'https://cdn.example.com/$paragonVersion/theme.css';\n * const version = '1.0.0';\n * const updatedUrl = handleVersionSubstitution({ url, wildcardKeyword: '$paragonVersion', localVersion: version });\n * console.log(updatedUrl); // Outputs: 'https://cdn.example.com/1.0.0/theme.css'\n */\nexport const handleVersionSubstitution = ({ url, wildcardKeyword, localVersion }) => {\n if (!url || !url.includes(wildcardKeyword) || !localVersion) {\n return url;\n }\n return url.replaceAll(wildcardKeyword, localVersion);\n};\n\n/**\n * Custom React hook that retrieves the Paragon theme URLs, including the core theme CSS and any theme variants.\n * It supports version substitution for the Paragon and brand versions and returns a structured object containing\n * the URLs. The hook also handles fallback scenarios when the URLs are unavailable in the configuration or when\n * version substitution is required.\n *\n * @returns {Object|undefined} An object containing:\n * - `core`: The core theme URLs (including default and brand override).\n * - `defaults`: Any default theme variants.\n * - `variants`: The URLs for any additional theme variants (default and brand override).\n *\n * If the required URLs are not available or cannot be determined, `undefined` is returned.\n *\n * @example\n * const themeUrls = useParagonThemeUrls();\n * if (themeUrls) {\n * console.log(themeUrls.core.urls.default); // Outputs the URL of the core theme CSS\n * console.log(themeUrls.variants['dark'].urls.default); // Outputs the URL of the dark theme variant CSS\n * }\n *\n */\nconst useParagonThemeUrls = () => useMemo(() => {\n const { PARAGON_THEME_URLS: paragonThemeUrls } = getConfig();\n if (!paragonThemeUrls) {\n return undefined;\n }\n\n const paragonCoreCssUrl = typeof paragonThemeUrls?.core?.urls === 'object' ? paragonThemeUrls.core.urls.default : paragonThemeUrls?.core?.url;\n const brandCoreCssUrl = typeof paragonThemeUrls?.core?.urls === 'object' ? paragonThemeUrls.core.urls.brandOverride : undefined;\n const defaultThemeVariants = paragonThemeUrls.defaults;\n\n // Local versions of @openedx/paragon and @edx/brand\n // these are only used when passed into handleVersionSubstitution\n // which does not attempt substitution using falsy value\n const localParagonVersion = PARAGON_THEME?.paragon?.version;\n const localBrandVersion = PARAGON_THEME?.brand?.version;\n\n const coreCss = {\n default: handleVersionSubstitution({ url: paragonCoreCssUrl, wildcardKeyword: '$paragonVersion', localVersion: localParagonVersion }),\n brandOverride: handleVersionSubstitution({ url: brandCoreCssUrl, wildcardKeyword: '$brandVersion', localVersion: localBrandVersion }),\n };\n const themeVariantsCss = {};\n const themeVariantsEntries = Object.entries(paragonThemeUrls.variants || {});\n themeVariantsEntries.forEach(([themeVariant, { url, urls }]) => {\n const themeVariantMetadata = { urls: null };\n if (url) {\n themeVariantMetadata.urls = {\n default: handleVersionSubstitution({\n url,\n wildcardKeyword: '$paragonVersion',\n localVersion: localParagonVersion,\n }),\n };\n } else {\n themeVariantMetadata.urls = {\n default: handleVersionSubstitution({\n url: urls.default,\n wildcardKeyword: '$paragonVersion',\n localVersion: localParagonVersion,\n }),\n brandOverride: handleVersionSubstitution({\n url: urls.brandOverride,\n wildcardKeyword: '$brandVersion',\n localVersion: localBrandVersion,\n }),\n };\n }\n themeVariantsCss[themeVariant] = themeVariantMetadata;\n });\n\n // If we don't have the core default or any theme variants, use the PARAGON_THEME\n if (!coreCss.default || isEmptyObject(themeVariantsCss) || isEmptyObject(defaultThemeVariants)) {\n const localCoreUrl = PARAGON_THEME.paragon?.themeUrls?.core;\n const localThemeVariants = PARAGON_THEME.paragon?.themeUrls?.variants;\n const localDefaultThemeVariants = PARAGON_THEME.paragon?.themeUrls?.defaults;\n\n if (isEmptyObject(localCoreUrl) || isEmptyObject(localThemeVariants)) {\n return undefined;\n }\n if (!coreCss.default) {\n coreCss.default = fallbackThemeUrl(localCoreUrl?.fileName);\n }\n\n if (isEmptyObject(themeVariantsCss)) {\n Object.entries(localThemeVariants).forEach(([themeVariant, { fileName, ...rest }]) => {\n themeVariantsCss[themeVariant] = {\n urls: { default: fallbackThemeUrl(fileName), ...rest.urls },\n };\n });\n }\n return {\n core: { urls: coreCss },\n defaults: defaultThemeVariants || localDefaultThemeVariants,\n variants: themeVariantsCss,\n };\n }\n\n return {\n core: { urls: coreCss },\n defaults: defaultThemeVariants,\n variants: themeVariantsCss,\n };\n}, []);\n\nexport default useParagonThemeUrls;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useParagonThemeUrls.js","names":["useMemo","fallbackThemeUrl","isEmptyObject","getConfig","handleVersionSubstitution","_ref","url","wildcardKeyword","localVersion","includes","replaceAll","useParagonThemeUrls","_paragonThemeUrls$cor","_paragonThemeUrls$cor2","_paragonThemeUrls$cor3","_PARAGON_THEME","_PARAGON_THEME2","_getConfig","paragonThemeUrls","PARAGON_THEME_URLS","undefined","paragonCoreCssUrl","_typeof","core","urls","brandCoreCssUrl","brandOverride","defaultThemeVariants","defaults","localParagonVersion","PARAGON_THEME","paragon","version","localBrandVersion","brand","coreCss","themeVariantsCss","themeVariantsEntries","Object","entries","variants","forEach","_ref2","_ref3","_slicedToArray","themeVariant","_ref3$","themeVariantMetadata","_PARAGON_THEME3","_PARAGON_THEME4","_PARAGON_THEME5","_PARAGON_THEME6","_PARAGON_THEME7","_PARAGON_THEME8","localParagonCoreUrl","themeUrls","localParagonThemeVariants","localParagonDefaultThemeVariants","localBrandCoreUrl","localBrandThemeVariants","localBrandDefaultThemeVariants","fileName","_ref5","_ref6","_ref4","rest","_objectWithoutProperties","_excluded","_objectSpread","_ref8","_themeVariantsCss$the","_ref9","_ref7","_excluded2"],"sources":["../../../../src/react/hooks/paragon/useParagonThemeUrls.js"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { fallbackThemeUrl, isEmptyObject } from './utils';\nimport { getConfig } from '../../../config';\n\n/**\n * Replaces a wildcard in the URL string with a provided local version string.\n * This is typically used to substitute a version placeholder (e.g., `$paragonVersion`)\n * in URLs with actual version values.\n *\n * @param {Object} args - The arguments object for version substitution.\n * @param {string} args.url - The URL string that may contain a wildcard keyword (e.g., `$paragonVersion`).\n * @param {string} args.wildcardKeyword - The keyword (e.g., `$paragonVersion`) in the URL to be replaced\n * with the local version.\n * @param {string} args.localVersion - The local version string to replace the wildcard with.\n *\n * @returns {string} The URL with the wildcard keyword replaced by the provided version string.\n * If the conditions are not met (e.g., missing URL or version), the original URL is returned.\n *\n * @example\n * const url = 'https://cdn.example.com/$paragonVersion/theme.css';\n * const version = '1.0.0';\n * const updatedUrl = handleVersionSubstitution({ url, wildcardKeyword: '$paragonVersion', localVersion: version });\n * console.log(updatedUrl); // Outputs: 'https://cdn.example.com/1.0.0/theme.css'\n */\nexport const handleVersionSubstitution = ({ url, wildcardKeyword, localVersion }) => {\n if (!url || !url.includes(wildcardKeyword) || !localVersion) {\n return url;\n }\n return url.replaceAll(wildcardKeyword, localVersion);\n};\n\n/**\n * Custom React hook that retrieves the Paragon theme URLs, including the core theme CSS and any theme variants.\n * It supports version substitution for the Paragon and brand versions and returns a structured object containing\n * the URLs. The hook also handles fallback scenarios when the URLs are unavailable in the configuration or when\n * version substitution is required.\n *\n * @returns {Object|undefined} An object containing:\n * - `core`: The core theme URLs (including default and brand override).\n * - `defaults`: Any default theme variants.\n * - `variants`: The URLs for any additional theme variants (default and brand override).\n *\n * If the required URLs are not available or cannot be determined, `undefined` is returned.\n *\n * @example\n * const themeUrls = useParagonThemeUrls();\n * if (themeUrls) {\n * console.log(themeUrls.core.urls.default); // Outputs the URL of the core theme CSS\n * console.log(themeUrls.variants['dark'].urls.default); // Outputs the URL of the dark theme variant CSS\n * }\n *\n */\nconst useParagonThemeUrls = () => useMemo(() => {\n const { PARAGON_THEME_URLS: paragonThemeUrls } = getConfig();\n if (!paragonThemeUrls) {\n return undefined;\n }\n\n const paragonCoreCssUrl = typeof paragonThemeUrls?.core?.urls === 'object' ? paragonThemeUrls.core.urls.default : paragonThemeUrls?.core?.url;\n const brandCoreCssUrl = typeof paragonThemeUrls?.core?.urls === 'object' ? paragonThemeUrls.core.urls.brandOverride : undefined;\n const defaultThemeVariants = paragonThemeUrls.defaults;\n\n // Local versions of @openedx/paragon and @edx/brand\n // these are only used when passed into handleVersionSubstitution\n // which does not attempt substitution using falsy value\n const localParagonVersion = PARAGON_THEME?.paragon?.version;\n const localBrandVersion = PARAGON_THEME?.brand?.version;\n\n const coreCss = {\n default: handleVersionSubstitution({ url: paragonCoreCssUrl, wildcardKeyword: '$paragonVersion', localVersion: localParagonVersion }),\n brandOverride: handleVersionSubstitution({ url: brandCoreCssUrl, wildcardKeyword: '$brandVersion', localVersion: localBrandVersion }),\n };\n const themeVariantsCss = {};\n const themeVariantsEntries = Object.entries(paragonThemeUrls.variants || {});\n themeVariantsEntries.forEach(([themeVariant, { url, urls }]) => {\n const themeVariantMetadata = { urls: null };\n if (url) {\n themeVariantMetadata.urls = {\n default: handleVersionSubstitution({\n url,\n wildcardKeyword: '$paragonVersion',\n localVersion: localParagonVersion,\n }),\n };\n } else {\n themeVariantMetadata.urls = {\n default: handleVersionSubstitution({\n url: urls.default,\n wildcardKeyword: '$paragonVersion',\n localVersion: localParagonVersion,\n }),\n brandOverride: handleVersionSubstitution({\n url: urls.brandOverride,\n wildcardKeyword: '$brandVersion',\n localVersion: localBrandVersion,\n }),\n };\n }\n themeVariantsCss[themeVariant] = themeVariantMetadata;\n });\n\n // If we don't have the core default or any theme variants, use the PARAGON_THEME\n if (!coreCss.default || isEmptyObject(themeVariantsCss) || isEmptyObject(defaultThemeVariants)) {\n const localParagonCoreUrl = PARAGON_THEME?.paragon?.themeUrls?.core;\n const localParagonThemeVariants = PARAGON_THEME?.paragon?.themeUrls?.variants;\n const localParagonDefaultThemeVariants = PARAGON_THEME?.paragon?.themeUrls?.defaults;\n\n const localBrandCoreUrl = PARAGON_THEME?.brand?.themeUrls?.core;\n const localBrandThemeVariants = PARAGON_THEME?.brand?.themeUrls?.variants;\n const localBrandDefaultThemeVariants = PARAGON_THEME?.brand?.themeUrls?.defaults;\n\n if (isEmptyObject(localParagonCoreUrl) || isEmptyObject(localParagonThemeVariants)) {\n return undefined;\n }\n if (!coreCss.default) {\n coreCss.default = fallbackThemeUrl(localParagonCoreUrl?.fileName);\n }\n\n if (!coreCss.brandOverride && localBrandCoreUrl) {\n coreCss.brandOverride = fallbackThemeUrl(localBrandCoreUrl?.fileName);\n }\n\n if (isEmptyObject(themeVariantsCss)) {\n Object.entries(localParagonThemeVariants).forEach(([themeVariant, { fileName, ...rest }]) => {\n themeVariantsCss[themeVariant] = {\n urls: { default: fallbackThemeUrl(fileName), ...rest.urls },\n };\n });\n\n Object.entries(localBrandThemeVariants).forEach(([themeVariant, { fileName, ...rest }]) => {\n themeVariantsCss[themeVariant] = {\n urls: { brandOverride: fallbackThemeUrl(fileName), ...rest.urls, ...themeVariantsCss[themeVariant]?.urls },\n };\n });\n }\n\n return {\n core: { urls: coreCss },\n defaults: defaultThemeVariants || { ...localParagonDefaultThemeVariants, ...localBrandDefaultThemeVariants },\n variants: themeVariantsCss,\n };\n }\n\n return {\n core: { urls: coreCss },\n defaults: defaultThemeVariants,\n variants: themeVariantsCss,\n };\n}, []);\n\nexport default useParagonThemeUrls;\n"],"mappings":"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","ignoreList":[]}