UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

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