UNPKG

@clayui/modal

Version:
100 lines (99 loc) 3.62 kB
"use strict"; 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); var Provider_exports = {}; __export(Provider_exports, { Context: () => Context, default: () => Provider_default }); module.exports = __toCommonJS(Provider_exports); var import_react = __toESM(require("react")); var import_Modal = __toESM(require("./Modal")); var import_useModal = require("./useModal"); var Action = /* @__PURE__ */ ((Action2) => { Action2["Close"] = "CLOSE"; Action2["Open"] = "OPEN"; return Action2; })(Action || {}); const initialState = { body: /* @__PURE__ */ import_react.default.createElement("div", null), footer: [], onClose: () => { }, visible: false }; function reducer(_state, action) { switch (action.type) { case 1: case "OPEN" /* Open */: return { ...action.payload, visible: true }; case 0: case "CLOSE" /* Close */: return initialState; default: throw new TypeError(); } } const Context = import_react.default.createContext([initialState, () => { }]); function ModalProvider({ children, spritemap }) { const [{ visible, ...otherState }, dispatch] = import_react.default.useReducer( reducer, initialState ); const { observer, onClose } = (0, import_useModal.useModal)({ onClose: () => dispatch({ type: "CLOSE" /* Close */ }) }); const { body, center, footer = [], header, size, status, url } = otherState; const [first, middle, last] = footer; const state = { ...otherState, onClose }; return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, visible && /* @__PURE__ */ import_react.default.createElement( import_Modal.default, { center, observer, size, spritemap, status }, header && /* @__PURE__ */ import_react.default.createElement(import_Modal.default.Header, null, header), /* @__PURE__ */ import_react.default.createElement(import_Modal.default.Body, { url }, body), !!footer.length && /* @__PURE__ */ import_react.default.createElement( import_Modal.default.Footer, { first, last, middle } ) ), /* @__PURE__ */ import_react.default.createElement(Context.Provider, { value: [state, dispatch] }, children)); } var Provider_default = ModalProvider;