@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
706 lines (705 loc) • 22.5 kB
JavaScript
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
};