@decaf-ts/ui-decorators 0.5.26 → 0.5.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +173 -17
- package/README.md +24 -6
- package/dist/ui-decorators.cjs +2 -1550
- package/dist/ui-decorators.cjs.map +1 -0
- package/dist/ui-decorators.js +2 -0
- package/dist/ui-decorators.js.map +1 -0
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/model/Renderable.js +1 -1
- package/lib/esm/model/Renderable.js.map +1 -0
- package/lib/esm/model/decorators.d.ts +94 -12
- package/lib/esm/model/decorators.js +111 -15
- package/lib/esm/model/decorators.js.map +1 -0
- package/lib/esm/model/index.js +1 -1
- package/lib/esm/model/index.js.map +1 -0
- package/lib/esm/model/model.js +1 -1
- package/lib/esm/model/model.js.map +1 -0
- package/lib/esm/model/overrides.js +1 -1
- package/lib/esm/model/overrides.js.map +1 -0
- package/lib/esm/ui/Rendering.d.ts +1 -1
- package/lib/esm/ui/Rendering.js +8 -7
- package/lib/esm/ui/Rendering.js.map +1 -0
- package/lib/esm/ui/constants.d.ts +4 -3
- package/lib/esm/ui/constants.js +5 -4
- package/lib/esm/ui/constants.js.map +1 -0
- package/lib/esm/ui/decorators.d.ts +76 -13
- package/lib/esm/ui/decorators.js +81 -16
- package/lib/esm/ui/decorators.js.map +1 -0
- package/lib/esm/ui/errors.js +1 -1
- package/lib/esm/ui/errors.js.map +1 -0
- package/lib/esm/ui/handlers.js +1 -1
- package/lib/esm/ui/handlers.js.map +1 -0
- package/lib/esm/ui/index.js +1 -1
- package/lib/esm/ui/index.js.map +1 -0
- package/lib/esm/ui/interfaces.d.ts +31 -0
- package/lib/esm/ui/interfaces.js +1 -1
- package/lib/esm/ui/interfaces.js.map +1 -0
- package/lib/esm/ui/types.d.ts +8 -6
- package/lib/esm/ui/types.js +1 -1
- package/lib/esm/ui/types.js.map +1 -0
- package/lib/esm/ui/utils.js +1 -1
- package/lib/esm/ui/utils.js.map +1 -0
- package/lib/index.cjs +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/index.js.map +1 -0
- package/lib/model/Renderable.cjs +1 -1
- package/lib/model/Renderable.js.map +1 -0
- package/lib/model/decorators.cjs +113 -16
- package/lib/model/decorators.d.ts +94 -12
- package/lib/model/decorators.js.map +1 -0
- package/lib/model/index.cjs +1 -1
- package/lib/model/index.js.map +1 -0
- package/lib/model/model.cjs +1 -1
- package/lib/model/model.js.map +1 -0
- package/lib/model/overrides.cjs +1 -1
- package/lib/model/overrides.js.map +1 -0
- package/lib/ui/Rendering.cjs +8 -7
- package/lib/ui/Rendering.d.ts +1 -1
- package/lib/ui/Rendering.js.map +1 -0
- package/lib/ui/constants.cjs +5 -4
- package/lib/ui/constants.d.ts +4 -3
- package/lib/ui/constants.js.map +1 -0
- package/lib/ui/decorators.cjs +83 -17
- package/lib/ui/decorators.d.ts +76 -13
- package/lib/ui/decorators.js.map +1 -0
- package/lib/ui/errors.cjs +1 -1
- package/lib/ui/errors.js.map +1 -0
- package/lib/ui/handlers.cjs +1 -1
- package/lib/ui/handlers.js.map +1 -0
- package/lib/ui/index.cjs +1 -1
- package/lib/ui/index.js.map +1 -0
- package/lib/ui/interfaces.cjs +1 -1
- package/lib/ui/interfaces.d.ts +31 -0
- package/lib/ui/interfaces.js.map +1 -0
- package/lib/ui/types.cjs +1 -1
- package/lib/ui/types.d.ts +8 -6
- package/lib/ui/types.js.map +1 -0
- package/lib/ui/utils.cjs +1 -1
- package/lib/ui/utils.js.map +1 -0
- package/package.json +24 -51
- package/dist/ui-decorators.esm.cjs +0 -1519
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-decorators.cjs","sources":["../src/ui/constants.ts","../src/ui/errors.ts","../src/ui/utils.ts","../src/ui/Rendering.ts","../src/model/decorators.ts","../src/ui/decorators.ts","../src/model/overrides.ts","../src/ui/handlers.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["UIMediaBreakPoints","exports","UIKeys","REFLECT","ModelKeys","UIMODEL","RENDERED_BY","ELEMENT","PROP","CHILD","NAME","NAME_PREFIX","CUSTOM_PROPS","UILISTMODEL","UILISTPROP","UILAYOUT","UILAYOUTPROP","HANDLERS","TYPE","SUB_TYPE","HIDDEN","FORMAT","ORDER","PAGE","READ_ONLY","REQUIRED","ValidationKeys","MIN","MIN_LENGTH","MAX","MAX_LENGTH","PATTERN","URL","STEP","DATE","EMAIL","PASSWORD","EQUALS","DIFF","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","ValidatableByType","EmailValidator","URLValidator","DateValidator","PasswordValidator","ValidatableByAttribute","RequiredValidator","MinValidator","MaxValidator","StepValidator","MinLengthValidator","MaxLengthValidator","PatternValidator","EqualsValidator","DiffValidator","LessThanValidator","LessThanOrEqualValidator","GreaterThanValidator","GreaterThanOrEqualValidator","HTML5DateFormat","HTML5InputTypes","BUTTON","CHECKBOX","COLOR","DATETIME_LOCAL","FILE","IMAGE","MONTH","NUMBER","RADIO","RANGE","RESET","SEARCH","SUBMIT","TEL","TEXT","TEXTAREA","SELECT","TIME","WEEK","HTML5CheckTypes","RenderingError","InternalError","constructor","msg","super","name","formatByType","type","value","args","format","shift","formatDate","Date","parseToNumber","isNaN","parsed","Number","escapeHtml","tagsToReplace","replace","tag","generateUIModelID","model","id","findModelId","e","now","RenderingEngine","this","cache","flavour","initialized","register","translate","key","toView","ReservedModels","STRING","BIGINT","BOOLEAN","getClassDecoratorsMetadata","Reflect","getMetadata","Model","get","filter","Boolean","isValidatableByType","Object","keys","includes","isValidatableByAttribute","toAttributeValue","Error","join","toFieldDefinition","globalProps","generateId","inheritProps","globalPropsWithoutInherits","classDecorators","length","classDecorator","assign","props","item","handlers","uiDecorators","Reflection","getAllPropertyDecorators","children","childProps","mapper","getPath","parent","prop","validationDecorators","decs","types","values","hasHideOnDecorator","find","hasUiElementDecorator","sort","a","forEach","dec","isPropertyModel","Clazz","submodel","Array","isArray","clazzName","childrenGlobalProps","childOf","childDefinition","push","render","uiProps","path","undefined","validationDecs","typeDec","basicType","toLowerCase","child","c","row","col","operation","b","order","hiddenOn","hidden","result","rendererId","engine","current","getOrBoot","obj","initialize","fromObject","uimodel","original","propertyKey","meta","metadata","hideOn","operations","propMetadata","decoratorValidation","prototype","OperationKeys","CREATE","READ","UPDATE","DELETE","parseValueByType","fieldProps","map","v","trim","parseDate","OBJECT","JSON","stringify","apply","clazz","serialize","target","customTypes","multiple","cols","rows","breakpoint","MEDIUM","propName","page","pages","paginated","pageTitles"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ModelKeys as e,ValidationKeys as t,EmailValidator as r,URLValidator as o,DateValidator as n,PasswordValidator as s,RequiredValidator as a,MinValidator as i,MaxValidator as c,StepValidator as E,MinLengthValidator as p,MaxLengthValidator as u,PatternValidator as l,EqualsValidator as T,DiffValidator as A,LessThanValidator as R,LessThanOrEqualValidator as d,GreaterThanValidator as f,GreaterThanOrEqualValidator as O,formatDate as L,ReservedModels as y,parseDate as D,Model as I,propMetadata as N}from"@decaf-ts/decorator-validation";import{Reflection as h,metadata as m,apply as M}from"@decaf-ts/reflection";import{InternalError as g,findModelId as U,OperationKeys as P}from"@decaf-ts/db-decorators";import"reflect-metadata";var S;(e=>{e.SMALL="s",e.MEDIUM="m",e.LARGE="l",e.XLARGE="xl"})(S||(S={}));const k={REFLECT:e.REFLECT+".ui.",UIMODEL:"uimodel",RENDERED_BY:"rendered-by",ELEMENT:"element",PROP:"prop",CHILD:"child",NAME:"name",NAME_PREFIX:"input-",CUSTOM_PROPS:"customValidationProps",UILISTMODEL:"uilistmodel",UILISTPROP:"listprop",UILAYOUT:"uilayout",UILAYOUTPROP:"uilayoutprop",HANDLERS:"handlers",TYPE:"type",SUB_TYPE:"subtype",HIDDEN:"hidden",FORMAT:"format",ORDER:"order",PAGE:"page",READ_ONLY:"readonly",REQUIRED:t.REQUIRED,MIN:t.MIN,MIN_LENGTH:t.MIN_LENGTH,MAX:t.MAX,MAX_LENGTH:t.MAX_LENGTH,PATTERN:t.PATTERN,URL:t.URL,STEP:t.STEP,DATE:t.DATE,EMAIL:t.EMAIL,PASSWORD:t.PASSWORD,EQUALS:t.EQUALS,DIFF:t.DIFF,LESS_THAN:t.LESS_THAN,LESS_THAN_OR_EQUAL:t.LESS_THAN_OR_EQUAL,GREATER_THAN:t.GREATER_THAN,GREATER_THAN_OR_EQUAL:t.GREATER_THAN_OR_EQUAL},b={[k.EMAIL]:r,[k.URL]:o,[k.DATE]:n,[k.PASSWORD]:s},w={[k.REQUIRED]:a,[k.MIN]:i,[k.MAX]:c,[k.STEP]:E,[k.MIN_LENGTH]:p,[k.MAX_LENGTH]:u,[k.PATTERN]:l,[k.EQUALS]:T,[k.DIFF]:A,[k.LESS_THAN]:R,[k.LESS_THAN_OR_EQUAL]:d,[k.GREATER_THAN]:f,[k.GREATER_THAN_OR_EQUAL]:O},H="yyyy-MM-dd",_={BUTTON:"button",CHECKBOX:"checkbox",COLOR:"color",DATE:k.DATE,DATETIME_LOCAL:"datetime-local",EMAIL:k.EMAIL,FILE:"file",HIDDEN:"hidden",IMAGE:"image",MONTH:"month",NUMBER:"number",PASSWORD:k.PASSWORD,RADIO:"radio",RANGE:"range",RESET:"reset",SEARCH:"search",SUBMIT:"submit",TEL:"tel",TEXT:"text",TEXTAREA:"textarea",SELECT:"select",TIME:"time",URL:k.URL,WEEK:"week"},C=[_.CHECKBOX,_.RADIO];class B extends g{constructor(e){super(e,B.name)}}function G(e,t,...r){if(e===k.DATE){if(!t)return"";const e=r.shift()||H;return L(new Date(t),e)}return t}function j(e,t,r){let o;switch(e){case Array.name:o=(Array.isArray(t)?t.map(e=>j(y.STRING,e,r)):[t]).join(",");break;case _.NUMBER:o=F(t);break;case _.DATE:{const e=r.format;t&&(""+t).trim().length&&(o=typeof t===y.NUMBER?new Date(t):t?e?D(e,t):new Date(t):void 0);break}default:o=typeof t===y.OBJECT?Array.isArray(t)?t.join(","):JSON.stringify(t):typeof t===y.BOOLEAN?t:typeof t===y.STRING?v(t):o}if(void 0===o)throw new g(`Failed to parse value of type ${e} from ${typeof t} - ${t}`);return o}function F(e){if("number"==typeof e&&!isNaN(e))return e;const t=Number(e);return isNaN(t)?void 0:t}function v(e){if(!e)return e;const t={"&":"&","<":"<",">":">"};return(""+e).replace(/[&<>]/g,e=>t[e]||e)}function Y(e){const t={"&":"&","<":"<",">":">"};return(""+e).replace(/<|>|&/g,e=>t[e]||e)}function X(e){let t;try{t=U(e)}catch(e){t=Date.now()}return`${e.constructor.name}-${t}`}class ${static{this.cache={}}constructor(e){this.flavour=e,this.initialized=!1,$.register(this)}translate(e,t=!0){if(t)switch(e){case y.STRING:return _.TEXT;case y.NUMBER:case y.BIGINT:return _.NUMBER;case y.BOOLEAN:return _.CHECKBOX;case y.DATE:return _.DATE}else switch(e){case _.SELECT:case _.TEXT:case _.EMAIL:case _.COLOR:case _.PASSWORD:case _.TEL:case _.URL:case _.SEARCH:case _.HIDDEN:case _.TEXTAREA:case _.RADIO:return y.STRING;case _.NUMBER:return y.NUMBER;case _.CHECKBOX:return y.BOOLEAN;case _.DATE:case _.DATETIME_LOCAL:case _.TIME:return y.DATE}return e}getClassDecoratorsMetadata(e){return[Reflect.getMetadata($.key(k.UIMODEL),e.constructor)||Reflect.getMetadata($.key(k.UIMODEL),I.get(e.constructor.name)),Reflect.getMetadata($.key(k.UILISTMODEL),e.constructor)||Reflect.getMetadata($.key(k.UILISTMODEL),I.get(e.constructor.name)),Reflect.getMetadata($.key(k.HANDLERS),e.constructor)||Reflect.getMetadata($.key(k.HANDLERS),I.get(e.constructor.name)),Reflect.getMetadata($.key(k.UILAYOUT),e.constructor)||Reflect.getMetadata($.key(k.UILAYOUT),I.get(e.constructor.name))].filter(Boolean)}isValidatableByType(e){return Object.keys(b).includes(e)}isValidatableByAttribute(e){return Object.keys(w).includes(e)}toAttributeValue(e,t){if(!Object.keys(w).includes(e))throw Error(`Invalid attribute key "${e}". Expected one of: ${Object.keys(w).join(", ")}.`);return e===k.REQUIRED||t[e]}toFieldDefinition(e,r={},o=!0){const{inheritProps:n,...s}=r;r=s;const a=this.getClassDecoratorsMetadata(e);if(!a.length)throw new B(`No ui definitions set for model ${e.constructor.name}. Did you use @uimodel?`);const i=Object.assign({},...a,n||{}),{tag:c,props:E,item:p,handlers:u}=i,l=h.getAllPropertyDecorators(e,k.REFLECT);let T,A=p?.props||{},R={};const d=(e,t)=>e?[e,t].join("."):t;if(l){const o=h.getAllPropertyDecorators(e,t.REFLECT);for(const t in l){const n=l[t],s=Object.values(n).filter(({key:e})=>[k.PROP,k.ELEMENT,k.CHILD].includes(e));if(s?.length>1)throw new B("Only one type of decoration is allowed. Please choose between @uiprop, @uichild or @uielement");const a=n.find(({key:e})=>e===k.HIDDEN);if(a){const e=n.find(({key:e})=>e===k.ELEMENT);if(!e)throw new B(`@uielement no found in "${t}". It is required to use hiddenOn decorator.`)}n.shift(),n.sort(e=>e.key===k.ELEMENT?-1:1).forEach(n=>{if(!n)throw new B("No decorator found");switch(n.key){case k.PROP:A[t]=n.props;break;case k.CHILD:{if(!I.isPropertyModel(e,t))throw new B(`Child "${t}" must be a model.`);let o;const s=e[t];if("object"!=typeof s||null===s||Array.isArray(s)){const e=n.props.props?.name;o=new(I.get(e))}T=T||[];const a=Object.assign({},r||{},{model:o},{inheritProps:n.props,childOf:d(r?.childOf,t)}),i=this.toFieldDefinition(s||o,a,!1);T.push(i);break}case k.UILISTPROP:{R=R||{},n.props?.name&&(R[n.props?.name]=t);const e=Object.assign({},i.props?.item||{},p?.props||{},n.props?.props||{},r);A={tag:p?.tag||e.render||"",props:Object.assign({},A?.props,{mapper:R},e)};break}case k.HIDDEN:case k.PAGE:case k.ORDER:case k.UILAYOUTPROP:case k.ELEMENT:{T=T||[];const s=n.props,a=Object.assign({},A?.props,s.props||{},s?.props?.name?{path:d(r?.childOf,s.props.name),childOf:void 0}:{},r),i={tag:s.tag||A?.tag||c||"",props:a};if(n.key===k.ELEMENT){const r=o[t],n=r.shift();for(const e of r)this.isValidatableByAttribute(e.key)?i.props[this.translate(e.key)]=this.toAttributeValue(e.key,e.props):this.isValidatableByType(e.key)&&(e.key===_.DATE&&(i.props[k.FORMAT]=e.props.format||H),i.props[k.TYPE]=e.key);if(!i.props[k.TYPE]){const e=n.props.name;i.props[k.TYPE]=this.translate(e.toLowerCase(),!0)}i.props.value=G(i.props[k.TYPE],e[t],i.props[k.FORMAT]),T.push(i)}else{const e=T.find(e=>e.props?.name===t||[k.UILAYOUTPROP,k.PAGE].includes(n.key)&&e?.props?.childOf===t);if(e)if(n.key!==k.UILAYOUTPROP)e.props=Object.assign({},e.props,{[n.key]:s});else{const{row:t,col:r,props:o}=n.props;e.props=Object.assign({},o||{},e.props,t,r)}else T.push(i)}break}default:throw new B("Invalid key: "+n.key)}})}}r=Object.assign({},E,r,{handlers:u||{}});const f=r?.operation;T=T?.sort((e,t)=>(e?.props?.order??0)-(t?.props?.order??0)).filter(e=>{const t=e?.props?.hidden||[];return t?.length&&t.includes(f)?void 0:e});const O={tag:c,item:A,props:r,children:T};return o&&(O.rendererId=X(e)),O}static register(e){if(e.flavour in this.cache)throw new g(`Rendering engine under ${e.flavour} already exists`);this.cache[e.flavour]=e,this.current=e}static getOrBoot(e){if(e instanceof $)return e;const t=new e;return t.initialize(),t}static get(e){if(!e)return this.getOrBoot(this.current);if(!(e in this.cache))throw new g(`Rendering engine under ${e} does not exist`);return this.getOrBoot(this.cache[e])}static render(e,...t){const r=I.get(e.constructor.name)||I.fromObject(e);if(!r)throw new g("No model registered found");const o=Reflect.getMetadata($.key(k.RENDERED_BY),r);return $.get(o).render(e,...t)}static key(e){return`${k.REFLECT}${e}`}}function Q(e,t){return(r,o)=>{const n={tag:e||r.name,props:t};return m($.key(k.UIMODEL),n)(r)}}function x(e){return M(m($.key(k.RENDERED_BY),e))}function V(e,t){return(r,o)=>{const n={item:{tag:e||r.name,props:t}};return m($.key(k.UILISTMODEL),n)(r)}}function W(e){return t=>{const r={handlers:e};return m($.key(k.HANDLERS),r)(t)}}function K(e,t=1,r=1,o=S.MEDIUM){return(n,s)=>Q(e,{cols:t,rows:r,breakpoint:o})(n,s)}function z(e,t=1,r=!1,o={}){return(n,s)=>{let a=[];return typeof t===y.OBJECT&&(a=t,t=a.length),Q(e,{pages:t,paginated:r,pageTitles:a,props:o})(n,s)}}function J(...e){return N($.key(k.HIDDEN),e)}function q(e=1){return N($.key(k.ORDER),e)}function Z(){return J(P.CREATE,P.READ,P.UPDATE,P.DELETE)}function ee(e,t,r=!1){return(o,n)=>{const s={tag:e,serialize:r,props:Object.assign({},t||{},{name:n})};return N($.key(k.ELEMENT),s)(o,n)}}function te(e=void 0,t=!1){return(r,o)=>{const n={name:e||o,stringify:t};N($.key(k.PROP),n)(r,o)}}function re(e,t,r={},o=!1,n=!1){return(s,a)=>{const i={tag:t,serialize:n,props:Object.assign({},r||{},{name:e||a},o?{customTypes:[Array.name],multiple:!0}:{multiple:r?.multiple||!1})};N($.key(k.CHILD),i)(s,a)}}function oe(e=void 0,t){return(r,o)=>{const n={name:e||o,props:t||{}};N($.key(k.UILISTPROP),n)(r,o)}}function ne(e=1,t=1){return(r,o)=>{const n={name:o,col:e,row:t,props:Object.assign({},{row:t??1,col:e??1})};N($.key(k.UILAYOUTPROP),n)(r,o)}}function se(e=1){return N($.key(k.PAGE),e)}I.prototype.render=function(...e){return $.render(this,...e)};class ae{constructor(){}}const ie="##VERSION##";export{ae as EventHandler,C as HTML5CheckTypes,H as HTML5DateFormat,_ as HTML5InputTypes,$ as RenderingEngine,B as RenderingError,k as UIKeys,S as UIMediaBreakPoints,ie as VERSION,w as ValidatableByAttribute,b as ValidatableByType,v as escapeHtml,G as formatByType,X as generateUIModelID,Z as hidden,J as hideOn,F as parseToNumber,j as parseValueByType,x as renderedBy,Y as revertHtml,re as uichild,ee as uielement,W as uihandlers,K as uilayout,ne as uilayoutprop,V as uilistmodel,oe as uilistprop,Q as uimodel,q as uiorder,se as uipageprop,te as uiprop,z as uisteppedmodel};
|
|
2
|
+
//# sourceMappingURL=ui-decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-decorators.js","sources":["../src/ui/constants.ts","../src/ui/errors.ts","../src/ui/utils.ts","../src/ui/Rendering.ts","../src/model/decorators.ts","../src/ui/decorators.ts","../src/model/overrides.ts","../src/ui/handlers.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["UIMediaBreakPoints","UIKeys","REFLECT","ModelKeys","UIMODEL","RENDERED_BY","ELEMENT","PROP","CHILD","NAME","NAME_PREFIX","CUSTOM_PROPS","UILISTMODEL","UILISTPROP","UILAYOUT","UILAYOUTPROP","HANDLERS","TYPE","SUB_TYPE","HIDDEN","FORMAT","ORDER","PAGE","READ_ONLY","REQUIRED","ValidationKeys","MIN","MIN_LENGTH","MAX","MAX_LENGTH","PATTERN","URL","STEP","DATE","EMAIL","PASSWORD","EQUALS","DIFF","LESS_THAN","LESS_THAN_OR_EQUAL","GREATER_THAN","GREATER_THAN_OR_EQUAL","ValidatableByType","EmailValidator","URLValidator","DateValidator","PasswordValidator","ValidatableByAttribute","RequiredValidator","MinValidator","MaxValidator","StepValidator","MinLengthValidator","MaxLengthValidator","PatternValidator","EqualsValidator","DiffValidator","LessThanValidator","LessThanOrEqualValidator","GreaterThanValidator","GreaterThanOrEqualValidator","HTML5DateFormat","HTML5InputTypes","BUTTON","CHECKBOX","COLOR","DATETIME_LOCAL","FILE","IMAGE","MONTH","NUMBER","RADIO","RANGE","RESET","SEARCH","SUBMIT","TEL","TEXT","TEXTAREA","SELECT","TIME","WEEK","HTML5CheckTypes","RenderingError","InternalError","constructor","msg","super","name","formatByType","type","value","args","format","shift","formatDate","Date","parseValueByType","fieldProps","result","Array","isArray","map","v","ReservedModels","STRING","join","parseToNumber","trim","length","parseDate","undefined","OBJECT","JSON","stringify","BOOLEAN","escapeHtml","isNaN","parsed","Number","tagsToReplace","replace","tag","revertHtml","generateUIModelID","model","id","findModelId","e","now","RenderingEngine","this","cache","flavour","initialized","register","translate","key","toView","BIGINT","getClassDecoratorsMetadata","Reflect","getMetadata","Model","get","filter","Boolean","isValidatableByType","Object","keys","includes","isValidatableByAttribute","toAttributeValue","Error","toFieldDefinition","globalProps","generateId","inheritProps","globalPropsWithoutInherits","classDecorators","classDecorator","assign","props","item","handlers","uiDecorators","Reflection","getAllPropertyDecorators","children","childProps","mapper","getPath","parent","prop","validationDecorators","decs","types","values","hasHideOnDecorator","find","hasUiElementDecorator","sort","a","forEach","dec","isPropertyModel","Clazz","submodel","clazzName","childrenGlobalProps","childOf","childDefinition","push","render","uiProps","path","validationDecs","typeDec","basicType","toLowerCase","child","c","row","col","operation","b","order","hiddenOn","hidden","rendererId","engine","current","getOrBoot","obj","initialize","fromObject","uimodel","original","propertyKey","meta","metadata","renderedBy","apply","uilistmodel","uihandlers","uilayout","cols","rows","breakpoint","MEDIUM","uisteppedmodel","pages","paginated","pageTitles","hideOn","operations","propMetadata","uiorder","OperationKeys","CREATE","READ","UPDATE","DELETE","uielement","serialize","uiprop","propName","target","uichild","clazz","customTypes","multiple","uilistprop","uilayoutprop","uipageprop","page","prototype","EventHandler","VERSION"],"mappings":"+tBAmCYA,EAAZ,CAAYA,IACVA,EAAA,MAAA,IACAA,EAAA,OAAA,IACAA,EAAA,MAAA,IACAA,EAAA,OAAA,IACD,EALD,CAAYA,IAAAA,EAKX,CAAA,IA+CY,MAAAC,EAAS,CACpBC,QAAYC,EAAUD,QAAb,OACTE,QAAS,UACTC,YAAa,cACbC,QAAS,UACTC,KAAM,OACNC,MAAO,QACPC,KAAM,OACNC,YAAa,SACbC,aAAc,wBAEdC,YAAa,cACbC,WAAY,WACZC,SAAU,WACVC,aAAc,eACdC,SAAU,WAEVC,KAAM,OACNC,SAAU,UAEVC,OAAQ,SACRC,OAAQ,SACRC,MAAO,QACPC,KAAM,OAGNC,UAAW,WACXC,SAAUC,EAAeD,SACzBE,IAAKD,EAAeC,IACpBC,WAAYF,EAAeE,WAC3BC,IAAKH,EAAeG,IACpBC,WAAYJ,EAAeI,WAC3BC,QAASL,EAAeK,QACxBC,IAAKN,EAAeM,IACpBC,KAAMP,EAAeO,KACrBC,KAAMR,EAAeQ,KACrBC,MAAOT,EAAeS,MACtBC,SAAUV,EAAeU,SACzBC,OAAQX,EAAeW,OACvBC,KAAMZ,EAAeY,KACrBC,UAAWb,EAAea,UAC1BC,mBAAoBd,EAAec,mBACnCC,aAAcf,EAAee,aAC7BC,sBAAuBhB,EAAegB,uBAuB3BC,EAA4D,CACvE,CAACzC,EAAOiC,OAAQS,EAChB,CAAC1C,EAAO8B,KAAMa,EACd,CAAC3C,EAAOgC,MAAOY,EACf,CAAC5C,EAAOkC,UAAWW,GA6BRC,EAAiE,CAC5E,CAAC9C,EAAOuB,UAAWwB,EACnB,CAAC/C,EAAOyB,KAAMuB,EACd,CAAChD,EAAO2B,KAAMsB,EACd,CAACjD,EAAO+B,MAAOmB,EACf,CAAClD,EAAO0B,YAAayB,EACrB,CAACnD,EAAO4B,YAAawB,EACrB,CAACpD,EAAO6B,SAAUwB,EAClB,CAACrD,EAAOmC,QAASmB,EACjB,CAACtD,EAAOoC,MAAOmB,EACf,CAACvD,EAAOqC,WAAYmB,EACpB,CAACxD,EAAOsC,oBAAqBmB,EAC7B,CAACzD,EAAOuC,cAAemB,EACvB,CAAC1D,EAAOwC,uBAAwBmB,GAarBC,EAAkB,aAqClBC,EAAkB,CAC7BC,OAAQ,SACRC,SAAU,WACVC,MAAO,QACPhC,KAAMhC,EAAOgC,KACbiC,eAAgB,iBAChBhC,MAAOjC,EAAOiC,MACdiC,KAAM,OACNhD,OAAQ,SACRiD,MAAO,QACPC,MAAO,QACPC,OAAQ,SACRnC,SAAUlC,EAAOkC,SACjBoC,MAAO,QACPC,MAAO,QACPC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,IAAK,MACLC,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,KAAM,OACNjD,IAAK9B,EAAO8B,IACZkD,KAAM,QAcKC,EAAkB,CAC7BpB,EAAgBE,SAChBF,EAAgBS,OCxQZ,MAAOY,UAAuBC,EAMlC,WAAAC,CAAYC,GACVC,MAAMD,EAAKH,EAAeK,KAC3B,EClBG,SAAUC,EACdC,EACAC,KACGC,GAEH,GAAIF,IAASzF,EAAOgC,KAAM,CACxB,IAAI0D,EACA,MAAO,GACX,MAAME,EAAkBD,EAAKE,SAAsBjC,EACnD,OAAOkC,EAAW,IAAIC,KAAKL,GAAQE,EACpC,CACD,OAAOF,CACT,UAEgBM,EACdP,EACAC,EACAO,GAEA,IAAIC,EACJ,OAAQT,GACN,KAAKU,MAAMZ,KAITW,GAHeC,MAAMC,QAAQV,GAAUA,EAAMW,IAAIC,GAAKN,EACpDO,EAAeC,OAAQF,EAAGL,IACvB,CAACP,IACUe,KAAK,KACrB,MAEF,KAAK5C,EAAgBQ,OACnB6B,EAASQ,EAAchB,GACvB,MACF,KAAK7B,EAAgB7B,KAAM,CACzB,MAAM4D,EAA6BK,EAAWL,OAC3CF,IAAS,GAAGA,GAAQiB,OAAOC,SAC5BV,SACSR,IAAUa,EAAelC,OAC5B,IAAI0B,KAAKL,GACTA,EACEE,EACEiB,EAAUjB,EAAQF,GAClB,IAAIK,KAAKL,QACXoB,GAEV,KACD,CACD,QACEZ,SACSR,IAAUa,EAAeQ,OAC7BZ,MAAMC,QAAQV,GAASA,EAAMe,KAAK,KAAOO,KAAKC,UAAUvB,UAChDA,IAAUa,EAAeW,QAC9BxB,SAAeA,IAAUa,EAAeC,OACtCW,EAAWzB,GAAmBQ,EAE5C,QAAsB,IAAXA,EACT,MAAM,IAAIf,EACR,iCAAiCM,iBAAoBC,OAAWA,KAGpE,OAAOQ,CACT,CAEM,SAAUQ,EAAchB,GAC5B,GAAqB,iBAAVA,IAAuB0B,MAAM1B,GAAQ,OAAOA,EAEvD,MAAM2B,EAASC,OAAO5B,GACtB,OAAK0B,MAAMC,QAAX,EAA2BA,CAG7B,CAEM,SAAUF,EAAWzB,GACzB,IAAKA,EAAO,OAAOA,EAEnB,MAAM6B,EAAwC,CAC5C,IAAK,QACL,IAAK,OACL,IAAK,QAEP,OAAO,GAAG7B,GAAQ8B,QAAQ,SAAWC,GAC5BF,EAAcE,IAAQA,EAEjC,CAEM,SAAUC,EAAWhC,GACzB,MAAM6B,EAAwC,CAC5C,QAAS,IACT,OAAQ,IACR,OAAQ,KAGV,OAAO,GAAG7B,GAAQ8B,QAAQ,mBAAqBC,GACtCF,EAAcE,IAAQA,EAEjC,CAEM,SAAUE,EAAmCC,GACjD,IAAIC,EACJ,IACEA,EAAKC,EAAYF,EAElB,CAAC,MAAOG,GACPF,EAAK9B,KAAKiC,KACX,CAED,MAAO,GADMJ,EAAMxC,YAAYG,QACbsC,GACpB,OC7EsBI,SAMLC,KAAKC,MAIhB,CAAA,CAAG,CAgBP,WAAA/C,CAA+BgD,GAAAF,KAAOE,QAAPA,EAFrBF,KAAWG,aAAY,EAG/BJ,EAAgBK,SAASJ,KAE1B,CAqBD,SAAAK,CAAUC,EAAaC,GAAkB,GACvC,GAAIA,EACF,OAAQD,GACN,KAAKjC,EAAeC,OAClB,OAAO3C,EAAgBe,KACzB,KAAK2B,EAAelC,OACpB,KAAKkC,EAAemC,OAClB,OAAO7E,EAAgBQ,OACzB,KAAKkC,EAAeW,QAClB,OAAOrD,EAAgBE,SACzB,KAAKwC,EAAevE,KAClB,OAAO6B,EAAgB7B,UAG3B,OAAQwG,GACN,KAAK3E,EAAgBiB,OACrB,KAAKjB,EAAgBe,KACrB,KAAKf,EAAgB5B,MACrB,KAAK4B,EAAgBG,MACrB,KAAKH,EAAgB3B,SACrB,KAAK2B,EAAgBc,IACrB,KAAKd,EAAgB/B,IACrB,KAAK+B,EAAgBY,OACrB,KAAKZ,EAAgB3C,OACrB,KAAK2C,EAAgBgB,SACrB,KAAKhB,EAAgBS,MACnB,OAAOiC,EAAeC,OACxB,KAAK3C,EAAgBQ,OACnB,OAAOkC,EAAelC,OACxB,KAAKR,EAAgBE,SACnB,OAAOwC,EAAeW,QACxB,KAAKrD,EAAgB7B,KACrB,KAAK6B,EAAgBI,eACrB,KAAKJ,EAAgBkB,KACnB,OAAOwB,EAAevE,KAG5B,OAAOwG,CACR,CAcO,0BAAAG,CAA4Cf,GAClD,MAAO,CACLgB,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOG,SAC3ByH,EAAMxC,cAERwD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOG,SAC3B2I,EAAMC,IAAInB,EAAMxC,YAAYG,OAE9BqD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOW,aAC3BiH,EAAMxC,cAERwD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOW,aAC3BmI,EAAMC,IAAInB,EAAMxC,YAAYG,OAE9BqD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOe,UAC3B6G,EAAMxC,cAERwD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOe,UAC3B+H,EAAMC,IAAInB,EAAMxC,YAAYG,OAE9BqD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOa,UAC3B+G,EAAMxC,cAERwD,QAAQC,YACNZ,EAAgBO,IAAIxI,EAAOa,UAC3BiI,EAAMC,IAAInB,EAAMxC,YAAYG,QAE9ByD,OAAOC,QACV,CASS,mBAAAC,CAAoBV,GAC5B,OAAOW,OAAOC,KAAK3G,GAAmB4G,SAASb,EAChD,CASS,wBAAAc,CAAyBd,GACjC,OAAOW,OAAOC,KAAKtG,GAAwBuG,SAASb,EACrD,CAWS,gBAAAe,CACRf,EACA9C,GAEA,IAAKyD,OAAOC,KAAKtG,GAAwBuG,SAASb,GAChD,MAAUgB,MACR,0BAA0BhB,wBAA0BW,OAAOC,KAAKtG,GAAwB2D,KAAK,UAGjG,OAAO+B,IAAQxI,EAAOuB,UAAkBmE,EAAM8C,EAC/C,CAiCS,iBAAAiB,CACR7B,EACA8B,EAAuC,CAAA,EACvCC,GAAsB,GAGtB,MAAMC,aAAEA,KAAiBC,GAA+BH,EACxDA,EAAcG,EAEd,MAAMC,EAAkB5B,KAAKS,2BAA8Bf,GAE3D,IAAKkC,EAAgBlD,OACnB,MAAM,IAAI1B,EACR,mCAAmC0C,EAAMxC,YAAYG,+BAGzD,MAAMwE,EAAiBZ,OAAOa,OAC5B,CAAA,KACGF,EACHF,GAA8B,CAAE,IAE5BnC,IAAEA,EAAGwC,MAAEA,EAAKC,KAAEA,EAAIC,SAAEA,GAAaJ,EAEjCK,EACJC,EAAWC,yBAAyB1C,EAAO5H,EAAOC,SAIpD,IAAIsK,EACAC,EAAkCN,GAAMD,OAAS,GACjDQ,EAAiC,CAAA,EACrC,MAAMC,EAAU,CAACC,EAA4BC,IACpCD,EAAS,CAACA,EAAQC,GAAMnE,KAAK,KAAOmE,EAG7C,GAAIR,EAAc,CAChB,MAAMS,EAGFR,EAAWC,yBACb1C,EACApG,EAAevB,SAEjB,IAAK,MAAMuI,KAAO4B,EAAc,CAC9B,MAAMU,EAAOV,EAAa5B,GACpBuC,EAAQ5B,OAAO6B,OAAOF,GAAM9B,OAAO,EAAER,SAAS,CAACxI,EAAOM,KAAMN,EAAOK,QAASL,EAAOO,OAAO8I,SAASb,IACzG,GAAIuC,GAAOnE,OAAS,EAClB,MAAM,IAAI1B,EACR,iGAEJ,MAAM+F,EAAqBH,EAAKI,KAAK,EAAG1C,SAAUA,IAAQxI,EAAOkB,QACjE,GAAG+J,EAAoB,CACrB,MAAME,EAAwBL,EAAKI,KAAK,EAAG1C,SAAUA,IAAQxI,EAAOK,SACpE,IAAI8K,EACF,MAAM,IAAIjG,EAAe,2BAA2BsD,gDAEvD,CACDsC,EAAKjF,QACUiF,EAAKM,KAAMC,GACjBA,EAAE7C,MAAQxI,EAAOK,SAAW,EAAI,GAElCiL,QAASC,IACd,IAAKA,EAAK,MAAM,IAAIrG,EAAe,sBAEnC,OAAQqG,EAAI/C,KACV,KAAKxI,EAAOM,KACVkK,EAAWhC,GAAO+C,EAAItB,MACtB,MAEF,KAAKjK,EAAOO,MAAO,CACjB,IAAKuI,EAAM0C,gBAAgB5D,EAAOY,GAChC,MAAM,IAAItD,EAAe,UAAUsD,uBAErC,IAAIiD,EACJ,MAAMC,EAAY9D,EAA8BY,GAMhD,GAJsB,iBAAbkD,GACM,OAAbA,GACCvF,MAAMC,QAAQsF,GAEG,CAClB,MAAMC,EAAaJ,EAAItB,MAAMA,OACzB1E,KACJkG,EAAQ,IAAK3C,EAAMC,IAAI4C,GACxB,CAEDpB,EAAWA,GAAY,GACvB,MAAMqB,EAAsBzC,OAAOa,OAAO,CAAE,EAAEN,GAAe,GAAI,CAAC9B,MAAS6D,GAAQ,CACjF7B,aAAc2B,EAAItB,MAClB4B,QAASnB,EAAQhB,GAAamC,QAAmBrD,KAE7CsD,EAAkB5D,KAAKuB,kBAC3BiC,GAAYD,EACZG,GACA,GAEFrB,EAASwB,KACPD,GAEF,KACD,CACD,KAAK9L,EAAOY,WAAY,CACtB6J,EAASA,GAAU,GAChBc,EAAItB,OAAO1E,OACZkF,EAAOc,EAAItB,OAAO1E,MAAkBiD,GACtC,MAAMyB,EAAQd,OAAOa,OACnB,CAAE,EACFD,EAAeE,OAAOC,MAAQ,CAAA,EAC9BA,GAAMD,OAAS,CAAA,EACfsB,EAAItB,OAAOA,OAAS,CAAA,EACpBP,GAEFc,EAAa,CACX/C,IAAKyC,GAAMzC,KAAOwC,EAAM+B,QAAU,GAClC/B,MAAOd,OAAOa,OACZ,CAAE,EACFQ,GAAYP,MACZ,CAAEQ,UACFR,IAGJ,KACD,CACD,KAAKjK,EAAOkB,OACZ,KAAKlB,EAAOqB,KACZ,KAAKrB,EAAOoB,MACZ,KAAKpB,EAAOc,aACZ,KAAKd,EAAOK,QAAS,CACnBkK,EAAWA,GAAY,GACvB,MAAM0B,EAA6BV,EAAItB,MACjCA,EAAQd,OAAOa,OACjB,CAAA,EACAQ,GAAYP,MACZgC,EAAQhC,OAAS,CAAE,EAClBgC,GAAShC,OAAO1E,KAAO,CACtB2G,KAAMxB,EACJhB,GAAamC,QACbI,EAAQhC,MAAO1E,MAEjBsG,aAAS/E,GACP,CAAA,EACJ4C,GAEIoC,EAAwD,CAC5DrE,IAAMwE,EAAQxE,KAAO+C,GAAY/C,KAAOA,GAAO,GAC/CwC,SAEJ,GAAGsB,EAAI/C,MAAQxI,EAAOK,QAAS,CAC7B,MAAM8L,EAAiBtB,EAAqBrC,GACtC4D,EAAUD,EAAetG,QAC/B,IAAK,MAAM0F,KAAOY,EACZjE,KAAKoB,yBAAyBiC,EAAI/C,KACpCsD,EAAgB7B,MAAM/B,KAAKK,UAAUgD,EAAI/C,MAAQN,KAAKqB,iBAAiBgC,EAAI/C,IAAK+C,EAAItB,OAGlF/B,KAAKgB,oBAAoBqC,EAAI/C,OAC3B+C,EAAI/C,MAAQ3E,EAAgB7B,OAC9B8J,EAAgB7B,MAAMjK,EAAOmB,QAAUoK,EAAItB,MAAMrE,QAAUhC,GAE7DkI,EAAgB7B,MAAMjK,EAAOgB,MAAQuK,EAAI/C,KAK7C,IAAKsD,EAAgB7B,MAAMjK,EAAOgB,MAAO,CACvC,MAAMqL,EAAaD,EAAQnC,MAA2B1E,KACtDuG,EAAgB7B,MAAMjK,EAAOgB,MAAQkH,KAAKK,UACxC8D,EAAUC,eACV,EAEH,CAEDR,EAAgB7B,MAAMvE,MAAQF,EAC5BsG,EAAgB7B,MAAMjK,EAAOgB,MAC7B4G,EAAMY,GACNsD,EAAgB7B,MAAMjK,EAAOmB,SAE/BoJ,EAASwB,KAAKD,EACf,KACI,CACH,MAAMS,EAAQhC,EAASW,KAAKsB,GAAKA,EAAEvC,OAAO1E,OAASiD,GAAO,CAACxI,EAAOc,aAAcd,EAAOqB,MAAMgI,SAASkC,EAAI/C,MAAQgE,GAAGvC,OAAO4B,UAAYrD,GACxI,GAAI+D,EACF,GAAGhB,EAAI/C,MAAQxI,EAAOc,aACpByL,EAAMtC,MAAQd,OAAOa,OAAO,CAAA,EAAIuC,EAAMtC,MAAO,CAAE,CAACsB,EAAI/C,KAAMyD,QACrD,CACL,MAAMQ,IAACA,EAAGC,IAAEA,EAAGzC,MAAEA,GAASsB,EAAItB,MAC5BsC,EAAMtC,MAAQd,OAAOa,OACrB,CAAA,EACAC,GAAS,CAAE,EACXsC,EAAMtC,MACNwC,EACAC,EAEH,MAEDnC,EAASwB,KAAKD,EAEjB,CACD,KACD,CACD,QACE,MAAM,IAAI5G,EAAe,gBAAgBqG,EAAI/C,OAGpD,CACF,CAEDkB,EAAcP,OAAOa,OAAO,CAAA,EAAIC,EAAOP,EAAa,CAClDS,SAAUA,GAAY,CAAE,IAG1B,MAAMwC,EAAYjD,GAAaiD,UAC/BpC,EAAWA,GAAUa,KAAK,CAACC,EAAGuB,KAAQvB,GAAGpB,OAAO4C,OAAS,IAAMD,GAAG3C,OAAO4C,OAAS,IAC/E7D,OAAQkB,IACP,MAAM4C,EAAY5C,GAAMD,OAAO8C,QAAiC,GAChE,OAAID,GAAUlG,QAEVkG,EAASzD,SAASsD,QAAtB,EADSzC,IAIb,MAAMhE,EAA6B,CACjCuB,IAAKA,EACLyC,KAAMM,EACNP,MAAOP,EACPa,SAAUA,GAKZ,OADIZ,IAAYzD,EAAO8G,WAAarF,EAAkBC,IAC/C1B,CACR,CA+BD,eAAOoC,CAAS2E,GACd,GAAIA,EAAO7E,WAAWF,KAAKC,MACzB,MAAM,IAAIhD,EACR,0BAA0B8H,EAAO7E,0BAErCF,KAAKC,MAAM8E,EAAO7E,SAAW6E,EAC7B/E,KAAKgF,QAAUD,CAChB,CAaO,gBAAOE,CACbC,GAEA,GAAIA,aAAenF,EAAiB,OAAOmF,EAC3C,MAAMH,EAA6B,IAAIG,EAEvC,OADAH,EAAOI,aACAJ,CACR,CAaD,UAAOlE,CAAOX,GACZ,IAAKA,EACH,OAAOF,KAAKiF,UACVjF,KAAKgF,SAET,KAAM9E,KAAWF,KAAKC,OACpB,MAAM,IAAIhD,EACR,0BAA0BiD,oBAE9B,OAAOF,KAAKiF,UACVjF,KAAKC,MAAMC,GAId,CAcD,aAAO4D,CAAwBpE,KAAajC,GAC1C,MAAMP,EACJ0D,EAAMC,IAAInB,EAAMxC,YAAYG,OAASuD,EAAMwE,WAAW1F,GACxD,IAAKxC,EAAa,MAAM,IAAID,EAAc,6BAC1C,MAAMiD,EAAUQ,QAAQC,YACtBZ,EAAgBO,IAAIxI,EAAOI,aAC3BgF,GAIF,OAAO6C,EAAgBc,IAAIX,GAAS4D,OAAOpE,KAAUjC,EACtD,CAWD,UAAO6C,CAAIA,GACT,MAAO,GAAGxI,EAAOC,UAAUuI,GAC5B,EC9iBa,SAAA+E,EAAQ9F,EAAcwC,GAEpC,MAAO,CAACuD,EAAeC,KACrB,MAAMC,EAAwB,CAC5BjG,IAAKA,GAAO+F,EAASjI,KACrB0E,MAAOA,GAET,OAAO0D,EAAS1F,EAAgBO,IAAIxI,EAAOG,SAAUuN,EAA9CC,CAAoDH,GAE/D,CAkCM,SAAUI,EAAWX,GACzB,OAAOY,EAAMF,EAAS1F,EAAgBO,IAAIxI,EAAOI,aAAc6M,GACjE,CA+CgB,SAAAa,EAAYvI,EAAe0E,GAEzC,MAAO,CAACuD,EAAeC,KACrB,MAAMC,EAA4B,CAChCxD,KAAM,CACJzC,IAAKlC,GAAQiI,EAASjI,KACtB0E,MAAOA,IAGX,OAAO0D,EAAS1F,EAAgBO,IAAIxI,EAAOW,aAAc+M,EAAlDC,CAAwDH,GAEnE,CAuDM,SAAUO,EAAW9D,GACzB,OAAQuD,IACN,MAAME,EAAO,CACXvD,SAAUF,GAEZ,OAAO0D,EAAS1F,EAAgBO,IAAIxI,EAAOe,UAAW2M,EAA/CC,CAAqDH,GAEhE,CA4DgB,SAAAQ,EAASvG,EAAawG,EAAe,EAAGC,EAA0B,EAAGC,EAAqCpO,EAAmBqO,QAC3I,MAAO,CAACZ,EAAeC,IACdF,EAAQ9F,EAAK,CAACwG,OAAMC,OAAMC,cAA1BZ,CAAuCC,EAAUC,EAE5D,CAkFgB,SAAAY,EAAe5G,EAAa6G,EAAsC,EAAGC,GAAqB,EAAOtE,EAAa,IAC5H,MAAO,CAACuD,EAAeC,KACrB,IAAIe,EAAkC,GAKtC,cAJUF,IAAU/H,EAAeQ,SACjCyH,EAAaF,EACbA,EAAQE,EAAW5H,QAEd2G,EAAQ9F,EAAK,CAClB6G,QACAC,YACAC,aACAvE,SAJKsD,CAKJC,EAAUC,GAEjB,CCxUgB,SAAAgB,KAAUC,GACxB,OAAOC,EACL1G,EAAgBO,IAAIxI,EAAOkB,QAC3BwN,EAEJ,CAgCgB,SAAAE,EAAQ/B,EAAgB,GACtC,OAAO8B,EACL1G,EAAgBO,IAAIxI,EAAOoB,OAC3ByL,EAEJ,UAsCgBE,IACd,OAAO0B,EACLI,EAAcC,OACdD,EAAcE,KACdF,EAAcG,OACdH,EAAcI,OAElB,CA4CM,SAAUC,GACdzH,EACAwC,EACAkF,GAAqB,GAErB,MAAO,CAAC3B,EAAeC,KACrB,MAAME,EAA8B,CAClClG,IAAKA,EACL0H,UAAWA,EACXlF,MAAOd,OAAOa,OAAO,CAAA,EAAIC,GAAS,CAAA,EAAI,CACpC1E,KAAMkI,KAIV,OAAOkB,EAAa1G,EAAgBO,IAAIxI,EAAOK,SAAUsN,EAAlDgB,CACLnB,EACAC,GAGN,UA6CgB2B,GACdC,OAA+BvI,EAC/BG,GAAqB,GAErB,MAAO,CAACqI,EAAa7B,KACnB,MAAME,EAA2B,CAC/BpI,KAAM8J,GAAY5B,EAClBxG,UAAWA,GAEb0H,EAAa1G,EAAgBO,IAAIxI,EAAOM,MAAOqN,EAA/CgB,CACEW,EACA7B,GAGN,CAwDgB,SAAA8B,GACdC,EACA/H,EACAwC,EAA6B,CAAE,EAC/B7D,GAAmB,EACnB+I,GAAqB,GAErB,MAAO,CAACG,EAAa7B,KACnB,MAAME,EAA8B,CAClClG,IAAKA,EACL0H,UAAWA,EACXlF,MAAOd,OAAOa,OAAO,CAAA,EAAIC,GAAS,CAAA,EAAI,CACpC1E,KAAMiK,GAAS/B,GACdrH,EAAU,CAACqJ,YAAa,CAACtJ,MAAMZ,MAAOmK,UAAU,GAAQ,CAACA,SAAUzF,GAAOyF,WAAY,KAG3Ff,EAAa1G,EAAgBO,IAAIxI,EAAOO,OAAQoN,EAAhDgB,CACEW,EACA7B,GAGN,UAmDgBkC,GACdN,OAA+BvI,EAC/BmD,GAEA,MAAO,CAACqF,EAAa7B,KACnB,MAAME,EAAwC,CAC5CpI,KAAM8J,GAAY5B,EAClBxD,MAAOA,GAAS,CAAE,GAEpB0E,EAAa1G,EAAgBO,IAAIxI,EAAOY,YAAa+M,EAArDgB,CACEW,EACA7B,GAGN,UAoDgBmC,GACdlD,EAAc,EACdD,EAAc,GAEd,MAAO,CAAC6C,EAAa7B,KACnB,MAAME,EAAiC,CACrCpI,KAAOkI,EACPf,MACAD,MACAxC,MAAOd,OAAOa,OAAO,CAAA,EAAI,CAACyC,IAAKA,GAAO,EAAGC,IAAKA,GAAO,KAEvDiC,EAAa1G,EAAgBO,IAAIxI,EAAOc,cAAe6M,EAAvDgB,CACEW,EACA7B,GAGN,CAgEgB,SAAAoC,GACdC,EAAe,GAEhB,OAAOnB,EACJ1G,EAAgBO,IAAIxI,EAAOqB,MAC3ByO,EAEJ,CCpgBAhH,EAAMiH,UAAU/D,OAAS,YAAuCrG,GAC9D,OAAOsC,EAAgB+D,OAAO9D,QAASvC,EACzC,QChBaqK,GAOX,WAAA5K,GAAgB,ECEX,MAAM6K,GAAU"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -13,5 +13,5 @@ export * from "./ui/index.js";
|
|
|
13
13
|
* @const VERSION
|
|
14
14
|
* @memberOf module:ui-decorators
|
|
15
15
|
*/
|
|
16
|
-
export const VERSION = "0.5.
|
|
17
|
-
//# sourceMappingURL=
|
|
16
|
+
export const VERSION = "0.5.28";
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iCAAwB;AACxB,8BAAqB;AAErB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=Renderable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Renderable.js","sourceRoot":"","sources":["../../../src/model/Renderable.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { UIMediaBreakPointsType } from "../ui/types";
|
|
2
|
+
import { ISteppedModelPage } from "../ui/interfaces";
|
|
2
3
|
/**
|
|
3
4
|
* @description Decorator that tags a class as a UI model
|
|
4
5
|
* @summary Adds rendering capabilities to a model class by providing a render method
|
|
@@ -87,13 +88,13 @@ export declare function renderedBy(engine: string): (target: object, propertyKey
|
|
|
87
88
|
* @param {Record<string, any>} [props] Additional properties to pass to the rendered list item element
|
|
88
89
|
* @return {Function} A class decorator function
|
|
89
90
|
*
|
|
90
|
-
* @function
|
|
91
|
+
* @function uilistmodel
|
|
91
92
|
* @category Class Decorators
|
|
92
93
|
*
|
|
93
94
|
* @example
|
|
94
95
|
* // Basic usage with default tag (class name)
|
|
95
96
|
* @uimodel()
|
|
96
|
-
* @
|
|
97
|
+
* @uilistmodel()
|
|
97
98
|
* class TodoItem extends Model {
|
|
98
99
|
* @attribute()
|
|
99
100
|
* title: string;
|
|
@@ -104,7 +105,7 @@ export declare function renderedBy(engine: string): (target: object, propertyKey
|
|
|
104
105
|
*
|
|
105
106
|
* // Usage with custom tag and properties
|
|
106
107
|
* @uimodel()
|
|
107
|
-
* @
|
|
108
|
+
* @uilistmodel('li', { class: 'list-group-item' })
|
|
108
109
|
* class ListItem extends Model {
|
|
109
110
|
* @attribute()
|
|
110
111
|
* text: string;
|
|
@@ -113,15 +114,15 @@ export declare function renderedBy(engine: string): (target: object, propertyKey
|
|
|
113
114
|
* @mermaid
|
|
114
115
|
* sequenceDiagram
|
|
115
116
|
* participant System
|
|
116
|
-
* participant
|
|
117
|
+
* participant uilistmodel
|
|
117
118
|
* participant Model
|
|
118
119
|
* participant RenderingEngine
|
|
119
|
-
* System->>
|
|
120
|
-
*
|
|
120
|
+
* System->>uilistmodel: apply to Model
|
|
121
|
+
* uilistmodel->>Model: adds list item metadata
|
|
121
122
|
* Model->>RenderingEngine: uses list item metadata when in list context
|
|
122
123
|
* RenderingEngine->>System: renders with list item styling
|
|
123
124
|
*/
|
|
124
|
-
export declare function
|
|
125
|
+
export declare function uilistmodel(name?: string, props?: Record<string, any>): (original: any, propertyKey?: any) => void;
|
|
125
126
|
/**
|
|
126
127
|
* @description Decorator that adds event handlers to a UI model
|
|
127
128
|
* @summary Specifies event handlers that should be attached to the rendered model
|
|
@@ -197,15 +198,15 @@ export declare function uihandlers(props?: Record<string, any>): (original: any)
|
|
|
197
198
|
* @uilayout('div', 2, 3)
|
|
198
199
|
* class TwoColumnLayout extends Model {
|
|
199
200
|
* @attribute()
|
|
200
|
-
* @
|
|
201
|
+
* @uilayoutprop(1, 1)
|
|
201
202
|
* header: string;
|
|
202
203
|
*
|
|
203
204
|
* @attribute()
|
|
204
|
-
* @
|
|
205
|
+
* @uilayoutprop(1, 2)
|
|
205
206
|
* leftContent: string;
|
|
206
207
|
*
|
|
207
208
|
* @attribute()
|
|
208
|
-
* @
|
|
209
|
+
* @uilayoutprop(2, 2)
|
|
209
210
|
* rightContent: string;
|
|
210
211
|
* }
|
|
211
212
|
*
|
|
@@ -213,11 +214,11 @@ export declare function uihandlers(props?: Record<string, any>): (original: any)
|
|
|
213
214
|
* @uilayout('section', 3, 2, 'l')
|
|
214
215
|
* class ResponsiveLayout extends Model {
|
|
215
216
|
* @attribute()
|
|
216
|
-
* @
|
|
217
|
+
* @uilayoutprop(1, 1)
|
|
217
218
|
* title: string;
|
|
218
219
|
*
|
|
219
220
|
* @attribute()
|
|
220
|
-
* @
|
|
221
|
+
* @uilayoutprop(2, 1)
|
|
221
222
|
* subtitle: string;
|
|
222
223
|
* }
|
|
223
224
|
*
|
|
@@ -235,3 +236,84 @@ export declare function uihandlers(props?: Record<string, any>): (original: any)
|
|
|
235
236
|
* RenderingEngine->>System: renders grid layout with specified dimensions
|
|
236
237
|
*/
|
|
237
238
|
export declare function uilayout(tag: string, cols?: number, rows?: number | string[], breakpoint?: UIMediaBreakPointsType): (original: any, propertyKey?: any) => void;
|
|
239
|
+
/**
|
|
240
|
+
* @description Decorator that creates a multi-step form model with page navigation
|
|
241
|
+
* @summary Combines UI model functionality with stepped/wizard form configuration
|
|
242
|
+
* This decorator creates a UI model that acts as a multi-step container with page navigation
|
|
243
|
+
* capabilities. It's designed for wizard-style forms or multi-page workflows where users
|
|
244
|
+
* progress through sequential steps. The decorator combines @uimodel with page-specific
|
|
245
|
+
* properties and optional pagination controls.
|
|
246
|
+
*
|
|
247
|
+
* @param {string} tag The HTML tag to use for the stepped form container
|
|
248
|
+
* @param {number|ISteppedModelPage[]} [pages=1] Number of pages or array of page definitions with metadata
|
|
249
|
+
* @param {boolean} [paginated=false] Whether to show pagination controls (prev/next buttons)
|
|
250
|
+
* @param {any} [props={}] Additional properties to pass to the container element
|
|
251
|
+
* @return {Function} A class decorator function
|
|
252
|
+
*
|
|
253
|
+
* @function uisteppedmodel
|
|
254
|
+
* @category Class Decorators
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* // Create a simple 3-step wizard form
|
|
258
|
+
* @uisteppedmodel('div', 3, true)
|
|
259
|
+
* class RegistrationWizard extends Model {
|
|
260
|
+
* // Page 1: Personal Info
|
|
261
|
+
* @attribute()
|
|
262
|
+
* @uipageprop(1)
|
|
263
|
+
* firstName: string;
|
|
264
|
+
*
|
|
265
|
+
* @attribute()
|
|
266
|
+
* @uipageprop(1)
|
|
267
|
+
* lastName: string;
|
|
268
|
+
*
|
|
269
|
+
* // Page 2: Contact Info
|
|
270
|
+
* @attribute()
|
|
271
|
+
* @uipageprop(2)
|
|
272
|
+
* email: string;
|
|
273
|
+
*
|
|
274
|
+
* @attribute()
|
|
275
|
+
* @uipageprop(2)
|
|
276
|
+
* phone: string;
|
|
277
|
+
*
|
|
278
|
+
* // Page 3: Confirmation
|
|
279
|
+
* @attribute()
|
|
280
|
+
* @uipageprop(3)
|
|
281
|
+
* acceptTerms: boolean;
|
|
282
|
+
* }
|
|
283
|
+
*
|
|
284
|
+
* // Create a wizard with custom page definitions
|
|
285
|
+
* @uisteppedmodel('section', [
|
|
286
|
+
* { title: 'Personal', icon: 'user' },
|
|
287
|
+
* { title: 'Contact', icon: 'email' },
|
|
288
|
+
* { title: 'Review', icon: 'check' }
|
|
289
|
+
* ], true, { class: 'wizard-container' })
|
|
290
|
+
* class OnboardingWizard extends Model {
|
|
291
|
+
* @attribute()
|
|
292
|
+
* @uipageprop(1)
|
|
293
|
+
* username: string;
|
|
294
|
+
*
|
|
295
|
+
* @attribute()
|
|
296
|
+
* @uipageprop(2)
|
|
297
|
+
* email: string;
|
|
298
|
+
*
|
|
299
|
+
* @attribute()
|
|
300
|
+
* @uipageprop(3)
|
|
301
|
+
* preferences: string;
|
|
302
|
+
* }
|
|
303
|
+
*
|
|
304
|
+
* @mermaid
|
|
305
|
+
* sequenceDiagram
|
|
306
|
+
* participant System
|
|
307
|
+
* participant uisteppedmodel
|
|
308
|
+
* participant uimodel
|
|
309
|
+
* participant Model
|
|
310
|
+
* participant RenderingEngine
|
|
311
|
+
* participant PaginationController
|
|
312
|
+
* System->>uisteppedmodel: apply to Model
|
|
313
|
+
* uisteppedmodel->>uimodel: call with page config
|
|
314
|
+
* uimodel->>Model: adds model metadata with pages and pagination
|
|
315
|
+
* Model->>RenderingEngine: requests rendering as stepped form
|
|
316
|
+
* RenderingEngine->>PaginationController: initialize page navigation
|
|
317
|
+
* PaginationController->>System: renders current page with navigation controls
|
|
318
|
+
*/
|
|
319
|
+
export declare function uisteppedmodel(tag: string, pages?: number | ISteppedModelPage[], paginated?: boolean, props?: any): (original: any, propertyKey?: any) => void;
|
|
@@ -2,6 +2,7 @@ import { UIKeys } from "./../ui/constants.js";
|
|
|
2
2
|
import { apply, metadata } from "@decaf-ts/reflection";
|
|
3
3
|
import { RenderingEngine } from "./../ui/Rendering.js";
|
|
4
4
|
import { UIMediaBreakPoints } from "./../ui/constants.js";
|
|
5
|
+
import { ReservedModels } from "@decaf-ts/decorator-validation";
|
|
5
6
|
/**
|
|
6
7
|
* @description Decorator that tags a class as a UI model
|
|
7
8
|
* @summary Adds rendering capabilities to a model class by providing a render method
|
|
@@ -101,13 +102,13 @@ export function renderedBy(engine) {
|
|
|
101
102
|
* @param {Record<string, any>} [props] Additional properties to pass to the rendered list item element
|
|
102
103
|
* @return {Function} A class decorator function
|
|
103
104
|
*
|
|
104
|
-
* @function
|
|
105
|
+
* @function uilistmodel
|
|
105
106
|
* @category Class Decorators
|
|
106
107
|
*
|
|
107
108
|
* @example
|
|
108
109
|
* // Basic usage with default tag (class name)
|
|
109
110
|
* @uimodel()
|
|
110
|
-
* @
|
|
111
|
+
* @uilistmodel()
|
|
111
112
|
* class TodoItem extends Model {
|
|
112
113
|
* @attribute()
|
|
113
114
|
* title: string;
|
|
@@ -118,7 +119,7 @@ export function renderedBy(engine) {
|
|
|
118
119
|
*
|
|
119
120
|
* // Usage with custom tag and properties
|
|
120
121
|
* @uimodel()
|
|
121
|
-
* @
|
|
122
|
+
* @uilistmodel('li', { class: 'list-group-item' })
|
|
122
123
|
* class ListItem extends Model {
|
|
123
124
|
* @attribute()
|
|
124
125
|
* text: string;
|
|
@@ -127,24 +128,24 @@ export function renderedBy(engine) {
|
|
|
127
128
|
* @mermaid
|
|
128
129
|
* sequenceDiagram
|
|
129
130
|
* participant System
|
|
130
|
-
* participant
|
|
131
|
+
* participant uilistmodel
|
|
131
132
|
* participant Model
|
|
132
133
|
* participant RenderingEngine
|
|
133
|
-
* System->>
|
|
134
|
-
*
|
|
134
|
+
* System->>uilistmodel: apply to Model
|
|
135
|
+
* uilistmodel->>Model: adds list item metadata
|
|
135
136
|
* Model->>RenderingEngine: uses list item metadata when in list context
|
|
136
137
|
* RenderingEngine->>System: renders with list item styling
|
|
137
138
|
*/
|
|
138
|
-
export function
|
|
139
|
+
export function uilistmodel(name, props) {
|
|
139
140
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
140
141
|
return (original, propertyKey) => {
|
|
141
142
|
const meta = {
|
|
142
143
|
item: {
|
|
143
|
-
tag:
|
|
144
|
+
tag: name || original.name,
|
|
144
145
|
props: props,
|
|
145
146
|
},
|
|
146
147
|
};
|
|
147
|
-
return metadata(RenderingEngine.key(UIKeys.
|
|
148
|
+
return metadata(RenderingEngine.key(UIKeys.UILISTMODEL), meta)(original);
|
|
148
149
|
};
|
|
149
150
|
}
|
|
150
151
|
/**
|
|
@@ -229,15 +230,15 @@ export function uihandlers(props) {
|
|
|
229
230
|
* @uilayout('div', 2, 3)
|
|
230
231
|
* class TwoColumnLayout extends Model {
|
|
231
232
|
* @attribute()
|
|
232
|
-
* @
|
|
233
|
+
* @uilayoutprop(1, 1)
|
|
233
234
|
* header: string;
|
|
234
235
|
*
|
|
235
236
|
* @attribute()
|
|
236
|
-
* @
|
|
237
|
+
* @uilayoutprop(1, 2)
|
|
237
238
|
* leftContent: string;
|
|
238
239
|
*
|
|
239
240
|
* @attribute()
|
|
240
|
-
* @
|
|
241
|
+
* @uilayoutprop(2, 2)
|
|
241
242
|
* rightContent: string;
|
|
242
243
|
* }
|
|
243
244
|
*
|
|
@@ -245,11 +246,11 @@ export function uihandlers(props) {
|
|
|
245
246
|
* @uilayout('section', 3, 2, 'l')
|
|
246
247
|
* class ResponsiveLayout extends Model {
|
|
247
248
|
* @attribute()
|
|
248
|
-
* @
|
|
249
|
+
* @uilayoutprop(1, 1)
|
|
249
250
|
* title: string;
|
|
250
251
|
*
|
|
251
252
|
* @attribute()
|
|
252
|
-
* @
|
|
253
|
+
* @uilayoutprop(2, 1)
|
|
253
254
|
* subtitle: string;
|
|
254
255
|
* }
|
|
255
256
|
*
|
|
@@ -271,4 +272,99 @@ export function uilayout(tag, cols = 1, rows = 1, breakpoint = UIMediaBreakPoint
|
|
|
271
272
|
return uimodel(tag, { cols, rows, breakpoint })(original, propertyKey);
|
|
272
273
|
};
|
|
273
274
|
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsNkJBQXdCO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSw2QkFBd0I7QUFFbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLDZCQUF3QjtBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxHQUFZLEVBQUUsS0FBMkI7SUFDL0QsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO1FBQzFDLE1BQU0sSUFBSSxHQUFvQjtZQUM1QixHQUFHLEVBQUUsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJO1lBQ3pCLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUN2QyxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBQ0gsTUFBTSxVQUFVLFVBQVUsQ0FBQyxHQUFZLEVBQUUsS0FBMkI7SUFDbEUsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO1FBQzFDLE1BQU0sSUFBSSxHQUE0QjtZQUNwQyxJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSTtnQkFDekIsS0FBSyxFQUFFLEtBQUs7YUFDYjtTQUNGLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvREc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQTJCO0lBQ3BELE9BQU8sQ0FBQyxRQUFhLEVBQUUsRUFBRTtRQUN2QixNQUFNLElBQUksR0FBRztZQUNYLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4RSxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlERztBQUNILE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBVyxFQUFFLE9BQWUsQ0FBQyxFQUFFLE9BQTBCLENBQUMsRUFBRSxhQUFxQyxrQkFBa0IsQ0FBQyxNQUFNO0lBQ2pKLE9BQU8sQ0FBQyxRQUFhLEVBQUUsV0FBaUIsRUFBRSxFQUFFO1FBQzFDLE9BQU8sT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVJS2V5cyB9IGZyb20gXCIuLi91aS9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFwcGx5LCBtZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgUmVuZGVyaW5nRW5naW5lIH0gZnJvbSBcIi4uL3VpL1JlbmRlcmluZ1wiO1xuaW1wb3J0IHsgVUlMaXN0SXRlbU1vZGVsTWV0YWRhdGEsIFVJTWVkaWFCcmVha1BvaW50c1R5cGUsIFVJTW9kZWxNZXRhZGF0YSB9IGZyb20gXCIuLi91aS90eXBlc1wiO1xuaW1wb3J0IHsgVUlNZWRpYUJyZWFrUG9pbnRzIH0gZnJvbSBcIi4uL3VpL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgdGhhdCB0YWdzIGEgY2xhc3MgYXMgYSBVSSBtb2RlbFxuICogQHN1bW1hcnkgQWRkcyByZW5kZXJpbmcgY2FwYWJpbGl0aWVzIHRvIGEgbW9kZWwgY2xhc3MgYnkgcHJvdmlkaW5nIGEgcmVuZGVyIG1ldGhvZFxuICogVGhpcyBkZWNvcmF0b3IgYXBwbGllcyBtZXRhZGF0YSB0byB0aGUgY2xhc3MgdGhhdCBlbmFibGVzIGl0IHRvIGJlIHJlbmRlcmVkIGJ5IHRoZSBVSSByZW5kZXJpbmcgZW5naW5lLlxuICogVGhlIG1vZGVsIHdpbGwgYmUgcmVuZGVyZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHRhZyBhbmQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW3RhZ10gVGhlIEhUTUwgdGFnIHRvIHVzZSB3aGVuIHJlbmRlcmluZyB0aGlzIG1vZGVsIChkZWZhdWx0cyB0byBjbGFzcyBuYW1lKVxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcHJvcHNdIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBwYXNzIHRvIHRoZSByZW5kZXJlZCBlbGVtZW50XG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBjbGFzcyBkZWNvcmF0b3IgZnVuY3Rpb25cbiAqXG4gKiBAZnVuY3Rpb24gdWltb2RlbFxuICogQGNhdGVnb3J5IENsYXNzIERlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBkZWZhdWx0IHRhZyAoY2xhc3MgbmFtZSlcbiAqIEB1aW1vZGVsKClcbiAqIGNsYXNzIFVzZXJQcm9maWxlIGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgbmFtZTogc3RyaW5nO1xuICpcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogLy8gVXNhZ2Ugd2l0aCBjdXN0b20gdGFnIGFuZCBwcm9wZXJ0aWVzXG4gKiBAdWltb2RlbCgnZGl2JywgeyBjbGFzczogJ3VzZXItY2FyZCcgfSlcbiAqIGNsYXNzIFVzZXJDYXJkIGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgdXNlcm5hbWU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFN5c3RlbVxuICogICBwYXJ0aWNpcGFudCB1aW1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IGNvbnN0cnVjdG9yXG4gKiAgIHBhcnRpY2lwYW50IGluc3RhbmNlXG4gKiAgIFN5c3RlbS0+PnVpbW9kZWw6ZG8oY29uc3RydWN0b3IpXG4gKiAgIHVpbW9kZWwtPj5jb25zdHJ1Y3RvcjogRXhlY3V0ZXMgdGhlIGNvbnN0cnVjdG9yXG4gKiAgIGNvbnN0cnVjdG9yLT4+dWltb2RlbDogcmV0dXJucyBpbnN0YW5jZVxuICogICB1aW1vZGVsLT4+aW5zdGFuY2U6IGFkZHMgdGhlIHJlbmRlciBtZXRob2RcbiAqICAgdWltb2RlbC0+PlN5c3RlbTogcmV0dXJucyBVSU1vZGVsIGluc3RhbmNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aW1vZGVsKHRhZz86IHN0cmluZywgcHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgcmV0dXJuIChvcmlnaW5hbDogYW55LCBwcm9wZXJ0eUtleT86IGFueSkgPT4ge1xuICAgIGNvbnN0IG1ldGE6IFVJTW9kZWxNZXRhZGF0YSA9IHtcbiAgICAgIHRhZzogdGFnIHx8IG9yaWdpbmFsLm5hbWUsXG4gICAgICBwcm9wczogcHJvcHMsXG4gICAgfTtcbiAgICByZXR1cm4gbWV0YWRhdGEoUmVuZGVyaW5nRW5naW5lLmtleShVSUtleXMuVUlNT0RFTCksIG1ldGEpKG9yaWdpbmFsKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIHRoYXQgc3BlY2lmaWVzIHdoaWNoIHJlbmRlcmluZyBlbmdpbmUgdG8gdXNlIGZvciBhIG1vZGVsXG4gKiBAc3VtbWFyeSBBc3NvY2lhdGVzIGEgbW9kZWwgd2l0aCBhIHNwZWNpZmljIHJlbmRlcmluZyBlbmdpbmUgaW1wbGVtZW50YXRpb25cbiAqIFRoaXMgZGVjb3JhdG9yIGFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcmVuZGVyaW5nIGVuZ2luZSBmb3IgYSBzcGVjaWZpYyBtb2RlbCBjbGFzcyxcbiAqIGVuYWJsaW5nIGRpZmZlcmVudCByZW5kZXJpbmcgc3RyYXRlZ2llcyBmb3IgZGlmZmVyZW50IG1vZGVscy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5naW5lIFRoZSBuYW1lIG9mIHRoZSByZW5kZXJpbmcgZW5naW5lIHRvIHVzZVxuICogQHJldHVybiB7RnVuY3Rpb259IEEgY2xhc3MgZGVjb3JhdG9yIGZ1bmN0aW9uXG4gKlxuICogQGZ1bmN0aW9uIHJlbmRlcmVkQnlcbiAqIEBjYXRlZ29yeSBDbGFzcyBEZWNvcmF0b3JzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNwZWNpZnkgYSBjdXN0b20gcmVuZGVyaW5nIGVuZ2luZSBmb3IgYSBtb2RlbFxuICogQHVpbW9kZWwoKVxuICogQHJlbmRlcmVkQnkoJ3JlYWN0JylcbiAqIGNsYXNzIFJlYWN0Q29tcG9uZW50IGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgdGl0bGU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFN5c3RlbVxuICogICBwYXJ0aWNpcGFudCByZW5kZXJlZEJ5XG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IFJlbmRlcmluZ0VuZ2luZVxuICogICBTeXN0ZW0tPj5yZW5kZXJlZEJ5OiBhcHBseSB0byBNb2RlbFxuICogICByZW5kZXJlZEJ5LT4+TW9kZWw6IGFkZHMgZW5naW5lIG1ldGFkYXRhXG4gKiAgIE1vZGVsLT4+UmVuZGVyaW5nRW5naW5lOiB1c2VzIHNwZWNpZmllZCBlbmdpbmVcbiAqICAgUmVuZGVyaW5nRW5naW5lLT4+U3lzdGVtOiByZW5kZXJzIHdpdGggY3VzdG9tIGVuZ2luZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyZWRCeShlbmdpbmU6IHN0cmluZykge1xuICByZXR1cm4gYXBwbHkobWV0YWRhdGEoUmVuZGVyaW5nRW5naW5lLmtleShVSUtleXMuUkVOREVSRURfQlkpLCBlbmdpbmUpKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIHRoYXQgdGFncyBhIG1vZGVsIGFzIGEgbGlzdCBpdGVtIGZvciBVSSByZW5kZXJpbmdcbiAqIEBzdW1tYXJ5IFNwZWNpZmllcyBob3cgYSBtb2RlbCBzaG91bGQgYmUgcmVuZGVyZWQgd2hlbiBkaXNwbGF5ZWQgaW4gYSBsaXN0IGNvbnRleHRcbiAqIFRoaXMgZGVjb3JhdG9yIGFwcGxpZXMgbWV0YWRhdGEgdG8gdGhlIGNsYXNzIHRoYXQgZW5hYmxlcyBpdCB0byBiZSByZW5kZXJlZCBhcyBhIGxpc3QgaXRlbVxuICogYnkgdGhlIFVJIHJlbmRlcmluZyBlbmdpbmUuIFRoZSBtb2RlbCB3aWxsIGJlIHJlbmRlcmVkIHdpdGggdGhlIHNwZWNpZmllZCB0YWcgYW5kIHByb3BlcnRpZXNcbiAqIHdoZW4gaXQgYXBwZWFycyBpbiBhIGxpc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFt0YWddIFRoZSBIVE1MIHRhZyB0byB1c2Ugd2hlbiByZW5kZXJpbmcgdGhpcyBtb2RlbCBhcyBhIGxpc3QgaXRlbSAoZGVmYXVsdHMgdG8gY2xhc3MgbmFtZSlcbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gW3Byb3BzXSBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gcGFzcyB0byB0aGUgcmVuZGVyZWQgbGlzdCBpdGVtIGVsZW1lbnRcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIGNsYXNzIGRlY29yYXRvciBmdW5jdGlvblxuICpcbiAqIEBmdW5jdGlvbiB1aWxpc3RpdGVtXG4gKiBAY2F0ZWdvcnkgQ2xhc3MgRGVjb3JhdG9yc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgdGFnIChjbGFzcyBuYW1lKVxuICogQHVpbW9kZWwoKVxuICogQHVpbGlzdGl0ZW0oKVxuICogY2xhc3MgVG9kb0l0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gKiAgIEBhdHRyaWJ1dGUoKVxuICogICB0aXRsZTogc3RyaW5nO1xuICpcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIGNvbXBsZXRlZDogYm9vbGVhbjtcbiAqIH1cbiAqXG4gKiAvLyBVc2FnZSB3aXRoIGN1c3RvbSB0YWcgYW5kIHByb3BlcnRpZXNcbiAqIEB1aW1vZGVsKClcbiAqIEB1aWxpc3RpdGVtKCdsaScsIHsgY2xhc3M6ICdsaXN0LWdyb3VwLWl0ZW0nIH0pXG4gKiBjbGFzcyBMaXN0SXRlbSBleHRlbmRzIE1vZGVsIHtcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIHRleHQ6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFN5c3RlbVxuICogICBwYXJ0aWNpcGFudCB1aWxpc3RpdGVtXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IFJlbmRlcmluZ0VuZ2luZVxuICogICBTeXN0ZW0tPj51aWxpc3RpdGVtOiBhcHBseSB0byBNb2RlbFxuICogICB1aWxpc3RpdGVtLT4+TW9kZWw6IGFkZHMgbGlzdCBpdGVtIG1ldGFkYXRhXG4gKiAgIE1vZGVsLT4+UmVuZGVyaW5nRW5naW5lOiB1c2VzIGxpc3QgaXRlbSBtZXRhZGF0YSB3aGVuIGluIGxpc3QgY29udGV4dFxuICogICBSZW5kZXJpbmdFbmdpbmUtPj5TeXN0ZW06IHJlbmRlcnMgd2l0aCBsaXN0IGl0ZW0gc3R5bGluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gdWlsaXN0aXRlbSh0YWc/OiBzdHJpbmcsIHByb3BzPzogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHJldHVybiAob3JpZ2luYWw6IGFueSwgcHJvcGVydHlLZXk/OiBhbnkpID0+IHtcbiAgICBjb25zdCBtZXRhOiBVSUxpc3RJdGVtTW9kZWxNZXRhZGF0YSA9IHtcbiAgICAgIGl0ZW06IHtcbiAgICAgICAgdGFnOiB0YWcgfHwgb3JpZ2luYWwubmFtZSxcbiAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5VSUxJU1RJVEVNKSwgbWV0YSkob3JpZ2luYWwpO1xuICB9O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNvcmF0b3IgdGhhdCBhZGRzIGV2ZW50IGhhbmRsZXJzIHRvIGEgVUkgbW9kZWxcbiAqIEBzdW1tYXJ5IFNwZWNpZmllcyBldmVudCBoYW5kbGVycyB0aGF0IHNob3VsZCBiZSBhdHRhY2hlZCB0byB0aGUgcmVuZGVyZWQgbW9kZWxcbiAqIFRoaXMgZGVjb3JhdG9yIGFsbG93cyB5b3UgdG8gZGVmaW5lIGV2ZW50IGhhbmRsZXJzIHRoYXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XG4gKiBhdHRhY2hlZCB0byB0aGUgcmVuZGVyZWQgVUkgZWxlbWVudC4gVGhlIGhhbmRsZXJzIGFyZSBwYXNzZWQgYXMgcHJvcGVydGllc1xuICogdG8gdGhlIHJlbmRlcmluZyBlbmdpbmUuXG4gKlxuICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbcHJvcHNdIE9iamVjdCBjb250YWluaW5nIGV2ZW50IGhhbmRsZXIgZnVuY3Rpb25zIGFuZCBvdGhlciBwcm9wZXJ0aWVzXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gQSBjbGFzcyBkZWNvcmF0b3IgZnVuY3Rpb25cbiAqXG4gKiBAZnVuY3Rpb24gdWloYW5kbGVyc1xuICogQGNhdGVnb3J5IENsYXNzIERlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQWRkIGV2ZW50IGhhbmRsZXJzIHRvIGEgbW9kZWxcbiAqIEB1aW1vZGVsKCdidXR0b24nKVxuICogQHVpaGFuZGxlcnMoe1xuICogICBvbkNsaWNrOiAoZXZlbnQpID0+IGNvbnNvbGUubG9nKCdCdXR0b24gY2xpY2tlZCcpLFxuICogICBvbk1vdXNlT3ZlcjogKGV2ZW50KSA9PiBjb25zb2xlLmxvZygnTW91c2Ugb3ZlciBidXR0b24nKSxcbiAqICAgZGlzYWJsZWQ6IGZhbHNlXG4gKiB9KVxuICogY2xhc3MgQ2xpY2thYmxlQnV0dG9uIGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgbGFiZWw6IHN0cmluZztcbiAqIH1cbiAqXG4gKiAvLyBBZGQgZm9ybSBzdWJtaXNzaW9uIGhhbmRsZXJzXG4gKiBAdWltb2RlbCgnZm9ybScpXG4gKiBAdWloYW5kbGVycyh7XG4gKiAgIG9uU3VibWl0OiAoZXZlbnQpID0+IHtcbiAqICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICogICAgIGNvbnNvbGUubG9nKCdGb3JtIHN1Ym1pdHRlZCcpO1xuICogICB9LFxuICogICBvblJlc2V0OiAoZXZlbnQpID0+IGNvbnNvbGUubG9nKCdGb3JtIHJlc2V0JylcbiAqIH0pXG4gKiBjbGFzcyBDb250YWN0Rm9ybSBleHRlbmRzIE1vZGVsIHtcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBTeXN0ZW1cbiAqICAgcGFydGljaXBhbnQgdWloYW5kbGVyc1xuICogICBwYXJ0aWNpcGFudCBNb2RlbFxuICogICBwYXJ0aWNpcGFudCBSZW5kZXJpbmdFbmdpbmVcbiAqICAgcGFydGljaXBhbnQgVUlcbiAqICAgU3lzdGVtLT4+dWloYW5kbGVyczogYXBwbHkgdG8gTW9kZWxcbiAqICAgdWloYW5kbGVycy0+Pk1vZGVsOiBhZGRzIGhhbmRsZXIgbWV0YWRhdGFcbiAqICAgTW9kZWwtPj5SZW5kZXJpbmdFbmdpbmU6IHJlcXVlc3RzIHJlbmRlcmluZyB3aXRoIGhhbmRsZXJzXG4gKiAgIFJlbmRlcmluZ0VuZ2luZS0+PlVJOiByZW5kZXJzIGVsZW1lbnQgd2l0aCBldmVudCBoYW5kbGVycyBhdHRhY2hlZFxuICogICBVSS0+Pk1vZGVsOiB0cmlnZ2VycyBoYW5kbGVycyBvbiBldmVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVpaGFuZGxlcnMocHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIHJldHVybiAob3JpZ2luYWw6IGFueSkgPT4ge1xuICAgIGNvbnN0IG1ldGEgPSB7XG4gICAgICBoYW5kbGVyczogcHJvcHNcbiAgICB9O1xuICAgIHJldHVybiBtZXRhZGF0YShSZW5kZXJpbmdFbmdpbmUua2V5KFVJS2V5cy5IQU5ETEVSUyksIG1ldGEpKG9yaWdpbmFsKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjb3JhdG9yIHRoYXQgY3JlYXRlcyBhIGxheW91dCBjb250YWluZXIgd2l0aCBncmlkIHNwZWNpZmljYXRpb25zXG4gKiBAc3VtbWFyeSBDb21iaW5lcyBVSSBtb2RlbCBmdW5jdGlvbmFsaXR5IHdpdGggbGF5b3V0IGdyaWQgY29uZmlndXJhdGlvblxuICogVGhpcyBkZWNvcmF0b3IgY3JlYXRlcyBhIFVJIG1vZGVsIHRoYXQgYWN0cyBhcyBhIGxheW91dCBjb250YWluZXIgd2l0aCBzcGVjaWZpZWRcbiAqIGNvbHVtbiBhbmQgcm93IGNvbmZpZ3VyYXRpb25zLiBJdCdzIGEgY29udmVuaWVuY2UgZGVjb3JhdG9yIHRoYXQgY29tYmluZXNcbiAqIEB1aW1vZGVsIHdpdGggbGF5b3V0LXNwZWNpZmljIHByb3BlcnRpZXMgZm9yIHJlc3BvbnNpdmUgZ3JpZCBsYXlvdXRzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIEhUTUwgdGFnIHRvIHVzZSBmb3IgdGhlIGxheW91dCBjb250YWluZXJcbiAqIEBwYXJhbSB7bnVtYmVyfSBbY29scz0xXSBOdW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZCBsYXlvdXRcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ1tdfSBbcm93cz0xXSBOdW1iZXIgb2Ygcm93cyBvciBhcnJheSBvZiByb3cgZGVmaW5pdGlvbnNcbiAqIEBwYXJhbSB7VUlNZWRpYUJyZWFrUG9pbnRzfSBbYnJlYWtwb2ludD0nbSddIE1lZGlhIGJyZWFrcG9pbnQgZm9yIHJlc3BvbnNpdmUgYmVoYXZpb3JcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufSBBIGNsYXNzIGRlY29yYXRvciBmdW5jdGlvblxuICpcbiAqIEBmdW5jdGlvbiB1aWxheW91dFxuICogQGNhdGVnb3J5IENsYXNzIERlY29yYXRvcnNcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3JlYXRlIGEgc2ltcGxlIDItY29sdW1uIGxheW91dFxuICogQHVpbGF5b3V0KCdkaXYnLCAyLCAzKVxuICogY2xhc3MgVHdvQ29sdW1uTGF5b3V0IGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgQHVpbGF5b3V0aXRlbSgxLCAxKVxuICogICBoZWFkZXI6IHN0cmluZztcbiAqXG4gKiAgIEBhdHRyaWJ1dGUoKVxuICogICBAdWlsYXlvdXRpdGVtKDEsIDIpXG4gKiAgIGxlZnRDb250ZW50OiBzdHJpbmc7XG4gKlxuICogICBAYXR0cmlidXRlKClcbiAqICAgQHVpbGF5b3V0aXRlbSgyLCAyKVxuICogICByaWdodENvbnRlbnQ6IHN0cmluZztcbiAqIH1cbiAqXG4gKiAvLyBDcmVhdGUgYSByZXNwb25zaXZlIGxheW91dCB3aXRoIGN1c3RvbSBicmVha3BvaW50XG4gKiBAdWlsYXlvdXQoJ3NlY3Rpb24nLCAzLCAyLCAnbCcpXG4gKiBjbGFzcyBSZXNwb25zaXZlTGF5b3V0IGV4dGVuZHMgTW9kZWwge1xuICogICBAYXR0cmlidXRlKClcbiAqICAgQHVpbGF5b3V0aXRlbSgxLCAxKVxuICogICB0aXRsZTogc3RyaW5nO1xuICpcbiAqICAgQGF0dHJpYnV0ZSgpXG4gKiAgIEB1aWxheW91dGl0ZW0oMiwgMSlcbiAqICAgc3VidGl0bGU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IFN5c3RlbVxuICogICBwYXJ0aWNpcGFudCB1aWxheW91dFxuICogICBwYXJ0aWNpcGFudCB1aW1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsXG4gKiAgIHBhcnRpY2lwYW50IFJlbmRlcmluZ0VuZ2luZVxuICogICBTeXN0ZW0tPj51aWxheW91dDogYXBwbHkgdG8gTW9kZWxcbiAqICAgdWlsYXlvdXQtPj51aW1vZGVsOiBjYWxsIHdpdGggbGF5b3V0IHByb3BzXG4gKiAgIHVpbW9kZWwtPj5Nb2RlbDogYWRkcyBtb2RlbCBtZXRhZGF0YSB3aXRoIGxheW91dCBjb25maWdcbiAqICAgTW9kZWwtPj5SZW5kZXJpbmdFbmdpbmU6IHJlcXVlc3RzIHJlbmRlcmluZyBhcyBsYXlvdXQgY29udGFpbmVyXG4gKiAgIFJlbmRlcmluZ0VuZ2luZS0+PlN5c3RlbTogcmVuZGVycyBncmlkIGxheW91dCB3aXRoIHNwZWNpZmllZCBkaW1lbnNpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1aWxheW91dCh0YWc6IHN0cmluZywgY29sczogbnVtYmVyID0gMSwgcm93czogbnVtYmVyIHwgc3RyaW5nW10gPSAxLCBicmVha3BvaW50OiBVSU1lZGlhQnJlYWtQb2ludHNUeXBlID0gVUlNZWRpYUJyZWFrUG9pbnRzLk1FRElVTSkge1xuICByZXR1cm4gKG9yaWdpbmFsOiBhbnksIHByb3BlcnR5S2V5PzogYW55KSA9PiB7XG4gICAgcmV0dXJuIHVpbW9kZWwodGFnLCB7Y29scywgcm93cywgYnJlYWtwb2ludH0pKG9yaWdpbmFsLCBwcm9wZXJ0eUtleSk7XG4gIH07XG59Il19
|
|
275
|
+
/**
|
|
276
|
+
* @description Decorator that creates a multi-step form model with page navigation
|
|
277
|
+
* @summary Combines UI model functionality with stepped/wizard form configuration
|
|
278
|
+
* This decorator creates a UI model that acts as a multi-step container with page navigation
|
|
279
|
+
* capabilities. It's designed for wizard-style forms or multi-page workflows where users
|
|
280
|
+
* progress through sequential steps. The decorator combines @uimodel with page-specific
|
|
281
|
+
* properties and optional pagination controls.
|
|
282
|
+
*
|
|
283
|
+
* @param {string} tag The HTML tag to use for the stepped form container
|
|
284
|
+
* @param {number|ISteppedModelPage[]} [pages=1] Number of pages or array of page definitions with metadata
|
|
285
|
+
* @param {boolean} [paginated=false] Whether to show pagination controls (prev/next buttons)
|
|
286
|
+
* @param {any} [props={}] Additional properties to pass to the container element
|
|
287
|
+
* @return {Function} A class decorator function
|
|
288
|
+
*
|
|
289
|
+
* @function uisteppedmodel
|
|
290
|
+
* @category Class Decorators
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* // Create a simple 3-step wizard form
|
|
294
|
+
* @uisteppedmodel('div', 3, true)
|
|
295
|
+
* class RegistrationWizard extends Model {
|
|
296
|
+
* // Page 1: Personal Info
|
|
297
|
+
* @attribute()
|
|
298
|
+
* @uipageprop(1)
|
|
299
|
+
* firstName: string;
|
|
300
|
+
*
|
|
301
|
+
* @attribute()
|
|
302
|
+
* @uipageprop(1)
|
|
303
|
+
* lastName: string;
|
|
304
|
+
*
|
|
305
|
+
* // Page 2: Contact Info
|
|
306
|
+
* @attribute()
|
|
307
|
+
* @uipageprop(2)
|
|
308
|
+
* email: string;
|
|
309
|
+
*
|
|
310
|
+
* @attribute()
|
|
311
|
+
* @uipageprop(2)
|
|
312
|
+
* phone: string;
|
|
313
|
+
*
|
|
314
|
+
* // Page 3: Confirmation
|
|
315
|
+
* @attribute()
|
|
316
|
+
* @uipageprop(3)
|
|
317
|
+
* acceptTerms: boolean;
|
|
318
|
+
* }
|
|
319
|
+
*
|
|
320
|
+
* // Create a wizard with custom page definitions
|
|
321
|
+
* @uisteppedmodel('section', [
|
|
322
|
+
* { title: 'Personal', icon: 'user' },
|
|
323
|
+
* { title: 'Contact', icon: 'email' },
|
|
324
|
+
* { title: 'Review', icon: 'check' }
|
|
325
|
+
* ], true, { class: 'wizard-container' })
|
|
326
|
+
* class OnboardingWizard extends Model {
|
|
327
|
+
* @attribute()
|
|
328
|
+
* @uipageprop(1)
|
|
329
|
+
* username: string;
|
|
330
|
+
*
|
|
331
|
+
* @attribute()
|
|
332
|
+
* @uipageprop(2)
|
|
333
|
+
* email: string;
|
|
334
|
+
*
|
|
335
|
+
* @attribute()
|
|
336
|
+
* @uipageprop(3)
|
|
337
|
+
* preferences: string;
|
|
338
|
+
* }
|
|
339
|
+
*
|
|
340
|
+
* @mermaid
|
|
341
|
+
* sequenceDiagram
|
|
342
|
+
* participant System
|
|
343
|
+
* participant uisteppedmodel
|
|
344
|
+
* participant uimodel
|
|
345
|
+
* participant Model
|
|
346
|
+
* participant RenderingEngine
|
|
347
|
+
* participant PaginationController
|
|
348
|
+
* System->>uisteppedmodel: apply to Model
|
|
349
|
+
* uisteppedmodel->>uimodel: call with page config
|
|
350
|
+
* uimodel->>Model: adds model metadata with pages and pagination
|
|
351
|
+
* Model->>RenderingEngine: requests rendering as stepped form
|
|
352
|
+
* RenderingEngine->>PaginationController: initialize page navigation
|
|
353
|
+
* PaginationController->>System: renders current page with navigation controls
|
|
354
|
+
*/
|
|
355
|
+
export function uisteppedmodel(tag, pages = 1, paginated = false, props = {}) {
|
|
356
|
+
return (original, propertyKey) => {
|
|
357
|
+
let pageTitles = [];
|
|
358
|
+
if (typeof pages === ReservedModels.OBJECT) {
|
|
359
|
+
pageTitles = pages;
|
|
360
|
+
pages = pageTitles.length;
|
|
361
|
+
}
|
|
362
|
+
return uimodel(tag, {
|
|
363
|
+
pages,
|
|
364
|
+
paginated,
|
|
365
|
+
pageTitles,
|
|
366
|
+
props
|
|
367
|
+
})(original, propertyKey);
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/model/decorators.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/model/index.js
CHANGED
|
@@ -2,4 +2,4 @@ import "./model.js";
|
|
|
2
2
|
export * from "./decorators.js";
|
|
3
3
|
export * from "./overrides.js";
|
|
4
4
|
export * from "./Renderable.js";
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":"AAAA,oBAAiB;AAEjB,gCAA6B;AAC7B,+BAA4B;AAC5B,gCAA6B"}
|
package/lib/esm/model/model.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/model/model.ts"],"names":[],"mappings":""}
|
|
@@ -21,4 +21,4 @@ import { RenderingEngine } from "./../ui/Rendering.js";
|
|
|
21
21
|
Model.prototype.render = function (...args) {
|
|
22
22
|
return RenderingEngine.render(this, ...args);
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/model/overrides.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,6BAAwB;AAElD;;;;;;;;;GASG;AACH,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,UAAoC,GAAG,IAAW;IACzE,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -55,7 +55,7 @@ export declare abstract class RenderingEngine<T = void, R = FieldDefinition<T>>
|
|
|
55
55
|
* @description Retrieves class decorator metadata for a model instance
|
|
56
56
|
* @summary Extracts UI-related class decorators from a model and returns them as an array
|
|
57
57
|
* This method collects metadata from various UI class decorators including @uimodel,
|
|
58
|
-
* @
|
|
58
|
+
* @uilistmodel, @uihandlers, and @uilayout applied to the model class.
|
|
59
59
|
*
|
|
60
60
|
* @template M Type extending Model
|
|
61
61
|
* @param {M} model - The model instance to extract metadata from
|