koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 1.84 kB
Source Map (JSON)
{"version":3,"file":"ToastReducer.cjs","sources":["../../../../src/lib/Toast/ToastReducer.ts"],"sourcesContent":["/**\n * Action names collection\n * @example\n * import { Actions } from './ToastReducer';\n * dispatch({ type: Toast.TOAST_CLOSE})\n * dispatch({ type: Toast.TOAST_OPEN})\n * */\nexport enum Actions {\n TOAST_CLOSE = 'TOAST_CLOSE',\n TOAST_OPEN = 'TOAST_OPEN',\n}\n\n/** Toast ID type */\nexport type Id = string;\n\n/** Toast state type */\nexport type ToastState = {\n /** List of open Toasts' IDs */\n open: Id;\n};\n\nexport const initialState = {\n open: '',\n} as ToastState;\n\nexport type ToastAction = {\n /** ID of target Toast */\n id: Id;\n /** Action name */\n type: Actions;\n};\n\nexport const ToastReducer = (state = initialState, action: ToastAction): ToastState => {\n switch (action.type) {\n case Actions.TOAST_CLOSE: {\n const {id} = action;\n const nextOpen = state.open === id ? '' : state.open;\n return {\n ...state,\n open: nextOpen,\n };\n }\n case Actions.TOAST_OPEN: {\n const {id} = action;\n return {\n ...state,\n open: id,\n };\n }\n default:\n return state;\n }\n};\n"],"names":["Actions","initialState","ToastReducer","state","action","id","nextOpen"],"mappings":"6FAOY,IAAAA,GAAAA,IACRA,EAAA,YAAc,cACdA,EAAA,WAAa,aAFLA,IAAAA,GAAA,CAAA,CAAA,EAcL,MAAMC,EAAe,CACxB,KAAM,EACV,EASaC,EAAe,CAACC,EAAQF,EAAcG,IAAoC,CACnF,OAAQA,EAAO,KAAM,CACjB,IAAK,cAAqB,CAChB,KAAA,CAAC,GAAAC,GAAMD,EACPE,EAAWH,EAAM,OAASE,EAAK,GAAKF,EAAM,KACzC,MAAA,CACH,GAAGA,EACH,KAAMG,CACV,CAAA,CAEJ,IAAK,aAAoB,CACf,KAAA,CAAC,GAAAD,GAAMD,EACN,MAAA,CACH,GAAGD,EACH,KAAME,CACV,CAAA,CAEJ,QACW,OAAAF,CAAA,CAEnB"}