@tsed/schema-formio
Version:
Transform Ts.ED Schema & JsonSchema to a valid Formio schema
2 lines • 11.6 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("@tsed/core"),require("@tsed/schema")):"function"==typeof define&&define.amd?define(["@tsed/core","@tsed/schema"],t):"object"==typeof exports?exports["@tsed/schema-formio"]=t(require("@tsed/core"),require("@tsed/schema")):e["@tsed/schema-formio"]=t(e["@tsed/core"],e["@tsed/schema"])}(self,((e,t)=>(()=>{"use strict";var n={414:t=>{t.exports=e},538:e=>{e.exports=t}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={exports:{}};return n[e](i,i.exports,o),i.exports}o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};o.r(i),o.d(i,{Component:()=>A,Conditional:()=>N,Currency:()=>z,CustomClass:()=>H,CustomConditional:()=>R,DataSourceJson:()=>B,DataSourceUrl:()=>Q,ErrorLabel:()=>X,ErrorMessage:()=>Z,Form:()=>ne,FormsContainer:()=>ee,Hidden:()=>re,HideWhen:()=>_,InputTags:()=>oe,Label:()=>te,Mask:()=>ie,Masks:()=>ae,MaxWords:()=>ue,MinWords:()=>se,ModalEdit:()=>ce,Multiple:()=>le,OpenWhenEmpty:()=>pe,Password:()=>me,Placeholder:()=>de,Prefix:()=>fe,Select:()=>ye,ShowWhen:()=>U,Suffix:()=>be,TableView:()=>ge,Tabs:()=>he,TextCase:()=>xe,Textarea:()=>we,Tooltip:()=>je,Validate:()=>Y,anyToComponent:()=>m,arrayToComponent:()=>d,defaultToComponent:()=>y,enumToComponent:()=>b,execMapper:()=>c,getFormioMapper:()=>s,getFormioProps:()=>f,getFormioSchema:()=>Ce,getRef:()=>p,mapToComponent:()=>g,nestedToComponent:()=>F,numberToComponent:()=>W,objectToEditGrid:()=>q,panelToComponent:()=>$,propertiesToComponents:()=>I,registerFormioMapper:()=>u,stringToComponent:()=>J});const a=new Map;function u(e,t){return a.set(e,t)}function s(e){if(!a.has(e))throw new Error(`Formio ${e} mapper doesn't exists`);return a.get(e)}function c(e,t,n){return s(e)(t,n)}var l=o(414);function p(e,t){return e.$ref?(0,l.getValue)(t,e.$ref.replace("#/","").replace(/\//g,".")):e}function m(e,t){switch(e=p(e,t),e?.type){case"object":return e.properties||e.$ref?c("nested",e,t):c("map",e,t);case"array":return c("array",e,t);case"string":return c("string",e,t);case"boolean":return c("boolean",e,t);case"integer":case"number":return c("number",e,t)}return{}}function d(e,t){const n=e.items.$ref?p(e.items,t):e.items,{type:r}=n;switch(r){case"object":return{...c("default",e,t),...c("editgrid",n,t)};case"string":if(n.enum)return{...c("enum",n,t),inline:!1,type:"selectboxes"};const o=c(r,n,t);return(0,l.cleanObject)({...o,multiple:"tags"!==o.type||void 0});default:return{...c(r,n,t),multiple:!0}}}function f(e){return Object.entries(e).reduce(((e,[t,n])=>t.startsWith("x-formio-")?{...e,[t.replace("x-formio-","")]:n}:e),{})}function y(e,t){const n=f(e);return(0,l.cleanObject)({...n,disabled:!!e.readOnly,description:e.description,defaultValue:e.default})}function b(e,t){const n=c("default",e,t),r=e.enum.map((e=>({label:e,value:e})));return"select"===n.type?(0,l.cleanObject)({...n,data:{json:n.data?.json||JSON.stringify(r)},dataSrc:"json",idPath:"value",valueProperty:"value",template:n.template||"<span>{{ item.label }}</span>"}):(0,l.cleanObject)({...n,values:e["x-values"]||r.map((e=>({...e,shortcut:""})))})}function g(e,t){return{...c("default",e,t),type:"datamap",tableView:!1,input:!0,valueComponent:{...e.additionalProperties?c("any",e.additionalProperties,t):{},hideLabel:!0,tableView:!0}}}u("any",m),u("array",d),u("boolean",(function(e,t){const n=c("default",e,t);return(0,l.cleanObject)({...n,input:!0,type:n.type||"checkbox"})})),u("date",(function(e,t){const n=c("default",e,t),r={enableMinDateInput:!1,enableMaxDateInput:!1,input:!0,...n,type:"datetime",datePicker:{disableWeekends:!1,disableWeekdays:!1,...(0,l.getValue)(n,"datePicker")},widget:{type:"calendar",displayInTimezone:"viewer",locale:"en",useLocaleSettings:!1,allowInput:!0,mode:"single",noCalendar:!1,hourIncrement:1,minuteIncrement:1,minDate:null,disableWeekends:!1,disableWeekdays:!1,maxDate:null,...(0,l.getValue)(n,"widget")}};return"date"===e.format?{...r,format:"yyyy-MM-dd",enableTime:!1,widget:{...r.widget,enableTime:!1,format:"yyyy-MM-dd",...(0,l.getValue)(n,"widget")}}:{...r,timePicker:{showMeridian:!1,...(0,l.getValue)(n,"timePicker")},widget:{...r.widget,enableTime:!0,time_24hr:!0,...(0,l.getValue)(n,"widget")}}})),u("default",y),u("enum",b),u("map",g);const h=/([\p{Ll}\d])(\p{Lu})/gu,w=/(\p{Lu})([\p{Lu}][\p{Ll}])/gu,x=/(\d)\p{Ll}|(\p{L})\d/u,j=/[^\p{L}\d]+/giu,C="$1\0$2",v="";function k(e){let t=e.trim();t=t.replace(h,C).replace(w,C),t=t.replace(j,"\0");let n=0,r=t.length;for(;"\0"===t.charAt(n);)n++;if(n===r)return[];for(;"\0"===t.charAt(r-1);)r--;return t.slice(n,r).split(/\0/g)}function O(e){const t=k(e);for(let e=0;e<t.length;e++){const n=t[e],r=x.exec(n);if(r){const o=r.index+(r[1]??r[2]).length;t.splice(e,1,n.slice(0,o),n.slice(o))}}return t}function S(e,t){const[n,r,o]=P(e,t),i=L(t?.locale),a=V(t?.locale),u=t?.mergeAmbiguousCharacters?E(i,a):function(e,t){return(n,r)=>{const o=n[0];return(r>0&&o>="0"&&o<="9"?"_"+o:t(o))+e(n.slice(1))}}(i,a);return n+r.map(((e,t)=>0===t?i(e):u(e,t))).join(t?.delimiter??"")+o}function M(e,t){return function(e,t){const[n,r,o]=P(e,t);return n+r.map(L(t?.locale)).join(t?.delimiter??" ")+o}(e,{delimiter:"-",...t})}function T(e,t){const[n,r,o]=P(e,t),i=L(t?.locale),a=V(t?.locale),u=E(i,a);return n+r.map(((e,t)=>0===t?u(e):i(e))).join(t?.delimiter??" ")+o}function L(e){return!1===e?e=>e.toLowerCase():t=>t.toLocaleLowerCase(e)}function V(e){return!1===e?e=>e.toUpperCase():t=>t.toLocaleUpperCase(e)}function E(e,t){return n=>`${t(n[0])}${e(n.slice(1))}`}function P(e,t={}){const n=t.split??(t.separateNumbers?O:k),r=t.prefixCharacters??v,o=t.suffixCharacters??v;let i=0,a=e.length;for(;i<e.length;){const t=e.charAt(i);if(!r.includes(t))break;i++}for(;a>i;){const t=a-1,n=e.charAt(t);if(!o.includes(n))break;a=t}return[e.slice(0,i),n(e.slice(i,a)),e.slice(a)]}function F(e,t){return{...c("default",e,t),label:!1,tableView:!1,type:"form",display:"form",input:!0,components:[{key:"panel",label:t.parentKey&&T(t.parentKey),...c("panel",e,t)}]}}function W(e,t){const n=c("default",e,t);return(0,l.cleanObject)({...n,input:!0,delimiter:(0,l.getValue)(n,"delimiter",!1),inputFormat:(0,l.getValue)(n,"inputFormat","plain"),mask:(0,l.getValue)(n,"mask",!1),requireDecimal:!1,type:"number"})}function q(e,t){return{...c("default",e,t),rowDrafts:!1,type:"editgrid",input:!0,components:c("properties",e,t)}}function $(e,t){return{...c("default",e,t),collapsible:!1,input:!1,tableView:!1,components:c("properties",e,t)}}function D(e,t,n,r){const o=(n.required||[]).includes(e),i={...t.validate||{},required:o,pattern:r.pattern,minLength:!o||o&&r.minLength>1?r.minLength:void 0,maxLength:r.maxLength,min:r.minimum||r.minItems,max:r.maximum||r.maxItems};switch(r.type){case"string":0===r.minLength&&i.required&&(i.minLength=void 0,i.required=!1);break;case"boolean":i.required=!1}return(0,l.cleanObject)(i)}function I(e,t){const n={label:"Tabs",key:"tabs",type:"tabs",input:!1,tableView:!1,components:new Map,pushed:!1},r=[];return Object.entries(e.properties).forEach((([o,i])=>{const a=i["x-formiotabs"],u=c("any",i,{...t,parentKey:o});let s=(0,l.cleanObject)({key:o,...u,label:0==u.label?void 0:u.label||i.title||T(o),validate:D(o,u,e,i)});s=function(e,t){if(e.data){const n={...e.data};return Object.entries(n).forEach((([r,o])=>{(0,l.isFunction)(o)&&t.resolvers.push((async i=>{n[r]=await o({...t,component:e,form:i})}))})),{...e,data:n}}return e}(s,t),a?(n.pushed||(r.push(n),n.pushed=!0),n.components.has(a.key)||n.components.set(a.key,{...a,components:[]}),n.components.get(a.key).components.push(s)):r.push(s)})),n.components.size&&(n.components=[...n.components.values()]),r}function J(e,t){if(e.format){const n=c("default",e,t);switch(e.format){case"date":case"date-time":return c("date",e,t);case"uri":return(0,l.cleanObject)({input:!0,...n,type:n.type||"url"});default:return(0,l.cleanObject)({input:!0,...n,type:n.type||e.format})}}if(e.enum){const n=c("enum",e,t);return{...n,type:n.type||"radio"}}const n=c("default",e,t);return(0,l.cleanObject)({input:!0,type:n.type||"textfield",...n})}u("nested",F),u("number",W),u("integer",W),u("editgrid",q),u("panel",$),u("properties",I),u("string",J);var K=o(538);function A(e){return e=Object.entries(e).reduce(((e,[t,n])=>("validate"===t&&(e["x-formio-validate"]={...e["x-formio-validate"]||{},...n}),{...e,[`x-formio-${t}`]:n})),{}),(0,K.JsonEntityFn)((t=>{Object.entries(e).forEach((([e,n])=>{t.itemSchema.customKey(e,n),t.isCollection&&t.schema.customKey(e,n)}))}))}function N(e){return A({conditional:e})}function U(e,t){return N({show:!0,when:e,eq:t})}function _(e,t){return N({show:!1,when:e,eq:t})}function z(e={}){return A({currency:"USD",inputFormat:"plain",mask:!1,spellcheck:!0,delimiter:!0,...e,type:"currency"})}function H(e){return A({customClass:e})}function R(e){return(0,l.isArrowFn)(e)&&(e=function(e){const t=e.toString(),[n,...r]=t.split("=>");let o=r.join("=>");return n.includes("{")||(o=o.replace(new RegExp(`${n.trim()}.`,"gi"),"")),`show = ${o.trim()}`}(e)),A({customConditional:e})}const G=e=>async t=>{const n=await e(t);return JSON.stringify(n)};function B(e,t={}){return A({...t,dataSrc:"json",data:{...t.data,json:(0,l.isFunction)(e)?G(e):JSON.stringify(e)}})}function Q(e,t={}){return A({...t,dataSrc:"url",data:{...t.data,url:e}})}function X(e){return A({errorLabel:e})}function Y(e,t){return A({validate:{[e]:t}})}function Z(e){return Y("customMessage",e)}const ee=new Map;function te(e){return(0,K.JsonEntityFn)((t=>"property"===t.decoratorType?A({label:e}):(0,K.CustomKey)("x-formio-label",e)))}function ne(e={}){return(0,l.useDecorators)((t=>{const n=e.name||(0,l.nameOf)(t),r=M(n);ee.set(n,t),ee.set(r,t)}),e.name&&(0,K.Name)(e.name),e.label&&te(e.label),e&&(0,l.StoreSet)("formio:form",e))}function re(e=!0){return A({hidden:e})}function oe(e={}){return(0,l.useDecorators)((0,K.CollectionOf)(String),A({...e,tableView:!1,storeas:"array",type:"tags"}))}function ie(e,t=""){return A({inputMask:e,inputMaskPlaceholderChar:t})}function ae(...e){return A({inputMasks:e})}function ue(e){return Y("maxWords",e)}function se(e){return Y("minWords",e)}function ce(e=!0){return A({modalEdit:e})}function le(e=!1){return A({multiple:e})}function pe(e=!0){return A({openWhenEmpty:e})}function me(e={}){return A({...e,type:"password",protected:!0})}function de(e){return A({placeholder:e})}function fe(e){return A({prefix:e})}function ye(e={}){return A({selectThreshold:.3,input:!0,widget:"choicesjs",...e,type:"select"})}function be(e){return A({suffix:e})}function ge(e){return A({tableView:e})}function he(e){return(0,K.JsonEntityFn)((t=>{t.schema.customKey("x-formiotabs",{key:S(e),label:e})}))}function we(e={}){return A({autoExpand:!1,...e,type:"textarea"})}function xe(e){return A({case:e})}function je(e){return A({tooltip:e})}async function Ce(e,t={}){if(!e)return;if((0,l.isString)(e))return Ce(ee.get(e),t);const n=K.JsonEntityStore.from(e),r=(0,K.getJsonSchema)(n,{...t,inlineEnums:!0,customKeys:!0}),o=n.schema.getName(),i=M(o),a=[],u=c("properties",r,{...t,definitions:r.definitions,resolvers:a}),s={title:o,type:"form",display:"form",tags:[],access:[],submissionAccess:[],...n.store.get("formio:form",{}),name:i,machineName:i,components:u};return await Promise.all(a.map((e=>e(s,t)))),s}return i})()));
//# sourceMappingURL=schema-formio.umd.min.js.map