Files
klz-cables.com/.pnpm-store/v10/files/55/18deb6615f77b6a1b07cd0b72c0054af3c71dca5e108b8d233c9d6b2cd9b1e0432b86c1735492b91e5ce240c824205bbb53b39e63da4615e8c4a5b0b310939
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

71 lines
2.7 KiB
Plaintext

export const reducer = (state, action) => {
let newState = Object.assign({}, state);
const { type, payload, } = action;
switch (type) {
case 'UPDATE_MODAL': {
const { slug, } = payload;
if (slug) {
newState[slug] = Object.assign(Object.assign({}, newState[slug]), payload);
}
break;
}
case 'OPEN_MODAL': {
const { slug, } = payload;
if (slug) {
const isCurrentlyOpen = slug in newState && newState[slug].isOpen;
if (!isCurrentlyOpen) {
newState[slug] = Object.assign(Object.assign({}, newState[slug]), { slug, openedOn: Date.now(), isOpen: true });
}
}
break;
}
case 'TOGGLE_MODAL': {
const { slug, } = payload;
if (slug) {
const isCurrentlyOpen = slug in newState && newState[slug].isOpen;
newState[slug] = Object.assign(Object.assign({}, newState[slug]), { slug, openedOn: !isCurrentlyOpen ? Date.now() : undefined, isOpen: !isCurrentlyOpen });
}
break;
}
case 'CLOSE_MODAL': {
const { slug, } = payload;
if (slug) {
newState[slug] = Object.assign(Object.assign({}, newState[slug]), { slug, openedOn: undefined, isOpen: false });
}
break;
}
case 'REMOVE_MODAL': {
const { slug, } = payload;
if (slug && slug in newState) {
delete newState[slug];
}
break;
}
case 'CLOSE_LATEST_MODAL': {
const latestModal = Object.keys(newState)
.reduce((acc, slug) => {
const modal = newState[slug];
if (modal.isOpen && typeof modal.openedOn === 'number' && (!acc || (typeof acc.openedOn === 'number' && modal.openedOn > acc.openedOn))) {
return modal;
}
return acc;
}, undefined);
if (latestModal) {
newState[latestModal.slug] = Object.assign(Object.assign({}, newState[latestModal.slug]), { isOpen: false, openedOn: undefined });
}
break;
}
case 'CLOSE_ALL_MODALS': {
newState = Object.entries((newState)).reduce((acc, [key, value]) => {
acc[key] = Object.assign(Object.assign({}, value), { isOpen: false, openedOn: undefined });
return acc;
}, {});
break;
}
default: {
break;
}
}
return newState;
};
//# sourceMappingURL=reducer.js.map