@edx/frontend-platform 8.3.3 → 8.3.5
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.
|
|
3
|
+
"version": "8.3.5",
|
|
4
4
|
"description": "Foundational application framework for Open edX micro-frontend applications.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -42,11 +42,10 @@
|
|
|
42
42
|
"@testing-library/react": "16.2.0",
|
|
43
43
|
"@testing-library/user-event": "14.6.1",
|
|
44
44
|
"axios-mock-adapter": "^1.22.0",
|
|
45
|
-
"husky": "8.0.3",
|
|
46
45
|
"jest-environment-jsdom": "29.7.0",
|
|
47
46
|
"jest-localstorage-mock": "^2.4.26",
|
|
48
47
|
"jsdoc": "^4.0.0",
|
|
49
|
-
"nodemon": "3.1.
|
|
48
|
+
"nodemon": "3.1.10",
|
|
50
49
|
"prop-types": "15.8.1",
|
|
51
50
|
"react": "18.3.1",
|
|
52
51
|
"react-dom": "18.3.1",
|
|
@@ -58,7 +57,7 @@
|
|
|
58
57
|
"@cospired/i18n-iso-languages": "4.2.0",
|
|
59
58
|
"@formatjs/intl-pluralrules": "4.3.3",
|
|
60
59
|
"@formatjs/intl-relativetimeformat": "10.0.1",
|
|
61
|
-
"axios": "1.
|
|
60
|
+
"axios": "1.9.0",
|
|
62
61
|
"axios-cache-interceptor": "1.6.2",
|
|
63
62
|
"form-urlencoded": "4.1.4",
|
|
64
63
|
"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
|
|
139
|
-
var
|
|
140
|
-
var
|
|
141
|
-
var
|
|
142
|
-
|
|
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(
|
|
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(
|
|
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 ||
|
|
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":[]}
|