@spartacus/core
Version:
Spartacus - the core framework
45 lines • 9.57 kB
JavaScript
import { loaderReducer } from '../../../state/utils/loader/loader.reducer';
import { serializePageContext } from '../../utils/cms-utils';
import { CmsActions } from '../actions/index';
export const initialState = {
component: undefined,
pageContext: {},
};
function componentExistsReducer(state, action) {
switch (action.type) {
case CmsActions.LOAD_CMS_COMPONENT_FAIL:
return false;
case CmsActions.CMS_GET_COMPONENT_FROM_PAGE:
case CmsActions.LOAD_CMS_COMPONENT_SUCCESS:
return true;
}
return state;
}
export function reducer(state = initialState, action) {
switch (action.type) {
case CmsActions.LOAD_CMS_COMPONENT: {
const pageContextReducer = loaderReducer(action.meta.entityType, componentExistsReducer);
const context = serializePageContext(action.payload.pageContext, true);
return Object.assign(Object.assign({}, state), { pageContext: Object.assign(Object.assign({}, state.pageContext), { [context]: pageContextReducer(state.pageContext[context], action) }) });
}
case CmsActions.LOAD_CMS_COMPONENT_FAIL: {
const pageContextReducer = loaderReducer(action.meta.entityType, componentExistsReducer);
const context = serializePageContext(action.payload.pageContext, true);
return Object.assign(Object.assign({}, state), { pageContext: Object.assign(Object.assign({}, state.pageContext), { [context]: pageContextReducer(state.pageContext[context], action) }) });
}
case CmsActions.LOAD_CMS_COMPONENT_SUCCESS: {
const pageContextReducer = loaderReducer(action.meta.entityType, componentExistsReducer);
const context = serializePageContext(action.payload.pageContext, true);
return Object.assign(Object.assign({}, state), { component: action.payload.component, pageContext: Object.assign(Object.assign({}, state.pageContext), { [context]: pageContextReducer(state.pageContext[context], action) }) });
}
case CmsActions.CMS_GET_COMPONENT_FROM_PAGE: {
const pageContextReducer = loaderReducer(action.meta.entityType, componentExistsReducer);
if (!Array.isArray(action.payload)) {
const context = serializePageContext(action.payload.pageContext, true);
return Object.assign(Object.assign({}, state), { component: action.payload.component, pageContext: Object.assign(Object.assign({}, state.pageContext), { [context]: pageContextReducer(state.pageContext[context], action) }) });
}
}
}
return state;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvY21zL3N0b3JlL3JlZHVjZXJzL2NvbXBvbmVudHMucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzlDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBc0I7SUFDN0MsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQztBQUVGLFNBQVMsc0JBQXNCLENBQzdCLEtBQTBCLEVBQzFCLE1BQXdDO0lBRXhDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLFVBQVUsQ0FBQyx1QkFBdUI7WUFDckMsT0FBTyxLQUFLLENBQUM7UUFFZixLQUFLLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQztRQUM1QyxLQUFLLFVBQVUsQ0FBQywwQkFBMEI7WUFDeEMsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxPQUFPLENBQ3JCLEtBQUssR0FBRyxZQUFZLEVBQ3BCLE1BQXdDO0lBRXhDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLFVBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDdEIsc0JBQXNCLENBQ3ZCLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RSx1Q0FDSyxLQUFLLEtBQ1IsV0FBVyxrQ0FDTixLQUFLLENBQUMsV0FBVyxLQUNwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BRW5FO1NBQ0g7UUFDRCxLQUFLLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDdEIsc0JBQXNCLENBQ3ZCLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RSx1Q0FDSyxLQUFLLEtBQ1IsV0FBVyxrQ0FDTixLQUFLLENBQUMsV0FBVyxLQUNwQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BRW5FO1NBQ0g7UUFDRCxLQUFLLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sa0JBQWtCLEdBQUcsYUFBYSxDQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDdEIsc0JBQXNCLENBQ3ZCLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN2RSx1Q0FDSyxLQUFLLEtBQ1IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBYyxFQUN4QyxXQUFXLGtDQUNOLEtBQUssQ0FBQyxXQUFXLEtBQ3BCLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsT0FFbkU7U0FDSDtRQUNELEtBQUssVUFBVSxDQUFDLDJCQUEyQixDQUFDLENBQUM7WUFDM0MsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUN0QixzQkFBc0IsQ0FDdkIsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbEMsTUFBTSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZFLHVDQUNLLEtBQUssS0FDUixTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFjLEVBQ3hDLFdBQVcsa0NBQ04sS0FBSyxDQUFDLFdBQVcsS0FDcEIsQ0FBQyxPQUFPLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxPQUVuRTthQUNIO1NBQ0Y7S0FDRjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRlclJlZHVjZXIgfSBmcm9tICcuLi8uLi8uLi9zdGF0ZS91dGlscy9sb2FkZXIvbG9hZGVyLnJlZHVjZXInO1xuaW1wb3J0IHsgc2VyaWFsaXplUGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9jbXMtdXRpbHMnO1xuaW1wb3J0IHsgQ21zQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMvaW5kZXgnO1xuaW1wb3J0IHsgQ29tcG9uZW50c0NvbnRleHQgfSBmcm9tICcuLi9jbXMtc3RhdGUnO1xuXG5leHBvcnQgY29uc3QgaW5pdGlhbFN0YXRlOiBDb21wb25lbnRzQ29udGV4dCA9IHtcbiAgY29tcG9uZW50OiB1bmRlZmluZWQsXG4gIHBhZ2VDb250ZXh0OiB7fSxcbn07XG5cbmZ1bmN0aW9uIGNvbXBvbmVudEV4aXN0c1JlZHVjZXI8VD4oXG4gIHN0YXRlOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICBhY3Rpb246IENtc0FjdGlvbnMuQ21zQ29tcG9uZW50QWN0aW9uPFQ+XG4pOiBib29sZWFuIHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgQ21zQWN0aW9ucy5MT0FEX0NNU19DT01QT05FTlRfRkFJTDpcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgQ21zQWN0aW9ucy5DTVNfR0VUX0NPTVBPTkVOVF9GUk9NX1BBR0U6XG4gICAgY2FzZSBDbXNBY3Rpb25zLkxPQURfQ01TX0NPTVBPTkVOVF9TVUNDRVNTOlxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVkdWNlcjxUPihcbiAgc3RhdGUgPSBpbml0aWFsU3RhdGUsXG4gIGFjdGlvbjogQ21zQWN0aW9ucy5DbXNDb21wb25lbnRBY3Rpb248VD5cbik6IENvbXBvbmVudHNDb250ZXh0IHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgQ21zQWN0aW9ucy5MT0FEX0NNU19DT01QT05FTlQ6IHtcbiAgICAgIGNvbnN0IHBhZ2VDb250ZXh0UmVkdWNlciA9IGxvYWRlclJlZHVjZXI8Ym9vbGVhbj4oXG4gICAgICAgIGFjdGlvbi5tZXRhLmVudGl0eVR5cGUsXG4gICAgICAgIGNvbXBvbmVudEV4aXN0c1JlZHVjZXJcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc2VyaWFsaXplUGFnZUNvbnRleHQoYWN0aW9uLnBheWxvYWQucGFnZUNvbnRleHQsIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhZ2VDb250ZXh0OiB7XG4gICAgICAgICAgLi4uc3RhdGUucGFnZUNvbnRleHQsXG4gICAgICAgICAgW2NvbnRleHRdOiBwYWdlQ29udGV4dFJlZHVjZXIoc3RhdGUucGFnZUNvbnRleHRbY29udGV4dF0sIGFjdGlvbiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENtc0FjdGlvbnMuTE9BRF9DTVNfQ09NUE9ORU5UX0ZBSUw6IHtcbiAgICAgIGNvbnN0IHBhZ2VDb250ZXh0UmVkdWNlciA9IGxvYWRlclJlZHVjZXI8Ym9vbGVhbj4oXG4gICAgICAgIGFjdGlvbi5tZXRhLmVudGl0eVR5cGUsXG4gICAgICAgIGNvbXBvbmVudEV4aXN0c1JlZHVjZXJcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc2VyaWFsaXplUGFnZUNvbnRleHQoYWN0aW9uLnBheWxvYWQucGFnZUNvbnRleHQsIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHBhZ2VDb250ZXh0OiB7XG4gICAgICAgICAgLi4uc3RhdGUucGFnZUNvbnRleHQsXG4gICAgICAgICAgW2NvbnRleHRdOiBwYWdlQ29udGV4dFJlZHVjZXIoc3RhdGUucGFnZUNvbnRleHRbY29udGV4dF0sIGFjdGlvbiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENtc0FjdGlvbnMuTE9BRF9DTVNfQ09NUE9ORU5UX1NVQ0NFU1M6IHtcbiAgICAgIGNvbnN0IHBhZ2VDb250ZXh0UmVkdWNlciA9IGxvYWRlclJlZHVjZXI8Ym9vbGVhbj4oXG4gICAgICAgIGFjdGlvbi5tZXRhLmVudGl0eVR5cGUsXG4gICAgICAgIGNvbXBvbmVudEV4aXN0c1JlZHVjZXJcbiAgICAgICk7XG4gICAgICBjb25zdCBjb250ZXh0ID0gc2VyaWFsaXplUGFnZUNvbnRleHQoYWN0aW9uLnBheWxvYWQucGFnZUNvbnRleHQsIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGNvbXBvbmVudDogYWN0aW9uLnBheWxvYWQuY29tcG9uZW50IGFzIFQsXG4gICAgICAgIHBhZ2VDb250ZXh0OiB7XG4gICAgICAgICAgLi4uc3RhdGUucGFnZUNvbnRleHQsXG4gICAgICAgICAgW2NvbnRleHRdOiBwYWdlQ29udGV4dFJlZHVjZXIoc3RhdGUucGFnZUNvbnRleHRbY29udGV4dF0sIGFjdGlvbiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENtc0FjdGlvbnMuQ01TX0dFVF9DT01QT05FTlRfRlJPTV9QQUdFOiB7XG4gICAgICBjb25zdCBwYWdlQ29udGV4dFJlZHVjZXIgPSBsb2FkZXJSZWR1Y2VyPGJvb2xlYW4+KFxuICAgICAgICBhY3Rpb24ubWV0YS5lbnRpdHlUeXBlLFxuICAgICAgICBjb21wb25lbnRFeGlzdHNSZWR1Y2VyXG4gICAgICApO1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvbi5wYXlsb2FkKSkge1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gc2VyaWFsaXplUGFnZUNvbnRleHQoYWN0aW9uLnBheWxvYWQucGFnZUNvbnRleHQsIHRydWUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIGNvbXBvbmVudDogYWN0aW9uLnBheWxvYWQuY29tcG9uZW50IGFzIFQsXG4gICAgICAgICAgcGFnZUNvbnRleHQ6IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnBhZ2VDb250ZXh0LFxuICAgICAgICAgICAgW2NvbnRleHRdOiBwYWdlQ29udGV4dFJlZHVjZXIoc3RhdGUucGFnZUNvbnRleHRbY29udGV4dF0sIGFjdGlvbiksXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0YXRlO1xufVxuIl19