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