Files
klz-cables.com/.pnpm-store/v10/files/c8/189390a420001238948232211bcecce8fb317f51b6c98402199bd575c76b7e39d0dda9bdbfed8ac0fba4a86df4c9f9d230f8bf4ddd624f5bf29bb70e9e0a76
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

96 lines
2.9 KiB
Plaintext

export const getLivePreviewConfig = ({
collectionConfig,
config,
globalConfig,
isLivePreviewEnabled
}) => ({
...(isLivePreviewEnabled ? config.admin.livePreview : {}),
...(collectionConfig?.admin?.livePreview || {}),
...(globalConfig?.admin?.livePreview || {})
});
/**
* Multi-level check to determine whether live preview is enabled on a collection or global.
* For example, live preview can be enabled at both the root config level, or on the entity's config.
* If a collectionConfig/globalConfig is provided, checks if it is enabled at the root level,
* or on the entity's own config.
*/
export const isLivePreviewEnabled = ({
collectionConfig,
config,
globalConfig
}) => {
if (globalConfig) {
return Boolean(config.admin?.livePreview?.globals?.includes(globalConfig.slug) || globalConfig.admin?.livePreview);
}
if (collectionConfig) {
return Boolean(config.admin?.livePreview?.collections?.includes(collectionConfig.slug) || collectionConfig.admin?.livePreview);
}
};
/**
* 1. Looks up the relevant live preview config, which could have been enabled:
* a. At the root level, e.g. `collections: ['posts']`
* b. On the collection or global config, e.g. `admin: { livePreview: { ... } }`
* 2. Determines if live preview is enabled, and if not, early returns.
* 3. Merges the config with the root config, if necessary.
* 4. Executes the `url` function, if necessary.
*
* Notice: internal function only. Subject to change at any time. Use at your own risk.
*/
export const handleLivePreview = async ({
collectionSlug,
config,
data,
globalSlug,
operation,
req
}) => {
const collectionConfig = collectionSlug ? req.payload.collections[collectionSlug]?.config : undefined;
const globalConfig = globalSlug ? config.globals.find(g => g.slug === globalSlug) : undefined;
const enabled = isLivePreviewEnabled({
collectionConfig,
config,
globalConfig
});
if (!enabled) {
return {};
}
const livePreviewConfig = getLivePreviewConfig({
collectionConfig,
config,
globalConfig,
isLivePreviewEnabled: enabled
});
let livePreviewURL;
if (typeof livePreviewConfig?.url === 'string') {
livePreviewURL = livePreviewConfig.url;
}
if (typeof livePreviewConfig?.url === 'function' && operation !== 'create') {
try {
const result = await livePreviewConfig.url({
collectionConfig,
data,
globalConfig,
locale: {
code: req.locale,
label: ''
},
payload: req.payload,
req
});
if (typeof result === 'string') {
livePreviewURL = result;
}
} catch (err) {
req.payload.logger.error({
err,
msg: `There was an error executing the live preview URL function for ${collectionSlug || globalSlug}`
});
}
}
return {
isLivePreviewEnabled: enabled,
livePreviewConfig,
livePreviewURL
};
};
//# sourceMappingURL=handleLivePreview.js.map