{"version":3,"file":"ModalStackItem.mjs","names":[],"sources":["../../src/Modal/ModalStackItem.tsx"],"sourcesContent":["'use client';\n\nimport { memo, useCallback, useMemo } from 'react';\n\nimport { useEventCallback } from '@/hooks/useEventCallback';\n\nimport Modal from './Modal';\nimport { ModalProvider } from './ModalProvider';\nimport type { ImperativeModalProps } from './type';\n\nexport type ModalStackItemProps = {\n  id: string;\n  onClose: (id: string) => void;\n  onDestroy: (id: string) => void;\n  onUpdate: (id: string, nextProps: Partial<ImperativeModalProps>) => void;\n  props: ImperativeModalProps;\n};\n\nconst noop = () => {};\nexport const ModalStackItem = memo(\n  ({ id, props, onClose, onUpdate, onDestroy }: ModalStackItemProps) => {\n    const { afterClose, afterOpenChange, children, onCancel, open, ...rest } = props;\n    const stableAfterClose = useEventCallback(afterClose ?? noop);\n    const stableAfterOpenChange = useEventCallback(afterOpenChange ?? noop);\n    const stableOnCancel = useEventCallback(onCancel ?? noop);\n    const close = useEventCallback(() => onClose(id));\n    const setCanDismissByClickOutside = useEventCallback((value: boolean) =>\n      onUpdate(id, { mask: { closable: value } }),\n    );\n    const stableContextValue = useMemo(\n      () => ({ close, setCanDismissByClickOutside }),\n      [close, setCanDismissByClickOutside],\n    );\n\n    return (\n      <Modal\n        {...rest}\n        open={open ?? true}\n        afterClose={useCallback(() => {\n          stableAfterClose?.();\n          onDestroy(id);\n        }, [stableAfterClose, onDestroy, id])}\n        afterOpenChange={useCallback(\n          (nextOpen: boolean) => {\n            stableAfterOpenChange?.(nextOpen);\n            if (!nextOpen) onDestroy(id);\n          },\n          [stableAfterOpenChange, onDestroy, id],\n        )}\n        onCancel={useCallback(\n          (e: React.MouseEvent<HTMLButtonElement> | React.KeyboardEvent<HTMLElement>) => {\n            stableOnCancel?.(e);\n            close();\n          },\n          [stableOnCancel, close],\n        )}\n      >\n        <ModalProvider value={stableContextValue}>{children}</ModalProvider>\n      </Modal>\n    );\n  },\n);\n\nModalStackItem.displayName = 'ModalStackItem';\n"],"mappings":";;;;;;;AAkBA,MAAM,aAAa,CAAC;AACpB,MAAa,iBAAiB,MAC3B,EAAE,IAAI,OAAO,SAAS,UAAU,gBAAqC;CACpE,MAAM,EAAE,YAAY,iBAAiB,UAAU,UAAU,MAAM,GAAG,SAAS;CAC3E,MAAM,mBAAmB,iBAAiB,cAAc,IAAI;CAC5D,MAAM,wBAAwB,iBAAiB,mBAAmB,IAAI;CACtE,MAAM,iBAAiB,iBAAiB,YAAY,IAAI;CACxD,MAAM,QAAQ,uBAAuB,QAAQ,EAAE,CAAC;CAChD,MAAM,8BAA8B,kBAAkB,UACpD,SAAS,IAAI,EAAE,MAAM,EAAE,UAAU,MAAM,EAAE,CAAC,CAC5C;CACA,MAAM,qBAAqB,eAClB;EAAE;EAAO;CAA4B,IAC5C,CAAC,OAAO,2BAA2B,CACrC;CAEA,OACE,oBAAC,OAAD;EACE,GAAI;EACJ,MAAM,QAAQ;EACd,YAAY,kBAAkB;GAC5B,mBAAmB;GACnB,UAAU,EAAE;EACd,GAAG;GAAC;GAAkB;GAAW;EAAE,CAAC;EACpC,iBAAiB,aACd,aAAsB;GACrB,wBAAwB,QAAQ;GAChC,IAAI,CAAC,UAAU,UAAU,EAAE;EAC7B,GACA;GAAC;GAAuB;GAAW;EAAE,CACvC;EACA,UAAU,aACP,MAA8E;GAC7E,iBAAiB,CAAC;GAClB,MAAM;EACR,GACA,CAAC,gBAAgB,KAAK,CACxB;YAEA,oBAAC,eAAD;GAAe,OAAO;GAAqB;EAAwB,CAAA;CAC9D,CAAA;AAEX,CACF;AAEA,eAAe,cAAc"}