1575 lines
		
	
	
		
			57 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1575 lines
		
	
	
		
			57 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var Lt = Object.defineProperty;
 | |
| var kt = (e, t, n) => t in e ? Lt(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
 | |
| var N = (e, t, n) => (kt(e, typeof t != "symbol" ? t + "" : t, n), n), Be = (e, t, n) => {
 | |
|   if (!t.has(e))
 | |
|     throw TypeError("Cannot " + n);
 | |
| };
 | |
| var f = (e, t, n) => (Be(e, t, "read from private field"), n ? n.call(e) : t.get(e)), F = (e, t, n) => {
 | |
|   if (t.has(e))
 | |
|     throw TypeError("Cannot add the same private member more than once");
 | |
|   t instanceof WeakSet ? t.add(e) : t.set(e, n);
 | |
| }, G = (e, t, n, s) => (Be(e, t, "write to private field"), s ? s.call(e, n) : t.set(e, n), n);
 | |
| var Fe = (e, t, n, s) => ({
 | |
|   set _(r) {
 | |
|     G(e, t, r, n);
 | |
|   },
 | |
|   get _() {
 | |
|     return f(e, t, s);
 | |
|   }
 | |
| });
 | |
| import m from "lodash";
 | |
| import Ce from "axios";
 | |
| import y, { useMemo as q, useEffect as C, useRef as j, useState as R, useCallback as oe, useContext as st } from "react";
 | |
| import xe from "ff-request";
 | |
| import Nt from "https://assets.fsdpf.net/js/esm/spark-md5@3_0_2.min.js?url";
 | |
| import { jsx as h, jsxs as P, Fragment as Wt } from "react/jsx-runtime";
 | |
| import { QuestionOutlined as Zt, LoadingOutlined as Et, createFromIconfontCN as Tt } from "@ant-design/icons";
 | |
| import $ from "classnames";
 | |
| import { notification as rt, Drawer as wt, Modal as Gt, Form as de, ConfigProvider as Ot, Popconfirm as $t, Tooltip as It, Button as Re, Popover as ot } from "antd";
 | |
| import { P as W } from "./vender-B-S-5jfg.js";
 | |
| import Ve, { Field as it, FieldContext as Pt } from "rc-field-form";
 | |
| import { flushSync as jt } from "react-dom";
 | |
| import { useParams as at, generatePath as zt, createBrowserRouter as Ut } from "react-router-dom";
 | |
| const lt = ({ type: e, className: t, ...n }) => {
 | |
|   if (!(e != null && e.startsWith("icon-")))
 | |
|     return /* @__PURE__ */ h(Zt, {});
 | |
|   if (e === "icon-loading")
 | |
|     return /* @__PURE__ */ h(Et, { className: t, ...n });
 | |
|   const s = q(() => Tt({ scriptUrl: ie.get("Common.ICONFONT", []) }), [ie.get("Common.ICONFONT")]);
 | |
|   return /* @__PURE__ */ h(s, { type: e, className: $("iconfont", t), ...n });
 | |
| }, Xt = ({ className: e, title: t, content: n, icon: s, $close: r, category: o, duration: i = 4.5 }) => {
 | |
|   const [a, c] = rt.useNotification();
 | |
|   return C(() => {
 | |
|     a[o || "open"]({
 | |
|       className: e,
 | |
|       message: t,
 | |
|       description: n,
 | |
|       icon: s,
 | |
|       duration: i,
 | |
|       onClose: () => r(!1)
 | |
|     });
 | |
|   }, [t, n, s]), c;
 | |
| }, Dt = ({ className: e, title: t, content: n, okText: s, $close: r, duration: o = 5e3 }) => {
 | |
|   var l;
 | |
|   const i = j(), [a, c] = R();
 | |
|   return C(() => (a > 0 && (i.current = setTimeout(() => {
 | |
|     a <= 1 ? r() : c((d) => d - 1);
 | |
|   }, 1e3)), () => clearTimeout(i.current)), [a]), C(() => {
 | |
|     c(Math.max(Math.ceil(o / 1e3), 0));
 | |
|   }, [o]), /* @__PURE__ */ h("div", { className: $("ff-toast-confirm", e), onClick: (d) => d.mpEvent.currentTarget.id === d.mpEvent.target.id && r(), children: /* @__PURE__ */ P("div", { className: "ff-toast-confirm-container", children: [
 | |
|     /* @__PURE__ */ h("div", { className: "ff-toast-confirm-title", children: t }),
 | |
|     /* @__PURE__ */ h("div", { className: "ff-toast-confirm-content", children: n }),
 | |
|     /* @__PURE__ */ P("div", { className: "ff-toast-confirm-operations", children: [
 | |
|       /* @__PURE__ */ P("div", { className: "ff-toast-confirm-cancel", onClick: () => r(!1), children: [
 | |
|         "取消 (",
 | |
|         a,
 | |
|         ")"
 | |
|       ] }),
 | |
|       y.isValidElement(s) ? y.cloneElement(s, {
 | |
|         onClick: () => r(!0),
 | |
|         className: $("ff-toast-confirm-ok", (l = s.props) == null ? void 0 : l.className)
 | |
|       }) : /* @__PURE__ */ h("div", { className: "ff-toast-confirm-ok", onClick: () => r(!0), children: s || "确定" })
 | |
|     ] })
 | |
|   ] }) });
 | |
| }, ae = y.createContext({
 | |
|   ele: {},
 | |
|   mount: () => {
 | |
|   },
 | |
|   unmount: () => {
 | |
|   }
 | |
| }), x = ({ className: e, rootClassName: t, children: n, actions: s, title: r, subTitle: o, extras: i }) => {
 | |
|   const { mount: a, unmount: c } = y.useContext(ae);
 | |
|   return C(() => (a("className", t), () => c("className")), [t]), s && x.Action({ children: s }), r && x.Title({ children: r }), o && x.SubTitle({ children: o }), i && x.Extra({ children: i }), /* @__PURE__ */ h("div", { className: $("ff-container", e), children: n });
 | |
| }, je = (e) => ({ children: t, className: n }) => {
 | |
|   const { mount: s, unmount: r } = y.useContext(ae);
 | |
|   return C(() => (s(e, y.createElement("div", {
 | |
|     key: `ff-${e}`,
 | |
|     className: $(`ff-toast-${e}`, n)
 | |
|   }, t)), () => r(e)), [n, t]), null;
 | |
| };
 | |
| x.Action = je("actions");
 | |
| x.Title = je("title");
 | |
| x.SubTitle = je("sub-title");
 | |
| x.Extra = je("extras");
 | |
| const Yn = ({ name: e }) => {
 | |
|   const { ele: t } = y.useContext(ae);
 | |
|   return t == null ? void 0 : t[e];
 | |
| };
 | |
| x.propTypes = {
 | |
|   // root className
 | |
|   rootClassName: W.string,
 | |
|   // 容器 className
 | |
|   className: W.string,
 | |
|   // 标题占位符
 | |
|   title: W.any,
 | |
|   // 副标题占位符
 | |
|   subTitle: W.any,
 | |
|   // 操作按钮占位符
 | |
|   actions: W.any,
 | |
|   // 扩展安装占位符
 | |
|   extras: W.any
 | |
| };
 | |
| const St = y.forwardRef(({ $close: e, children: t, className: n, title: s, ...r }, o) => {
 | |
|   const i = j(), [a, c] = R(!0), [l, d] = R({}), g = oe((u, b) => d((v) => ({ ...v, [u]: b })), []), p = oe((u) => d((b) => ({ ...b, [u]: void 0 })), []);
 | |
|   return y.useImperativeHandle(o, () => ({
 | |
|     handleClose: (u) => {
 | |
|       i.current = u, c(!1);
 | |
|     }
 | |
|   })), /* @__PURE__ */ h(ae.Provider, { value: { ele: l, mount: g, unmount: p }, children: /* @__PURE__ */ h(
 | |
|     wt,
 | |
|     {
 | |
|       ...r,
 | |
|       title: s || (l == null ? void 0 : l.title),
 | |
|       open: a,
 | |
|       onClose: () => c(!1),
 | |
|       afterOpenChange: (u) => !u && e(i.current),
 | |
|       className: $("ff-toast ff-toast-drawer", n, l == null ? void 0 : l.className),
 | |
|       extra: l == null ? void 0 : l["sub-title"],
 | |
|       classNames: { header: "ff-toast-header", footer: "ff-toast-footer" },
 | |
|       footer: l != null && l.extras || l != null && l.actions ? /* @__PURE__ */ P(y.Fragment, { children: [
 | |
|         (l == null ? void 0 : l.extras) || /* @__PURE__ */ h("div", { className: "ff-toast-extras" }),
 | |
|         (l == null ? void 0 : l.actions) || /* @__PURE__ */ h("div", { className: "ff-toast-actions" })
 | |
|       ] }) : void 0,
 | |
|       children: t
 | |
|     }
 | |
|   ) });
 | |
| }), xt = y.forwardRef(({ $close: e, children: t, className: n, title: s, ...r }, o) => {
 | |
|   const i = j(), [a, c] = R(!0), [l, d] = R({}), g = oe((u, b) => d((v) => ({ ...v, [u]: b })), []), p = oe((u) => d((b) => ({ ...b, [u]: void 0 })), []);
 | |
|   return y.useImperativeHandle(o, () => ({
 | |
|     handleClose: (u) => {
 | |
|       i.current = u, c(!1);
 | |
|     }
 | |
|   })), /* @__PURE__ */ h(ae.Provider, { value: { ele: l, mount: g, unmount: p }, children: /* @__PURE__ */ h(
 | |
|     Gt,
 | |
|     {
 | |
|       ...r,
 | |
|       title: /* @__PURE__ */ P(Wt, { children: [
 | |
|         s || (l == null ? void 0 : l.title),
 | |
|         l == null ? void 0 : l["sub-title"]
 | |
|       ] }),
 | |
|       open: a,
 | |
|       onCancel: () => {
 | |
|         i.current = !1, c(!1);
 | |
|       },
 | |
|       afterOpenChange: (u) => !u && e(i.current),
 | |
|       className: $("ff-toast ff-toast-modal", n, l == null ? void 0 : l.className),
 | |
|       keyboard: !0,
 | |
|       classNames: { header: "ff-toast-header", footer: "ff-toast-footer" },
 | |
|       footer: l != null && l.extras || l != null && l.actions ? /* @__PURE__ */ P(y.Fragment, { children: [
 | |
|         (l == null ? void 0 : l.extras) || /* @__PURE__ */ h("div", { className: "ff-toast-extras" }),
 | |
|         (l == null ? void 0 : l.actions) || /* @__PURE__ */ h("div", { className: "ff-toast-actions" })
 | |
|       ] }) : void 0,
 | |
|       children: t
 | |
|     }
 | |
|   ) });
 | |
| });
 | |
| var we, fe, K, Ge, Oe, $e, Ie, me;
 | |
| const ue = class ue extends y.Component {
 | |
|   constructor(n) {
 | |
|     super(n);
 | |
|     F(this, we, null);
 | |
|     F(this, fe, 0);
 | |
|     F(this, K, /* @__PURE__ */ new Map());
 | |
|     F(this, Ge, (n) => new Promise((s) => {
 | |
|       const r = Fe(this, fe)._++;
 | |
|       f(this, K).set(r, y.createElement(Xt, {
 | |
|         ...n,
 | |
|         key: r,
 | |
|         $close: (o) => f(this, me).call(this, r, () => s(o))
 | |
|       })), this.forceUpdate();
 | |
|     }));
 | |
|     F(this, Oe, (n, s) => new Promise((r) => {
 | |
|       const o = Fe(this, fe)._++;
 | |
|       f(this, K).set(o, y.createElement(Dt, {
 | |
|         ...s,
 | |
|         content: n,
 | |
|         key: o,
 | |
|         $close: (i) => f(this, me).call(this, o, () => r(i))
 | |
|       })), this.forceUpdate();
 | |
|     }));
 | |
|     F(this, $e, (n, s, { mode: r, ...o } = {}) => new Promise((i) => {
 | |
|       const a = Fe(this, fe)._++, c = { current: null };
 | |
|       f(this, K).set(a, y.createElement(
 | |
|         r == "drawer" ? St : xt,
 | |
|         {
 | |
|           ref: c,
 | |
|           key: a,
 | |
|           maskClosable: !1,
 | |
|           ...o,
 | |
|           $close: (l) => f(this, me).call(this, a, () => i(l))
 | |
|         },
 | |
|         y.createElement(n, {
 | |
|           ...s,
 | |
|           $close: (l) => c.current.handleClose(l)
 | |
|         })
 | |
|       )), this.forceUpdate();
 | |
|     }));
 | |
|     F(this, Ie, (n, s) => {
 | |
|     });
 | |
|     F(this, me, (n, s) => {
 | |
|       f(this, K).delete(n), this.forceUpdate(s);
 | |
|     });
 | |
|     ue.modal = f(this, $e), ue.notification = f(this, Ge), ue.confirm = f(this, Oe), ue.form = f(this, Ie);
 | |
|   }
 | |
|   componentWillUnmount() {
 | |
|     var n, s;
 | |
|     (s = (n = f(this, we)) == null ? void 0 : n[1]) == null || s.call(n);
 | |
|   }
 | |
|   render() {
 | |
|     const n = Array.from(f(this, K));
 | |
|     return /* @__PURE__ */ h(ae.Provider, { value: {}, children: n.map(([s, r]) => r) });
 | |
|   }
 | |
| };
 | |
| we = new WeakMap(), fe = new WeakMap(), K = new WeakMap(), Ge = new WeakMap(), Oe = new WeakMap(), $e = new WeakMap(), Ie = new WeakMap(), me = new WeakMap();
 | |
| let Z = ue;
 | |
| Z.notification = ({ title: e, content: t, icon: n, category: s, ...r }) => Promise.resolve(rt[s || "open"]({
 | |
|   ...r,
 | |
|   icon: n ? /* @__PURE__ */ h(lt, { type: n || "" }) : void 0,
 | |
|   message: e,
 | |
|   description: t
 | |
| }));
 | |
| Z.success = (e, t = {}) => Z.notification({ title: e, category: "success", ...t });
 | |
| Z.error = (e, t = {}) => Z.notification({ title: e, category: "error", ...t });
 | |
| Z.confirm = (e, t = {}) => Z.notification({ content: e, ...t });
 | |
| Z.form = (e = {}) => Z.notification(e);
 | |
| Z.modal = (e = {}) => Z.notification(e);
 | |
| const ze = "mine", He = "token", Ht = "web", Yt = 60 * 60 * 24 * 30, Ye = () => {
 | |
|   const e = window.localStorage.getItem(He);
 | |
|   if (!e)
 | |
|     return "";
 | |
|   const t = e.split(".");
 | |
|   if (!Array.isArray(t) || t.length !== 3)
 | |
|     throw "登录令牌无效!";
 | |
|   const { iat: n } = JSON.parse(window.atob(t[1]));
 | |
|   if (Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3) - n > Yt)
 | |
|     throw "登录令牌已过期, 请重新登录!";
 | |
|   return e;
 | |
| }, Jt = () => {
 | |
|   try {
 | |
|     return !!Ye();
 | |
|   } catch {
 | |
|     return !1;
 | |
|   }
 | |
| }, Jn = (e = !0) => {
 | |
|   var t;
 | |
|   try {
 | |
|     const n = Ye();
 | |
|     if (!n)
 | |
|       return Promise.resolve(null);
 | |
|     const { iat: s } = JSON.parse(window.atob((t = n == null ? void 0 : n.split(".")) == null ? void 0 : t[1])), { iat: r, ...o } = L.decode(window.localStorage.getItem(ze) || "", {});
 | |
|     return r === s ? Promise.resolve(o) : L.get("/api/mine-info").then(({ User: i = null }) => (window.localStorage.setItem(ze, L.encode({ ...i, iat: s })), i));
 | |
|   } catch (n) {
 | |
|     console.error(n), e && Z.error("请登录").then(Kt);
 | |
|   }
 | |
|   return Promise.resolve(null);
 | |
| }, Kn = (e, t, n = {}) => L.post("/api/user-token", {
 | |
|   username: e,
 | |
|   passwd: Nt.hash(t),
 | |
|   platform: Ht,
 | |
|   ...n
 | |
| }).then(({ token: s }) => (window.localStorage.setItem(He, s), s)), Kt = () => {
 | |
|   window.localStorage.removeItem(ze), window.localStorage.removeItem(He);
 | |
| };
 | |
| Ce.interceptors.request.use((e) => {
 | |
|   e.headers.Platform = "web", e.headers.SaaS = window.localStorage.getItem("SaaS");
 | |
|   try {
 | |
|     const t = Ye();
 | |
|     e.headers.Authorization = t ? `Bearer ${t} ` : void 0;
 | |
|   } catch {
 | |
|   }
 | |
|   return e;
 | |
| }, (e) => Promise.reject({ code: -1, msg: e }));
 | |
| Ce.interceptors.response.use(({ data: e, headers: t }) => ({ ...e, res: t == null ? void 0 : t.Res }), function(e) {
 | |
|   return Promise.reject(e.message);
 | |
| });
 | |
| window.addEventListener("unhandledrejection", xe.onUnhandledRejection);
 | |
| xe.onToast = (e, t) => Z[[0, 1].includes(e) ? "success" : "error"](t).then(() => e === 20300 && Ae.redirect(ie.get("Common.WEBSITE_LOGIN_PAGE")));
 | |
| const At = y.createContext({
 | |
|   user: {},
 | |
|   initUser: () => {
 | |
|   },
 | |
|   initUserComplete: !1
 | |
| }), ct = y.createContext({
 | |
|   set: () => {
 | |
|   },
 | |
|   get: () => {
 | |
|   },
 | |
|   assign: () => {
 | |
|   },
 | |
|   currentRoute: () => {
 | |
|   }
 | |
| });
 | |
| var he, Le, ge, Y, ne, se;
 | |
| class ut {
 | |
|   constructor(t, n) {
 | |
|     F(this, he, /* @__PURE__ */ new Map());
 | |
|     F(this, Le, !0);
 | |
|     F(this, ge, []);
 | |
|     F(this, Y, void 0);
 | |
|     F(this, ne, () => f(this, Y));
 | |
|     F(this, se, () => Promise.resolve());
 | |
|     N(this, "get", (...t) => new Promise((n, s) => {
 | |
|       const r = JSON.stringify(t);
 | |
|       if (f(this, he).has(r))
 | |
|         return n(f(this, se).call(this, f(this, Y), ...t));
 | |
|       if (f(this, Y) === void 0)
 | |
|         f(this, ge).push([t, n, s]), f(this, Le) && (G(this, Le, !1), Promise.resolve(typeof f(this, ne) == "function" ? f(this, ne).call(this) : f(this, ne)).then((o) => G(this, Y, o || null)).finally(() => {
 | |
|           f(this, ge).forEach(([o, i, a]) => {
 | |
|             try {
 | |
|               const c = f(this, se).call(this, f(this, Y), ...o);
 | |
|               f(this, he).set(JSON.stringify(o), c), i(c);
 | |
|             } catch (c) {
 | |
|               a(c);
 | |
|             }
 | |
|           }), f(this, ge).length = 0;
 | |
|         }));
 | |
|       else {
 | |
|         const o = f(this, se).call(this, f(this, Y), ...t);
 | |
|         f(this, he).set(r, o), n(o);
 | |
|       }
 | |
|     }));
 | |
|     G(this, se, n), G(this, ne, t);
 | |
|   }
 | |
| }
 | |
| he = new WeakMap(), Le = new WeakMap(), ge = new WeakMap(), Y = new WeakMap(), ne = new WeakMap(), se = new WeakMap();
 | |
| var A, ke;
 | |
| const U = class U {
 | |
|   constructor() {
 | |
|     F(this, ke, null);
 | |
|     N(this, "init", (t) => G(this, ke, t));
 | |
|     N(this, "get", (t, n) => m.get(f(this, ke), t, n));
 | |
|     if (f(U, A))
 | |
|       return f(U, A);
 | |
|   }
 | |
| };
 | |
| A = new WeakMap(), ke = new WeakMap(), F(U, A, null), N(U, "getInstance", () => (f(U, A) || G(U, A, new U()), f(U, A)));
 | |
| let Ue = U;
 | |
| const ie = Ue.getInstance(), ce = new Worker(new URL("data:text/plain;base64,KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2ltcG9ydFNjcmlwdHMoImh0dHBzOi8vYXNzZXRzLmZzZHBmLm5ldC9qcy91bWQvbG9kYXNoQDRfMTdfMjEubWluLmpzIiwiaHR0cHM6Ly9hc3NldHMuZnNkcGYubmV0L2pzL3VtZC9sb2Rhc2gubWl4aW4uanMiKSxpbXBvcnRTY3JpcHRzKCJodHRwczovL2Fzc2V0cy5mc2RwZi5uZXQvanMvdW1kL21vbWVudEAyXzI5XzQubWluLmpzIiwiaHR0cHM6Ly9hc3NldHMuZnNkcGYubmV0L2pzL3VtZC9tb21lbnQubG9jYWxlLnpoLWNuLmpzIiksbW9tZW50LmxvY2FsZSgiemgtY24iKTtjb25zdCBVdGlsPShlLHMpPT57Y29uc3QgdD1VdGlsLm1zZ19pZCsrO3JldHVybiBuZXcgUHJveHkoKCk9Pnt9LHtnZXQoe3Jvb3Q6YX0sbil7Y29uc3Qgbz1hP2Ake2F9LyR7bn1gOm47cmV0dXJuIGZ1bmN0aW9uKC4uLmkpe3JldHVybiBuZXcgUHJvbWlzZSgocixsKT0+e1V0aWwubVF1ZXVlLnNldCh0LFtyLGxdKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDp0LHRhc2tfaWQ6ZSxzZXNzaW9uOnMsY2F0ZWdvcnk6InV0aWwiLG1ldGhvZDpvLGFyZ3M6aX0pfSl9fSxhcHBseShhLG4sbyl7cmV0dXJuIG5ldyBQcm94eShPYmplY3QuY3JlYXRlKHtyb290Om9bMF18fG51bGx9KSx7Z2V0OnRoaXMuZ2V0fSl9fSl9O1V0aWwubXNnX2lkPTAsVXRpbC5tUXVldWU9bmV3IE1hcCxVdGlsLm1NZXRob2RXb3Jrc3BhY2U9bmV3IE1hcCxzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKHtkYXRhOntpZDplLGRhdGE6cyxlcnJvcjp0LGNhdGVnb3J5OmF9fSl7YT09PSJ1dGlsIiYmKHQhPT1udWxsP1V0aWwubVF1ZXVlLmdldChlKVsxXSh0KTpVdGlsLm1RdWV1ZS5nZXQoZSlbMF0ocyksVXRpbC5tUXVldWUuZ2V0KGUpLFV0aWwubVF1ZXVlLmRlbGV0ZShlKSl9LCExKSxzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh7ZGF0YTp7aWQsbWV0aG9kLGFyZ3MsY2F0ZWdvcnksc2Vzc2lvbixzb3VyY2VVUkx9fSk9PntpZihjYXRlZ29yeSE9PSJldmFsIilyZXR1cm47c2Vzc2lvbiYmIVV0aWwubU1ldGhvZFdvcmtzcGFjZS5oYXMoc2Vzc2lvbikmJlV0aWwubU1ldGhvZFdvcmtzcGFjZS5zZXQoc2Vzc2lvbix7fSk7Y29uc3QgZXZhbERhdGFTb3VyY2VVUkw9c291cmNlVVJMP2AKLy8jIHNvdXJjZVVSTD1mZjovLy8uLyR7c291cmNlVVJMfWA6IiIsZXZhbERhdGE9ZXZhbChgKGFzeW5jIGZ1bmN0aW9uKHske09iamVjdC5rZXlzKGFyZ3MpLmpvaW4oIiwgIil9fSwgVXRpbCl7JHttZXRob2R9Cn0pJHtldmFsRGF0YVNvdXJjZVVSTH1gKS5jYWxsKHNlc3Npb24/VXRpbC5tTWV0aG9kV29ya3NwYWNlLmdldChzZXNzaW9uKTp7fSxhcmdzLFV0aWwoaWQsc2Vzc2lvbikpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZXZhbERhdGEpLnRoZW4oZT0+e3NlbGYucG9zdE1lc3NhZ2Uoe2lkLHNlc3Npb24sY2F0ZWdvcnksZGF0YTplLGVycm9yOm51bGx9KX0pLmNhdGNoKGU9PntzZWxmLnBvc3RNZXNzYWdlKHtpZCxzZXNzaW9uLGNhdGVnb3J5LGRhdGE6bnVsbCxlcnJvcjplIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZlLm5hbWU9PT0iRGF0YUNsb25lRXJyb3IiPyJEYXRhQ2xvbmVFcnJvciDov5Tlm57nu5Pmnpzlj6rog73kuLrnroDljZXmlbDmja7moLzlvI8iOmV9KX0pfSksc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoe2RhdGE6e2NhdGVnb3J5OmUsc2Vzc2lvbjpzfX0pPT57ZT09PSJjbGVhciImJlV0aWwubU1ldGhvZFdvcmtzcGFjZS5kZWxldGUocyl9LCExKX0pKCk7Cg==", self.location)), Qe = {
 | |
|   getConfigure: (e) => ie.get(e)
 | |
| };
 | |
| var Pe, pe, M;
 | |
| const k = class k {
 | |
|   constructor() {
 | |
|     N(this, "exec", (t, n = {}, s = {}, r = "") => new Promise((o, i) => {
 | |
|       const a = Fe(k, Pe)._++;
 | |
|       f(k, pe).set(a, s), k.mQueue.set(a, [o, i]), ce.postMessage({ id: a, session: r, category: "eval", method: t, args: n });
 | |
|     }));
 | |
|     N(this, "clear", (t) => ce.postMessage({ session: t, category: "clear" }));
 | |
|     if (f(k, M))
 | |
|       return f(k, M);
 | |
|     Promise.resolve().then(() => Zn).then((t) => {
 | |
|       Qe.http = t.http;
 | |
|     }), ce.addEventListener("message", ({ data: { id: t, task_id: n, method: s, args: r, category: o, data: i, error: a, session: c } }) => {
 | |
|       if (o === "eval" && k.mQueue.has(t))
 | |
|         a !== null ? k.mQueue.get(t)[1](a) : k.mQueue.get(t)[0](i), f(k, pe).delete(t), k.mQueue.delete(t);
 | |
|       else if (o === "util")
 | |
|         try {
 | |
|           const l = m.get(Qe, s.split("/")) || m.get(f(k, pe).get(n), s.split("/"));
 | |
|           if (!m.isFunction(l))
 | |
|             throw `${s} not found`;
 | |
|           Promise.resolve(Reflect.apply(l, void 0, r)).then((d) => {
 | |
|             ce.postMessage({ id: t, task_id: n, category: o, method: s, args: r, session: c, data: d, error: null });
 | |
|           }).catch((d) => {
 | |
|             ce.postMessage({ id: t, task_id: n, category: o, method: s, args: r, session: c, data: null, error: d });
 | |
|           });
 | |
|         } catch (l) {
 | |
|           ce.postMessage({ id: t, task_id: n, category: o, method: s, args: r, session: c, data: null, error: l });
 | |
|         }
 | |
|     }, !1);
 | |
|   }
 | |
| };
 | |
| Pe = new WeakMap(), pe = new WeakMap(), M = new WeakMap(), N(k, "mQueue", /* @__PURE__ */ new Map()), F(k, Pe, 0), F(k, pe, /* @__PURE__ */ new Map()), F(k, M, null), N(k, "getInstance", () => (f(k, M) || G(k, M, new k()), f(k, M)));
 | |
| let Xe = k;
 | |
| const _ = Xe.getInstance();
 | |
| var B, S;
 | |
| const X = class X {
 | |
|   constructor() {
 | |
|     F(this, S, /* @__PURE__ */ new Map());
 | |
|     N(this, "setVendor", (t, n) => f(this, S).set(t, new ut(n, (s, r) => s.dynamicRequireFsdpfComponent(r))));
 | |
|     N(this, "getWidgetComponent", async (t) => {
 | |
|       if (!t)
 | |
|         throw "getWidgetComponent widget is required";
 | |
|       const [, n] = t == null ? void 0 : t.split("@app/"), [, s] = t == null ? void 0 : t.split("@pkg/"), [, r] = t == null ? void 0 : t.split("@fsdpf/");
 | |
|       try {
 | |
|         switch (!0) {
 | |
|           case (!!n && f(this, S).has("pkg")):
 | |
|             return await f(this, S).get("pkg").get(n);
 | |
|           case (!!s && f(this, S).has("pkg")):
 | |
|             return await f(this, S).get("pkg").get(s);
 | |
|           case (!!r && f(this, S).has("pkg")):
 | |
|             return await f(this, S).get("pkg").get(r);
 | |
|         }
 | |
|       } catch (o) {
 | |
|         throw o;
 | |
|       }
 | |
|     });
 | |
|     if (f(X, B))
 | |
|       return f(X, B);
 | |
|   }
 | |
| };
 | |
| B = new WeakMap(), S = new WeakMap(), F(X, B, null), N(X, "getInstance", () => (f(X, B) || G(X, B, new X()), f(X, B)));
 | |
| let De = X;
 | |
| const H = De.getInstance(), Mt = () => "Table", dt = () => {
 | |
|   const e = j(!0), [t, n] = R(0);
 | |
|   return C(() => () => e.current = !1, []), () => e.current && jt(() => {
 | |
|     n(t + 1);
 | |
|   });
 | |
| }, An = ({ value: e, defaultValue: t, onChange: n }) => {
 | |
|   const s = dt(), r = j(e !== void 0 ? e : t);
 | |
|   e !== void 0 && (r.current = e);
 | |
|   const o = oe(m.debounce((i) => {
 | |
|     e === void 0 && (r.current = i, s()), n && n(i);
 | |
|   }, 380, { leading: !0, trailing: !1 }), [e]);
 | |
|   return [r.current, o];
 | |
| }, qe = (e) => {
 | |
|   const t = j();
 | |
|   return C(() => {
 | |
|     t.current = e;
 | |
|   }), t.current;
 | |
| }, Mn = (e) => {
 | |
|   const t = j(), [n, s] = R(e);
 | |
|   return C(() => {
 | |
|     m.isFunction(t.current) && t.current(n);
 | |
|   }, [n]), [n, function(r, o) {
 | |
|     t.current = o, s(r);
 | |
|   }];
 | |
| }, Je = (e = y.EffectCallback, t, n = m.isEqual) => {
 | |
|   const s = y.useRef(t);
 | |
|   (!s.current || !n(t, s.current)) && (s.current = t), y.useEffect(e, [s.current]);
 | |
| }, ft = (e, t = "string") => {
 | |
|   var n;
 | |
|   if (!Array.isArray(e))
 | |
|     return e;
 | |
|   for (let s = 0; s < e.length; s++)
 | |
|     e[s].value = m.toPrimitive((n = e[s]) == null ? void 0 : n.value, t), e[s] && Reflect.has(e[s], "children") && (e[s].children = ft(e[s].children, t));
 | |
|   return e;
 | |
| }, Bn = (e, t = "json", n = "string", s, r = null) => {
 | |
|   const [o] = Ve.useForm(s), [i, a] = R([{ label: "无", value: "", disabled: !0 }]), c = j([]), l = Ve.useWatch((d) => c.current.length === 0 ? null : m.pick(d, c.current), o) || null;
 | |
|   return C(() => {
 | |
|     Array.isArray(e) ? a(e) : t === "javascript" && e ? _.exec(e, {}, {
 | |
|       getFieldValue: (d) => (c.current.includes(d) || c.current.push(d), o.getFieldValue(d)),
 | |
|       getFieldValueForBasicForm: (d) => (c.current.includes(d) || c.current.push(d), r ? r.getFieldValue(d) : o.getFieldValue(d))
 | |
|     }).then((d) => {
 | |
|       a(m.toPrimitive(d, "array"));
 | |
|     }) : e && a(m.toPrimitive(e, "array"));
 | |
|   }, [e, t, l]), ft(i, n);
 | |
| }, Bt = (e) => {
 | |
|   const [t, n] = y.useState({ gridItems: [], hideItems: [] });
 | |
|   return y.useEffect(() => {
 | |
|     e && L.get(`/api/_/${e}`).then(({
 | |
|       pk: s,
 | |
|       uuid: r,
 | |
|       code: o,
 | |
|       resource: i,
 | |
|       align: a,
 | |
|       listenChangeFields: c,
 | |
|       listenChangeFieldsFunc: l,
 | |
|       fields: d
 | |
|     }) => ({
 | |
|       pk: s,
 | |
|       uuid: r,
 | |
|       code: o,
 | |
|       resource: i,
 | |
|       align: a,
 | |
|       listenChangeFields: c,
 | |
|       listenChangeFieldsFunc: l,
 | |
|       ...d.reduce((g, p) => {
 | |
|         var u;
 | |
|         return (u = p == null ? void 0 : p.field) != null && u.hidden ? g.hides.push(p == null ? void 0 : p.field) : g.items.push(p), g;
 | |
|       }, { items: [], hides: [] })
 | |
|     })).then(n);
 | |
|   }, [e]), t;
 | |
| }, Qt = ({
 | |
|   max: e = 0,
 | |
|   min: t = 0,
 | |
|   type: n = "",
 | |
|   message: s,
 | |
|   pattern: r,
 | |
|   required: o = !1,
 | |
|   validator: i
 | |
| } = {}, a, c) => {
 | |
|   const [l, d] = R([]);
 | |
|   return C(() => {
 | |
|     const g = [];
 | |
|     if (o) {
 | |
|       let p = c;
 | |
|       switch (c) {
 | |
|         case "number":
 | |
|         case "string":
 | |
|         case "array":
 | |
|           break;
 | |
|         case "bool":
 | |
|           p = "boolean";
 | |
|           break;
 | |
|         case "json":
 | |
|           p = "object";
 | |
|           break;
 | |
|       }
 | |
|       g.push({ type: p, required: !0, whitespace: !0, message: "该项必填" });
 | |
|     }
 | |
|     switch (n) {
 | |
|       case "string":
 | |
|         g.push({
 | |
|           type: n,
 | |
|           max: e,
 | |
|           min: t,
 | |
|           message: s || (t && e ? `字符必须在 ${t} ~ ${e} 之间` : `${e ? "最多能有" : "最少要有"} ${t || e} 个字符`)
 | |
|         });
 | |
|         break;
 | |
|       case "pattern":
 | |
|         g.push({ type: "string", pattern: r, message: s });
 | |
|         break;
 | |
|       case "validator":
 | |
|         i && g.push(({ getFieldValue: p }) => ({
 | |
|           validator: async (u, b) => {
 | |
|             const v = await _.exec(i, { value: b, fieldName: a }, { getFieldValue: p });
 | |
|             return m.isString(v) && v ? Promise.reject(v) : m.isBoolean(v) && !v ? Promise.reject(s) : Promise.resolve();
 | |
|           }
 | |
|         }));
 | |
|         break;
 | |
|     }
 | |
|     d(g);
 | |
|   }, [e, t, n, s, r, o, i]), l;
 | |
| }, qt = (e, t, n) => {
 | |
|   const [s, r] = R(null);
 | |
|   return C(() => {
 | |
|     const {
 | |
|       initDataUri: o = `/api/${e}`,
 | |
|       initDataMethod: i = "GET"
 | |
|     } = n || {};
 | |
|     L.request({
 | |
|       method: i,
 | |
|       url: m.trimEnd(`${o}/${t}`, "/")
 | |
|     }).then((a) => {
 | |
|       r(a);
 | |
|     });
 | |
|   }, [e, t, n]), s;
 | |
| }, _t = (e, t, n, s = {}) => {
 | |
|   const r = dt(), o = j(!0), i = j([]), [a, c] = R(n), l = Ve.useWatch((d) => JSON.stringify(m.pick(d, i.current)), t) || "{}";
 | |
|   return C(() => {
 | |
|     e && _.exec(e, s, {
 | |
|       getFieldValue: m.wrap(t.getFieldValue, (d, g) => (i.current.some((p) => m.isEqual(p, g)) || (i.current.push(g), r()), d(g))),
 | |
|       isFieldTouched: t.isFieldTouched,
 | |
|       isFieldsTouched: t.isFieldsTouched
 | |
|     }).then((d) => o.current && c(d));
 | |
|   }, [e, l, t, s]), C(() => () => o.current = !1, []), a;
 | |
| }, en = (e) => ({
 | |
|   code: t,
 | |
|   layout: n,
 | |
|   name: s,
 | |
|   primaryKey: r = 0,
 | |
|   style: o = {},
 | |
|   formProps: i = {},
 | |
|   form: a,
 | |
|   isPreview: c = !1,
 | |
|   className: l,
 | |
|   onFinish: d,
 | |
|   onValuesChange: g = () => {
 | |
|   },
 | |
|   ...p
 | |
| }) => {
 | |
|   const {
 | |
|     align: u,
 | |
|     autoComplete: b,
 | |
|     resource: v,
 | |
|     items: z,
 | |
|     hides: le,
 | |
|     rowHeight: Ze,
 | |
|     marginX: Ee,
 | |
|     marginY: Te,
 | |
|     listenChangeFields: be,
 | |
|     listenChangeFieldsFunc: T,
 | |
|     pk: ee,
 | |
|     uuid: te
 | |
|   } = Bt(t), [E] = de.useForm(a), J = ({
 | |
|     changedValues: w,
 | |
|     allValues: O,
 | |
|     listenChangeFields: Vt,
 | |
|     listenChangeFieldsFunc: Me,
 | |
|     onValuesChange: En,
 | |
|     code: Tn
 | |
|   }) => {
 | |
|     Me && Array.isArray(Vt) && _.exec(
 | |
|       Me,
 | |
|       { changedValues: w, allValues: O },
 | |
|       {
 | |
|         getFieldValue: E.getFieldValue,
 | |
|         setFieldsValue: E.setFieldsValue,
 | |
|         isFieldTouched: E.isFieldTouched,
 | |
|         isFieldsTouched: E.isFieldsTouched
 | |
|       }
 | |
|     );
 | |
|   }, ve = q(() => [
 | |
|     { name: "__PK__", value: ee },
 | |
|     { name: "__PROPS__", value: i },
 | |
|     { name: "__RESOURCE__", value: v },
 | |
|     { name: "__LAYOUT_KEY__", value: t },
 | |
|     { name: "__LAYOUT_UUID__", value: te },
 | |
|     { name: "__PRIMARY_KEY__", value: r }
 | |
|   ], [ee, t, te, v, r, i]);
 | |
|   return /* @__PURE__ */ P(
 | |
|     de,
 | |
|     {
 | |
|       className: l,
 | |
|       requiredMark: !0,
 | |
|       name: s || t,
 | |
|       layout: n || u,
 | |
|       fields: ve,
 | |
|       form: E,
 | |
|       autoComplete: b,
 | |
|       style: { ...o, position: "relative" },
 | |
|       onFinish: d,
 | |
|       onValuesChange: (w, O) => J(
 | |
|         {
 | |
|           changedValues: w,
 | |
|           allValues: O,
 | |
|           listenChangeFields: be,
 | |
|           listenChangeFieldsFunc: T,
 | |
|           onValuesChange: g,
 | |
|           code: t
 | |
|         }
 | |
|       ),
 | |
|       children: [
 | |
|         /* @__PURE__ */ h(
 | |
|           e,
 | |
|           {
 | |
|             ...p,
 | |
|             form: E,
 | |
|             code: t,
 | |
|             fields: z,
 | |
|             rowHeight: Ze,
 | |
|             marginX: Ee,
 | |
|             marginY: Te
 | |
|           }
 | |
|         ),
 | |
|         le == null ? void 0 : le.map((w) => {
 | |
|           var O;
 | |
|           return /* @__PURE__ */ h(it, { name: w.code, children: /* @__PURE__ */ h(
 | |
|             tn,
 | |
|             {
 | |
|               form: E,
 | |
|               name: w.code,
 | |
|               type: w.type,
 | |
|               initialValue: w.initialValue,
 | |
|               initialValueLanguage: (O = w.extras) == null ? void 0 : O.initialValueLanguage
 | |
|             }
 | |
|           ) }, JSON.stringify(w.code));
 | |
|         })
 | |
|       ]
 | |
|     }
 | |
|   );
 | |
| }, tn = ({ type: e, initialValue: t, initialValueLanguage: n, onChange: s, form: r }) => {
 | |
|   const o = _t(
 | |
|     n == "javascript" && t,
 | |
|     r,
 | |
|     n == "javascript" ? void 0 : t,
 | |
|     {}
 | |
|   );
 | |
|   return C(() => {
 | |
|     n == "javascript" ? s(m.toPrimitive(o, e)) : s(m.toPrimitive(t, e));
 | |
|   }, [e, t, o]), null;
 | |
| }, nn = (e) => function({ code: n, data: s, ...r }) {
 | |
|   const [o, i] = R({
 | |
|     resource: null,
 | |
|     cols: 12,
 | |
|     rowHeight: 21,
 | |
|     fields: []
 | |
|   });
 | |
|   return C(() => {
 | |
|     n && L.get(`/api/_/${n}`).then((a) => i(m.pick(a, ["resource", "cols", "rowHeight", "fields"])));
 | |
|   }, [n]), (o == null ? void 0 : o.resource) && /* @__PURE__ */ h(
 | |
|     e,
 | |
|     {
 | |
|       ...r,
 | |
|       rowHeight: o.rowHeight,
 | |
|       cols: o.cols,
 | |
|       fields: o.fields,
 | |
|       data: o != null && o.resource ? { [o == null ? void 0 : o.resource]: s } : {}
 | |
|     }
 | |
|   );
 | |
| }, mt = (e, {
 | |
|   initialValue: t,
 | |
|   initialValueLanguage: n,
 | |
|   convertJs: s,
 | |
|   convertJsSetting: r,
 | |
|   type: o = "string"
 | |
| }, i = null) => {
 | |
|   const a = j(!1), c = st(Pt), [l, d] = R(), [g, p] = R(n == "javascript" || !e ? void 0 : c.getFieldValue(e));
 | |
|   return C(() => {
 | |
|     n == "javascript" && t ? _.exec(t, {}, {
 | |
|       getFieldValueForBasicForm: (u) => i ? i.getFieldValue(u) : c.getFieldValue(u),
 | |
|       getFieldValue: (u) => c.getFieldValue(u)
 | |
|     }).then((u) => p(m.toPrimitive(u, o))).catch((u) => notification.error({ message: `布局数据错误: ${JSON.stringify(u)}` })).finally(() => a.current = !0) : (t && p(m.toPrimitive(t || c.getFieldValue(e) || t, o)), a.current = !0);
 | |
|   }, [t, n]), Je(() => {
 | |
|     a.current && s && H.getWidgetComponent(s).then(({ default: u }) => u({ value: g, record: c.getFieldsValue(!0), $setting: r })).then(d).catch((u) => console.error("布局数据转换错误: ", u, s));
 | |
|   }, [g, s, r]), [l || g, g];
 | |
| }, sn = (e, t, n, s, r, o) => {
 | |
|   const i = {
 | |
|     "--grid-layout-h": `${s}`,
 | |
|     "--grid-layout-w": `${n}`,
 | |
|     "--grid-layout-x": `${e}`,
 | |
|     "--grid-layout-y": `${t}`,
 | |
|     "--grid-layout-row-height-offset": "0px"
 | |
|   };
 | |
|   return r != null && r.autoHeight ? i.height = "fit-content" : i["--grid-layout-row"] = `${s}`, i["--grid-layout-box-margin"] = _e(r == null ? void 0 : r.marginTop, r == null ? void 0 : r.marginRight, r == null ? void 0 : r.marginBottom, r == null ? void 0 : r.marginLeft), i["--grid-layout-box-padding"] = _e(r == null ? void 0 : r.paddingTop, r == null ? void 0 : r.paddingRight, r == null ? void 0 : r.paddingBottom, r == null ? void 0 : r.paddingLeft), o && (i.height = `${o}px`), i;
 | |
| }, _e = (e, t, n, s) => `${e || 0}px ${t || 0}px ${n || 0}px ${s || 0}px`, ht = ({ cols: e, rowHeight: t, fields: n, data: s, containerPadding: r = [0, 0], itemMargin: o = [4, 0], formProps: i = {}, className: a, ...c }) => {
 | |
|   const [l] = Ve.useForm(), d = gt(n, on, "@pkg/grid-layouts"), g = q(() => [
 | |
|     { name: "__PROPS__", value: i }
 | |
|   ], [i]);
 | |
|   return Je(() => {
 | |
|     l.setFieldsValue(s);
 | |
|   }, [s]), /* @__PURE__ */ h(Ve, { fields: g, form: l, component: !1, children: /* @__PURE__ */ h(
 | |
|     "div",
 | |
|     {
 | |
|       ...c,
 | |
|       className: $("ff-grid-layout", a),
 | |
|       style: {
 | |
|         "--grid-layout-item-margin-y": `${(o == null ? void 0 : o[0]) || 0}px`,
 | |
|         "--grid-layout-item-margin-x": `${(o == null ? void 0 : o[1]) || 0}px`,
 | |
|         "--grid-layout-container-padding-y": `${(r == null ? void 0 : r[0]) || 0}px`,
 | |
|         "--grid-layout-container-padding-x": `${(r == null ? void 0 : r[1]) || 0}px`,
 | |
|         "--grid-layout-cols": e || 12,
 | |
|         "--grid-layout-row-height": `${t || 21}px`
 | |
|       },
 | |
|       children: d
 | |
|     }
 | |
|   ) });
 | |
| }, gt = (e, t, n = "@pkg/grid-layouts", s = null) => q(() => {
 | |
|   var r;
 | |
|   return (r = m.sortBy(e, ["y", "x"])) == null ? void 0 : r.map(
 | |
|     ({ i: o, x: i, y: a, w: c, h: l, field: { boxStyle: d, widgetPrefix: g = n, widget: p, ...u } }, b) => /* @__PURE__ */ h(
 | |
|       "div",
 | |
|       {
 | |
|         className: "grid-layout-item",
 | |
|         style: sn(i, a, c, l, d, p === "Height" && (u == null ? void 0 : u.initialValue)),
 | |
|         children: /* @__PURE__ */ h(
 | |
|           rn,
 | |
|           {
 | |
|             ...u,
 | |
|             basicForm: s,
 | |
|             itemWidget: p != null && p.startsWith("@") ? p : `${g}/${p}`,
 | |
|             itemWidgetRender: t
 | |
|           }
 | |
|         )
 | |
|       },
 | |
|       o || b
 | |
|     )
 | |
|   );
 | |
| }, [e]), rn = ({ itemWidget: e, itemWidgetRender: t, basicForm: n, ...s }) => {
 | |
|   const [r, o] = R();
 | |
|   return C(() => {
 | |
|     H.getWidgetComponent(e).then(({ defaultProps: i, default: a }) => {
 | |
|       o(y.createElement(t(a, i, n), s));
 | |
|     }).catch((i) => o(e));
 | |
|   }, [e]), r;
 | |
| }, on = (e, t, n = null) => (s) => {
 | |
|   const {
 | |
|     code: r,
 | |
|     label: o,
 | |
|     extras: i,
 | |
|     isVirtual: a,
 | |
|     initialValue: c,
 | |
|     initialValueLanguage: l,
 | |
|     convertJs: d,
 | |
|     convertJsSetting: g,
 | |
|     ...p
 | |
|   } = m.merge({}, t, s), [u, b] = mt(a ? null : r, {
 | |
|     initialValue: c,
 | |
|     initialValueLanguage: l,
 | |
|     convertJs: d,
 | |
|     convertJsSetting: g,
 | |
|     type: (p == null ? void 0 : p.type) || "string"
 | |
|   }, n);
 | |
|   return /* @__PURE__ */ h(e, { ...p, value: u, rawValue: b, $setting: i || {} });
 | |
| }, Qn = nn(ht), pt = ({ widget: e, widgetPrefix: t, widgetDecorator: n, subWidgets: s, basicForm: r, ...o }) => {
 | |
|   const i = e != null && e.startsWith("@") ? e : `${t}/${e}`, [a, c] = R();
 | |
|   return C(() => {
 | |
|     i && H.getWidgetComponent(i).then(({ defaultProps: l, default: d }) => ({
 | |
|       default: yt(d, l, r)
 | |
|     })).catch((l) => ({ default: () => `${l}` })).then((l) => c(y.createElement(l.default, o)));
 | |
|   }, [i]), a && y.cloneElement(a, o);
 | |
| };
 | |
| pt.defaultProps = {
 | |
|   widgetPrefix: "@pkg/grid-layout-forms",
 | |
|   widget: "Input"
 | |
| };
 | |
| const yt = (e, t, n = null) => (s) => {
 | |
|   const {
 | |
|     type: r,
 | |
|     code: o,
 | |
|     label: i,
 | |
|     noStyle: a,
 | |
|     placeholder: c,
 | |
|     extras: l,
 | |
|     validators: d,
 | |
|     help: g,
 | |
|     isVirtual: p,
 | |
|     initialValue: u,
 | |
|     initialValueLanguage: b,
 | |
|     convertJs: v,
 | |
|     convertJsSetting: z,
 | |
|     widgetPerfix: le,
 | |
|     boxStyle: Ze,
 | |
|     widgetDecorator: Ee,
 | |
|     subWidgets: Te,
 | |
|     ...be
 | |
|   } = { ...t, ...s }, T = Qt(d || {}, o, r), ee = {
 | |
|     label: i,
 | |
|     noStyle: a,
 | |
|     colon: !1
 | |
|   }, te = {
 | |
|     placeholder: c,
 | |
|     ...be
 | |
|   };
 | |
|   return /* @__PURE__ */ h(
 | |
|     it,
 | |
|     {
 | |
|       name: o,
 | |
|       rules: T,
 | |
|       normalize: (E) => E == null ? void 0 : m.toPrimitive(E, r),
 | |
|       children: (E, J, ve) => {
 | |
|         var w;
 | |
|         return /* @__PURE__ */ h(
 | |
|           e,
 | |
|           {
 | |
|             type: r,
 | |
|             rcform: ve,
 | |
|             itemProps: {
 | |
|               validateStatus: J.errors.length > 0 ? "error" : "success",
 | |
|               tooltip: g,
 | |
|               help: J.errors.length > 0 ? J.errors.join("、") : null,
 | |
|               required: ((w = T == null ? void 0 : T[0]) == null ? void 0 : w.required) || !1,
 | |
|               ...ee
 | |
|             },
 | |
|             fieldProps: { ...te, ...E },
 | |
|             $setting: l || {}
 | |
|           }
 | |
|         );
 | |
|       }
 | |
|     }
 | |
|   );
 | |
| }, Ke = ({ cols: e, rowHeight: t, itemMargin: n = [8, 8], containerPadding: s = [0, 0], fields: r }) => {
 | |
|   const o = gt(r, yt, "@pkg/grid-layout-forms");
 | |
|   return /* @__PURE__ */ h(Ot, { theme: { components: { Form: { itemMarginBottom: 0 } } }, children: /* @__PURE__ */ h("div", { className: "ff-grid-layout-form", style: {
 | |
|     "--grid-layout-item-margin-x": `${(n == null ? void 0 : n[0]) || 0}px`,
 | |
|     "--grid-layout-item-margin-y": `${(n == null ? void 0 : n[1]) || 0}px`,
 | |
|     "--grid-layout-container-padding-y": `${(s == null ? void 0 : s[0]) || 0}px`,
 | |
|     "--grid-layout-container-padding-x": `${(s == null ? void 0 : s[1]) || 0}px`,
 | |
|     "--grid-layout-cols": e || 24,
 | |
|     "--grid-layout-row-height": `${t || 16}px`
 | |
|   }, children: o }) });
 | |
| };
 | |
| Ke.propTypes = {
 | |
|   fields: W.array.isRequired
 | |
| };
 | |
| Ke.defaultProps = {
 | |
|   fields: []
 | |
| };
 | |
| const an = en(Ke), bt = ({ children: e }) => {
 | |
|   const [t, n] = R({}), s = oe((o, i) => n((a) => ({ ...a, [o]: i })), []), r = oe((o) => n((i) => ({ ...i, [o]: void 0 })), []);
 | |
|   return /* @__PURE__ */ h(ae.Provider, { value: { ele: t, mount: s, unmount: r }, children: e });
 | |
| };
 | |
| bt.defaultProps = {
 | |
|   isDrawerRender: !1
 | |
| };
 | |
| bt.propTypes = {
 | |
|   isDrawerRender: W.bool
 | |
| };
 | |
| const ln = (e = {}, t = {}, n = {}, s = "") => m.deepSome(e, (r, o) => o === "type" && r === "code") ? vt(e, t, n, s) : Ft(e, t, n, s), vt = async (e = {}, t = {}, n = {}, s = "") => {
 | |
|   let r = /* @__PURE__ */ Object.create(null);
 | |
|   for (let o in e)
 | |
|     if (Reflect.has(e[o], "type") && ["code", "field", "router", "query", "string"].includes(e[o].type)) {
 | |
|       const { type: i, value: a = "", default: c = s } = e[o];
 | |
|       switch (i) {
 | |
|         case "code":
 | |
|           r[o] = await _.exec(a, n, {}) || c;
 | |
|           break;
 | |
|         case "field":
 | |
|           r[o] = m.get(n, a, c);
 | |
|           break;
 | |
|         case "router":
 | |
|           r[o] = t[a] || c;
 | |
|           break;
 | |
|         case "query":
 | |
|           r[o] = m.get(t.$query, o) || c;
 | |
|           break;
 | |
|         case "string":
 | |
|           r[o] = a || c;
 | |
|       }
 | |
|     } else
 | |
|       r[o] = await vt(e[o], t, n, s);
 | |
|   return r;
 | |
| }, Ft = (e = {}, t = {}, n = {}, s = "") => Object.keys(e || {}).reduce((r, o) => {
 | |
|   if (m.isPlainObject(e[o]))
 | |
|     if (Reflect.has(e[o], "type") && ["field", "router", "query", "string"].includes(e[o].type)) {
 | |
|       const { type: i, value: a = "", default: c = s } = e[o];
 | |
|       switch (i) {
 | |
|         case "field":
 | |
|           r[o] = m.get(n, a, c);
 | |
|           break;
 | |
|         case "router":
 | |
|           r[o] = t[a] || c;
 | |
|           break;
 | |
|         case "query":
 | |
|           r[o] = m.get(t.$query, o) || c;
 | |
|           break;
 | |
|         case "string":
 | |
|           r[o] = a || c;
 | |
|       }
 | |
|     } else
 | |
|       r[o] = Ft(e[o], t, n, s);
 | |
|   return r;
 | |
| }, {}), cn = (e, t, { isReplaceRouteHistory: n = !1 } = {}) => Ae.redirect(t, e, { replace: n }), et = (e, t, { status: { loading: n, disabled: s }, setStatus: r }) => {
 | |
|   const o = {
 | |
|     loading: (i) => i === void 0 ? n : r((a) => ({ ...a, loading: i })),
 | |
|     disabled: (i) => i === void 0 ? s : r((a) => ({ ...a, disabled: i }))
 | |
|   };
 | |
|   return m.isFunction(t) ? t.call(null, { ...e, ...o }) : m.isString(t) && t ? _.exec(t, e, o) : null;
 | |
| }, tt = (e, t, n, s) => Z.modal(
 | |
|   t,
 | |
|   { ...e, $setting: n, code: t },
 | |
|   s
 | |
| ), un = (e, t, n, s) => Z.modal(
 | |
|   pn,
 | |
|   { ...e, $setting: n, code: t },
 | |
|   s
 | |
| ), dn = ({
 | |
|   widget: e,
 | |
|   widgetType: t,
 | |
|   widgetData: n,
 | |
|   widgetProps: s,
 | |
|   widgetSetting: r,
 | |
|   widgetContainerProps: o
 | |
| }, { onAfterClick: i, onBeforeClick: a }) => {
 | |
|   let c = at();
 | |
|   st(ct);
 | |
|   const [l, d] = R({ leading: !0, trailing: !1 }), g = q(() => {
 | |
|     switch (t) {
 | |
|       case "redirect":
 | |
|         return m.partialRight(cn, e, r);
 | |
|       case "func":
 | |
|         return m.partialRight(et, (r == null ? void 0 : r.code) || e, { status: l, setStatus: d });
 | |
|       case "fsdpf-component":
 | |
|         return m.partialRight(tt, e, r, o);
 | |
|       case "grid-layout-form":
 | |
|         return m.partialRight(un, e, r, o);
 | |
|       default:
 | |
|         if (Ct(e))
 | |
|           return m.partialRight(tt, e, r, o);
 | |
|         if (m.isFunction(e))
 | |
|           return m.partialRight(et, (r == null ? void 0 : r.code) || e, { status: l, setStatus: d });
 | |
|     }
 | |
|     return (...u) => console.error("useButton unknown widgetType", t, ...u);
 | |
|   }, [e, t]);
 | |
|   return [m.debounce((u) => (a == null || a(u), Promise.resolve(ln(s, c, u)).then((b) => g({ ...n, ...b })).then((b) => i == null ? void 0 : i(b))), 300, { leading: !0, trailing: !1 }), l];
 | |
| }, We = (e) => function({
 | |
|   className: n,
 | |
|   children: s,
 | |
|   name: r,
 | |
|   icon: o,
 | |
|   type: i,
 | |
|   data: a,
 | |
|   noAuthType: c,
 | |
|   onAfterClick: l,
 | |
|   onBeforeClick: d,
 | |
|   loading: g,
 | |
|   disabled: p,
 | |
|   tooltip: u,
 | |
|   popConfirm: b,
 | |
|   widget: v,
 | |
|   widgetType: z,
 | |
|   widgetData: le,
 | |
|   widgetProps: Ze,
 | |
|   widgetSetting: Ee,
 | |
|   widgetContainerProps: Te,
 | |
|   ...be
 | |
| }) {
 | |
|   const T = {
 | |
|     type: "primary",
 | |
|     className: $("ff-button", n)
 | |
|   };
 | |
|   i === "danger" ? T.danger = !0 : i === "default" && (T.type = i), e === "link" || e === "dashed" ? (T.type = e, i === "default" && (T.className = $(T.className, "ff-default"))) : (e === "circle" || e === "round") && (T.shape = e), o && (T.icon = /* @__PURE__ */ h(lt, { type: o }));
 | |
|   const [ee, te] = R(!1), [E, { disabled: J, loading: ve }] = dn({ widget: v, widgetType: z, widgetData: le, widgetProps: Ze, widgetSetting: Ee, widgetContainerProps: Te }, { onAfterClick: l, onBeforeClick: d });
 | |
|   return /* @__PURE__ */ h(
 | |
|     $t,
 | |
|     {
 | |
|       okText: "确定",
 | |
|       cancelText: "取消",
 | |
|       ...b || {},
 | |
|       disabled: J || p,
 | |
|       open: ee,
 | |
|       onOpenChange: (O) => {
 | |
|         if (!O)
 | |
|           return te(O);
 | |
|         b ? te(O) : E(a);
 | |
|       },
 | |
|       onConfirm: () => {
 | |
|         E(a);
 | |
|       },
 | |
|       onClick: (O) => {
 | |
|         O.stopPropagation();
 | |
|       },
 | |
|       children: /* @__PURE__ */ h(It, { ...u, title: ee ? null : u == null ? void 0 : u.title, trigger: ["hover", "click"], children: /* @__PURE__ */ h(
 | |
|         Re,
 | |
|         {
 | |
|           loading: ve || g,
 | |
|           disabled: J || p,
 | |
|           ...T,
 | |
|           ...be,
 | |
|           children: s || r
 | |
|         }
 | |
|       ) })
 | |
|     }
 | |
|   );
 | |
| }, V = We("default"), fn = We("link"), mn = We("circle"), hn = We("round"), gn = We("dashed");
 | |
| V.defaultProps = {
 | |
|   type: "default"
 | |
| };
 | |
| V.propTypes = {
 | |
|   type: W.oneOf(["primary", "default", "danger"]),
 | |
|   name: W.string,
 | |
|   // 按钮名称
 | |
|   icon: W.string,
 | |
|   // 图标
 | |
|   data: W.any,
 | |
|   // onClick 数据源, 会受到 widgetProps 数据结构影响
 | |
|   widget: W.any,
 | |
|   // 组件
 | |
|   widgetType: W.oneOf(["destroy", "redirect", "func", "fsdpf-component", "grid-layout-form", "grid-layout"]),
 | |
|   // 组件类型
 | |
|   widgetData: W.object,
 | |
|   // onClick缺省数据
 | |
|   widgetProps: W.object,
 | |
|   // data 数据结构
 | |
|   widgetSetting: W.object,
 | |
|   // $setting
 | |
|   widgetContainerProps: W.object
 | |
|   // 容器配置
 | |
| };
 | |
| V.Link = fn;
 | |
| V.Link.defaultProps = V.defaultProps;
 | |
| V.Link.propTypes = V.propTypes;
 | |
| V.Circle = mn;
 | |
| V.Circle.defaultProps = V.defaultProps;
 | |
| V.Circle.propTypes = V.propTypes;
 | |
| V.Round = hn;
 | |
| V.Round.defaultProps = V.defaultProps;
 | |
| V.Round.propTypes = V.propTypes;
 | |
| V.Dashed = gn;
 | |
| V.Dashed.defaultProps = V.defaultProps;
 | |
| V.Dashed.propTypes = V.propTypes;
 | |
| const pn = ({ $setting: e, $close: t, extras: n, code: s, primaryKey: r, ...o }) => {
 | |
|   const [i] = de.useForm(), a = qt(s, r, e);
 | |
|   C(() => {
 | |
|     a && i.setFieldsValue(a);
 | |
|   }, [a]);
 | |
|   const c = () => {
 | |
|     const l = i.getFieldValue("__RESOURCE__"), {
 | |
|       initDataUri: d = `/api/${s}`
 | |
|     } = e || {};
 | |
|     i.validateFields(!0).then((g) => l ? m.pick(g, [l]) : g).then((g) => L.post(r ? `${d}/${r}` : `${d}`, g).msg(t)).catch(() => Toast.error("请先完善表单信息", { duration: 2e3 }));
 | |
|   };
 | |
|   return /* @__PURE__ */ h(
 | |
|     x,
 | |
|     {
 | |
|       actions: /* @__PURE__ */ P(y.Fragment, { children: [
 | |
|         /* @__PURE__ */ h(V, { name: "保存", type: "primary", widget: c }),
 | |
|         /* @__PURE__ */ h(V, { name: "取消", widget: () => t(!1) })
 | |
|       ] }),
 | |
|       extras: n,
 | |
|       children: /* @__PURE__ */ h(an, { form: i, code: s, primaryKey: r, ...o })
 | |
|     }
 | |
|   );
 | |
| }, yn = (e, t, n = "children") => {
 | |
|   if (m.isEmpty(e))
 | |
|     return {};
 | |
|   const s = m.find(e, ["value", t]);
 | |
|   if (!m.isEmpty(s))
 | |
|     return s;
 | |
|   const r = e.length;
 | |
|   for (let o = 0; o < r; o++) {
 | |
|     const { [n]: i } = e[o], a = yn(i, t, n);
 | |
|     if (!m.isEmpty(a))
 | |
|       return a;
 | |
|   }
 | |
|   return {};
 | |
| }, bn = ({ listCode: e, className: t, record: n, props: s, children: r, cb: o, ...i }) => {
 | |
|   var d, g;
 | |
|   const [a, c] = R(!1), l = () => {
 | |
|   };
 | |
|   return s != null && s.editableByJs && (s != null && s.uuid) && ((d = l(s.uuid)) != null && d.auth) ? /* @__PURE__ */ h(
 | |
|     ot,
 | |
|     {
 | |
|       overlayClassName: "ff-data-list-editable-popover",
 | |
|       title: s != null && s.title ? `${s == null ? void 0 : s.title} - 编辑` : "编辑",
 | |
|       trigger: ["contextMenu"],
 | |
|       placement: (s == null ? void 0 : s.align) === "right" ? "topRight" : "topLeft",
 | |
|       arrowPointAtCenter: (s == null ? void 0 : s.align) === "center",
 | |
|       open: a,
 | |
|       onOpenChange: c,
 | |
|       overlayStyle: { width: ((g = s == null ? void 0 : s.editableByJsSetting) == null ? void 0 : g.width) || 260 },
 | |
|       content: /* @__PURE__ */ h(vn, { ...s, listCode: e, record: n, onCancel: () => {
 | |
|         c(!1);
 | |
|       }, cb: o }),
 | |
|       children: /* @__PURE__ */ h("td", { className: $(t, "ff-data-list-editable-cell"), children: r, ...i })
 | |
|     }
 | |
|   ) : /* @__PURE__ */ h("td", { className: t, children: r, ...i });
 | |
| }, vn = ({ dataIndex: e, record: t, onCancel: n, uuid: s, title: r, type: o, listCode: i, editableByJs: a, editableByJsSetting: c, cb: l }) => {
 | |
|   const [d] = de.useForm(), g = (c == null ? void 0 : c.primaryKey) || "", p = () => d.validateFields().then(({ value: b }) => {
 | |
|     const v = m.get(t, g.substring(g.indexOf(".") + 1));
 | |
|     if (v)
 | |
|       L.put(`/api/${i}-storeBy-${s}/${v}`, { value: b }).msg(l).then(n);
 | |
|     else
 | |
|       throw "获取更新主键失败!";
 | |
|   }).catch(console.warn), u = () => {
 | |
|     d.setFieldsValue({
 | |
|       value: m.get(t, e),
 | |
|       __PROPS__: JSON.parse(JSON.stringify(t))
 | |
|     });
 | |
|   };
 | |
|   return C(() => {
 | |
|     u();
 | |
|   }, [JSON.stringify(t)]), /* @__PURE__ */ P(de, { form: d, layout: "vertical", children: [
 | |
|     /* @__PURE__ */ h(
 | |
|       pt,
 | |
|       {
 | |
|         label: null,
 | |
|         code: ["value"],
 | |
|         widget: a,
 | |
|         placeholder: r,
 | |
|         ...m.omit(c, ["primaryKey", "width", "height"])
 | |
|       }
 | |
|     ),
 | |
|     /* @__PURE__ */ h(de.Item, { noStyle: !0, name: ["__PROPS__"], children: /* @__PURE__ */ h("div", {}) }),
 | |
|     /* @__PURE__ */ P("div", { className: "fsdpf-editable-popover-footer", children: [
 | |
|       /* @__PURE__ */ h(Re, { size: "small", onClick: u, children: "重置" }),
 | |
|       /* @__PURE__ */ P(Re.Group, { children: [
 | |
|         /* @__PURE__ */ h(Re, { size: "small", onClick: n, children: "取消" }),
 | |
|         /* @__PURE__ */ h(Re, { size: "small", type: "primary", onClick: p, children: "确定" })
 | |
|       ] })
 | |
|     ] })
 | |
|   ] });
 | |
| }, Fn = ({ widget: e, widgetPrefix: t, basicForm: n, ...s }) => {
 | |
|   const r = e != null && e.startsWith("@") ? e : `${t}/${e}`, [o, i] = R();
 | |
|   return C(() => {
 | |
|     r && H.getWidgetComponent(r).then(({ defaultProps: a, default: c }) => ({
 | |
|       default: Rn(c, a, n)
 | |
|     })).catch((a) => ({ default: () => `${a}` })).then((a) => i(y.createElement(a.default, s)));
 | |
|   }, [r]), o;
 | |
| }, Rn = (e, t, n = null) => (s) => {
 | |
|   const {
 | |
|     code: r,
 | |
|     label: o,
 | |
|     extras: i,
 | |
|     isVirtual: a,
 | |
|     initialValue: c,
 | |
|     initialValueLanguage: l,
 | |
|     convertJs: d,
 | |
|     convertJsSetting: g,
 | |
|     value: p,
 | |
|     ...u
 | |
|   } = m.merge({}, t, s), [b, v] = mt(a ? null : r, {
 | |
|     initialValue: c,
 | |
|     initialValueLanguage: l,
 | |
|     convertJs: d,
 | |
|     convertJsSetting: g,
 | |
|     type: (u == null ? void 0 : u.type) || "string"
 | |
|   }, n);
 | |
|   return /* @__PURE__ */ h(e, { ...u, value: b, rawValue: v, $setting: i || {} });
 | |
| };
 | |
| Fn.defaultProps = {
 | |
|   widgetPrefix: "@pkg/grid-layouts"
 | |
| };
 | |
| const Cn = ({ className: e, children: t, itemOperations: n, resource: s, $setting: r }) => /* @__PURE__ */ h("div", { className: $("ff-data-list-grid-layout-items", e), children: y.Children.map(t, (o) => /* @__PURE__ */ h(
 | |
|   Vn,
 | |
|   {
 | |
|     operations: n,
 | |
|     data: s ? { [s]: o.props.data } : o.props.data,
 | |
|     children: o
 | |
|   }
 | |
| )) }), Vn = ({ operations: e, children: t, data: n }) => m.isEmpty(e) ? t : /* @__PURE__ */ h(
 | |
|   ot,
 | |
|   {
 | |
|     destroyTooltipOnHide: !0,
 | |
|     align: { offset: [0, -8] },
 | |
|     zIndex: 100,
 | |
|     mouseLeaveDelay: 0.2,
 | |
|     placement: "topRight",
 | |
|     content: /* @__PURE__ */ h("div", { className: "ff-data-list-item-operations flex-grow-1", children: e == null ? void 0 : e.map(({ isRefresh: s, ...r }) => /* @__PURE__ */ h(
 | |
|       V,
 | |
|       {
 | |
|         ...r,
 | |
|         data: n,
 | |
|         onAfterClick: (o) => console.log("列表按钮回调", o, n)
 | |
|       },
 | |
|       (r == null ? void 0 : r.uuid) || useId()
 | |
|     )) }),
 | |
|     children: t
 | |
|   }
 | |
| ), Ln = ({ theme: e, themeProps: t, itemClassName: n, className: s, dataSource: r, fields: o, itemOperations: i, resource: a, ...c }) => {
 | |
|   const l = q(() => /* @__PURE__ */ h(ht, { ...c, fields: o }), [o, c]), d = q(() => r == null ? void 0 : r.map((u, b) => y.cloneElement(l, { key: b, data: u })), [r, l]), g = q(() => e ? y.lazy(() => H.getWidgetComponent(e).catch((u) => ({ default: () => `${u}` }))) : null, [e]), p = {
 | |
|     $setting: t,
 | |
|     resource: a,
 | |
|     itemOperations: i,
 | |
|     className: s,
 | |
|     itemClassName: n,
 | |
|     children: d
 | |
|   };
 | |
|   return g ? /* @__PURE__ */ h(y.Suspense, { fallback: /* @__PURE__ */ h("div", { style: { width: "100%", height: "100%" } }), children: /* @__PURE__ */ h(g, { ...p }) }) : /* @__PURE__ */ h(Cn, { ...p });
 | |
| }, kn = ({ listCode: e, base62params: t, className: n, theme: s, themeProps: r, itemClassName: o }) => {
 | |
|   const [i, a] = R(), [{
 | |
|     resource: c,
 | |
|     cols: l,
 | |
|     rowHeight: d,
 | |
|     fields: g,
 | |
|     itemOperations: p = [],
 | |
|     marginX: u,
 | |
|     marginY: b
 | |
|   }, v] = R({ marginX: 0, marginY: 0 });
 | |
|   return C(() => {
 | |
|     L.get(`/api/_/${e}/list-grid-layout`).then(v).catch(() => v({}));
 | |
|   }, [e]), C(() => {
 | |
|     L.list(e, t).then(({ dataSource: z }) => {
 | |
|       a(z);
 | |
|     });
 | |
|   }, [t]), /* @__PURE__ */ h(
 | |
|     Ln,
 | |
|     {
 | |
|       className: n,
 | |
|       itemClassName: o,
 | |
|       dataSource: i,
 | |
|       cols: l,
 | |
|       rowHeight: d,
 | |
|       fields: g,
 | |
|       resource: c,
 | |
|       itemOperations: p,
 | |
|       theme: s,
 | |
|       themeProps: r,
 | |
|       itemMargin: [u, b]
 | |
|     }
 | |
|   );
 | |
| }, Nn = (e, t, n, s, r) => {
 | |
|   const o = y.lazy(() => H.getWidgetComponent(e).catch((i) => ({ default: () => `${i}` })));
 | |
|   return /* @__PURE__ */ h(y.Suspense, { children: /* @__PURE__ */ h(
 | |
|     o,
 | |
|     {
 | |
|       value: t,
 | |
|       record: n,
 | |
|       $setting: s,
 | |
|       base62params: r
 | |
|     }
 | |
|   ) }, e);
 | |
| }, qn = (e, t = {}) => (qe(e), qe(t), e == null ? void 0 : e.map(({ widgetByJs: s, widgetByJsSetting: r, ...o }, i) => s && !s.endsWith("/BasicShowFieldData") ? {
 | |
|   ...o,
 | |
|   render: (a, c) => {
 | |
|     const l = Nn(s, a, c, r, t);
 | |
|     return m.isFunction(o == null ? void 0 : o.render) ? o.render(l, a, c) : l;
 | |
|   }
 | |
| } : o)), _n = (e) => {
 | |
|   const [t, n] = R({});
 | |
|   return C(() => {
 | |
|     let s = !1;
 | |
|     return e && L.get(`/api/_/${e}`).then((r) => m.pick(r, [
 | |
|       "uuid",
 | |
|       "name",
 | |
|       "code",
 | |
|       "resource",
 | |
|       "marginX",
 | |
|       "marginY",
 | |
|       "cols",
 | |
|       "rowHeight",
 | |
|       "primaryKey",
 | |
|       "columns",
 | |
|       "itemOperations",
 | |
|       "batchOperations",
 | |
|       "isConditionFormLayout",
 | |
|       "layout",
 | |
|       "tabs",
 | |
|       "pageSize",
 | |
|       "layoutConfig"
 | |
|     ])).then((r) => !s && n(r)), () => s = !0;
 | |
|   }, [e]), t;
 | |
| }, es = (e, t = {}) => {
 | |
|   const [n, s] = R({ dataSource: [] });
 | |
|   return Je(() => {
 | |
|     let r = !1;
 | |
|     return e && L.get(`/api/${e}/${L.encode({ page: 1, ...t })}`).then((o) => !r && s(o)), () => r = !0;
 | |
|   }, [e, t]), n;
 | |
| };
 | |
| Mt.EditableCell = bn;
 | |
| const Wn = ({ component: e }) => {
 | |
|   const [t, n] = R({}), { base62params: s } = at();
 | |
|   return C(() => {
 | |
|     e ? L.get(`/api/_/${e}`).then(n) : n({});
 | |
|   }, [e]), /* @__PURE__ */ h(
 | |
|     kn,
 | |
|     {
 | |
|       listCode: e,
 | |
|       base62params: L.decode(s),
 | |
|       theme: t == null ? void 0 : t.theme,
 | |
|       themeProps: t == null ? void 0 : t.themeConfig
 | |
|     }
 | |
|   );
 | |
| };
 | |
| var Q, I, ye, re, Ne;
 | |
| const D = class D {
 | |
|   constructor() {
 | |
|     F(this, I, /* @__PURE__ */ new Map());
 | |
|     F(this, ye, {});
 | |
|     F(this, re, null);
 | |
|     N(this, "init", (t, n) => {
 | |
|       G(this, I, t), G(this, ye, n);
 | |
|     });
 | |
|     N(this, "get", (t) => (f(this, I).has(t) || (t = Array.from(f(this, I).keys()).find((n) => f(this, I).get(n).uri === t)), f(this, I).get(t) || {}));
 | |
|     N(this, "redirect", (t, n, s = {}) => {
 | |
|       const { uri: r, type: o, widgetProps: i } = this.get(t);
 | |
|       let a = zt(r, o != "list" ? n : m.mapValues(n, (l) => L.encode(l)));
 | |
|       const c = new URLSearchParams();
 | |
|       for (const l in i || {})
 | |
|         (i == null ? void 0 : i.type) == "query" && c.append(l, n[l]);
 | |
|       return c.size > 0 && (a = `${a}?${c.toString()}`), f(this, re).navigate(a, s);
 | |
|     });
 | |
|     /**
 | |
|      *
 | |
|      * @param {*} category // user, system, navigator
 | |
|      * @returns
 | |
|      */
 | |
|     N(this, "getMenus", (t) => {
 | |
|       var n;
 | |
|       return ((n = f(this, ye)) == null ? void 0 : n[t]) || [];
 | |
|     });
 | |
|     N(this, "getCurrentMenu", () => {
 | |
|       var s, r;
 | |
|       const t = getCurrentPages(), n = Object.values(f(this, ye)).flat();
 | |
|       for (let o = t.length - 1; o >= 0; o--)
 | |
|         if ((s = t[o].query) != null && s.c)
 | |
|           return f(this, Ne).call(this, (r = t[o].query) == null ? void 0 : r.c, n);
 | |
|       return null;
 | |
|     });
 | |
|     N(this, "getCurrentRoute", (t = 0) => {
 | |
|       var s;
 | |
|       const n = (s = f(this, re).state.matches[f(this, re).state.matches.length - 1 - t]) == null ? void 0 : s.route;
 | |
|       if (!n)
 | |
|         return null;
 | |
|       for (let [r, o] of f(this, I))
 | |
|         if (o.uri === n.path)
 | |
|           return o;
 | |
|       return null;
 | |
|     });
 | |
|     F(this, Ne, (t, n) => {
 | |
|       var s;
 | |
|       for (const r of n) {
 | |
|         if (r.uuid == t || r.widget == t)
 | |
|           return r;
 | |
|         if ((s = r.children) != null && s.length) {
 | |
|           const o = f(this, Ne).call(this, t, r.children);
 | |
|           if (o)
 | |
|             return o;
 | |
|         }
 | |
|       }
 | |
|       return null;
 | |
|     });
 | |
|     N(this, "createBrowserRouter", (t = {}) => {
 | |
|       if (f(this, I).size == 0)
 | |
|         return null;
 | |
|       const n = ie.get("Common.WEBSITE_DEFAULT_THEME", "@pkg/frameworks/BasicLayout");
 | |
|       ie.get(Jt() ? "Common.WEBSITE_LOGIN_REDIRECT" : "Common.WEBSITE_DEFAULT", "/index");
 | |
|       const s = { [n]: 0 }, r = Array.from(f(this, I).values()).reduce((o, { uuid: i, uri: a, name: c, type: l, component: d, isLogin: g, isLayout: p, extra: u }) => {
 | |
|         let b = {}, v = 0;
 | |
|         switch (l) {
 | |
|           case "list":
 | |
|             b.element = y.createElement(Wn, { component: d });
 | |
|             break;
 | |
|           case "fsdpf-component":
 | |
|             b.lazy = () => H.getWidgetComponent(d).then((z) => ({ Component: z.default }));
 | |
|             break;
 | |
|         }
 | |
|         if (u != null && u.layout)
 | |
|           if (s[u == null ? void 0 : u.layout])
 | |
|             v = s[u == null ? void 0 : u.layout];
 | |
|           else
 | |
|             return s[u == null ? void 0 : u.layout] = o.length, [...o, {
 | |
|               path: "/",
 | |
|               lazy: () => H.getWidgetComponent(u == null ? void 0 : u.layout).then((z) => ({ Component: z.default })),
 | |
|               children: [{ path: a, ...b }]
 | |
|             }];
 | |
|         return p && v > -1 ? (o[v].children.push({ path: a, ...b }), o) : [...o, { path: a, ...b }];
 | |
|       }, [
 | |
|         {
 | |
|           path: "/",
 | |
|           lazy: () => H.getWidgetComponent(n).then((o) => ({ Component: o.default })),
 | |
|           children: []
 | |
|         }
 | |
|       ]);
 | |
|       return G(this, re, Ut(r, t));
 | |
|     });
 | |
|     if (f(D, Q))
 | |
|       return f(D, Q);
 | |
|   }
 | |
| };
 | |
| Q = new WeakMap(), I = new WeakMap(), ye = new WeakMap(), re = new WeakMap(), Ne = new WeakMap(), F(D, Q, null), N(D, "getInstance", () => (f(D, Q) || G(D, Q, new D()), f(D, Q)));
 | |
| let Se = D;
 | |
| const Ae = Se.getInstance(), nt = {
 | |
|   null2json: (e) => null,
 | |
|   null2array: (e) => null,
 | |
|   null2number: (e) => null,
 | |
|   null2bool: (e) => null,
 | |
|   null2string: (e) => null,
 | |
|   null2integer: (e) => null,
 | |
|   null2float: (e) => null,
 | |
|   // null2json: (data) => ({}),
 | |
|   // null2array: (data) => ([]),
 | |
|   // null2number: (data) => 0,
 | |
|   // null2bool: (data) => false,
 | |
|   // null2string: (data) => '',
 | |
|   string2json: (e) => e ? JSON.parse(e) : "{}",
 | |
|   string2array: (e) => e.substr(0, 1) === "[" && e.substr(-1) === "]" ? JSON.parse(e) : e.split(","),
 | |
|   string2number: (e) => e == "" ? null : +e,
 | |
|   string2integer: (e) => e == "" ? null : +e,
 | |
|   string2float: (e) => e == "" ? null : +e,
 | |
|   string2bool: (e) => {
 | |
|     switch (`${e}`.toLowerCase()) {
 | |
|       case "0":
 | |
|       case "false":
 | |
|       case "[]":
 | |
|       case "{}":
 | |
|         return !1;
 | |
|     }
 | |
|     return !!e;
 | |
|   },
 | |
|   string2string: (e) => e,
 | |
|   json2json: (e) => e,
 | |
|   json2array: (e) => e ? Object.values(e) : [],
 | |
|   json2number: (e) => Object.keys(e).length,
 | |
|   json2integer: (e) => Object.keys(e).length,
 | |
|   json2float: (e) => Object.keys(e).length,
 | |
|   json2bool: (e) => Object.keys(e).length > 0,
 | |
|   json2string: (e) => e ? JSON.stringify(e) : "",
 | |
|   array2json: (e) => ({ ...e }),
 | |
|   array2array: (e) => e,
 | |
|   array2number: (e) => e.length,
 | |
|   array2integer: (e) => e.length,
 | |
|   array2float: (e) => e.length,
 | |
|   array2bool: (e) => e.length > 0,
 | |
|   array2string: (e) => JSON.stringify(e),
 | |
|   number2json: (e) => ({}),
 | |
|   number2array: (e) => [e],
 | |
|   number2number: (e) => e,
 | |
|   number2integer: (e) => e,
 | |
|   number2float: (e) => e,
 | |
|   number2bool: (e) => !!e,
 | |
|   number2string: (e) => e.toString(),
 | |
|   boolean2json: (e) => ({}),
 | |
|   boolean2array: (e) => [],
 | |
|   boolean2number: (e) => +e,
 | |
|   boolean2integer: (e) => +e,
 | |
|   boolean2float: (e) => +e,
 | |
|   boolean2bool: (e) => e,
 | |
|   boolean2string: (e) => e ? "true" : "false"
 | |
| };
 | |
| m.mixin({
 | |
|   toPairsDeep: (e, t) => m.flatMap(
 | |
|     m.toPairs(e),
 | |
|     ([n, s]) => m.isObjectLike(s) ? m.toPairsDeep(s, n) : [[`${m.isUndefined(t) ? "" : t + "."}${n}`, s]]
 | |
|   ),
 | |
|   deepSome: (e, t = () => !1) => m.some(e, (n) => {
 | |
|     if (m.some(n, t))
 | |
|       return !0;
 | |
|     if (!m.isEmpty(n) && (m.isPlainObject(n) || m.isArray(n)))
 | |
|       return m.deepSome(n, t);
 | |
|   }),
 | |
|   toPrimitive: (e, t) => {
 | |
|     let n = "string";
 | |
|     Array.isArray(e) ? n = "array" : n = typeof e, m.isObject(e) && (n = "json");
 | |
|     const s = `${n}2${t}`;
 | |
|     return Reflect.has(nt, s) ? nt[s](e) : e;
 | |
|   },
 | |
|   replaceKeys: (e, t) => !e || typeof e != "object" ? e : Array.isArray(e) ? e.map((n) => m.replaceKeys(n, t)) : Object.keys(e).reduce((n, s) => (t[s] ? n[t[s]] = m.replaceKeys(e[s], t) : n[s] = m.replaceKeys(e[s], t), n), {})
 | |
| });
 | |
| let Rt = "";
 | |
| const L = {
 | |
|   init: (e, t, n) => {
 | |
|     Ce.defaults.baseURL = Rt = n, Ce.defaults.timeout = 15e3, Object.assign(L, new xe(e, t, Ce));
 | |
|   }
 | |
| }, Ct = (e) => {
 | |
|   var t;
 | |
|   return e && (e == null ? void 0 : e.name) && ((e == null ? void 0 : e.prototype) instanceof y.Component || (e == null ? void 0 : e.name.substr(0, 1)) === ((t = e.name.substr(0, 1)) == null ? void 0 : t.toUpperCase()));
 | |
| }, Zn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
 | |
|   __proto__: null,
 | |
|   AppGlobalParamsContext: ct,
 | |
|   get AppUrl() {
 | |
|     return Rt;
 | |
|   },
 | |
|   cache: ut,
 | |
|   configure: ie,
 | |
|   core: H,
 | |
|   default: At,
 | |
|   func: _,
 | |
|   http: L,
 | |
|   isReactComponent: Ct,
 | |
|   route: Ae
 | |
| }, Symbol.toStringTag, { value: "Module" })), ts = () => L.get("/api/my-router").then((e) => [
 | |
|   ...e,
 | |
|   { uuid: "data-list-setting", isLayout: !0, uri: "/data-list-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/DataListSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "grid-layout-setting", isLayout: !0, uri: "/grid-layout-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/GridLayoutSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "grid-layout-form-setting", isLayout: !0, uri: "/grid-layout-form-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/GridLayoutFormSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "resource-api-setting", isLayout: !0, uri: "/resource-api-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/ResourceApiSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "charts-setting", isLayout: !0, uri: "/resource-api-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/ChartsSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "fsm-setting", isLayout: !0, uri: "/fsm-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/FsmSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "component-setting", isLayout: !0, uri: "/component-setting/:category/:categoryUuid", type: "fsdpf-component", component: "@pkg/components/ff-design/ComponentSetting", extra: { layout: "@pkg/frameworks/DesignTheme" } },
 | |
|   { uuid: "login", uri: "/login", name: "登录", type: "fsdpf-component", isLogin: !1, component: "@pkg/components/ff/Login" },
 | |
|   { uuid: "not-found", uri: "*", name: "Not Found", type: "fsdpf-component", isLogin: !1, component: "@pkg/components/ff/NotFound" }
 | |
| ].map(({ uuid: t, ...n }) => [t, { uuid: t, ...n }])).then((e) => new Map(e)), ns = () => L.get("/api/my-menu"), ss = () => L.get("api/init-configure"), rs = () => L.get("/api/init-widget-operation-auth"), os = (e) => L.get(`/api/user-wx-phone-number/${e}`);
 | |
| export {
 | |
|   _n as A,
 | |
|   V as B,
 | |
|   es as C,
 | |
|   Ln as D,
 | |
|   Rt as E,
 | |
|   Z as F,
 | |
|   an as G,
 | |
|   L as H,
 | |
|   lt as I,
 | |
|   Ct as J,
 | |
|   At as K,
 | |
|   ct as L,
 | |
|   ut as M,
 | |
|   ie as N,
 | |
|   _ as O,
 | |
|   H as P,
 | |
|   Ae as Q,
 | |
|   ts as R,
 | |
|   ae as S,
 | |
|   Mt as T,
 | |
|   ns as U,
 | |
|   ss as V,
 | |
|   rs as W,
 | |
|   os as X,
 | |
|   Jn as a,
 | |
|   Kt as b,
 | |
|   Jt as c,
 | |
|   An as d,
 | |
|   qe as e,
 | |
|   Mn as f,
 | |
|   Ye as g,
 | |
|   Je as h,
 | |
|   Bn as i,
 | |
|   x as j,
 | |
|   Yn as k,
 | |
|   Kn as l,
 | |
|   bt as m,
 | |
|   dn as n,
 | |
|   Ke as o,
 | |
|   pt as p,
 | |
|   pn as q,
 | |
|   _t as r,
 | |
|   yn as s,
 | |
|   Qn as t,
 | |
|   dt as u,
 | |
|   ht as v,
 | |
|   Fn as w,
 | |
|   kn as x,
 | |
|   Nn as y,
 | |
|   qn as z
 | |
| };
 |