UNPKG

payload-plugin-scheduler

Version:
122 lines (121 loc) 3.95 kB
import { publishDateFieldCustomKey } from './lib.js'; const publishDateComponents = { afterInput: [ 'payload-plugin-scheduler/rsc#PublishDateAfterInputServer' ], Cell: 'payload-plugin-scheduler/client#PublishDateCell' }; const reservedPublishDateComponentSlots = Object.keys(publishDateComponents); export const defaultOpts = { collections: [], globals: [], interval: 5, publishDate: { name: 'publish_date', label: 'Publish Date', index: true, type: 'date', admin: { date: { pickerAppearance: 'dayAndTime', timeIntervals: 5 }, position: 'sidebar', components: publishDateComponents }, custom: { [publishDateFieldCustomKey]: true } } }; export const normalizeScheduleConfig = (scheduleConfig, incomingConfig)=>{ const interval = scheduleConfig.interval ?? defaultOpts.interval; const incomingPublishDate = scheduleConfig.publishDate ?? {}; const defaultDateAdmin = defaultOpts.publishDate.admin; const incomingDateAdmin = incomingPublishDate.admin; reservedPublishDateComponentSlots.forEach((slot)=>{ const componentSlot = slot; const components = incomingDateAdmin?.components; const component = components?.[componentSlot]; if (component && component !== publishDateComponents[componentSlot]) { throw new Error(`[payload-plugin-scheduler] publishDate.admin.components.${slot} is managed by the plugin`); } }); return { collections: scheduleConfig.collections ? [ ...scheduleConfig.collections ] : [ ...defaultOpts.collections ], globals: scheduleConfig.globals ? [ ...scheduleConfig.globals ] : [ ...defaultOpts.globals ], interval, publishDate: { ...defaultOpts.publishDate, ...incomingPublishDate, type: 'date', admin: { ...defaultDateAdmin, ...incomingDateAdmin, date: { ...defaultDateAdmin?.date, ...incomingDateAdmin?.date, pickerAppearance: 'dayAndTime', timeIntervals: interval }, components: { ...incomingDateAdmin?.components, ...publishDateComponents } }, custom: { ...incomingPublishDate.custom, [publishDateFieldCustomKey]: true }, ...incomingConfig?.admin?.timezones ? { timezone: true } : {} } }; }; export const resolvePublishDateField = (scheduleConfig, overrides = {})=>{ const publishDate = { ...scheduleConfig.publishDate, ...overrides, admin: { ...scheduleConfig.publishDate.admin, ...overrides.admin, date: { ...scheduleConfig.publishDate.admin?.date, ...overrides.admin?.date }, components: { ...scheduleConfig.publishDate.admin?.components, ...overrides.admin?.components } }, custom: { ...scheduleConfig.publishDate.custom, ...overrides.custom } }; const resolvedField = normalizeScheduleConfig({ ...scheduleConfig, publishDate }).publishDate; const fieldWithoutTimezone = { ...resolvedField }; delete fieldWithoutTimezone.timezone; return { ...fieldWithoutTimezone, name: scheduleConfig.publishDate.name, ...scheduleConfig.publishDate.timezone ? { timezone: scheduleConfig.publishDate.timezone } : {} }; }; //# sourceMappingURL=config.js.map