@xfc/vue3-form-render
Version:
Convert JSON to Vue Form
2 lines (1 loc) • 16.6 kB
JavaScript
(function(h,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(h=typeof globalThis<"u"?globalThis:h||self,a(h.Vue3FormRender={},h.Vue))})(this,function(h,a){"use strict";var ue=typeof global=="object"&&global&&global.Object===Object&&global,We=typeof self=="object"&&self&&self.Object===Object&&self,F=ue||We||Function("return this")(),M=F.Symbol,se=Object.prototype,He=se.hasOwnProperty,Ge=se.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]",le=M?M.toStringTag:void 0;function C(e){return e==null?e===void 0?Ze:Ye:le&&le 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\]$/,sr=Function.prototype,lr=Object.prototype,fr=sr.toString,dr=lr.hasOwnProperty,yr=RegExp("^"+fr.call(dr).replace(ir,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function br(e){if(!G(e)||or(e))return!1;var r=fe(e)?yr: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 br(t)?t:void 0}var Z=U(F,"WeakMap"),ye=Object.create,hr=function(){function e(){}return function(r){if(!G(r))return{};if(ye)return ye(r);e.prototype=r;var t=new e;return e.prototype=void 0,t}}(),be=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__"&&be?be(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 h=="object"&&h&&!h.nodeType&&h,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,Tr="[object Arguments]",Nr="[object Array]",Br="[object Boolean]",kr="[object Date]",Cr="[object Error]",$r="[object Function]",qr="[object Map]",xr="[object Number]",Lr="[object Object]",Wr="[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[Tr]=d[Nr]=d[Kr]=d[Br]=d[Qr]=d[kr]=d[Cr]=d[$r]=d[qr]=d[xr]=d[Lr]=d[Wr]=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 h=="object"&&h&&!h.nodeType&&h,q=Ae&&typeof module=="object"&&module&&!module.nodeType&&module,it=q&&q.exports===Ae,re=it&&ue.process,T=function(){try{var e=q&&q.require&&q.require("util").types;return e||re&&re.binding&&re.binding("util")}catch{}}(),Se=T&&T.isTypedArray,ut=Se?ee(Se):ct,st=Object.prototype,lt=st.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):[],s=g.length;for(var l in e)lt.call(e,l)&&!(p&&(l=="length"||v&&(l=="offset"||l=="parent")||i&&(l=="buffer"||l=="byteLength"||l=="byteOffset")||_r(l,s)))&&g.push(l);return g}function Fe(e,r){return function(t){return e(r(t))}}var dt=Fe(Object.keys,Object),yt=Object.prototype,bt=yt.hasOwnProperty;function pt(e){if(!je(e))return dt(e);var r=[];for(var t in Object(e))bt.call(e,t)&&t!="constructor"&&r.push(t);return r}function ht(e){return Fr(e)?ft(e):pt(e)}var x=U(Object,"create");function jt(){this.__data__=x?x(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(x){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 x?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]=x&&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 L=U(F,"Map");function Mt(){this.size=0,this.__data__={hash:new R,map:new(L||D),string:new R}}function Tt(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 Tt(r)?t[typeof r=="string"?"string":"hash"]:t.map}function Nt(e){var r=K(this,e).delete(e);return this.size-=r?1:0,r}function Bt(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 N(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])}}N.prototype.clear=Mt,N.prototype.delete=Nt,N.prototype.get=Bt,N.prototype.has=kt,N.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 xt(){this.__data__=new D,this.size=0}function Lt(e){var r=this.__data__,t=r.delete(e);return this.size=r.size,t}function Wt(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(!L||o.length<Gt-1)return o.push([e,r]),this.size=++t.size,this;t=this.__data__=new N(o)}return t.set(e,r),this.size=t.size,this}function B(e){var r=this.__data__=new D(e);this.size=r.size}B.prototype.clear=xt,B.prototype.delete=Lt,B.prototype.get=Wt,B.prototype.has=Ht,B.prototype.set=Jt;var De=typeof h=="object"&&h&&!h.nodeType&&h,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(L),un=P(ne),sn=P(oe),ln=P(Z),z=C;(te&&z(new te(new ArrayBuffer(1)))!=Me||L&&z(new L)!=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 sn:return Re;case ln:return Ve}return r});var fn=Object.prototype,dn=fn.hasOwnProperty;function yn(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 Te=F.Uint8Array;function ae(e){var r=new e.constructor(e.byteLength);return new Te(r).set(new Te(e)),r}function bn(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 Ne=M?M.prototype:void 0,Be=Ne?Ne.valueOf:void 0;function jn(e){return Be?Object(Be.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]",Tn="[object Uint16Array]",Nn="[object Uint32Array]";function Bn(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 bn(e);case En:case In:case Pn:case Un:case Rn:case Vn:case Mn:case Tn:case Nn: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=T&&T.isMap,qn=ke?ee(ke):$n,xn="[object Set]";function Ln(e){return $(e)&&z(e)==xn}var Ce=T&&T.isSet,Wn=Ce?ee(Ce):Ln,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]",xe="[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]",so="[object Int8Array]",lo="[object Int16Array]",fo="[object Int32Array]",yo="[object Uint8Array]",bo="[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[so]=f[lo]=f[fo]=f[Yn]=f[Zn]=f[xe]=f[eo]=f[ro]=f[to]=f[no]=f[yo]=f[bo]=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 s=X(e);if(s)p=yn(e);else{var l=z(e),w=l==qe||l==Xn;if(we(e))return Qt(e);if(l==xe||l==$e||w&&!v)p=w?{}:kn(e);else{if(!f[l])return v?e:{};p=Bn(e,l)}}i||(i=new B);var A=i.get(e);if(A)return A;i.set(e,p),Wn(e)?e.forEach(function(O){p.add(Q(O,r,t,O,e,i))}):qn(e)&&e.forEach(function(O,c){p.set(c,Q(O,r,t,c,e,i))});var E=nn,V=s?void 0:E(e);return jr(V||e,function(O,c){V&&(c=O,O=e[c]),Ar(p,c,Q(O,r,t,c,e,i))}),p}var jo=1,vo=4;function mo(e){return Q(e,jo|vo)}const ce=Symbol("renderInjection"),Le=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:a.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:s,attrs:l}){const w=a.inject(ce,{readonly:i.readonly}),A=a.ref(),E={};s(E),a.onMounted(()=>{if(A.value){const c=Object.entries(A.value);for(const[j,_]of c)E[j]=_}});const V=c=>{const j={};if(Object.keys(c.props).forEach(m=>j[m]=c.props[m]),j.ref=A,w.readonly)return j;j.modelValue=i.modelValue,j["onUpdate:modelValue"]=m=>{p("update:modelValue",m),p("input",m)};const _=c.on;return _&&Object.keys(_).forEach(m=>{const S=_[m];S&&(j[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 c.on,j},O=c=>{const j={},_=c.slots||{};return Object.keys(_).forEach(m=>j[m]=_[m]),delete c.slots,j};return()=>{const c=mo(i.field),j=t[c.name];j&&j.call(this,c,w),e&&e.call(this,c,w);const _=V(c),m=O(c),S=r[c.name]||a.resolveComponent(c.name);if(!S||typeof S=="string")return a.h("span",{style:{color:"red"}},`${c.name} component not registered`);const n=a.h(S,a.mergeProps(_,l),a.mergeProps(g,m)),u=[],y={mounted(){const b=_.onMounted;b&&b.call(this,void 0,w,A,i.field)},unmounted(){const b=_.onUnmounted;b&&b.call(this,void 0,w,A,i.field)}};return u.push([y]),a.withDirectives(n,u)}}}),addComponent:o,removeComponent:v,components:r,hooks:t}};function _o(e={}){const r=a.unref(e),{Render:t,addComponent:o,removeComponent:v,components:i,hooks:p}=Le(r.globalHook),g=a.defineComponent({name:"FormRender",props:{field:{type:Object,required:!0},formData:{type:Object,required:!0},readonly:{type:Boolean,default:!1}},setup(s,{slots:l,attrs:w,expose:A}){const E=a.ref(),V={formItem:n=>{var y;if(s.readonly)return O(n);const u=(y=n.children)==null?void 0:y.map(b=>c(b));return a.h(t,{field:n,modelValue:s.formData[n.id],"onUpdate:modelValue":b=>{n.value=b,s.formData[n.id]=b}},u)},container:n=>{var y;const u=(y=n.children)==null?void 0:y.map(b=>c(b));return a.h(t,{field:n,modelValue:n.value,"onUpdate:modelValue":b=>n.value=b},u)}},O=n=>{const u=s.formData[n.id];let y=Array.isArray(u)?u:[u];if(n.props.options){const W=go=>{const ie=[];for(const H of go)y.includes(H.value)&&ie.push(H.label),H.children&&H.children.length>0&&ie.push(...W(H.children));return ie};y=W(n.props.options)}const b=a.h("span",y.join(",")),I=a.renderSlot(l,"readonly",{value:u,field:n},()=>[b]);return a.renderSlot(l,`readonly-${n.name}`,{value:u,field:n},()=>[I])},c=n=>{if(n.hidden)return;const u={...V,...r.renders||{}},y=u[n.id]||u[n.name]||u[n.type];if(y){const b=y(n),I=a.renderSlot(l,n.id,{node:b,field:n},()=>[b]),W=a.renderSlot(l,n.name,{node:I,field:n},()=>[I]);return a.renderSlot(l,n.type,{node:W,field:n},()=>[W])}return a.h("span",{style:{color:"red"}},`No rendering found for ${n.id}`)},j=n=>{var u;n.type==="formItem"&&(n.value!==void 0?s.formData[n.id]===void 0&&(s.formData[n.id]=n.value):s.formData[n.id]===void 0&&(s.formData[n.id]=void 0)),(u=n.children)==null||u.forEach(y=>{j(y)})},_=()=>{j(s.field)},m=n=>{const u=y=>{if(y.id===n)return y;if(y.children)for(const b of y.children){const I=u(b);if(I)return I}};return u(s.field)};a.onMounted(()=>{if(E.value){const n=Object.entries(E.value);for(const[u,y]of n)S[u]=y}}),a.provide(ce,{readonly:s.readonly||!1,rootRef:E,formData:s.formData,getField:m,...r.injects||{}}),_();const S={getField:m,initFormData:_,renderItem:c,renderReadonly:O,renders:V};return A(S),()=>{var b;if(s.field.hidden)return;const n=(b=s.field.children)==null?void 0:b.map(I=>c(I)),u=a.h(t,{field:s.field,ref:E,...w},[a.renderSlot(l,"prepend",{field:s.field}),a.renderSlot(l,"default",{child:n,field:s.field},()=>[n]),a.renderSlot(l,"append",{field:s.field})]),y=a.renderSlot(l,s.field.id,{node:u,child:n,field:s.field},()=>[u]);return a.renderSlot(l,s.field.name,{node:u,child:n,field:s.field},()=>[y])}}});return{Render:t,FormRender:g,addComponent:o,removeComponent:v,components:i,hooks:p}}h.RENDER_INJECTION_KEY=ce,h.useFormRender=_o,h.useRender=Le,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});