xt-components 0.4.6 → 0.4.7

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.
@@ -131,6 +131,16 @@ class XtBaseContext {
131
131
  }
132
132
  return true;
133
133
  }
134
+ else {
135
+ // Supports setting values without a child form control
136
+ const value = this.parentFormGroup?.getRawValue();
137
+ if (value != null) {
138
+ if (newValue !== undefined)
139
+ value[this.subName] = newValue;
140
+ else
141
+ delete value[this.subName];
142
+ }
143
+ }
134
144
  }
135
145
  }
136
146
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"xt-components.mjs","sources":["../../../projects/xt-components/src/lib/xt-context.ts","../../../projects/xt-components/src/lib/xt-resolved-component.ts","../../../projects/xt-components/src/lib/registry/xt-plugin-registry.ts","../../../projects/xt-components/src/globals.ts","../../../projects/xt-components/src/lib/angular/xt-tokens.ts","../../../projects/xt-components/src/lib/resolver/xt-registry-resolver.ts","../../../projects/xt-components/src/lib/angular/xt-resolver.service.ts","../../../projects/xt-components/src/lib/output/xt-base-output.ts","../../../projects/xt-components/src/lib/render/xt-render.component.ts","../../../projects/xt-components/src/lib/render/xt-render.component.html","../../../projects/xt-components/src/lib/render/xt-render-sub.component.ts","../../../projects/xt-components/src/lib/render/xt-render-sub.component.html","../../../projects/xt-components/src/lib/output/xt-base-input.ts","../../../projects/xt-components/src/lib/xt-simple/xt-simple.component.ts","../../../projects/xt-components/src/lib/xt-composite/xt-composite.component.ts","../../../projects/xt-components/src/lib/angular/message-handler.ts","../../../projects/xt-components/src/lib/store/store-support.ts","../../../projects/xt-components/src/lib/type/type-helper.ts","../../../projects/xt-components/src/lib/test/xt-unit-test-helper.ts","../../../projects/xt-components/src/lib/test/xt-test-helper-components.ts","../../../projects/xt-components/src/lib/test/store-test-helper.ts","../../../projects/xt-components/src/public-api.ts","../../../projects/xt-components/src/xt-components.ts"],"sourcesContent":["import { FormGroup } from '@angular/forms';\nimport { XtTypeResolver } from 'xt-type';\nimport { computed, Signal, signal, WritableSignal } from '@angular/core';\n\n/**\n * A XtContext provides all the necessary information for an ng-extended component to operate. It is passed from parent to child component and pass\n * - The display mode - View, Inline view or Edit\n * - The value, either directly as a signal or in a formgroup when editing.\n * - The valueType, necessary to find the right ng-extended component to display\n *\n * To do this, it maintains a hierarchy of context and subContexts by name.\n */\nexport type XtContext<T> = {\n\n displayMode: XtDisplayMode;\n\n subName?: string; // The subName in the parentFormGroup and parentContext\n parentFormGroup?: FormGroup;\n localFormGroup?: FormGroup;\n\n // A parentContext if defined\n parentContext?:XtContext<any>;\n\n isInForm (): boolean;\n\n formGroup () : FormGroup | undefined;\n\n formControlNameOrNull():string|null;\n\n formControlValue (): any | null;\n\n subValue (subName?:string):T | null | undefined;\n\n subContext(subName: string | undefined | null, subType?:string, typeResolver?: XtTypeResolver | null): XtContext<any>;\n\n elementSetContext(subElement: any): XtContext<any>;\n\n displayValue: Signal<T|null>;\n\n setDisplayValue (newValue:T|null|undefined, type?:string): XtContext<T>;\n\n setFormValue (newValue:T|null|undefined, markAsDirty?:boolean): boolean;\n\n value(): T | null | undefined;\n\n valueType?:string;\n\n toString (): string;\n\n}\n\nexport type XtDisplayMode = 'INLINE_VIEW'|'FULL_VIEW'|'FULL_EDITABLE'|'LIST_VIEW';\n\nexport class XtBaseContext<T> implements XtContext<T>{\n displayMode: XtDisplayMode = 'FULL_VIEW';\n\n /**\n * When editable, the value is stored in a parent formGroup\n */\n subName?: string;\n parentFormGroup?: FormGroup<any>;\n\n /**\n * When the context is a child, it potentially needs to update its parent value\n */\n parentContext?:XtBaseContext<any>;\n\n /**\n * All child contexts are kept in this map\n */\n protected childContexts?:Map<string, XtBaseContext<any>>;\n\n /**\n * localFormGroup exists only for composite components: it's children are all gathered in a form group\n */\n localFormGroup?: FormGroup<any>;\n\n /**\n * When not managed by a form, the value is here\n */\n nonFormValue?: WritableSignal<T|null>;\n\n valueType?:string;\n\n /**\n *\n * @param displayMode\n * @param readOnly\n * @param parentGroup\n * @param controlName\n */\n\n constructor (displayMode: XtDisplayMode, subName?: string, parentGroup?: FormGroup, parentContext?:XtBaseContext<any>)\n {\n this.displayMode=displayMode;\n this.parentFormGroup=parentGroup;\n this.parentContext=parentContext;\n this.subName=subName;\n }\n\n setDisplayValue (newValue:T|null|undefined, type?:string, updateParent:boolean=true): XtBaseContext<T> {\n if (newValue!==undefined){\n const oldValue = this.nonFormValue?this.nonFormValue():null;\n if (this.nonFormValue==null) {\n if ((this.childContexts!=null) && (this.childContexts.size>0)) throw new Error ('An XtContext with no values cannot have children ',{cause:this});\n this.nonFormValue=signal(newValue);\n }else {\n this.nonFormValue.set(newValue);\n }\n\n // Change the children values if needed\n if (this.childContexts!=null) {\n if (newValue==null) {\n for (const [subName, child] of this.childContexts) {\n child.setDisplayValue(null, undefined, false);\n }\n\n } else if (oldValue!=null) {\n for (const [subName, child] of this.childContexts) {\n if (newValue[subName as keyof T]!=oldValue[subName as keyof T]) {\n // The value has changed, let's update\n child.setDisplayValue(newValue[subName as keyof T], undefined, false);\n }\n }\n }\n }\n\n if ((updateParent) && (this.subName!=null))\n this.parentContext?.updateSubDisplayValue(this.subName,newValue);\n }\n\n if (type!==undefined)\n this.valueType = type;\n return this;\n }\n\n displayValue = computed( ()=> {\n if (this.nonFormValue!==undefined) {\n return this.nonFormValue();\n } else {\n throw new Error (\"Cannot display a value that does not exist. Are you sure you're not using Reactive Form with this context? \"+ this.toString());\n }\n });\n\n isInForm (): boolean {\n return ((this.subName != null) && (this.formGroup()!=null));\n }\n\n formControlNameOrNull():string|null {\n return this.subName??null;\n }\n\n value ():T | null | undefined {\n if (this.nonFormValue!=null)\n return this.nonFormValue()??this.formControlValue();\n else\n return this.formControlValue();\n }\n\n subValue (subsubName?:string):any | null | undefined {\n const value = this.nonFormValue?this.nonFormValue():this.formControlValue();\n if ((subsubName != null) && (value != null)) {\n return value[subsubName as keyof typeof value];\n }else {\n return value;\n }\n }\n\n /**\n * Enable child contexts to update its own value in the parent context whenever it's value changes\n */\n protected updateSubDisplayValue (subName:string, subValue:any): void {\n if (this.nonFormValue!=null) {\n let newValue = this.nonFormValue();\n if (newValue==null) {\n const newValue = {} as T;\n newValue[subName as keyof T]=subValue\n this.nonFormValue.set(newValue);\n } else {\n newValue[subName as keyof T] = subValue; // Discretly update the subValue without triggering parent signal\n }\n } else {\n throw new Error (\"No nonFormValue to update subDisplayValue\"+this.toString());\n }\n }\n\n formControlValue (): T | null | undefined {\n let ret:T|undefined|null=undefined;\n if (this.isInForm()) {\n if (this.subName!=null) {\n //console.debug (\"formControlValue parentGroup value is \", this.parentFormGroup?.value);\n ret=this.parentFormGroup?.value[this.subName];\n } else {\n ret= this.parentFormGroup?.value;\n }\n } else {\n ret= undefined;\n }\n //console.debug(\"formControlValue of \"+this.subName+ \" is \",ret);\n return ret;\n }\n\n setFormValue (newValue:T|null|undefined, markAsDirty=false): boolean {\n if (this.isInForm()) {\n if (this.subName!=null) {\n const control=this.parentFormGroup?.get(this.subName);\n if (control!=null) {\n control.setValue(newValue);\n if (markAsDirty) {\n control.markAsDirty();\n }\n return true;\n }\n }\n }\n return false;\n }\n\n\n /**\n * Returns the context associated with a specific element in a set.\n * Value must be an array.\n * @param elementIndex\n */\n elementSetContext(elementIndex:number): XtContext<any> {\n const value = this.value();\n\n if (!Array.isArray(this.value())) {\n throw new Error (\"The value must be an Array / Set to create a subElement context.\")\n }\n\n const ret = new XtBaseContext<T> (this.displayMode, undefined, undefined, this);\n ret.setDisplayValue((value as any[])[elementIndex]);\n if (this.valueType!=null) {\n // Convert potential array type into single type\n ret.valueType=this.valueType.endsWith('[]')?this.valueType.substring(0, this.valueType.length-2):this.valueType;\n }\n return ret;\n }\n\n subContext(subName: string | undefined | null, subType?:string, typeResolver?:XtTypeResolver | null): XtContext<any> {\n if ((subName==null) || (subName.length==0)) {\n return this;\n } else if (this.childContexts?.has(subName)) {\n return this.childContexts?.get(subName)!;\n }else {\n let subValue:WritableSignal<any|null> | null = null;\n let parentGroup = this.formGroup();\n // Recalculate parentGroup and formControlName and value if needed.\n if (parentGroup==null){\n let curValue = this.nonFormValue;\n if (curValue!=null){\n if (curValue()!=null) {\n subValue = signal ((curValue() as any)[subName]);\n }\n }\n if (subValue==null) {\n subValue = signal (null);\n }\n }\n\n const ret = new XtBaseContext<T> (this.displayMode, subName, parentGroup, this);\n if( subValue!=null) ret.nonFormValue=subValue;\n\n if (subType!=null) {\n ret.valueType=subType;\n } else if ((this.valueType!=null) && (typeResolver!=null)) {\n ret.valueType=typeResolver.findTypeName(this.valueType, subName, this.value())??undefined;\n }\n\n if (this.childContexts==null) this.childContexts=new Map<string, XtBaseContext<any>>();\n this.childContexts.set(subName, ret);\n return ret;\n }\n }\n\n formGroup (): FormGroup|undefined {\n return this.localFormGroup??this.parentFormGroup;\n }\n\n toString():string {\n let ret='XtContext named ';\n ret += this.subName??'None';\n ret += ' with type ';\n ret += this.valueType??'None';\n ret +=' with value ';\n ret += this.nonFormValue?this.nonFormValue():this.formControlValue();\n return ret;\n }\n}\n","import { XtComponentInfo } from './plugin/xt-plugin-info';\n\nexport class XtResolvedComponent {\n componentName: string;\n componentClass: any;\n outputs:boolean;\n\n constructor (componantName:string, componentClass:any, outputs:boolean=false) {\n this.componentName = componantName;\n this.componentClass = componentClass;\n this.outputs = outputs;\n }\n\n public static from (info:XtComponentInfo<any>): XtResolvedComponent {\n const ret = new XtResolvedComponent(info.componentName, info.componentClass);\n if ( (info.outputs!=null) && (info.outputs.length>0)){\n ret.outputs=true;\n }\n return ret;\n }\n}\n","import { XtComponentInfo, XtPluginInfo } from '../plugin/xt-plugin-info';\nimport { signal, Type } from '@angular/core';\nimport { XtComponent } from '../xt-component';\n\nexport class XtPluginRegistry {\n\n pluginRegistry = new Map<string, XtPluginInfo> ();\n componentRegistry = new Map<string, XtComponentInfo<any>> ();\n componentByTypeCache = new Map<string, XtComponentInfo<any>[]> ();\n\n listComponents = signal(new Array<XtComponentInfo<any>>());\n listPlugins = signal(new Array<XtPluginInfo>());\n\n /**\n * The component can manage any standard javascript primitives types. That's usually the default whenever we don't know any particular type\n * string\n * number\n * bigint\n * boolean\n * undefined\n * null\n * symbol is not managed\n * Date, while an object and not a primitive, is managed\n */\n public static readonly ANY_PRIMITIVE_TYPE=\"ANY_PRIMITIVE_TYPE\";\n /**\n * The components can manage any composite javascript type. Default when no type has been defined and it's a user defined javascript object (not a data type)\n */\n public static readonly ANY_OBJECT_TYPE=\"ANY_OBJECT_TYPE\";\n\n public static readonly ANY_PRIMITIVE_SET = \"ANY_PRIMITIVE_SET\";\n\n public static readonly ANY_OBJECT_SET = \"ANY_OBJECT_SET\";\n\n registerPlugin (info:XtPluginInfo) {\n this.pluginRegistry.set (info.name, info);\n\n if (info.components != null) {\n let updated=false;\n for (const comp of info.components) {\n updated=true;\n this.registerComponent (comp);\n }\n if (updated) this.componentByTypeCache.clear(); // Force recalculation of type\n }\n\n this.listPlugins.update((array) => {\n let found=false;\n for (let i=0; i<array.length; i++) {\n if (array[i].name==info.name) {\n found=true;\n array[i] = info;\n }\n }\n if( !found)\n array.push(info);\n return [...array]; // You have to send another value, not just update the existing one.\n });\n\n }\n\n registerComponent<T> (info:XtComponentInfo<T>) {\n this.componentRegistry.set (info.componentName, info);\n this.listComponents.update((array) => {\n let found=false;\n for (let i=0; i<array.length; i++) {\n if (array[i].componentName==info.componentName) {\n found=true;\n array[i] = info;\n }\n }\n if( !found)\n array.push(info);\n return array;\n });\n }\n\n findComponentsForType<T> (valueType:string|null|undefined, value?:T): XtComponentInfo<any>[] {\n let originalType=valueType;\n //console.debug('Finding type from '+valueType+' with value ',value);\n // We don't know the value type, let's try to guess if it's a primitive or object based on the value\n if ( valueType == null) {\n valueType = XtPluginRegistry.ANY_OBJECT_TYPE;\n if ((value == null) || (typeof value != 'object')) {\n valueType=XtPluginRegistry.ANY_PRIMITIVE_TYPE;\n } else if (value instanceof Date) {\n valueType=XtPluginRegistry.ANY_PRIMITIVE_TYPE;\n }\n\n if (Array.isArray(value)) {\n valueType = (valueType===XtPluginRegistry.ANY_PRIMITIVE_TYPE)?XtPluginRegistry.ANY_PRIMITIVE_SET:XtPluginRegistry.ANY_OBJECT_SET;\n }\n } else { // originalType has been defined.\n if (Array.isArray(value)) {\n valueType=valueType.endsWith('[]')?valueType:valueType+'[]';\n originalType=valueType;\n }\n }\n //console.debug('Type found is '+valueType);\n\n let ret = this.componentByTypeCache.get(valueType);\n if (ret == null) {\n ret = new Array<XtComponentInfo<any>> ()\n for (const comp of this.componentRegistry) {\n const info=comp[1];\n if (info.typesHandled.includes (valueType)) {\n ret.push(info);\n }\n }\n\n if ((ret.length == 0) && (originalType!=null)) {\n // Couldn't find a specific component, let's try the generic ones, so we don't pass any type\n ret = this.findComponentsForType(null, value);\n // Cache the component only if we were able to assert its type.\n // If no type has been given and value is null, then we cannot assess the real type\n if (value!=null) {\n this.componentByTypeCache.set(originalType, ret);\n }\n } else {\n // Cache the component only if we were able to assert its type.\n // If no type has been given and value is null, then we cannot assess the real type\n if ((value!=null) || (originalType!=null)) {\n this.componentByTypeCache.set(originalType ?? valueType, ret);\n }\n }\n\n }\n return ret;\n }\n\n public static registry (): XtPluginRegistry {\n return XT_REGISTRY;\n }\n\n findComponentInfo(type: Type<XtComponent<any>>): XtComponentInfo<any>|null {\n // Search for the component registered with this class\n for (const info of this.componentRegistry.values()) {\n if (info.componentClass==type) {\n return info;\n }\n }\n return null;\n }\n\n getComponentInfo(type: Type<XtComponent<any>>): XtComponentInfo<any> {\n const ret= this.findComponentInfo(type);\n if (ret==null) {throw new Error (\"No component found with class \"+type);}\n return ret;\n }\n\n}\n","/**\n * The global plugin registry.\n * Plugins will register to this when loaded.\n */\nimport { XtPluginRegistry } from './lib/registry/xt-plugin-registry';\n\ndeclare global {\n\n var XT_REGISTRY:XtPluginRegistry;\n}\n\nexport function initXtPluginRegistry () {\n if (globalThis.XT_REGISTRY==null) {\n globalThis.XT_REGISTRY = new XtPluginRegistry();\n }\n}\n\nexport function xtPluginRegistry (): XtPluginRegistry {\n if (globalThis.XT_REGISTRY==null) {\n initXtPluginRegistry();\n }\n return globalThis.XT_REGISTRY;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { XtResolver } from \"../resolver/xt-resolver\";\nimport { XtPluginRegistry } from \"../registry/xt-plugin-registry\";\nimport { XtTypeResolver } from \"xt-type\";\nimport { xtPluginRegistry } from '../../globals';\n\nexport const XT_RESOLVER_TOKEN = new InjectionToken<XtResolver> ('Enable providing a custom component resolver.');\n\nexport const XT_TYPE_RESOLVER_TOKEN = new InjectionToken<XtTypeResolver> ('Enable providing a custom type resolver.');\n\nexport const XT_REGISTRY_TOKEN = new InjectionToken<XtPluginRegistry> (\"Injects the Plugin Registry right into your angular component\",\n {\n factory: () => {\n return xtPluginRegistry();\n }\n }\n )\n","import { XtPluginRegistry } from \"../registry/xt-plugin-registry\";\nimport { XtTypeResolver } from \"xt-type\";\nimport { XtContext } from \"../xt-context\";\nimport { XtResolvedComponent } from \"../xt-resolved-component\";\nimport { XtResolver } from \"./xt-resolver\";\n\nexport class XtRegistryResolver implements XtResolver {\n\n registry:XtPluginRegistry;\n typeResolver: XtTypeResolver;\n\n constructor (registry:XtPluginRegistry, typeResolver:XtTypeResolver) {\n this.registry = registry;\n this.typeResolver = typeResolver;\n }\n\n resolve<T>(baseContext: XtContext<T>, subName?:string): XtResolvedComponent | null {\n const ret= this.registry.findComponentsForType (this.typeResolver.findTypeName(baseContext.valueType, subName), baseContext.subValue(subName));\n if (ret!=null && ret.length>0) {\n return XtResolvedComponent.from( ret[0]);\n }\n return null;\n }\n\n}\n","import { computed, inject, Injectable, Type } from '@angular/core';\nimport { XtContext } from '../xt-context';\nimport { XtRegistryResolver } from '../resolver/xt-registry-resolver';\nimport { XT_REGISTRY_TOKEN, XT_RESOLVER_TOKEN, XT_TYPE_RESOLVER_TOKEN } from './xt-tokens';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { ManagedDataHandler, XtTypeHandler, XtTypeInfo, xtTypeManager, XtTypeResolver, XtUpdatableTypeResolver } from 'xt-type';\nimport { XtComponentInfo, XtPluginInfo, XtTypeHandlerInfo } from '../plugin/xt-plugin-info';\nimport { XtResolver } from '../resolver/xt-resolver';\nimport { XtComponent } from '../xt-component';\nimport { loadRemoteModule } from '@angular-architects/native-federation';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class XtResolverService {\n\n pluginRegistry = inject (XT_REGISTRY_TOKEN);\n\n protected baseResolver = inject (XT_RESOLVER_TOKEN, {optional:true});\n protected baseTypeResolver = inject (XT_TYPE_RESOLVER_TOKEN, {optional:true});\n\n resolver:XtResolver;\n typeResolver:XtTypeResolver;\n\n constructor() {\n if (this.baseTypeResolver==null) {\n this.typeResolver = xtTypeManager();\n } else this.typeResolver=this.baseTypeResolver;\n\n if (this.baseResolver==null) {\n this.resolver=new XtRegistryResolver (this.pluginRegistry, this.typeResolver);\n } else this.resolver=this.baseResolver;\n\n }\n\n findBestComponent<T> (baseContext: XtContext<T>, subName?:string) : XtResolvedComponent{\n const ret= this.resolver.resolve(baseContext, subName);\n if (ret!=null) return ret;\n else throw new Error (\"No components found for this context \"+ baseContext.toString());\n }\n\n findTypeOf<T> (baseContext:XtContext<T>, subName?:string, value?:T): string | null | undefined {\n const ret = this.typeResolver.findTypeName (baseContext.valueType, subName, value);\n return ret;\n }\n\n findTypeHandlerOf<T> (baseContext:XtContext<T>, subName?:string, value?:T): {typeName?:string | null, handler?:XtTypeHandler<any>} {\n const ret = this.typeResolver.findTypeHandler(baseContext.valueType, subName, value);\n return ret;\n }\n\n listSubNamesOf<T> (baseContext:XtContext<T>, value?:T): string[] {\n return this.typeResolver.listSubNames(baseContext.valueType, value);\n }\n\n registerPlugin (info:XtPluginInfo) {\n this.pluginRegistry.registerPlugin (info);\n this.registerTypes (info.types, info.typeHandlers);\n }\n\n registerTypes (types:XtTypeInfo|undefined, handlers?:XtTypeHandlerInfo<any>[]): void {\n if ((types !=null) && (this.typeResolver.canUpdate())) {\n for (const newType in types) {\n let handler=this.handlerDefinedFor (newType, handlers);\n if (handler==null) {\n handler = new ManagedDataHandler();\n }\n (this.typeResolver as XtUpdatableTypeResolver).addRootType (newType, types[newType], handler);\n }\n }\n }\n\n protected handlerDefinedFor(newType: string, handlers: XtTypeHandlerInfo<any>[] | undefined):any {\n for (const handler of handlers ?? []) {\n if (handler.typesHandled.includes(newType)) {\n return new handler.handlerClass ();\n }\n }\n return null;\n }\n\n getComponentInfo<T>(type: Type<XtComponent<T>>):XtResolvedComponent {\n return XtResolvedComponent.from(this.pluginRegistry.getComponentInfo (type));\n }\n\n findComponentInfo<T>(type: Type<XtComponent<T>>):XtResolvedComponent|null {\n const ret=this.pluginRegistry.findComponentInfo (type);\n if (ret==null) return null;\n else return XtResolvedComponent.from(ret);\n }\n\n public listComponents = computed<Array<XtComponentInfo<any>>>(() => {\n return this.pluginRegistry.listComponents();\n });\n\n public listPlugins = computed<Array<XtPluginInfo>>(() => {\n return this.pluginRegistry.listPlugins();\n });\n\n /**\n * Dynamically load a register a plugin from the given url\n * The plugin must export at least a Register entrypoint that will be called right after loading..\n * @param url\n * @returns a Promise with the module loaded and already registered.\n */\n loadPlugin (url:URL|string):Promise<any> {\n return loadRemoteModule({\n remoteEntry: url.toString(),\n exposedModule: './Register'\n }).then((module:any) => {\n const pluginName = module.registerPlugin(this);\n // Transform the configured Uris to real urls\n const pluginConfig=this.pluginRegistry.pluginRegistry.get(pluginName);\n if (pluginConfig?.uriLogo!=null) {\n let urlString = url.toString();\n const lastSlash = urlString.lastIndexOf('/');\n urlString = urlString.substring(0, lastSlash+1)+pluginConfig?.uriLogo;\n pluginConfig.uriLogo=urlString;\n }\n return module;\n });\n\n }\n\n}\n","import { OutputEmitterRef } from '@angular/core';\nimport { XtComponentOutput } from '../xt-component';\n\nexport class XtBaseOutput implements XtComponentOutput {\n valueSelected: OutputEmitterRef<any> | undefined;\n\n}\n","import {\n AfterViewInit,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n Signal,\n Type,\n viewChild\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { XtComponent, XtComponentOutput, XtInputType, XtOutputType } from '../xt-component';\nimport { XtBaseContext, XtContext, XtDisplayMode } from '../xt-context';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * Offers a nice and easy to dynamically embed a component.\n * You set the type, the display mode, and either the value or the formgroup & subName to use.\n * XtRender will then instantiate the component, bind it to the value or form, and display it.\n */\n@Component({\n selector: 'xt-render',\n standalone: true,\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule\n ],\n templateUrl: './xt-render.component.html',\n styleUrl: './xt-render.component.css'\n})\nexport class XtRenderComponent<T> implements AfterViewInit {\n resolverService = inject(XtResolverService);\n\n componentType = input<Type<XtComponent<T>>> ();\n displayMode = input.required<XtDisplayMode> ();\n valueType = input<string> ();\n\n // Either we set the value directly\n value= model<T> ();\n // Or we are inside a Form\n formGroup=input<FormGroup>();\n subName= input<string>();\n\n outputsObject = new XtBaseOutput();\n\n inputs = input<XtBaseInput>();\n outputs = output<XtComponentOutput>();\n\n outlet = viewChild.required(NgComponentOutlet);\n\n constructor() {\n\n }\n\n\n context: Signal<XtContext<any>> = computed(() => {\n let form = this.formGroup();\n\n const ret= new XtBaseContext<any>(this.displayMode(), this.subName(), form);\n ret.valueType=this.valueType();\n if (!ret.isInForm()) {\n const subName = this.subName();\n const value = this.value();\n if ( (subName == null) || (value == null)) {\n ret.setDisplayValue(value);\n } else {\n ret.setDisplayValue(value[subName as keyof typeof value]);\n }\n }\n return ret as XtContext<T>;\n });\n\n type:Signal<Type<XtComponent<T>>|null> = computed( () => {\n //console.debug(\"Calculating type in XtRenderSubComponent\");\n\n let type=this.componentType();\n let compFound:XtResolvedComponent|null = null;\n if (type==null) {\n //console.debug('XtRender, using component set '+ type);\n //compFound = this.resolverService.findComponentInfo (type);\n //} else {\n compFound= this.resolverService.findBestComponent(this.context());\n //console.debug('XtRender, found component ',compFound.componentName);\n type= compFound.componentClass;\n }\n\n return type??null;\n });\n\n /**\n * Transfers the input and outputs from the host to the rendered component\n */\n ngAfterViewInit() {\n const instance=this.outlet().componentInstance as XtComponent;\n if (instance?.outputsObject!=null) {\n let hasOneOutput = false;\n for (const key of Object.keys(instance.outputsObject) as XtOutputType[] ) {\n this.outputsObject[key] = instance.outputsObject[key];\n hasOneOutput=true;\n }\n if (hasOneOutput) {\n this.outputs.emit(this.outputsObject);\n }\n }\n const inputs = this.inputs();\n if ((inputs!=null) && (instance?.inputsObject!=null)) {\n for (const key of Object.keys(inputs) as XtInputType[] ) {\n instance.inputsObject[key] = inputs[key];\n }\n\n }\n\n }\n\n}\n","<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n","import { AfterViewInit, Component, computed, inject, input, output, Signal, Type, viewChild } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { XtContext } from '../xt-context';\nimport { XtComponent, XtComponentInput, XtComponentOutput, XtInputType, XtOutputType } from '../xt-component';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * Dynamically render a component that will display the given subValue.\n * To be used only inside an XtSimpleComponent or XtCompositeComponent\n */\n@Component({\n selector: 'xt-render-sub',\n standalone: true,\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule\n ],\n templateUrl: './xt-render-sub.component.html',\n styleUrl: './xt-render-sub.component.css'\n})\nexport class XtRenderSubComponent<T> implements AfterViewInit {\n context = input.required<XtContext<T>> ();\n componentType = input<Type<XtComponent<T>>> ();\n\n outputsObject = new XtBaseOutput();\n\n inputs = input<XtBaseInput>();\n outputs = output<XtComponentOutput>();\n\n outlet = viewChild.required(NgComponentOutlet);\n\n resolverService = inject(XtResolverService);\n\n type:Signal<Type<XtComponent<T>>|null> = computed( () => {\n //console.debug(\"Calculating type in XtRenderSubComponent\");\n\n let type=this.componentType();\n let compFound:XtResolvedComponent|null = null;\n if (type==null) {\n //console.debug('XtRender, using component set '+ type);\n //compFound = this.resolverService.findComponentInfo (type);\n //} else {\n compFound= this.resolverService.findBestComponent(this.context());\n //console.debug('XtRender, found component ',compFound.componentName);\n type= compFound.componentClass;\n }\n\n return type??null;\n\n });\n\n /**\n * Transfers the input and outputs from the host to the rendered component\n */\n ngAfterViewInit() {\n const instance=this.outlet().componentInstance as XtComponent;\n if (instance?.outputsObject!=null) {\n let hasOneOutput = false;\n for (const key of Object.keys(instance.outputsObject) as XtOutputType[] ) {\n this.outputsObject[key] = instance.outputsObject[key];\n hasOneOutput=true;\n }\n if (hasOneOutput) {\n this.outputs.emit(this.outputsObject);\n }\n }\n const inputs = this.inputs();\n if ((inputs!=null) && (instance?.inputsObject!=null)) {\n for (const key of Object.keys(inputs) as XtInputType[] ) {\n instance.inputsObject[key] = inputs[key];\n }\n\n }\n\n\n }\n\n}\n","{{componentType()}}\n<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n","import { InputSignal } from '@angular/core';\nimport { XtComponentInput } from '../xt-component';\n\nexport class XtBaseInput implements XtComponentInput {\n valueSelected: InputSignal<any>|undefined;\n}\n","import { Component, computed, input, OnInit, output } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport { XtContext } from '../xt-context';\nimport { XtComponent, XtComponentOutput } from '../xt-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * An XtSimpleComponent just displays the given value or element in a form.\n * If you need to dynamically embed other XtComponents to display sub elements, then please use the XtCompositeComponent\n */\n@Component({\n standalone: true,\n imports: [],\n template: ''\n})\nexport class XtSimpleComponent<T = any> implements XtComponent<T>, OnInit{\n context = input.required<XtContext<T>>();\n outputsObject = new XtBaseOutput();\n inputsObject = new XtBaseInput();\n outputs=output<XtComponentOutput>();\n\n isInForm = computed<boolean> ( () => {\n return this.context()?.isInForm()??false;\n });\n\n formControlNameIfAny = computed<string | undefined> (() => {\n return this.context()?.subName;\n });\n\n formGroupIfAny = computed<FormGroup | undefined> (() => {\n return this.context()?.formGroup();\n })\n\n formGroup = computed<FormGroup> (() => {\n const ret= this.context()?.formGroup();\n if (ret==null) throw new Error ('No form groups in this component of type '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Returns the component form name, which is for now the subName\n */\n componentNameInForm=computed<string> ( () => {\n return this.safelyGetSubName();\n });\n\n constructor() {\n }\n\n ngOnInit(): void {\n this.setupInputOutput();\n if (Object.keys(this.outputsObject).length > 0) {\n // At least one output has been defined\n this.outputs.emit(this.outputsObject);\n }\n }\n\n\n manageFormControl<T> (ctrlName:string): AbstractControl<T>|undefined {\n const formGroup = this.formGroupIfAny();\n if (formGroup==null) {\n // You can call manageFormControl even in not a form, it just get ignored\n //console.debug('FormGroup is undefined when declaring managedcontrol '+ctrlName);\n return undefined;\n } else {\n let ctrl=formGroup.get(ctrlName);\n if (ctrl==null) {\n ctrl = new FormControl<T|undefined>(undefined);\n formGroup.setControl(ctrlName, ctrl);\n }\n return ctrl;\n }\n }\n\n safelyGetSubName = computed<string>(() => {\n const ret = this.context()?.subName;\n if (ret==null) throw new Error ('This component has no name in the form '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Returns the form control name and create a form control behind the scene\n */\n formControlName = computed<string> (() => {\n const ret = this.safelyGetSubName();\n\n this.manageFormControl<any>(ret); // Creates the form control\n return ret;\n });\n\n formControl = computed<AbstractControl<any>> (() => {\n const subName = this.safelyGetSubName();\n const formControl= this.manageFormControl(subName);\n if (formControl==null) throw new Error (\"Calling formControl for subName \"+subName+\" when none exist.\");\n return formControl;\n});\n\n componentDescriptor (): string {\n return \"Component with type \"+this.constructor.name+\" with context \"+this.context().toString();\n }\n\n getValue= computed (()=> {\n return this.context().value();\n });\n\n displayValue = computed (() => {\n return this.context().displayValue();\n });\n\n /**\n * This is where components can assign their output() and input() into the XtComponent inputs and outputs member\n * @protected\n */\n protected setupInputOutput () {\n // Nothing to do here\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { XtSimpleComponent } from '../xt-simple/xt-simple.component';\nimport { FormGroup } from '@angular/forms';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtContext } from '../xt-context';\n\n@Component({\n standalone: true,\n imports: [],\n template: '',\n styleUrl: './xt-composite.component.css'\n})\nexport class XtCompositeComponent<T = any> extends XtSimpleComponent<T> {\n\n resolverService = inject(XtResolverService);\n\n override formGroupIfAny = computed<FormGroup | undefined> (() => {\n const context = this.context();\n if (context==null) return undefined;\n let ret= context.localFormGroup;\n if ((ret==null) && (context.parentFormGroup!=null) && (context.subName!=null)) {\n if (context.parentFormGroup.contains(context.subName)) {\n context.localFormGroup = context.parentFormGroup.get(context.subName) as FormGroup;\n } else {\n context.localFormGroup= new FormGroup ({});\n context.parentFormGroup.addControl(context.subName, context.localFormGroup);\n }\n ret=context.localFormGroup;\n }\n return ret;\n })\n\n /**\n * We need to create a new form group to manage the sub elements.\n */\n override formGroup = computed<FormGroup> (() => {\n const ret= this.formGroupIfAny();\n if (ret==null) throw new Error ('No form groups in this component of type '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Helper function to calculate the sub context\n * @param subName\n * @param subType\n */\n subContext (subName:string, subType?:string):XtContext<any> {\n this.formGroupIfAny(); // Ensure the context is properly initialized\n return this.context().subContext(subName, subType, this.resolverService.typeResolver);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageHandler {\n errorOccurred (error:any, errorMsg?:string) {\n console.error(errorMsg, error);\n }\n\n warningOccurred (warningMsg?:string) {\n console.warn(warningMsg);\n }\n\n}\n","/**\n * Wrapper around xt-store manager: You can use it to check if xt-store is included or not, and decide what to do\n *\n * This allow plugins to potentially use xt-store whenever included in the applications running the plugin\n */\nimport { Observable } from 'rxjs';\n\nexport class StoreSupport {\n\n protected static testStoreManager?: IStoreManager;\n\n static isStoreManagerAvailable () {\n if (this.testStoreManager!=null) return true;\n return ((globalThis as any).xtStoreManager!=undefined);\n }\n\n static getStoreManager (): IStoreManager {\n return this.testStoreManager??((globalThis as any).xtStoreManager());\n }\n\n static setTestStoreManager (testStoreManager:IStoreManager): void {\n StoreSupport.testStoreManager = testStoreManager;\n }\n}\n\n/**\n * Interface definition for xt-store component.\n * We re-define them here to avoid importing xt-store in all plugins that don't need it.\n */\n\n\nexport interface IDataTransformer<T> {\n /**\n * Enable transformation of data right after it has been loaded from the store\n * @param source\n */\n postLoadingTransformation (source:any[]): T[];\n\n}\n\nexport interface IDocumentInfo {\n documentName: string;\n isUrl: boolean;\n documentId?: string;\n}\n\nexport interface IStoreProvider<T> {\n storeEntity( name:string, entity: T): Promise<T>;\n\n /**\n * Rejects the promise if the entity is not found\n * @param name\n * @param key\n */\n safeLoadEntity( name: string, key: any): Promise<T>;\n loadEntity( name: string, key: any): Promise<T|undefined>;\n\n deleteEntity(name:string, key: any): Promise<boolean>;\n\n searchEntities(\n name: string,\n ...criteria: any[]\n ): Observable<Array<T>>;\n\n searchAndPrepareEntities(\n name: string,\n sort?:any,\n groupBy?:any,\n transformer?: IDataTransformer<T>,\n ...criteria: any[]\n ): Observable<any>;\n\n canStoreDocument(): boolean;\n\n /**\n * Upload one document to a server store and returns the url or the id needed to retrieve them.\n * @param toStore\n * @param position\n */\n storeDocument(\n toStore: File\n ): Promise<IDocumentInfo>;\n\n /**\n * Upload documents to a server store and returns the url or the id needed to retrieve them.\n * @param toStore\n * @param position\n */\n storeDocuments(\n toStore: File[]\n ): Observable<IDocumentInfo>;\n\n\n}\n\nexport interface IStoreManager {\n getProvider<T=never>(name?: string): IStoreProvider<T> | undefined;\n getProviderSafe<T=never>(name?: string): IStoreProvider<T>;\n\n getDefaultProvider<T=never>(): IStoreProvider<T> | undefined;\n\n getDefaultProviderSafe<T=never>(): IStoreProvider<T>;\n\n}\n","import { FormControl, FormGroup } from '@angular/forms';\nimport { isPrimitive } from 'xt-type';\n\nexport function updateFormGroupWithValue(formGroup: FormGroup, value:{[key:string]:any}) {\n\n const toDelete = new Set<string>(Object.keys(formGroup.controls));\n\n for (const valueKey in value) {\n const primitive = isPrimitive(value[valueKey]);\n if (toDelete.delete(valueKey)) {\n // Already a control\n const oldControl = formGroup.get(valueKey)!;\n // Is it the right type ?\n if (primitive) {\n // Must be an FormControl2\n if ((oldControl as any).controls === undefined) {\n // It's ok, just set the value\n oldControl.setValue(value[valueKey]);\n } else {\n formGroup.setControl(valueKey, new FormControl(value[valueKey]));\n }\n } else {\n // Must be a FormGroup\n if ((oldControl as any).controls === undefined) {\n const newFormGroup = new FormGroup({});\n formGroup.setControl(valueKey, newFormGroup);\n updateFormGroupWithValue(newFormGroup, value[valueKey]);\n } else {\n // It was already a formgroup, so just update it\n updateFormGroupWithValue(oldControl as FormGroup, value[valueKey]);\n }\n }\n } else {\n if (primitive) {\n formGroup.addControl(valueKey, new FormControl(value[valueKey]));\n } else {\n const newFormGroup = new FormGroup({});\n formGroup.addControl(valueKey, newFormGroup);\n updateFormGroupWithValue(newFormGroup, value[valueKey]);\n }\n }\n }\n\n // Delete controls that are no more used\n for (const delName of toDelete) {\n formGroup.removeControl(delName);\n }\n}\n","import { XtResolverService } from '../angular/xt-resolver.service';\nimport { inject } from '@angular/core';\n\nexport class XtUnitTestHelper {\n/* public static registerComponent<T> (name:string, compClass:T, type:string){\n this.resolverService.pluginRegistry.registerComponent({\n componentName:name,\n componentClass: compClass,\n typesHandled: [type]\n });\n }\n*/\n}\n","import { Component, computed, inject, input, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { XtRenderComponent } from '../render/xt-render.component';\nimport { XtComponent } from '../xt-component';\nimport { XtBaseContext, XtDisplayMode } from '../xt-context';\nimport { XtRenderSubComponent } from '../render/xt-render-sub.component';\nimport { XtResolverService } from '../angular/xt-resolver.service';\n\n/**\n * Component that can be used to bootstrap tests.\n * Just set the value and component type, and it will be injected in your test.\n */\n@Component({\n selector:'test-host',\n standalone:true,\n imports: [CommonModule, XtRenderComponent],\n template: '<h1>Test Simple Component</h1> <xt-render [componentType]=\"type()\" [displayMode]=\"displayMode()\" [value]=\"value()\" ></xt-render> '\n\n})\nexport class HostTestSimpleComponent {\n type = input.required<Type<XtComponent<any>>>();\n displayMode = input<XtDisplayMode> ('FULL_VIEW');\n value = input<any|undefined> (undefined);\n\n}\n\n/**\n * Same as HostTestSimpleComponent but it includes everything in a form.\n * Just set the component type, the formGroup and the component name, and your component will be run.\n * You can as well easily read and set the value.\n */\n@Component({\n selector:'test-form-host',\n standalone:true,\n imports: [CommonModule, XtRenderComponent, ReactiveFormsModule],\n template: '<h1>Test Form Component</h1> <form [formGroup]=\"computedFormGroup()\"> <xt-render [componentType]=\"type()\" displayMode=\"FULL_EDITABLE\" [subName]=\"controlName()\" [formGroup]=\"computedFormGroup()\"></xt-render></form>'\n})\nexport class HostTestFormComponent {\n builder = inject(FormBuilder);\n type = input.required<Type<XtComponent<any>>>();\n controlName = input.required<string>();\n // You can send the description to be used in a FormBuilder to create the formgroup;\n formDescription = input<any> ({ });\n // Or set the FormGroup directly\n formGroup= input<FormGroup>();\n\n createdFormGroup: FormGroup|null = null;\n\n computedFormGroup () {\n if( this.createdFormGroup==null) {\n const formGroup=this.formGroup();\n this.createdFormGroup=formGroup??generateFormGroup(this.formDescription());\n }\n return this.createdFormGroup;\n }\n\n patchValue (newVal:any) {\n const patch:{[key:string]:any}={};\n patch[this.controlName()]=newVal;\n if (this.createdFormGroup!=null)\n this.createdFormGroup.patchValue(patch);\n else throw new Error (\"FormGroup not yet created. Did you set formGroup or formDescription property ?\");\n }\n\n retrieveValue (): any {\n if (this.createdFormGroup!=null)\n return this.createdFormGroup.value[this.controlName()];\n else throw new Error (\"FormGroup not yet created. Did you set formGroup or formDescription property ?\");\n }\n}\n\n/**\n * Component that can be used to test your component based on the type it handles\n * Just set the type hierarchy to register, the value, and it will instantiate the right component in your plugin\n */\n@Component({\n selector:'test-typed-host',\n standalone:true,\n imports: [CommonModule, XtRenderSubComponent],\n template: '<h1>Test Typed Component</h1> <xt-render-sub [context]=\"context()\" ></xt-render-sub> '\n\n})\nexport class HostTestTypedComponent {\n\n displayMode = input<XtDisplayMode> ('FULL_VIEW');\n value = input<any> ();\n valueType = input<string> ();\n\n context = computed( () => {\n const ret = new XtBaseContext(this.displayMode());\n\n ret.valueType=this.valueType();\n ret.setDisplayValue(this.value());\n return ret;\n });\n}\n\n/**\n * Same as HostTestSimpleComponent but it includes everything in a form.\n * Just set the component type, the formGroup and the component name, and your component will be run.\n * You can as well easily read and set the value.\n */\n@Component({\n selector:'test-typed-form-host',\n standalone:true,\n imports: [CommonModule, ReactiveFormsModule, XtRenderSubComponent],\n template: '<h1>Test Typed Form Component</h1> <form [formGroup]=\"parentFormGroup\"> <xt-render-sub [context]=\"subContext()\"></xt-render-sub></form>'\n})\nexport class HostTestTypedFormComponent {\n builder = inject(FormBuilder);\n resolver = inject(XtResolverService);\n\n static readonly CONTROL_NAME='ForTest';\n\n valueType = input<string> ();\n controlName = input<string>();\n // You can send the description to be used in a FormBuilder to create the formgroup;\n formDescription = input<any> ({ });\n // Or set the FormGroup directly\n formGroup= input<FormGroup>();\n\n parentFormGroup = this.builder.group<{[keys:string]: AbstractControl}>({});\n\n createdFormGroup: FormGroup|null = null;\n\n computedFormGroup = computed(() =>{\n if( this.createdFormGroup==null) {\n const formGroup=this.formGroup();\n this.createdFormGroup=formGroup??generateFormGroup(this.formDescription());\n this.parentFormGroup.addControl(this.controlName()??HostTestTypedFormComponent.CONTROL_NAME, this.createdFormGroup);\n }\n return this.createdFormGroup;\n });\n\n subContext = computed( () => {\n this.computedFormGroup(); // Make sure the subformgroups are created\n\n const ctrlName = this.controlName();\n let ret:XtBaseContext<any>|null = null;\n if (ctrlName==null){\n ret = new XtBaseContext('FULL_EDITABLE', HostTestTypedFormComponent.CONTROL_NAME, this.parentFormGroup);\n }\n else{\n ret = new XtBaseContext('FULL_EDITABLE', ctrlName, this.createdFormGroup!);\n }\n ret.valueType=this.valueType();\n\n return ret;\n });\n\n patchValue (controlName:string, newVal:any) {\n const patch:{[key:string]:any}={};\n patch[controlName]=newVal;\n this.computedFormGroup().patchValue(patch);\n }\n\n retrieveValue (controlName:string): any {\n return this.computedFormGroup().value[controlName];\n }\n\n}\n\nfunction generateFormGroup(formDescription: any):FormGroup {\n if (typeof formDescription != 'object') {\n throw new Error ('Form Description should be an object of values');\n }\n return generateFormControl(formDescription) as FormGroup;\n}\n\nfunction generateFormControl(formDescription: any): AbstractControl {\n\n if (formDescription==null) {\n return new FormControl(formDescription);\n }\n\n if (Array.isArray(formDescription)){\n const retArray = new FormArray<AbstractControl>([]);\n for (const val of formDescription) {\n retArray.push(generateFormControl(val), {emitEvent:false});\n }\n return retArray;\n }\n\n if ((typeof formDescription=='object')&&(!(formDescription instanceof Date))) {\n const retObject=new FormGroup({});\n for (const key of Object.keys(formDescription)) {\n retObject.addControl(key, generateFormControl(formDescription[key]));\n }\n return retObject;\n }\n return new FormControl(formDescription);\n}\n","import { Observable } from 'rxjs';\nimport { IDataTransformer, IDocumentInfo, IStoreManager, IStoreProvider, StoreSupport } from '../store/store-support';\n\n/**\n * A very light and not 100% compatible storemanager in case you are not using xt-store.\n * It can emulate XtStoreManager to some extends for doing some tests\n */\nexport class StoreTestHelper {\n public static ensureTestProviderOnly() {\n StoreSupport.setTestStoreManager(new TestStoreManager());\n }\n}\n\nexport class TestStoreManager implements IStoreManager {\n protected defaultProvider= new TestStoreProvider();\n\n getProvider<T = never>(name?: string): IStoreProvider<T> | undefined {\n return this.defaultProvider;\n }\n\n getProviderSafe<T = never>(name?: string): IStoreProvider<T> {\n return this.defaultProvider;\n }\n\n getDefaultProvider<T = never>(): IStoreProvider<T> | undefined {\n return this.defaultProvider;\n }\n\n getDefaultProviderSafe<T = never>(): IStoreProvider<T> {\n return this.defaultProvider;\n }\n\n}\n\nexport class TestStoreProvider<T = never> implements IStoreProvider<T> {\n protected data = new Map<string, Map<string,any>> ();\n\n protected getOrCreateArray (name: string): Map<string,any> {\n let ret=this.data.get(name);\n if (ret==null) {\n ret = new Map<string, any>();\n this.data.set(name, ret);\n }\n return ret;\n }\n\n protected extractKey (value: any):string {\n if (value.__id!=null) return value.__id;\n else if (value.id!=null) return value.id;\n else return value.toString()\n }\n\n storeEntity(name: string, entity: T): Promise<T> {\n this.getOrCreateArray(name).set(this.extractKey(entity), entity);\n return Promise.resolve(entity);\n }\n\n safeLoadEntity(name: string, key: any): Promise<T> {\n const ret = this.getOrCreateArray(name).get(key);\n if (ret==null) {\n throw new Error (\"No entity named \"+name+\" with key \"+key);\n }\n return Promise.resolve(ret);\n }\n\n loadEntity(name: string, key: any): Promise<T | undefined> {\n return Promise.resolve(this.getOrCreateArray(name).get(key));\n }\n\n deleteEntity(name: string, key: any): Promise<boolean> {\n return Promise.resolve( this.getOrCreateArray(name).delete(key));\n }\n\n searchEntities(name: string, ...criteria: any[]): Observable<T[]> {\n throw new Error('Method not implemented.');\n }\n searchAndPrepareEntities(name: string, sort?: any, groupBy?: any, transformer?: IDataTransformer<T> | undefined, ...criteria: any[]): Observable<any> {\n throw new Error('Method not implemented.');\n }\n canStoreDocument(): boolean {\n return true;\n }\n storeDocument(toStore: File): Promise<IDocumentInfo> {\n const ret = new TestDocumentInfo(toStore.name, true,URL.createObjectURL(toStore));\n return Promise.resolve(ret);\n }\n\n storeDocuments(toStore: File[]): Observable<IDocumentInfo> {\n throw new Error('Method not implemented.');\n }\n\n}\n\nexport class TestDocumentInfo implements IDocumentInfo {\n documentName: string;\n isUrl: boolean;\n documentId?: string;\n\n constructor(documentName: string, isUrl: boolean,documentId?: string) {\n this.documentId = documentId;\n this.documentName = documentName;\n this.isUrl = isUrl;\n }\n}\n","/*\n * Public API Surface of xt-components\n */\n\nexport * from './lib/xt-component';\nexport * from './lib/xt-context';\nexport * from './lib/xt-resolved-component';\nexport * from './lib/resolver/xt-resolver';\nexport * from './lib/registry/xt-plugin-registry'\nexport * from './lib/plugin/xt-plugin-info'\nexport * from './globals';\n\nexport * from './lib/angular/xt-tokens';\nexport * from './lib/angular/xt-resolver.service';\n\nexport * from './lib/render/xt-render.component';\nexport * from './lib/render/xt-render-sub.component';\nexport * from './lib/xt-simple/xt-simple.component';\nexport * from './lib/xt-composite/xt-composite.component';\n\nexport * from './lib/angular/message-handler';\nexport * from './lib/store/store-support';\nexport * from './lib/type/type-helper';\nexport * from './lib/test/xt-unit-test-helper';\nexport * from './lib/test/xt-test-helper-components';\nexport * from './lib/test/store-test-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xt-components.mjs","sources":["../../../projects/xt-components/src/lib/xt-context.ts","../../../projects/xt-components/src/lib/xt-resolved-component.ts","../../../projects/xt-components/src/lib/registry/xt-plugin-registry.ts","../../../projects/xt-components/src/globals.ts","../../../projects/xt-components/src/lib/angular/xt-tokens.ts","../../../projects/xt-components/src/lib/resolver/xt-registry-resolver.ts","../../../projects/xt-components/src/lib/angular/xt-resolver.service.ts","../../../projects/xt-components/src/lib/output/xt-base-output.ts","../../../projects/xt-components/src/lib/render/xt-render.component.ts","../../../projects/xt-components/src/lib/render/xt-render.component.html","../../../projects/xt-components/src/lib/render/xt-render-sub.component.ts","../../../projects/xt-components/src/lib/render/xt-render-sub.component.html","../../../projects/xt-components/src/lib/output/xt-base-input.ts","../../../projects/xt-components/src/lib/xt-simple/xt-simple.component.ts","../../../projects/xt-components/src/lib/xt-composite/xt-composite.component.ts","../../../projects/xt-components/src/lib/angular/message-handler.ts","../../../projects/xt-components/src/lib/store/store-support.ts","../../../projects/xt-components/src/lib/type/type-helper.ts","../../../projects/xt-components/src/lib/test/xt-unit-test-helper.ts","../../../projects/xt-components/src/lib/test/xt-test-helper-components.ts","../../../projects/xt-components/src/lib/test/store-test-helper.ts","../../../projects/xt-components/src/public-api.ts","../../../projects/xt-components/src/xt-components.ts"],"sourcesContent":["import { FormGroup } from '@angular/forms';\nimport { XtTypeResolver } from 'xt-type';\nimport { computed, Signal, signal, WritableSignal } from '@angular/core';\n\n/**\n * A XtContext provides all the necessary information for an ng-extended component to operate. It is passed from parent to child component and pass\n * - The display mode - View, Inline view or Edit\n * - The value, either directly as a signal or in a formgroup when editing.\n * - The valueType, necessary to find the right ng-extended component to display\n *\n * To do this, it maintains a hierarchy of context and subContexts by name.\n */\nexport type XtContext<T> = {\n\n displayMode: XtDisplayMode;\n\n subName?: string; // The subName in the parentFormGroup and parentContext\n parentFormGroup?: FormGroup;\n localFormGroup?: FormGroup;\n\n // A parentContext if defined\n parentContext?:XtContext<any>;\n\n isInForm (): boolean;\n\n formGroup () : FormGroup | undefined;\n\n formControlNameOrNull():string|null;\n\n formControlValue (): any | null;\n\n subValue (subName?:string):T | null | undefined;\n\n subContext(subName: string | undefined | null, subType?:string, typeResolver?: XtTypeResolver | null): XtContext<any>;\n\n elementSetContext(subElement: any): XtContext<any>;\n\n displayValue: Signal<T|null>;\n\n setDisplayValue (newValue:T|null|undefined, type?:string): XtContext<T>;\n\n setFormValue (newValue:T|null|undefined, markAsDirty?:boolean): boolean;\n\n value(): T | null | undefined;\n\n valueType?:string;\n\n toString (): string;\n\n}\n\nexport type XtDisplayMode = 'INLINE_VIEW'|'FULL_VIEW'|'FULL_EDITABLE'|'LIST_VIEW';\n\nexport class XtBaseContext<T> implements XtContext<T>{\n displayMode: XtDisplayMode = 'FULL_VIEW';\n\n /**\n * When editable, the value is stored in a parent formGroup\n */\n subName?: string;\n parentFormGroup?: FormGroup<any>;\n\n /**\n * When the context is a child, it potentially needs to update its parent value\n */\n parentContext?:XtBaseContext<any>;\n\n /**\n * All child contexts are kept in this map\n */\n protected childContexts?:Map<string, XtBaseContext<any>>;\n\n /**\n * localFormGroup exists only for composite components: it's children are all gathered in a form group\n */\n localFormGroup?: FormGroup<any>;\n\n /**\n * When not managed by a form, the value is here\n */\n nonFormValue?: WritableSignal<T|null>;\n\n valueType?:string;\n\n /**\n *\n * @param displayMode\n * @param readOnly\n * @param parentGroup\n * @param controlName\n */\n\n constructor (displayMode: XtDisplayMode, subName?: string, parentGroup?: FormGroup, parentContext?:XtBaseContext<any>)\n {\n this.displayMode=displayMode;\n this.parentFormGroup=parentGroup;\n this.parentContext=parentContext;\n this.subName=subName;\n }\n\n setDisplayValue (newValue:T|null|undefined, type?:string, updateParent:boolean=true): XtBaseContext<T> {\n if (newValue!==undefined){\n const oldValue = this.nonFormValue?this.nonFormValue():null;\n if (this.nonFormValue==null) {\n if ((this.childContexts!=null) && (this.childContexts.size>0)) throw new Error ('An XtContext with no values cannot have children ',{cause:this});\n this.nonFormValue=signal(newValue);\n }else {\n this.nonFormValue.set(newValue);\n }\n\n // Change the children values if needed\n if (this.childContexts!=null) {\n if (newValue==null) {\n for (const [subName, child] of this.childContexts) {\n child.setDisplayValue(null, undefined, false);\n }\n\n } else if (oldValue!=null) {\n for (const [subName, child] of this.childContexts) {\n if (newValue[subName as keyof T]!=oldValue[subName as keyof T]) {\n // The value has changed, let's update\n child.setDisplayValue(newValue[subName as keyof T], undefined, false);\n }\n }\n }\n }\n\n if ((updateParent) && (this.subName!=null))\n this.parentContext?.updateSubDisplayValue(this.subName,newValue);\n }\n\n if (type!==undefined)\n this.valueType = type;\n return this;\n }\n\n displayValue = computed( ()=> {\n if (this.nonFormValue!==undefined) {\n return this.nonFormValue();\n } else {\n throw new Error (\"Cannot display a value that does not exist. Are you sure you're not using Reactive Form with this context? \"+ this.toString());\n }\n });\n\n isInForm (): boolean {\n return ((this.subName != null) && (this.formGroup()!=null));\n }\n\n formControlNameOrNull():string|null {\n return this.subName??null;\n }\n\n value ():T | null | undefined {\n if (this.nonFormValue!=null)\n return this.nonFormValue()??this.formControlValue();\n else\n return this.formControlValue();\n }\n\n subValue (subsubName?:string):any | null | undefined {\n const value = this.nonFormValue?this.nonFormValue():this.formControlValue();\n if ((subsubName != null) && (value != null)) {\n return value[subsubName as keyof typeof value];\n }else {\n return value;\n }\n }\n\n /**\n * Enable child contexts to update its own value in the parent context whenever it's value changes\n */\n protected updateSubDisplayValue (subName:string, subValue:any): void {\n if (this.nonFormValue!=null) {\n let newValue = this.nonFormValue();\n if (newValue==null) {\n const newValue = {} as T;\n newValue[subName as keyof T]=subValue\n this.nonFormValue.set(newValue);\n } else {\n newValue[subName as keyof T] = subValue; // Discretly update the subValue without triggering parent signal\n }\n } else {\n throw new Error (\"No nonFormValue to update subDisplayValue\"+this.toString());\n }\n }\n\n formControlValue (): T | null | undefined {\n let ret:T|undefined|null=undefined;\n if (this.isInForm()) {\n if (this.subName!=null) {\n //console.debug (\"formControlValue parentGroup value is \", this.parentFormGroup?.value);\n ret=this.parentFormGroup?.value[this.subName];\n } else {\n ret= this.parentFormGroup?.value;\n }\n } else {\n ret= undefined;\n }\n //console.debug(\"formControlValue of \"+this.subName+ \" is \",ret);\n return ret;\n }\n\n setFormValue (newValue:T|null|undefined, markAsDirty=false): boolean {\n if (this.isInForm()) {\n if (this.subName!=null) {\n const control=this.parentFormGroup?.get(this.subName);\n if (control!=null) {\n control.setValue(newValue);\n if (markAsDirty) {\n control.markAsDirty();\n }\n return true;\n } else {\n // Supports setting values without a child form control\n const value=this.parentFormGroup?.getRawValue();\n if (value!=null) {\n if (newValue!==undefined)\n value[this.subName]=newValue;\n else\n delete value[this.subName];\n }\n }\n }\n }\n return false;\n }\n\n\n /**\n * Returns the context associated with a specific element in a set.\n * Value must be an array.\n * @param elementIndex\n */\n elementSetContext(elementIndex:number): XtContext<any> {\n const value = this.value();\n\n if (!Array.isArray(this.value())) {\n throw new Error (\"The value must be an Array / Set to create a subElement context.\")\n }\n\n const ret = new XtBaseContext<T> (this.displayMode, undefined, undefined, this);\n ret.setDisplayValue((value as any[])[elementIndex]);\n if (this.valueType!=null) {\n // Convert potential array type into single type\n ret.valueType=this.valueType.endsWith('[]')?this.valueType.substring(0, this.valueType.length-2):this.valueType;\n }\n return ret;\n }\n\n subContext(subName: string | undefined | null, subType?:string, typeResolver?:XtTypeResolver | null): XtContext<any> {\n if ((subName==null) || (subName.length==0)) {\n return this;\n } else if (this.childContexts?.has(subName)) {\n return this.childContexts?.get(subName)!;\n }else {\n let subValue:WritableSignal<any|null> | null = null;\n let parentGroup = this.formGroup();\n // Recalculate parentGroup and formControlName and value if needed.\n if (parentGroup==null){\n let curValue = this.nonFormValue;\n if (curValue!=null){\n if (curValue()!=null) {\n subValue = signal ((curValue() as any)[subName]);\n }\n }\n if (subValue==null) {\n subValue = signal (null);\n }\n }\n\n const ret = new XtBaseContext<T> (this.displayMode, subName, parentGroup, this);\n if( subValue!=null) ret.nonFormValue=subValue;\n\n if (subType!=null) {\n ret.valueType=subType;\n } else if ((this.valueType!=null) && (typeResolver!=null)) {\n ret.valueType=typeResolver.findTypeName(this.valueType, subName, this.value())??undefined;\n }\n\n if (this.childContexts==null) this.childContexts=new Map<string, XtBaseContext<any>>();\n this.childContexts.set(subName, ret);\n return ret;\n }\n }\n\n formGroup (): FormGroup|undefined {\n return this.localFormGroup??this.parentFormGroup;\n }\n\n toString():string {\n let ret='XtContext named ';\n ret += this.subName??'None';\n ret += ' with type ';\n ret += this.valueType??'None';\n ret +=' with value ';\n ret += this.nonFormValue?this.nonFormValue():this.formControlValue();\n return ret;\n }\n}\n","import { XtComponentInfo } from './plugin/xt-plugin-info';\n\nexport class XtResolvedComponent {\n componentName: string;\n componentClass: any;\n outputs:boolean;\n\n constructor (componantName:string, componentClass:any, outputs:boolean=false) {\n this.componentName = componantName;\n this.componentClass = componentClass;\n this.outputs = outputs;\n }\n\n public static from (info:XtComponentInfo<any>): XtResolvedComponent {\n const ret = new XtResolvedComponent(info.componentName, info.componentClass);\n if ( (info.outputs!=null) && (info.outputs.length>0)){\n ret.outputs=true;\n }\n return ret;\n }\n}\n","import { XtComponentInfo, XtPluginInfo } from '../plugin/xt-plugin-info';\nimport { signal, Type } from '@angular/core';\nimport { XtComponent } from '../xt-component';\n\nexport class XtPluginRegistry {\n\n pluginRegistry = new Map<string, XtPluginInfo> ();\n componentRegistry = new Map<string, XtComponentInfo<any>> ();\n componentByTypeCache = new Map<string, XtComponentInfo<any>[]> ();\n\n listComponents = signal(new Array<XtComponentInfo<any>>());\n listPlugins = signal(new Array<XtPluginInfo>());\n\n /**\n * The component can manage any standard javascript primitives types. That's usually the default whenever we don't know any particular type\n * string\n * number\n * bigint\n * boolean\n * undefined\n * null\n * symbol is not managed\n * Date, while an object and not a primitive, is managed\n */\n public static readonly ANY_PRIMITIVE_TYPE=\"ANY_PRIMITIVE_TYPE\";\n /**\n * The components can manage any composite javascript type. Default when no type has been defined and it's a user defined javascript object (not a data type)\n */\n public static readonly ANY_OBJECT_TYPE=\"ANY_OBJECT_TYPE\";\n\n public static readonly ANY_PRIMITIVE_SET = \"ANY_PRIMITIVE_SET\";\n\n public static readonly ANY_OBJECT_SET = \"ANY_OBJECT_SET\";\n\n registerPlugin (info:XtPluginInfo) {\n this.pluginRegistry.set (info.name, info);\n\n if (info.components != null) {\n let updated=false;\n for (const comp of info.components) {\n updated=true;\n this.registerComponent (comp);\n }\n if (updated) this.componentByTypeCache.clear(); // Force recalculation of type\n }\n\n this.listPlugins.update((array) => {\n let found=false;\n for (let i=0; i<array.length; i++) {\n if (array[i].name==info.name) {\n found=true;\n array[i] = info;\n }\n }\n if( !found)\n array.push(info);\n return [...array]; // You have to send another value, not just update the existing one.\n });\n\n }\n\n registerComponent<T> (info:XtComponentInfo<T>) {\n this.componentRegistry.set (info.componentName, info);\n this.listComponents.update((array) => {\n let found=false;\n for (let i=0; i<array.length; i++) {\n if (array[i].componentName==info.componentName) {\n found=true;\n array[i] = info;\n }\n }\n if( !found)\n array.push(info);\n return array;\n });\n }\n\n findComponentsForType<T> (valueType:string|null|undefined, value?:T): XtComponentInfo<any>[] {\n let originalType=valueType;\n //console.debug('Finding type from '+valueType+' with value ',value);\n // We don't know the value type, let's try to guess if it's a primitive or object based on the value\n if ( valueType == null) {\n valueType = XtPluginRegistry.ANY_OBJECT_TYPE;\n if ((value == null) || (typeof value != 'object')) {\n valueType=XtPluginRegistry.ANY_PRIMITIVE_TYPE;\n } else if (value instanceof Date) {\n valueType=XtPluginRegistry.ANY_PRIMITIVE_TYPE;\n }\n\n if (Array.isArray(value)) {\n valueType = (valueType===XtPluginRegistry.ANY_PRIMITIVE_TYPE)?XtPluginRegistry.ANY_PRIMITIVE_SET:XtPluginRegistry.ANY_OBJECT_SET;\n }\n } else { // originalType has been defined.\n if (Array.isArray(value)) {\n valueType=valueType.endsWith('[]')?valueType:valueType+'[]';\n originalType=valueType;\n }\n }\n //console.debug('Type found is '+valueType);\n\n let ret = this.componentByTypeCache.get(valueType);\n if (ret == null) {\n ret = new Array<XtComponentInfo<any>> ()\n for (const comp of this.componentRegistry) {\n const info=comp[1];\n if (info.typesHandled.includes (valueType)) {\n ret.push(info);\n }\n }\n\n if ((ret.length == 0) && (originalType!=null)) {\n // Couldn't find a specific component, let's try the generic ones, so we don't pass any type\n ret = this.findComponentsForType(null, value);\n // Cache the component only if we were able to assert its type.\n // If no type has been given and value is null, then we cannot assess the real type\n if (value!=null) {\n this.componentByTypeCache.set(originalType, ret);\n }\n } else {\n // Cache the component only if we were able to assert its type.\n // If no type has been given and value is null, then we cannot assess the real type\n if ((value!=null) || (originalType!=null)) {\n this.componentByTypeCache.set(originalType ?? valueType, ret);\n }\n }\n\n }\n return ret;\n }\n\n public static registry (): XtPluginRegistry {\n return XT_REGISTRY;\n }\n\n findComponentInfo(type: Type<XtComponent<any>>): XtComponentInfo<any>|null {\n // Search for the component registered with this class\n for (const info of this.componentRegistry.values()) {\n if (info.componentClass==type) {\n return info;\n }\n }\n return null;\n }\n\n getComponentInfo(type: Type<XtComponent<any>>): XtComponentInfo<any> {\n const ret= this.findComponentInfo(type);\n if (ret==null) {throw new Error (\"No component found with class \"+type);}\n return ret;\n }\n\n}\n","/**\n * The global plugin registry.\n * Plugins will register to this when loaded.\n */\nimport { XtPluginRegistry } from './lib/registry/xt-plugin-registry';\n\ndeclare global {\n\n var XT_REGISTRY:XtPluginRegistry;\n}\n\nexport function initXtPluginRegistry () {\n if (globalThis.XT_REGISTRY==null) {\n globalThis.XT_REGISTRY = new XtPluginRegistry();\n }\n}\n\nexport function xtPluginRegistry (): XtPluginRegistry {\n if (globalThis.XT_REGISTRY==null) {\n initXtPluginRegistry();\n }\n return globalThis.XT_REGISTRY;\n}\n","import { InjectionToken } from \"@angular/core\";\nimport { XtResolver } from \"../resolver/xt-resolver\";\nimport { XtPluginRegistry } from \"../registry/xt-plugin-registry\";\nimport { XtTypeResolver } from \"xt-type\";\nimport { xtPluginRegistry } from '../../globals';\n\nexport const XT_RESOLVER_TOKEN = new InjectionToken<XtResolver> ('Enable providing a custom component resolver.');\n\nexport const XT_TYPE_RESOLVER_TOKEN = new InjectionToken<XtTypeResolver> ('Enable providing a custom type resolver.');\n\nexport const XT_REGISTRY_TOKEN = new InjectionToken<XtPluginRegistry> (\"Injects the Plugin Registry right into your angular component\",\n {\n factory: () => {\n return xtPluginRegistry();\n }\n }\n )\n","import { XtPluginRegistry } from \"../registry/xt-plugin-registry\";\nimport { XtTypeResolver } from \"xt-type\";\nimport { XtContext } from \"../xt-context\";\nimport { XtResolvedComponent } from \"../xt-resolved-component\";\nimport { XtResolver } from \"./xt-resolver\";\n\nexport class XtRegistryResolver implements XtResolver {\n\n registry:XtPluginRegistry;\n typeResolver: XtTypeResolver;\n\n constructor (registry:XtPluginRegistry, typeResolver:XtTypeResolver) {\n this.registry = registry;\n this.typeResolver = typeResolver;\n }\n\n resolve<T>(baseContext: XtContext<T>, subName?:string): XtResolvedComponent | null {\n const ret= this.registry.findComponentsForType (this.typeResolver.findTypeName(baseContext.valueType, subName), baseContext.subValue(subName));\n if (ret!=null && ret.length>0) {\n return XtResolvedComponent.from( ret[0]);\n }\n return null;\n }\n\n}\n","import { computed, inject, Injectable, Type } from '@angular/core';\nimport { XtContext } from '../xt-context';\nimport { XtRegistryResolver } from '../resolver/xt-registry-resolver';\nimport { XT_REGISTRY_TOKEN, XT_RESOLVER_TOKEN, XT_TYPE_RESOLVER_TOKEN } from './xt-tokens';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { ManagedDataHandler, XtTypeHandler, XtTypeInfo, xtTypeManager, XtTypeResolver, XtUpdatableTypeResolver } from 'xt-type';\nimport { XtComponentInfo, XtPluginInfo, XtTypeHandlerInfo } from '../plugin/xt-plugin-info';\nimport { XtResolver } from '../resolver/xt-resolver';\nimport { XtComponent } from '../xt-component';\nimport { loadRemoteModule } from '@angular-architects/native-federation';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class XtResolverService {\n\n pluginRegistry = inject (XT_REGISTRY_TOKEN);\n\n protected baseResolver = inject (XT_RESOLVER_TOKEN, {optional:true});\n protected baseTypeResolver = inject (XT_TYPE_RESOLVER_TOKEN, {optional:true});\n\n resolver:XtResolver;\n typeResolver:XtTypeResolver;\n\n constructor() {\n if (this.baseTypeResolver==null) {\n this.typeResolver = xtTypeManager();\n } else this.typeResolver=this.baseTypeResolver;\n\n if (this.baseResolver==null) {\n this.resolver=new XtRegistryResolver (this.pluginRegistry, this.typeResolver);\n } else this.resolver=this.baseResolver;\n\n }\n\n findBestComponent<T> (baseContext: XtContext<T>, subName?:string) : XtResolvedComponent{\n const ret= this.resolver.resolve(baseContext, subName);\n if (ret!=null) return ret;\n else throw new Error (\"No components found for this context \"+ baseContext.toString());\n }\n\n findTypeOf<T> (baseContext:XtContext<T>, subName?:string, value?:T): string | null | undefined {\n const ret = this.typeResolver.findTypeName (baseContext.valueType, subName, value);\n return ret;\n }\n\n findTypeHandlerOf<T> (baseContext:XtContext<T>, subName?:string, value?:T): {typeName?:string | null, handler?:XtTypeHandler<any>} {\n const ret = this.typeResolver.findTypeHandler(baseContext.valueType, subName, value);\n return ret;\n }\n\n listSubNamesOf<T> (baseContext:XtContext<T>, value?:T): string[] {\n return this.typeResolver.listSubNames(baseContext.valueType, value);\n }\n\n registerPlugin (info:XtPluginInfo) {\n this.pluginRegistry.registerPlugin (info);\n this.registerTypes (info.types, info.typeHandlers);\n }\n\n registerTypes (types:XtTypeInfo|undefined, handlers?:XtTypeHandlerInfo<any>[]): void {\n if ((types !=null) && (this.typeResolver.canUpdate())) {\n for (const newType in types) {\n let handler=this.handlerDefinedFor (newType, handlers);\n if (handler==null) {\n handler = new ManagedDataHandler();\n }\n (this.typeResolver as XtUpdatableTypeResolver).addRootType (newType, types[newType], handler);\n }\n }\n }\n\n protected handlerDefinedFor(newType: string, handlers: XtTypeHandlerInfo<any>[] | undefined):any {\n for (const handler of handlers ?? []) {\n if (handler.typesHandled.includes(newType)) {\n return new handler.handlerClass ();\n }\n }\n return null;\n }\n\n getComponentInfo<T>(type: Type<XtComponent<T>>):XtResolvedComponent {\n return XtResolvedComponent.from(this.pluginRegistry.getComponentInfo (type));\n }\n\n findComponentInfo<T>(type: Type<XtComponent<T>>):XtResolvedComponent|null {\n const ret=this.pluginRegistry.findComponentInfo (type);\n if (ret==null) return null;\n else return XtResolvedComponent.from(ret);\n }\n\n public listComponents = computed<Array<XtComponentInfo<any>>>(() => {\n return this.pluginRegistry.listComponents();\n });\n\n public listPlugins = computed<Array<XtPluginInfo>>(() => {\n return this.pluginRegistry.listPlugins();\n });\n\n /**\n * Dynamically load a register a plugin from the given url\n * The plugin must export at least a Register entrypoint that will be called right after loading..\n * @param url\n * @returns a Promise with the module loaded and already registered.\n */\n loadPlugin (url:URL|string):Promise<any> {\n return loadRemoteModule({\n remoteEntry: url.toString(),\n exposedModule: './Register'\n }).then((module:any) => {\n const pluginName = module.registerPlugin(this);\n // Transform the configured Uris to real urls\n const pluginConfig=this.pluginRegistry.pluginRegistry.get(pluginName);\n if (pluginConfig?.uriLogo!=null) {\n let urlString = url.toString();\n const lastSlash = urlString.lastIndexOf('/');\n urlString = urlString.substring(0, lastSlash+1)+pluginConfig?.uriLogo;\n pluginConfig.uriLogo=urlString;\n }\n return module;\n });\n\n }\n\n}\n","import { OutputEmitterRef } from '@angular/core';\nimport { XtComponentOutput } from '../xt-component';\n\nexport class XtBaseOutput implements XtComponentOutput {\n valueSelected: OutputEmitterRef<any> | undefined;\n\n}\n","import {\n AfterViewInit,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n Signal,\n Type,\n viewChild\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { XtComponent, XtComponentOutput, XtInputType, XtOutputType } from '../xt-component';\nimport { XtBaseContext, XtContext, XtDisplayMode } from '../xt-context';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * Offers a nice and easy to dynamically embed a component.\n * You set the type, the display mode, and either the value or the formgroup & subName to use.\n * XtRender will then instantiate the component, bind it to the value or form, and display it.\n */\n@Component({\n selector: 'xt-render',\n standalone: true,\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule\n ],\n templateUrl: './xt-render.component.html',\n styleUrl: './xt-render.component.css'\n})\nexport class XtRenderComponent<T> implements AfterViewInit {\n resolverService = inject(XtResolverService);\n\n componentType = input<Type<XtComponent<T>>> ();\n displayMode = input.required<XtDisplayMode> ();\n valueType = input<string> ();\n\n // Either we set the value directly\n value= model<T> ();\n // Or we are inside a Form\n formGroup=input<FormGroup>();\n subName= input<string>();\n\n outputsObject = new XtBaseOutput();\n\n inputs = input<XtBaseInput>();\n outputs = output<XtComponentOutput>();\n\n outlet = viewChild.required(NgComponentOutlet);\n\n constructor() {\n\n }\n\n\n context: Signal<XtContext<any>> = computed(() => {\n let form = this.formGroup();\n\n const ret= new XtBaseContext<any>(this.displayMode(), this.subName(), form);\n ret.valueType=this.valueType();\n if (!ret.isInForm()) {\n const subName = this.subName();\n const value = this.value();\n if ( (subName == null) || (value == null)) {\n ret.setDisplayValue(value);\n } else {\n ret.setDisplayValue(value[subName as keyof typeof value]);\n }\n }\n return ret as XtContext<T>;\n });\n\n type:Signal<Type<XtComponent<T>>|null> = computed( () => {\n //console.debug(\"Calculating type in XtRenderSubComponent\");\n\n let type=this.componentType();\n let compFound:XtResolvedComponent|null = null;\n if (type==null) {\n //console.debug('XtRender, using component set '+ type);\n //compFound = this.resolverService.findComponentInfo (type);\n //} else {\n compFound= this.resolverService.findBestComponent(this.context());\n //console.debug('XtRender, found component ',compFound.componentName);\n type= compFound.componentClass;\n }\n\n return type??null;\n });\n\n /**\n * Transfers the input and outputs from the host to the rendered component\n */\n ngAfterViewInit() {\n const instance=this.outlet().componentInstance as XtComponent;\n if (instance?.outputsObject!=null) {\n let hasOneOutput = false;\n for (const key of Object.keys(instance.outputsObject) as XtOutputType[] ) {\n this.outputsObject[key] = instance.outputsObject[key];\n hasOneOutput=true;\n }\n if (hasOneOutput) {\n this.outputs.emit(this.outputsObject);\n }\n }\n const inputs = this.inputs();\n if ((inputs!=null) && (instance?.inputsObject!=null)) {\n for (const key of Object.keys(inputs) as XtInputType[] ) {\n instance.inputsObject[key] = inputs[key];\n }\n\n }\n\n }\n\n}\n","<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n","import { AfterViewInit, Component, computed, inject, input, output, Signal, Type, viewChild } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { XtContext } from '../xt-context';\nimport { XtComponent, XtComponentInput, XtComponentOutput, XtInputType, XtOutputType } from '../xt-component';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtResolvedComponent } from '../xt-resolved-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * Dynamically render a component that will display the given subValue.\n * To be used only inside an XtSimpleComponent or XtCompositeComponent\n */\n@Component({\n selector: 'xt-render-sub',\n standalone: true,\n imports: [\n NgComponentOutlet,\n ReactiveFormsModule\n ],\n templateUrl: './xt-render-sub.component.html',\n styleUrl: './xt-render-sub.component.css'\n})\nexport class XtRenderSubComponent<T> implements AfterViewInit {\n context = input.required<XtContext<T>> ();\n componentType = input<Type<XtComponent<T>>> ();\n\n outputsObject = new XtBaseOutput();\n\n inputs = input<XtBaseInput>();\n outputs = output<XtComponentOutput>();\n\n outlet = viewChild.required(NgComponentOutlet);\n\n resolverService = inject(XtResolverService);\n\n type:Signal<Type<XtComponent<T>>|null> = computed( () => {\n //console.debug(\"Calculating type in XtRenderSubComponent\");\n\n let type=this.componentType();\n let compFound:XtResolvedComponent|null = null;\n if (type==null) {\n //console.debug('XtRender, using component set '+ type);\n //compFound = this.resolverService.findComponentInfo (type);\n //} else {\n compFound= this.resolverService.findBestComponent(this.context());\n //console.debug('XtRender, found component ',compFound.componentName);\n type= compFound.componentClass;\n }\n\n return type??null;\n\n });\n\n /**\n * Transfers the input and outputs from the host to the rendered component\n */\n ngAfterViewInit() {\n const instance=this.outlet().componentInstance as XtComponent;\n if (instance?.outputsObject!=null) {\n let hasOneOutput = false;\n for (const key of Object.keys(instance.outputsObject) as XtOutputType[] ) {\n this.outputsObject[key] = instance.outputsObject[key];\n hasOneOutput=true;\n }\n if (hasOneOutput) {\n this.outputs.emit(this.outputsObject);\n }\n }\n const inputs = this.inputs();\n if ((inputs!=null) && (instance?.inputsObject!=null)) {\n for (const key of Object.keys(inputs) as XtInputType[] ) {\n instance.inputsObject[key] = inputs[key];\n }\n\n }\n\n\n }\n\n}\n","{{componentType()}}\n<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n","import { InputSignal } from '@angular/core';\nimport { XtComponentInput } from '../xt-component';\n\nexport class XtBaseInput implements XtComponentInput {\n valueSelected: InputSignal<any>|undefined;\n}\n","import { Component, computed, input, OnInit, output } from '@angular/core';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport { XtContext } from '../xt-context';\nimport { XtComponent, XtComponentOutput } from '../xt-component';\nimport { XtBaseOutput } from '../output/xt-base-output';\nimport { XtBaseInput } from '../output/xt-base-input';\n\n/**\n * An XtSimpleComponent just displays the given value or element in a form.\n * If you need to dynamically embed other XtComponents to display sub elements, then please use the XtCompositeComponent\n */\n@Component({\n standalone: true,\n imports: [],\n template: ''\n})\nexport class XtSimpleComponent<T = any> implements XtComponent<T>, OnInit{\n context = input.required<XtContext<T>>();\n outputsObject = new XtBaseOutput();\n inputsObject = new XtBaseInput();\n outputs=output<XtComponentOutput>();\n\n isInForm = computed<boolean> ( () => {\n return this.context()?.isInForm()??false;\n });\n\n formControlNameIfAny = computed<string | undefined> (() => {\n return this.context()?.subName;\n });\n\n formGroupIfAny = computed<FormGroup | undefined> (() => {\n return this.context()?.formGroup();\n })\n\n formGroup = computed<FormGroup> (() => {\n const ret= this.context()?.formGroup();\n if (ret==null) throw new Error ('No form groups in this component of type '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Returns the component form name, which is for now the subName\n */\n componentNameInForm=computed<string> ( () => {\n return this.safelyGetSubName();\n });\n\n constructor() {\n }\n\n ngOnInit(): void {\n this.setupInputOutput();\n if (Object.keys(this.outputsObject).length > 0) {\n // At least one output has been defined\n this.outputs.emit(this.outputsObject);\n }\n }\n\n\n manageFormControl<T> (ctrlName:string): AbstractControl<T>|undefined {\n const formGroup = this.formGroupIfAny();\n if (formGroup==null) {\n // You can call manageFormControl even in not a form, it just get ignored\n //console.debug('FormGroup is undefined when declaring managedcontrol '+ctrlName);\n return undefined;\n } else {\n let ctrl=formGroup.get(ctrlName);\n if (ctrl==null) {\n ctrl = new FormControl<T|undefined>(undefined);\n formGroup.setControl(ctrlName, ctrl);\n }\n return ctrl;\n }\n }\n\n safelyGetSubName = computed<string>(() => {\n const ret = this.context()?.subName;\n if (ret==null) throw new Error ('This component has no name in the form '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Returns the form control name and create a form control behind the scene\n */\n formControlName = computed<string> (() => {\n const ret = this.safelyGetSubName();\n\n this.manageFormControl<any>(ret); // Creates the form control\n return ret;\n });\n\n formControl = computed<AbstractControl<any>> (() => {\n const subName = this.safelyGetSubName();\n const formControl= this.manageFormControl(subName);\n if (formControl==null) throw new Error (\"Calling formControl for subName \"+subName+\" when none exist.\");\n return formControl;\n});\n\n componentDescriptor (): string {\n return \"Component with type \"+this.constructor.name+\" with context \"+this.context().toString();\n }\n\n getValue= computed (()=> {\n return this.context().value();\n });\n\n displayValue = computed (() => {\n return this.context().displayValue();\n });\n\n /**\n * This is where components can assign their output() and input() into the XtComponent inputs and outputs member\n * @protected\n */\n protected setupInputOutput () {\n // Nothing to do here\n }\n}\n","import { Component, computed, inject } from '@angular/core';\nimport { XtSimpleComponent } from '../xt-simple/xt-simple.component';\nimport { FormGroup } from '@angular/forms';\nimport { XtResolverService } from '../angular/xt-resolver.service';\nimport { XtContext } from '../xt-context';\n\n@Component({\n standalone: true,\n imports: [],\n template: '',\n styleUrl: './xt-composite.component.css'\n})\nexport class XtCompositeComponent<T = any> extends XtSimpleComponent<T> {\n\n resolverService = inject(XtResolverService);\n\n override formGroupIfAny = computed<FormGroup | undefined> (() => {\n const context = this.context();\n if (context==null) return undefined;\n let ret= context.localFormGroup;\n if ((ret==null) && (context.parentFormGroup!=null) && (context.subName!=null)) {\n if (context.parentFormGroup.contains(context.subName)) {\n context.localFormGroup = context.parentFormGroup.get(context.subName) as FormGroup;\n } else {\n context.localFormGroup= new FormGroup ({});\n context.parentFormGroup.addControl(context.subName, context.localFormGroup);\n }\n ret=context.localFormGroup;\n }\n return ret;\n })\n\n /**\n * We need to create a new form group to manage the sub elements.\n */\n override formGroup = computed<FormGroup> (() => {\n const ret= this.formGroupIfAny();\n if (ret==null) throw new Error ('No form groups in this component of type '+this.componentDescriptor());\n return ret;\n });\n\n /**\n * Helper function to calculate the sub context\n * @param subName\n * @param subType\n */\n subContext (subName:string, subType?:string):XtContext<any> {\n this.formGroupIfAny(); // Ensure the context is properly initialized\n return this.context().subContext(subName, subType, this.resolverService.typeResolver);\n }\n\n}\n","import { Injectable } from \"@angular/core\";\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageHandler {\n errorOccurred (error:any, errorMsg?:string) {\n console.error(errorMsg, error);\n }\n\n warningOccurred (warningMsg?:string) {\n console.warn(warningMsg);\n }\n\n}\n","/**\n * Wrapper around xt-store manager: You can use it to check if xt-store is included or not, and decide what to do\n *\n * This allow plugins to potentially use xt-store whenever included in the applications running the plugin\n */\nimport { Observable } from 'rxjs';\n\nexport class StoreSupport {\n\n protected static testStoreManager?: IStoreManager;\n\n static isStoreManagerAvailable () {\n if (this.testStoreManager!=null) return true;\n return ((globalThis as any).xtStoreManager!=undefined);\n }\n\n static getStoreManager (): IStoreManager {\n return this.testStoreManager??((globalThis as any).xtStoreManager());\n }\n\n static setTestStoreManager (testStoreManager:IStoreManager): void {\n StoreSupport.testStoreManager = testStoreManager;\n }\n}\n\n/**\n * Interface definition for xt-store component.\n * We re-define them here to avoid importing xt-store in all plugins that don't need it.\n */\n\n\nexport interface IDataTransformer<T> {\n /**\n * Enable transformation of data right after it has been loaded from the store\n * @param source\n */\n postLoadingTransformation (source:any[]): T[];\n\n}\n\nexport interface IDocumentInfo {\n documentName: string;\n isUrl: boolean;\n documentId?: string;\n}\n\nexport interface IStoreProvider<T> {\n storeEntity( name:string, entity: T): Promise<T>;\n\n /**\n * Rejects the promise if the entity is not found\n * @param name\n * @param key\n */\n safeLoadEntity( name: string, key: any): Promise<T>;\n loadEntity( name: string, key: any): Promise<T|undefined>;\n\n deleteEntity(name:string, key: any): Promise<boolean>;\n\n searchEntities(\n name: string,\n ...criteria: any[]\n ): Observable<Array<T>>;\n\n searchAndPrepareEntities(\n name: string,\n sort?:any,\n groupBy?:any,\n transformer?: IDataTransformer<T>,\n ...criteria: any[]\n ): Observable<any>;\n\n canStoreDocument(): boolean;\n\n /**\n * Upload one document to a server store and returns the url or the id needed to retrieve them.\n * @param toStore\n * @param position\n */\n storeDocument(\n toStore: File\n ): Promise<IDocumentInfo>;\n\n /**\n * Upload documents to a server store and returns the url or the id needed to retrieve them.\n * @param toStore\n * @param position\n */\n storeDocuments(\n toStore: File[]\n ): Observable<IDocumentInfo>;\n\n\n}\n\nexport interface IStoreManager {\n getProvider<T=never>(name?: string): IStoreProvider<T> | undefined;\n getProviderSafe<T=never>(name?: string): IStoreProvider<T>;\n\n getDefaultProvider<T=never>(): IStoreProvider<T> | undefined;\n\n getDefaultProviderSafe<T=never>(): IStoreProvider<T>;\n\n}\n","import { FormControl, FormGroup } from '@angular/forms';\nimport { isPrimitive } from 'xt-type';\n\nexport function updateFormGroupWithValue(formGroup: FormGroup, value:{[key:string]:any}) {\n\n const toDelete = new Set<string>(Object.keys(formGroup.controls));\n\n for (const valueKey in value) {\n const primitive = isPrimitive(value[valueKey]);\n if (toDelete.delete(valueKey)) {\n // Already a control\n const oldControl = formGroup.get(valueKey)!;\n // Is it the right type ?\n if (primitive) {\n // Must be an FormControl2\n if ((oldControl as any).controls === undefined) {\n // It's ok, just set the value\n oldControl.setValue(value[valueKey]);\n } else {\n formGroup.setControl(valueKey, new FormControl(value[valueKey]));\n }\n } else {\n // Must be a FormGroup\n if ((oldControl as any).controls === undefined) {\n const newFormGroup = new FormGroup({});\n formGroup.setControl(valueKey, newFormGroup);\n updateFormGroupWithValue(newFormGroup, value[valueKey]);\n } else {\n // It was already a formgroup, so just update it\n updateFormGroupWithValue(oldControl as FormGroup, value[valueKey]);\n }\n }\n } else {\n if (primitive) {\n formGroup.addControl(valueKey, new FormControl(value[valueKey]));\n } else {\n const newFormGroup = new FormGroup({});\n formGroup.addControl(valueKey, newFormGroup);\n updateFormGroupWithValue(newFormGroup, value[valueKey]);\n }\n }\n }\n\n // Delete controls that are no more used\n for (const delName of toDelete) {\n formGroup.removeControl(delName);\n }\n}\n","import { XtResolverService } from '../angular/xt-resolver.service';\nimport { inject } from '@angular/core';\n\nexport class XtUnitTestHelper {\n/* public static registerComponent<T> (name:string, compClass:T, type:string){\n this.resolverService.pluginRegistry.registerComponent({\n componentName:name,\n componentClass: compClass,\n typesHandled: [type]\n });\n }\n*/\n}\n","import { Component, computed, inject, input, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AbstractControl, FormArray, FormBuilder, FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { XtRenderComponent } from '../render/xt-render.component';\nimport { XtComponent } from '../xt-component';\nimport { XtBaseContext, XtDisplayMode } from '../xt-context';\nimport { XtRenderSubComponent } from '../render/xt-render-sub.component';\nimport { XtResolverService } from '../angular/xt-resolver.service';\n\n/**\n * Component that can be used to bootstrap tests.\n * Just set the value and component type, and it will be injected in your test.\n */\n@Component({\n selector:'test-host',\n standalone:true,\n imports: [CommonModule, XtRenderComponent],\n template: '<h1>Test Simple Component</h1> <xt-render [componentType]=\"type()\" [displayMode]=\"displayMode()\" [value]=\"value()\" ></xt-render> '\n\n})\nexport class HostTestSimpleComponent {\n type = input.required<Type<XtComponent<any>>>();\n displayMode = input<XtDisplayMode> ('FULL_VIEW');\n value = input<any|undefined> (undefined);\n\n}\n\n/**\n * Same as HostTestSimpleComponent but it includes everything in a form.\n * Just set the component type, the formGroup and the component name, and your component will be run.\n * You can as well easily read and set the value.\n */\n@Component({\n selector:'test-form-host',\n standalone:true,\n imports: [CommonModule, XtRenderComponent, ReactiveFormsModule],\n template: '<h1>Test Form Component</h1> <form [formGroup]=\"computedFormGroup()\"> <xt-render [componentType]=\"type()\" displayMode=\"FULL_EDITABLE\" [subName]=\"controlName()\" [formGroup]=\"computedFormGroup()\"></xt-render></form>'\n})\nexport class HostTestFormComponent {\n builder = inject(FormBuilder);\n type = input.required<Type<XtComponent<any>>>();\n controlName = input.required<string>();\n // You can send the description to be used in a FormBuilder to create the formgroup;\n formDescription = input<any> ({ });\n // Or set the FormGroup directly\n formGroup= input<FormGroup>();\n\n createdFormGroup: FormGroup|null = null;\n\n computedFormGroup () {\n if( this.createdFormGroup==null) {\n const formGroup=this.formGroup();\n this.createdFormGroup=formGroup??generateFormGroup(this.formDescription());\n }\n return this.createdFormGroup;\n }\n\n patchValue (newVal:any) {\n const patch:{[key:string]:any}={};\n patch[this.controlName()]=newVal;\n if (this.createdFormGroup!=null)\n this.createdFormGroup.patchValue(patch);\n else throw new Error (\"FormGroup not yet created. Did you set formGroup or formDescription property ?\");\n }\n\n retrieveValue (): any {\n if (this.createdFormGroup!=null)\n return this.createdFormGroup.value[this.controlName()];\n else throw new Error (\"FormGroup not yet created. Did you set formGroup or formDescription property ?\");\n }\n}\n\n/**\n * Component that can be used to test your component based on the type it handles\n * Just set the type hierarchy to register, the value, and it will instantiate the right component in your plugin\n */\n@Component({\n selector:'test-typed-host',\n standalone:true,\n imports: [CommonModule, XtRenderSubComponent],\n template: '<h1>Test Typed Component</h1> <xt-render-sub [context]=\"context()\" ></xt-render-sub> '\n\n})\nexport class HostTestTypedComponent {\n\n displayMode = input<XtDisplayMode> ('FULL_VIEW');\n value = input<any> ();\n valueType = input<string> ();\n\n context = computed( () => {\n const ret = new XtBaseContext(this.displayMode());\n\n ret.valueType=this.valueType();\n ret.setDisplayValue(this.value());\n return ret;\n });\n}\n\n/**\n * Same as HostTestSimpleComponent but it includes everything in a form.\n * Just set the component type, the formGroup and the component name, and your component will be run.\n * You can as well easily read and set the value.\n */\n@Component({\n selector:'test-typed-form-host',\n standalone:true,\n imports: [CommonModule, ReactiveFormsModule, XtRenderSubComponent],\n template: '<h1>Test Typed Form Component</h1> <form [formGroup]=\"parentFormGroup\"> <xt-render-sub [context]=\"subContext()\"></xt-render-sub></form>'\n})\nexport class HostTestTypedFormComponent {\n builder = inject(FormBuilder);\n resolver = inject(XtResolverService);\n\n static readonly CONTROL_NAME='ForTest';\n\n valueType = input<string> ();\n controlName = input<string>();\n // You can send the description to be used in a FormBuilder to create the formgroup;\n formDescription = input<any> ({ });\n // Or set the FormGroup directly\n formGroup= input<FormGroup>();\n\n parentFormGroup = this.builder.group<{[keys:string]: AbstractControl}>({});\n\n createdFormGroup: FormGroup|null = null;\n\n computedFormGroup = computed(() =>{\n if( this.createdFormGroup==null) {\n const formGroup=this.formGroup();\n this.createdFormGroup=formGroup??generateFormGroup(this.formDescription());\n this.parentFormGroup.addControl(this.controlName()??HostTestTypedFormComponent.CONTROL_NAME, this.createdFormGroup);\n }\n return this.createdFormGroup;\n });\n\n subContext = computed( () => {\n this.computedFormGroup(); // Make sure the subformgroups are created\n\n const ctrlName = this.controlName();\n let ret:XtBaseContext<any>|null = null;\n if (ctrlName==null){\n ret = new XtBaseContext('FULL_EDITABLE', HostTestTypedFormComponent.CONTROL_NAME, this.parentFormGroup);\n }\n else{\n ret = new XtBaseContext('FULL_EDITABLE', ctrlName, this.createdFormGroup!);\n }\n ret.valueType=this.valueType();\n\n return ret;\n });\n\n patchValue (controlName:string, newVal:any) {\n const patch:{[key:string]:any}={};\n patch[controlName]=newVal;\n this.computedFormGroup().patchValue(patch);\n }\n\n retrieveValue (controlName:string): any {\n return this.computedFormGroup().value[controlName];\n }\n\n}\n\nfunction generateFormGroup(formDescription: any):FormGroup {\n if (typeof formDescription != 'object') {\n throw new Error ('Form Description should be an object of values');\n }\n return generateFormControl(formDescription) as FormGroup;\n}\n\nfunction generateFormControl(formDescription: any): AbstractControl {\n\n if (formDescription==null) {\n return new FormControl(formDescription);\n }\n\n if (Array.isArray(formDescription)){\n const retArray = new FormArray<AbstractControl>([]);\n for (const val of formDescription) {\n retArray.push(generateFormControl(val), {emitEvent:false});\n }\n return retArray;\n }\n\n if ((typeof formDescription=='object')&&(!(formDescription instanceof Date))) {\n const retObject=new FormGroup({});\n for (const key of Object.keys(formDescription)) {\n retObject.addControl(key, generateFormControl(formDescription[key]));\n }\n return retObject;\n }\n return new FormControl(formDescription);\n}\n","import { Observable } from 'rxjs';\nimport { IDataTransformer, IDocumentInfo, IStoreManager, IStoreProvider, StoreSupport } from '../store/store-support';\n\n/**\n * A very light and not 100% compatible storemanager in case you are not using xt-store.\n * It can emulate XtStoreManager to some extends for doing some tests\n */\nexport class StoreTestHelper {\n public static ensureTestProviderOnly() {\n StoreSupport.setTestStoreManager(new TestStoreManager());\n }\n}\n\nexport class TestStoreManager implements IStoreManager {\n protected defaultProvider= new TestStoreProvider();\n\n getProvider<T = never>(name?: string): IStoreProvider<T> | undefined {\n return this.defaultProvider;\n }\n\n getProviderSafe<T = never>(name?: string): IStoreProvider<T> {\n return this.defaultProvider;\n }\n\n getDefaultProvider<T = never>(): IStoreProvider<T> | undefined {\n return this.defaultProvider;\n }\n\n getDefaultProviderSafe<T = never>(): IStoreProvider<T> {\n return this.defaultProvider;\n }\n\n}\n\nexport class TestStoreProvider<T = never> implements IStoreProvider<T> {\n protected data = new Map<string, Map<string,any>> ();\n\n protected getOrCreateArray (name: string): Map<string,any> {\n let ret=this.data.get(name);\n if (ret==null) {\n ret = new Map<string, any>();\n this.data.set(name, ret);\n }\n return ret;\n }\n\n protected extractKey (value: any):string {\n if (value.__id!=null) return value.__id;\n else if (value.id!=null) return value.id;\n else return value.toString()\n }\n\n storeEntity(name: string, entity: T): Promise<T> {\n this.getOrCreateArray(name).set(this.extractKey(entity), entity);\n return Promise.resolve(entity);\n }\n\n safeLoadEntity(name: string, key: any): Promise<T> {\n const ret = this.getOrCreateArray(name).get(key);\n if (ret==null) {\n throw new Error (\"No entity named \"+name+\" with key \"+key);\n }\n return Promise.resolve(ret);\n }\n\n loadEntity(name: string, key: any): Promise<T | undefined> {\n return Promise.resolve(this.getOrCreateArray(name).get(key));\n }\n\n deleteEntity(name: string, key: any): Promise<boolean> {\n return Promise.resolve( this.getOrCreateArray(name).delete(key));\n }\n\n searchEntities(name: string, ...criteria: any[]): Observable<T[]> {\n throw new Error('Method not implemented.');\n }\n searchAndPrepareEntities(name: string, sort?: any, groupBy?: any, transformer?: IDataTransformer<T> | undefined, ...criteria: any[]): Observable<any> {\n throw new Error('Method not implemented.');\n }\n canStoreDocument(): boolean {\n return true;\n }\n storeDocument(toStore: File): Promise<IDocumentInfo> {\n const ret = new TestDocumentInfo(toStore.name, true,URL.createObjectURL(toStore));\n return Promise.resolve(ret);\n }\n\n storeDocuments(toStore: File[]): Observable<IDocumentInfo> {\n throw new Error('Method not implemented.');\n }\n\n}\n\nexport class TestDocumentInfo implements IDocumentInfo {\n documentName: string;\n isUrl: boolean;\n documentId?: string;\n\n constructor(documentName: string, isUrl: boolean,documentId?: string) {\n this.documentId = documentId;\n this.documentName = documentName;\n this.isUrl = isUrl;\n }\n}\n","/*\n * Public API Surface of xt-components\n */\n\nexport * from './lib/xt-component';\nexport * from './lib/xt-context';\nexport * from './lib/xt-resolved-component';\nexport * from './lib/resolver/xt-resolver';\nexport * from './lib/registry/xt-plugin-registry'\nexport * from './lib/plugin/xt-plugin-info'\nexport * from './globals';\n\nexport * from './lib/angular/xt-tokens';\nexport * from './lib/angular/xt-resolver.service';\n\nexport * from './lib/render/xt-render.component';\nexport * from './lib/render/xt-render-sub.component';\nexport * from './lib/xt-simple/xt-simple.component';\nexport * from './lib/xt-composite/xt-composite.component';\n\nexport * from './lib/angular/message-handler';\nexport * from './lib/store/store-support';\nexport * from './lib/type/type-helper';\nexport * from './lib/test/xt-unit-test-helper';\nexport * from './lib/test/xt-test-helper-components';\nexport * from './lib/test/store-test-helper';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xt-components",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "^18.1.2",
6
6
  "@angular/common": "^18.1.2",