var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
  for (var name in all)
    __defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
  if (from && typeof from === "object" || typeof from === "function") {
    for (let key of __getOwnPropNames(from))
      if (!__hasOwnProp.call(to, key) && key !== except)
        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  }
  return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  // If the importer is in node compatibility mode or this is not an ESM
  // file that has been converted to a CommonJS file using a Babel-
  // compatible transform (i.e. "__esModule" has not been set), then set
  // "default" to the CommonJS "module.exports" for node compatibility.
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);

// src/hooks/useModal.tsx
var useModal_exports = {};
__export(useModal_exports, {
  default: () => useModal_default
});
module.exports = __toCommonJS(useModal_exports);
var import_react = __toESM(require("react"));
var import_materials = require("@pisell/materials");
var useModal = (options = {}) => {
  const { defaultProps = {}, destroyOnClose = true } = options;
  const [visible, setVisible] = (0, import_react.useState)(false);
  const [modalProps, setModalProps] = (0, import_react.useState)({
    open: false,
    ...defaultProps
  });
  const open = (0, import_react.useCallback)((props = {}) => {
    const newProps = {
      ...defaultProps,
      ...props,
      open: true
    };
    setModalProps(newProps);
    setVisible(true);
  }, [defaultProps]);
  const close = (0, import_react.useCallback)(() => {
    setVisible(false);
    setModalProps((prev) => ({
      ...prev,
      open: false
    }));
  }, []);
  const Modal = (0, import_react.useMemo)(() => {
    const ModalComponent = ({
      children,
      title,
      onOk,
      onCancel,
      ...restProps
    }) => {
      const handleCancel = (0, import_react.useCallback)(() => {
        if (onCancel) {
          onCancel();
        } else {
          close();
        }
      }, [onCancel]);
      const handleOk = (0, import_react.useCallback)(() => {
        if (onOk) {
          onOk();
        }
      }, [onOk]);
      const finalProps = {
        ...modalProps,
        ...restProps,
        title: title || modalProps.title,
        open: visible,
        onCancel: handleCancel,
        onOk: handleOk,
        destroyOnClose
      };
      if (!visible && destroyOnClose) {
        return null;
      }
      return /* @__PURE__ */ import_react.default.createElement(
        import_materials.PisellContainer,
        {
          renderType: "modal",
          props: finalProps
        },
        children
      );
    };
    return ModalComponent;
  }, [visible, modalProps, close, destroyOnClose]);
  return {
    visible,
    open,
    close,
    Modal,
    modalProps
  };
};
var useModal_default = useModal;
