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