koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.29 kB
Source Map (JSON)
{"version":3,"file":"DialogReducer.cjs","sources":["../../../../src/lib/Dialog/DialogReducer.ts"],"sourcesContent":["import {without} from '@/internal/utils/without.ts';\n\n/**\n * Action names collection\n * @example\n * import { Actions } from './DialogReducer';\n * dispatch({ type: Actions.DIALOG_CLOSE})\n * dispatch({ type: Actions.DIALOG_OPEN})\n * */\nexport enum Actions {\n DIALOG_CLOSE = 'DIALOG_CLOSE',\n DIALOG_OPEN = 'DIALOG_OPEN',\n}\n\n/** Dialog parameters */\nexport type DialogParams = Record<string, unknown>;\n\n/** Dialog ID type */\nexport type Id = string;\n\n/** Dialog state type */\nexport type DialogState = {\n /** List of open modals' IDs */\n open: {id: Id; params?: DialogParams}[];\n};\n\nexport const initialState = {\n open: [],\n} as DialogState;\n\nexport type DialogAction = {\n /** ID of target Dialog */\n id: Id;\n /** Action name */\n type: Actions;\n /** Optional Dialog parameters */\n params?: DialogParams;\n};\n\nexport const DialogReducer = (state = initialState, action: DialogAction): DialogState => {\n switch (action.type) {\n case Actions.DIALOG_CLOSE: {\n const {id} = action;\n const nextOpen = without(({id: dialogId}) => dialogId !== id, state.open);\n return {\n ...state,\n open: nextOpen,\n };\n }\n case Actions.DIALOG_OPEN: {\n const {id, params} = action;\n return {\n ...state,\n open: [...state.open, {id, params}],\n };\n }\n default:\n return state;\n }\n};\n"],"names":["Actions","initialState","DialogReducer","state","action","id","nextOpen","without","dialogId","params"],"mappings":"iJASY,IAAAA,GAAAA,IACRA,EAAA,aAAe,eACfA,EAAA,YAAc,cAFNA,IAAAA,GAAA,CAAA,CAAA,EAiBL,MAAMC,EAAe,CACxB,KAAM,CAAA,CACV,EAWaC,EAAgB,CAACC,EAAQF,EAAcG,IAAsC,CACtF,OAAQA,EAAO,KAAM,CACjB,IAAK,eAAsB,CACjB,KAAA,CAAC,GAAAC,GAAMD,EACPE,EAAWC,UAAQ,CAAC,CAAC,GAAIC,CAAc,IAAAA,IAAaH,EAAIF,EAAM,IAAI,EACjE,MAAA,CACH,GAAGA,EACH,KAAMG,CACV,CAAA,CAEJ,IAAK,cAAqB,CAChB,KAAA,CAAC,GAAAD,EAAI,OAAAI,CAAA,EAAUL,EACd,MAAA,CACH,GAAGD,EACH,KAAM,CAAC,GAAGA,EAAM,KAAM,CAAC,GAAAE,EAAI,OAAAI,CAAO,CAAA,CACtC,CAAA,CAEJ,QACW,OAAAN,CAAA,CAEnB"}