{"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;AACnB,MAAa,iBAAiB,MAC3B,EAAE,IAAI,OAAO,SAAS,UAAU,gBAAqC;CACpE,MAAM,EAAE,YAAY,iBAAiB,UAAU,UAAU,MAAM,GAAG,SAAS;CAC3E,MAAM,mBAAmB,iBAAiB,cAAc,KAAK;CAC7D,MAAM,wBAAwB,iBAAiB,mBAAmB,KAAK;CACvE,MAAM,iBAAiB,iBAAiB,YAAY,KAAK;CACzD,MAAM,QAAQ,uBAAuB,QAAQ,GAAG,CAAC;CACjD,MAAM,8BAA8B,kBAAkB,UACpD,SAAS,IAAI,EAAE,MAAM,EAAE,UAAU,OAAO,EAAE,CAAC,CAC5C;CACD,MAAM,qBAAqB,eAClB;EAAE;EAAO;EAA6B,GAC7C,CAAC,OAAO,4BAA4B,CACrC;AAED,QACE,oBAAC,OAAD;EACE,GAAI;EACJ,MAAM,QAAQ;EACd,YAAY,kBAAkB;AAC5B,uBAAoB;AACpB,aAAU,GAAG;KACZ;GAAC;GAAkB;GAAW;GAAG,CAAC;EACrC,iBAAiB,aACd,aAAsB;AACrB,2BAAwB,SAAS;AACjC,OAAI,CAAC,SAAU,WAAU,GAAG;KAE9B;GAAC;GAAuB;GAAW;GAAG,CACvC;EACD,UAAU,aACP,MAA8E;AAC7E,oBAAiB,EAAE;AACnB,UAAO;KAET,CAAC,gBAAgB,MAAM,CACxB;YAED,oBAAC,eAAD;GAAe,OAAO;GAAqB;GAAyB,CAAA;EAC9D,CAAA;EAGb;AAED,eAAe,cAAc"}