UNPKG

@xfc/vue3-form-render

Version:

Convert JSON to Vue Form

739 lines (738 loc) 22.9 kB
import { defineComponent as ze, inject as Ke, ref as Ee, onMounted as Ie, resolveComponent as Qe, h as I, mergeProps as ie, withDirectives as Xe, unref as Ye, provide as Ze, renderSlot as A } from "vue"; var Ue = typeof global == "object" && global && global.Object === Object && global, et = typeof self == "object" && self && self.Object === Object && self, x = Ue || et || Function("return this")(), V = x.Symbol, Pe = Object.prototype, tt = Pe.hasOwnProperty, rt = Pe.toString, T = V ? V.toStringTag : void 0; function nt(e) { var t = tt.call(e, T), r = e[T]; try { e[T] = void 0; var o = !0; } catch { } var h = rt.call(e); return o && (t ? e[T] = r : delete e[T]), h; } var ot = Object.prototype, at = ot.toString; function ct(e) { return at.call(e); } var it = "[object Null]", ut = "[object Undefined]", ue = V ? V.toStringTag : void 0; function W(e) { return e == null ? e === void 0 ? ut : it : ue && ue in Object(e) ? nt(e) : ct(e); } function H(e) { return e != null && typeof e == "object"; } var oe = Array.isArray; function J(e) { var t = typeof e; return e != null && (t == "object" || t == "function"); } var st = "[object AsyncFunction]", lt = "[object Function]", ft = "[object GeneratorFunction]", dt = "[object Proxy]"; function Re(e) { if (!J(e)) return !1; var t = W(e); return t == lt || t == ft || t == st || t == dt; } var Y = x["__core-js_shared__"], se = function() { var e = /[^.]+$/.exec(Y && Y.keys && Y.keys.IE_PROTO || ""); return e ? "Symbol(src)_1." + e : ""; }(); function pt(e) { return !!se && se in e; } var bt = Function.prototype, yt = bt.toString; function P(e) { if (e != null) { try { return yt.call(e); } catch { } try { return e + ""; } catch { } } return ""; } var ht = /[\\^$.*+?()[\]{}|]/g, vt = /^\[object .+?Constructor\]$/, jt = Function.prototype, _t = Object.prototype, mt = jt.toString, gt = _t.hasOwnProperty, Ot = RegExp( "^" + mt.call(gt).replace(ht, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$" ); function wt(e) { if (!J(e) || pt(e)) return !1; var t = Re(e) ? Ot : vt; return t.test(P(e)); } function At(e, t) { return e == null ? void 0 : e[t]; } function R(e, t) { var r = At(e, t); return wt(r) ? r : void 0; } var ee = R(x, "WeakMap"), le = Object.create, xt = /* @__PURE__ */ function() { function e() { } return function(t) { if (!J(t)) return {}; if (le) return le(t); e.prototype = t; var r = new e(); return e.prototype = void 0, r; }; }(), fe = function() { try { var e = R(Object, "defineProperty"); return e({}, "", {}), e; } catch { } }(); function St(e, t) { for (var r = -1, o = e == null ? 0 : e.length; ++r < o && t(e[r], r, e) !== !1; ) ; return e; } var Ft = 9007199254740991, Dt = /^(?:0|[1-9]\d*)$/; function zt(e, t) { var r = typeof e; return t = t ?? Ft, !!t && (r == "number" || r != "symbol" && Dt.test(e)) && e > -1 && e % 1 == 0 && e < t; } function Et(e, t, r) { t == "__proto__" && fe ? fe(e, t, { configurable: !0, enumerable: !0, value: r, writable: !0 }) : e[t] = r; } function Ve(e, t) { return e === t || e !== e && t !== t; } var It = Object.prototype, Ut = It.hasOwnProperty; function Pt(e, t, r) { var o = e[t]; (!(Ut.call(e, t) && Ve(o, r)) || r === void 0 && !(t in e)) && Et(e, t, r); } var Rt = 9007199254740991; function Ne(e) { return typeof e == "number" && e > -1 && e % 1 == 0 && e <= Rt; } function Vt(e) { return e != null && Ne(e.length) && !Re(e); } var Nt = Object.prototype; function Be(e) { var t = e && e.constructor, r = typeof t == "function" && t.prototype || Nt; return e === r; } function Bt(e, t) { for (var r = -1, o = Array(e); ++r < e; ) o[r] = t(r); return o; } var Mt = "[object Arguments]"; function de(e) { return H(e) && W(e) == Mt; } var Me = Object.prototype, $t = Me.hasOwnProperty, kt = Me.propertyIsEnumerable, Tt = de(/* @__PURE__ */ function() { return arguments; }()) ? de : function(e) { return H(e) && $t.call(e, "callee") && !kt.call(e, "callee"); }; function Ct() { return !1; } var $e = typeof exports == "object" && exports && !exports.nodeType && exports, pe = $e && typeof module == "object" && module && !module.nodeType && module, qt = pe && pe.exports === $e, be = qt ? x.Buffer : void 0, Lt = be ? be.isBuffer : void 0, ke = Lt || Ct, Wt = "[object Arguments]", Ht = "[object Array]", Gt = "[object Boolean]", Jt = "[object Date]", Kt = "[object Error]", Qt = "[object Function]", Xt = "[object Map]", Yt = "[object Number]", Zt = "[object Object]", er = "[object RegExp]", tr = "[object Set]", rr = "[object String]", nr = "[object WeakMap]", or = "[object ArrayBuffer]", ar = "[object DataView]", cr = "[object Float32Array]", ir = "[object Float64Array]", ur = "[object Int8Array]", sr = "[object Int16Array]", lr = "[object Int32Array]", fr = "[object Uint8Array]", dr = "[object Uint8ClampedArray]", pr = "[object Uint16Array]", br = "[object Uint32Array]", d = {}; d[cr] = d[ir] = d[ur] = d[sr] = d[lr] = d[fr] = d[dr] = d[pr] = d[br] = !0; d[Wt] = d[Ht] = d[or] = d[Gt] = d[ar] = d[Jt] = d[Kt] = d[Qt] = d[Xt] = d[Yt] = d[Zt] = d[er] = d[tr] = d[rr] = d[nr] = !1; function yr(e) { return H(e) && Ne(e.length) && !!d[W(e)]; } function ae(e) { return function(t) { return e(t); }; } var Te = typeof exports == "object" && exports && !exports.nodeType && exports, C = Te && typeof module == "object" && module && !module.nodeType && module, hr = C && C.exports === Te, Z = hr && Ue.process, N = function() { try { var e = C && C.require && C.require("util").types; return e || Z && Z.binding && Z.binding("util"); } catch { } }(), ye = N && N.isTypedArray, vr = ye ? ae(ye) : yr, jr = Object.prototype, _r = jr.hasOwnProperty; function mr(e, t) { var r = oe(e), o = !r && Tt(e), h = !r && !o && ke(e), c = !r && !o && !h && vr(e), b = r || o || h || c, _ = b ? Bt(e.length, String) : [], u = _.length; for (var s in e) _r.call(e, s) && !(b && // Safari 9 has enumerable `arguments.length` in strict mode. (s == "length" || // Node.js 0.10 has enumerable non-index properties on buffers. h && (s == "offset" || s == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays. c && (s == "buffer" || s == "byteLength" || s == "byteOffset") || // Skip index properties. zt(s, u))) && _.push(s); return _; } function Ce(e, t) { return function(r) { return e(t(r)); }; } var gr = Ce(Object.keys, Object), Or = Object.prototype, wr = Or.hasOwnProperty; function Ar(e) { if (!Be(e)) return gr(e); var t = []; for (var r in Object(e)) wr.call(e, r) && r != "constructor" && t.push(r); return t; } function xr(e) { return Vt(e) ? mr(e) : Ar(e); } var q = R(Object, "create"); function Sr() { this.__data__ = q ? q(null) : {}, this.size = 0; } function Fr(e) { var t = this.has(e) && delete this.__data__[e]; return this.size -= t ? 1 : 0, t; } var Dr = "__lodash_hash_undefined__", zr = Object.prototype, Er = zr.hasOwnProperty; function Ir(e) { var t = this.__data__; if (q) { var r = t[e]; return r === Dr ? void 0 : r; } return Er.call(t, e) ? t[e] : void 0; } var Ur = Object.prototype, Pr = Ur.hasOwnProperty; function Rr(e) { var t = this.__data__; return q ? t[e] !== void 0 : Pr.call(t, e); } var Vr = "__lodash_hash_undefined__"; function Nr(e, t) { var r = this.__data__; return this.size += this.has(e) ? 0 : 1, r[e] = q && t === void 0 ? Vr : t, this; } function U(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var o = e[t]; this.set(o[0], o[1]); } } U.prototype.clear = Sr; U.prototype.delete = Fr; U.prototype.get = Ir; U.prototype.has = Rr; U.prototype.set = Nr; function Br() { this.__data__ = [], this.size = 0; } function K(e, t) { for (var r = e.length; r--; ) if (Ve(e[r][0], t)) return r; return -1; } var Mr = Array.prototype, $r = Mr.splice; function kr(e) { var t = this.__data__, r = K(t, e); if (r < 0) return !1; var o = t.length - 1; return r == o ? t.pop() : $r.call(t, r, 1), --this.size, !0; } function Tr(e) { var t = this.__data__, r = K(t, e); return r < 0 ? void 0 : t[r][1]; } function Cr(e) { return K(this.__data__, e) > -1; } function qr(e, t) { var r = this.__data__, o = K(r, e); return o < 0 ? (++this.size, r.push([e, t])) : r[o][1] = t, this; } function z(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var o = e[t]; this.set(o[0], o[1]); } } z.prototype.clear = Br; z.prototype.delete = kr; z.prototype.get = Tr; z.prototype.has = Cr; z.prototype.set = qr; var L = R(x, "Map"); function Lr() { this.size = 0, this.__data__ = { hash: new U(), map: new (L || z)(), string: new U() }; } function Wr(e) { var t = typeof e; return t == "string" || t == "number" || t == "symbol" || t == "boolean" ? e !== "__proto__" : e === null; } function Q(e, t) { var r = e.__data__; return Wr(t) ? r[typeof t == "string" ? "string" : "hash"] : r.map; } function Hr(e) { var t = Q(this, e).delete(e); return this.size -= t ? 1 : 0, t; } function Gr(e) { return Q(this, e).get(e); } function Jr(e) { return Q(this, e).has(e); } function Kr(e, t) { var r = Q(this, e), o = r.size; return r.set(e, t), this.size += r.size == o ? 0 : 1, this; } function B(e) { var t = -1, r = e == null ? 0 : e.length; for (this.clear(); ++t < r; ) { var o = e[t]; this.set(o[0], o[1]); } } B.prototype.clear = Lr; B.prototype.delete = Hr; B.prototype.get = Gr; B.prototype.has = Jr; B.prototype.set = Kr; function Qr(e, t) { for (var r = -1, o = t.length, h = e.length; ++r < o; ) e[h + r] = t[r]; return e; } var Xr = Ce(Object.getPrototypeOf, Object); function Yr() { this.__data__ = new z(), this.size = 0; } function Zr(e) { var t = this.__data__, r = t.delete(e); return this.size = t.size, r; } function en(e) { return this.__data__.get(e); } function tn(e) { return this.__data__.has(e); } var rn = 200; function nn(e, t) { var r = this.__data__; if (r instanceof z) { var o = r.__data__; if (!L || o.length < rn - 1) return o.push([e, t]), this.size = ++r.size, this; r = this.__data__ = new B(o); } return r.set(e, t), this.size = r.size, this; } function M(e) { var t = this.__data__ = new z(e); this.size = t.size; } M.prototype.clear = Yr; M.prototype.delete = Zr; M.prototype.get = en; M.prototype.has = tn; M.prototype.set = nn; var qe = typeof exports == "object" && exports && !exports.nodeType && exports, he = qe && typeof module == "object" && module && !module.nodeType && module, on = he && he.exports === qe, ve = on ? x.Buffer : void 0; ve && ve.allocUnsafe; function an(e, t) { return e.slice(); } function cn(e, t) { for (var r = -1, o = e == null ? 0 : e.length, h = 0, c = []; ++r < o; ) { var b = e[r]; t(b, r, e) && (c[h++] = b); } return c; } function un() { return []; } var sn = Object.prototype, ln = sn.propertyIsEnumerable, je = Object.getOwnPropertySymbols, fn = je ? function(e) { return e == null ? [] : (e = Object(e), cn(je(e), function(t) { return ln.call(e, t); })); } : un; function dn(e, t, r) { var o = t(e); return oe(e) ? o : Qr(o, r(e)); } function pn(e) { return dn(e, xr, fn); } var te = R(x, "DataView"), re = R(x, "Promise"), ne = R(x, "Set"), _e = "[object Map]", bn = "[object Object]", me = "[object Promise]", ge = "[object Set]", Oe = "[object WeakMap]", we = "[object DataView]", yn = P(te), hn = P(L), vn = P(re), jn = P(ne), _n = P(ee), D = W; (te && D(new te(new ArrayBuffer(1))) != we || L && D(new L()) != _e || re && D(re.resolve()) != me || ne && D(new ne()) != ge || ee && D(new ee()) != Oe) && (D = function(e) { var t = W(e), r = t == bn ? e.constructor : void 0, o = r ? P(r) : ""; if (o) switch (o) { case yn: return we; case hn: return _e; case vn: return me; case jn: return ge; case _n: return Oe; } return t; }); var mn = Object.prototype, gn = mn.hasOwnProperty; function On(e) { var t = e.length, r = new e.constructor(t); return t && typeof e[0] == "string" && gn.call(e, "index") && (r.index = e.index, r.input = e.input), r; } var Ae = x.Uint8Array; function ce(e) { var t = new e.constructor(e.byteLength); return new Ae(t).set(new Ae(e)), t; } function wn(e, t) { var r = ce(e.buffer); return new e.constructor(r, e.byteOffset, e.byteLength); } var An = /\w*$/; function xn(e) { var t = new e.constructor(e.source, An.exec(e)); return t.lastIndex = e.lastIndex, t; } var xe = V ? V.prototype : void 0, Se = xe ? xe.valueOf : void 0; function Sn(e) { return Se ? Object(Se.call(e)) : {}; } function Fn(e, t) { var r = ce(e.buffer); return new e.constructor(r, e.byteOffset, e.length); } var Dn = "[object Boolean]", zn = "[object Date]", En = "[object Map]", In = "[object Number]", Un = "[object RegExp]", Pn = "[object Set]", Rn = "[object String]", Vn = "[object Symbol]", Nn = "[object ArrayBuffer]", Bn = "[object DataView]", Mn = "[object Float32Array]", $n = "[object Float64Array]", kn = "[object Int8Array]", Tn = "[object Int16Array]", Cn = "[object Int32Array]", qn = "[object Uint8Array]", Ln = "[object Uint8ClampedArray]", Wn = "[object Uint16Array]", Hn = "[object Uint32Array]"; function Gn(e, t, r) { var o = e.constructor; switch (t) { case Nn: return ce(e); case Dn: case zn: return new o(+e); case Bn: return wn(e); case Mn: case $n: case kn: case Tn: case Cn: case qn: case Ln: case Wn: case Hn: return Fn(e); case En: return new o(); case In: case Rn: return new o(e); case Un: return xn(e); case Pn: return new o(); case Vn: return Sn(e); } } function Jn(e) { return typeof e.constructor == "function" && !Be(e) ? xt(Xr(e)) : {}; } var Kn = "[object Map]"; function Qn(e) { return H(e) && D(e) == Kn; } var Fe = N && N.isMap, Xn = Fe ? ae(Fe) : Qn, Yn = "[object Set]"; function Zn(e) { return H(e) && D(e) == Yn; } var De = N && N.isSet, eo = De ? ae(De) : Zn, to = 1, Le = "[object Arguments]", ro = "[object Array]", no = "[object Boolean]", oo = "[object Date]", ao = "[object Error]", We = "[object Function]", co = "[object GeneratorFunction]", io = "[object Map]", uo = "[object Number]", He = "[object Object]", so = "[object RegExp]", lo = "[object Set]", fo = "[object String]", po = "[object Symbol]", bo = "[object WeakMap]", yo = "[object ArrayBuffer]", ho = "[object DataView]", vo = "[object Float32Array]", jo = "[object Float64Array]", _o = "[object Int8Array]", mo = "[object Int16Array]", go = "[object Int32Array]", Oo = "[object Uint8Array]", wo = "[object Uint8ClampedArray]", Ao = "[object Uint16Array]", xo = "[object Uint32Array]", l = {}; l[Le] = l[ro] = l[yo] = l[ho] = l[no] = l[oo] = l[vo] = l[jo] = l[_o] = l[mo] = l[go] = l[io] = l[uo] = l[He] = l[so] = l[lo] = l[fo] = l[po] = l[Oo] = l[wo] = l[Ao] = l[xo] = !0; l[ao] = l[We] = l[bo] = !1; function G(e, t, r, o, h, c) { var b, _ = t & to; if (b !== void 0) return b; if (!J(e)) return e; var u = oe(e); if (u) b = On(e); else { var s = D(e), g = s == We || s == co; if (ke(e)) return an(e); if (s == He || s == Le || g && !h) b = g ? {} : Jn(e); else { if (!l[s]) return h ? e : {}; b = Gn(e, s); } } c || (c = new M()); var O = c.get(e); if (O) return O; c.set(e, b), eo(e) ? e.forEach(function(m) { b.add(G(m, t, r, m, e, c)); }) : Xn(e) && e.forEach(function(m, a) { b.set(a, G(m, t, r, a, e, c)); }); var S = pn, E = u ? void 0 : S(e); return St(E || e, function(m, a) { E && (a = m, m = e[a]), Pt(b, a, G(m, t, r, a, e, c)); }), b; } var So = 1, Fo = 4; function Do(e) { return G(e, So | Fo); } const Ge = Symbol("renderInjection"), zo = function(e) { const t = {}, r = {}, o = function(c, b, _) { t[c] = b, _ && (r[c] = _); }, h = function(c) { delete t[c], delete r[c]; }; return { Render: ze({ name: "Render", props: { field: { type: Object, required: !0 }, modelValue: { type: [String, Number, Boolean, Array, Object], required: !1 }, readonly: { type: Boolean, required: !1, default: !1 } }, emits: { "update:modelValue": (c) => !0, input: (c) => !0 }, setup(c, { emit: b, slots: _, expose: u, attrs: s }) { const g = Ke(Ge, { readonly: c.readonly }), O = Ee(), S = {}; u(S), Ie(() => { if (O.value) { const a = Object.entries(O.value); for (const [y, j] of a) S[y] = j; } }); const E = (a) => { const y = {}; if (Object.keys(a.props).forEach((v) => y[v] = a.props[v]), y.ref = O, g.readonly) return y; y.modelValue = c.modelValue, y["onUpdate:modelValue"] = (v) => { b("update:modelValue", v), b("input", v); }; const j = a.on; return j && Object.keys(j).forEach((v) => { const w = j[v]; w && (y[v] = (...n) => { try { (typeof w == "string" ? new Function("event", "$inject", "ref", "field", w) : w).call(this, n, g, O, c.field); } catch (i) { console.error(i); } }); }), delete a.on, y; }, m = (a) => { const y = {}, j = a.slots || {}; return Object.keys(j).forEach((v) => y[v] = j[v]), delete a.slots, y; }; return () => { const a = Do(c.field), y = r[a.name]; y && y.call(this, a, g), e && e.call(this, a, g); const j = E(a), v = m(a), w = t[a.name] || Qe(a.name); if (!w || typeof w == "string") return I("span", { style: { color: "red" } }, `${a.name} component not registered`); const n = I(w, ie(j, s), ie(_, v)), i = [], f = { mounted() { const p = j.onMounted; p && p.call(this, void 0, g, O, c.field); }, unmounted() { const p = j.onUnmounted; p && p.call(this, void 0, g, O, c.field); } }; return i.push([f]), Xe(n, i); }; } }), addComponent: o, removeComponent: h, components: t, hooks: r }; }; function Io(e = {}) { const t = Ye(e), { Render: r, addComponent: o, removeComponent: h, components: c, hooks: b } = zo( t.globalHook ), _ = ze({ name: "FormRender", props: { field: { type: Object, required: !0 }, formData: { type: Object, required: !0 }, readonly: { type: Boolean, default: !1 } }, setup(u, { slots: s, attrs: g, expose: O }) { const S = Ee(), E = { formItem: (n) => { var f; if (u.readonly) return m(n); const i = (f = n.children) == null ? void 0 : f.map((p) => a(p)); return I( r, { field: n, modelValue: u.formData[n.id], "onUpdate:modelValue": (p) => { n.value = p, u.formData[n.id] = p; } }, i ); }, container: (n) => { var f; const i = (f = n.children) == null ? void 0 : f.map((p) => a(p)); return I( r, { field: n, modelValue: n.value, "onUpdate:modelValue": (p) => n.value = p }, i ); } }, m = (n) => { const i = u.formData[n.id]; let f = Array.isArray(i) ? i : [i]; if (n.props.options) { const $ = (Je) => { const X = []; for (const k of Je) f.includes(k.value) && X.push(k.label), k.children && k.children.length > 0 && X.push(...$(k.children)); return X; }; f = $(n.props.options); } const p = I("span", f.join(",")), F = A(s, "readonly", { value: i, field: n }, () => [p]); return A(s, `readonly-${n.name}`, { value: i, field: n }, () => [F]); }, a = (n) => { if (n.hidden) return; const i = { ...E, ...t.renders || {} }, f = i[n.id] || i[n.name] || i[n.type]; if (f) { const p = f(n), F = A(s, n.id, { node: p, field: n }, () => [p]), $ = A(s, n.name, { node: F, field: n }, () => [F]); return A(s, n.type, { node: $, field: n }, () => [$]); } return I("span", { style: { color: "red" } }, `No rendering found for ${n.id}`); }, y = (n) => { var i; n.type === "formItem" && (n.value !== void 0 ? u.formData[n.id] === void 0 && (u.formData[n.id] = n.value) : u.formData[n.id] === void 0 && (u.formData[n.id] = void 0)), (i = n.children) == null || i.forEach((f) => { y(f); }); }, j = () => { y(u.field); }, v = (n) => { const i = (f) => { if (f.id === n) return f; if (f.children) for (const p of f.children) { const F = i(p); if (F) return F; } }; return i(u.field); }; Ie(() => { if (S.value) { const n = Object.entries(S.value); for (const [i, f] of n) w[i] = f; } }), Ze(Ge, { readonly: u.readonly || !1, rootRef: S, formData: u.formData, getField: v, ...t.injects || {} }), j(); const w = { getField: v, initFormData: j, renderItem: a, renderReadonly: m, renders: E }; return O(w), () => { var p; if (u.field.hidden) return; const n = (p = u.field.children) == null ? void 0 : p.map((F) => a(F)), i = I(r, { field: u.field, ref: S, ...g }, [ A(s, "prepend", { field: u.field }), A(s, "default", { child: n, field: u.field }, () => [n]), A(s, "append", { field: u.field }) ]), f = A(s, u.field.id, { node: i, child: n, field: u.field }, () => [ i ]); return A(s, u.field.name, { node: i, child: n, field: u.field }, () => [ f ]); }; } }); return { Render: r, FormRender: _, addComponent: o, removeComponent: h, components: c, hooks: b }; } export { Ge as RENDER_INJECTION_KEY, Io as useFormRender, zo as useRender };