UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

98 lines (97 loc) 9.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _getTranslation = require("../../../../../../utilities/getTranslation"); 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 'CLEAR': { return action.required ? [] : [ { label: action.i18n.t('general:none'), value: 'null' } ]; } 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 === (0, _getTranslation.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: (0, _getTranslation.getTranslation)(collection.labels.plural, i18n), options: newSubOptions, value: undefined }); } return newOptions; } default: { return state; } } }; const _default = optionsReducer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2VsZW1lbnRzL1doZXJlQnVpbGRlci9Db25kaXRpb24vUmVsYXRpb25zaGlwL29wdGlvbnNSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBPcHRpb24gfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBnZXRUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3V0aWxpdGllcy9nZXRUcmFuc2xhdGlvbidcblxuY29uc3QgcmVkdWNlVG9JRHMgPSAob3B0aW9ucykgPT5cbiAgb3B0aW9ucy5yZWR1Y2UoKGlkcywgb3B0aW9uKSA9PiB7XG4gICAgaWYgKG9wdGlvbi5vcHRpb25zKSB7XG4gICAgICByZXR1cm4gWy4uLmlkcywgLi4ucmVkdWNlVG9JRHMob3B0aW9uLm9wdGlvbnMpXVxuICAgIH1cblxuICAgIHJldHVybiBbLi4uaWRzLCBvcHRpb24uaWRdXG4gIH0sIFtdKVxuXG5jb25zdCBvcHRpb25zUmVkdWNlciA9IChzdGF0ZTogT3B0aW9uW10sIGFjdGlvbjogQWN0aW9uKTogT3B0aW9uW10gPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnQ0xFQVInOiB7XG4gICAgICByZXR1cm4gYWN0aW9uLnJlcXVpcmVkID8gW10gOiBbeyBsYWJlbDogYWN0aW9uLmkxOG4udCgnZ2VuZXJhbDpub25lJyksIHZhbHVlOiAnbnVsbCcgfV1cbiAgICB9XG5cbiAgICBjYXNlICdBREQnOiB7XG4gICAgICBjb25zdCB7IGNvbGxlY3Rpb24sIGRhdGEsIGhhc011bHRpcGxlUmVsYXRpb25zLCBpMThuLCByZWxhdGlvbiB9ID0gYWN0aW9uXG5cbiAgICAgIGNvbnN0IGxhYmVsS2V5ID0gY29sbGVjdGlvbi5hZG1pbi51c2VBc1RpdGxlIHx8ICdpZCdcblxuICAgICAgY29uc3QgbG9hZGVkSURzID0gcmVkdWNlVG9JRHMoc3RhdGUpXG5cbiAgICAgIGlmICghaGFzTXVsdGlwbGVSZWxhdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAuLi5kYXRhLmRvY3MucmVkdWNlKChkb2NzLCBkb2MpID0+IHtcbiAgICAgICAgICAgIGlmIChsb2FkZWRJRHMuaW5kZXhPZihkb2MuaWQpID09PSAtMSkge1xuICAgICAgICAgICAgICBsb2FkZWRJRHMucHVzaChkb2MuaWQpXG4gICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgLi4uZG9jcyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogZG9jW2xhYmVsS2V5XSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBkb2MuaWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRvY3NcbiAgICAgICAgICB9LCBbXSksXG4gICAgICAgIF1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3T3B0aW9ucyA9IFsuLi5zdGF0ZV1cbiAgICAgIGNvbnN0IG9wdGlvbnNUb0FkZFRvID0gbmV3T3B0aW9ucy5maW5kKFxuICAgICAgICAob3B0aW9uR3JvdXApID0+IG9wdGlvbkdyb3VwLmxhYmVsID09PSBnZXRUcmFuc2xhdGlvbihjb2xsZWN0aW9uLmxhYmVscy5wbHVyYWwsIGkxOG4pLFxuICAgICAgKVxuXG4gICAgICBjb25zdCBuZXdTdWJPcHRpb25zID0gZGF0YS5kb2NzLnJlZHVjZSgoZG9jcywgZG9jKSA9PiB7XG4gICAgICAgIGlmIChsb2FkZWRJRHMuaW5kZXhPZihkb2MuaWQpID09PSAtMSkge1xuICAgICAgICAgIGxvYWRlZElEcy5wdXNoKGRvYy5pZClcblxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi5kb2NzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogZG9jW2xhYmVsS2V5XSxcbiAgICAgICAgICAgICAgcmVsYXRpb25UbzogcmVsYXRpb24sXG4gICAgICAgICAgICAgIHZhbHVlOiBkb2MuaWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2NzXG4gICAgICB9LCBbXSlcblxuICAgICAgaWYgKG9wdGlvbnNUb0FkZFRvKSB7XG4gICAgICAgIG9wdGlvbnNUb0FkZFRvLm9wdGlvbnMgPSBbLi4ub3B0aW9uc1RvQWRkVG8ub3B0aW9ucywgLi4ubmV3U3ViT3B0aW9uc11cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld09wdGlvbnMucHVzaCh7XG4gICAgICAgICAgbGFiZWw6IGdldFRyYW5zbGF0aW9uKGNvbGxlY3Rpb24ubGFiZWxzLnBsdXJhbCwgaTE4biksXG4gICAgICAgICAgb3B0aW9uczogbmV3U3ViT3B0aW9ucyxcbiAgICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3T3B0aW9uc1xuICAgIH1cblxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBzdGF0ZVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBvcHRpb25zUmVkdWNlclxuIl0sIm5hbWVzIjpbInJlZHVjZVRvSURzIiwib3B0aW9ucyIsInJlZHVjZSIsImlkcyIsIm9wdGlvbiIsImlkIiwib3B0aW9uc1JlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInR5cGUiLCJyZXF1aXJlZCIsImxhYmVsIiwiaTE4biIsInQiLCJ2YWx1ZSIsImNvbGxlY3Rpb24iLCJkYXRhIiwiaGFzTXVsdGlwbGVSZWxhdGlvbnMiLCJyZWxhdGlvbiIsImxhYmVsS2V5IiwiYWRtaW4iLCJ1c2VBc1RpdGxlIiwibG9hZGVkSURzIiwiZG9jcyIsImRvYyIsImluZGV4T2YiLCJwdXNoIiwibmV3T3B0aW9ucyIsIm9wdGlvbnNUb0FkZFRvIiwiZmluZCIsIm9wdGlvbkdyb3VwIiwiZ2V0VHJhbnNsYXRpb24iLCJsYWJlbHMiLCJwbHVyYWwiLCJuZXdTdWJPcHRpb25zIiwicmVsYXRpb25UbyIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFzRkE7OztlQUFBOzs7Z0NBcEYrQjtBQUUvQixNQUFNQSxjQUFjLENBQUNDLFVBQ25CQSxRQUFRQyxNQUFNLENBQUMsQ0FBQ0MsS0FBS0M7UUFDbkIsSUFBSUEsT0FBT0gsT0FBTyxFQUFFO1lBQ2xCLE9BQU87bUJBQUlFO21CQUFRSCxZQUFZSSxPQUFPSCxPQUFPO2FBQUU7UUFDakQ7UUFFQSxPQUFPO2VBQUlFO1lBQUtDLE9BQU9DLEVBQUU7U0FBQztJQUM1QixHQUFHLEVBQUU7QUFFUCxNQUFNQyxpQkFBaUIsQ0FBQ0MsT0FBaUJDO0lBQ3ZDLE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBSztZQUFTO2dCQUNaLE9BQU9ELE9BQU9FLFFBQVEsR0FBRyxFQUFFLEdBQUc7b0JBQUM7d0JBQUVDLE9BQU9ILE9BQU9JLElBQUksQ0FBQ0MsQ0FBQyxDQUFDO3dCQUFpQkMsT0FBTztvQkFBTztpQkFBRTtZQUN6RjtRQUVBLEtBQUs7WUFBTztnQkFDVixNQUFNLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFQyxvQkFBb0IsRUFBRUwsSUFBSSxFQUFFTSxRQUFRLEVBQUUsR0FBR1Y7Z0JBRW5FLE1BQU1XLFdBQVdKLFdBQVdLLEtBQUssQ0FBQ0MsVUFBVSxJQUFJO2dCQUVoRCxNQUFNQyxZQUFZdEIsWUFBWU87Z0JBRTlCLElBQUksQ0FBQ1Usc0JBQXNCO29CQUN6QixPQUFPOzJCQUNGVjsyQkFDQVMsS0FBS08sSUFBSSxDQUFDckIsTUFBTSxDQUFDLENBQUNxQixNQUFNQzs0QkFDekIsSUFBSUYsVUFBVUcsT0FBTyxDQUFDRCxJQUFJbkIsRUFBRSxNQUFNLENBQUMsR0FBRztnQ0FDcENpQixVQUFVSSxJQUFJLENBQUNGLElBQUluQixFQUFFO2dDQUNyQixPQUFPO3VDQUNGa0I7b0NBQ0g7d0NBQ0VaLE9BQU9hLEdBQUcsQ0FBQ0wsU0FBUzt3Q0FDcEJMLE9BQU9VLElBQUluQixFQUFFO29DQUNmO2lDQUNEOzRCQUNIOzRCQUNBLE9BQU9rQjt3QkFDVCxHQUFHLEVBQUU7cUJBQ047Z0JBQ0g7Z0JBRUEsTUFBTUksYUFBYTt1QkFBSXBCO2lCQUFNO2dCQUM3QixNQUFNcUIsaUJBQWlCRCxXQUFXRSxJQUFJLENBQ3BDLENBQUNDLGNBQWdCQSxZQUFZbkIsS0FBSyxLQUFLb0IsSUFBQUEsOEJBQWMsRUFBQ2hCLFdBQVdpQixNQUFNLENBQUNDLE1BQU0sRUFBRXJCO2dCQUdsRixNQUFNc0IsZ0JBQWdCbEIsS0FBS08sSUFBSSxDQUFDckIsTUFBTSxDQUFDLENBQUNxQixNQUFNQztvQkFDNUMsSUFBSUYsVUFBVUcsT0FBTyxDQUFDRCxJQUFJbkIsRUFBRSxNQUFNLENBQUMsR0FBRzt3QkFDcENpQixVQUFVSSxJQUFJLENBQUNGLElBQUluQixFQUFFO3dCQUVyQixPQUFPOytCQUNGa0I7NEJBQ0g7Z0NBQ0VaLE9BQU9hLEdBQUcsQ0FBQ0wsU0FBUztnQ0FDcEJnQixZQUFZakI7Z0NBQ1pKLE9BQU9VLElBQUluQixFQUFFOzRCQUNmO3lCQUNEO29CQUNIO29CQUVBLE9BQU9rQjtnQkFDVCxHQUFHLEVBQUU7Z0JBRUwsSUFBSUssZ0JBQWdCO29CQUNsQkEsZUFBZTNCLE9BQU8sR0FBRzsyQkFBSTJCLGVBQWUzQixPQUFPOzJCQUFLaUM7cUJBQWM7Z0JBQ3hFLE9BQU87b0JBQ0xQLFdBQVdELElBQUksQ0FBQzt3QkFDZGYsT0FBT29CLElBQUFBLDhCQUFjLEVBQUNoQixXQUFXaUIsTUFBTSxDQUFDQyxNQUFNLEVBQUVyQjt3QkFDaERYLFNBQVNpQzt3QkFDVHBCLE9BQU9zQjtvQkFDVDtnQkFDRjtnQkFFQSxPQUFPVDtZQUNUO1FBRUE7WUFBUztnQkFDUCxPQUFPcEI7WUFDVDtJQUNGO0FBQ0Y7TUFFQSxXQUFlRCJ9