@decaf-ts/ui-decorators 0.16.0 → 0.16.2

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.
Files changed (54) hide show
  1. package/dist/ui-decorators.cjs +1 -1
  2. package/lib/cjs/graph/constants.cjs +15 -0
  3. package/lib/cjs/graph/constants.cjs.map +1 -0
  4. package/lib/cjs/graph/decorators.cjs +75 -0
  5. package/lib/cjs/graph/decorators.cjs.map +1 -0
  6. package/lib/cjs/graph/index.cjs +24 -0
  7. package/lib/cjs/graph/index.cjs.map +1 -0
  8. package/lib/cjs/graph/overrides/Rendering.cjs +4 -0
  9. package/lib/cjs/graph/overrides/Rendering.cjs.map +1 -0
  10. package/lib/cjs/graph/overrides/index.cjs +20 -0
  11. package/lib/cjs/graph/overrides/index.cjs.map +1 -0
  12. package/lib/cjs/graph/overrides/overrides.cjs +12 -0
  13. package/lib/cjs/graph/overrides/overrides.cjs.map +1 -0
  14. package/lib/cjs/graph/reader.cjs +141 -0
  15. package/lib/cjs/graph/reader.cjs.map +1 -0
  16. package/lib/cjs/graph/types.cjs +7 -0
  17. package/lib/cjs/graph/types.cjs.map +1 -0
  18. package/lib/cjs/index.cjs +3 -3
  19. package/lib/esm/graph/constants.js +13 -0
  20. package/lib/esm/graph/constants.js.map +1 -0
  21. package/lib/esm/graph/decorators.js +67 -0
  22. package/lib/esm/graph/decorators.js.map +1 -0
  23. package/lib/esm/graph/index.js +7 -0
  24. package/lib/esm/graph/index.js.map +1 -0
  25. package/lib/esm/graph/overrides/Rendering.js +2 -0
  26. package/lib/esm/graph/overrides/Rendering.js.map +1 -0
  27. package/lib/esm/graph/overrides/index.js +3 -0
  28. package/lib/esm/graph/overrides/index.js.map +1 -0
  29. package/lib/esm/graph/overrides/overrides.js +9 -0
  30. package/lib/esm/graph/overrides/overrides.js.map +1 -0
  31. package/lib/esm/graph/reader.js +131 -0
  32. package/lib/esm/graph/reader.js.map +1 -0
  33. package/lib/esm/graph/types.js +2 -0
  34. package/lib/esm/graph/types.js.map +1 -0
  35. package/lib/esm/index.js +3 -3
  36. package/lib/types/graph/constants.d.cts +103 -0
  37. package/lib/types/graph/constants.d.mts +103 -0
  38. package/lib/types/graph/decorators.d.cts +7 -0
  39. package/lib/types/graph/decorators.d.mts +7 -0
  40. package/lib/types/graph/index.d.cts +6 -0
  41. package/lib/types/graph/index.d.mts +6 -0
  42. package/lib/types/graph/overrides/Rendering.d.cts +5 -0
  43. package/lib/types/graph/overrides/Rendering.d.mts +5 -0
  44. package/lib/types/graph/overrides/index.d.cts +2 -0
  45. package/lib/types/graph/overrides/index.d.mts +2 -0
  46. package/lib/types/graph/overrides/overrides.d.cts +1 -0
  47. package/lib/types/graph/overrides/overrides.d.mts +1 -0
  48. package/lib/types/graph/reader.d.cts +13 -0
  49. package/lib/types/graph/reader.d.mts +13 -0
  50. package/lib/types/graph/types.d.cts +2 -0
  51. package/lib/types/graph/types.d.mts +2 -0
  52. package/lib/types/index.d.cts +3 -3
  53. package/lib/types/index.d.mts +3 -3
  54. package/package.json +16 -1
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o){"use strict";var s;e.UIMediaBreakPoints=void 0,(s=e.UIMediaBreakPoints||(e.UIMediaBreakPoints={})).SMALL="small",s.MEDIUM="medium",s.LARGE="large",s.XLARGE="xlarge";const n={REFLECT:"ui",UIMODEL:"uimodel",RENDERED_BY:"rendered-by",ELEMENT:"uielement",PROP:"uiprop",CHILD:"uichild",NAME:"name",NAME_PREFIX:"input-",VALIDATION_MESSAGE:"validationMessage",UILISTMODEL:"uilistmodel",UILISTPROP:"uilistprop",UILAYOUT:"uilayout",UILAYOUTPROP:"uilayoutprop",HANDLERS:"handlers",TYPE:"type",SUB_TYPE:"subType",HIDDEN:"hidden",FORMAT:"format",ORDER:"order",PAGE:"page",EVENTS:"events",FIRST:"first",LAST:"last",READ_ONLY:"readonly",SEQUENCE:"sequence",REQUIRED:t.ValidationKeys.REQUIRED,MIN:t.ValidationKeys.MIN,MIN_LENGTH:t.ValidationKeys.MIN_LENGTH,MAX:t.ValidationKeys.MAX,MAX_LENGTH:t.ValidationKeys.MAX_LENGTH,PATTERN:t.ValidationKeys.PATTERN,URL:t.ValidationKeys.URL,STEP:t.ValidationKeys.STEP,DATE:t.ValidationKeys.DATE,EMAIL:t.ValidationKeys.EMAIL,PASSWORD:t.ValidationKeys.PASSWORD,EQUALS:t.ValidationKeys.EQUALS,DIFF:t.ValidationKeys.DIFF,LESS_THAN:t.ValidationKeys.LESS_THAN,LESS_THAN_OR_EQUAL:t.ValidationKeys.LESS_THAN_OR_EQUAL,GREATER_THAN:t.ValidationKeys.GREATER_THAN,GREATER_THAN_OR_EQUAL:t.ValidationKeys.GREATER_THAN_OR_EQUAL},i={[n.EMAIL]:t.EmailValidator,[n.URL]:t.URLValidator,[n.DATE]:t.DateValidator,[n.PASSWORD]:t.PasswordValidator},d={[n.REQUIRED]:t.RequiredValidator,[n.MIN]:t.MinValidator,[n.MAX]:t.MaxValidator,[n.STEP]:t.StepValidator,[n.MIN_LENGTH]:t.MinLengthValidator,[n.MAX_LENGTH]:t.MaxLengthValidator,[n.PATTERN]:t.PatternValidator,[n.EQUALS]:t.EqualsValidator,[n.DIFF]:t.DiffValidator,[n.LESS_THAN]:t.LessThanValidator,[n.LESS_THAN_OR_EQUAL]:t.LessThanOrEqualValidator,[n.GREATER_THAN]:t.GreaterThanValidator,[n.GREATER_THAN_OR_EQUAL]:t.GreaterThanOrEqualValidator},l="yyyy-MM-dd",c={BUTTON:"button",CHECKBOX:"checkbox",COLOR:"color",DATE:n.DATE,DATETIME_LOCAL:"datetime-local",EMAIL:n.EMAIL,FILE:"file",HIDDEN:"hidden",IMAGE:"image",MONTH:"month",NUMBER:"number",PASSWORD:n.PASSWORD,RADIO:"radio",RANGE:"range",RESET:"reset",SEARCH:"search",SUBMIT:"submit",TEL:"tel",TEXT:"text",TEXTAREA:"textarea",SELECT:"select",TIME:"time",URL:n.URL,WEEK:"week"},p=[c.CHECKBOX,c.RADIO],E={cancel:"cancel",confirm:"confirm",submit:"submit",clear:"clear",back:"back",[r.OperationKeys.CREATE]:r.OperationKeys.CREATE,[r.OperationKeys.READ]:r.OperationKeys.READ,[r.OperationKeys.UPDATE]:r.OperationKeys.UPDATE,[r.OperationKeys.DELETE]:r.OperationKeys.DELETE};class u extends r.InternalError{constructor(e){super(e,u.name)}}const f=e=>"function"==typeof e&&/^class\s/.test(e+"");function h(e,t){return a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,e,t)}function y(e,r,...a){if(e===n.DATE){if(!r)return"";const e=a.shift()||l;return t.formatDate(new Date(r),e)}return r}function M(e){if("number"==typeof e&&!isNaN(e))return e;const t=Number(e);return isNaN(t)?void 0:t}function T(e){if(!e)return e;const t={"&":"&amp;","<":"&lt;",">":"&gt;"};return(""+e).replace(/[&<>]/g,e=>t[e]||e)}function m(e){let r=Date.now();try{t.Model.pk(e.constructor)&&(r=e[t.Model.pk(e.constructor)])}catch(e){}return`${e.constructor.name}-${r}`}class R{static{this.cache={}}constructor(e){this.flavour=e,this.initialized=!1,R.register(this)}translate(e,r=!0){if(r)switch(e){case t.ReservedModels.STRING.name.toLowerCase():return c.TEXT;case t.ReservedModels.NUMBER.name.toLowerCase():case t.ReservedModels.BIGINT.name.toLowerCase():return c.NUMBER;case t.ReservedModels.BOOLEAN.name.toLowerCase():return c.CHECKBOX;case t.ReservedModels.DATE.name.toLowerCase():return c.DATE}else switch(e){case c.SELECT:case c.TEXT:case c.EMAIL:case c.COLOR:case c.PASSWORD:case c.TEL:case c.URL:case c.SEARCH:case c.HIDDEN:case c.TEXTAREA:case c.RADIO:return t.ReservedModels.STRING.name.toLowerCase();case c.NUMBER:return t.ReservedModels.NUMBER.name.toLowerCase();case c.CHECKBOX:return t.ReservedModels.BOOLEAN.name.toLowerCase();case c.DATE:case c.DATETIME_LOCAL:case c.TIME:return t.ReservedModels.DATE.name.toLowerCase()}return e}getClassDecoratorsMetadata(e){return[t.Model.uiModelOf(e.constructor),t.Model.uiListModelOf(e.constructor),t.Model.uiHandlersFor(e.constructor),t.Model.uiLayoutOf(e.constructor)].filter(Boolean)}sortChildrenByOrder(e=[]){return e.sort((r,a)=>{const o=r.props?.order??0,s=a.props?.order??0,i=r=>r===n.FIRST?0:typeof r===t.Primitives.NUMBER?1:r===n.LAST?e.length+e.indexOf(a):1,d=i(o),l=i(s);return d!==l?d-l:1===d&&typeof o===t.Primitives.NUMBER&&typeof s===t.Primitives.NUMBER?o-s:0})}isCustomValidator(e){return!Object.values(t.ValidationKeys).includes(e)&&!Object.values(n).includes(e)}isValidatableByType(e){return Object.keys(i).includes(e)}isValidatableByAttribute(e){return Object.keys(d).includes(e)}toAttributeValue(e,t){if(!Object.keys(d).includes(e))throw Error(`Invalid attribute key "${e}". Expected one of: ${Object.keys(d).join(", ")}.`);return e===n.REQUIRED||t[e]}toFieldDefinition(e,o={},s=!0){const{inheritProps:i,...d}=o;o=d;const p=this.getClassDecoratorsMetadata(e);if(!p.length)throw new u(`No ui definitions set for model ${e.constructor.name}. Did you use @uimodel?`);const E=Object.assign({},...p,i||{}),{tag:f,props:h,item:M,handlers:T}=E,R=t.Model.uiPropertiesOf(e.constructor);let O,L=M?.props||{},g={};const A=(e,t)=>e?[e,t].join("."):t;if(R){const s=a.Metadata.get(e.constructor,t.ValidationKeys.REFLECT)||{};for(const i of R){const d=t.Model.uiDecorationOf(e.constructor,i);let p;try{p=t.Model.uiTypeOf(e.constructor,i)}catch(e){if(!(e instanceof r.NotFoundError))throw e}if(t.Model.uiIsHidden(e.constructor,i)&&!t.Model.uiElementOf(e.constructor,i))throw new u(`@uielement no found in "${i}". It is required to use hiddenOn decorator.`);Object.entries(d).map(([e,t])=>({key:e,props:t})).sort(e=>[n.ELEMENT,n.CHILD].includes(e.key)?-1:1).forEach(r=>{if(!r)throw new u("No decorator found");switch(r.key){case n.PROP:L[i]=r.props;break;case n.CHILD:{const a=r.props?.props?.name||i;try{if(!t.Model.isModel(t.Model.build({},a))&&!t.Model.isPropertyModel(e,a))throw new u(`Child "${a}" must be a model.`)}catch(e){throw new u(`Child "${a}" must be a model.`)}let s;const n=e[i];if("object"!=typeof n||null===n||Array.isArray(n)){const e=r.props.props?.name;s=new(t.Model.get(e))}O=O||[];const d=Object.assign({},o||{},{model:s},{inheritProps:r.props,childOf:A(o?.childOf,i)}),l=this.toFieldDefinition(n||s,d,!1),{inheritProps:c}=d;c&&(l.props=Object.assign({},l.props,c.props||{})),O.push(l);break}case n.UILISTPROP:{g=g||{};const e=r.props;e.name&&(g[e.name]="object"==typeof e?.props&&n.SEQUENCE in e.props?e.props:i);const t=Object.assign({},E.props?.item||{},M?.props||{},e?.props||{},o);L={tag:M?.tag||t.render||"",props:Object.assign({},L?.props,{mapper:g},t)};break}case n.EVENTS:case n.HIDDEN:case n.PAGE:case n.ORDER:case n.UILAYOUTPROP:case n.ELEMENT:{O=O||[];const t=r.props,d=Object.assign({},L?.props,t.props||{},t?.props?.name?{path:A(o?.childOf,t.props.name),childOf:void 0}:{},o,{name:t.props?.name||i});if(r.key===n.ELEMENT){const r={tag:t.tag||L?.tag||f||"",props:d},o=s[i];if(o)for(const e of Object.entries(o).map(([e,t])=>({key:e,props:t})))this.isValidatableByAttribute(e.key)?r.props[this.translate(e.key)]=this.toAttributeValue(e.key,e.props):this.isValidatableByType(e.key)?(e.key===c.DATE&&(r.props[n.FORMAT]=e.props.format||l),r.props[n.TYPE]=e.key):this.isCustomValidator(e.key)&&(d[n.SUB_TYPE]=e.key,e.props?.message&&(d[n.VALIDATION_MESSAGE]=e.props.message));if(!r.props[n.TYPE]){const t=a.Metadata.type(e.constructor,i).name;r.props[n.TYPE]=this.translate(t.toLowerCase(),!0)}r.props.value=y(r.props[n.TYPE],e[i],r.props[n.FORMAT]),O.push(r)}else{const e=O.find(e=>e.props?.name===i||[n.UILAYOUTPROP,n.PAGE,n.EVENTS].includes(r.key)&&(e.props?.childOf===i||e.props?.childOf?.endsWith("."+i)));if(e)if(r.key!==n.UILAYOUTPROP)e.props=Object.assign({},e.props,{[r.key]:t});else{const{row:t,col:a,props:o}=r.props;e.props=Object.assign({},o||{},e.props,t,a)}}break}default:throw new u("Invalid key: "+r.key)}})}}o=Object.assign({},h,o,{handlers:T||{}});const D=o?.operation;O=this.sortChildrenByOrder(O).filter(e=>{const t=e?.props?.hidden||[];return t?.length&&t.includes(D)?void 0:e});const I={tag:f,item:L,props:o,children:O?.length?O:void 0};return s&&(I.rendererId=m(e)),I}static register(e){if(e.flavour in this.cache)throw new r.InternalError(`Rendering engine under ${e.flavour} already exists`);this.cache[e.flavour]=e,this.current=e}static getOrBoot(e){if(e instanceof R)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 r.InternalError(`Rendering engine under ${e} does not exist`);return this.getOrBoot(this.cache[e])}static render(e,...a){if(!t.Model.get(e.constructor.name)&&!t.Model.fromObject(e))throw new r.InternalError("No model registered found");const o=t.Model.renderedBy(e.constructor);return R.get(o).render(e,...a)}}function O(...e){return(t,r)=>a.propMetadata(h(r,n.HIDDEN),e)(t,r)}function L(e,t){return(r,o)=>{a.propMetadata(h(o,n.EVENTS),{..."object"==typeof e?e:{[e]:t}})(r,o)}}class g extends t.Validator{getMessage(e,...t){return g.translateService?g.translateService.translate(e,...t):super.getMessage(e,...t)}}class A extends o.LoggedClass{constructor(){super(),this.enableDarkMode=!0,this.isDarkMode=!1,this.item={tag:""},this.props={},this.route="",this.borders=!1,this.OperationKeys=r.OperationKeys,this.initialized=!1,this.events={},this.handlers={}}get repository(){return this._repository}set repository(e){this._repository=e}async render(...e){this.log.for(this.render).info(`render for ${this.componentName} with ${JSON.stringify(e)}`)}async refresh(...e){this.log.for(this.refresh).info("Refresh called with args: "+e)}async initialize(...e){this.initialized=!0}async translate(...e){this.log.for(this.translate).info(`translate for ${this.componentName} with ${JSON.stringify(e)}`)}async preview(...e){this.log.for(this.preview).debug("Preview called with args: "+e)}async submit(...e){this.log.for(this.submit).info(`submit for ${this.componentName} with ${JSON.stringify(e)}`)}parseHandlers(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{if(f(a)){const o=new a,s=e in o?o[e]:o.handle;r[e]=s,t.handlers[e]=s}else r[e]=a,t.handlers[e]=a}),r}parseEvents(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{const o=e,s=a();if(f(s)){const a=(new s)[e];a&&(r[o]=a,t.events[o]=a)}else r[o]=a,t.events[o]=a}),r}}class D extends o.LoggedClass{translate(e,t){this.log.for(this.translate).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}instant(e,t){this.log.for(this.instant).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}}function I(e,t){return(r,o)=>{const s={tag:e||r.name,props:t};return a.metadata(a.Metadata.key(n.REFLECT,n.UIMODEL),s)(r)}}function N(e){return a.apply(a.metadata(a.Metadata.key(n.REFLECT,n.RENDERED_BY),e))}function C(e,t){return(r,o)=>{const s={item:{tag:e||r.name,props:t}};return a.metadata(a.Metadata.key(n.REFLECT,n.UILISTMODEL),s)(r)}}function b(e){return t=>{const r={handlers:e};return a.metadata(a.Metadata.key(n.REFLECT,n.HANDLERS),r)(t)}}function S(t,r=1,o=1,s={}){const i=Object.assign({..."boolean"==typeof r?{flexMode:r,cols:1}:{flexMode:!1,cols:r},rows:o,...Object.assign({breakpoint:e.UIMediaBreakPoints.LARGE},s)});return(e,r)=>(a.metadata(a.Metadata.key(n.REFLECT,n.UILAYOUT),i)(e),I(t,i)(e,r))}function P(e,t=1,r=!1,a={}){let o=[];return"object"==typeof t&&(o=t,t=o.length),I(e,{pages:t,paginated:r,pageTitles:o,props:a})}t.Model.prototype.render=function(...e){return R.render(this,...e)},t.Model.renderedBy=(e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.RENDERED_BY))).bind(t.Model),t.Model.uiPropertiesOf=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model),t.Model.uiDecorationOf=(e,t,r)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(o)return r?o[r]:o},t.Model.uiModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UIMODEL)),t.Model.uiElementOf=(e,t)=>a.Metadata.get(e,h(t,n.ELEMENT)),t.Model.uiListModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILISTMODEL)),t.Model.uiHandlersFor=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.HANDLERS)),t.Model.uiLayoutOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILAYOUT)),t.Model.uiIsHidden=(e,t)=>!!a.Metadata.get(e,h(t,n.HIDDEN)),t.Model.uiIsHiddenOn=(e,t,r)=>{const o=a.Metadata.get(e,h(t,n.HIDDEN));return!!o&&(r?o.includes(r):o)},t.Model.uiTypeOf=(e,t)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(!o)throw new r.NotFoundError(`No metadata found for property '${t}' on model '${e.name}'`);const s=Object.keys(o).filter(e=>[n.PROP,n.ELEMENT,n.CHILD].includes(e));if(0===s.length)throw new r.NotFoundError(`No UI type metadata found for property '${t}' on model '${e.name}'`);if(s.length>1)throw new u("Only one type of decoration is allowed. Please choose between @uiprop, @uichild or @uielement");return o[s[0]]},t.Model.uiListItems=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model);const U=t.ModelBuilder.prototype;U.decorateClass||(U.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),U.uimodel=function(e,t){return this.decorateClass(I(e,t))},U.renderedBy=function(e){return this.decorateClass(N(e))},U.uilistmodel=function(e,t){return this.decorateClass(C(e,t))},U.uihandlers=function(e){return this.decorateClass(b(e))},U.uilayout=function(e,t,r,a){return this.decorateClass(S(e,t,r,a))},U.uisteppedmodel=function(e,t,r,a){return this.decorateClass(P(e,t,r,a))};const k="##VERSION##",w="##PACKAGE##";a.Metadata.registerLibrary(w,k),e.ActionRoles=E,e.COMMIT="6957de8",e.ComponentEventNames={Render:"render",BackButtonClickEvent:"backButtonNavigationEndEvent",Refresh:"RefreshEvent",Click:"ClickEvent",Change:"ChangeEvent",Submit:"SubmitEvent",ValidationError:"validationErrorEvent",ThemeChange:"themeChangeEvent",FormGroupLoaded:"formGroupLoadedEvent"},e.DecafComponent=A,e.DecafEventHandler=class extends A{constructor(){super()}handle(...e){this.log.for(this.handle).info(`component ${this.componentName} handling ${JSON.stringify(e)}`)}handleClick(...e){this.log.for(this.handleClick).info(`component ${this.componentName} handling click ${JSON.stringify(e)}`)}handleAction(...e){this.log.for(this.handleAction).info(`component ${this.componentName} handling action ${JSON.stringify(e)}`)}},e.DecafTranslateService=D,e.ElementPositions={left:"left",center:"center",right:"right",top:"top",bottom:"bottom"},e.ElementSizes={xsmall:"xsmall",small:"small",medium:"medium",default:"default",large:"large",xLarge:"xlarge","2xLarge":"2xlarge",auto:"auto",expand:"expand",block:"block",half:"half",full:"full"},e.FULL_VERSION="0.15.0-6957de8",e.HTML5CheckTypes=p,e.HTML5DateFormat=l,e.HTML5InputTypes=c,e.LayoutGridGaps={small:"small",medium:"medium",large:"large",collapse:"collapse",none:""},e.PACKAGE_NAME=w,e.RenderingEngine=R,e.RenderingError=u,e.TransactionHooks={BeforeRead:"beforeRead",AfterRead:"afterRead",BeforeCreate:"beforeCreate",AfterCreate:"afterCreate",BeforeUpdate:"beforeUpdate",AfterUpdate:"afterUpdate",BeforeDelete:"beforeDelete",AfterDelete:"afterDelete"},e.UIKeys=n,e.UIValidator=g,e.VERSION=k,e.ValidatableByAttribute=d,e.ValidatableByType=i,e.WindowColorSchemes={light:"light",dark:"dark",undefined:"undefined"},e.escapeHtml=T,e.formatByType=y,e.generateUIModelID=m,e.getUIAttributeKey=h,e.hidden=()=>O(r.OperationKeys.CREATE,r.OperationKeys.READ,r.OperationKeys.UPDATE,r.OperationKeys.DELETE),e.hideOn=O,e.isClassConstructor=f,e.parseToNumber=M,e.parseValueByType=function e(a,o,s){let n;switch(a){case Array.name:n=(Array.isArray(o)?o.map(r=>e(t.ReservedModels.STRING.name.toLowerCase(),r,s)):[o]).join(",");break;case c.NUMBER:n=M(o);break;case c.DATE:{const e=s.format;o&&(""+o).trim().length&&(n=typeof o===t.ReservedModels.NUMBER.name.toLowerCase()?new Date(o):o?e?t.parseDate(e,o):new Date(o):void 0);break}default:n=typeof o===t.ReservedModels.OBJECT.name.toLowerCase()?Array.isArray(o)?o.join(","):JSON.stringify(o):typeof o===t.ReservedModels.BOOLEAN.name.toLowerCase()?o:typeof o===t.ReservedModels.STRING.name.toLowerCase()?T(o):n}if(void 0===n)throw new r.InternalError(`Failed to parse value of type ${a} from ${typeof o} - ${o}`);return n},e.renderedBy=N,e.revertHtml=e=>{const t={"&amp;":"&","&lt;":"<","&gt;":">"};return(""+e).replace(/&lt;|&gt;|&amp;/g,e=>t[e]||e)},e.uichild=(e,t,r={},o=!1,s=!1)=>(i,d)=>{const l={tag:t,serialize:s,props:Object.assign({},r||{},{name:e||d},o?{customTypes:[Array.name],multiple:!0}:{multiple:r?.multiple||!1})};a.propMetadata(h(d,n.CHILD),l)(i,d)},e.uielement=(e,t,r=!1)=>(o,s)=>{"object"==typeof e&&(t=e,e="");const i={tag:e,serialize:r,props:Object.assign({},t||{},{name:s})};return a.propMetadata(h(s,n.ELEMENT),i)(o,s)},e.uihandlers=b,e.uilayout=S,e.uilayoutprop=(e=1,t=1)=>(r,o)=>{const s={name:o,props:Object.assign({},{row:t,col:e})};a.propMetadata(h(o,n.UILAYOUTPROP),s)(r,o)},e.uilistmodel=C,e.uilistprop=(e=void 0,t)=>(r,o)=>{const s={name:e||o,props:t||{}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)},e.uimodel=I,e.uion=L,e.uionclick=e=>L("handleClick",e),e.uionrender=e=>L("render",e),e.uiorder=(e=n.FIRST)=>(t,r)=>a.propMetadata(h(r,n.ORDER),e)(t,r),e.uipageprop=(e=1)=>(t,r)=>a.propMetadata(h(r,n.PAGE),e)(t,r),e.uiprop=(e=void 0,t=!1)=>(r,o)=>{const s={name:e||o,stringify:t};a.propMetadata(h(o,n.PROP),s)(r,o)},e.uisteppedmodel=P,e.uitablecol=(e=n.LAST,t)=>(r,o)=>{const s={name:o,props:{sequence:e,...t?{valueParserFn:t}:{}}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decoration"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","@decaf-ts/decoration","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ui-decorators"]={},e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.decafTsDecoration,e.decafTsLogging);
1
+ var e,t;e=this,t=function(e,t,r,a,o){"use strict";var s;e.UIMediaBreakPoints=void 0,(s=e.UIMediaBreakPoints||(e.UIMediaBreakPoints={})).SMALL="small",s.MEDIUM="medium",s.LARGE="large",s.XLARGE="xlarge";const n={REFLECT:"ui",UIMODEL:"uimodel",RENDERED_BY:"rendered-by",ELEMENT:"uielement",PROP:"uiprop",CHILD:"uichild",NAME:"name",NAME_PREFIX:"input-",VALIDATION_MESSAGE:"validationMessage",UILISTMODEL:"uilistmodel",UILISTPROP:"uilistprop",UILAYOUT:"uilayout",UILAYOUTPROP:"uilayoutprop",HANDLERS:"handlers",TYPE:"type",SUB_TYPE:"subType",HIDDEN:"hidden",FORMAT:"format",ORDER:"order",PAGE:"page",EVENTS:"events",FIRST:"first",LAST:"last",READ_ONLY:"readonly",SEQUENCE:"sequence",REQUIRED:t.ValidationKeys.REQUIRED,MIN:t.ValidationKeys.MIN,MIN_LENGTH:t.ValidationKeys.MIN_LENGTH,MAX:t.ValidationKeys.MAX,MAX_LENGTH:t.ValidationKeys.MAX_LENGTH,PATTERN:t.ValidationKeys.PATTERN,URL:t.ValidationKeys.URL,STEP:t.ValidationKeys.STEP,DATE:t.ValidationKeys.DATE,EMAIL:t.ValidationKeys.EMAIL,PASSWORD:t.ValidationKeys.PASSWORD,EQUALS:t.ValidationKeys.EQUALS,DIFF:t.ValidationKeys.DIFF,LESS_THAN:t.ValidationKeys.LESS_THAN,LESS_THAN_OR_EQUAL:t.ValidationKeys.LESS_THAN_OR_EQUAL,GREATER_THAN:t.ValidationKeys.GREATER_THAN,GREATER_THAN_OR_EQUAL:t.ValidationKeys.GREATER_THAN_OR_EQUAL},i={[n.EMAIL]:t.EmailValidator,[n.URL]:t.URLValidator,[n.DATE]:t.DateValidator,[n.PASSWORD]:t.PasswordValidator},d={[n.REQUIRED]:t.RequiredValidator,[n.MIN]:t.MinValidator,[n.MAX]:t.MaxValidator,[n.STEP]:t.StepValidator,[n.MIN_LENGTH]:t.MinLengthValidator,[n.MAX_LENGTH]:t.MaxLengthValidator,[n.PATTERN]:t.PatternValidator,[n.EQUALS]:t.EqualsValidator,[n.DIFF]:t.DiffValidator,[n.LESS_THAN]:t.LessThanValidator,[n.LESS_THAN_OR_EQUAL]:t.LessThanOrEqualValidator,[n.GREATER_THAN]:t.GreaterThanValidator,[n.GREATER_THAN_OR_EQUAL]:t.GreaterThanOrEqualValidator},l="yyyy-MM-dd",c={BUTTON:"button",CHECKBOX:"checkbox",COLOR:"color",DATE:n.DATE,DATETIME_LOCAL:"datetime-local",EMAIL:n.EMAIL,FILE:"file",HIDDEN:"hidden",IMAGE:"image",MONTH:"month",NUMBER:"number",PASSWORD:n.PASSWORD,RADIO:"radio",RANGE:"range",RESET:"reset",SEARCH:"search",SUBMIT:"submit",TEL:"tel",TEXT:"text",TEXTAREA:"textarea",SELECT:"select",TIME:"time",URL:n.URL,WEEK:"week"},p=[c.CHECKBOX,c.RADIO],E={cancel:"cancel",confirm:"confirm",submit:"submit",clear:"clear",back:"back",[r.OperationKeys.CREATE]:r.OperationKeys.CREATE,[r.OperationKeys.READ]:r.OperationKeys.READ,[r.OperationKeys.UPDATE]:r.OperationKeys.UPDATE,[r.OperationKeys.DELETE]:r.OperationKeys.DELETE};class u extends r.InternalError{constructor(e){super(e,u.name)}}const f=e=>"function"==typeof e&&/^class\s/.test(e+"");function h(e,t){return a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,e,t)}function y(e,r,...a){if(e===n.DATE){if(!r)return"";const e=a.shift()||l;return t.formatDate(new Date(r),e)}return r}function M(e){if("number"==typeof e&&!isNaN(e))return e;const t=Number(e);return isNaN(t)?void 0:t}function T(e){if(!e)return e;const t={"&":"&amp;","<":"&lt;",">":"&gt;"};return(""+e).replace(/[&<>]/g,e=>t[e]||e)}function m(e){let r=Date.now();try{t.Model.pk(e.constructor)&&(r=e[t.Model.pk(e.constructor)])}catch(e){}return`${e.constructor.name}-${r}`}class R{static{this.cache={}}constructor(e){this.flavour=e,this.initialized=!1,R.register(this)}translate(e,r=!0){if(r)switch(e){case t.ReservedModels.STRING.name.toLowerCase():return c.TEXT;case t.ReservedModels.NUMBER.name.toLowerCase():case t.ReservedModels.BIGINT.name.toLowerCase():return c.NUMBER;case t.ReservedModels.BOOLEAN.name.toLowerCase():return c.CHECKBOX;case t.ReservedModels.DATE.name.toLowerCase():return c.DATE}else switch(e){case c.SELECT:case c.TEXT:case c.EMAIL:case c.COLOR:case c.PASSWORD:case c.TEL:case c.URL:case c.SEARCH:case c.HIDDEN:case c.TEXTAREA:case c.RADIO:return t.ReservedModels.STRING.name.toLowerCase();case c.NUMBER:return t.ReservedModels.NUMBER.name.toLowerCase();case c.CHECKBOX:return t.ReservedModels.BOOLEAN.name.toLowerCase();case c.DATE:case c.DATETIME_LOCAL:case c.TIME:return t.ReservedModels.DATE.name.toLowerCase()}return e}getClassDecoratorsMetadata(e){return[t.Model.uiModelOf(e.constructor),t.Model.uiListModelOf(e.constructor),t.Model.uiHandlersFor(e.constructor),t.Model.uiLayoutOf(e.constructor)].filter(Boolean)}sortChildrenByOrder(e=[]){return e.sort((r,a)=>{const o=r.props?.order??0,s=a.props?.order??0,i=r=>r===n.FIRST?0:typeof r===t.Primitives.NUMBER?1:r===n.LAST?e.length+e.indexOf(a):1,d=i(o),l=i(s);return d!==l?d-l:1===d&&typeof o===t.Primitives.NUMBER&&typeof s===t.Primitives.NUMBER?o-s:0})}isCustomValidator(e){return!Object.values(t.ValidationKeys).includes(e)&&!Object.values(n).includes(e)}isValidatableByType(e){return Object.keys(i).includes(e)}isValidatableByAttribute(e){return Object.keys(d).includes(e)}toAttributeValue(e,t){if(!Object.keys(d).includes(e))throw Error(`Invalid attribute key "${e}". Expected one of: ${Object.keys(d).join(", ")}.`);return e===n.REQUIRED||t[e]}toFieldDefinition(e,o={},s=!0){const{inheritProps:i,...d}=o;o=d;const p=this.getClassDecoratorsMetadata(e);if(!p.length)throw new u(`No ui definitions set for model ${e.constructor.name}. Did you use @uimodel?`);const E=Object.assign({},...p,i||{}),{tag:f,props:h,item:M,handlers:T}=E,R=t.Model.uiPropertiesOf(e.constructor);let O,L=M?.props||{},g={};const A=(e,t)=>e?[e,t].join("."):t;if(R){const s=a.Metadata.get(e.constructor,t.ValidationKeys.REFLECT)||{};for(const i of R){const d=t.Model.uiDecorationOf(e.constructor,i);let p;try{p=t.Model.uiTypeOf(e.constructor,i)}catch(e){if(!(e instanceof r.NotFoundError))throw e}if(t.Model.uiIsHidden(e.constructor,i)&&!t.Model.uiElementOf(e.constructor,i))throw new u(`@uielement no found in "${i}". It is required to use hiddenOn decorator.`);Object.entries(d).map(([e,t])=>({key:e,props:t})).sort(e=>[n.ELEMENT,n.CHILD].includes(e.key)?-1:1).forEach(r=>{if(!r)throw new u("No decorator found");switch(r.key){case n.PROP:L[i]=r.props;break;case n.CHILD:{const a=r.props?.props?.name||i;try{if(!t.Model.isModel(t.Model.build({},a))&&!t.Model.isPropertyModel(e,a))throw new u(`Child "${a}" must be a model.`)}catch(e){throw new u(`Child "${a}" must be a model.`)}let s;const n=e[i];if("object"!=typeof n||null===n||Array.isArray(n)){const e=r.props.props?.name;s=new(t.Model.get(e))}O=O||[];const d=Object.assign({},o||{},{model:s},{inheritProps:r.props,childOf:A(o?.childOf,i)}),l=this.toFieldDefinition(n||s,d,!1),{inheritProps:c}=d;c&&(l.props=Object.assign({},l.props,c.props||{})),O.push(l);break}case n.UILISTPROP:{g=g||{};const e=r.props;e.name&&(g[e.name]="object"==typeof e?.props&&n.SEQUENCE in e.props?e.props:i);const t=Object.assign({},E.props?.item||{},M?.props||{},e?.props||{},o);L={tag:M?.tag||t.render||"",props:Object.assign({},L?.props,{mapper:g},t)};break}case n.EVENTS:case n.HIDDEN:case n.PAGE:case n.ORDER:case n.UILAYOUTPROP:case n.ELEMENT:{O=O||[];const t=r.props,d=Object.assign({},L?.props,t.props||{},t?.props?.name?{path:A(o?.childOf,t.props.name),childOf:void 0}:{},o,{name:t.props?.name||i});if(r.key===n.ELEMENT){const r={tag:t.tag||L?.tag||f||"",props:d},o=s[i];if(o)for(const e of Object.entries(o).map(([e,t])=>({key:e,props:t})))this.isValidatableByAttribute(e.key)?r.props[this.translate(e.key)]=this.toAttributeValue(e.key,e.props):this.isValidatableByType(e.key)?(e.key===c.DATE&&(r.props[n.FORMAT]=e.props.format||l),r.props[n.TYPE]=e.key):this.isCustomValidator(e.key)&&(d[n.SUB_TYPE]=e.key,e.props?.message&&(d[n.VALIDATION_MESSAGE]=e.props.message));if(!r.props[n.TYPE]){const t=a.Metadata.type(e.constructor,i).name;r.props[n.TYPE]=this.translate(t.toLowerCase(),!0)}r.props.value=y(r.props[n.TYPE],e[i],r.props[n.FORMAT]),O.push(r)}else{const e=O.find(e=>e.props?.name===i||[n.UILAYOUTPROP,n.PAGE,n.EVENTS].includes(r.key)&&(e.props?.childOf===i||e.props?.childOf?.endsWith("."+i)));if(e)if(r.key!==n.UILAYOUTPROP)e.props=Object.assign({},e.props,{[r.key]:t});else{const{row:t,col:a,props:o}=r.props;e.props=Object.assign({},o||{},e.props,t,a)}}break}default:throw new u("Invalid key: "+r.key)}})}}o=Object.assign({},h,o,{handlers:T||{}});const D=o?.operation;O=this.sortChildrenByOrder(O).filter(e=>{const t=e?.props?.hidden||[];return t?.length&&t.includes(D)?void 0:e});const I={tag:f,item:L,props:o,children:O?.length?O:void 0};return s&&(I.rendererId=m(e)),I}static register(e){if(e.flavour in this.cache)throw new r.InternalError(`Rendering engine under ${e.flavour} already exists`);this.cache[e.flavour]=e,this.current=e}static getOrBoot(e){if(e instanceof R)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 r.InternalError(`Rendering engine under ${e} does not exist`);return this.getOrBoot(this.cache[e])}static render(e,...a){if(!t.Model.get(e.constructor.name)&&!t.Model.fromObject(e))throw new r.InternalError("No model registered found");const o=t.Model.renderedBy(e.constructor);return R.get(o).render(e,...a)}}function O(...e){return(t,r)=>a.propMetadata(h(r,n.HIDDEN),e)(t,r)}function L(e,t){return(r,o)=>{a.propMetadata(h(o,n.EVENTS),{..."object"==typeof e?e:{[e]:t}})(r,o)}}class g extends t.Validator{getMessage(e,...t){return g.translateService?g.translateService.translate(e,...t):super.getMessage(e,...t)}}class A extends o.LoggedClass{constructor(){super(),this.enableDarkMode=!0,this.isDarkMode=!1,this.item={tag:""},this.props={},this.route="",this.borders=!1,this.OperationKeys=r.OperationKeys,this.initialized=!1,this.events={},this.handlers={}}get repository(){return this._repository}set repository(e){this._repository=e}async render(...e){this.log.for(this.render).info(`render for ${this.componentName} with ${JSON.stringify(e)}`)}async refresh(...e){this.log.for(this.refresh).info("Refresh called with args: "+e)}async initialize(...e){this.initialized=!0}async translate(...e){this.log.for(this.translate).info(`translate for ${this.componentName} with ${JSON.stringify(e)}`)}async preview(...e){this.log.for(this.preview).debug("Preview called with args: "+e)}async submit(...e){this.log.for(this.submit).info(`submit for ${this.componentName} with ${JSON.stringify(e)}`)}parseHandlers(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{if(f(a)){const o=new a,s=e in o?o[e]:o.handle;r[e]=s,t.handlers[e]=s}else r[e]=a,t.handlers[e]=a}),r}parseEvents(e,t){const r={};return Object.entries(e).forEach(([e,a])=>{const o=e,s=a();if(f(s)){const a=(new s)[e];a&&(r[o]=a,t.events[o]=a)}else r[o]=a,t.events[o]=a}),r}}class D extends o.LoggedClass{translate(e,t){this.log.for(this.translate).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}instant(e,t){this.log.for(this.instant).info(`Must translate ${e} with params ${JSON.stringify(t||{})}`)}}function I(e,t){return(r,o)=>{const s={tag:e||r.name,props:t};return a.metadata(a.Metadata.key(n.REFLECT,n.UIMODEL),s)(r)}}function N(e){return a.apply(a.metadata(a.Metadata.key(n.REFLECT,n.RENDERED_BY),e))}function C(e,t){return(r,o)=>{const s={item:{tag:e||r.name,props:t}};return a.metadata(a.Metadata.key(n.REFLECT,n.UILISTMODEL),s)(r)}}function b(e){return t=>{const r={handlers:e};return a.metadata(a.Metadata.key(n.REFLECT,n.HANDLERS),r)(t)}}function S(t,r=1,o=1,s={}){const i=Object.assign({..."boolean"==typeof r?{flexMode:r,cols:1}:{flexMode:!1,cols:r},rows:o,...Object.assign({breakpoint:e.UIMediaBreakPoints.LARGE},s)});return(e,r)=>(a.metadata(a.Metadata.key(n.REFLECT,n.UILAYOUT),i)(e),I(t,i)(e,r))}function P(e,t=1,r=!1,a={}){let o=[];return"object"==typeof t&&(o=t,t=o.length),I(e,{pages:t,paginated:r,pageTitles:o,props:a})}t.Model.prototype.render=function(...e){return R.render(this,...e)},t.Model.renderedBy=(e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.RENDERED_BY))).bind(t.Model),t.Model.uiPropertiesOf=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model),t.Model.uiDecorationOf=(e,t,r)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(o)return r?o[r]:o},t.Model.uiModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UIMODEL)),t.Model.uiElementOf=(e,t)=>a.Metadata.get(e,h(t,n.ELEMENT)),t.Model.uiListModelOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILISTMODEL)),t.Model.uiHandlersFor=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.HANDLERS)),t.Model.uiLayoutOf=e=>a.Metadata.get(e,a.Metadata.key(n.REFLECT,n.UILAYOUT)),t.Model.uiIsHidden=(e,t)=>!!a.Metadata.get(e,h(t,n.HIDDEN)),t.Model.uiIsHiddenOn=(e,t,r)=>{const o=a.Metadata.get(e,h(t,n.HIDDEN));return!!o&&(r?o.includes(r):o)},t.Model.uiTypeOf=(e,t)=>{const o=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES,t));if(!o)throw new r.NotFoundError(`No metadata found for property '${t}' on model '${e.name}'`);const s=Object.keys(o).filter(e=>[n.PROP,n.ELEMENT,n.CHILD].includes(e));if(0===s.length)throw new r.NotFoundError(`No UI type metadata found for property '${t}' on model '${e.name}'`);if(s.length>1)throw new u("Only one type of decoration is allowed. Please choose between @uiprop, @uichild or @uielement");return o[s[0]]},t.Model.uiListItems=(e=>{const t=a.Metadata.get(e,a.Metadata.key(n.REFLECT,a.DecorationKeys.PROPERTIES));if(t)return Object.keys(t)}).bind(t.Model);const U=t.ModelBuilder.prototype;U.decorateClass||(U.decorateClass=function(e){return this._classDecorators||(this._classDecorators=[]),this._classDecorators.push(e),this}),U.uimodel=function(e,t){return this.decorateClass(I(e,t))},U.renderedBy=function(e){return this.decorateClass(N(e))},U.uilistmodel=function(e,t){return this.decorateClass(C(e,t))},U.uihandlers=function(e){return this.decorateClass(b(e))},U.uilayout=function(e,t,r,a){return this.decorateClass(S(e,t,r,a))},U.uisteppedmodel=function(e,t,r,a){return this.decorateClass(P(e,t,r,a))};const k="##VERSION##",w="##PACKAGE##";a.Metadata.registerLibrary(w,k),e.ActionRoles=E,e.COMMIT="4889499",e.ComponentEventNames={Render:"render",BackButtonClickEvent:"backButtonNavigationEndEvent",Refresh:"RefreshEvent",Click:"ClickEvent",Change:"ChangeEvent",Submit:"SubmitEvent",ValidationError:"validationErrorEvent",ThemeChange:"themeChangeEvent",FormGroupLoaded:"formGroupLoadedEvent"},e.DecafComponent=A,e.DecafEventHandler=class extends A{constructor(){super()}handle(...e){this.log.for(this.handle).info(`component ${this.componentName} handling ${JSON.stringify(e)}`)}handleClick(...e){this.log.for(this.handleClick).info(`component ${this.componentName} handling click ${JSON.stringify(e)}`)}handleAction(...e){this.log.for(this.handleAction).info(`component ${this.componentName} handling action ${JSON.stringify(e)}`)}},e.DecafTranslateService=D,e.ElementPositions={left:"left",center:"center",right:"right",top:"top",bottom:"bottom"},e.ElementSizes={xsmall:"xsmall",small:"small",medium:"medium",default:"default",large:"large",xLarge:"xlarge","2xLarge":"2xlarge",auto:"auto",expand:"expand",block:"block",half:"half",full:"full"},e.FULL_VERSION="0.16.1-4889499",e.HTML5CheckTypes=p,e.HTML5DateFormat=l,e.HTML5InputTypes=c,e.LayoutGridGaps={small:"small",medium:"medium",large:"large",collapse:"collapse",none:""},e.PACKAGE_NAME=w,e.RenderingEngine=R,e.RenderingError=u,e.TransactionHooks={BeforeRead:"beforeRead",AfterRead:"afterRead",BeforeCreate:"beforeCreate",AfterCreate:"afterCreate",BeforeUpdate:"beforeUpdate",AfterUpdate:"afterUpdate",BeforeDelete:"beforeDelete",AfterDelete:"afterDelete"},e.UIKeys=n,e.UIValidator=g,e.VERSION=k,e.ValidatableByAttribute=d,e.ValidatableByType=i,e.WindowColorSchemes={light:"light",dark:"dark",undefined:"undefined"},e.escapeHtml=T,e.formatByType=y,e.generateUIModelID=m,e.getUIAttributeKey=h,e.hidden=()=>O(r.OperationKeys.CREATE,r.OperationKeys.READ,r.OperationKeys.UPDATE,r.OperationKeys.DELETE),e.hideOn=O,e.isClassConstructor=f,e.parseToNumber=M,e.parseValueByType=function e(a,o,s){let n;switch(a){case Array.name:n=(Array.isArray(o)?o.map(r=>e(t.ReservedModels.STRING.name.toLowerCase(),r,s)):[o]).join(",");break;case c.NUMBER:n=M(o);break;case c.DATE:{const e=s.format;o&&(""+o).trim().length&&(n=typeof o===t.ReservedModels.NUMBER.name.toLowerCase()?new Date(o):o?e?t.parseDate(e,o):new Date(o):void 0);break}default:n=typeof o===t.ReservedModels.OBJECT.name.toLowerCase()?Array.isArray(o)?o.join(","):JSON.stringify(o):typeof o===t.ReservedModels.BOOLEAN.name.toLowerCase()?o:typeof o===t.ReservedModels.STRING.name.toLowerCase()?T(o):n}if(void 0===n)throw new r.InternalError(`Failed to parse value of type ${a} from ${typeof o} - ${o}`);return n},e.renderedBy=N,e.revertHtml=e=>{const t={"&amp;":"&","&lt;":"<","&gt;":">"};return(""+e).replace(/&lt;|&gt;|&amp;/g,e=>t[e]||e)},e.uichild=(e,t,r={},o=!1,s=!1)=>(i,d)=>{const l={tag:t,serialize:s,props:Object.assign({},r||{},{name:e||d},o?{customTypes:[Array.name],multiple:!0}:{multiple:r?.multiple||!1})};a.propMetadata(h(d,n.CHILD),l)(i,d)},e.uielement=(e,t,r=!1)=>(o,s)=>{"object"==typeof e&&(t=e,e="");const i={tag:e,serialize:r,props:Object.assign({},t||{},{name:s})};return a.propMetadata(h(s,n.ELEMENT),i)(o,s)},e.uihandlers=b,e.uilayout=S,e.uilayoutprop=(e=1,t=1)=>(r,o)=>{const s={name:o,props:Object.assign({},{row:t,col:e})};a.propMetadata(h(o,n.UILAYOUTPROP),s)(r,o)},e.uilistmodel=C,e.uilistprop=(e=void 0,t)=>(r,o)=>{const s={name:e||o,props:t||{}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)},e.uimodel=I,e.uion=L,e.uionclick=e=>L("handleClick",e),e.uionrender=e=>L("render",e),e.uiorder=(e=n.FIRST)=>(t,r)=>a.propMetadata(h(r,n.ORDER),e)(t,r),e.uipageprop=(e=1)=>(t,r)=>a.propMetadata(h(r,n.PAGE),e)(t,r),e.uiprop=(e=void 0,t=!1)=>(r,o)=>{const s={name:e||o,stringify:t};a.propMetadata(h(o,n.PROP),s)(r,o)},e.uisteppedmodel=P,e.uitablecol=(e=n.LAST,t)=>(r,o)=>{const s={name:o,props:{sequence:e,...t?{valueParserFn:t}:{}}};a.propMetadata(h(o,n.UILISTPROP),s)(r,o)}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decoration"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","@decaf-ts/decoration","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["ui-decorators"]={},e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.decafTsDecoration,e.decafTsLogging);
2
2
  //# sourceMappingURL=ui-decorators.cjs.map
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortDirection = exports.GraphKeys = void 0;
4
+ (function (GraphKeys) {
5
+ GraphKeys["GRAPH"] = "graph";
6
+ GraphKeys["NODE"] = "graph.node";
7
+ GraphKeys["EDGE"] = "graph.edge";
8
+ GraphKeys["PORT"] = "graph.port";
9
+ })(exports.GraphKeys || (exports.GraphKeys = {}));
10
+ (function (PortDirection) {
11
+ PortDirection["INPUT"] = "input";
12
+ PortDirection["OUTPUT"] = "output";
13
+ })(exports.PortDirection || (exports.PortDirection = {}));
14
+ //# sourceMappingURL=constants.js.map
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["constants.js"],"names":[],"mappings":";;;AACA,CAAC,UAAU,SAAS;IAChB,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACjC,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;AACrC,CAAC,CAAC,CAAC,iBAAS,IAAI,CAAC,iBAAS,GAAG,EAAE,CAAC,CAAC,CAAC;AAElC,CAAC,UAAU,aAAa;IACpB,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjC,aAAa,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACvC,CAAC,CAAC,CAAC,qBAAa,IAAI,CAAC,qBAAa,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1C,qCAAqC"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.node = node;
4
+ exports.graph = graph;
5
+ exports.port = port;
6
+ exports.input = input;
7
+ exports.output = output;
8
+ const decoration_1 = require("@decaf-ts/decoration");
9
+ const decorators_js_1 = require("./../model/decorators.cjs");
10
+ const constants_js_1 = require("./constants.cjs");
11
+ const reader_js_1 = require("./reader.cjs");
12
+ function node(tag, graph, props) {
13
+ function node(tag, graph, props) {
14
+ const meta = {
15
+ kind: graph?.kind || tag,
16
+ ...graph,
17
+ };
18
+ return function innerNode(target) {
19
+ return (0, decoration_1.apply)((0, decorators_js_1.uimodel)(tag, props), (0, decoration_1.metadata)(constants_js_1.GraphKeys.NODE, meta))(target);
20
+ };
21
+ }
22
+ return decoration_1.Decoration.for(constants_js_1.GraphKeys.NODE)
23
+ .define({
24
+ decorator: node,
25
+ args: [tag, graph, props],
26
+ })
27
+ .apply();
28
+ }
29
+ function graph(tag, graph, props) {
30
+ function graphDecorator(tag, graph, props) {
31
+ return function innerGraph(target) {
32
+ const ports = (0, reader_js_1.graphPortsOf)(target);
33
+ const meta = {
34
+ ...(graph || {}),
35
+ kind: graph?.kind || tag,
36
+ inputs: graph?.inputs ||
37
+ ports.filter((port) => port.direction === constants_js_1.PortDirection.INPUT),
38
+ outputs: graph?.outputs ||
39
+ ports.filter((port) => port.direction === constants_js_1.PortDirection.OUTPUT),
40
+ };
41
+ return (0, decoration_1.apply)((0, decorators_js_1.uimodel)(tag, props), (0, decoration_1.metadata)(constants_js_1.GraphKeys.GRAPH, meta))(target);
42
+ };
43
+ }
44
+ return decoration_1.Decoration.for(constants_js_1.GraphKeys.GRAPH)
45
+ .define({
46
+ decorator: graphDecorator,
47
+ args: [tag, graph, props],
48
+ })
49
+ .apply();
50
+ }
51
+ function port(direction, graph) {
52
+ function port(direction, graph) {
53
+ return function innerPort(target, propertyKey) {
54
+ const meta = {
55
+ direction,
56
+ ...graph,
57
+ };
58
+ return (0, decoration_1.apply)((0, decoration_1.propMetadata)(decoration_1.Metadata.key(constants_js_1.GraphKeys.PORT, propertyKey), meta))(target, propertyKey);
59
+ };
60
+ }
61
+ return decoration_1.Decoration.for(constants_js_1.GraphKeys.PORT)
62
+ .define({
63
+ decorator: port,
64
+ args: [direction, graph],
65
+ })
66
+ .apply();
67
+ }
68
+ function input(graph) {
69
+ return port(constants_js_1.PortDirection.INPUT, graph);
70
+ }
71
+ function output(graph) {
72
+ return port(constants_js_1.PortDirection.OUTPUT, graph);
73
+ }
74
+ //# sourceMappingURL=decorators.js.map
75
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["decorators.js"],"names":[],"mappings":";;AAIA,oBAgBC;AACD,sBAqBC;AACD,oBAgBC;AACD,sBAEC;AACD,wBAEC;AAjED,qDAA4F;AAC5F,4DAAmD;AACnD,iDAA0D;AAC1D,2CAA2C;AAC3C,SAAgB,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK;IAClC,SAAS,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK;QAC3B,MAAM,IAAI,GAAG;YACT,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,GAAG;YACxB,GAAG,KAAK;SACX,CAAC;QACF,OAAO,SAAS,SAAS,CAAC,MAAM;YAC5B,OAAO,IAAA,kBAAK,EAAC,IAAA,uBAAO,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAA,qBAAQ,EAAC,wBAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC,CAAC;IACN,CAAC;IACD,OAAO,uBAAU,CAAC,GAAG,CAAC,wBAAS,CAAC,IAAI,CAAC;SAChC,MAAM,CAAC;QACR,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;KAC5B,CAAC;SACG,KAAK,EAAE,CAAC;AACjB,CAAC;AACD,SAAgB,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK;IACnC,SAAS,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK;QACrC,OAAO,SAAS,UAAU,CAAC,MAAM;YAC7B,MAAM,KAAK,GAAG,IAAA,wBAAY,EAAC,MAAM,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG;gBACT,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,GAAG;gBACxB,MAAM,EAAE,KAAK,EAAE,MAAM;oBACjB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,4BAAa,CAAC,KAAK,CAAC;gBAClE,OAAO,EAAE,KAAK,EAAE,OAAO;oBACnB,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,4BAAa,CAAC,MAAM,CAAC;aACtE,CAAC;YACF,OAAO,IAAA,kBAAK,EAAC,IAAA,uBAAO,EAAC,GAAG,EAAE,KAAK,CAAC,EAAE,IAAA,qBAAQ,EAAC,wBAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/E,CAAC,CAAC;IACN,CAAC;IACD,OAAO,uBAAU,CAAC,GAAG,CAAC,wBAAS,CAAC,KAAK,CAAC;SACjC,MAAM,CAAC;QACR,SAAS,EAAE,cAAc;QACzB,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;KAC5B,CAAC;SACG,KAAK,EAAE,CAAC;AACjB,CAAC;AACD,SAAgB,IAAI,CAAC,SAAS,EAAE,KAAK;IACjC,SAAS,IAAI,CAAC,SAAS,EAAE,KAAK;QAC1B,OAAO,SAAS,SAAS,CAAC,MAAM,EAAE,WAAW;YACzC,MAAM,IAAI,GAAG;gBACT,SAAS;gBACT,GAAG,KAAK;aACX,CAAC;YACF,OAAO,IAAA,kBAAK,EAAC,IAAA,yBAAY,EAAC,qBAAQ,CAAC,GAAG,CAAC,wBAAS,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACrG,CAAC,CAAC;IACN,CAAC;IACD,OAAO,uBAAU,CAAC,GAAG,CAAC,wBAAS,CAAC,IAAI,CAAC;SAChC,MAAM,CAAC;QACR,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;KAC3B,CAAC;SACG,KAAK,EAAE,CAAC;AACjB,CAAC;AACD,SAAgB,KAAK,CAAC,KAAK;IACvB,OAAO,IAAI,CAAC,4BAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC;AACD,SAAgB,MAAM,CAAC,KAAK;IACxB,OAAO,IAAI,CAAC,4BAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AACD,sCAAsC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ require("./overrides/index.cjs");
18
+ __exportStar(require("./constants.cjs"), exports);
19
+ __exportStar(require("./decorators.cjs"), exports);
20
+ __exportStar(require("./reader.cjs"), exports);
21
+ __exportStar(require("./types.cjs"), exports);
22
+ __exportStar(require("./overrides/index.cjs"), exports);
23
+ //# sourceMappingURL=index.js.map
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gCAA8B;AAC9B,iDAA+B;AAC/B,kDAAgC;AAChC,8CAA4B;AAC5B,6CAA2B;AAC3B,uDAAqC;AACrC,iCAAiC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Rendering.js.map
4
+ //# sourceMappingURL=Rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rendering.js","sourceRoot":"","sources":["Rendering.js"],"names":[],"mappings":";;AACA,qCAAqC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ require("./Rendering.cjs");
18
+ __exportStar(require("./overrides.cjs"), exports);
19
+ //# sourceMappingURL=index.js.map
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0BAAwB;AACxB,iDAA+B;AAC/B,iCAAiC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("./Rendering.cjs");
4
+ const index_js_1 = require("./../../ui/index.cjs");
5
+ const reader_js_1 = require("./../reader.cjs");
6
+ index_js_1.RenderingEngine.prototype.renderAsNode = function renderAsNode(model, globalProps, ...args) {
7
+ void globalProps;
8
+ void args;
9
+ return (0, reader_js_1.graphDefinitionOf)(model);
10
+ };
11
+ //# sourceMappingURL=overrides.js.map
12
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["overrides.js"],"names":[],"mappings":";;AAAA,0BAAwB;AACxB,kDAAsD;AACtD,8CAAmD;AACnD,0BAAe,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI;IACtF,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC;IACV,OAAO,IAAA,6BAAiB,EAAC,KAAK,CAAC,CAAC;AACpC,CAAC,CAAC;AACF,qCAAqC"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.graphNodeMetadataOf = graphNodeMetadataOf;
4
+ exports.graphWorkflowMetadataOf = graphWorkflowMetadataOf;
5
+ exports.graphPortMetadataOf = graphPortMetadataOf;
6
+ exports.graphPortDefinitionOf = graphPortDefinitionOf;
7
+ exports.graphPortsOf = graphPortsOf;
8
+ exports.graphDefinitionOf = graphDefinitionOf;
9
+ exports.graphWorkflowDefinitionOf = graphWorkflowDefinitionOf;
10
+ const decoration_1 = require("@decaf-ts/decoration");
11
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
12
+ const decorator_validation_2 = require("@decaf-ts/decorator-validation");
13
+ const constants_js_1 = require("./../ui/constants.cjs");
14
+ const constants_js_2 = require("./constants.cjs");
15
+ const constants_js_3 = require("./constants.cjs");
16
+ require("./../model/overrides.cjs");
17
+ function resolveModel(model) {
18
+ const resolved = decoration_1.Metadata.constr(model);
19
+ if (typeof resolved === "function")
20
+ return resolved;
21
+ const fallback = model.constructor;
22
+ if (typeof fallback === "function")
23
+ return fallback;
24
+ return model;
25
+ }
26
+ function asString(value) {
27
+ if (value === undefined || value === null)
28
+ return undefined;
29
+ return typeof value === "string" ? value : String(value);
30
+ }
31
+ function pickLabel(element, prop, fallback) {
32
+ const elementLabel = asString(element?.props?.label ?? element?.props?.name);
33
+ return (elementLabel ??
34
+ asString(prop?.name) ??
35
+ fallback ??
36
+ "");
37
+ }
38
+ function graphNodeMetadataOf(model) {
39
+ const resolved = resolveModel(model);
40
+ return decoration_1.Metadata.get(resolved, constants_js_2.GraphKeys.NODE);
41
+ }
42
+ function graphWorkflowMetadataOf(model) {
43
+ const resolved = resolveModel(model);
44
+ return decoration_1.Metadata.get(resolved, constants_js_2.GraphKeys.GRAPH);
45
+ }
46
+ function graphPortMetadataOf(model, property) {
47
+ const resolved = resolveModel(model);
48
+ return decoration_1.Metadata.get(resolved, decoration_1.Metadata.key(constants_js_2.GraphKeys.PORT, String(property)));
49
+ }
50
+ function graphPortDefinitionOf(model, property) {
51
+ const resolved = resolveModel(model);
52
+ const propertyKey = String(property);
53
+ const graph = graphPortMetadataOf(resolved, property);
54
+ if (!graph)
55
+ return undefined;
56
+ const element = (decorator_validation_1.Model.uiElementOf(resolved, propertyKey) ||
57
+ undefined);
58
+ const uiProp = decorator_validation_1.Model.uiDecorationOf(resolved, propertyKey, constants_js_1.UIKeys.PROP);
59
+ const validation = decoration_1.Metadata.validationFor(resolved, propertyKey);
60
+ const designType = decoration_1.Metadata.type(resolved, propertyKey);
61
+ const typeName = asString(validation?.[decorator_validation_2.ValidationKeys.TYPE]?.customTypes?.[0]?.name ??
62
+ element?.props?.type ??
63
+ uiProp?.type ??
64
+ designType?.name);
65
+ return {
66
+ property: propertyKey,
67
+ direction: graph.direction,
68
+ name: propertyKey,
69
+ label: pickLabel(element, uiProp, propertyKey),
70
+ type: typeName?.toLowerCase(),
71
+ required: !!validation?.[decorator_validation_2.ValidationKeys.REQUIRED],
72
+ hidden: !!decorator_validation_1.Model.uiIsHidden(resolved, propertyKey),
73
+ designType: designType?.name,
74
+ element,
75
+ prop: uiProp,
76
+ validation,
77
+ graph,
78
+ connectionRules: graph.connectionRules,
79
+ };
80
+ }
81
+ function graphPortsOf(model) {
82
+ const resolved = resolveModel(model);
83
+ const properties = decoration_1.Metadata.properties(resolved) || [];
84
+ return properties
85
+ .map((property) => graphPortDefinitionOf(resolved, property))
86
+ .filter((property) => !!property);
87
+ }
88
+ function graphDefinitionOf(model) {
89
+ const resolved = resolveModel(model);
90
+ const ui = decorator_validation_1.Model.uiModelOf(resolved);
91
+ const graph = graphNodeMetadataOf(resolved) || {};
92
+ const tag = ui?.tag || resolved.name;
93
+ const ports = graphPortsOf(resolved);
94
+ return {
95
+ name: resolved.name,
96
+ tag,
97
+ kind: graph.kind || tag,
98
+ category: graph.category,
99
+ color: graph.color,
100
+ group: graph.group,
101
+ height: graph.height,
102
+ icon: graph.icon,
103
+ labels: graph.labels || [],
104
+ maxChildren: graph.maxChildren,
105
+ minWidth: graph.minWidth,
106
+ width: graph.width,
107
+ props: ui?.props,
108
+ ui,
109
+ graph,
110
+ ports,
111
+ };
112
+ }
113
+ function graphWorkflowDefinitionOf(model) {
114
+ const resolved = resolveModel(model);
115
+ const workflow = graphWorkflowMetadataOf(resolved) || {};
116
+ const node = graphDefinitionOf(resolved);
117
+ const inputs = workflow.inputs ||
118
+ node.ports.filter((port) => port.direction === constants_js_3.PortDirection.INPUT);
119
+ const outputs = workflow.outputs ||
120
+ node.ports.filter((port) => port.direction === constants_js_3.PortDirection.OUTPUT);
121
+ return {
122
+ ...node,
123
+ kind: workflow.kind || node.kind,
124
+ category: workflow.category ?? node.category,
125
+ color: workflow.color ?? node.color,
126
+ group: workflow.group ?? node.group,
127
+ height: workflow.height ?? node.height,
128
+ icon: workflow.icon ?? node.icon,
129
+ labels: workflow.labels || node.labels,
130
+ maxChildren: workflow.maxChildren ?? node.maxChildren,
131
+ minWidth: workflow.minWidth ?? node.minWidth,
132
+ width: workflow.width ?? node.width,
133
+ inputs,
134
+ outputs,
135
+ nodes: workflow.nodes || [],
136
+ relations: workflow.relations || [],
137
+ workflow,
138
+ };
139
+ }
140
+ //# sourceMappingURL=reader.js.map
141
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["reader.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PortDirection = void 0;
4
+ var constants_js_1 = require("./constants.cjs");
5
+ Object.defineProperty(exports, "PortDirection", { enumerable: true, get: function () { return constants_js_1.PortDirection; } });
6
+ //# sourceMappingURL=types.js.map
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["types.js"],"names":[],"mappings":";;;AAAA,+CAA+C;AAAtC,6GAAA,aAAa,OAAA;AACtB,iCAAiC"}
package/lib/cjs/index.cjs CHANGED
@@ -33,21 +33,21 @@ __exportStar(require("./ui/index.cjs"), exports);
33
33
  * @const VERSION
34
34
  * @memberOf module:ui-decorators
35
35
  */
36
- exports.VERSION = "0.15.0";
36
+ exports.VERSION = "0.16.1";
37
37
  /**
38
38
  * @description Represents the current commit hash of the module build.
39
39
  * @summary Stores the current git commit hash for the package. The build replaces
40
40
  * the placeholder with the actual commit hash at publish time.
41
41
  * @const COMMIT
42
42
  */
43
- exports.COMMIT = "6957de8";
43
+ exports.COMMIT = "4889499";
44
44
  /**
45
45
  * @description Represents the full version string of the module.
46
46
  * @summary Stores the semver version and commit hash for the package.
47
47
  * The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
48
48
  * @const FULL_VERSION
49
49
  */
50
- exports.FULL_VERSION = "0.15.0-6957de8";
50
+ exports.FULL_VERSION = "0.16.1-4889499";
51
51
  exports.PACKAGE_NAME = "@decaf-ts/ui-decorators";
52
52
  decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
53
53
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ export var GraphKeys;
2
+ (function (GraphKeys) {
3
+ GraphKeys["GRAPH"] = "graph";
4
+ GraphKeys["NODE"] = "graph.node";
5
+ GraphKeys["EDGE"] = "graph.edge";
6
+ GraphKeys["PORT"] = "graph.port";
7
+ })(GraphKeys || (GraphKeys = {}));
8
+ export var PortDirection;
9
+ (function (PortDirection) {
10
+ PortDirection["INPUT"] = "input";
11
+ PortDirection["OUTPUT"] = "output";
12
+ })(PortDirection || (PortDirection = {}));
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/graph/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,gCAAgC,CAAA;IAChC,gCAAgC,CAAA;IAChC,gCAAgC,CAAA;AAClC,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAED,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,kCAAiB,CAAA;AACnB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB"}
@@ -0,0 +1,67 @@
1
+ import { apply, Decoration, Metadata, metadata, propMetadata, } from "@decaf-ts/decoration";
2
+ import { uimodel } from "./../model/decorators.js";
3
+ import { GraphKeys, PortDirection } from "./constants.js";
4
+ import { graphPortsOf } from "./reader.js";
5
+ export function node(tag, graph, props) {
6
+ function node(tag, graph, props) {
7
+ const meta = {
8
+ kind: graph?.kind || tag,
9
+ ...graph,
10
+ };
11
+ return function innerNode(target) {
12
+ return apply(uimodel(tag, props), metadata(GraphKeys.NODE, meta))(target);
13
+ };
14
+ }
15
+ return Decoration.for(GraphKeys.NODE)
16
+ .define({
17
+ decorator: node,
18
+ args: [tag, graph, props],
19
+ })
20
+ .apply();
21
+ }
22
+ export function graph(tag, graph, props) {
23
+ function graphDecorator(tag, graph, props) {
24
+ return function innerGraph(target) {
25
+ const ports = graphPortsOf(target);
26
+ const meta = {
27
+ ...(graph || {}),
28
+ kind: graph?.kind || tag,
29
+ inputs: graph?.inputs ||
30
+ ports.filter((port) => port.direction === PortDirection.INPUT),
31
+ outputs: graph?.outputs ||
32
+ ports.filter((port) => port.direction === PortDirection.OUTPUT),
33
+ };
34
+ return apply(uimodel(tag, props), metadata(GraphKeys.GRAPH, meta))(target);
35
+ };
36
+ }
37
+ return Decoration.for(GraphKeys.GRAPH)
38
+ .define({
39
+ decorator: graphDecorator,
40
+ args: [tag, graph, props],
41
+ })
42
+ .apply();
43
+ }
44
+ export function port(direction, graph) {
45
+ function port(direction, graph) {
46
+ return function innerPort(target, propertyKey) {
47
+ const meta = {
48
+ direction,
49
+ ...graph,
50
+ };
51
+ return apply(propMetadata(Metadata.key(GraphKeys.PORT, propertyKey), meta))(target, propertyKey);
52
+ };
53
+ }
54
+ return Decoration.for(GraphKeys.PORT)
55
+ .define({
56
+ decorator: port,
57
+ args: [direction, graph],
58
+ })
59
+ .apply();
60
+ }
61
+ export function input(graph) {
62
+ return port(PortDirection.INPUT, graph);
63
+ }
64
+ export function output(graph) {
65
+ return port(PortDirection.OUTPUT, graph);
66
+ }
67
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/graph/decorators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import "./overrides/index.js";
2
+ export * from "./constants.js";
3
+ export * from "./decorators.js";
4
+ export * from "./reader.js";
5
+ export * from "./types.js";
6
+ export * from "./overrides/index.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/graph/index.ts"],"names":[],"mappings":"AAAA,8BAAqB;AAErB,+BAA4B;AAC5B,gCAA6B;AAC7B,4BAAyB;AACzB,2BAAwB;AACxB,qCAA4B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Rendering.js","sourceRoot":"","sources":["../../../../src/graph/overrides/Rendering.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import "./Rendering.js";
2
+ export * from "./overrides.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/graph/overrides/index.ts"],"names":[],"mappings":"AAAA,wBAAqB;AAErB,+BAA4B"}
@@ -0,0 +1,9 @@
1
+ import "./Rendering.js";
2
+ import { RenderingEngine } from "./../../ui/index.js";
3
+ import { graphDefinitionOf } from "./../reader.js";
4
+ RenderingEngine.prototype.renderAsNode = function renderAsNode(model, globalProps, ...args) {
5
+ void globalProps;
6
+ void args;
7
+ return graphDefinitionOf(model);
8
+ };
9
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../../src/graph/overrides/overrides.ts"],"names":[],"mappings":"AAAA,wBAAqB;AACrB,OAAO,EAAwB,eAAe,EAAE,4BAAuB;AAEvE,OAAO,EAAE,iBAAiB,EAAE,uBAAkB;AAE7C,eAAe,CAAC,SAAiB,CAAC,YAAY,GAAG,SAAS,YAAY,CAIrE,KAAQ,EAAE,WAAoC,EAAE,GAAG,IAAW;IAC9D,KAAK,WAAW,CAAC;IACjB,KAAK,IAAI,CAAC;IACV,OAAO,iBAAiB,CAAC,KAAK,CAAiB,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { Metadata } from "@decaf-ts/decoration";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { ValidationKeys } from "@decaf-ts/decorator-validation";
4
+ import { UIKeys } from "./../ui/constants.js";
5
+ import { GraphKeys, } from "./constants.js";
6
+ import { PortDirection } from "./constants.js";
7
+ import "./../model/overrides.js";
8
+ function resolveModel(model) {
9
+ const resolved = Metadata.constr(model);
10
+ if (typeof resolved === "function")
11
+ return resolved;
12
+ const fallback = model.constructor;
13
+ if (typeof fallback === "function")
14
+ return fallback;
15
+ return model;
16
+ }
17
+ function asString(value) {
18
+ if (value === undefined || value === null)
19
+ return undefined;
20
+ return typeof value === "string" ? value : String(value);
21
+ }
22
+ function pickLabel(element, prop, fallback) {
23
+ const elementLabel = asString(element?.props?.label ?? element?.props?.name);
24
+ return (elementLabel ??
25
+ asString(prop?.name) ??
26
+ fallback ??
27
+ "");
28
+ }
29
+ export function graphNodeMetadataOf(model) {
30
+ const resolved = resolveModel(model);
31
+ return Metadata.get(resolved, GraphKeys.NODE);
32
+ }
33
+ export function graphWorkflowMetadataOf(model) {
34
+ const resolved = resolveModel(model);
35
+ return Metadata.get(resolved, GraphKeys.GRAPH);
36
+ }
37
+ export function graphPortMetadataOf(model, property) {
38
+ const resolved = resolveModel(model);
39
+ return Metadata.get(resolved, Metadata.key(GraphKeys.PORT, String(property)));
40
+ }
41
+ export function graphPortDefinitionOf(model, property) {
42
+ const resolved = resolveModel(model);
43
+ const propertyKey = String(property);
44
+ const graph = graphPortMetadataOf(resolved, property);
45
+ if (!graph)
46
+ return undefined;
47
+ const element = (Model.uiElementOf(resolved, propertyKey) ||
48
+ undefined);
49
+ const uiProp = Model.uiDecorationOf(resolved, propertyKey, UIKeys.PROP);
50
+ const validation = Metadata.validationFor(resolved, propertyKey);
51
+ const designType = Metadata.type(resolved, propertyKey);
52
+ const typeName = asString(validation?.[ValidationKeys.TYPE]?.customTypes?.[0]?.name ??
53
+ element?.props?.type ??
54
+ uiProp?.type ??
55
+ designType?.name);
56
+ return {
57
+ property: propertyKey,
58
+ direction: graph.direction,
59
+ name: propertyKey,
60
+ label: pickLabel(element, uiProp, propertyKey),
61
+ type: typeName?.toLowerCase(),
62
+ required: !!validation?.[ValidationKeys.REQUIRED],
63
+ hidden: !!Model.uiIsHidden(resolved, propertyKey),
64
+ designType: designType?.name,
65
+ element,
66
+ prop: uiProp,
67
+ validation,
68
+ graph,
69
+ connectionRules: graph.connectionRules,
70
+ };
71
+ }
72
+ export function graphPortsOf(model) {
73
+ const resolved = resolveModel(model);
74
+ const properties = Metadata.properties(resolved) || [];
75
+ return properties
76
+ .map((property) => graphPortDefinitionOf(resolved, property))
77
+ .filter((property) => !!property);
78
+ }
79
+ export function graphDefinitionOf(model) {
80
+ const resolved = resolveModel(model);
81
+ const ui = Model.uiModelOf(resolved);
82
+ const graph = graphNodeMetadataOf(resolved) || {};
83
+ const tag = ui?.tag || resolved.name;
84
+ const ports = graphPortsOf(resolved);
85
+ return {
86
+ name: resolved.name,
87
+ tag,
88
+ kind: graph.kind || tag,
89
+ category: graph.category,
90
+ color: graph.color,
91
+ group: graph.group,
92
+ height: graph.height,
93
+ icon: graph.icon,
94
+ labels: graph.labels || [],
95
+ maxChildren: graph.maxChildren,
96
+ minWidth: graph.minWidth,
97
+ width: graph.width,
98
+ props: ui?.props,
99
+ ui,
100
+ graph,
101
+ ports,
102
+ };
103
+ }
104
+ export function graphWorkflowDefinitionOf(model) {
105
+ const resolved = resolveModel(model);
106
+ const workflow = graphWorkflowMetadataOf(resolved) || {};
107
+ const node = graphDefinitionOf(resolved);
108
+ const inputs = workflow.inputs ||
109
+ node.ports.filter((port) => port.direction === PortDirection.INPUT);
110
+ const outputs = workflow.outputs ||
111
+ node.ports.filter((port) => port.direction === PortDirection.OUTPUT);
112
+ return {
113
+ ...node,
114
+ kind: workflow.kind || node.kind,
115
+ category: workflow.category ?? node.category,
116
+ color: workflow.color ?? node.color,
117
+ group: workflow.group ?? node.group,
118
+ height: workflow.height ?? node.height,
119
+ icon: workflow.icon ?? node.icon,
120
+ labels: workflow.labels || node.labels,
121
+ maxChildren: workflow.maxChildren ?? node.maxChildren,
122
+ minWidth: workflow.minWidth ?? node.minWidth,
123
+ width: workflow.width ?? node.width,
124
+ inputs,
125
+ outputs,
126
+ nodes: workflow.nodes || [],
127
+ relations: workflow.relations || [],
128
+ workflow,
129
+ };
130
+ }
131
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/graph/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { PortDirection } from "./constants.js";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/graph/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,uBAAoB"}
package/lib/esm/index.js CHANGED
@@ -16,21 +16,21 @@ export * from "./ui/index.js";
16
16
  * @const VERSION
17
17
  * @memberOf module:ui-decorators
18
18
  */
19
- export const VERSION = "0.15.0";
19
+ export const VERSION = "0.16.1";
20
20
  /**
21
21
  * @description Represents the current commit hash of the module build.
22
22
  * @summary Stores the current git commit hash for the package. The build replaces
23
23
  * the placeholder with the actual commit hash at publish time.
24
24
  * @const COMMIT
25
25
  */
26
- export const COMMIT = "6957de8";
26
+ export const COMMIT = "4889499";
27
27
  /**
28
28
  * @description Represents the full version string of the module.
29
29
  * @summary Stores the semver version and commit hash for the package.
30
30
  * The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
31
31
  * @const FULL_VERSION
32
32
  */
33
- export const FULL_VERSION = "0.15.0-6957de8";
33
+ export const FULL_VERSION = "0.16.1-4889499";
34
34
  export const PACKAGE_NAME = "@decaf-ts/ui-decorators";
35
35
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
36
36
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,103 @@
1
+ export declare enum GraphKeys {
2
+ GRAPH = "graph",
3
+ NODE = "graph.node",
4
+ EDGE = "graph.edge",
5
+ PORT = "graph.port"
6
+ }
7
+ export declare enum PortDirection {
8
+ INPUT = "input",
9
+ OUTPUT = "output"
10
+ }
11
+ export type GraphNodeKind = string;
12
+ export type GraphConnectionRule = {
13
+ allowSelf?: boolean;
14
+ allowMultiple?: boolean;
15
+ allowedKinds?: GraphNodeKind[];
16
+ blockedKinds?: GraphNodeKind[];
17
+ group?: string;
18
+ maxConnections?: number;
19
+ metadata?: Record<string, unknown>;
20
+ };
21
+ export type GraphNodeMetadata = {
22
+ kind?: GraphNodeKind;
23
+ category?: string;
24
+ color?: string;
25
+ group?: string;
26
+ height?: number;
27
+ icon?: string;
28
+ labels?: string[];
29
+ maxChildren?: number;
30
+ minWidth?: number;
31
+ width?: number;
32
+ connectionRules?: GraphConnectionRule;
33
+ metadata?: Record<string, unknown>;
34
+ };
35
+ export type GraphWorkflowNodeMetadata = {
36
+ id: string;
37
+ kind?: GraphNodeKind;
38
+ label?: string;
39
+ description?: string;
40
+ node?: unknown;
41
+ metadata?: Record<string, unknown>;
42
+ };
43
+ export type GraphWorkflowRelationMetadata = {
44
+ source: string | unknown;
45
+ sourcePort?: string;
46
+ target: string | unknown;
47
+ targetPort?: string;
48
+ label?: string;
49
+ metadata?: Record<string, unknown>;
50
+ };
51
+ export type GraphWorkflowMetadata = GraphNodeMetadata & {
52
+ inputs?: GraphPortDefinition[];
53
+ outputs?: GraphPortDefinition[];
54
+ nodes?: GraphWorkflowNodeMetadata[];
55
+ relations?: GraphWorkflowRelationMetadata[];
56
+ };
57
+ export type GraphPortMetadata = {
58
+ direction: PortDirection;
59
+ connectionRules?: GraphConnectionRule;
60
+ visible?: boolean;
61
+ handle?: string;
62
+ metadata?: Record<string, unknown>;
63
+ };
64
+ export type GraphPortDefinition = {
65
+ property: string;
66
+ direction: PortDirection;
67
+ name: string;
68
+ label: string;
69
+ type?: string;
70
+ required: boolean;
71
+ hidden: boolean;
72
+ designType?: string;
73
+ element?: Record<string, any>;
74
+ prop?: Record<string, any>;
75
+ validation?: Record<string, any>;
76
+ graph?: GraphPortMetadata;
77
+ connectionRules?: GraphConnectionRule;
78
+ };
79
+ export type GraphNodeDefinition = {
80
+ name: string;
81
+ tag: string;
82
+ kind: GraphNodeKind;
83
+ category?: string;
84
+ color?: string;
85
+ group?: string;
86
+ height?: number;
87
+ icon?: string;
88
+ labels: string[];
89
+ maxChildren?: number;
90
+ minWidth?: number;
91
+ width?: number;
92
+ props?: Record<string, any>;
93
+ ui?: Record<string, any>;
94
+ graph?: GraphNodeMetadata;
95
+ ports: GraphPortDefinition[];
96
+ };
97
+ export type GraphWorkflowDefinition = GraphNodeDefinition & {
98
+ inputs: GraphPortDefinition[];
99
+ outputs: GraphPortDefinition[];
100
+ nodes: GraphWorkflowNodeMetadata[];
101
+ relations: GraphWorkflowRelationMetadata[];
102
+ workflow: GraphWorkflowMetadata;
103
+ };
@@ -0,0 +1,103 @@
1
+ export declare enum GraphKeys {
2
+ GRAPH = "graph",
3
+ NODE = "graph.node",
4
+ EDGE = "graph.edge",
5
+ PORT = "graph.port"
6
+ }
7
+ export declare enum PortDirection {
8
+ INPUT = "input",
9
+ OUTPUT = "output"
10
+ }
11
+ export type GraphNodeKind = string;
12
+ export type GraphConnectionRule = {
13
+ allowSelf?: boolean;
14
+ allowMultiple?: boolean;
15
+ allowedKinds?: GraphNodeKind[];
16
+ blockedKinds?: GraphNodeKind[];
17
+ group?: string;
18
+ maxConnections?: number;
19
+ metadata?: Record<string, unknown>;
20
+ };
21
+ export type GraphNodeMetadata = {
22
+ kind?: GraphNodeKind;
23
+ category?: string;
24
+ color?: string;
25
+ group?: string;
26
+ height?: number;
27
+ icon?: string;
28
+ labels?: string[];
29
+ maxChildren?: number;
30
+ minWidth?: number;
31
+ width?: number;
32
+ connectionRules?: GraphConnectionRule;
33
+ metadata?: Record<string, unknown>;
34
+ };
35
+ export type GraphWorkflowNodeMetadata = {
36
+ id: string;
37
+ kind?: GraphNodeKind;
38
+ label?: string;
39
+ description?: string;
40
+ node?: unknown;
41
+ metadata?: Record<string, unknown>;
42
+ };
43
+ export type GraphWorkflowRelationMetadata = {
44
+ source: string | unknown;
45
+ sourcePort?: string;
46
+ target: string | unknown;
47
+ targetPort?: string;
48
+ label?: string;
49
+ metadata?: Record<string, unknown>;
50
+ };
51
+ export type GraphWorkflowMetadata = GraphNodeMetadata & {
52
+ inputs?: GraphPortDefinition[];
53
+ outputs?: GraphPortDefinition[];
54
+ nodes?: GraphWorkflowNodeMetadata[];
55
+ relations?: GraphWorkflowRelationMetadata[];
56
+ };
57
+ export type GraphPortMetadata = {
58
+ direction: PortDirection;
59
+ connectionRules?: GraphConnectionRule;
60
+ visible?: boolean;
61
+ handle?: string;
62
+ metadata?: Record<string, unknown>;
63
+ };
64
+ export type GraphPortDefinition = {
65
+ property: string;
66
+ direction: PortDirection;
67
+ name: string;
68
+ label: string;
69
+ type?: string;
70
+ required: boolean;
71
+ hidden: boolean;
72
+ designType?: string;
73
+ element?: Record<string, any>;
74
+ prop?: Record<string, any>;
75
+ validation?: Record<string, any>;
76
+ graph?: GraphPortMetadata;
77
+ connectionRules?: GraphConnectionRule;
78
+ };
79
+ export type GraphNodeDefinition = {
80
+ name: string;
81
+ tag: string;
82
+ kind: GraphNodeKind;
83
+ category?: string;
84
+ color?: string;
85
+ group?: string;
86
+ height?: number;
87
+ icon?: string;
88
+ labels: string[];
89
+ maxChildren?: number;
90
+ minWidth?: number;
91
+ width?: number;
92
+ props?: Record<string, any>;
93
+ ui?: Record<string, any>;
94
+ graph?: GraphNodeMetadata;
95
+ ports: GraphPortDefinition[];
96
+ };
97
+ export type GraphWorkflowDefinition = GraphNodeDefinition & {
98
+ inputs: GraphPortDefinition[];
99
+ outputs: GraphPortDefinition[];
100
+ nodes: GraphWorkflowNodeMetadata[];
101
+ relations: GraphWorkflowRelationMetadata[];
102
+ workflow: GraphWorkflowMetadata;
103
+ };
@@ -0,0 +1,7 @@
1
+ import { PortDirection } from "./constants.d.cts";
2
+ import type { GraphNodeMetadata, GraphPortMetadata, GraphWorkflowMetadata } from "./constants.d.cts";
3
+ export declare function node(tag?: string, graph?: GraphNodeMetadata, props?: Record<string, any>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
4
+ export declare function graph(tag?: string, graph?: GraphWorkflowMetadata, props?: Record<string, any>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
5
+ export declare function port(direction: PortDirection, graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
6
+ export declare function input(graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
7
+ export declare function output(graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
@@ -0,0 +1,7 @@
1
+ import { PortDirection } from "./constants.d.mts";
2
+ import type { GraphNodeMetadata, GraphPortMetadata, GraphWorkflowMetadata } from "./constants.d.mts";
3
+ export declare function node(tag?: string, graph?: GraphNodeMetadata, props?: Record<string, any>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
4
+ export declare function graph(tag?: string, graph?: GraphWorkflowMetadata, props?: Record<string, any>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
5
+ export declare function port(direction: PortDirection, graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
6
+ export declare function input(graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
7
+ export declare function output(graph?: Partial<Omit<GraphPortMetadata, "direction">>): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
@@ -0,0 +1,6 @@
1
+ import "./overrides";
2
+ export * from "./constants.d.cts";
3
+ export * from "./decorators.d.cts";
4
+ export * from "./reader.d.cts";
5
+ export * from "./types.d.cts";
6
+ export * from "./overrides/index.d.cts";
@@ -0,0 +1,6 @@
1
+ import "./overrides";
2
+ export * from "./constants.d.mts";
3
+ export * from "./decorators.d.mts";
4
+ export * from "./reader.d.mts";
5
+ export * from "./types.d.mts";
6
+ export * from "./overrides/index.d.mts";
@@ -0,0 +1,5 @@
1
+ import type { FieldDefinition } from "../../ui/types.d.cts";
2
+ import type { Model } from "@decaf-ts/decorator-validation";
3
+ export interface RenderingEngine<T = void, R = FieldDefinition<T>> {
4
+ renderAsNode<M extends Model>(model: M, globalProps: Record<string, unknown>, ...args: any[]): R;
5
+ }
@@ -0,0 +1,5 @@
1
+ import type { FieldDefinition } from "../../ui/types.d.mts";
2
+ import type { Model } from "@decaf-ts/decorator-validation";
3
+ export interface RenderingEngine<T = void, R = FieldDefinition<T>> {
4
+ renderAsNode<M extends Model>(model: M, globalProps: Record<string, unknown>, ...args: any[]): R;
5
+ }
@@ -0,0 +1,2 @@
1
+ import "./Rendering";
2
+ export * from "./overrides.d.cts";
@@ -0,0 +1,2 @@
1
+ import "./Rendering";
2
+ export * from "./overrides.d.mts";
@@ -0,0 +1 @@
1
+ import "./Rendering";
@@ -0,0 +1 @@
1
+ import "./Rendering";
@@ -0,0 +1,13 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import type { GraphNodeDefinition, GraphNodeMetadata, GraphPortDefinition, GraphPortMetadata, GraphWorkflowDefinition, GraphWorkflowMetadata } from "./constants.d.cts";
4
+ import "../model/overrides";
5
+ type GraphModelLike<M extends Model = Model> = Constructor<M> | M;
6
+ export declare function graphNodeMetadataOf<M extends Model>(model: GraphModelLike<M>): GraphNodeMetadata | undefined;
7
+ export declare function graphWorkflowMetadataOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowMetadata | undefined;
8
+ export declare function graphPortMetadataOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortMetadata | undefined;
9
+ export declare function graphPortDefinitionOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortDefinition | undefined;
10
+ export declare function graphPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
+ export declare function graphDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphNodeDefinition;
12
+ export declare function graphWorkflowDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowDefinition;
13
+ export {};
@@ -0,0 +1,13 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import type { GraphNodeDefinition, GraphNodeMetadata, GraphPortDefinition, GraphPortMetadata, GraphWorkflowDefinition, GraphWorkflowMetadata } from "./constants.d.mts";
4
+ import "../model/overrides";
5
+ type GraphModelLike<M extends Model = Model> = Constructor<M> | M;
6
+ export declare function graphNodeMetadataOf<M extends Model>(model: GraphModelLike<M>): GraphNodeMetadata | undefined;
7
+ export declare function graphWorkflowMetadataOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowMetadata | undefined;
8
+ export declare function graphPortMetadataOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortMetadata | undefined;
9
+ export declare function graphPortDefinitionOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortDefinition | undefined;
10
+ export declare function graphPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
+ export declare function graphDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphNodeDefinition;
12
+ export declare function graphWorkflowDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowDefinition;
13
+ export {};
@@ -0,0 +1,2 @@
1
+ export { PortDirection } from "./constants.d.cts";
2
+ export type { GraphConnectionRule, GraphNodeDefinition, GraphNodeKind, GraphNodeMetadata, GraphPortDefinition, GraphPortMetadata, GraphWorkflowDefinition, GraphWorkflowMetadata, GraphWorkflowNodeMetadata, GraphWorkflowRelationMetadata, } from "./constants.d.cts";
@@ -0,0 +1,2 @@
1
+ export { PortDirection } from "./constants.d.mts";
2
+ export type { GraphConnectionRule, GraphNodeDefinition, GraphNodeKind, GraphNodeMetadata, GraphPortDefinition, GraphPortMetadata, GraphWorkflowDefinition, GraphWorkflowMetadata, GraphWorkflowNodeMetadata, GraphWorkflowRelationMetadata, } from "./constants.d.mts";
@@ -15,19 +15,19 @@ export * from "./ui/index.d.cts";
15
15
  * @const VERSION
16
16
  * @memberOf module:ui-decorators
17
17
  */
18
- export declare const VERSION = "0.15.0";
18
+ export declare const VERSION = "0.16.1";
19
19
  /**
20
20
  * @description Represents the current commit hash of the module build.
21
21
  * @summary Stores the current git commit hash for the package. The build replaces
22
22
  * the placeholder with the actual commit hash at publish time.
23
23
  * @const COMMIT
24
24
  */
25
- export declare const COMMIT = "6957de8";
25
+ export declare const COMMIT = "4889499";
26
26
  /**
27
27
  * @description Represents the full version string of the module.
28
28
  * @summary Stores the semver version and commit hash for the package.
29
29
  * The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
30
30
  * @const FULL_VERSION
31
31
  */
32
- export declare const FULL_VERSION = "0.15.0-6957de8";
32
+ export declare const FULL_VERSION = "0.16.1-4889499";
33
33
  export declare const PACKAGE_NAME = "@decaf-ts/ui-decorators";
@@ -15,19 +15,19 @@ export * from "./ui/index.d.mts";
15
15
  * @const VERSION
16
16
  * @memberOf module:ui-decorators
17
17
  */
18
- export declare const VERSION = "0.15.0";
18
+ export declare const VERSION = "0.16.1";
19
19
  /**
20
20
  * @description Represents the current commit hash of the module build.
21
21
  * @summary Stores the current git commit hash for the package. The build replaces
22
22
  * the placeholder with the actual commit hash at publish time.
23
23
  * @const COMMIT
24
24
  */
25
- export declare const COMMIT = "6957de8";
25
+ export declare const COMMIT = "4889499";
26
26
  /**
27
27
  * @description Represents the full version string of the module.
28
28
  * @summary Stores the semver version and commit hash for the package.
29
29
  * The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
30
30
  * @const FULL_VERSION
31
31
  */
32
- export declare const FULL_VERSION = "0.15.0-6957de8";
32
+ export declare const FULL_VERSION = "0.16.1-4889499";
33
33
  export declare const PACKAGE_NAME = "@decaf-ts/ui-decorators";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/ui-decorators",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Extension of decorator validation to ui elements to allow for web integration",
5
5
  "type": "module",
6
6
  "exports": {
@@ -14,6 +14,17 @@
14
14
  "default": "./lib/cjs/index.cjs"
15
15
  },
16
16
  "default": "./lib/esm/index.js"
17
+ },
18
+ "./graph": {
19
+ "import": {
20
+ "types": "./lib/types/graph/index.d.mts",
21
+ "default": "./lib/esm/graph/index.js"
22
+ },
23
+ "require": {
24
+ "types": "./lib/types/graph/index.d.cts",
25
+ "default": "./lib/cjs/graph/index.cjs"
26
+ },
27
+ "default": "./lib/esm/graph/index.js"
17
28
  }
18
29
  },
19
30
  "types": "./lib/types/index.d.mts",
@@ -105,8 +116,12 @@
105
116
  "module": "./lib/esm/index.js",
106
117
  "sideEffects": [
107
118
  "./lib/esm/overrides/index.js",
119
+ "./lib/esm/graph/overrides/index.js",
120
+ "./lib/esm/graph/overrides/overrides.js",
108
121
  "./lib/esm/model/overrides.js",
109
122
  "./lib/cjs/overrides/index.cjs",
123
+ "./lib/cjs/graph/overrides/index.cjs",
124
+ "./lib/cjs/graph/overrides/overrides.cjs",
110
125
  "./lib/cjs/model/overrides.cjs"
111
126
  ]
112
127
  }