{"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;EAAO,GAC3C,EAAE,CACH;CAED,MAAM,CAAC,OAAO,aAAA,GAAA,MAAA,UAAqB,aAAa;CAEhD,MAAM,QAAA,GAAA,MAAA,cAAoB,UAAa;AACrC,YAAU,aAAa;GAAE,GAAG;IAAU,QAAQ;GAAM,EAAE;IACrD,EAAE,CAAC;CAEN,MAAM,SAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ;EAAO,EAAE,EACrE,EAAE,CACH;CAED,MAAM,UAAA,GAAA,MAAA,cACH,UAAa,UAAU,aAAa;EAAE,GAAG;GAAU,QAAQ,CAAC,QAAQ;EAAQ,EAAE,EAC/E,EAAE,CACH;AAaD,QAAO;EAAE;EAAO;EAAM;EAAO,WAAA,GAAA,MAAA,mBAXM,SAAS,aAAa,EAAE,EAAE,CAAC;EAWvB;EAAQ,WAAA,GAAA,MAAA,cAR5C,WAAc;GACb,QAAQ,MAAM;GACd,eAAe,MAAM,MAAM;GAC3B,SAAS;GACV,GACD,CAAC,MAAM,CACR;EAEwD;;AAG3D,MAAa,kBAAkB"}