UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

706 lines (705 loc) 22.5 kB
import { defineComponent as $e, ref as B, inject as _e, watch as W, reactive as Y, createVNode as Z } from "vue"; import { mergeWith as z, cloneDeep as He, merge as h } from "lodash-es"; import We from "../accordion/index.esm.js"; import Ye from "../../designer/avatar/index.esm.js"; import ze from "../../designer/approval-logs/index.esm.js"; import Je from "../../designer/button-edit/index.esm.js"; import Qe from "../button-group/index.esm.js"; import qe from "../button/index.esm.js"; import re from "../calendar/index.esm.js"; import Xe from "../../designer/capsule/index.esm.js"; import $ from "../../designer/checkbox/index.esm.js"; import w from "../../designer/checkbox-group/index.esm.js"; import te from "../combo-list/index.esm.js"; import Ze from "../combo-tree/index.esm.js"; import he from "../component/index.esm.js"; import we from "../color-picker/index.esm.js"; import oe from "../content-container/index.esm.js"; import ne from "../../designer/date-picker/index.esm.js"; import se from "../../designer/data-grid/index.esm.js"; import Se from "../dropdown/index.esm.js"; import ie from "../../designer/dynamic-form/index.esm.js"; import er from "../events-editor/index.esm.js"; import rr from "../filter-bar/index.esm.js"; import tr from "../field-selector/index.esm.js"; import or from "../binding-selector/index.esm.js"; import nr from "../image-cropper/index.esm.js"; import ce from "../../designer/input-group/index.esm.js"; import sr from "../layout/index.esm.js"; import ir from "../list-nav/index.esm.js"; import pe from "../../designer/list-view/index.esm.js"; import le from "../lookup/index.esm.js"; import cr from "../mapping-editor/index.esm.js"; import pr from "../../designer/nav/index.esm.js"; import lr from "../number-range/index.esm.js"; import fe from "../../designer/number-spinner/index.esm.js"; import fr from "../order/index.esm.js"; import ue from "../page-header/index.esm.js"; import ur from "../page-footer/index.esm.js"; import ar from "../pagination/index.esm.js"; import mr from "../progress/index.esm.js"; import ae from "../query-solution/index.esm.js"; import me from "../../designer/radio-group/index.esm.js"; import gr from "../../designer/rate/index.esm.js"; import dr from "../../designer/response-toolbar/index.esm.js"; import ge from "../response-layout/index.esm.js"; import yr from "../../designer/response-layout-editor/index.esm.js"; import Fr from "../search-box/index.esm.js"; import de from "../../designer/section/index.esm.js"; import br from "../smoke-detector/index.esm.js"; import vr from "../splitter/index.esm.js"; import Cr from "../step/index.esm.js"; import ye from "../../designer/switch/index.esm.js"; import Fe from "../../designer/tabs/index.esm.js"; import Er from "../../designer/tags/index.esm.js"; import Pr from "../text/index.esm.js"; import be from "../../designer/time-picker/index.esm.js"; import kr from "../transfer/index.esm.js"; import Rr from "../tree-view/index.esm.js"; import Mr from "../uploader/index.esm.js"; import Or from "../verify-detail/index.esm.js"; import Tr from "../video/index.esm.js"; import ve from "../../designer/textarea/index.esm.js"; import Dr from "../schema-selector/index.esm.js"; import jr from "../../designer/tree-grid/index.esm.js"; import Ar from "../event-parameter/index.esm.js"; import Vr from "../filter-condition-editor/index.esm.js"; import Ce from "../fieldset/index.esm.js"; import Nr from "../sort-condition-editor/index.esm.js"; import Kr from "../menu-lookup/index.esm.js"; import Ir from "../../designer/drawer/index.esm.js"; import xr from "../json-editor/index.esm.js"; import Br from "../property-editor/index.esm.js"; import Lr from "../expression-editor/index.esm.js"; import Ur from "../code-editor/index.esm.js"; import Ee from "../html-template/index.esm.js"; import Gr from "../collection-property-editor/index.esm.js"; import $r from "../../designer/modal/index.esm.js"; import _r from "../external-container/index.esm.js"; import Pe from "../language-textbox/index.esm.js"; import ke from "../image/index.esm.js"; import Hr from "../comment/index.esm.js"; import Wr from "../../designer/wizard/index.esm.js"; import { schemaResolverMap as Yr, propertyEffectMap as zr, propertyConfigSchemaMap as Jr, schemaMap as Qr, createPropsResolver as qr, createEventsResolver as Re, createFormBindingResolver as Xr } from "../dynamic-resolver/index.esm.js"; import { useThirdComponent as Zr, withInstall as hr } from "../common/index.esm.js"; const wr = { /** * schema */ schema: { type: Object, default: null }, /** * 组件值 */ modelValue: { type: Object, default: null }, /** * 回调 */ callback: { type: Function, default: () => { } }, /** * 自定义组件渲染器 */ customComponentRenders: { type: Object, default: null } }, { globalStorageKey: Sr } = Zr(), o = {}, n = {}, s = {}, t = {}, Uo = [ se, ae, Ce, ce, fe, ne, Pe, le, ie, ke, $, $, te, me, ye, ve, be, ge, de, ue, Fe, pe, oe, Ee, re ]; async function et() { { const r = { schemaMap: Qr, propertyConfigSchemaMap: Jr, propertyEffectMap: zr, schemaResolverMap: Yr }; Ye.register(o, n, s, t), We.register(o, n, s, t), ze.register(o, n, s, t, r), Je.register(o, n, s, t), Qe.register(o, n, s, t), qe.register(o, n, s, t), re.register(o, n, s, t, r), Xe.register(o, n, s, t), $.register(o, n, s, t, r), w.register(o, n, s, t, r), $.register(o, n, s, t, r), w.register(o, n, s, t, r), te.register(o, n, s, t, r), Ze.register(o, n, s, t, r), he.register(o, n, s, t), oe.register(o, n, s, t, r), we.register(o, n, s, t, r), ne.register(o, n, s, t, r), se.register(o, n, s, t, r), Se.register(o, n, s, t), ie.register(o, n, s, t, r), er.register(o, n, s, t), Lr.register(o, n, s, t), rr.register(o, n, s, t, r), tr.register(o, n, s, t), Vr.register(o, n, s, t), nr.register(o, n, s, t, r), ce.register(o, n, s, t, r), sr.register(o, n, s, t, r), pe.register(o, n, s, t, r), ir.register(o, n, s, t), le.register(o, n, s, t, r), cr.register(o, n, s, t), pr.register(o, n, s, t, r), lr.register(o, n, s, t, r), fe.register(o, n, s, t, r), fr.register(o, n, s, t), ue.register(o, n, s, t, r), ur.register(o, n, s, t), ar.register(o, n, s, t, r), mr.register(o, n, s, t, r), ae.register(o, n, s, t, r), me.register(o, n, s, t, r), gr.register(o, n, s, t, r), ge.register(o, n, s, t, r), yr.register(o, n, s, t), dr.register(o, n, s, t, r), Dr.register(o, n, s), Fr.register(o, n, s, t, r), de.register(o, n, s, t, r), br.register(o, n, s, t), vr.register(o, n, s, t, r), Cr.register(o, n, s, t, r), ye.register(o, n, s, t, r), Nr.register(o, n, s, t), Fe.register(o, n, s, t, r), Er.register(o, n, s, t, r), Pr.register(o, n, s, t), be.register(o, n, s, t, r), kr.register(o, n, s, t, r), Rr.register(o, n, s, t, r), Or.register(o, n, s, t), Mr.register(o, n, s, t, r), Tr.register(o, n, s, t), ve.register(o, n, s, t, r), jr.register(o, n, s, t, r), or.register(o, n, s, t, r), Ar.register(o, n, s, t, r), Ce.register(o, n, s, t, r), Kr.register(o, n, s, t, r), Ir.register(o, n, s, t, r), xr.register(o, n, s, t, r), Br.register(o, n, s, t, r), Ur.register(o, n, s, t), Ee.register(o, n, s, t, r), Gr.register(o, n, s, t), $r.register(o, n, s, t), _r.register(o, n, s, t), Pe.register(o, n, s, t, r), ke.register(o, n, s, t, r), Hr.register(o, n, s, t, r), Wr.register(o, n, s, t, r); const F = window[Sr]; if (F) for (const d in F) F[d].createPropsResolver = qr, F[d].register(o, n, s); } } function Go(r) { r && typeof r.register == "function" && r.register(o, n, s, t); } function Me(r, F) { function d(k, g, l, f) { r.emit("event", { token: k, name: g, type: l, payloads: f, schema: F }); } return { dispatch: d }; } function rt() { const r = /* @__PURE__ */ new Map(); function F(m, a) { r.set(m, a); } function d(m) { const a = r.get(m); return a || (console.warn(`Instance with id ${m} not found`), null); } function k(m) { r.delete(m); } function g(m, a) { if (!r.has(m)) { console.warn(`Instance with id ${m} not found`); return; } r.set(m, a); } function l(m) { return r.has(m); } function f() { return new Map(r); } function b() { r.clear(); } return { register: F, get: d, remove: k, update: g, has: l, getAll: f, clear: b }; } function S(r, F) { function d(f) { return r.value && r.value[f]; } const k = []; function g(f) { k.push(f); } function l(f, b, m) { const a = r.value ? r.value[f] : void 0; r.value && (r.value[f] = m), b && (F && F.emit("update:modelValue", { elementId: f, field: b, value: m, modelValue: r.value }), k.forEach((v) => { v({ elementId: f, field: b, value: m, oldValue: a, modelValue: r.value }); })); } return { getValue: d, setValue: l, onValueChange: g }; } function Oe(r) { function F() { var d, k; return ((k = (d = r == null ? void 0 : r.module) == null ? void 0 : d.entity[0]) == null ? void 0 : k.entities[0]) || {}; } return { getSchemaEntity: F }; } function tt(r) { const { getSchemaEntity: F } = Oe(r); function d(l) { const f = F(); return g(f, l); } function k(l) { var v, y; const f = []; function b(R, N) { var V; const M = [...N, R.label]; (((V = l == null ? void 0 : l.type) == null ? void 0 : V.primary) || null) && f.push({ bindingPaths: M, primaryKey: R.type.primary, label: R.label }), R.type.entities.forEach((K) => { b(K, M); }); } return (((v = l == null ? void 0 : l.type) == null ? void 0 : v.primary) || null) && (f.push({ bindingPaths: [], primaryKey: l.type.primary, label: l.label }), (((y = l == null ? void 0 : l.type) == null ? void 0 : y.entities) || []).forEach((R) => { b(R, []); })), f; } function g(l, f, b = !0) { const m = b ? [] : [l.label]; if (l.label === f) return { bindingPaths: m, primaryKey: l.type.primary, label: l.label }; for (const a of l.type.entities) { const v = g(a, f, !1); if (v) return { bindingPaths: [...m, ...v.bindingPaths], primaryKey: v.primaryKey, label: v.label }; } return null; } return { resolveEntityByDataSource: d, resolveEntity: g, resolveEntities: k }; } function ot(r) { const F = {}, { getSchemaEntity: d } = Oe(r), { resolveEntities: k } = tt(r); function g() { const f = d(); k(f).forEach((m) => { const a = "/" + m.bindingPaths.join("/"), { primaryKey: v } = m, y = { primaryKey: v, bindingPath: a, label: m.label, currentId: null }; F[a] = y; }); } function l(f) { return Array.isArray(f) ? f = "/" + f.join("/") : f = "/" + f.split("/").filter((b) => b).join("/"), F[f]; } return { setup: g, get: l }; } function nt(r) { function F(d, k, g, l) { return r(d, k, g, l); } return { call: F }; } const ee = { COMPONENT_READY: "component:ready", COMPONENT_UNMOUNTED: "component:unmounted" }; function st() { function r(g, l) { if (Array.isArray(g) && Array.isArray(l)) { const f = /* @__PURE__ */ new Map(), b = l.find((y) => y && typeof y == "object"); if (!b) return l; const a = ["id"].find((y) => b[y] != null); return a ? (g.forEach((y) => { y[a] != null && f.set(y[a], y); }), l.forEach((y) => { if (y[a] != null) { const R = f.get(y[a]); R ? f.set(y[a], z(R, y, r)) : f.set(y[a], He(y)); } }), Array.from(f.values())) : l; } } function F(g) { function l(f, b, m, a) { return g ? g(f, b, m, a) : !0; } return { call: l }; } function d(g, l, f = "") { const b = g.type || f, m = t[b]; if (!m || Object.keys(m).length < 1) return { componentCallbackProps: {} }; const { callbackResolver: a, editorResolver: v } = m, y = F(l.value); let R = {}; a && (R = a.resolve(g, y)); let N = {}; if (v) { const M = v.resolve(g), I = M.type, V = t[I], { callbackResolver: K } = V || {}; K && (N = K.resolve(g, y, M)); } return { componentCallbackProps: R, editorCallbackProps: N }; } function k(g, l, f = "") { const b = g.type || f, m = Me(l, g), a = o[b], v = Re(), y = t[b], R = y ? y.editorResolver : null; if (R) { const M = v ? v(a, g, m) : {}, V = R.resolve(g).type, K = o[V], _ = v ? v(K, g, m) : {}; return { componentEventProps: M, editorEventProps: _ }; } return { componentEventProps: v ? v(a, g, m) : {} }; } return { mergeArray: r, resolveCallbacks: d, resolveEvents: k }; } const it = /* @__PURE__ */ $e({ name: "FDynamicView", props: wr, emits: ["update:modelValue", "event"], setup(r, F) { const d = B(r.schema), k = B(r.modelValue), g = B(r.callback), { customComponentRenders: l } = r, f = _e("parent"), b = /* @__PURE__ */ new Map(), m = /* @__PURE__ */ new Map(); et(); const a = rt(), v = S(k, F), y = B({}), R = S(y), N = ot(d.value); N.setup(); const M = /* @__PURE__ */ new Map(), { mergeArray: I } = st(); v.onValueChange((e) => { const { elementId: i, field: p, value: c } = e, u = M.get(i); u ? Object.assign(u == null ? void 0 : u.props, { modelValue: c }) : M.set(i, Y({ props: { modelValue: c } })); }); function V(e) { const i = e.type, { dataSource: p = void 0, binding: c = void 0 } = e; if (p === void 0 && c === void 0) return {}; let u = v; (c === null || p === null) && (u = R), p && m.set(p, e); const C = t[i]; return (C && C.bindingResolver ? C.bindingResolver : Xr()).resolve(e, u); } function K(e) { const i = {}; return e && Object.entries(e).forEach(([p, c]) => { i[p] = () => Array.isArray(c) ? c.map((u) => x(u)) : x(c); }), i; } function _(e) { const i = e.type, p = t[i]; if (!p || Object.keys(p).length < 1) return { componentCallbackProps: {} }; const { callbackResolver: c, editorResolver: u } = p, C = nt(g.value); let E = {}; c && (E = c.resolve(e, C)); let D = {}; if (u) { const P = u.resolve(e), A = P.type, O = t[A], { callbackResolver: T } = O || {}; T && (D = T.resolve(e, C, P)); } return { componentCallbackProps: E, editorCallbackProps: D }; } function Te(e) { const i = e.type, p = Me(F, e), c = o[i], u = Re(), C = t[i], E = C ? C.editorResolver : null; if (E) { const P = u ? u(c, e, p) : {}, O = E.resolve(e).type, T = o[O], j = u ? u(T, e, p) : {}; return { componentEventProps: P, editorEventProps: j }; } return { componentEventProps: u ? u(c, e, p) : {} }; } function De(e) { return {}; } function je(e) { var P, A; const i = e.type, p = n[i], c = p ? p(e) : {}, u = { ...Te(e) }, C = { ..._(e) }, E = { ...c, ...V(e), ...De() }; return i === "component" && (E.code = (A = (P = d.value) == null ? void 0 : P.module) == null ? void 0 : A.code, E.parent = f), { props: { ...E, key: e.id, ref: (O) => { if (O && e.id && !a.has(e.id)) { a.register(e.id, O); const T = { token: e.id, name: ee.COMPONENT_READY, type: e.type, payloads: [B(O)], schema: e }; F.emit("event", T); } }, onVnodeUnmounted: (O) => { if (e.id && a.has(e.id)) { a.remove(e.id); const T = { token: e.id, name: ee.COMPONENT_UNMOUNTED, type: e.type, payloads: [O], schema: e }; F.emit("event", T); } } }, eventProps: u, callbackProps: C }; } function x(e, i) { var D; const p = e.type, c = o[p]; if (l && l[p]) return l[p](e, c, i); if (p === "component-ref") { const P = G().find((A) => A.id === e.component); if (P) return x(P); } if (e.id && b.set(e.id, e), !c) return null; const u = () => e.contents ? typeof e.contents == "string" ? e.contents : e.contents.map((P) => x(P, e)) : null, C = (P, A, O) => { let T; return O && O.length > 0 ? T = Z(P, { ...A }, O) : T = Z(P, { ...A }, null), T; }, E = ((D = M.get(e.id)) == null ? void 0 : D.props) || {}; return e.contents && e.contents.length > 0 ? C(c, E, [u()]) : e.slots ? C(c, E, [...Object.values(K(e.slots))]) : C(c, E); } function J(e) { e.$forceUpdate && e.$forceUpdate(); } function Ae(e) { const i = e.type, p = n[i]; return p ? p(e) : {}; } function Ve(e) { return R.getValue(e); } function Ne(e, i) { R.setValue(e, void 0, i); const p = Q(e); p && q(p); } function Q(e) { return b.get(e); } function Ke(e, i) { const p = b.get(e); if (!p) return; const c = a.get(e); if (!c) return; h(p, i); const u = p.type, C = t[u], E = C ? C.updateColumnsResolver : null; E && E.updateColumns(c, p), J(c); } function Ie(e) { var i; return (i = M.get(e)) == null ? void 0 : i.props; } function xe(e, i, p) { const c = M.get(e); c && ((p == null ? void 0 : p.mergeStrategy) === "replace" ? z(c.props, i, (u, C) => { if (Array.isArray(C)) return C; }) : z(c == null ? void 0 : c.props, i, I)); } function Be(e, i, ...p) { const c = a.get(e); if (c) { if (!c || typeof c[i] != "function") throw new Error(`Method ${i} not found on instance ${e}`); return c[i](...p); } } function Le(e, i) { const p = N.get(e); if (!p) return; const c = p.label, u = m.get(c); if (!u) return; const C = u.type, E = t[C], D = E ? E.selectionItemResolver : null; if (D) { const P = a.get(u.id); D.selectItemById(P, i); } } function H(e) { const i = e.type; if (i === "component-ref") { const j = G().find((Ge) => Ge.id === e.component); if (j) return H(j); } if (!o[i]) return; const { props: c, eventProps: u, callbackProps: C } = je(e), E = t[i], D = E ? E.editorResolver : null, { componentEventProps: P, editorEventProps: A } = u, { componentCallbackProps: O, editorCallbackProps: T } = C; if (P && Object.keys(P).length > 0 && Object.assign(c, P), O && Object.keys(O).length > 0 && Object.assign(c, O), D && A && Object.keys(A).length > 0) { const j = D.resolve(e); Object.assign(j, A); } if (D && T && Object.keys(T).length > 0) { const j = D.resolve(e); Object.assign(j, T); } if (c && Object.keys(c).length > 0) { const j = M.get(e.id); j ? h(j == null ? void 0 : j.props, c) : M.set(e.id, Y({ props: c })); } !e.contents || !Array.isArray(e.contents) || e.contents.forEach((j) => H(j)); } function Ue(e, i) { const p = n[e]; return p ? p(i, !1) : {}; } function L(e) { const i = e.type; if (i === "component-ref") { const c = G().find((u) => u.id === e.component); if (c) return L(c); } o[i] && (q(e), !(!e.contents || !Array.isArray(e.contents)) && e.contents.forEach((c) => L(c))); } function U() { var p, c; if (!d.value) return null; const e = G(); if (!e || !Array.isArray(e) || e.length < 1) return typeof d.value == "object" ? d.value : null; const i = e.find((u) => u.componentType && u.componentType.toLowerCase() === "frame"); return i ? (i.formCode = (c = (p = d.value) == null ? void 0 : p.module) == null ? void 0 : c.code, i) : typeof d.value == "object" ? d.value : null; } function q(e) { const i = V(e); if (i && Object.keys(i).length > 0) { const p = M.get(e.id); if (!p) M.set(e.id, Y({ props: i })); else { const c = { ...p == null ? void 0 : p.props }; Object.keys(i).forEach((u) => { c[u] = i[u]; }), Object.assign(p == null ? void 0 : p.props, c); } } } function G() { var e, i; return (i = (e = d.value) == null ? void 0 : e.module) == null ? void 0 : i.components; } W(() => r.modelValue, (e) => { k.value = e; const i = U(); i && L(i); }), W(() => y.value, (e) => { const i = U(); i && L(i); }, { deep: !0 }); function X(e) { if (e) { d.value = e; const i = U(); if (!i) return; H(i); } } return W(() => r.schema, (e) => { X(e); }), X(r.schema), F.expose({ componentManager: a, rerender: J, getProps: Ie, invoke: Be, setProps: xe, selectItemById: Le, getSchema: Q, setSchema: Ke, convertPartialSchemaToProps: Ue, getControlValue: Ve, setControlValue: Ne, resolveViewProps: Ae }), () => { const e = U(); return e ? x(e) : null; }; } }), $o = hr(it); export { it as FDynamicView, o as componentMap, n as componentPropsConverter, Uo as componentsForRegister, $o as default, wr as dynamicViewProps, et as loadRegister, Go as registerComponent, t as resolverMap, S as useBindingData, rt as useComponentManager, st as useDynamicViewUtils, ot as useEntityState, Oe as useFormSchema };