{"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"}