UNPKG

snowy-designer

Version:

基于Epic-Designer-Pro版本的设计器,可视化开发页面表单

141 lines (140 loc) 3.9 kB
import { reactive as g, inject as A, watch as h, nextTick as m } from "vue"; /* empty css */ import "radix-vue"; import "clsx"; import "tailwind-merge"; import "lucide-vue-next"; import "../../../ui-kit/base-ui/src/shadch-ui/button/index.js"; import "@vueuse/core"; import "../../../ui-kit/base-ui/src/shadch-ui/toast/index.js"; import "vuedraggable"; import { deepClone as k, deepEqual as y } from "../../../utils/src/common/data.js"; import "../store/index.js"; import "lodash"; import "../../../utils/src/manager/pluginManager.js"; import "monaco-editor"; import "../../../utils/src/request/index.js"; function B(s = null) { const f = g({}), d = A("pageManager"); let o = [], i = {}; h( () => f, (t) => { m(() => { for (const e in t) t[e] !== i[e] && (o == null || o.forEach((r) => { r.condition.conditions.map((n) => n.field).includes(e) && (a(r.condition) ? r.actions.forEach((n) => { u(n); }) : r.actions.filter((n) => n.reverseExecute).forEach((n) => { u(n, !0); })); })); i = k(t); }); }, { deep: !0 } ); function a(t) { return t.operator === "and" ? t.conditions.every((e) => { if (!e.field) return !0; const r = f[e.field]; return p(r, e); }) : t.operator === "or" ? t.conditions.some((e) => { if (!e.field) return !0; const r = f[e.field]; return p(r, e); }) : !0; } function p(t, e) { if (!e.value) return !1; switch (e.operator) { case "eq": return typeof t == "object" ? y(t, e.value) : t === e.value; case "gt": return (typeof t == "number" || typeof t == "string") && t > e.value; case "gte": return (typeof t == "number" || typeof t == "string") && t >= e.value; case "in": return c(t, e.value); case "lt": return (typeof t == "number" || typeof t == "string") && t < e.value; case "lte": return (typeof t == "number" || typeof t == "string") && t <= e.value; case "neq": return typeof t == "object" ? !y(t, e.value) : t !== e.value; case "nin": return !c(t, e.value); case "notNull": return t != null && t.length > 0; case "null": return t == null || t.length === 0; default: return !0; } } function u(t, e = !1) { if (!t.componentId || e && // 忽略对应的动作 ["setValue"].includes(t.trigger ?? "")) return; const r = d.find(t.componentId); if (r) switch (t.trigger) { case "disabled": { r.setAttr("disabled", !e); break; } case "enabled": { r.setAttr("disabled", e); break; } case "hide": { r.setAttr("hidden", !e); break; } case "notRequired": { r.setAttr("required", e), s == null || s(); break; } case "readonly": { r.setAttr("readOnly", !e); break; } case "readWrite": { r.setAttr("readOnly", e); break; } case "required": { r.setAttr("required", !e), s == null || s(); break; } case "show": { r.setAttr("hidden", e); break; } case "setValue": r.setValue(t.value); } } function b(t) { o = t; } function c(t, e) { if (Array.isArray(t) && Array.isArray(e)) { const r = new Set(t); return e.every((n) => r.has(n)); } else { if (Array.isArray(t) && typeof e != "object") return new Set(t).has(e); if (typeof t == "string" && typeof e == "string") return t.includes(e); } return !1; } return { formData: f, setLogicRules: b }; } export { B as useFormLogic };