UNPKG

@wener/console

Version:
284 lines (283 loc) 10.4 kB
function _array_like_to_array(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } function _array_with_holes(arr) { if (Array.isArray(arr)) return arr; } function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _iterable_to_array_limit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _non_iterable_rest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _object_spread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _define_property(target, key, source[key]); }); } return target; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _object_spread_props(target, source) { source = source != null ? source : {}; if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _object_without_properties(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys, key, i; if (typeof Reflect !== "undefined" && Reflect.ownKeys) { sourceKeys = Reflect.ownKeys(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } target = _object_without_properties_loose(source, excluded); if (Object.getOwnPropertySymbols) { sourceKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _object_without_properties_loose(source, excluded) { if (source == null) return {}; var target = {}, sourceKeys = Object.getOwnPropertyNames(source), key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } return target; } function _sliced_to_array(arr, i) { return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest(); } function _unsupported_iterable_to_array(o, minLen) { if (!o) return; if (typeof o === "string") return _array_like_to_array(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen); } import React, { useEffect, useState } from "react"; import { Promises } from "@wener/utils"; import { DynamicRender } from "./index.js"; export function showPrompt(_0) { var defaultValue = _0.defaultValue, placeholder = _0.placeholder, props = _object_without_properties(_0, [ "defaultValue", "placeholder" ]); var _Promises_withResolvers = Promises.withResolvers(), resolve = _Promises_withResolvers.resolve, promise = _Promises_withResolvers.promise; var valueRef = defaultValue || ""; var handle = showDialog(_object_spread_props(_object_spread({}, props), { content: /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("input", { type: "text", className: "input input-sm input-bordered w-full", onChange: function (e) { valueRef = e.target.value; }, defaultValue: defaultValue, placeholder: placeholder })), action: /*#__PURE__*/ React.createElement("div", { className: "modal-action" }, /*#__PURE__*/ React.createElement("form", { method: "dialog" }, /*#__PURE__*/ React.createElement("button", { className: "btn btn-sm", onClick: function () { resolve(undefined); } }, "\u53D6\u6D88")), /*#__PURE__*/ React.createElement("button", { autoFocus: true, type: "button", className: "btn btn-primary btn-sm", onClick: function () { resolve(valueRef); handle.remove(); } }, "\u786E\u8BA4")) })); return promise; } export function showConfirm(props) { var _Promises_withResolvers = Promises.withResolvers(), resolve = _Promises_withResolvers.resolve, promise = _Promises_withResolvers.promise; var handle = showDialog(_object_spread_props(_object_spread({}, props), { action: /*#__PURE__*/ React.createElement("div", { className: "modal-action" }, /*#__PURE__*/ React.createElement("form", { method: "dialog" }, /*#__PURE__*/ React.createElement("button", { className: "btn btn-sm", onClick: function () { resolve(false); } }, "\u53D6\u6D88")), /*#__PURE__*/ React.createElement("button", { autoFocus: true, type: "button", className: "btn btn-primary btn-sm", onClick: function () { resolve(true); handle.remove(); } }, "\u786E\u8BA4")) })); return promise; } export function showDialog(param) { var title = param.title, description = param.description, content = param.content, renderer = param.renderer, action = param.action; return DynamicRender.render({ renderer: renderer, render: function () { var _DynamicRender_useRenderHandle = DynamicRender.useRenderHandle(), remove = _DynamicRender_useRenderHandle.remove, id = _DynamicRender_useRenderHandle.id; var _useState = _sliced_to_array(useState(), 2), dialogRef = _useState[0], setRef = _useState[1]; var ref = dialogRef; useEffect(function () { if (!ref) return; if (!ref.open) { ref.showModal(); } ref.addEventListener("close", remove); return function () { ref.removeEventListener("close", remove); }; }, [ ref ]); return /*#__PURE__*/ React.createElement(DynamicDialog, { id: id, ref: setRef, title: title, description: description, content: content, action: action }); } }); } var DynamicDialog = function (_0) { var title = _0.title, description = _0.description, content = _0.content, children = _0.children, action = _0.action, props = _object_without_properties(_0, [ "title", "description", "content", "children", "action" ]); return /*#__PURE__*/ React.createElement("dialog", _object_spread({ className: "modal" }, props), /*#__PURE__*/ React.createElement("div", { className: "modal-box" }, title && /*#__PURE__*/ React.createElement("h3", { className: "text-lg font-bold" }, title), description && /*#__PURE__*/ React.createElement("p", { className: "py-4" }, description), content, action !== null && action !== void 0 ? action : /*#__PURE__*/ React.createElement("div", { className: "modal-action" }, /*#__PURE__*/ React.createElement("form", { method: "dialog" }, /*#__PURE__*/ React.createElement("button", { className: "btn btn-sm" }, "\u5173\u95ED")))), /*#__PURE__*/ React.createElement("form", { method: "dialog", className: "modal-backdrop" }, /*#__PURE__*/ React.createElement("button", null, "close"))); };