@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
1 lines • 2.14 kB
Source Map (JSON)
{"version":3,"file":"use-modals-stack.cjs","names":[],"sources":["../../../src/components/Modal/use-modals-stack.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\ninterface ModalStackReturnType<T extends string> {\n state: Record<T, boolean>;\n open: (id: T) => void;\n close: (id: T) => void;\n toggle: (id: T) => void;\n closeAll: () => void;\n register: (id: T) => { opened: boolean; onClose: () => void; stackId: T };\n}\n\nexport function useModalsStack<const T extends string>(modals: T[]): ModalStackReturnType<T> {\n const initialState = modals.reduce(\n (acc, modal) => ({ ...acc, [modal]: false }),\n {} as Record<T, boolean>\n );\n\n const [state, setState] = useState(initialState);\n\n const open = useCallback((modal: T) => {\n setState((current) => ({ ...current, [modal]: true }));\n }, []);\n\n const close = useCallback(\n (modal: T) => setState((current) => ({ ...current, [modal]: false })),\n []\n );\n\n const toggle = useCallback(\n (modal: T) => setState((current) => ({ ...current, [modal]: !current[modal] })),\n []\n );\n\n const closeAll = useCallback(() => setState(initialState), []);\n\n const register = useCallback(\n (modal: T) => ({\n opened: state[modal],\n onClose: () => close(modal),\n stackId: modal,\n }),\n [state]\n );\n\n return { state, open, close, closeAll, toggle, register };\n}\n\nexport const useDrawersStack = useModalsStack;\n"],"mappings":";;;;AAWA,SAAgB,eAAuC,QAAsC;CAC3F,MAAM,eAAe,OAAO,QACzB,KAAK,WAAW;EAAE,GAAG;GAAM,QAAQ;CAAM,IAC1C,CAAC,CACH;CAEA,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,YAAY;CAE/C,MAAM,QAAA,GAAA,MAAA,cAAoB,UAAa;EACrC,UAAU,aAAa;GAAE,GAAG;IAAU,QAAQ;EAAK,EAAE;CACvD,GAAG,CAAC,CAAC;CAEL,MAAM,SAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ;CAAM,EAAE,GACpE,CAAC,CACH;CAEA,MAAM,UAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ,CAAC,QAAQ;CAAO,EAAE,GAC9E,CAAC,CACH;CAaA,OAAO;EAAE;EAAO;EAAM;EAAO,WAAA,GAAA,MAAA,mBAXM,SAAS,YAAY,GAAG,CAAC,CAWxB;EAAG;EAAQ,WAAA,GAAA,MAAA,cAR5C,WAAc;GACb,QAAQ,MAAM;GACd,eAAe,MAAM,KAAK;GAC1B,SAAS;EACX,IACA,CAAC,KAAK,CAG8C;CAAE;AAC1D;AAEA,MAAa,kBAAkB"}