'use client'; import { getTranslation } from '@payloadcms/translations'; const reduceToIDs = options => options.reduce((ids, option) => { if (option.options) { return [...ids, ...reduceToIDs(option.options)]; } return [...ids, option.id]; }, []); const optionsReducer = (state, action) => { switch (action.type) { case 'ADD': { const { collection, data, hasMultipleRelations, i18n, relation } = action; const labelKey = collection.admin.useAsTitle || 'id'; const loadedIDs = reduceToIDs(state); if (!hasMultipleRelations) { return [...state, ...data.docs.reduce((docs, doc) => { if (loadedIDs.indexOf(doc.id) === -1) { loadedIDs.push(doc.id); return [...docs, { label: doc[labelKey], value: doc.id }]; } return docs; }, [])]; } const newOptions = [...state]; const optionsToAddTo = newOptions.find(optionGroup => optionGroup.label === getTranslation(collection.labels.plural, i18n)); const newSubOptions = data.docs.reduce((docs, doc) => { if (loadedIDs.indexOf(doc.id) === -1) { loadedIDs.push(doc.id); return [...docs, { label: doc[labelKey], relationTo: relation, value: doc.id }]; } return docs; }, []); if (optionsToAddTo) { optionsToAddTo.options = [...optionsToAddTo.options, ...newSubOptions]; } else { newOptions.push({ label: getTranslation(collection.labels.plural, i18n), options: newSubOptions, value: undefined }); } return newOptions; } case 'CLEAR': { return action.required ? [] : [{ label: action.i18n.t('general:none'), value: 'null' }]; } default: { return state; } } }; export default optionsReducer; //# sourceMappingURL=optionsReducer.js.map