2077 lines
73 KiB
JavaScript
2077 lines
73 KiB
JavaScript
|
var hn = Object.defineProperty;
|
||
|
var gn = (e, t, n) => t in e ? hn(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
|
||
|
var N = (e, t, n) => (gn(e, typeof t != "symbol" ? t + "" : t, n), n), wt = (e, t, n) => {
|
||
|
if (!t.has(e))
|
||
|
throw TypeError("Cannot " + n);
|
||
|
};
|
||
|
var u = (e, t, n) => (wt(e, t, "read from private field"), n ? n.call(e) : t.get(e)), v = (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);
|
||
|
}, S = (e, t, n, s) => (wt(e, t, "write to private field"), s ? s.call(e, n) : t.set(e, n), n);
|
||
|
var Xe = (e, t, n, s) => ({
|
||
|
set _(r) {
|
||
|
S(e, t, r, n);
|
||
|
},
|
||
|
get _() {
|
||
|
return u(e, t, s);
|
||
|
}
|
||
|
});
|
||
|
import d from "lodash";
|
||
|
import je from "axios";
|
||
|
import C, { useMemo as Re, useEffect as V, useRef as j, useState as F, useCallback as ce, useContext as He, useLayoutEffect as pn, useId as mn } from "react";
|
||
|
import bt from "ff-request";
|
||
|
import yn from "https://assets.fsdpf.net/js/esm/spark-md5@3_0_2.min.js?url";
|
||
|
import { jsx as h, jsxs as z, Fragment as bn } from "react/jsx-runtime";
|
||
|
import { QuestionOutlined as Cn, LoadingOutlined as vn, createFromIconfontCN as Rn } from "@ant-design/icons";
|
||
|
import Z from "classnames";
|
||
|
import { P as G } from "./vender-B-S-5jfg.js";
|
||
|
import Be, { Field as zt, FieldContext as Nn } from "rc-field-form";
|
||
|
import { notification as Ot, Drawer as kn, Modal as Fn, Form as ut, ConfigProvider as Ln, Popconfirm as Vn, Tooltip as wn, Button as In, Input as Wn, Breadcrumb as Pn, Tree as Zn, Pagination as En, Table as Tn, Empty as Gn } from "antd";
|
||
|
import { flushSync as Sn } from "react-dom";
|
||
|
import It from "immutability-helper";
|
||
|
import { useParams as zn, generatePath as On, createBrowserRouter as $n } from "react-router-dom";
|
||
|
const Ct = ({ type: e, className: t, ...n }) => {
|
||
|
if (!(e != null && e.startsWith("icon-")))
|
||
|
return /* @__PURE__ */ h(Cn, {});
|
||
|
if (e === "icon-loading")
|
||
|
return /* @__PURE__ */ h(vn, { className: t, ...n });
|
||
|
const s = Re(() => Rn({ scriptUrl: Ze.get("Common.ICONFONT", []) }), [Ze.get("Common.ICONFONT")]);
|
||
|
return /* @__PURE__ */ h(s, { type: e, className: Z("iconfont", t), ...n });
|
||
|
}, Dn = ({ className: e, title: t, content: n, icon: s, $close: r, category: i, duration: o = 4.5 }) => {
|
||
|
const [a, l] = Ot.useNotification();
|
||
|
return V(() => {
|
||
|
a[i || "open"]({
|
||
|
className: e,
|
||
|
message: t,
|
||
|
description: n,
|
||
|
icon: s,
|
||
|
duration: o,
|
||
|
onClose: () => r(!1)
|
||
|
});
|
||
|
}, [t, n, s]), l;
|
||
|
}, Un = ({ className: e, title: t, content: n, okText: s, $close: r, duration: i = 5e3 }) => {
|
||
|
var c;
|
||
|
const o = j(), [a, l] = F();
|
||
|
return V(() => (a > 0 && (o.current = setTimeout(() => {
|
||
|
a <= 1 ? r() : l((f) => f - 1);
|
||
|
}, 1e3)), () => clearTimeout(o.current)), [a]), V(() => {
|
||
|
l(Math.max(Math.ceil(i / 1e3), 0));
|
||
|
}, [i]), /* @__PURE__ */ h("div", { className: Z("ff-toast-confirm", e), onClick: (f) => f.mpEvent.currentTarget.id === f.mpEvent.target.id && r(), children: /* @__PURE__ */ z("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__ */ z("div", { className: "ff-toast-confirm-operations", children: [
|
||
|
/* @__PURE__ */ z("div", { className: "ff-toast-confirm-cancel", onClick: () => r(!1), children: [
|
||
|
"取消 (",
|
||
|
a,
|
||
|
")"
|
||
|
] }),
|
||
|
C.isValidElement(s) ? C.cloneElement(s, {
|
||
|
onClick: () => r(!0),
|
||
|
className: Z("ff-toast-confirm-ok", (c = s.props) == null ? void 0 : c.className)
|
||
|
}) : /* @__PURE__ */ h("div", { className: "ff-toast-confirm-ok", onClick: () => r(!0), children: s || "确定" })
|
||
|
] })
|
||
|
] }) });
|
||
|
}, Ee = C.createContext({
|
||
|
ele: {},
|
||
|
mount: () => {
|
||
|
},
|
||
|
unmount: () => {
|
||
|
}
|
||
|
}), J = ({ className: e, rootClassName: t, children: n, actions: s, title: r, subTitle: i, extras: o }) => {
|
||
|
const { mount: a, unmount: l } = C.useContext(Ee);
|
||
|
return V(() => (a("className", t), () => l("className")), [t]), s && J.Action({ children: s }), r && J.Title({ children: r }), i && J.SubTitle({ children: i }), o && J.Extra({ children: o }), /* @__PURE__ */ h("div", { className: Z("ff-container", e), children: n });
|
||
|
}, it = (e) => ({ children: t, className: n }) => {
|
||
|
const { mount: s, unmount: r } = C.useContext(Ee);
|
||
|
return V(() => (s(e, C.createElement("div", {
|
||
|
key: `ff-${e}`,
|
||
|
className: Z(`ff-toast-${e}`, n)
|
||
|
}, t)), () => r(e)), [n, t]), null;
|
||
|
};
|
||
|
J.Action = it("actions");
|
||
|
J.Title = it("title");
|
||
|
J.SubTitle = it("sub-title");
|
||
|
J.Extra = it("extras");
|
||
|
const Ys = ({ name: e }) => {
|
||
|
const { ele: t } = C.useContext(Ee);
|
||
|
return t == null ? void 0 : t[e];
|
||
|
};
|
||
|
J.propTypes = {
|
||
|
// root className
|
||
|
rootClassName: G.string,
|
||
|
// 容器 className
|
||
|
className: G.string,
|
||
|
// 标题占位符
|
||
|
title: G.any,
|
||
|
// 副标题占位符
|
||
|
subTitle: G.any,
|
||
|
// 操作按钮占位符
|
||
|
actions: G.any,
|
||
|
// 扩展安装占位符
|
||
|
extras: G.any
|
||
|
};
|
||
|
const xn = C.forwardRef(({ $close: e, children: t, className: n, title: s, ...r }, i) => {
|
||
|
const o = j(), [a, l] = F(!0), [c, f] = F({}), p = ce((g, y) => f((b) => ({ ...b, [g]: y })), []), m = ce((g) => f((y) => ({ ...y, [g]: void 0 })), []);
|
||
|
return C.useImperativeHandle(i, () => ({
|
||
|
handleClose: (g) => {
|
||
|
o.current = g, l(!1);
|
||
|
}
|
||
|
})), /* @__PURE__ */ h(Ee.Provider, { value: { ele: c, mount: p, unmount: m }, children: /* @__PURE__ */ h(
|
||
|
kn,
|
||
|
{
|
||
|
...r,
|
||
|
title: s || (c == null ? void 0 : c.title),
|
||
|
open: a,
|
||
|
onClose: () => l(!1),
|
||
|
afterOpenChange: (g) => !g && e(o.current),
|
||
|
className: Z("ff-toast ff-toast-drawer", n, c == null ? void 0 : c.className),
|
||
|
extra: c == null ? void 0 : c["sub-title"],
|
||
|
classNames: { header: "ff-toast-header", footer: "ff-toast-footer" },
|
||
|
footer: c != null && c.extras || c != null && c.actions ? /* @__PURE__ */ z(C.Fragment, { children: [
|
||
|
(c == null ? void 0 : c.extras) || /* @__PURE__ */ h("div", { className: "ff-toast-extras" }),
|
||
|
(c == null ? void 0 : c.actions) || /* @__PURE__ */ h("div", { className: "ff-toast-actions" })
|
||
|
] }) : void 0,
|
||
|
children: t
|
||
|
}
|
||
|
) });
|
||
|
}), Xn = C.forwardRef(({ $close: e, children: t, className: n, title: s, ...r }, i) => {
|
||
|
const o = j(), [a, l] = F(!0), [c, f] = F({}), p = ce((g, y) => f((b) => ({ ...b, [g]: y })), []), m = ce((g) => f((y) => ({ ...y, [g]: void 0 })), []);
|
||
|
return C.useImperativeHandle(i, () => ({
|
||
|
handleClose: (g) => {
|
||
|
o.current = g, l(!1);
|
||
|
}
|
||
|
})), /* @__PURE__ */ h(Ee.Provider, { value: { ele: c, mount: p, unmount: m }, children: /* @__PURE__ */ h(
|
||
|
Fn,
|
||
|
{
|
||
|
...r,
|
||
|
title: /* @__PURE__ */ z(bn, { children: [
|
||
|
s || (c == null ? void 0 : c.title),
|
||
|
c == null ? void 0 : c["sub-title"]
|
||
|
] }),
|
||
|
open: a,
|
||
|
onCancel: () => {
|
||
|
o.current = !1, l(!1);
|
||
|
},
|
||
|
afterOpenChange: (g) => !g && e(o.current),
|
||
|
className: Z("ff-toast ff-toast-modal", n, c == null ? void 0 : c.className),
|
||
|
keyboard: !0,
|
||
|
classNames: { header: "ff-toast-header", footer: "ff-toast-footer" },
|
||
|
footer: c != null && c.extras || c != null && c.actions ? /* @__PURE__ */ z(C.Fragment, { children: [
|
||
|
(c == null ? void 0 : c.extras) || /* @__PURE__ */ h("div", { className: "ff-toast-extras" }),
|
||
|
(c == null ? void 0 : c.actions) || /* @__PURE__ */ h("div", { className: "ff-toast-actions" })
|
||
|
] }) : null,
|
||
|
children: t
|
||
|
}
|
||
|
) });
|
||
|
});
|
||
|
var qe, Se, de, _e, et, tt, nt, ze;
|
||
|
const Ge = class Ge extends C.Component {
|
||
|
constructor(n) {
|
||
|
super(n);
|
||
|
v(this, qe, null);
|
||
|
v(this, Se, 0);
|
||
|
v(this, de, /* @__PURE__ */ new Map());
|
||
|
v(this, _e, (n) => new Promise((s) => {
|
||
|
const r = Xe(this, Se)._++;
|
||
|
u(this, de).set(r, C.createElement(Dn, {
|
||
|
...n,
|
||
|
key: r,
|
||
|
$close: (i) => u(this, ze).call(this, r, () => s(i))
|
||
|
})), this.forceUpdate();
|
||
|
}));
|
||
|
v(this, et, (n, s) => new Promise((r) => {
|
||
|
const i = Xe(this, Se)._++;
|
||
|
u(this, de).set(i, C.createElement(Un, {
|
||
|
...s,
|
||
|
content: n,
|
||
|
key: i,
|
||
|
$close: (o) => u(this, ze).call(this, i, () => r(o))
|
||
|
})), this.forceUpdate();
|
||
|
}));
|
||
|
v(this, tt, (n, s, { mode: r, ...i } = {}) => new Promise((o) => {
|
||
|
const a = Xe(this, Se)._++, l = { current: null };
|
||
|
u(this, de).set(a, C.createElement(
|
||
|
r == "drawer" ? xn : Xn,
|
||
|
{
|
||
|
ref: l,
|
||
|
key: a,
|
||
|
maskClosable: !1,
|
||
|
...i,
|
||
|
$close: (c) => u(this, ze).call(this, a, () => o(c))
|
||
|
},
|
||
|
C.createElement(n, {
|
||
|
...s,
|
||
|
$close: (c) => l.current.handleClose(c)
|
||
|
})
|
||
|
)), this.forceUpdate();
|
||
|
}));
|
||
|
v(this, nt, (n, s) => {
|
||
|
});
|
||
|
v(this, ze, (n, s) => {
|
||
|
u(this, de).delete(n), this.forceUpdate(s);
|
||
|
});
|
||
|
Ge.modal = u(this, tt), Ge.notification = u(this, _e), Ge.confirm = u(this, et), Ge.form = u(this, nt);
|
||
|
}
|
||
|
componentWillUnmount() {
|
||
|
var n, s;
|
||
|
(s = (n = u(this, qe)) == null ? void 0 : n[1]) == null || s.call(n);
|
||
|
}
|
||
|
render() {
|
||
|
const n = Array.from(u(this, de));
|
||
|
return /* @__PURE__ */ h(Ee.Provider, { value: {}, children: n.map(([s, r]) => r) });
|
||
|
}
|
||
|
};
|
||
|
qe = new WeakMap(), Se = new WeakMap(), de = new WeakMap(), _e = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), nt = new WeakMap(), ze = new WeakMap();
|
||
|
let w = Ge;
|
||
|
w.notification = ({ title: e, content: t, icon: n, category: s, ...r }) => Promise.resolve(Ot[s || "open"]({
|
||
|
...r,
|
||
|
icon: n ? /* @__PURE__ */ h(Ct, { type: n || "" }) : void 0,
|
||
|
message: e,
|
||
|
description: t
|
||
|
}));
|
||
|
w.success = (e, t = {}) => w.notification({ title: e, category: "success", ...t });
|
||
|
w.error = (e, t = {}) => w.notification({ title: e, category: "error", ...t });
|
||
|
w.confirm = (e, t = {}) => w.notification({ content: e, ...t });
|
||
|
w.form = (e = {}) => w.notification(e);
|
||
|
w.modal = (e = {}) => w.notification(e);
|
||
|
const dt = "mine", vt = "token", jn = "web", Hn = 60 * 60 * 24 * 30, Rt = () => {
|
||
|
const e = window.localStorage.getItem(vt);
|
||
|
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 > Hn)
|
||
|
throw "登录令牌已过期, 请重新登录!";
|
||
|
return e;
|
||
|
}, Bn = () => {
|
||
|
try {
|
||
|
return !!Rt();
|
||
|
} catch {
|
||
|
return !1;
|
||
|
}
|
||
|
}, As = (e = !0) => {
|
||
|
var t;
|
||
|
try {
|
||
|
const n = Rt();
|
||
|
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, ...i } = L.decode(window.localStorage.getItem(dt) || "", {});
|
||
|
return r === s ? Promise.resolve(i) : L.get("/api/mine-info").then(({ User: o = null }) => (window.localStorage.setItem(dt, L.encode({ ...o, iat: s })), o));
|
||
|
} catch (n) {
|
||
|
console.error(n), e && w.error("请登录").then(Kn);
|
||
|
}
|
||
|
return Promise.resolve(null);
|
||
|
}, Ms = (e, t, n = {}) => L.post("/api/user-token", {
|
||
|
username: e,
|
||
|
passwd: yn.hash(t),
|
||
|
platform: jn,
|
||
|
...n
|
||
|
}).then(({ token: s }) => (window.localStorage.setItem(vt, s), s)), Kn = () => {
|
||
|
window.localStorage.removeItem(dt), window.localStorage.removeItem(vt);
|
||
|
};
|
||
|
je.interceptors.request.use((e) => {
|
||
|
e.headers.Platform = "web", e.headers.SaaS = window.localStorage.getItem("SaaS");
|
||
|
try {
|
||
|
const t = Rt();
|
||
|
e.headers.Authorization = t ? `Bearer ${t} ` : void 0;
|
||
|
} catch {
|
||
|
}
|
||
|
return e;
|
||
|
}, (e) => Promise.reject({ code: -1, msg: e }));
|
||
|
je.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", bt.onUnhandledRejection);
|
||
|
bt.onToast = (e, t) => w[[0, 1].includes(e) ? "success" : "error"](t).then(() => e === 20300 && ve.redirect(Ze.get("Common.WEBSITE_LOGIN_PAGE")));
|
||
|
const Yn = C.createContext({
|
||
|
user: {},
|
||
|
initUser: () => {
|
||
|
},
|
||
|
initUserComplete: !1
|
||
|
}), $t = C.createContext({
|
||
|
set: () => {
|
||
|
},
|
||
|
get: () => {
|
||
|
},
|
||
|
assign: () => {
|
||
|
},
|
||
|
currentRoute: () => {
|
||
|
}
|
||
|
});
|
||
|
var Oe, Ke, $e, oe, Ie, We;
|
||
|
class Dt {
|
||
|
constructor(t, n) {
|
||
|
v(this, Oe, /* @__PURE__ */ new Map());
|
||
|
v(this, Ke, !0);
|
||
|
v(this, $e, []);
|
||
|
v(this, oe, void 0);
|
||
|
v(this, Ie, () => u(this, oe));
|
||
|
v(this, We, () => Promise.resolve());
|
||
|
N(this, "get", (...t) => new Promise((n, s) => {
|
||
|
const r = JSON.stringify(t);
|
||
|
if (u(this, Oe).has(r))
|
||
|
return n(u(this, We).call(this, u(this, oe), ...t));
|
||
|
if (u(this, oe) === void 0)
|
||
|
u(this, $e).push([t, n, s]), u(this, Ke) && (S(this, Ke, !1), Promise.resolve(typeof u(this, Ie) == "function" ? u(this, Ie).call(this) : u(this, Ie)).then((i) => S(this, oe, i || null)).finally(() => {
|
||
|
u(this, $e).forEach(([i, o, a]) => {
|
||
|
try {
|
||
|
const l = u(this, We).call(this, u(this, oe), ...i);
|
||
|
u(this, Oe).set(JSON.stringify(i), l), o(l);
|
||
|
} catch (l) {
|
||
|
a(l);
|
||
|
}
|
||
|
}), u(this, $e).length = 0;
|
||
|
}));
|
||
|
else {
|
||
|
const i = u(this, We).call(this, u(this, oe), ...t);
|
||
|
u(this, Oe).set(r, i), n(i);
|
||
|
}
|
||
|
}));
|
||
|
S(this, We, n), S(this, Ie, t);
|
||
|
}
|
||
|
}
|
||
|
Oe = new WeakMap(), Ke = new WeakMap(), $e = new WeakMap(), oe = new WeakMap(), Ie = new WeakMap(), We = new WeakMap();
|
||
|
var fe, Ye;
|
||
|
const _ = class _ {
|
||
|
constructor() {
|
||
|
v(this, Ye, null);
|
||
|
N(this, "init", (t) => S(this, Ye, t));
|
||
|
N(this, "get", (t, n) => d.get(u(this, Ye), t, n));
|
||
|
if (u(_, fe))
|
||
|
return u(_, fe);
|
||
|
}
|
||
|
};
|
||
|
fe = new WeakMap(), Ye = new WeakMap(), v(_, fe, null), N(_, "getInstance", () => (u(_, fe) || S(_, fe, new _()), u(_, fe)));
|
||
|
let ft = _;
|
||
|
const Ze = ft.getInstance(), An = (e = {}, t = {}, n = {}, s = "") => d.deepSome(e, (r, i) => i === "type" && r === "code") ? Ut(e, t, n, s) : xt(e, t, s), Ut = async (e = {}, t = {}, n = {}, s = "") => {
|
||
|
let r = /* @__PURE__ */ Object.create(null);
|
||
|
for (let i in e) {
|
||
|
let o;
|
||
|
if (Reflect.has(e[i], "type") && ["code", "field", "router", "query", "string"].includes(e[i].type)) {
|
||
|
const { type: a, value: l = "", default: c = s } = e[i];
|
||
|
switch (a) {
|
||
|
case "code":
|
||
|
o = await Ne.exec(l, t, n);
|
||
|
break;
|
||
|
case "field":
|
||
|
o = d.get(t, l) ?? d.get(t, l.substring(l.indexOf(".") + 1));
|
||
|
break;
|
||
|
case "router":
|
||
|
case "query":
|
||
|
o = ve.getPageParams(l);
|
||
|
break;
|
||
|
case "string":
|
||
|
o = l;
|
||
|
}
|
||
|
o ?? (o = c);
|
||
|
} else
|
||
|
o = await Ut(e[i], t, n, s);
|
||
|
d.set(r, i, o);
|
||
|
}
|
||
|
return r;
|
||
|
}, xt = (e = {}, t = {}, n = "") => Object.keys(e || {}).reduce((s, r) => {
|
||
|
if (d.isPlainObject(e[r])) {
|
||
|
let i;
|
||
|
if (Reflect.has(e[r], "type") && ["field", "router", "query", "string"].includes(e[r].type)) {
|
||
|
const { type: o, value: a = "", default: l = n } = e[r];
|
||
|
switch (o) {
|
||
|
case "field":
|
||
|
i = d.get(t, a) ?? d.get(t, a.substring(a.indexOf(".") + 1));
|
||
|
break;
|
||
|
case "router":
|
||
|
case "query":
|
||
|
i = ve.getPageParams(a);
|
||
|
break;
|
||
|
case "string":
|
||
|
i = a;
|
||
|
break;
|
||
|
}
|
||
|
i ?? (i = l);
|
||
|
} else
|
||
|
i = xt(e[r], t, n);
|
||
|
d.set(s, r, i);
|
||
|
}
|
||
|
return s;
|
||
|
}, {});
|
||
|
var he, ae, Pe, st;
|
||
|
const ee = class ee {
|
||
|
constructor() {
|
||
|
v(this, ae, null);
|
||
|
v(this, Pe, /* @__PURE__ */ new Map());
|
||
|
v(this, st, () => {
|
||
|
if (u(this, ae))
|
||
|
return u(this, ae).port.postMessage({ command: "status", data: [] });
|
||
|
S(this, ae, new SharedWorker(new URL("data:text/plain;base64,Y29uc3QgcG9ydHMgPSBbXQpsZXQgd3MgPSBudWxsCgpmdW5jdGlvbiBpbml0V3ModXJsKSB7CiAgd3MgPSBuZXcgV2ViU29ja2V0KHVybCkKICB3cy5vbmNsb3NlID0gKGUpID0+IGNvbnNvbGUubG9nKCd3cyBjbG9zZWQnLCBlKQogIHdzLm9uZXJyb3IgPSAoZSkgPT4gY29uc29sZS5sb2coJ3dzIGVycm9yJywgZSkKICB3cy5vbm1lc3NhZ2UgPSAoeyBkYXRhIH0pID0+IHsKICAgIGNvbnN0IHZhbHVlID0gSlNPTi5wYXJzZShkYXRhKQogICAgcG9ydHMuZm9yRWFjaChwb3J0ID0+IHBvcnQucG9zdE1lc3NhZ2UodmFsdWUpKQogIH0KfQoKZnVuY3Rpb24gY2xvc2VXcygpIHsKICBpZiAoIXdzIHx8IHdzLnJlYWR5U3RhdGUgPT0gV2ViU29ja2V0Lk9QRU4pIHsKICAgIHdzLmNsb3NlKCkKICB9Cn0KCmZ1bmN0aW9uIHN0YXR1cygpIHsKICB0aGlzLnBvc3RNZXNzYWdlKHsgcmVhZHlTdGF0ZTogd3MgPyB3cy5yZWFkeVN0YXRlIDogV2ViU29ja2V0LkNMT1NFRCB9KQp9CgpzZWxmLm9uY29ubmVjdCA9IChlKSA9PiB7CiAgY29uc3QgcG9ydCA9IGUucG9ydHNbMF07CgogIHBvcnQub25tZXNzYWdlID0gKHsgZGF0YTogeyBjb21tYW5kLCBkYXRhIH0gfSkgPT4gewogICAgaWYgKGNvbW1hbmQgJiYgWydpbml0V3MnLCAnY2xvc2VXcycsICdzdGF0dXMnXS5pbmNsdWRlcyhjb21tYW5kKSkgUmVmbGVjdC5hcHBseShzZWxmPy5bY29tbWFuZF0sIHBvcnQsIGRhdGEgfHwgW10pCiAgfQoKICBwb3J0cy5wdXNoKHBvcnQpCn0K", self.location))), u(this, ae).port.onmessage = (t) => {
|
||
|
var n, s;
|
||
|
(n = t.data) != null && n.uuid ? u(this, Pe).forEach((r, i) => {
|
||
|
var o;
|
||
|
(r == "*" || (o = r == null ? void 0 : r.includes) != null && o.call(r, t.data.uuid)) && i(t.data);
|
||
|
}) : ((s = t.data) == null ? void 0 : s.readyState) == WebSocket.CLOSED && L.get("/api/user-api-token").then(({ token: r, expire_at: i }) => {
|
||
|
u(this, ae).port.postMessage({ command: "initWs", data: [`ws${d.trimStart(Ft, "http")}api/user-resource-status-ws?token=${r}`] });
|
||
|
});
|
||
|
}, u(this, ae).port.postMessage({ command: "status", data: [] });
|
||
|
});
|
||
|
N(this, "subscribe", (t, n = []) => (n ? Array.isArray(n) && n.length == 0 ? n = "*" : Array.isArray(n) || (n = [n].flat()) : n = "*", u(this, Pe).set(t, n), u(this, Pe).size == 1 && u(this, st).call(this), () => this.unsubscribe(t)));
|
||
|
N(this, "unsubscribe", (t) => u(this, Pe).delete(t));
|
||
|
if (u(ee, he))
|
||
|
return u(ee, he);
|
||
|
}
|
||
|
};
|
||
|
he = new WeakMap(), ae = new WeakMap(), Pe = new WeakMap(), st = new WeakMap(), v(ee, he, null), N(ee, "getInstance", () => (u(ee, he) || S(ee, he, new ee()), u(ee, he)));
|
||
|
let ht = ee;
|
||
|
const Xt = ht.getInstance(), jt = () => {
|
||
|
const e = j(!0), [t, n] = F(0);
|
||
|
return V(() => () => e.current = !1, []), () => e.current && Sn(() => {
|
||
|
n(t + 1);
|
||
|
});
|
||
|
}, Js = ({ value: e, defaultValue: t, onChange: n }) => {
|
||
|
const s = jt(), r = j(e !== void 0 ? e : t);
|
||
|
e !== void 0 && (r.current = e);
|
||
|
const i = ce(d.debounce((o) => {
|
||
|
e === void 0 && (r.current = o, s()), n && n(o);
|
||
|
}, 380, { leading: !0, trailing: !1 }), [e]);
|
||
|
return [r.current, i];
|
||
|
}, Wt = (e) => {
|
||
|
const t = j();
|
||
|
return V(() => {
|
||
|
t.current = e;
|
||
|
}), t.current;
|
||
|
}, Mn = (e) => {
|
||
|
const t = j(), [n, s] = F(e);
|
||
|
return V(() => {
|
||
|
d.isFunction(t.current) && t.current(n);
|
||
|
}, [n]), [n, function(r, i) {
|
||
|
t.current = i, s(r);
|
||
|
}];
|
||
|
}, ot = (e = C.EffectCallback, t, n = d.isEqual) => {
|
||
|
const s = C.useRef(t);
|
||
|
(!s.current || !n(t, s.current)) && (s.current = t), C.useEffect(e, [s.current]);
|
||
|
}, Ht = (e, t = "string") => {
|
||
|
var n;
|
||
|
if (!Array.isArray(e))
|
||
|
return e;
|
||
|
for (let s = 0; s < e.length; s++)
|
||
|
e[s].value = d.toPrimitive((n = e[s]) == null ? void 0 : n.value, t), e[s] && Reflect.has(e[s], "children") && (e[s].children = Ht(e[s].children, t));
|
||
|
return e;
|
||
|
}, Qs = (e, t = "json", n = "string", s, r = null) => {
|
||
|
const [i] = Be.useForm(s), [o, a] = F([{ label: "无", value: "", disabled: !0 }]), l = j([]), c = Be.useWatch((f) => l.current.length === 0 ? null : d.pick(f, l.current), i) || null;
|
||
|
return V(() => {
|
||
|
Array.isArray(e) ? a(e) : t === "javascript" && e ? Ne.exec(e, {}, {
|
||
|
getFieldValue: (f) => (l.current.includes(f) || l.current.push(f), i.getFieldValue(f)),
|
||
|
getFieldValueForBasicForm: (f) => (l.current.includes(f) || l.current.push(f), r ? r.getFieldValue(f) : i.getFieldValue(f))
|
||
|
}).then((f) => {
|
||
|
a(d.toPrimitive(f, "array"));
|
||
|
}) : e && a(d.toPrimitive(e, "array"));
|
||
|
}, [e, t, c]), Ht(o, n);
|
||
|
}, qs = (e) => {
|
||
|
const [t, n] = F(), s = { type: "GET" };
|
||
|
if (typeof e == "string" ? s.url = e : d.isPlainObject(e) && Object.assign(s, e), !(s != null && s.url))
|
||
|
throw "url is required";
|
||
|
const r = (i) => L.request(s, !1).resp((o) => (console.log("useSubscribeRequest", i), n(o), o));
|
||
|
return ot(() => {
|
||
|
let i = null;
|
||
|
return r().then((o) => {
|
||
|
i = Xt.subscribe(r, o.res);
|
||
|
}), () => i == null ? void 0 : i();
|
||
|
}, s), t;
|
||
|
}, Jn = (e) => {
|
||
|
const [t, n] = C.useState({ gridItems: [], hideItems: [] });
|
||
|
return C.useEffect(() => {
|
||
|
e && L.get(`/api/_/${e}`).then(({
|
||
|
pk: s,
|
||
|
uuid: r,
|
||
|
code: i,
|
||
|
resource: o,
|
||
|
align: a,
|
||
|
listenChangeFields: l,
|
||
|
listenChangeFieldsFunc: c,
|
||
|
fields: f
|
||
|
}) => ({
|
||
|
pk: s,
|
||
|
uuid: r,
|
||
|
code: i,
|
||
|
resource: o,
|
||
|
align: a,
|
||
|
listenChangeFields: l,
|
||
|
listenChangeFieldsFunc: c,
|
||
|
...f.reduce((p, m) => {
|
||
|
var g;
|
||
|
return (g = m == null ? void 0 : m.field) != null && g.hidden ? p.hides.push(m == null ? void 0 : m.field) : p.items.push(m), p;
|
||
|
}, { items: [], hides: [] })
|
||
|
})).then(n);
|
||
|
}, [e]), t;
|
||
|
}, Qn = ({
|
||
|
max: e = 0,
|
||
|
min: t = 0,
|
||
|
type: n = "",
|
||
|
message: s,
|
||
|
pattern: r,
|
||
|
required: i = !1,
|
||
|
validator: o
|
||
|
} = {}, a, l) => {
|
||
|
const [c, f] = F([]);
|
||
|
return V(() => {
|
||
|
const p = [];
|
||
|
if (i) {
|
||
|
let m = l;
|
||
|
switch (l) {
|
||
|
case "number":
|
||
|
case "string":
|
||
|
case "array":
|
||
|
break;
|
||
|
case "bool":
|
||
|
m = "boolean";
|
||
|
break;
|
||
|
case "json":
|
||
|
m = "object";
|
||
|
break;
|
||
|
}
|
||
|
p.push({ type: m, required: !0, whitespace: !0, message: "该项必填" });
|
||
|
}
|
||
|
switch (n) {
|
||
|
case "string":
|
||
|
p.push({
|
||
|
type: n,
|
||
|
max: e,
|
||
|
min: t,
|
||
|
message: s || (t && e ? `字符必须在 ${t} ~ ${e} 之间` : `${e ? "最多能有" : "最少要有"} ${t || e} 个字符`)
|
||
|
});
|
||
|
break;
|
||
|
case "pattern":
|
||
|
p.push({ type: "string", pattern: r, message: s });
|
||
|
break;
|
||
|
case "validator":
|
||
|
o && p.push(({ getFieldValue: m }) => ({
|
||
|
validator: async (g, y) => {
|
||
|
const b = await Ne.exec(o, { value: y, fieldName: a }, { getFieldValue: m });
|
||
|
return d.isString(b) && b ? Promise.reject(b) : d.isBoolean(b) && !b ? Promise.reject(s) : Promise.resolve();
|
||
|
}
|
||
|
}));
|
||
|
break;
|
||
|
}
|
||
|
f(p);
|
||
|
}, [e, t, n, s, r, i, o]), c;
|
||
|
}, qn = (e, t, n) => {
|
||
|
const [s, r] = F(null);
|
||
|
return V(() => {
|
||
|
const {
|
||
|
initDataUri: i = `/api/${e}`,
|
||
|
initDataMethod: o = "GET"
|
||
|
} = n || {};
|
||
|
L.request({
|
||
|
method: o,
|
||
|
url: d.trimEnd(`${i}/${t}`, "/")
|
||
|
}).then((a) => {
|
||
|
r(a);
|
||
|
});
|
||
|
}, [e, t, n]), s;
|
||
|
}, _n = (e, t, n, s = {}) => {
|
||
|
const r = jt(), i = j(!0), o = j([]), [a, l] = F(n), c = Be.useWatch((f) => JSON.stringify(d.pick(f, o.current)), t) || "{}";
|
||
|
return V(() => {
|
||
|
e && Ne.exec(e, s, {
|
||
|
getFieldValue: d.wrap(t.getFieldValue, (f, p) => (o.current.some((m) => d.isEqual(m, p)) || (o.current.push(p), r()), f(p))),
|
||
|
isFieldTouched: t.isFieldTouched,
|
||
|
isFieldsTouched: t.isFieldsTouched
|
||
|
}).then((f) => i.current && l(f));
|
||
|
}, [e, c, t, s]), V(() => () => i.current = !1, []), a;
|
||
|
}, es = (e) => ({
|
||
|
code: t,
|
||
|
layout: n,
|
||
|
name: s,
|
||
|
primaryKey: r = 0,
|
||
|
style: i = {},
|
||
|
formProps: o = {},
|
||
|
form: a,
|
||
|
isPreview: l = !1,
|
||
|
className: c,
|
||
|
onFinish: f,
|
||
|
onValuesChange: p = () => {
|
||
|
},
|
||
|
...m
|
||
|
}) => {
|
||
|
const {
|
||
|
align: g,
|
||
|
autoComplete: y,
|
||
|
resource: b,
|
||
|
items: O,
|
||
|
hides: E,
|
||
|
rowHeight: X,
|
||
|
marginX: A,
|
||
|
marginY: q,
|
||
|
listenChangeFields: H,
|
||
|
listenChangeFieldsFunc: W,
|
||
|
pk: k,
|
||
|
uuid: B
|
||
|
} = Jn(t), [P] = ut.useForm(a), K = ({
|
||
|
changedValues: $,
|
||
|
allValues: T,
|
||
|
listenChangeFields: ke,
|
||
|
listenChangeFieldsFunc: Qe,
|
||
|
onValuesChange: at,
|
||
|
code: Lt
|
||
|
}) => {
|
||
|
at($, T), Qe && Array.isArray(ke) && Ne.exec(
|
||
|
Qe,
|
||
|
{ changedValues: $, allValues: T },
|
||
|
{
|
||
|
getFieldValue: P.getFieldValue,
|
||
|
setFieldsValue: P.setFieldsValue,
|
||
|
isFieldTouched: P.isFieldTouched,
|
||
|
isFieldsTouched: P.isFieldsTouched
|
||
|
}
|
||
|
);
|
||
|
}, re = Re(() => [
|
||
|
{ name: "__PK__", value: k },
|
||
|
{ name: "__PROPS__", value: o },
|
||
|
{ name: "__RESOURCE__", value: b },
|
||
|
{ name: "__LAYOUT_KEY__", value: t },
|
||
|
{ name: "__LAYOUT_UUID__", value: B },
|
||
|
{ name: "__PRIMARY_KEY__", value: r }
|
||
|
], [k, t, B, b, r, o]);
|
||
|
return /* @__PURE__ */ z(
|
||
|
ut,
|
||
|
{
|
||
|
className: c,
|
||
|
requiredMark: !0,
|
||
|
name: s || t,
|
||
|
layout: n || g,
|
||
|
fields: re,
|
||
|
form: P,
|
||
|
autoComplete: y,
|
||
|
style: { ...i, position: "relative" },
|
||
|
onFinish: f,
|
||
|
onValuesChange: ($, T) => K(
|
||
|
{
|
||
|
changedValues: $,
|
||
|
allValues: T,
|
||
|
listenChangeFields: H,
|
||
|
listenChangeFieldsFunc: W,
|
||
|
onValuesChange: p,
|
||
|
code: t
|
||
|
}
|
||
|
),
|
||
|
children: [
|
||
|
/* @__PURE__ */ h(
|
||
|
e,
|
||
|
{
|
||
|
...m,
|
||
|
form: P,
|
||
|
code: t,
|
||
|
fields: O,
|
||
|
rowHeight: X,
|
||
|
marginX: A,
|
||
|
marginY: q
|
||
|
}
|
||
|
),
|
||
|
E == null ? void 0 : E.map(($) => {
|
||
|
var T;
|
||
|
return /* @__PURE__ */ h(zt, { name: $.code, children: /* @__PURE__ */ h(
|
||
|
ts,
|
||
|
{
|
||
|
form: P,
|
||
|
name: $.code,
|
||
|
type: $.type,
|
||
|
initialValue: $.initialValue,
|
||
|
initialValueLanguage: (T = $.extras) == null ? void 0 : T.initialValueLanguage
|
||
|
}
|
||
|
) }, JSON.stringify($.code));
|
||
|
})
|
||
|
]
|
||
|
}
|
||
|
);
|
||
|
}, ts = ({ type: e, initialValue: t, initialValueLanguage: n, onChange: s, form: r }) => {
|
||
|
const i = _n(
|
||
|
n == "javascript" && t,
|
||
|
r,
|
||
|
n == "javascript" ? void 0 : t,
|
||
|
{}
|
||
|
);
|
||
|
return V(() => {
|
||
|
n == "javascript" ? s(d.toPrimitive(i, e)) : s(d.toPrimitive(t, e));
|
||
|
}, [e, t, i]), null;
|
||
|
}, ns = (e) => function({ code: n, data: s, ...r }) {
|
||
|
const [i, o] = F({
|
||
|
resource: null,
|
||
|
cols: 12,
|
||
|
rowHeight: 21,
|
||
|
fields: []
|
||
|
});
|
||
|
return V(() => {
|
||
|
n && L.get(`/api/_/${n}`).then((a) => o(d.pick(a, ["resource", "cols", "rowHeight", "fields"])));
|
||
|
}, [n]), (i == null ? void 0 : i.resource) && /* @__PURE__ */ h(
|
||
|
e,
|
||
|
{
|
||
|
...r,
|
||
|
rowHeight: i.rowHeight,
|
||
|
cols: i.cols,
|
||
|
fields: i.fields,
|
||
|
data: i != null && i.resource ? { [i == null ? void 0 : i.resource]: s } : {}
|
||
|
}
|
||
|
);
|
||
|
}, ss = "RC_FORM_INTERNAL_HOOKS", Bt = (e, {
|
||
|
initialValue: t,
|
||
|
initialValueLanguage: n,
|
||
|
convertJs: s,
|
||
|
convertJsSetting: r,
|
||
|
type: i = "string"
|
||
|
}, o = null) => {
|
||
|
const a = j(!1), l = He(Nn), [c, f] = F(), [p, m] = F(n == "javascript" || !e ? void 0 : l.getFieldValue(e)), { registerWatch: g } = l.getInternalHooks(ss) || {};
|
||
|
return V(() => g == null ? void 0 : g((y, b, O) => {
|
||
|
if (!a.current)
|
||
|
return;
|
||
|
const E = d.get(b, e);
|
||
|
d.isEqual(E, p) || m(d.toPrimitive(E, i));
|
||
|
}), [p]), V(() => {
|
||
|
n == "javascript" && t ? Ne.exec(t, {}, {
|
||
|
getFieldValueForBasicForm: (y) => o ? o.getFieldValue(y) : l.getFieldValue(y),
|
||
|
getFieldValue: (y) => l.getFieldValue(y)
|
||
|
}).then((y) => m(d.toPrimitive(y, i))).catch((y) => notification.error({ message: `布局数据错误: ${JSON.stringify(y)}` })).finally(() => a.current = !0) : (t && m(d.toPrimitive(t ?? l.getFieldValue(e), i)), a.current = !0);
|
||
|
}, [t, n]), ot(() => {
|
||
|
a.current && s && Q.getWidgetComponent(s).then(({ default: y }) => y({ value: p, record: l.getFieldsValue(!0), $setting: r })).then(f).catch((y) => console.error("布局数据转换错误: ", y, s));
|
||
|
}, [p, s, r]), [c || p, p];
|
||
|
}, rs = (e, t, n, s, r, i) => {
|
||
|
const o = {
|
||
|
"--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 ? o.height = "fit-content" : o["--grid-layout-row"] = `${s}`, o["--grid-layout-box-margin"] = Pt(r == null ? void 0 : r.marginTop, r == null ? void 0 : r.marginRight, r == null ? void 0 : r.marginBottom, r == null ? void 0 : r.marginLeft), o["--grid-layout-box-padding"] = Pt(r == null ? void 0 : r.paddingTop, r == null ? void 0 : r.paddingRight, r == null ? void 0 : r.paddingBottom, r == null ? void 0 : r.paddingLeft), i && (o.height = `${i}px`), o;
|
||
|
}, Pt = (e, t, n, s) => `${e || 0}px ${t || 0}px ${n || 0}px ${s || 0}px`, Kt = ({ cols: e, rowHeight: t, fields: n, data: s, containerPadding: r = [0, 0], itemMargin: i = [4, 0], formProps: o = {}, className: a, ...l }) => {
|
||
|
const [c] = Be.useForm(), f = Yt(n, os, "@pkg/grid-layouts"), p = Re(() => [
|
||
|
{ name: "__PROPS__", value: o }
|
||
|
], [o]);
|
||
|
return ot(() => {
|
||
|
c.setFieldsValue(s);
|
||
|
}, [s]), /* @__PURE__ */ h(Be, { fields: p, form: c, component: !1, children: /* @__PURE__ */ h(
|
||
|
"div",
|
||
|
{
|
||
|
...l,
|
||
|
className: Z("ff-grid-layout", a),
|
||
|
style: {
|
||
|
"--grid-layout-item-margin-y": `${(i == null ? void 0 : i[0]) || 0}px`,
|
||
|
"--grid-layout-item-margin-x": `${(i == null ? void 0 : i[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: f
|
||
|
}
|
||
|
) });
|
||
|
}, Yt = (e, t, n = "@pkg/grid-layouts", s = null) => Re(() => {
|
||
|
var r;
|
||
|
return (r = d.sortBy(e, ["y", "x"])) == null ? void 0 : r.map(
|
||
|
({ i, x: o, y: a, w: l, h: c, field: { boxStyle: f, widgetPrefix: p = n, widget: m, ...g } }, y) => /* @__PURE__ */ h(
|
||
|
"div",
|
||
|
{
|
||
|
className: "grid-layout-item",
|
||
|
style: rs(o, a, l, c, f, m === "Height" && (g == null ? void 0 : g.initialValue)),
|
||
|
children: /* @__PURE__ */ h(
|
||
|
is,
|
||
|
{
|
||
|
...g,
|
||
|
basicForm: s,
|
||
|
itemWidget: m != null && m.startsWith("@") ? m : `${p}/${m}`,
|
||
|
itemWidgetRender: t
|
||
|
}
|
||
|
)
|
||
|
},
|
||
|
i || y
|
||
|
)
|
||
|
);
|
||
|
}, [e]), is = ({ itemWidget: e, itemWidgetRender: t, basicForm: n, ...s }) => {
|
||
|
const [r, i] = F();
|
||
|
return V(() => {
|
||
|
Q.getWidgetComponent(e).then(({ defaultProps: o, default: a }) => {
|
||
|
i(C.createElement(t(a, o, n), s));
|
||
|
}).catch((o) => i(e));
|
||
|
}, [e]), r;
|
||
|
}, os = (e, t, n = null) => (s) => {
|
||
|
const {
|
||
|
code: r,
|
||
|
label: i,
|
||
|
extras: o,
|
||
|
isVirtual: a,
|
||
|
initialValue: l,
|
||
|
initialValueLanguage: c,
|
||
|
convertJs: f,
|
||
|
convertJsSetting: p,
|
||
|
...m
|
||
|
} = d.merge({}, t, s), [g, y] = Bt(a ? null : r, {
|
||
|
initialValue: l,
|
||
|
initialValueLanguage: c,
|
||
|
convertJs: f,
|
||
|
convertJsSetting: p,
|
||
|
type: (m == null ? void 0 : m.type) || "string"
|
||
|
}, n);
|
||
|
return /* @__PURE__ */ h(e, { ...m, value: g, rawValue: y, $setting: o || {} });
|
||
|
}, _s = ns(Kt), as = ({ widget: e, widgetPrefix: t, widgetDecorator: n, subWidgets: s, basicForm: r, ...i }) => {
|
||
|
const o = e != null && e.startsWith("@") ? e : `${t}/${e}`, [a, l] = F();
|
||
|
return V(() => {
|
||
|
o && Q.getWidgetComponent(o).then(({ defaultProps: c, default: f }) => ({
|
||
|
default: At(f, c, r)
|
||
|
})).catch((c) => ({ default: () => `${c}` })).then((c) => l(C.createElement(c.default, i)));
|
||
|
}, [o]), a && C.cloneElement(a, i);
|
||
|
};
|
||
|
as.defaultProps = {
|
||
|
widgetPrefix: "@pkg/grid-layout-forms",
|
||
|
widget: "Input"
|
||
|
};
|
||
|
const At = (e, t, n = null) => (s) => {
|
||
|
const {
|
||
|
type: r,
|
||
|
code: i,
|
||
|
label: o,
|
||
|
noStyle: a,
|
||
|
placeholder: l,
|
||
|
extras: c,
|
||
|
validators: f,
|
||
|
help: p,
|
||
|
isVirtual: m,
|
||
|
initialValue: g,
|
||
|
initialValueLanguage: y,
|
||
|
convertJs: b,
|
||
|
convertJsSetting: O,
|
||
|
widgetPerfix: E,
|
||
|
boxStyle: X,
|
||
|
widgetDecorator: A,
|
||
|
subWidgets: q,
|
||
|
...H
|
||
|
} = { ...t, ...s }, W = Qn(f || {}, i, r), k = {
|
||
|
label: o,
|
||
|
noStyle: a,
|
||
|
colon: !1
|
||
|
}, B = {
|
||
|
placeholder: l,
|
||
|
...H
|
||
|
}, P = ce((K) => K == null ? void 0 : d.toPrimitive(K, r), [r]);
|
||
|
return /* @__PURE__ */ h(
|
||
|
zt,
|
||
|
{
|
||
|
name: i,
|
||
|
rules: W,
|
||
|
initialValue: P(g),
|
||
|
normalize: P,
|
||
|
children: (K, re, $) => {
|
||
|
var T;
|
||
|
return /* @__PURE__ */ h(
|
||
|
e,
|
||
|
{
|
||
|
type: r,
|
||
|
rcform: $,
|
||
|
itemProps: {
|
||
|
validateStatus: re.errors.length > 0 ? "error" : "success",
|
||
|
tooltip: p,
|
||
|
help: re.errors.length > 0 ? re.errors.join("、") : null,
|
||
|
required: ((T = W == null ? void 0 : W[0]) == null ? void 0 : T.required) || !1,
|
||
|
...k
|
||
|
},
|
||
|
fieldProps: { ...B, ...K },
|
||
|
$setting: c || {}
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
}, Nt = ({ cols: e, rowHeight: t, itemMargin: n = [8, 8], containerPadding: s = [0, 0], fields: r }) => {
|
||
|
const i = Yt(r, At, "@pkg/grid-layout-forms");
|
||
|
return /* @__PURE__ */ h(Ln, { 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: i }) });
|
||
|
};
|
||
|
Nt.propTypes = {
|
||
|
fields: G.array.isRequired
|
||
|
};
|
||
|
Nt.defaultProps = {
|
||
|
fields: []
|
||
|
};
|
||
|
const cs = es(Nt), Mt = ({ children: e }) => {
|
||
|
const [t, n] = F({}), s = ce((i, o) => n((a) => ({ ...a, [i]: o })), []), r = ce((i) => n((o) => ({ ...o, [i]: void 0 })), []);
|
||
|
return /* @__PURE__ */ h(Ee.Provider, { value: { ele: t, mount: s, unmount: r }, children: e });
|
||
|
};
|
||
|
Mt.defaultProps = {
|
||
|
isDrawerRender: !1
|
||
|
};
|
||
|
Mt.propTypes = {
|
||
|
isDrawerRender: G.bool
|
||
|
};
|
||
|
const ls = ({ $setting: e, $close: t, extras: n, code: s, primaryKey: r, ...i }) => {
|
||
|
const [o] = ut.useForm(), a = qn(s, r, e);
|
||
|
V(() => {
|
||
|
a && o.setFieldsValue(a);
|
||
|
}, [a]);
|
||
|
const l = () => {
|
||
|
const c = o.getFieldValue("__RESOURCE__"), {
|
||
|
initDataUri: f = `/api/${s}`
|
||
|
} = e || {};
|
||
|
o.validateFields(!0).then((p) => c ? d.pick(p, [c]) : p).then((p) => L.post(r ? `${f}/${r}` : `${f}`, p).msg(t)).catch(() => Toast.error("请先完善表单信息", { duration: 2e3 }));
|
||
|
};
|
||
|
return /* @__PURE__ */ h(
|
||
|
J,
|
||
|
{
|
||
|
actions: /* @__PURE__ */ z(C.Fragment, { children: [
|
||
|
/* @__PURE__ */ h(R, { name: "保存", type: "primary", widget: l }),
|
||
|
/* @__PURE__ */ h(R, { name: "取消", widget: () => t(!1) })
|
||
|
] }),
|
||
|
extras: n,
|
||
|
children: /* @__PURE__ */ h(cs, { form: o, code: s, primaryKey: r, ...i })
|
||
|
}
|
||
|
);
|
||
|
}, us = (e, t, n = "children") => {
|
||
|
if (d.isEmpty(e))
|
||
|
return {};
|
||
|
const s = d.find(e, ["value", t]);
|
||
|
if (!d.isEmpty(s))
|
||
|
return s;
|
||
|
const r = e.length;
|
||
|
for (let i = 0; i < r; i++) {
|
||
|
const { [n]: o } = e[i], a = us(o, t, n);
|
||
|
if (!d.isEmpty(a))
|
||
|
return a;
|
||
|
}
|
||
|
return {};
|
||
|
}, ds = (e, t, { isReplaceRouteHistory: n = !1 } = {}) => ve.redirect(t, e, { replace: n }), Zt = (e, t, { status: { loading: n, disabled: s }, setStatus: r }) => {
|
||
|
const i = {
|
||
|
loading: (o) => o === void 0 ? n : r((a) => ({ ...a, loading: o })),
|
||
|
disabled: (o) => o === void 0 ? s : r((a) => ({ ...a, disabled: o }))
|
||
|
};
|
||
|
return d.isFunction(t) ? t.call(null, { ...e, ...i }) : d.isString(t) && t ? Ne.exec(t, e, i) : null;
|
||
|
}, Et = (e, t, n, s) => d.isString(t) && t ? Q.getWidgetComponent(t).then(({ default: r }) => {
|
||
|
w.modal(
|
||
|
r,
|
||
|
{ ...e, $setting: n, code: t },
|
||
|
s
|
||
|
);
|
||
|
}).catch((r) => {
|
||
|
w.error(t, { content: r.toString() });
|
||
|
}) : w.modal(
|
||
|
t,
|
||
|
{ ...e, $setting: n, code: t },
|
||
|
s
|
||
|
), fs = (e, t, n, s) => w.modal(
|
||
|
ls,
|
||
|
{ ...e, $setting: n, code: t },
|
||
|
s
|
||
|
), hs = (e, t, n, s) => w.modal(
|
||
|
Jt,
|
||
|
{ base62params: e, $setting: n, listCode: t },
|
||
|
s
|
||
|
), gs = ({
|
||
|
widget: e,
|
||
|
widgetType: t,
|
||
|
widgetData: n,
|
||
|
widgetProps: s,
|
||
|
widgetSetting: r,
|
||
|
widgetContainerProps: i
|
||
|
}, { onAfterClick: o, onBeforeClick: a }) => {
|
||
|
const l = He(xe);
|
||
|
He($t);
|
||
|
const [c, f] = F({ leading: !0, trailing: !1 }), p = Re(() => {
|
||
|
switch (t) {
|
||
|
case "redirect":
|
||
|
return d.partialRight(ds, e, r);
|
||
|
case "func":
|
||
|
return d.partialRight(Zt, (r == null ? void 0 : r.code) ?? e, { status: c, setStatus: f });
|
||
|
case "fsdpf-component":
|
||
|
return d.partialRight(Et, e, r, i);
|
||
|
case "grid-layout-form":
|
||
|
return d.partialRight(fs, e, r, i);
|
||
|
case "data-list":
|
||
|
return d.partialRight(hs, e, r, i);
|
||
|
default:
|
||
|
if (sn(e))
|
||
|
return d.partialRight(Et, e, r, i);
|
||
|
if (d.isFunction(e))
|
||
|
return d.partialRight(Zt, (r == null ? void 0 : r.code) || e, { status: c, setStatus: f });
|
||
|
}
|
||
|
return (...g) => console.error("useButton unknown widgetType", t, ...g);
|
||
|
}, [e, t]);
|
||
|
return [d.debounce((g) => (a == null || a(g), Promise.resolve(An(s, g, { list: l })).then((y) => p({ ...n, ...y })).then((y) => o == null ? void 0 : o(y)).catch(console.error)), 300, { leading: !0, trailing: !1 }), c];
|
||
|
};
|
||
|
var ge, De;
|
||
|
const te = class te {
|
||
|
constructor() {
|
||
|
v(this, De, null);
|
||
|
N(this, "init", (t) => S(this, De, new Map(t)));
|
||
|
N(this, "check", (t) => !u(this, De).has(t) || u(this, De).get(t));
|
||
|
if (u(te, ge))
|
||
|
return u(te, ge);
|
||
|
}
|
||
|
};
|
||
|
ge = new WeakMap(), De = new WeakMap(), v(te, ge, null), N(te, "getInstance", () => (u(te, ge) || S(te, ge, new te()), u(te, ge)));
|
||
|
let gt = te;
|
||
|
const ps = gt.getInstance(), Je = (e) => function({
|
||
|
className: n,
|
||
|
children: s,
|
||
|
name: r,
|
||
|
icon: i,
|
||
|
type: o,
|
||
|
data: a,
|
||
|
noAuthType: l,
|
||
|
onAfterClick: c,
|
||
|
onBeforeClick: f,
|
||
|
loading: p,
|
||
|
disabled: m,
|
||
|
tooltip: g,
|
||
|
popConfirm: y,
|
||
|
widget: b,
|
||
|
widgetType: O,
|
||
|
widgetData: E,
|
||
|
widgetProps: X,
|
||
|
widgetSetting: A,
|
||
|
widgetContainerProps: q,
|
||
|
...H
|
||
|
}) {
|
||
|
const W = {
|
||
|
type: "primary",
|
||
|
className: Z("ff-button", n)
|
||
|
};
|
||
|
o === "danger" ? W.danger = !0 : o === "default" && (W.type = o), e === "link" || e === "dashed" ? (W.type = e, o === "default" && (W.className = Z(W.className, "ff-default"))) : (e === "circle" || e === "round") && (W.shape = e), i && (W.icon = /* @__PURE__ */ h(Ct, { type: i }));
|
||
|
const [k, B] = F(!1), [P, { disabled: K, loading: re }] = gs({ widget: b, widgetType: O, widgetData: E, widgetProps: X, widgetSetting: A, widgetContainerProps: q }, { onAfterClick: c, onBeforeClick: f });
|
||
|
return /* @__PURE__ */ h(
|
||
|
Vn,
|
||
|
{
|
||
|
okText: "确定",
|
||
|
cancelText: "取消",
|
||
|
...y || {},
|
||
|
disabled: K || m,
|
||
|
open: k,
|
||
|
onOpenChange: (T) => {
|
||
|
if (!T)
|
||
|
return B(T);
|
||
|
y ? B(T) : P(a);
|
||
|
},
|
||
|
onConfirm: () => {
|
||
|
P(a);
|
||
|
},
|
||
|
onClick: (T) => {
|
||
|
T.stopPropagation();
|
||
|
},
|
||
|
children: /* @__PURE__ */ h(wn, { ...g, title: k ? null : g == null ? void 0 : g.title, trigger: ["hover", "click"], children: /* @__PURE__ */ h(
|
||
|
In,
|
||
|
{
|
||
|
loading: re || p,
|
||
|
disabled: K || m,
|
||
|
...W,
|
||
|
...H,
|
||
|
children: s || r
|
||
|
}
|
||
|
) })
|
||
|
}
|
||
|
);
|
||
|
}, R = Je("default"), ms = Je("link"), ys = Je("circle"), bs = Je("round"), Cs = Je("dashed");
|
||
|
R.defaultProps = {
|
||
|
type: "default",
|
||
|
iconPosition: "start"
|
||
|
};
|
||
|
R.propTypes = {
|
||
|
type: G.oneOf(["primary", "default", "danger", ""]),
|
||
|
name: G.string,
|
||
|
// 按钮名称
|
||
|
icon: G.string,
|
||
|
// 图标
|
||
|
iconPosition: G.oneOf(["start", "end"]),
|
||
|
// 图标位置
|
||
|
data: G.any,
|
||
|
// onClick 数据源, 会受到 widgetProps 数据结构影响
|
||
|
widget: G.any,
|
||
|
// 组件
|
||
|
widgetType: G.oneOf(["destroy", "redirect", "func", "fsdpf-component", "grid-layout-form", "grid-layout", "data-list"]),
|
||
|
// 组件类型
|
||
|
widgetData: G.object,
|
||
|
// onClick缺省数据
|
||
|
widgetProps: G.object,
|
||
|
// data 数据结构
|
||
|
widgetSetting: G.object,
|
||
|
// $setting
|
||
|
widgetContainerProps: G.object
|
||
|
// 容器配置
|
||
|
};
|
||
|
R.Link = ms;
|
||
|
R.Link.defaultProps = R.defaultProps;
|
||
|
R.Link.propTypes = R.propTypes;
|
||
|
R.Circle = ys;
|
||
|
R.Circle.defaultProps = R.defaultProps;
|
||
|
R.Circle.propTypes = R.propTypes;
|
||
|
R.Round = bs;
|
||
|
R.Round.defaultProps = R.defaultProps;
|
||
|
R.Round.propTypes = R.propTypes;
|
||
|
R.Dashed = Cs;
|
||
|
R.Dashed.defaultProps = R.defaultProps;
|
||
|
R.Dashed.propTypes = R.propTypes;
|
||
|
const vs = ({
|
||
|
className: e,
|
||
|
itemClassName: t,
|
||
|
dataSource: n,
|
||
|
isPaginate: s,
|
||
|
pageSize: r,
|
||
|
isItemOperations: i,
|
||
|
isBatchOperations: o,
|
||
|
batchOperations: a,
|
||
|
itemOperations: l,
|
||
|
itemOperationsAccess: c,
|
||
|
resource: f,
|
||
|
primaryKey: p,
|
||
|
title: m,
|
||
|
itemGridLayout: g,
|
||
|
$setting: y,
|
||
|
isTreeSider: b,
|
||
|
treeSiderConfig: O,
|
||
|
onClickCallback: E
|
||
|
}) => {
|
||
|
const { getBase62params: X } = He(xe), { total: A, page: q } = X() || {}, H = ce((W, k, B) => /* @__PURE__ */ h(
|
||
|
Rs,
|
||
|
{
|
||
|
className: Z("ff-data-list-framework-item", t),
|
||
|
operations: i && k ? l == null ? void 0 : l.filter((P) => !p || !P.uuid || !c.has(P.uuid) ? !0 : c.get(P.uuid).includes(k == null ? void 0 : k[p])) : [],
|
||
|
data: f ? { [f]: k } : k,
|
||
|
children: W,
|
||
|
onClickCallback: E
|
||
|
}
|
||
|
), [f, p, i, E, c]);
|
||
|
return /* @__PURE__ */ z("div", { className: Z("ff-data-list-framework", e), children: [
|
||
|
/* @__PURE__ */ h(kt, { isTreeSider: b, ...O }),
|
||
|
/* @__PURE__ */ z("div", { className: "ff-data-list-container", children: [
|
||
|
/* @__PURE__ */ h(Qt, {}),
|
||
|
/* @__PURE__ */ h(qt, { title: m }),
|
||
|
/* @__PURE__ */ h("div", { className: "ff-data-list-content", style: {
|
||
|
"--col-num": (y == null ? void 0 : y.colNum) || 1
|
||
|
}, children: /* @__PURE__ */ h(nn, { ...g, primaryKey: p, itemRender: H, dataSource: n }) }),
|
||
|
/* @__PURE__ */ h(
|
||
|
_t,
|
||
|
{
|
||
|
isPaginate: s,
|
||
|
isOperations: o,
|
||
|
operations: a,
|
||
|
total: A,
|
||
|
page: q,
|
||
|
pageSize: r
|
||
|
}
|
||
|
)
|
||
|
] })
|
||
|
] });
|
||
|
}, Rs = ({ className: e, operations: t, children: n, data: s, onClickCallback: r }) => /* @__PURE__ */ z("div", { className: Z("data-list-grid-layout-item-container", e), children: [
|
||
|
n,
|
||
|
!!(t != null && t.length) && /* @__PURE__ */ h("div", { className: "data-list-grid-layout-item-actions", children: t.map(({ isRefresh: i, ...o }) => /* @__PURE__ */ h("span", { className: "data-list-grid-layout-item-action", children: /* @__PURE__ */ h(
|
||
|
R.Link,
|
||
|
{
|
||
|
uuid: o.uuid,
|
||
|
type: o.type,
|
||
|
name: o.name,
|
||
|
widget: o.widget,
|
||
|
widgetType: o.widgetType,
|
||
|
widgetProps: o.widgetProps,
|
||
|
widgetSetting: o.widgetSetting,
|
||
|
widgetContainerProps: o.widgetContainerSetting,
|
||
|
data: s,
|
||
|
onAfterClick: (a) => r == null ? void 0 : r(o.isRefresh, s)
|
||
|
},
|
||
|
o.uuid || useId()
|
||
|
) }, (o == null ? void 0 : o.uuid) || useId())) })
|
||
|
] }), Ns = ({
|
||
|
className: e,
|
||
|
itemClassName: t,
|
||
|
dataSource: n,
|
||
|
columns: s,
|
||
|
isItemOperations: r,
|
||
|
isBatchOperations: i,
|
||
|
batchOperations: o,
|
||
|
itemOperations: a,
|
||
|
itemOperationsAccess: l,
|
||
|
resource: c,
|
||
|
primaryKey: f,
|
||
|
title: p,
|
||
|
isPaginate: m,
|
||
|
pageSize: g,
|
||
|
isTreeSider: y,
|
||
|
treeSiderConfig: b,
|
||
|
...O
|
||
|
}) => {
|
||
|
const { getBase62params: E, onClickCallback: X } = He(xe), { total: A, page: q } = E();
|
||
|
return /* @__PURE__ */ z("div", { className: Z("ff-data-table-framework", e), children: [
|
||
|
/* @__PURE__ */ h(kt, { isTreeSider: y, ...b }),
|
||
|
/* @__PURE__ */ z("div", { className: "ff-data-table-container", children: [
|
||
|
/* @__PURE__ */ h(Qt, {}),
|
||
|
/* @__PURE__ */ h(qt, { title: p }),
|
||
|
/* @__PURE__ */ h(
|
||
|
tn,
|
||
|
{
|
||
|
...O,
|
||
|
className: "ff-data-table-content",
|
||
|
columns: s,
|
||
|
dataSource: n,
|
||
|
operationRender: (H) => /* @__PURE__ */ h("div", { className: "ff-data-table-actions", children: a == null ? void 0 : a.reduce((W, k, B) => [
|
||
|
...W,
|
||
|
/* @__PURE__ */ h(
|
||
|
R.Link,
|
||
|
{
|
||
|
size: "small",
|
||
|
uuid: k.uuid,
|
||
|
type: k.type,
|
||
|
name: k.name,
|
||
|
widget: k.widget,
|
||
|
widgetType: k.widgetType,
|
||
|
widgetProps: k.widgetProps,
|
||
|
widgetSetting: k.widgetSetting,
|
||
|
widgetContainerProps: k.widgetContainerSetting,
|
||
|
data: H,
|
||
|
onAfterClick: (P) => X == null ? void 0 : X(k.isRefresh, H)
|
||
|
},
|
||
|
k.uuid || B
|
||
|
)
|
||
|
], []) })
|
||
|
}
|
||
|
),
|
||
|
/* @__PURE__ */ h(
|
||
|
_t,
|
||
|
{
|
||
|
isPaginate: m,
|
||
|
isOperations: i,
|
||
|
operations: o,
|
||
|
total: A,
|
||
|
page: q,
|
||
|
pageSize: g
|
||
|
}
|
||
|
)
|
||
|
] })
|
||
|
] });
|
||
|
}, xe = C.createContext({
|
||
|
getBase62params: (e, t) => {
|
||
|
},
|
||
|
onReload: () => {
|
||
|
},
|
||
|
onClickCallback: () => {
|
||
|
},
|
||
|
onConditonChange: () => {
|
||
|
},
|
||
|
onTabChange: () => {
|
||
|
},
|
||
|
onSiderChange: () => {
|
||
|
},
|
||
|
onKeywordChange: () => {
|
||
|
},
|
||
|
onPageChange: () => {
|
||
|
},
|
||
|
onPageSizeChange: () => {
|
||
|
}
|
||
|
}), ks = ({
|
||
|
isItemGridLayout: e,
|
||
|
theme: t,
|
||
|
themeProps: n,
|
||
|
onPageChange: s,
|
||
|
onPageSizeChange: r,
|
||
|
onTabChange: i,
|
||
|
onSiderChange: o,
|
||
|
onKeywordChange: a,
|
||
|
onConditonChange: l,
|
||
|
onClickCallback: c,
|
||
|
onReload: f,
|
||
|
getBase62params: p,
|
||
|
...m
|
||
|
}) => {
|
||
|
const [g, y] = F();
|
||
|
return V(() => {
|
||
|
t ? Q.getWidgetComponent(t).then((b) => {
|
||
|
if (!b)
|
||
|
throw `${t} not found`;
|
||
|
return b;
|
||
|
}).catch((b) => ({ default: () => `${b}` })).then((b) => y(C.createElement(b.default, { ...m, $setting: n }))) : g || y(null);
|
||
|
}, [t, n]), /* @__PURE__ */ h(xe.Provider, { value: {
|
||
|
onClickCallback: c,
|
||
|
onReload: f,
|
||
|
getBase62params: p,
|
||
|
onPageChange: s,
|
||
|
onPageSizeChange: r,
|
||
|
onTabChange: i,
|
||
|
onSiderChange: o,
|
||
|
onKeywordChange: a,
|
||
|
onConditonChange: l
|
||
|
}, children: g ? C.cloneElement(g, m) : e ? /* @__PURE__ */ h(vs, { ...m, $setting: n }) : /* @__PURE__ */ h(Ns, { ...m, $setting: n }) });
|
||
|
}, Fs = (e, t, n, s, r) => {
|
||
|
const i = C.lazy(() => Q.getWidgetComponent(e).catch((o) => ({ default: () => `${o}` })));
|
||
|
return /* @__PURE__ */ h(C.Suspense, { children: /* @__PURE__ */ h(
|
||
|
i,
|
||
|
{
|
||
|
value: t,
|
||
|
record: n,
|
||
|
$setting: s,
|
||
|
base62params: r
|
||
|
}
|
||
|
) }, e);
|
||
|
}, Ls = (e, t = {}) => (Wt(e), Wt(t), Re(() => e == null ? void 0 : e.map(({ widgetByJs: s, widgetByJsSetting: r, ...i }, o) => s && !s.endsWith("/BasicShowFieldData") ? {
|
||
|
...i,
|
||
|
render: (a, l) => {
|
||
|
const c = Fs(s, a, l, r, t);
|
||
|
return d.isFunction(i == null ? void 0 : i.render) ? i.render(c, a, l) : c;
|
||
|
}
|
||
|
} : i), [e, t])), er = (e) => {
|
||
|
const [t, n] = F({});
|
||
|
return V(() => {
|
||
|
let s = !1;
|
||
|
return e && L.get(`/api/_/${e}`).then((r) => d.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;
|
||
|
}, tr = (e, t = {}) => {
|
||
|
const [n, s] = F({ dataSource: [] });
|
||
|
return ot(() => {
|
||
|
let r = !1;
|
||
|
return e && L.get(`/api/${e}/${L.encode({ page: 1, ...t })}`).then((i) => !r && s(i)), () => r = !0;
|
||
|
}, [e, t]), n;
|
||
|
}, Tt = (e, t = null, n = null, s = "id") => Re(() => {
|
||
|
if (d.isEmpty(e) || !e.every(({ uuid: i }) => ps.check(i)))
|
||
|
return !1;
|
||
|
if (d.isEmpty(n) || d.isEmpty(t))
|
||
|
return !0;
|
||
|
const r = t.map((i) => i == null ? void 0 : i[s]);
|
||
|
return e.some(({ uuid: i }) => !i || !n.has(i) ? !0 : n.get(i).some((o) => r.includes(o)));
|
||
|
}, [e, t, n, s]), Jt = ({ listCode: e, base62params: t, className: n, itemClassName: s, theme: r, themeProps: i }) => {
|
||
|
const [{ tab: o, page: a, total: l, condition: c, sider: f, keyword: p, dataSource: m, itemOperationsAccess: g, pageSize: y }, b] = Mn(t), [{
|
||
|
resource: O,
|
||
|
primaryKey: E,
|
||
|
batchOperations: X = [],
|
||
|
itemOperations: A = [],
|
||
|
columns: q = [],
|
||
|
themeConfig: H,
|
||
|
theme: W,
|
||
|
isTreeSider: k,
|
||
|
treeSiderConfig: B,
|
||
|
isItemGridLayout: P,
|
||
|
itemGridLayout: K,
|
||
|
title: re,
|
||
|
isPaginate: $
|
||
|
}, T] = F({ isItemGridLayout: !1, itemGridLayout: {} }), ke = (D) => L.list(e, { tab: o, page: a, total: l, condition: c, sider: f, keyword: p, ...D }).then(({
|
||
|
condition: U,
|
||
|
total: le,
|
||
|
tab: Fe,
|
||
|
page: ue,
|
||
|
pageSize: Le,
|
||
|
operationsAccess: ie,
|
||
|
dataSource: x
|
||
|
}) => {
|
||
|
b({
|
||
|
dataSource: x,
|
||
|
pageSize: Le,
|
||
|
total: le,
|
||
|
page: ue,
|
||
|
tab: Fe,
|
||
|
condition: U,
|
||
|
sider: f,
|
||
|
keyword: p,
|
||
|
itemOperationsAccess: new Map(ie)
|
||
|
});
|
||
|
}), Qe = Tt(A, m, g, E), at = Tt(X);
|
||
|
V(() => {
|
||
|
let D = null;
|
||
|
return e && L.get(`/api/_/${e}`).resp(({ data: U, res: le }) => {
|
||
|
U != null && U.isDynamicRefresh && (D = Xt.subscribe(() => ke(), le)), T(U);
|
||
|
}).catch(() => T({})), b((U) => ({ ...U, dataSource: [] })), () => D == null ? void 0 : D();
|
||
|
}, [e]), V(() => {
|
||
|
e && ke(t);
|
||
|
}, [t]);
|
||
|
const Lt = () => {
|
||
|
}, rn = () => {
|
||
|
}, on = () => {
|
||
|
}, an = () => {
|
||
|
}, cn = (D, U) => ke({ page: D, pageSize: U }), ln = (D) => ke({ pageSize: D, page: 1 }), un = (D, U) => {
|
||
|
const le = { tab: o, sider: f, keyword: p, page: a, pageSize: y, condition: c, total: l };
|
||
|
return D ? d.get(le, D, U) : le;
|
||
|
}, ct = () => {
|
||
|
ke();
|
||
|
}, dn = (D = 0, U = null) => {
|
||
|
if (D === 2) {
|
||
|
const le = d.get(U, "__PARENT_ID__", ""), Fe = d.get(U, E, ""), ue = d.findIndex(m, ["__PARENT_ID__", le]), Le = d.findIndex(ue > -1 ? d.get(m, [ue, "children"]) : m, [E, Fe]);
|
||
|
Le > -1 ? (L.get(`/api/${e}/detail/${Fe}`).then((ie) => {
|
||
|
b((x) => {
|
||
|
const Ve = d.get(x.dataSource, ue > -1 ? [ue, "children", Le, "children"] : [Le, "children"]);
|
||
|
return {
|
||
|
...x,
|
||
|
dataSource: ue > -1 ? It(x.dataSource, { [ue]: { children: { $splice: [[Le, 1, { ...ie, children: Ve }]] } } }) : It(x.dataSource, { $splice: [[Le, 1, { ...ie, children: Ve }]] })
|
||
|
};
|
||
|
});
|
||
|
}), L.post(`/api/${e}/list-operations-access`, { ids: Fe }).then((ie) => new Map(ie)).then((ie) => {
|
||
|
b((x) => (x.itemOperationsAccess.forEach((Ve, we) => {
|
||
|
var Vt;
|
||
|
(Vt = ie.get(we)) != null && Vt.some((lt) => lt == Fe) || x.itemOperationsAccess.set(we, Ve.filter((lt) => lt !== Fe));
|
||
|
}), ie.forEach((Ve, we) => {
|
||
|
x.itemOperationsAccess.has(we) ? x.itemOperationsAccess.set(we, d.uniq([...x.itemOperationsAccess.get(we) || [], ...Ve])) : x.itemOperationsAccess.set(we, Ve);
|
||
|
}), { ...x }));
|
||
|
})) : ct();
|
||
|
} else
|
||
|
D === 1 && ct();
|
||
|
}, fn = {
|
||
|
title: re,
|
||
|
itemClassName: s,
|
||
|
resource: O,
|
||
|
primaryKey: E,
|
||
|
theme: r || W,
|
||
|
themeProps: i || H,
|
||
|
isPaginate: $,
|
||
|
pageSize: y,
|
||
|
page: a,
|
||
|
isTreeSider: k,
|
||
|
treeSiderConfig: B,
|
||
|
isItemOperations: Qe,
|
||
|
isBatchOperations: at,
|
||
|
batchOperations: X,
|
||
|
itemOperations: A,
|
||
|
itemOperationsAccess: g,
|
||
|
dataSource: m,
|
||
|
isItemGridLayout: P,
|
||
|
columns: q,
|
||
|
itemGridLayout: K
|
||
|
};
|
||
|
return /* @__PURE__ */ h(J, { className: Z("ff-data-list-helper", n), children: /* @__PURE__ */ h(
|
||
|
ks,
|
||
|
{
|
||
|
...fn,
|
||
|
getBase62params: un,
|
||
|
onReload: ct,
|
||
|
onClickCallback: dn,
|
||
|
onConditonChange: Lt,
|
||
|
onTabChange: rn,
|
||
|
onSiderChange: on,
|
||
|
onKeywordChange: an,
|
||
|
onPageChange: cn,
|
||
|
onPageSizeChange: ln
|
||
|
}
|
||
|
) });
|
||
|
}, Qt = ({ className: e }) => (C.useContext(xe), /* @__PURE__ */ z("div", { className: Z("ff-data-list-filter", e), children: [
|
||
|
/* @__PURE__ */ h(
|
||
|
Wn,
|
||
|
{
|
||
|
placeholder: "关键字",
|
||
|
style: { width: "30%", maxWidth: 300 },
|
||
|
prefix: /* @__PURE__ */ h(Ct, { type: "icon-search" })
|
||
|
}
|
||
|
),
|
||
|
/* @__PURE__ */ z("div", { className: "ff-data-list-actions", children: [
|
||
|
/* @__PURE__ */ h(R, { children: "重置" }),
|
||
|
/* @__PURE__ */ h(R, { type: "primary", children: "查询" }),
|
||
|
/* @__PURE__ */ h(
|
||
|
R.Link,
|
||
|
{
|
||
|
className: "ff-data-list-filter-submit-button",
|
||
|
type: "primary",
|
||
|
name: "展开",
|
||
|
icon: "icon-down",
|
||
|
iconPosition: "end"
|
||
|
}
|
||
|
)
|
||
|
] })
|
||
|
] })), Vs = [
|
||
|
{ title: "全部", className: "active" },
|
||
|
{ title: "运行中" },
|
||
|
{ title: "已上线" }
|
||
|
], qt = ({ className: e, title: t }) => /* @__PURE__ */ z("div", { className: Z("ff-data-list-toolbar", e), children: [
|
||
|
/* @__PURE__ */ h("div", { className: "ff-data-list-title", children: t }),
|
||
|
/* @__PURE__ */ h(Pn, { className: "ff-data-list-tabs", items: Vs }),
|
||
|
/* @__PURE__ */ z("div", { className: "ff-data-list-actions", children: [
|
||
|
/* @__PURE__ */ h(R.Link, { icon: "icon-reload" }),
|
||
|
/* @__PURE__ */ h(R.Link, { icon: "icon-setting" })
|
||
|
] })
|
||
|
] }), ws = [
|
||
|
{
|
||
|
title: "parent 1",
|
||
|
key: "0-0",
|
||
|
children: [
|
||
|
{
|
||
|
title: "parent 1-0",
|
||
|
key: "0-0-0",
|
||
|
disabled: !0,
|
||
|
children: [
|
||
|
{
|
||
|
title: "leaf",
|
||
|
key: "0-0-0-0",
|
||
|
disableCheckbox: !0
|
||
|
},
|
||
|
{
|
||
|
title: "leaf",
|
||
|
key: "0-0-0-1"
|
||
|
}
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
title: "parent 1-1",
|
||
|
key: "0-0-1",
|
||
|
children: [
|
||
|
{
|
||
|
title: /* @__PURE__ */ h(
|
||
|
"span",
|
||
|
{
|
||
|
style: {
|
||
|
color: "#1677ff"
|
||
|
},
|
||
|
children: "sss"
|
||
|
}
|
||
|
),
|
||
|
key: "0-0-1-0"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
], kt = ({ className: e, width: t, isTreeSider: n }) => n ? /* @__PURE__ */ h(
|
||
|
Zn.DirectoryTree,
|
||
|
{
|
||
|
className: Z("ff-data-list-sider", e),
|
||
|
style: { "--sider-width": t },
|
||
|
showLine: !0,
|
||
|
showIcon: !1,
|
||
|
treeData: ws
|
||
|
}
|
||
|
) : null;
|
||
|
kt.defaultProps = {
|
||
|
width: 280
|
||
|
};
|
||
|
const _t = ({ className: e, operations: t, isOperations: n, isPaginate: s, total: r, page: i, pageSize: o }) => {
|
||
|
const { onPageChange: a, onPageSizeChange: l, onClickCallback: c } = C.useContext(xe);
|
||
|
return n && !d.isEmpty(t) || s ? /* @__PURE__ */ z("div", { className: Z("ff-data-list-footer", e), children: [
|
||
|
/* @__PURE__ */ h("div", { className: "ff-data-list-actions", children: t == null ? void 0 : t.map((f, p) => /* @__PURE__ */ h(
|
||
|
R,
|
||
|
{
|
||
|
uuid: f.uuid,
|
||
|
type: f.type,
|
||
|
name: f.name,
|
||
|
widget: f.widget,
|
||
|
widgetType: f.widgetType,
|
||
|
widgetProps: f.widgetProps,
|
||
|
widgetSetting: f.widgetSetting,
|
||
|
widgetContainerProps: f.widgetContainerSetting,
|
||
|
onAfterClick: (m) => c(f.isRefresh, null)
|
||
|
},
|
||
|
f.uuid || p
|
||
|
)) }),
|
||
|
s && /* @__PURE__ */ h(
|
||
|
En,
|
||
|
{
|
||
|
size: "small",
|
||
|
total: r,
|
||
|
pageSize: o,
|
||
|
showSizeChanger: !1,
|
||
|
showTotal: (f) => `第 ${i} 页 / 总共 ${f} 条`,
|
||
|
onChange: a,
|
||
|
onShowSizeChange: l
|
||
|
}
|
||
|
)
|
||
|
] }) : null;
|
||
|
}, en = (e, t, n = !0) => n !== !0 && n-- <= 0 ? [] : d.isArray(e) && !d.isEmpty(e) ? e.reduce((s, r) => (Reflect.has(r, t) && Reflect.has(r, "children") && s.push(r[t]), Reflect.has(r, "children") && !d.isEmpty(r.children) ? s.concat(en(r.children, t, n)) : s), []) : [], tn = ({
|
||
|
className: e,
|
||
|
primaryKey: t,
|
||
|
columns: n,
|
||
|
dataSource: s,
|
||
|
operationRender: r,
|
||
|
operationWidth: i,
|
||
|
...o
|
||
|
}) => {
|
||
|
const a = j(null), l = j(null), [c, f] = F([]), [p, m] = F({ width: 0, height: 0 });
|
||
|
V(() => {
|
||
|
f(en(s, t));
|
||
|
}, [s, t]), pn(() => {
|
||
|
const y = new ResizeObserver(() => {
|
||
|
var b;
|
||
|
m({
|
||
|
width: ((b = a.current) == null ? void 0 : b.nativeElement.querySelector(".ant-table-body").scrollWidth) || l.current.offsetWidth,
|
||
|
height: l.current.offsetHeight
|
||
|
});
|
||
|
});
|
||
|
return l.current && y.observe(l.current), () => {
|
||
|
l.current && y.unobserve(l.current);
|
||
|
};
|
||
|
}, []);
|
||
|
const g = Ls(n);
|
||
|
return /* @__PURE__ */ h("div", { ref: l, className: Z("ff-data-list-table", e), children: p.height ? /* @__PURE__ */ h(
|
||
|
Tn,
|
||
|
{
|
||
|
...o,
|
||
|
ref: a,
|
||
|
rowKey: (y, b) => (y == null ? void 0 : y[t]) ?? b,
|
||
|
columns: g == null ? void 0 : g.concat(r ? [{
|
||
|
title: "操作",
|
||
|
align: "center",
|
||
|
fixed: "right",
|
||
|
width: `${Math.ceil(i / p.width * 100).toFixed(2)}%`,
|
||
|
render: (y, b, O) => r(b, O)
|
||
|
}] : []),
|
||
|
dataSource: s,
|
||
|
size: "middle",
|
||
|
scroll: { x: "max-content", y: p.height - 47 },
|
||
|
pagination: !1,
|
||
|
expandable: {
|
||
|
defaultExpandAllRows: !0,
|
||
|
expandRowByClick: !0,
|
||
|
onExpandedRowsChange: f,
|
||
|
expandedRowKeys: c
|
||
|
}
|
||
|
}
|
||
|
) : null });
|
||
|
};
|
||
|
tn.defaultProps = {
|
||
|
operationWidth: 180,
|
||
|
columns: [],
|
||
|
dataSource: []
|
||
|
};
|
||
|
const Is = ({ widget: e, widgetPrefix: t, basicForm: n, ...s }) => {
|
||
|
const r = e != null && e.startsWith("@") ? e : `${t}/${e}`, [i, o] = F();
|
||
|
return V(() => {
|
||
|
r && Q.getWidgetComponent(r).then(({ defaultProps: a, default: l }) => ({
|
||
|
default: Ws(l, a, n)
|
||
|
})).catch((a) => ({ default: () => `${a}` })).then((a) => o(C.createElement(a.default, s)));
|
||
|
}, [r]), i;
|
||
|
}, Ws = (e, t, n = null) => (s) => {
|
||
|
const {
|
||
|
code: r,
|
||
|
label: i,
|
||
|
extras: o,
|
||
|
isVirtual: a,
|
||
|
initialValue: l,
|
||
|
initialValueLanguage: c,
|
||
|
convertJs: f,
|
||
|
convertJsSetting: p,
|
||
|
value: m,
|
||
|
...g
|
||
|
} = d.merge({}, t, s), [y, b] = Bt(a ? null : r, {
|
||
|
initialValue: l,
|
||
|
initialValueLanguage: c,
|
||
|
convertJs: f,
|
||
|
convertJsSetting: p,
|
||
|
type: (g == null ? void 0 : g.type) || "string"
|
||
|
}, n);
|
||
|
return /* @__PURE__ */ h(e, { ...g, value: y, rawValue: b, $setting: o || {} });
|
||
|
};
|
||
|
Is.defaultProps = {
|
||
|
widgetPrefix: "@pkg/grid-layouts"
|
||
|
};
|
||
|
const nn = ({
|
||
|
cols: e,
|
||
|
rowHeight: t,
|
||
|
itemMargin: n,
|
||
|
fields: s,
|
||
|
primaryKey: r,
|
||
|
itemRender: i,
|
||
|
dataSource: o,
|
||
|
itemClassName: a,
|
||
|
empty: l
|
||
|
}) => {
|
||
|
const c = mn(), f = Re(() => /* @__PURE__ */ h(
|
||
|
Kt,
|
||
|
{
|
||
|
cols: e,
|
||
|
rowHeight: t,
|
||
|
itemMargin: n,
|
||
|
fields: s,
|
||
|
className: a
|
||
|
}
|
||
|
), [s, e, t, n]);
|
||
|
return d.isEmpty(o) ? l : o == null ? void 0 : o.map((p, m) => /* @__PURE__ */ h(C.Fragment, { children: i(C.cloneElement(f, { data: p }), p, m) }, `${c}-${(p == null ? void 0 : p[r]) || m}`));
|
||
|
};
|
||
|
nn.defaultProps = {
|
||
|
itemRender: (e, t, n) => e,
|
||
|
empty: /* @__PURE__ */ h(Gn, { description: null })
|
||
|
};
|
||
|
const Ps = ({ component: e }) => {
|
||
|
const { base62params: t } = zn();
|
||
|
return /* @__PURE__ */ h(
|
||
|
Jt,
|
||
|
{
|
||
|
listCode: e,
|
||
|
base62params: L.decode(t)
|
||
|
}
|
||
|
);
|
||
|
};
|
||
|
var pe, M, me, ye, Ae, Me;
|
||
|
const ne = class ne {
|
||
|
constructor() {
|
||
|
v(this, M, /* @__PURE__ */ new Map());
|
||
|
v(this, me, {});
|
||
|
v(this, ye, null);
|
||
|
N(this, "init", (t, n) => {
|
||
|
S(this, M, t), S(this, me, n);
|
||
|
});
|
||
|
N(this, "get", (t) => (u(this, M).has(t) || (t = Array.from(u(this, M).keys()).find((n) => u(this, M).get(n).uri === t)), u(this, M).get(t) || {}));
|
||
|
N(this, "redirect", (t, n, s = {}) => {
|
||
|
const { uri: r, type: i, widgetProps: o } = this.get(t) || {};
|
||
|
let a = On(r || t, i != "list" ? n : d.mapValues(n, (c) => L.encode(c)));
|
||
|
const l = new URLSearchParams();
|
||
|
for (const c in o || {})
|
||
|
(o == null ? void 0 : o.type) == "query" && l.append(c, n[c]);
|
||
|
return l.size > 0 && (a = `${a}?${l.toString()}`), u(this, ye).navigate(a, s);
|
||
|
});
|
||
|
/**
|
||
|
*
|
||
|
* @param {*} category // user, system, navigator
|
||
|
* @returns
|
||
|
*/
|
||
|
N(this, "getMenus", (t) => {
|
||
|
var n;
|
||
|
return ((n = u(this, me)) == null ? void 0 : n[t]) || [];
|
||
|
});
|
||
|
N(this, "findMenuPathByUuid", (t) => {
|
||
|
let n = [];
|
||
|
for (const s in u(this, me))
|
||
|
if (n = u(this, Ae).call(this, u(this, me)[s], t, [s]), n.length > 1)
|
||
|
return n;
|
||
|
return n;
|
||
|
});
|
||
|
N(this, "getMenusByRouteUuid", (t) => u(this, Me).call(this, t, Object.values(u(this, me)).flat()));
|
||
|
v(this, Ae, (t, n, s = []) => {
|
||
|
if (d.isEmpty(t))
|
||
|
return s;
|
||
|
for (const { uuid: r, children: i } of t) {
|
||
|
if (r == n)
|
||
|
return s.concat(r);
|
||
|
if (!d.isEmpty(i))
|
||
|
return s.concat(r, u(this, Ae).call(this, i, n));
|
||
|
}
|
||
|
return s;
|
||
|
});
|
||
|
v(this, Me, (t, n) => {
|
||
|
var r;
|
||
|
let s = [];
|
||
|
for (const i of n)
|
||
|
i.widgetType == "redirect" && (i.uuid == t || i.widget == t ? s.push(i) : (r = i.children) != null && r.length && (s = s.concat(u(this, Me).call(this, t, i.children))));
|
||
|
return s;
|
||
|
});
|
||
|
N(this, "getCurrentMenu", () => {
|
||
|
const { uuid: t } = this.getCurrentRoute() || {};
|
||
|
if (!t)
|
||
|
return;
|
||
|
const n = this.getMenusByRouteUuid(t);
|
||
|
if (!d.isEmpty(n))
|
||
|
return n[0];
|
||
|
});
|
||
|
N(this, "getCurrentRoute", (t = 0) => {
|
||
|
var s;
|
||
|
const n = (s = u(this, ye).state.matches[u(this, ye).state.matches.length - 1 - t]) == null ? void 0 : s.route;
|
||
|
if (!n)
|
||
|
return null;
|
||
|
for (let [r, i] of u(this, M))
|
||
|
if (i.uri === n.path)
|
||
|
return i;
|
||
|
return null;
|
||
|
});
|
||
|
N(this, "getPageParams", (t) => {
|
||
|
var i;
|
||
|
const { location: n, matches: s } = u(this, ye).state, r = ((i = s[s.length - 1]) == null ? void 0 : i.params) || {};
|
||
|
return n.search && new URLSearchParams(n.search).forEach((o, a) => {
|
||
|
r[a] = o;
|
||
|
}), t ? d.get(r, t) : r;
|
||
|
});
|
||
|
N(this, "createBrowserRouter", (t = {}) => {
|
||
|
if (u(this, M).size == 0)
|
||
|
return null;
|
||
|
const n = Ze.get("Common.WEBSITE_DEFAULT_THEME", "@pkg/frameworks/BasicLayout");
|
||
|
Ze.get(Bn() ? "Common.WEBSITE_LOGIN_REDIRECT" : "Common.WEBSITE_DEFAULT", "/index");
|
||
|
const s = { [n]: 0 }, r = Array.from(u(this, M).values()).reduce((i, { uuid: o, uri: a, name: l, type: c, component: f, isLogin: p, isLayout: m, extra: g }) => {
|
||
|
let y = {}, b = 0;
|
||
|
switch (c) {
|
||
|
case "list":
|
||
|
y.element = C.createElement(Ps, { component: f });
|
||
|
break;
|
||
|
case "fsdpf-component":
|
||
|
y.lazy = () => Q.getWidgetComponent(f).then((O) => ({ Component: O.default }));
|
||
|
break;
|
||
|
}
|
||
|
if (g != null && g.layout)
|
||
|
if (s[g == null ? void 0 : g.layout])
|
||
|
b = s[g == null ? void 0 : g.layout];
|
||
|
else
|
||
|
return s[g == null ? void 0 : g.layout] = i.length, [...i, {
|
||
|
path: "/",
|
||
|
lazy: () => Q.getWidgetComponent(g == null ? void 0 : g.layout).then((O) => ({ Component: O.default })),
|
||
|
children: [{ path: a, ...y }]
|
||
|
}];
|
||
|
return m && b > -1 ? (i[b].children.push({ path: a, ...y }), i) : [...i, { path: a, ...y }];
|
||
|
}, [
|
||
|
{
|
||
|
path: "/",
|
||
|
lazy: () => Q.getWidgetComponent(n).then((i) => ({ Component: i.default })),
|
||
|
children: []
|
||
|
}
|
||
|
]);
|
||
|
return S(this, ye, $n(r, t));
|
||
|
});
|
||
|
if (u(ne, pe))
|
||
|
return u(ne, pe);
|
||
|
}
|
||
|
};
|
||
|
pe = new WeakMap(), M = new WeakMap(), me = new WeakMap(), ye = new WeakMap(), Ae = new WeakMap(), Me = new WeakMap(), v(ne, pe, null), N(ne, "getInstance", () => (u(ne, pe) || S(ne, pe, new ne()), u(ne, pe)));
|
||
|
let pt = ne;
|
||
|
const ve = pt.getInstance(), Te = new Worker(new URL("data:text/plain;base64,KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2ltcG9ydFNjcmlwdHMoImh0dHBzOi8vYXNzZXRzLmZzZHBmLm5ldC9qcy91bWQvbG9kYXNoQDRfMTdfMjEubWluLmpzIiwiaHR0cHM6Ly9hc3NldHMuZnNkcGYubmV0L2pzL3VtZC9sb2Rhc2gubWl4aW4uanMiKSxpbXBvcnRTY3JpcHRzKCJodHRwczovL2Fzc2V0cy5mc2RwZi5uZXQvanMvdW1kL21vbWVudEAyXzI5XzQubWluLmpzIiwiaHR0cHM6Ly9hc3NldHMuZnNkcGYubmV0L2pzL3VtZC9tb21lbnQubG9jYWxlLnpoLWNuLmpzIiksbW9tZW50LmxvY2FsZSgiemgtY24iKTtjb25zdCBVdGlsPShlLHMpPT57Y29uc3QgdD1VdGlsLm1zZ19pZCsrO3JldHVybiBuZXcgUHJveHkoKCk9Pnt9LHtnZXQoe3Jvb3Q6YX0sbil7Y29uc3Qgbz1hP2Ake2F9LyR7bn1gOm47cmV0dXJuIGZ1bmN0aW9uKC4uLmkpe3JldHVybiBuZXcgUHJvbWlzZSgocixsKT0+e1V0aWwubVF1ZXVlLnNldCh0LFtyLGxdKSxzZWxmLnBvc3RNZXNzYWdlKHtpZDp0LHRhc2tfaWQ6ZSxzZXNzaW9uOnMsY2F0ZWdvcnk6InV0aWwiLG1ldGhvZDpvLGFyZ3M6aX0pfSl9fSxhcHBseShhLG4sbyl7cmV0dXJuIG5ldyBQcm94eShPYmplY3QuY3JlYXRlKHtyb290Om9bMF18fG51bGx9KSx7Z2V0OnRoaXMuZ2V0fSl9fSl9O1V0aWwubXNnX2lkPTAsVXRpbC5tUXVldWU9bmV3IE1hcCxVdGlsLm1NZXRob2RXb3Jrc3BhY2U9bmV3IE1hcCxzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGZ1bmN0aW9uKHtkYXRhOntpZDplLGRhdGE6cyxlcnJvcjp0LGNhdGVnb3J5OmF9fSl7YT09PSJ1dGlsIiYmKHQhPT1udWxsP1V0aWwubVF1ZXVlLmdldChlKVsxXSh0KTpVdGlsLm1RdWV1ZS5nZXQoZSlbMF0ocyksVXRpbC5tUXVldWUuZ2V0KGUpLFV0aWwubVF1ZXVlLmRlbGV0ZShlKSl9LCExKSxzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCh7ZGF0YTp7aWQsbWV0aG9kLGFyZ3MsY2F0ZWdvcnksc2Vzc2lvbixzb3VyY2VVUkx9fSk9PntpZihjYXRlZ29yeSE9PSJldmFsIilyZXR1cm47c2Vzc2lvbiYmIVV0aWwubU1ldGhvZFdvcmtzcGFjZS5oYXMoc2Vzc2lvbikmJlV0aWwubU1ldGhvZFdvcmtzcGFjZS5zZXQoc2Vzc2lvbix7fSk7Y29uc3QgZXZhbERhdGFTb3VyY2VVUkw9c291cmNlVVJMP2AKLy8jIHNvdXJjZVVSTD1mZjovLy8uLyR7c291cmNlVVJMfWA6IiIsZXZhbERhdGE9ZXZhbChgKGFzeW5jIGZ1bmN0aW9uKHske09iamVjdC5rZXlzKGFyZ3MpLmpvaW4oIiwgIil9fSwgVXRpbCl7JHttZXRob2R9Cn0pJHtldmFsRGF0YVNvdXJjZVVSTH1gKS5jYWxsKHNlc3Npb24/VXRpbC5tTWV0aG9kV29ya3NwYWNlLmdldChzZXNzaW9uKTp7fSxhcmdzLFV0aWwoaWQsc2Vzc2lvbikpO3JldHVybiBQcm9taXNlLnJlc29sdmUoZXZhbERhdGEpLnRoZW4oZT0+e3NlbGYucG9zdE1lc3NhZ2Uoe2lkLHNlc3Npb24sY2F0ZWdvcnksZGF0YTplLGVycm9yOm51bGx9KX0pLmNhdGNoKGU9PntzZWxmLnBvc3RNZXNzYWdlKHtpZCxzZXNzaW9uLGNhdGVnb3J5LGRhdGE6bnVsbCxlcnJvcjplIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uJiZlLm5hbWU9PT0iRGF0YUNsb25lRXJyb3IiPyJEYXRhQ2xvbmVFcnJvciDov5Tlm57nu5Pmnpzlj6rog73kuLrnroDljZXmlbDmja7moLzlvI8iOmV9KX0pfSksc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoe2RhdGE6e2NhdGVnb3J5OmUsc2Vzc2lvbjpzfX0pPT57ZT09PSJjbGVhciImJlV0aWwubU1ldGhvZFdvcmtzcGFjZS5kZWxldGUocyl9LCExKX0pKCk7Cg==", self.location)), Gt = {
|
||
|
getConfigure: (e) => Ze.get(e),
|
||
|
route: {
|
||
|
redirect: (...e) => ve.redirect(...e),
|
||
|
getPageParams: (...e) => ve.getPageParams(...e),
|
||
|
getCurrentRoute: () => ve.getCurrentRoute()
|
||
|
},
|
||
|
modal: {
|
||
|
notification: (...e) => w.notification(...e),
|
||
|
success: (...e) => w.success(...e),
|
||
|
error: (...e) => w.error(...e)
|
||
|
}
|
||
|
};
|
||
|
var rt, Ue, be;
|
||
|
const I = class I {
|
||
|
constructor() {
|
||
|
N(this, "exec", (t, n = {}, s = {}, r = "") => new Promise((i, o) => {
|
||
|
const a = Xe(I, rt)._++;
|
||
|
u(I, Ue).set(a, s), I.mQueue.set(a, [i, o]), Te.postMessage({ id: a, session: r, category: "eval", method: t, args: n });
|
||
|
}));
|
||
|
N(this, "clear", (t) => Te.postMessage({ session: t, category: "clear" }));
|
||
|
if (u(I, be))
|
||
|
return u(I, be);
|
||
|
Promise.resolve().then(() => Zs).then((t) => {
|
||
|
Gt.http = t.http;
|
||
|
}), Te.addEventListener("message", ({ data: { id: t, task_id: n, method: s, args: r, category: i, data: o, error: a, session: l } }) => {
|
||
|
if (i === "eval" && I.mQueue.has(t))
|
||
|
a !== null ? I.mQueue.get(t)[1](a) : I.mQueue.get(t)[0](o), u(I, Ue).delete(t), I.mQueue.delete(t);
|
||
|
else if (i === "util")
|
||
|
try {
|
||
|
const c = d.get(Gt, s.split("/")) || d.get(u(I, Ue).get(n), s.split("/"));
|
||
|
if (!d.isFunction(c))
|
||
|
throw `${s} not found`;
|
||
|
Promise.resolve(Reflect.apply(c, void 0, r)).then((f) => {
|
||
|
Te.postMessage({ id: t, task_id: n, category: i, method: s, args: r, session: l, data: f, error: null });
|
||
|
}).catch((f) => {
|
||
|
Te.postMessage({ id: t, task_id: n, category: i, method: s, args: r, session: l, data: null, error: f });
|
||
|
});
|
||
|
} catch (c) {
|
||
|
Te.postMessage({ id: t, task_id: n, category: i, method: s, args: r, session: l, data: null, error: c });
|
||
|
}
|
||
|
}, !1);
|
||
|
}
|
||
|
};
|
||
|
rt = new WeakMap(), Ue = new WeakMap(), be = new WeakMap(), N(I, "mQueue", /* @__PURE__ */ new Map()), v(I, rt, 0), v(I, Ue, /* @__PURE__ */ new Map()), v(I, be, null), N(I, "getInstance", () => (u(I, be) || S(I, be, new I()), u(I, be)));
|
||
|
let mt = I;
|
||
|
const Ne = mt.getInstance();
|
||
|
var Ce, Y;
|
||
|
const se = class se {
|
||
|
constructor() {
|
||
|
v(this, Y, /* @__PURE__ */ new Map());
|
||
|
N(this, "setVendor", (t, n) => u(this, Y).set(t, new Dt(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("@ff/"), [, s] = t == null ? void 0 : t.split("@app/"), [, r] = t == null ? void 0 : t.split("@pkg/"), [, i] = t == null ? void 0 : t.split("@fsdpf/");
|
||
|
try {
|
||
|
switch (!0) {
|
||
|
case (!!n && u(this, Y).has("pkg")):
|
||
|
return await u(this, Y).get("pkg").get(n);
|
||
|
case (!!s && u(this, Y).has("pkg")):
|
||
|
return await u(this, Y).get("pkg").get(s);
|
||
|
case (!!r && u(this, Y).has("pkg")):
|
||
|
return await u(this, Y).get("pkg").get(r);
|
||
|
case (!!i && u(this, Y).has("pkg")):
|
||
|
return await u(this, Y).get("pkg").get(i);
|
||
|
}
|
||
|
} catch (o) {
|
||
|
throw o;
|
||
|
}
|
||
|
});
|
||
|
if (u(se, Ce))
|
||
|
return u(se, Ce);
|
||
|
}
|
||
|
};
|
||
|
Ce = new WeakMap(), Y = new WeakMap(), v(se, Ce, null), N(se, "getInstance", () => (u(se, Ce) || S(se, Ce, new se()), u(se, Ce)));
|
||
|
let yt = se;
|
||
|
const Q = yt.getInstance(), St = {
|
||
|
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"
|
||
|
};
|
||
|
d.mixin({
|
||
|
toPairsDeep: (e, t) => d.flatMap(
|
||
|
d.toPairs(e),
|
||
|
([n, s]) => d.isObjectLike(s) ? d.toPairsDeep(s, n) : [[`${d.isUndefined(t) ? "" : t + "."}${n}`, s]]
|
||
|
),
|
||
|
deepSome: (e, t = () => !1) => d.some(e, (n) => {
|
||
|
if (d.some(n, t))
|
||
|
return !0;
|
||
|
if (!d.isEmpty(n) && (d.isPlainObject(n) || d.isArray(n)))
|
||
|
return d.deepSome(n, t);
|
||
|
}),
|
||
|
toPrimitive: (e, t) => {
|
||
|
let n = "string";
|
||
|
Array.isArray(e) ? n = "array" : n = typeof e, d.isObject(e) && (n = "json");
|
||
|
const s = `${n}2${t}`;
|
||
|
return Reflect.has(St, s) ? St[s](e) : e;
|
||
|
},
|
||
|
replaceKeys: (e, t) => !e || typeof e != "object" ? e : Array.isArray(e) ? e.map((n) => d.replaceKeys(n, t)) : Object.keys(e).reduce((n, s) => (t[s] ? n[t[s]] = d.replaceKeys(e[s], t) : n[s] = d.replaceKeys(e[s], t), n), {})
|
||
|
});
|
||
|
let Ft = "";
|
||
|
const L = {
|
||
|
init: (e, t, n) => {
|
||
|
je.defaults.baseURL = Ft = n, je.defaults.timeout = 15e3, Object.assign(L, new bt(e, t, je));
|
||
|
}
|
||
|
}, sn = (e) => {
|
||
|
var t;
|
||
|
return e && (e == null ? void 0 : e.name) && ((e == null ? void 0 : e.prototype) instanceof C.Component || (e == null ? void 0 : e.name.substr(0, 1)) === ((t = e.name.substr(0, 1)) == null ? void 0 : t.toUpperCase()));
|
||
|
}, Zs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
||
|
__proto__: null,
|
||
|
AppGlobalParamsContext: $t,
|
||
|
get AppUrl() {
|
||
|
return Ft;
|
||
|
},
|
||
|
cache: Dt,
|
||
|
configure: Ze,
|
||
|
core: Q,
|
||
|
default: Yn,
|
||
|
func: Ne,
|
||
|
http: L,
|
||
|
isReactComponent: sn,
|
||
|
route: ve
|
||
|
}, Symbol.toStringTag, { value: "Module" })), nr = () => 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)), sr = () => L.get("/api/my-menu"), rr = () => L.get("api/init-configure"), ir = () => L.get("/api/init-widget-operation-auth").then((e) => e.reduce((t, { uuid: n, auth: s }) => [...t, [n, s]], [])), or = (e) => L.get(`/api/user-wx-phone-number/${e}`);
|
||
|
export {
|
||
|
Ze as $,
|
||
|
Qt as A,
|
||
|
R as B,
|
||
|
qt as C,
|
||
|
ks as D,
|
||
|
kt as E,
|
||
|
w as F,
|
||
|
cs as G,
|
||
|
_t as H,
|
||
|
Ct as I,
|
||
|
Jt as J,
|
||
|
xe as K,
|
||
|
tn as L,
|
||
|
nn as M,
|
||
|
vs as N,
|
||
|
Fs as O,
|
||
|
Ls as P,
|
||
|
er as Q,
|
||
|
Xt as R,
|
||
|
Ee as S,
|
||
|
tr as T,
|
||
|
Tt as U,
|
||
|
Ft as V,
|
||
|
L as W,
|
||
|
sn as X,
|
||
|
Yn as Y,
|
||
|
$t as Z,
|
||
|
Dt as _,
|
||
|
As as a,
|
||
|
Ne as a0,
|
||
|
Q as a1,
|
||
|
ve as a2,
|
||
|
nr as a3,
|
||
|
sr as a4,
|
||
|
rr as a5,
|
||
|
ir as a6,
|
||
|
or as a7,
|
||
|
Kn as b,
|
||
|
Bn as c,
|
||
|
Js as d,
|
||
|
Wt as e,
|
||
|
Mn as f,
|
||
|
Rt as g,
|
||
|
ot as h,
|
||
|
Qs as i,
|
||
|
qs as j,
|
||
|
J as k,
|
||
|
Ms as l,
|
||
|
Ys as m,
|
||
|
Mt as n,
|
||
|
Nt as o,
|
||
|
as as p,
|
||
|
ls as q,
|
||
|
_n as r,
|
||
|
us as s,
|
||
|
gs as t,
|
||
|
jt as u,
|
||
|
ps as v,
|
||
|
en as w,
|
||
|
_s as x,
|
||
|
Kt as y,
|
||
|
Is as z
|
||
|
};
|