@veloceapps/sdk 6.0.0-5 → 6.0.0-7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"veloceapps-sdk-cms.js","sources":["../../../../libs/sdk/cms/cms.actions.ts","../../../../libs/sdk/cms/injection-tokens.ts","../../../../libs/sdk/cms/engine/models/entity.ts","../../../../libs/sdk/cms/components/element.component.ts","../../../../libs/sdk/cms/utils/path.utils.ts","../../../../libs/sdk/cms/services/dynamic-module.service.ts","../../../../libs/sdk/cms/services/io-provider.service.ts","../../../../libs/sdk/cms/services/templates.service.ts","../../../../libs/sdk/cms/plugins/io.plugin.ts","../../../../libs/sdk/cms/plugins/script.plugin.ts","../../../../libs/sdk/cms/cms.elements.ts","../../../../libs/sdk/cms/utils/element.utils.ts","../../../../libs/sdk/cms/services/element-context.service.ts","../../../../libs/sdk/cms/components/element-renderer/element-renderer.component.ts","../../../../libs/sdk/cms/components/element-renderer/element-renderer.component.html","../../../../libs/sdk/cms/components/element-children/element-children.component.ts","../../../../libs/sdk/cms/components/element-children/element-children.component.html","../../../../libs/sdk/cms/directives/custom-template.directive.ts","../../../../libs/sdk/cms/modules/federated/default-options.ts","../../../../libs/sdk/cms/modules/federated/federated.utils.ts","../../../../libs/sdk/cms/modules/federated/federated.component.ts","../../../../libs/sdk/cms/modules/federated/federated.component.html","../../../../libs/sdk/cms/modules/federated/federated.module.ts","../../../../libs/sdk/cms/plugins/configuration.plugin.ts","../../../../libs/sdk/cms/cms.default.ts","../../../../libs/sdk/cms/services/integration.state.ts","../../../../libs/sdk/cms/vendor-map.ts","../../../../libs/sdk/cms/utils/elements-resolver.ts","../../../../libs/sdk/cms/services/launcher.service.ts","../../../../libs/sdk/cms/components/preview/preview.component.ts","../../../../libs/sdk/cms/components/preview/preview.component.html","../../../../libs/sdk/cms/components/element-renderer/element-renderer.module.ts","../../../../libs/sdk/cms/components/element-children/element-children.module.ts","../../../../libs/sdk/cms/components/preview/preview.module.ts","../../../../libs/sdk/cms/decorators/element.decorator.ts","../../../../libs/sdk/cms/launcher.module.ts","../../../../libs/sdk/cms/veloceapps-sdk-cms.ts"],"sourcesContent":["import { IntegrationAction, Metric } from './types';\n\nexport enum FlowAction {\n FLOW_CONFIGURE_PRODUCT = 'FLOW_CONFIGURE_PRODUCT',\n FLOW_NAVIGATE_BACK = 'FLOW_NAVIGATE_BACK',\n FLOW_NAVIGATE_TO_CATALOG = 'FLOW_NAVIGATE_TO_CATALOG',\n FLOW_APPLY_PRODUCT_CONFIGURATION = 'FLOW_APPLY_PRODUCT_CONFIGURATION',\n FLOW_OPEN_DOC_GEN = 'FLOW_OPEN_DOC_GEN',\n FLOW_CLOSE_DOC_GEN = 'FLOW_CLOSE_DOC_GEN',\n FLOW_SWITCH_OBJECT = 'FLOW_SWITCH_OBJECT',\n REMOTE_APPLY = 'REMOTE_APPLY',\n REMOTE_CANCEL = 'REMOTE_CANCEL',\n SET_DEFAULT_METRICS = 'SET_DEFAULT_METRICS',\n}\n\nexport const ConfigureProductAction = ({\n lineItemId,\n productId,\n}: {\n lineItemId?: string;\n productId?: string;\n}): IntegrationAction => ({\n type: FlowAction.FLOW_CONFIGURE_PRODUCT,\n payload: { lineItemId, productId },\n});\n\nexport const NavigateBackAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_NAVIGATE_BACK,\n});\n\nexport const NavigateToCatalogAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_NAVIGATE_TO_CATALOG,\n});\n\nexport const ApplyProductConfigurationAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION,\n});\n\nexport const OpenDocGenAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_OPEN_DOC_GEN,\n});\n\nexport const CloseDocGenAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_CLOSE_DOC_GEN,\n});\n\nexport const RemoteApplyAction = (): IntegrationAction => ({\n type: FlowAction.REMOTE_APPLY,\n});\n\nexport const RemoteCancelAction = (): IntegrationAction => ({\n type: FlowAction.REMOTE_CANCEL,\n});\n\nexport const SwitchObjectAction = (payload: { id: string }): IntegrationAction => ({\n type: FlowAction.FLOW_SWITCH_OBJECT,\n payload,\n});\n\nexport const SetDefaultMetrics = (metrics: Metric[]): IntegrationAction => ({\n type: FlowAction.SET_DEFAULT_METRICS,\n payload: { metrics },\n});\n","import { InjectionToken } from '@angular/core';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { Dictionary } from 'lodash';\nimport { Plugin } from './engine/models/plugin';\nimport { ElementConfig, ElementMetadata } from './types/common.types';\n\nexport const DEFAULT_PLUGINS_TOKEN = new InjectionToken<typeof Plugin[]>('DEFAULT_PLUGINS_TOKEN');\n\nexport const UI_DEFINITION_METADATA = new InjectionToken<UIDefinitionMetadata>('UI_DEFINITION_METADATA_TOKEN');\nexport const ELEMENT_METADATA = new InjectionToken<ElementMetadata>('ELEMENT_METADATA_TOKEN');\nexport const SHARED_ELEMENT_METADATA = new InjectionToken<ElementMetadata>('SHARED_ELEMENT_METADATA_TOKEN');\nexport const ELEMENT_CONFIG = new InjectionToken<ElementConfig>('ELEMENT_CONFIG_TOKEN');\nexport const VENDOR_MAP = new InjectionToken<Dictionary<any>>('VENDOR_MAP');\n","import { Injector } from '@angular/core';\nimport { DEFAULT_PLUGINS_TOKEN, ELEMENT_CONFIG } from '../../injection-tokens';\nimport { ElementConfig } from '../../types/common.types';\nimport { Plugin } from './plugin';\n\nexport class Entity {\n protected readonly plugins: Plugin[] = [];\n\n private config: ElementConfig;\n private defaultPlugins: typeof Plugin[];\n\n constructor(public injector: Injector) {\n this.config = this.injector.get(ELEMENT_CONFIG);\n this.defaultPlugins = this.injector.get(DEFAULT_PLUGINS_TOKEN);\n }\n\n public initPlugins(): void {\n this.defaultPlugins.forEach(plugin => this.registerPlugin(new plugin(this)));\n this.config.plugins?.forEach(plugin => this.registerPlugin(new plugin(this)));\n }\n\n public registerPlugin(plugin: Plugin): void {\n this.plugins.push(plugin);\n }\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n Inject,\n Injector,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Entity } from '../engine/models/entity';\nimport { IPluginComponent } from './plugin.component';\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n jit: true,\n})\nexport class ElementComponent\n extends Entity\n implements OnChanges, OnInit, DoCheck, AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy\n{\n public readonly model$ = new BehaviorSubject<any | undefined>(undefined);\n public readonly plugins!: IPluginComponent[];\n\n constructor(@Inject(Injector) public injector: Injector) {\n super(injector);\n\n super.initPlugins();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.plugins.forEach(plugin => plugin.ngOnChanges?.(changes));\n }\n\n public ngOnInit(): void {\n this.plugins.forEach(plugin => plugin.ngOnInit?.());\n }\n\n public ngDoCheck(): void {\n this.plugins.forEach(plugin => plugin.ngDoCheck?.());\n }\n\n public ngAfterContentInit(): void {\n this.plugins.forEach(plugin => plugin.ngAfterContentInit?.());\n }\n\n public ngAfterViewInit(): void {\n this.plugins.forEach(plugin => plugin.ngAfterViewInit?.());\n }\n\n public ngAfterViewChecked(): void {\n this.plugins.forEach(plugin => plugin.ngAfterViewChecked?.());\n }\n\n public ngOnDestroy(): void {\n this.plugins.forEach(plugin => plugin.ngOnDestroy?.());\n }\n}\n","import { compact } from 'lodash';\nimport { ElementMetadata, ElementPath, PathBlock } from '../types';\n\nexport const parseBoundPath = (path: string): PathBlock[] => {\n const regexp = new RegExp(`(?:\\\\/)(?:\\\\w+)(?:\\\\/)(?:ports|attributes)(?:\\\\/)(?:\\\\w+)|(?:\\\\/)(?:\\\\w+)`, 'g');\n const blocks: PathBlock[] =\n path.match(regexp)?.map(match => {\n const [type, property, name] = compact(match.split('/'));\n return { type, property, name };\n }) ?? [];\n\n return blocks;\n};\n\nexport const parsePath = (path: string): ElementPath => {\n const segments = path.split('/');\n let module: string | undefined;\n let variable: string | undefined;\n\n if (segments[0]?.startsWith('@')) {\n module = segments.shift()?.substring(1);\n }\n\n if (segments[segments.length - 1]?.[0] === ':') {\n variable = segments.pop()?.substring(1);\n }\n\n const isAbsolute = !segments[0];\n const nonEmptySegments = segments.filter(Boolean);\n\n if (!isAbsolute && nonEmptySegments[0] === '.') {\n nonEmptySegments.shift();\n }\n\n return {\n isAbsolute,\n segments: nonEmptySegments,\n module,\n variable,\n };\n};\n\nexport const findElementByModule = (\n elements: ElementMetadata[],\n module: string,\n elementName: string,\n): ElementMetadata | undefined => {\n for (const el of elements) {\n if (el.module === module && el.name === elementName) {\n return el;\n }\n\n const child = findElementByModule(el.children, module, elementName);\n if (child) {\n return child;\n }\n }\n\n return;\n};\n\nexport const getAbsolutePath = (\n elements: ElementMetadata[],\n subject: ElementMetadata,\n path: ElementPath,\n): string | undefined => {\n if (path.module) {\n return findElementByModule(elements, path.module, path.segments[0])?.path;\n }\n\n const subjectSegments = subject.path?.split('/') ?? [];\n const segments = [...path.segments];\n\n if (path.isAbsolute) {\n return segments.join('/');\n }\n\n while (segments.length) {\n const segment = segments.shift();\n\n if (segment === '..') {\n subjectSegments.pop();\n } else if (segment) {\n subjectSegments.push(segment);\n }\n }\n\n return subjectSegments.join('/');\n};\n","import { ComponentFactory, Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class DynamicModuleService {\n private _elementsTree: ElementMetadata[] = [];\n private _componentFactories: ComponentFactory<any>[] = [];\n\n public set componentFactories(data: ComponentFactory<any>[]) {\n this._componentFactories = data;\n }\n\n public get componentFactories(): ComponentFactory<any>[] {\n return this._componentFactories;\n }\n\n public getComponentFactory(element: ElementMetadata): ComponentFactory<any> | undefined {\n return this.componentFactories.find(f => (f.componentType as any).path === element.path);\n }\n\n public get elementsTree(): ElementMetadata[] {\n return this._elementsTree;\n }\n\n public set elementsTree(tree: ElementMetadata[]) {\n this._elementsTree = tree;\n }\n\n public clear(): void {\n this._elementsTree = [];\n this.componentFactories = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ElementMetadata } from '../types/common.types';\nimport { getAbsolutePath, parsePath } from '../utils/path.utils';\nimport { DynamicModuleService } from './dynamic-module.service';\n\n@Injectable()\nexport class IOProviderService {\n private inputs: Dictionary<Dictionary<BehaviorSubject<any>>> = {};\n\n constructor(private dynamicModuleService: DynamicModuleService) {}\n\n public connect(el: ElementMetadata, name: string, target?: string | null): Observable<any> | undefined {\n return this.resolveTarget(el, name, target)?.asObservable();\n }\n\n public provide(el: ElementMetadata, name: string, target?: string | null): BehaviorSubject<any> | undefined {\n return this.resolveTarget(el, name, target);\n }\n\n private resolveTarget(el: ElementMetadata, name: string, target?: string | null): BehaviorSubject<any> | undefined {\n const isHost = !target;\n\n if (isHost) {\n return this.createSubjectSafe(el.path ?? '', name);\n }\n\n const elPath = parsePath(target as string);\n const pathIsValue =\n elPath.segments.length === 1 && elPath.segments[0].startsWith('\"') && elPath.segments[0].endsWith('\"');\n\n const finalName = elPath.variable ?? name;\n const value = pathIsValue ? new BehaviorSubject(elPath.segments[0].slice(1, -1)) : undefined;\n\n const absolutePath = !pathIsValue ? getAbsolutePath(this.dynamicModuleService.elementsTree, el, elPath) : el.path;\n return this.createSubjectSafe(absolutePath ?? '', finalName, value);\n }\n\n private createSubjectSafe(path: string, name: string, subject?: BehaviorSubject<any>): BehaviorSubject<any> {\n if (!this.inputs[path]) {\n this.inputs[path] = {};\n }\n\n const subjectAlreadyExists = Boolean(this.inputs[path][name]);\n\n if (!this.inputs[path][name]) {\n this.inputs[path][name] = subject ?? new BehaviorSubject<any>(undefined);\n }\n\n if (subject && subjectAlreadyExists) {\n // push delayed value to workaround 'changed after it was checked' issue\n setTimeout(() => this.inputs[path][name].next(subject.value));\n }\n\n return this.inputs[path][name];\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\ntype Template = TemplateRef<any> | undefined;\n\n@Injectable()\nexport class TemplatesService {\n private templates: Dictionary<BehaviorSubject<Template>> = {};\n\n public register(name: string, templateRef: TemplateRef<any>): void {\n this.ensureStorage(name);\n this.templates[name].next(templateRef);\n }\n\n public get(name: string): Template {\n this.ensureStorage(name);\n return this.templates[name].value;\n }\n\n public get$(name: string): Observable<Template> {\n this.ensureStorage(name);\n return this.templates[name].asObservable();\n }\n\n private ensureStorage(name: string): void {\n if (!this.templates[name]) {\n this.templates[name] = new BehaviorSubject<Template>(undefined);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { IOProviderService } from '../services/io-provider.service';\nimport { ElementMetadata } from '../types/common.types';\n\n@Directive()\nexport class IOPlugin implements PluginComponent {\n constructor(public host: ElementComponent) {\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const inputProvider: IOProviderService = this.host.injector.get(IOProviderService);\n\n const inputs = Object.entries(elementMetadata.inputs ?? {});\n const outputs = Object.entries(elementMetadata.outputs ?? {});\n\n inputs.forEach(([key, path]) => {\n if (path && typeof path !== 'string') {\n console.error(`The value of '${key}' input should be a string`);\n }\n\n if (elementMetadata.outputs?.[key] !== undefined) {\n console.warn(\n `'${key}' appears both in inputs and outputs. To prevent inconsistent behavior please keep them unique `,\n );\n }\n\n (this.host as any)[key] = inputProvider.connect(elementMetadata, key, path);\n });\n\n outputs.forEach(([key, path]) => {\n if (path && typeof path !== 'string') {\n console.error(`The value of '${key}' output should be a string`);\n }\n\n (this.host as any)[key] = inputProvider.provide(elementMetadata, key, path);\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive } from '@angular/core';\nimport { UUID } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA, SHARED_ELEMENT_METADATA, VENDOR_MAP } from '../injection-tokens';\nimport { ElementMetadata } from '../types/common.types';\n\n@Directive()\nexport class ScriptPlugin implements PluginComponent {\n private document: Document;\n private vendorMap: Dictionary<any>;\n\n constructor(public host: ElementComponent) {\n this.document = this.host.injector.get(DOCUMENT);\n this.vendorMap = this.host.injector.get(VENDOR_MAP);\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const sharedElementMetadata: ElementMetadata | undefined = this.host.injector.get(SHARED_ELEMENT_METADATA);\n\n this.addScript(sharedElementMetadata);\n this.addScript(elementMetadata);\n }\n\n private addScript(metadata?: ElementMetadata): void {\n if (!metadata?.script) {\n return;\n }\n\n const id = btoa(UUID.UUID());\n const script = this.document.createElement('script');\n script.type = `text/javascript`;\n\n let scriptContent = this.normalizeImports(metadata.script, metadata.path ?? metadata.name);\n\n const classMatch = /export class (\\S+)/.exec(scriptContent);\n const className = classMatch?.[1];\n\n if (!classMatch || !className) {\n console.error(\"Script doesn't have exported class\");\n return;\n }\n\n scriptContent = scriptContent.replace(classMatch[0], `class ${className}`);\n\n script.text = `var ${id} = function(vendor) {${scriptContent}\n return ${className}; };`;\n\n this.document.body.appendChild(script);\n\n const ScriptClass = (window as any)[id](this.vendorMap);\n if (ScriptClass instanceof Object) {\n this.host.registerPlugin(new ScriptClass(this.host));\n }\n\n this.document.body.removeChild(script);\n }\n\n private normalizeImports = (script: string, elementPath: string): string => {\n const regexp = new RegExp(\n `import([ \\\\n\\\\t]*(?:[^ \\\\n\\\\t\\\\{\\\\}]+[ \\\\n\\\\t]*,?)?(?:[ \\\\n\\\\t]*\\\\{(?:[ \\\\n\\\\t]*[^ \\\\n\\\\t\"'\\\\{\\\\}]+[ \\\\n\\\\t]*,?)+\\\\})?[ \\\\n\\\\t]*)from[ \\\\n\\\\t]*(['\"])([^'\"\\\\n]+)(?:['\"]);`,\n 'g',\n );\n const result = script.replace(regexp, (match, g1, g2, src) => {\n const imports = (g1 as string)\n .trim()\n .slice(1, -1)\n .split(',')\n .map(item => item.trim());\n\n imports.forEach(item => {\n if (!this.vendorMap[src]?.[item]) {\n throw new Error(`Failed to import ${item} from '${src}' in ${elementPath}/script.ts`);\n }\n });\n\n return `const ${g1} = vendor['${src}'];`;\n });\n return result;\n };\n}\n","import { ElementComponent } from './components/element.component';\nimport { IOPlugin } from './plugins/io.plugin';\nimport { ScriptPlugin } from './plugins/script.plugin';\nimport { ElementConfig, ELEMENT_TYPE } from './types/common.types';\n\n/*\n * ScriptPlugin must always be the last plugin in the list to make sure user code is running after all pre-initializers.\n */\n\nexport const CONFIG: { [key in ELEMENT_TYPE]: ElementConfig } = {\n CUSTOM: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n },\n CONTAINER: {\n component: ElementComponent,\n defaultTemplate: '<element-children></element-children>',\n plugins: [ScriptPlugin],\n },\n SERVICE: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n suppressTemplate: true,\n suppressStyles: true,\n },\n REFERENCE: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n suppressTemplate: true,\n },\n};\n","import { UIElement } from '@veloceapps/sdk/core';\nimport { flatten } from 'lodash';\nimport { CONFIG } from '../cms.elements';\nimport { IOPlugin } from '../plugins/io.plugin';\nimport { ElementConfig, ElementDefaultMetadata, ElementMetadata, ElementModel, ELEMENT_TYPE } from '../types';\n\nconst EXPORTED_CLASS_REGEX = /export class (\\S+)/;\nconst METADATA_DECORATOR_REGEX = /@ElementDefinition\\(([\\s\\S]+)\\)(\\n|\\r\\n|.)*export class/g;\n\nexport class UiBuildError extends Error {\n public affectedMetadata: ElementMetadata;\n constructor(message: string, affectedMetadata: ElementMetadata) {\n super(message);\n this.name = this.constructor.name;\n this.affectedMetadata = affectedMetadata;\n }\n}\n\nexport const elementToMetadata = (el: UIElement, parentPath?: string): ElementMetadata => {\n const script = el.script && window.atob(el.script);\n const template = el.template && window.atob(el.template);\n const styles = el.styles && window.atob(el.styles);\n\n const exportedClassName = script && (EXPORTED_CLASS_REGEX.exec(script) ?? [])[1];\n\n if (!exportedClassName) {\n throw new Error(\"Script doesn't have exported class\");\n }\n\n const elementMetadata = extractElementMetadata(script || '');\n const path = (parentPath ? parentPath + '/' : '') + elementMetadata.name;\n\n return {\n ...elementMetadata,\n path,\n script: script?.replace(METADATA_DECORATOR_REGEX, 'export class'),\n template,\n styles,\n children: el.children.map(child => elementToMetadata(child, path)),\n };\n};\n\nexport const metadataToElement = (metadata: ElementMetadata, recursive: boolean = true): UIElement => {\n const elMetadata: ElementDefaultMetadata = {\n name: metadata.name,\n isShared: metadata.isShared,\n type: metadata.type,\n model: metadata.model,\n module: metadata.module,\n reference: metadata.reference,\n inputs: metadata.inputs,\n outputs: metadata.outputs,\n children: metadata.children.map(({ name }) => name),\n configuredStyles: metadata.configuredStyles,\n };\n const normalizedElMetadata = normalizeElementMetadata(elMetadata);\n\n if (!metadata.script || !EXPORTED_CLASS_REGEX.test(metadata.script)) {\n throw new UiBuildError(`'${metadata.name}' component script is missing an exported class`, metadata);\n }\n\n const script =\n metadata.script &&\n window.btoa(\n metadata.script.replace(\n EXPORTED_CLASS_REGEX,\n `@ElementDefinition(${stringifyElementMetadata(normalizedElMetadata)})\\nexport class Script`,\n ),\n );\n const template = metadata.template && window.btoa(metadata.template);\n const styles = metadata.styles && window.btoa(metadata.styles);\n\n return {\n script,\n template,\n styles,\n children: recursive ? metadata.children.map(meta => metadataToElement(meta)) : [],\n };\n};\n\nexport const normalizeElementMetadata = (elementMetadata: ElementDefaultMetadata): ElementDefaultMetadata => {\n const metadata = { ...elementMetadata };\n\n // model\n const { lineItem, path } = metadata.model ?? {};\n const model: ElementModel | undefined = lineItem ? { lineItem } : path ? { path } : undefined;\n if (model) {\n metadata.model = model;\n } else {\n delete metadata.model;\n }\n\n // module\n if (!metadata.module) {\n delete metadata.module;\n }\n\n // reference\n if (!metadata.reference) {\n delete metadata.reference;\n }\n\n // inputs\n const inputs = Object.entries(metadata.inputs ?? {}).reduce((acc, [key, value]) => {\n return { ...acc, [key]: value || null };\n }, {});\n if (inputs && Object.keys(inputs).length > 0) {\n metadata.inputs = inputs;\n } else {\n delete metadata.inputs;\n }\n\n // outputs\n const outputs = Object.entries(metadata.outputs ?? {}).reduce((acc, [key, value]) => {\n return { ...acc, [key]: value || null };\n }, {});\n if (outputs && Object.keys(outputs).length > 0) {\n metadata.outputs = outputs;\n } else {\n delete metadata.outputs;\n }\n\n // children\n if (!metadata.children?.length) {\n delete metadata.children;\n }\n\n // isShared\n if (!metadata.isShared) {\n delete metadata.isShared;\n }\n\n // configuredStyles\n if (!metadata.configuredStyles) {\n delete metadata.configuredStyles;\n }\n\n return metadata;\n};\n\nexport const extractElementMetadata = (script: string): ElementDefaultMetadata => {\n const metadataString = (METADATA_DECORATOR_REGEX.exec(script) ?? [])[1];\n\n // need to reset regex last index to prevent null result for next execution\n METADATA_DECORATOR_REGEX.lastIndex = 0;\n\n return new Function(`return ${metadataString}`)();\n};\n\nexport const extendElementMetadata = (script: string, extend: Partial<ElementDefaultMetadata>): string => {\n const metadataString = (METADATA_DECORATOR_REGEX.exec(script) ?? [])[1];\n\n // need to reset regex last index to prevent null result for next execution\n METADATA_DECORATOR_REGEX.lastIndex = 0;\n\n if (!metadataString) {\n return script;\n }\n\n const updated = { ...new Function(`return ${metadataString}`)(), ...extend };\n return script.replace(metadataString, stringifyElementMetadata(updated));\n};\n\nexport const getElementConfig = (type: ELEMENT_TYPE): ElementConfig => {\n return CONFIG[type];\n};\n\nexport const doesElementSupportIO = (type: ELEMENT_TYPE): boolean => {\n return getElementConfig(type).plugins?.includes(IOPlugin) ?? false;\n};\n\nexport function stringifyElementMetadata(elementMetadata: ElementDefaultMetadata): string {\n const cleaned = JSON.stringify(elementMetadata, null, 2);\n\n return cleaned.replace(/^[\\t ]*\"[^:\\n\\r]+(?<!\\\\)\":/gm, function (match) {\n return match.replace(/\"/g, '');\n });\n}\n\nexport const isValidScript = (script?: string): boolean => {\n if (!script) {\n return false;\n }\n\n const exportedClassName = script && (EXPORTED_CLASS_REGEX.exec(script) ?? [])[1];\n if (!exportedClassName) {\n return false;\n }\n\n const meta = extractElementMetadata(script);\n if (!meta.name || !meta.type) {\n return false;\n }\n\n return true;\n};\n\nexport function flattenElements(elements: ElementMetadata[]): ElementMetadata[] {\n return flatten(elements.map(el => [el, ...flattenElements(el.children)]));\n}\n\nexport function isSharedElement(el: ElementMetadata): boolean {\n return Boolean(el.isShared) && el.type !== 'REFERENCE';\n}\n","import { Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class ElementContextService {\n public metadata?: ElementMetadata;\n public parentModelId?: string;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n ComponentRef,\n ElementRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { LineItem, UUID } from '@veloceapps/core';\nimport { ConfigurationService } from '@veloceapps/sdk/core';\nimport { Dictionary, isArray, pull } from 'lodash';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { DynamicModuleService } from '../../services/dynamic-module.service';\nimport { ElementContextService } from '../../services/element-context.service';\nimport { IOProviderService } from '../../services/io-provider.service';\nimport { ElementMetadata } from '../../types/common.types';\nimport { parseBoundPath } from '../../utils/path.utils';\n\n@Component({\n selector: 'vl-cms-element-renderer',\n templateUrl: './element-renderer.component.html',\n styleUrls: ['./element-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ElementContextService],\n})\nexport class ElementRendererComponent implements OnInit, OnDestroy {\n @ViewChild('el', { read: ViewContainerRef, static: true }) public el?: ViewContainerRef;\n\n @Input() public meta!: ElementMetadata;\n\n private factory?: ComponentFactory<any>;\n private refs: Dictionary<ComponentRef<any> | undefined> = {};\n private destroy$ = new Subject<void>();\n\n constructor(\n @SkipSelf() private parentInjector: Injector,\n private dynamicModuleService: DynamicModuleService,\n private elementContext: ElementContextService,\n private ioProviderService: IOProviderService,\n private configurationService: ConfigurationService,\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this.elementContext.metadata = this.meta;\n this.factory = this.dynamicModuleService.getComponentFactory(this.meta);\n\n this.createComponents();\n }\n\n public ngOnDestroy(): void {\n this.destroyComponents();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private createComponents(): void {\n const modelMeta = this.meta.model;\n\n if (!modelMeta) {\n this.refs[UUID.UUID()] = this.createComponent();\n return;\n }\n\n if (modelMeta.lineItem) {\n this.createFromLineItem(modelMeta.lineItem);\n } else if (modelMeta.path) {\n this.createFromPath(modelMeta.path);\n }\n }\n\n private createFromPath(path: string): void {\n const array$ = this.ioProviderService.connect(this.meta, 'children$', path);\n\n array$?.pipe(takeUntil(this.destroy$)).subscribe(children => {\n if (!isArray(children)) {\n return;\n }\n\n this.processChildren(children);\n });\n }\n\n private getModelComponent(): ElementRendererComponent | null {\n let component: ElementRendererComponent | null = null;\n let injector = this.parentInjector;\n\n while (!component) {\n const parentComp = injector.get(ElementRendererComponent, null);\n\n if (parentComp?.meta.model) {\n component = parentComp;\n break;\n }\n\n if (parentComp) {\n injector = parentComp.parentInjector;\n } else {\n break;\n }\n }\n\n return component;\n }\n\n private createFromLineItem(path: string): void {\n const parentComp = this.getModelComponent();\n const parentPath = parentComp?.meta.model?.lineItem;\n\n const pathBlocks = parseBoundPath(path).reverse();\n const { property, name } = pathBlocks[1] ?? {};\n const finalPath = pathBlocks[0];\n\n const children$ = this.getParentLineItem$(parentComp).pipe(\n map(model => {\n if (!model) {\n return [];\n }\n\n if (property === 'ports' && !finalPath.property && parentPath !== path) {\n return model.lineItems.filter(({ port }) => port === name) ?? [];\n }\n\n return [model];\n }),\n );\n\n children$.pipe(takeUntil(this.destroy$)).subscribe(children => {\n this.processChildren(children);\n });\n }\n\n private processChildren(children: any[]): void {\n const refs = children.reduce((acc, data, index) => {\n const key = String(data?.id ?? UUID.UUID());\n const existingRef = this.refs[key];\n\n const ref = existingRef ?? this.createComponent(data, index);\n if (existingRef) {\n this.updateComponent(existingRef, data, index);\n }\n\n return ref ? { ...acc, [key]: ref } : acc;\n }, {} as Dictionary<ComponentRef<any>>);\n\n const existingKeys = Object.keys(this.refs);\n const newKeys = Object.keys(refs);\n\n pull(existingKeys, ...newKeys).forEach(key => {\n this.destroyComponent(key);\n });\n\n this.refs = refs;\n this.cdr.detectChanges();\n }\n\n private getParentLineItem$(parentComp: ElementRendererComponent | null): Observable<LineItem | undefined> {\n const parentRefs = Object.values(parentComp?.refs ?? {});\n const parentRef = parentRefs.find(ref =>\n (ref?.location.nativeElement as HTMLElement)?.contains(this.elementRef.nativeElement),\n );\n\n const parentModel$ = parentRef?.instance.model$;\n\n return parentModel$ ?? this.configurationService.get();\n }\n\n private createComponent(data?: any, index?: number): ComponentRef<any> | undefined {\n if (!this.factory) {\n return;\n }\n\n const componentRef = this.el?.createComponent(this.factory, index);\n\n if (componentRef) {\n componentRef.location.nativeElement.setAttribute('name', this.meta.name);\n componentRef.location.nativeElement.setAttribute('path', this.meta.path);\n componentRef.instance?.model$.next(data);\n }\n\n return componentRef;\n }\n\n private updateComponent(ref: ComponentRef<any>, data: any, index: number): void {\n ref.instance.model$.next(data);\n\n if (this.el && this.el.indexOf(ref.hostView) !== index) {\n this.el.move(ref.hostView, index);\n }\n }\n\n private destroyComponent(key: string): void {\n this.refs[key]?.destroy();\n delete this.refs[key];\n }\n\n private destroyComponents(): void {\n Object.values(this.refs).forEach(ref => ref?.destroy());\n this.refs = {};\n }\n}\n","<ng-template #el></ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ElementContextService } from '../../services/element-context.service';\nimport { ElementMetadata } from '../../types/common.types';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'element-children',\n templateUrl: 'element-children.component.html',\n styleUrls: ['./element-children.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ElementChildrenComponent {\n public metadata?: ElementMetadata;\n\n constructor(private elementContext: ElementContextService) {\n this.metadata = this.elementContext.metadata;\n }\n}\n","<ng-container *ngIf=\"metadata?.children.length\">\n <ng-container *ngFor=\"let child of metadata.children\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n </ng-container>\n</ng-container>\n","import { AfterViewInit, Directive, Input, TemplateRef } from '@angular/core';\nimport { TemplatesService } from '../services/templates.service';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[customTemplate]' })\nexport class CustomTemplateDirective implements AfterViewInit {\n constructor(private templateRef: TemplateRef<any>, private templatesService: TemplatesService) {}\n\n @Input() public customTemplate: string | undefined;\n\n public ngAfterViewInit(): void {\n if (!this.customTemplate) {\n return;\n }\n\n this.templatesService.register(this.customTemplate, this.templateRef);\n }\n}\n","export const defaultOptions = {\n suppressLoading: false,\n loadingLabel: 'LOADING',\n};\n","import { Dictionary } from 'lodash';\n\ntype Scope = unknown;\ntype Factory = () => any;\n\ntype Container = {\n init(shareScope: Scope): void;\n get(module: string): Factory;\n};\n\ndeclare const __webpack_init_sharing__: (shareScope: string) => Promise<void>;\ndeclare const __webpack_share_scopes__: { default: Scope };\n\nconst moduleMap: Dictionary<boolean> = {};\n\nfunction loadRemoteEntry(remoteEntry: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (moduleMap[remoteEntry]) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = remoteEntry;\n\n script.onerror = reject;\n\n script.onload = (): void => {\n moduleMap[remoteEntry] = true;\n resolve(); // window is the global namespace\n };\n\n document.body.append(script);\n });\n}\n\nasync function lookupExposedModule(remoteName: string, exposedModule: string): Promise<any> {\n // Initializes the share scope. This fills it with known provided modules from this build and all remotes\n await __webpack_init_sharing__('default');\n const container = (window as any)[remoteName] as Container; // or get the container somewhere else\n // Initialize the container, it may provide shared modules\n\n await container.init(__webpack_share_scopes__.default);\n const factory = await container.get(exposedModule);\n const Module = factory();\n return Module;\n}\n\nexport async function loadRemoteModule(remoteEntry: string, remoteName: string, exposedModule: string): Promise<any> {\n await loadRemoteEntry(remoteEntry);\n\n return await lookupExposedModule(remoteName, exposedModule);\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Compiler,\n Component,\n ElementRef,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { defaultOptions } from './default-options';\nimport { FederatedComponentInstance, FederatedModuleOptions } from './federated.types';\nimport { loadRemoteModule } from './federated.utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'veloce-host-federated',\n templateUrl: './federated.component.html',\n styleUrls: ['./federated.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FederatedComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('moduleHost', { static: false }) public moduleHostRef?: ElementRef;\n\n @Input() public remoteEntry?: string;\n @Input() public remoteName?: string;\n @Input() public exposedModule?: string;\n @Input() public data?: any;\n @Input() public options?: FederatedModuleOptions;\n\n public isLoading$ = new BehaviorSubject(false);\n\n // configs\n public suppressLoading = defaultOptions.suppressLoading;\n public loadingLabel = defaultOptions.loadingLabel;\n\n private instance?: FederatedComponentInstance;\n\n constructor(\n private injector: Injector,\n private compiler: Compiler,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n ) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.data && this.instance) {\n this.instance.data = this.data;\n }\n\n if (changes.options) {\n this.suppressLoading = this.options?.suppressLoading ?? defaultOptions.suppressLoading;\n this.loadingLabel = this.options?.loadingLabel ?? defaultOptions.loadingLabel;\n }\n }\n\n public ngOnInit(): void {\n this.isLoading$.next(true);\n }\n\n public ngAfterViewInit(): void {\n const remoteEntry = this.options?.remoteEntry ?? this.remoteEntry;\n const remoteName = this.options?.remoteName ?? this.remoteName;\n const exposedModule = this.options?.exposedModule ?? this.exposedModule;\n\n if (!remoteEntry || !remoteName || !exposedModule) {\n return;\n }\n\n loadRemoteModule(remoteEntry, remoteName, exposedModule).then(federated => {\n this.compiler.compileModuleAsync(federated[exposedModule as string]).then(moduleFactory => {\n const rootModuleRef = moduleFactory.create(this.injector);\n const rootComponentFactory = rootModuleRef.componentFactoryResolver.resolveComponentFactory(\n federated[exposedModule as string].rootComponent,\n );\n const node = document.createElement('div');\n const { instance, hostView } = rootComponentFactory.create(this.injector, [], node);\n\n this.instance = instance as FederatedComponentInstance;\n this.instance.data = this.data;\n\n this.renderer.appendChild(this.moduleHostRef?.nativeElement, node);\n this.appRef.attachView(hostView);\n\n this.options?.onReady?.();\n this.isLoading$.next(false);\n });\n });\n }\n}\n","<div #moduleHost></div>\n\n<vl-loader *ngIf=\"!suppressLoading && (isLoading$ | async)\" [label]=\"loadingLabel\"></vl-loader>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloceapps/components';\nimport { FederatedComponent } from './federated.component';\n\n@NgModule({\n declarations: [FederatedComponent],\n imports: [CommonModule, LoaderModule],\n exports: [FederatedComponent],\n})\nexport class FederatedModule {}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { LineItem } from '@veloceapps/core';\nimport { ConfigurationService, generateLineItem, getAttributeValue, LineItemWorker } from '@veloceapps/sdk/core';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { AttributeElement, ConfigurationElement, PortElement, TypeElement } from '../types';\nimport { ElementMetadata } from '../types/common.types';\nimport { parseBoundPath } from '../utils/path.utils';\n\n@Directive()\nexport class ConfigurationPlugin implements PluginComponent, OnDestroy {\n private modelSnapshot?: LineItem;\n private destroy$ = new Subject<void>();\n\n private elementMetadata: ElementMetadata;\n private configurationService: ConfigurationService;\n\n constructor(public host: ElementComponent & ConfigurationElement) {\n this.elementMetadata = this.host.injector.get(ELEMENT_METADATA);\n this.configurationService = this.host.injector.get(ConfigurationService);\n\n if (this.elementMetadata.model?.lineItem) {\n this.host.model$.pipe(takeUntil(this.destroy$)).subscribe(model => (this.modelSnapshot = model));\n\n const pathBlocks = parseBoundPath(this.elementMetadata.model?.lineItem);\n const { type, property, name } = pathBlocks.reverse()[0];\n\n this.host.boundName = name ?? type;\n\n this.register(type, property, name);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private register(type?: string, property?: string, name?: string): void {\n if (!type) {\n return;\n }\n\n if (!property) {\n this.registerType();\n } else if (property === 'ports' && name) {\n this.registerPort(name);\n } else if (property === 'attributes' && name) {\n this.registerAttribute(name);\n }\n }\n\n private registerType(): void {\n const remove = (): void => {\n const rootLineItem = this.configurationService.getSnapshot();\n if (!rootLineItem || !this.modelSnapshot) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(rootLineItem).remove(this.modelSnapshot.id).li);\n };\n\n this.typeHost.remove = remove;\n }\n\n private registerPort(name: string): void {\n const model$ = this.host.model$ as Observable<LineItem | undefined>;\n\n const portItems$ = model$.pipe(map(model => model?.lineItems.filter(li => li.port === this.host.boundName) ?? []));\n const portDomain$ = model$.pipe(map(model => model?.portDomains[this.host.boundName]));\n\n const add = (type: string, attributes: { name: string; value: any }[] = []): void => {\n if (!this.modelSnapshot) {\n return;\n }\n\n const portDomain = this.modelSnapshot.portDomains[name];\n if (!portDomain) {\n return;\n }\n\n const generated = generateLineItem(portDomain.name, type, this.modelSnapshot.id, attributes);\n this.configurationService.patch(\n new LineItemWorker(this.modelSnapshot).insert(this.modelSnapshot.id, generated).li,\n );\n };\n\n this.portHost.portItems$ = portItems$;\n this.portHost.portDomain$ = portDomain$;\n this.portHost.addPortItem = add;\n }\n\n private registerAttribute(name: string): void {\n if (!this.host.model$) {\n return;\n }\n\n const value$ = this.host.model$.pipe(map(model => getAttributeValue(model?.attributes ?? [], name)));\n\n const patch = (value: any): void => {\n if (!this.modelSnapshot) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(this.modelSnapshot).patchAttribute([{ name, value }]).li);\n };\n\n this.attributeHost.value$ = value$;\n this.attributeHost.patch = patch;\n }\n\n private get attributeHost(): ElementComponent & AttributeElement {\n return this.host as ElementComponent & AttributeElement;\n }\n\n private get typeHost(): ElementComponent & TypeElement {\n return this.host as ElementComponent & TypeElement;\n }\n\n private get portHost(): ElementComponent & PortElement {\n return this.host as ElementComponent & PortElement;\n }\n}\n","import { UIDefinitionType } from '@veloceapps/sdk/core';\nimport { Plugin } from './engine/models/plugin';\nimport { ConfigurationPlugin } from './plugins/configuration.plugin';\n\nexport const DEFAULT_PLUGINS: { [key in UIDefinitionType]: typeof Plugin[] } = {\n CONFIGURATION: [ConfigurationPlugin],\n DEFAULT: [],\n};\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, filter, map, Observable } from 'rxjs';\nimport { IntegrationAction } from '../types/integration.types';\n\nconst InitAction: IntegrationAction = { type: 'INIT' };\nconst ClearAction: IntegrationAction = { type: 'CLEAR' };\n\n@Injectable({ providedIn: 'root' })\nexport class IntegrationState<S = Dictionary<any>> {\n private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n private readonly action$ = new BehaviorSubject<IntegrationAction>(InitAction);\n\n public get state$(): Observable<S> {\n return this.stateSubj$.asObservable();\n }\n\n public get state(): S {\n return this.stateSubj$.getValue();\n }\n\n public patchState(update: Partial<S>): void {\n this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n }\n\n public dispatch(action: IntegrationAction): void {\n this.action$.next(action);\n }\n\n public listen$<P = any>(actionType: string): Observable<P> {\n return this.action$.pipe(\n filter(action => action.type === actionType),\n map(action => action.payload as P),\n );\n }\n\n public listenAll$<T extends IntegrationAction>(): Observable<T> {\n return this.action$.asObservable() as Observable<T>;\n }\n\n public clear(): void {\n this.stateSubj$.next({} as S);\n this.action$.next(ClearAction);\n }\n}\n","import * as angularCore from '@angular/core';\nimport * as angularForms from '@angular/forms';\nimport {\n CatalogApiService,\n DeltaApiService,\n DocumentAttachmentApiService,\n DocumentTemplatesApiService,\n PicklistsApiService,\n PriceApiService,\n QuoteApiService,\n RampApiService,\n SalesforceApiService,\n} from '@veloceapps/api';\nimport {\n ConfigurationService,\n FlowConfigurationService,\n lineItemUtils,\n LineItemWorker,\n ProductImagesService,\n QuoteDraftService,\n} from '@veloceapps/sdk/core';\nimport * as lodash from 'lodash';\nimport * as rxjs from 'rxjs';\nimport * as rxjsOperators from 'rxjs/operators';\nimport * as cmsActions from './cms.actions';\nimport * as cmsInjectionTokens from './injection-tokens';\nimport { IntegrationState } from './services/integration.state';\nimport { TemplatesService } from './services/templates.service';\n\nconst VELOCE_LIBS = {\n '@veloceapps/sdk/core': {\n ConfigurationService,\n QuoteDraftService,\n FlowConfigurationService,\n LineItemWorker,\n ProductImagesService,\n ...lineItemUtils,\n },\n '@veloceapps/sdk/cms': {\n ...cmsInjectionTokens,\n ...cmsActions,\n TemplatesService,\n IntegrationState,\n },\n '@veloceapps/api': {\n SalesforceApiService,\n QuoteApiService,\n DocumentTemplatesApiService,\n DocumentAttachmentApiService,\n RampApiService,\n CatalogApiService,\n DeltaApiService,\n PicklistsApiService,\n PriceApiService,\n },\n};\n\nconst VELOCE_LIBS_BACKWARDS_COMPATIBLE = Object.entries(VELOCE_LIBS).reduce(\n (trunk, [key, value]) => ({ ...trunk, [key.replace('@veloceapps/', '@veloce/')]: value }),\n {},\n);\n\nexport const vendorMap = {\n ...VELOCE_LIBS,\n\n // TODO: remove when projects/demos are migrated to @veloceapps organization libraries\n ...VELOCE_LIBS_BACKWARDS_COMPATIBLE,\n\n '@angular/core': angularCore,\n '@angular/forms': angularForms,\n rxjs: rxjs,\n 'rxjs/operators': rxjsOperators,\n lodash: lodash,\n};\n\nexport type VendorMap = typeof vendorMap;\n","import { Component, Type } from '@angular/core';\nimport { transform } from '@babel/standalone';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { flatten, kebabCase, set } from 'lodash';\nimport { DEFAULT_PLUGINS } from '../cms.default';\nimport { CONFIG } from '../cms.elements';\nimport {\n DEFAULT_PLUGINS_TOKEN,\n ELEMENT_CONFIG,\n ELEMENT_METADATA,\n SHARED_ELEMENT_METADATA,\n UI_DEFINITION_METADATA,\n VENDOR_MAP,\n} from '../injection-tokens';\nimport { ElementMetadata, ElementStyleDeclaration } from '../types';\nimport { vendorMap } from '../vendor-map';\n\nexport class ElementsResolver {\n public readonly elements: ElementMetadata[];\n\n private renderableElements: ElementMetadata[] = [];\n private sharedElements: ElementMetadata[] = [];\n\n constructor(private uiDef: UIDefinitionMetadata, elements: ElementMetadata[]) {\n const transpiledElements = this.transpileScripts(elements);\n\n this.sharedElements = this.flattenElements(transpiledElements).filter(el => this.isSharedElement(el));\n\n this.elements = transpiledElements.map(el => this.processElementMetadata(el)).filter(Boolean) as ElementMetadata[];\n\n this.renderableElements = this.getRenderableElements(this.elements);\n }\n\n public getNgComponents(): Type<any>[] {\n return this.renderableElements.map(el => this.resolveElement(el)).filter(Boolean) as Type<any>[];\n }\n\n private transpile(el: ElementMetadata): string | undefined {\n if (!el.script) {\n return;\n }\n\n const transformed = transform(el.script, {\n filename: el.name + '.ts',\n presets: ['typescript'],\n sourceMaps: 'inline',\n });\n\n return transformed.code ?? undefined;\n }\n\n private transpileScripts(elements: ElementMetadata[]): ElementMetadata[] {\n return elements.map(el => ({\n ...el,\n script: this.transpile(el),\n children: this.transpileScripts(el.children),\n }));\n }\n\n private flattenElements(elements: ElementMetadata[]): ElementMetadata[] {\n return flatten(elements.map(el => [el, ...this.flattenElements(el.children)]));\n }\n\n private isSharedElement(el: ElementMetadata): boolean {\n return Boolean(el.isShared) && el.type !== 'REFERENCE';\n }\n\n private getRenderableElements(elements: ElementMetadata[]): ElementMetadata[] {\n const renderable: ElementMetadata[] = [];\n\n for (const el of elements) {\n if (!this.isSharedElement(el)) {\n const children = el.children.filter(child => !this.isSharedElement(child));\n const renderableChildren = this.getRenderableElements(children);\n renderable.push({ ...el, children }, ...renderableChildren);\n }\n }\n\n return renderable;\n }\n\n private getSharedElement(element: ElementMetadata): ElementMetadata | undefined {\n if (!element.reference) {\n return;\n }\n\n return this.sharedElements.find(el => element.reference === el.name);\n }\n\n private resolveElementTemplate(element: ElementMetadata): string {\n const config = CONFIG[element.type];\n const template = !config.suppressTemplate ? element.template : '';\n\n return template || config.defaultTemplate || '';\n }\n\n private resolveElementStyles(element: ElementMetadata): string {\n const config = CONFIG[element.type];\n return !config.suppressStyles ? element.styles ?? '' : '';\n }\n\n private processElementMetadata(sourceElement: ElementMetadata): ElementMetadata | undefined {\n let finalElement: ElementMetadata;\n\n if (sourceElement.type === 'REFERENCE') {\n const sharedElement = this.getSharedElement(sourceElement);\n\n if (!sharedElement) {\n console.warn(`Shared element \"${sourceElement.reference}\" not found`);\n return;\n }\n\n finalElement = {\n ...sourceElement,\n children: this.getSharedChildren(sharedElement.children, sourceElement.path),\n type: sharedElement.type,\n template: sharedElement.template,\n styles: (sharedElement.styles ?? '') + '\\n' + (sourceElement.styles ?? ''),\n inputs: {\n ...sharedElement.inputs,\n ...sourceElement.inputs,\n },\n outputs: {\n ...sharedElement.outputs,\n ...sourceElement.outputs,\n },\n };\n } else {\n finalElement = sourceElement;\n delete sourceElement.reference;\n }\n\n finalElement.template = this.resolveElementTemplate(finalElement);\n finalElement.styles = this.resolveElementStyles(finalElement);\n\n return {\n ...finalElement,\n children: finalElement.children\n .map(child => this.processElementMetadata(child))\n .filter(Boolean) as ElementMetadata[],\n };\n }\n\n private getSharedChildren(children: ElementMetadata[], parentPath?: string): ElementMetadata[] {\n return children.map(c => {\n if (!c.path) {\n return c;\n }\n\n const [elName] = c.path.split('/').reverse();\n const path = parentPath + '/' + elName;\n\n return {\n ...c,\n path,\n children: this.getSharedChildren(c.children, path),\n };\n });\n }\n\n private resolveElement(element: ElementMetadata): Type<any> | undefined {\n const config = CONFIG[element.type];\n const defaultPlugins = DEFAULT_PLUGINS[this.uiDef.type] ?? [];\n\n if (!config) {\n console.warn(`Unknown element type \"${element.type}\"`);\n return;\n }\n\n const styles = this.getElementStyles(element);\n\n const component: Component = {\n selector: 'vl-element',\n template: element.template,\n ...(styles ? { styles: [styles] } : {}),\n providers: [\n { provide: DEFAULT_PLUGINS_TOKEN, useValue: defaultPlugins },\n { provide: UI_DEFINITION_METADATA, useValue: this.uiDef },\n { provide: ELEMENT_METADATA, useValue: element },\n { provide: SHARED_ELEMENT_METADATA, useValue: this.getSharedElement(element) },\n { provide: ELEMENT_CONFIG, useValue: config },\n { provide: VENDOR_MAP, useValue: vendorMap },\n ],\n };\n\n const cmp = Component(component)(class C extends config.component {});\n\n set(cmp, 'path', element.path);\n\n return cmp;\n }\n\n private getElementStyles(element: ElementMetadata): string | undefined {\n let result = '';\n\n const configuredStyles = this.convertInlineStylesToCSS(element.configuredStyles);\n if (configuredStyles) {\n // order is important: styles written by user in CSS code should has higher priority\n result += configuredStyles;\n }\n\n if (element.styles) {\n result += element.styles;\n }\n\n return result || undefined;\n }\n\n private convertInlineStylesToCSS(styles?: ElementStyleDeclaration): string {\n if (!styles) {\n return '';\n }\n\n const entries = Object.entries(styles);\n let result = ':host {\\n';\n\n entries.forEach(([style, value]) => {\n result += ` ${kebabCase(style)}:${value};\\n`;\n });\n\n result += '}\\n';\n\n return result;\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { Compiler, Injectable, ModuleWithComponentFactories, NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { from, map, Observable, tap } from 'rxjs';\nimport { ElementChildrenComponent } from '../components/element-children/element-children.component';\nimport { ElementRendererComponent } from '../components/element-renderer/element-renderer.component';\nimport { CustomTemplateDirective } from '../directives/custom-template.directive';\nimport { FederatedModule } from '../modules/federated/federated.module';\nimport { CompilationResult, ElementMetadata } from '../types';\nimport { ElementsResolver } from '../utils';\nimport { DynamicModuleService } from './dynamic-module.service';\n\n@Injectable()\nexport class LauncherService {\n private module?: Type<NgModule>;\n private moduleInstance?: ModuleWithComponentFactories<NgModule>;\n\n constructor(private compiler: Compiler, private dynamicModuleService: DynamicModuleService) {}\n\n public compileModule(uiDef: UIDefinitionMetadata, elements: ElementMetadata[]): Observable<CompilationResult> {\n const elementsResolver = new ElementsResolver(uiDef, elements);\n\n this.dynamicModuleService.elementsTree = elementsResolver.elements;\n this.module = this.getModule(elementsResolver.getNgComponents());\n\n return from(this.compiler.compileModuleAndAllComponentsAsync(this.module)).pipe(\n tap(m => {\n this.dynamicModuleService.componentFactories = m.componentFactories;\n this.moduleInstance = m;\n }),\n map(m => ({ module: m, elements: elementsResolver.elements })),\n );\n }\n\n public destroy(): void {\n if (this.moduleInstance) {\n this.dynamicModuleService.clear();\n this.moduleInstance = undefined;\n }\n\n if (this.module) {\n this.compiler.clearCacheFor(this.module);\n this.module = undefined;\n }\n }\n\n private getModule(components: Type<any>[]): Type<NgModule> {\n const staticComponents = [ElementChildrenComponent, ElementRendererComponent, CustomTemplateDirective];\n\n @NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, FederatedModule, DragDropModule, ScrollingModule],\n declarations: [...staticComponents, ...components],\n jit: true,\n })\n class DynamicModule {}\n\n return DynamicModule;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ConfigurationRuntimeService, ConfigurationService, UIDefinition, UIElement } from '@veloceapps/sdk/core';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, catchError, forkJoin, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { IntegrationState } from '../../services';\nimport { IOProviderService } from '../../services/io-provider.service';\nimport { LauncherService } from '../../services/launcher.service';\nimport { TemplatesService } from '../../services/templates.service';\nimport { ElementMetadata } from '../../types/common.types';\nimport { elementToMetadata } from '../../utils/element.utils';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-cms-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IOProviderService, TemplatesService],\n // use shadow DOM to prevent UI from being affected by global styles\n encapsulation: ViewEncapsulation.ShadowDom,\n})\nexport class PreviewComponent implements OnInit, OnDestroy {\n @Input() public modelId?: string;\n @Input() public uiDefinition?: UIDefinition;\n @Input() public clearState = false;\n\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n public elements: ElementMetadata[] = [];\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private launcherService: LauncherService,\n private configurationService: ConfigurationService,\n private messageService: MessageService,\n private runtimeService: ConfigurationRuntimeService,\n private integrationState: IntegrationState,\n ) {}\n\n public ngOnInit(): void {\n if (this.clearState) {\n this.integrationState.clear();\n }\n\n this.startPreview();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.configurationService.reset();\n }\n\n private initializeConfiguration$(): Observable<any> {\n const isAlreadyInitialized = this.runtimeService.isInitialized;\n if (!this.uiDefinition || this.uiDefinition.type !== 'CONFIGURATION' || isAlreadyInitialized) {\n return of({});\n }\n\n if (!this.modelId) {\n console.warn(`No modelId is given for uiDefinition with '${this.uiDefinition.type}' type`);\n return of({});\n }\n\n // If still not initialized - init configuration in Test mode\n return this.runtimeService\n .initTestMode(this.modelId, this.uiDefinition)\n .pipe(switchMap(() => this.configurationService.configure()));\n }\n\n private elementToMetadataSafe(elements: UIElement[]): ElementMetadata[] {\n try {\n return elements.map(element => elementToMetadata(element));\n } catch (e) {\n console.error(e);\n\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: String(e) });\n }\n\n return [];\n }\n }\n\n private startPreview(): void {\n if (!this.uiDefinition) {\n return;\n }\n\n const { children, ...uiDefinitionMeta } = this.uiDefinition;\n const elements = this.elementToMetadataSafe(children);\n\n const compilation$ = this.launcherService.compileModule(uiDefinitionMeta, elements);\n\n forkJoin([compilation$, this.initializeConfiguration$()])\n .pipe(\n tap(([result]) => {\n this.elements = result.elements;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(error => {\n console.error(error);\n\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n this.state$.next({ loading: false, failure: true });\n\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n}\n","<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-element-renderer *ngFor=\"let el of elements\" [meta]=\"el\"></vl-cms-element-renderer>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { ElementRendererComponent } from './element-renderer.component';\n\n@NgModule({\n declarations: [ElementRendererComponent],\n exports: [ElementRendererComponent],\n})\nexport class ElementRendererModule {}\n","import { NgModule } from '@angular/core';\nimport { ElementRendererModule } from '../element-renderer/element-renderer.module';\nimport { ElementChildrenComponent } from './element-children.component';\n\n@NgModule({\n declarations: [ElementChildrenComponent],\n imports: [ElementRendererModule],\n exports: [ElementChildrenComponent],\n})\nexport class ElementChildrenModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloceapps/components';\nimport { IntegrationState } from '../../services';\nimport { ElementChildrenModule } from '../element-children/element-children.module';\nimport { ElementRendererModule } from '../element-renderer/element-renderer.module';\nimport { PreviewComponent } from './preview.component';\n\n@NgModule({\n declarations: [PreviewComponent],\n imports: [CommonModule, LoaderModule, ElementRendererModule, ElementChildrenModule],\n providers: [IntegrationState],\n exports: [PreviewComponent],\n})\nexport class PreviewModule {}\n","import { ElementDefaultMetadata } from '../types';\n\nexport function ElementDefinition(definition: ElementDefaultMetadata) {\n return function (constructor: any): any {\n return constructor;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { CoreModule } from '@veloceapps/core';\nimport { SdkCoreModule } from '@veloceapps/sdk/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IntegrationState } from './services';\nimport { DynamicModuleService } from './services/dynamic-module.service';\nimport { LauncherService } from './services/launcher.service';\n\n@NgModule({\n imports: [CommonModule, CoreModule, ApiModule, SdkCoreModule],\n providers: [LauncherService, IntegrationState, DynamicModuleService, DialogService],\n})\nexport class LauncherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["angularCore"],"mappings":"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"}
1
+ {"version":3,"file":"veloceapps-sdk-cms.js","sources":["../../../../libs/sdk/cms/cms.actions.ts","../../../../libs/sdk/cms/injection-tokens.ts","../../../../libs/sdk/cms/engine/models/entity.ts","../../../../libs/sdk/cms/components/element.component.ts","../../../../libs/sdk/cms/utils/path.utils.ts","../../../../libs/sdk/cms/services/dynamic-module.service.ts","../../../../libs/sdk/cms/services/io-provider.service.ts","../../../../libs/sdk/cms/services/templates.service.ts","../../../../libs/sdk/cms/plugins/io.plugin.ts","../../../../libs/sdk/cms/plugins/script.plugin.ts","../../../../libs/sdk/cms/cms.elements.ts","../../../../libs/sdk/cms/utils/element.utils.ts","../../../../libs/sdk/cms/services/element-context.service.ts","../../../../libs/sdk/cms/components/element-renderer/element-renderer.component.ts","../../../../libs/sdk/cms/components/element-renderer/element-renderer.component.html","../../../../libs/sdk/cms/components/element-children/element-children.component.ts","../../../../libs/sdk/cms/components/element-children/element-children.component.html","../../../../libs/sdk/cms/directives/custom-template.directive.ts","../../../../libs/sdk/cms/modules/federated/default-options.ts","../../../../libs/sdk/cms/modules/federated/federated.utils.ts","../../../../libs/sdk/cms/modules/federated/federated.component.ts","../../../../libs/sdk/cms/modules/federated/federated.component.html","../../../../libs/sdk/cms/modules/federated/federated.module.ts","../../../../libs/sdk/cms/plugins/configuration.plugin.ts","../../../../libs/sdk/cms/cms.default.ts","../../../../libs/sdk/cms/services/integration.state.ts","../../../../libs/sdk/cms/vendor-map.ts","../../../../libs/sdk/cms/utils/elements-resolver.ts","../../../../libs/sdk/cms/services/launcher.service.ts","../../../../libs/sdk/cms/components/preview/preview.component.ts","../../../../libs/sdk/cms/components/preview/preview.component.html","../../../../libs/sdk/cms/components/element-renderer/element-renderer.module.ts","../../../../libs/sdk/cms/components/element-children/element-children.module.ts","../../../../libs/sdk/cms/components/preview/preview.module.ts","../../../../libs/sdk/cms/decorators/element.decorator.ts","../../../../libs/sdk/cms/launcher.module.ts","../../../../libs/sdk/cms/veloceapps-sdk-cms.ts"],"sourcesContent":["import { IntegrationAction, Metric } from './types';\n\nexport enum FlowAction {\n FLOW_CONFIGURE_PRODUCT = 'FLOW_CONFIGURE_PRODUCT',\n FLOW_NAVIGATE_BACK = 'FLOW_NAVIGATE_BACK',\n FLOW_NAVIGATE_TO_CATALOG = 'FLOW_NAVIGATE_TO_CATALOG',\n FLOW_APPLY_PRODUCT_CONFIGURATION = 'FLOW_APPLY_PRODUCT_CONFIGURATION',\n FLOW_OPEN_DOC_GEN = 'FLOW_OPEN_DOC_GEN',\n FLOW_CLOSE_DOC_GEN = 'FLOW_CLOSE_DOC_GEN',\n FLOW_SWITCH_OBJECT = 'FLOW_SWITCH_OBJECT',\n REMOTE_APPLY = 'REMOTE_APPLY',\n REMOTE_CANCEL = 'REMOTE_CANCEL',\n SET_DEFAULT_METRICS = 'SET_DEFAULT_METRICS',\n}\n\nexport const ConfigureProductAction = ({\n lineItemId,\n productId,\n}: {\n lineItemId?: string;\n productId?: string;\n}): IntegrationAction => ({\n type: FlowAction.FLOW_CONFIGURE_PRODUCT,\n payload: { lineItemId, productId },\n});\n\nexport const NavigateBackAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_NAVIGATE_BACK,\n});\n\nexport const NavigateToCatalogAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_NAVIGATE_TO_CATALOG,\n});\n\nexport const ApplyProductConfigurationAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION,\n});\n\nexport const OpenDocGenAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_OPEN_DOC_GEN,\n});\n\nexport const CloseDocGenAction = (): IntegrationAction => ({\n type: FlowAction.FLOW_CLOSE_DOC_GEN,\n});\n\nexport const RemoteApplyAction = (): IntegrationAction => ({\n type: FlowAction.REMOTE_APPLY,\n});\n\nexport const RemoteCancelAction = (): IntegrationAction => ({\n type: FlowAction.REMOTE_CANCEL,\n});\n\nexport const SwitchObjectAction = (payload: { id: string }): IntegrationAction => ({\n type: FlowAction.FLOW_SWITCH_OBJECT,\n payload,\n});\n\nexport const SetDefaultMetrics = (metrics: Metric[]): IntegrationAction => ({\n type: FlowAction.SET_DEFAULT_METRICS,\n payload: { metrics },\n});\n","import { InjectionToken } from '@angular/core';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { Dictionary } from 'lodash';\nimport { Plugin } from './engine/models/plugin';\nimport { ElementConfig, ElementMetadata } from './types/common.types';\n\nexport const DEFAULT_PLUGINS_TOKEN = new InjectionToken<typeof Plugin[]>('DEFAULT_PLUGINS_TOKEN');\n\nexport const UI_DEFINITION_METADATA = new InjectionToken<UIDefinitionMetadata>('UI_DEFINITION_METADATA_TOKEN');\nexport const ELEMENT_METADATA = new InjectionToken<ElementMetadata>('ELEMENT_METADATA_TOKEN');\nexport const SHARED_ELEMENT_METADATA = new InjectionToken<ElementMetadata>('SHARED_ELEMENT_METADATA_TOKEN');\nexport const ELEMENT_CONFIG = new InjectionToken<ElementConfig>('ELEMENT_CONFIG_TOKEN');\nexport const VENDOR_MAP = new InjectionToken<Dictionary<any>>('VENDOR_MAP');\n","import { Injector } from '@angular/core';\nimport { DEFAULT_PLUGINS_TOKEN, ELEMENT_CONFIG } from '../../injection-tokens';\nimport { ElementConfig } from '../../types/common.types';\nimport { Plugin } from './plugin';\n\nexport class Entity {\n protected readonly plugins: Plugin[] = [];\n\n private config: ElementConfig;\n private defaultPlugins: typeof Plugin[];\n\n constructor(public injector: Injector) {\n this.config = this.injector.get(ELEMENT_CONFIG);\n this.defaultPlugins = this.injector.get(DEFAULT_PLUGINS_TOKEN);\n }\n\n public initPlugins(): void {\n this.defaultPlugins.forEach(plugin => this.registerPlugin(new plugin(this)));\n this.config.plugins?.forEach(plugin => this.registerPlugin(new plugin(this)));\n }\n\n public registerPlugin(plugin: Plugin): void {\n this.plugins.push(plugin);\n }\n}\n","/* eslint-disable @angular-eslint/no-conflicting-lifecycle */\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n DoCheck,\n Inject,\n Injector,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Entity } from '../engine/models/entity';\nimport { IPluginComponent } from './plugin.component';\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n jit: true,\n})\nexport class ElementComponent\n extends Entity\n implements OnChanges, OnInit, DoCheck, AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy\n{\n public readonly model$ = new BehaviorSubject<any | undefined>(undefined);\n public readonly plugins!: IPluginComponent[];\n\n constructor(@Inject(Injector) public injector: Injector) {\n super(injector);\n\n super.initPlugins();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.plugins.forEach(plugin => plugin.ngOnChanges?.(changes));\n }\n\n public ngOnInit(): void {\n this.plugins.forEach(plugin => plugin.ngOnInit?.());\n }\n\n public ngDoCheck(): void {\n this.plugins.forEach(plugin => plugin.ngDoCheck?.());\n }\n\n public ngAfterContentInit(): void {\n this.plugins.forEach(plugin => plugin.ngAfterContentInit?.());\n }\n\n public ngAfterViewInit(): void {\n this.plugins.forEach(plugin => plugin.ngAfterViewInit?.());\n }\n\n public ngAfterViewChecked(): void {\n this.plugins.forEach(plugin => plugin.ngAfterViewChecked?.());\n }\n\n public ngOnDestroy(): void {\n this.plugins.forEach(plugin => plugin.ngOnDestroy?.());\n }\n}\n","import { compact } from 'lodash';\nimport { ElementMetadata, ElementPath, PathBlock } from '../types';\n\nexport const parseBoundPath = (path: string): PathBlock[] => {\n const regexp = new RegExp(`(?:\\\\/)(?:\\\\w+)(?:\\\\/)(?:ports|attributes)(?:\\\\/)(?:\\\\w+)|(?:\\\\/)(?:\\\\w+)`, 'g');\n const blocks: PathBlock[] =\n path.match(regexp)?.map(match => {\n const [type, property, name] = compact(match.split('/'));\n return { type, property, name };\n }) ?? [];\n\n return blocks;\n};\n\nexport const parsePath = (path: string): ElementPath => {\n const segments = path.split('/');\n let module: string | undefined;\n let variable: string | undefined;\n\n if (segments[0]?.startsWith('@')) {\n module = segments.shift()?.substring(1);\n }\n\n if (segments[segments.length - 1]?.[0] === ':') {\n variable = segments.pop()?.substring(1);\n }\n\n const isAbsolute = !segments[0];\n const nonEmptySegments = segments.filter(Boolean);\n\n if (!isAbsolute && nonEmptySegments[0] === '.') {\n nonEmptySegments.shift();\n }\n\n return {\n isAbsolute,\n segments: nonEmptySegments,\n module,\n variable,\n };\n};\n\nexport const findElementByModule = (\n elements: ElementMetadata[],\n module: string,\n elementName: string,\n): ElementMetadata | undefined => {\n for (const el of elements) {\n if (el.module === module && el.name === elementName) {\n return el;\n }\n\n const child = findElementByModule(el.children, module, elementName);\n if (child) {\n return child;\n }\n }\n\n return;\n};\n\nexport const getAbsolutePath = (\n elements: ElementMetadata[],\n subject: ElementMetadata,\n path: ElementPath,\n): string | undefined => {\n if (path.module) {\n return findElementByModule(elements, path.module, path.segments[0])?.path;\n }\n\n const subjectSegments = subject.path?.split('/') ?? [];\n const segments = [...path.segments];\n\n if (path.isAbsolute) {\n return segments.join('/');\n }\n\n while (segments.length) {\n const segment = segments.shift();\n\n if (segment === '..') {\n subjectSegments.pop();\n } else if (segment) {\n subjectSegments.push(segment);\n }\n }\n\n return subjectSegments.join('/');\n};\n","import { ComponentFactory, Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class DynamicModuleService {\n private _elementsTree: ElementMetadata[] = [];\n private _componentFactories: ComponentFactory<any>[] = [];\n\n public set componentFactories(data: ComponentFactory<any>[]) {\n this._componentFactories = data;\n }\n\n public get componentFactories(): ComponentFactory<any>[] {\n return this._componentFactories;\n }\n\n public getComponentFactory(element: ElementMetadata): ComponentFactory<any> | undefined {\n return this.componentFactories.find(f => (f.componentType as any).path === element.path);\n }\n\n public get elementsTree(): ElementMetadata[] {\n return this._elementsTree;\n }\n\n public set elementsTree(tree: ElementMetadata[]) {\n this._elementsTree = tree;\n }\n\n public clear(): void {\n this._elementsTree = [];\n this.componentFactories = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ElementMetadata } from '../types/common.types';\nimport { getAbsolutePath, parsePath } from '../utils/path.utils';\nimport { DynamicModuleService } from './dynamic-module.service';\n\n@Injectable()\nexport class IOProviderService {\n private inputs: Dictionary<Dictionary<BehaviorSubject<any>>> = {};\n\n constructor(private dynamicModuleService: DynamicModuleService) {}\n\n public connect(el: ElementMetadata, name: string, target?: string | null): Observable<any> | undefined {\n return this.resolveTarget(el, name, target)?.asObservable();\n }\n\n public provide(el: ElementMetadata, name: string, target?: string | null): BehaviorSubject<any> | undefined {\n return this.resolveTarget(el, name, target);\n }\n\n private resolveTarget(el: ElementMetadata, name: string, target?: string | null): BehaviorSubject<any> | undefined {\n const isHost = !target;\n\n if (isHost) {\n return this.createSubjectSafe(el.path ?? '', name);\n }\n\n const elPath = parsePath(target as string);\n const pathIsValue =\n elPath.segments.length === 1 && elPath.segments[0].startsWith('\"') && elPath.segments[0].endsWith('\"');\n\n const finalName = elPath.variable ?? name;\n const value = pathIsValue ? new BehaviorSubject(elPath.segments[0].slice(1, -1)) : undefined;\n\n const absolutePath = !pathIsValue ? getAbsolutePath(this.dynamicModuleService.elementsTree, el, elPath) : el.path;\n return this.createSubjectSafe(absolutePath ?? '', finalName, value);\n }\n\n private createSubjectSafe(path: string, name: string, subject?: BehaviorSubject<any>): BehaviorSubject<any> {\n if (!this.inputs[path]) {\n this.inputs[path] = {};\n }\n\n const subjectAlreadyExists = Boolean(this.inputs[path][name]);\n\n if (!this.inputs[path][name]) {\n this.inputs[path][name] = subject ?? new BehaviorSubject<any>(undefined);\n }\n\n if (subject && subjectAlreadyExists) {\n // push delayed value to workaround 'changed after it was checked' issue\n setTimeout(() => this.inputs[path][name].next(subject.value));\n }\n\n return this.inputs[path][name];\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\ntype Template = TemplateRef<any> | undefined;\n\n@Injectable()\nexport class TemplatesService {\n private templates: Dictionary<BehaviorSubject<Template>> = {};\n\n public register(name: string, templateRef: TemplateRef<any>): void {\n this.ensureStorage(name);\n this.templates[name].next(templateRef);\n }\n\n public get(name: string): Template {\n this.ensureStorage(name);\n return this.templates[name].value;\n }\n\n public get$(name: string): Observable<Template> {\n this.ensureStorage(name);\n return this.templates[name].asObservable();\n }\n\n private ensureStorage(name: string): void {\n if (!this.templates[name]) {\n this.templates[name] = new BehaviorSubject<Template>(undefined);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { IOProviderService } from '../services/io-provider.service';\nimport { ElementMetadata } from '../types/common.types';\n\n@Directive()\nexport class IOPlugin implements PluginComponent {\n constructor(public host: ElementComponent) {\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const inputProvider: IOProviderService = this.host.injector.get(IOProviderService);\n\n const inputs = Object.entries(elementMetadata.inputs ?? {});\n const outputs = Object.entries(elementMetadata.outputs ?? {});\n\n inputs.forEach(([key, path]) => {\n if (path && typeof path !== 'string') {\n console.error(`The value of '${key}' input should be a string`);\n }\n\n if (elementMetadata.outputs?.[key] !== undefined) {\n console.warn(\n `'${key}' appears both in inputs and outputs. To prevent inconsistent behavior please keep them unique `,\n );\n }\n\n (this.host as any)[key] = inputProvider.connect(elementMetadata, key, path);\n });\n\n outputs.forEach(([key, path]) => {\n if (path && typeof path !== 'string') {\n console.error(`The value of '${key}' output should be a string`);\n }\n\n (this.host as any)[key] = inputProvider.provide(elementMetadata, key, path);\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Directive } from '@angular/core';\nimport { UUID } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA, SHARED_ELEMENT_METADATA, VENDOR_MAP } from '../injection-tokens';\nimport { ElementMetadata } from '../types/common.types';\n\n@Directive()\nexport class ScriptPlugin implements PluginComponent {\n private document: Document;\n private vendorMap: Dictionary<any>;\n\n constructor(public host: ElementComponent) {\n this.document = this.host.injector.get(DOCUMENT);\n this.vendorMap = this.host.injector.get(VENDOR_MAP);\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const sharedElementMetadata: ElementMetadata | undefined = this.host.injector.get(SHARED_ELEMENT_METADATA);\n\n this.addScript(sharedElementMetadata);\n this.addScript(elementMetadata);\n }\n\n private addScript(metadata?: ElementMetadata): void {\n if (!metadata?.script) {\n return;\n }\n\n const id = btoa(UUID.UUID());\n const script = this.document.createElement('script');\n script.type = `text/javascript`;\n\n let scriptContent = this.normalizeImports(metadata.script, metadata.path ?? metadata.name);\n\n const classMatch = /export class (\\S+)/.exec(scriptContent);\n const className = classMatch?.[1];\n\n if (!classMatch || !className) {\n console.error(\"Script doesn't have exported class\");\n return;\n }\n\n scriptContent = scriptContent.replace(classMatch[0], `class ${className}`);\n\n script.text = `var ${id} = function(vendor) {${scriptContent}\n return ${className}; };`;\n\n this.document.body.appendChild(script);\n\n const ScriptClass = (window as any)[id](this.vendorMap);\n if (ScriptClass instanceof Object) {\n this.host.registerPlugin(new ScriptClass(this.host));\n }\n\n this.document.body.removeChild(script);\n }\n\n private normalizeImports = (script: string, elementPath: string): string => {\n const regexp = new RegExp(\n `import([ \\\\n\\\\t]*(?:[^ \\\\n\\\\t\\\\{\\\\}]+[ \\\\n\\\\t]*,?)?(?:[ \\\\n\\\\t]*\\\\{(?:[ \\\\n\\\\t]*[^ \\\\n\\\\t\"'\\\\{\\\\}]+[ \\\\n\\\\t]*,?)+\\\\})?[ \\\\n\\\\t]*)from[ \\\\n\\\\t]*(['\"])([^'\"\\\\n]+)(?:['\"]);`,\n 'g',\n );\n const result = script.replace(regexp, (match, g1, g2, src) => {\n const imports = (g1 as string)\n .trim()\n .slice(1, -1)\n .split(',')\n .map(item => item.trim());\n\n imports.forEach(item => {\n if (!this.vendorMap[src]?.[item]) {\n throw new Error(`Failed to import ${item} from '${src}' in ${elementPath}/script.ts`);\n }\n });\n\n return `const ${g1} = vendor['${src}'];`;\n });\n return result;\n };\n}\n","import { ElementComponent } from './components/element.component';\nimport { IOPlugin } from './plugins/io.plugin';\nimport { ScriptPlugin } from './plugins/script.plugin';\nimport { ElementConfig, ELEMENT_TYPE } from './types/common.types';\n\n/*\n * ScriptPlugin must always be the last plugin in the list to make sure user code is running after all pre-initializers.\n */\n\nexport const CONFIG: { [key in ELEMENT_TYPE]: ElementConfig } = {\n CUSTOM: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n },\n CONTAINER: {\n component: ElementComponent,\n defaultTemplate: '<element-children></element-children>',\n plugins: [ScriptPlugin],\n },\n SERVICE: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n suppressTemplate: true,\n suppressStyles: true,\n },\n REFERENCE: {\n component: ElementComponent,\n plugins: [IOPlugin, ScriptPlugin],\n suppressTemplate: true,\n },\n};\n","import { UIElement } from '@veloceapps/sdk/core';\nimport { flatten } from 'lodash';\nimport { CONFIG } from '../cms.elements';\nimport { IOPlugin } from '../plugins/io.plugin';\nimport { ElementConfig, ElementDefaultMetadata, ElementMetadata, ElementModel, ELEMENT_TYPE } from '../types';\n\nconst EXPORTED_CLASS_REGEX = /export class (\\S+)/;\nconst METADATA_DECORATOR_REGEX = /@ElementDefinition\\(([\\s\\S]+)\\)(\\n|\\r\\n|.)*export class/g;\n\nexport class UiBuildError extends Error {\n public affectedMetadata: ElementMetadata;\n constructor(message: string, affectedMetadata: ElementMetadata) {\n super(message);\n this.name = this.constructor.name;\n this.affectedMetadata = affectedMetadata;\n }\n}\n\nexport const elementToMetadata = (el: UIElement, parentPath?: string): ElementMetadata => {\n const script = el.script && window.atob(el.script);\n const template = el.template && window.atob(el.template);\n const styles = el.styles && window.atob(el.styles);\n\n const exportedClassName = script && (EXPORTED_CLASS_REGEX.exec(script) ?? [])[1];\n\n if (!exportedClassName) {\n throw new Error(\"Script doesn't have exported class\");\n }\n\n const elementMetadata = extractElementMetadata(script || '');\n const path = (parentPath ? parentPath + '/' : '') + elementMetadata.name;\n\n return {\n ...elementMetadata,\n path,\n script: script?.replace(METADATA_DECORATOR_REGEX, 'export class'),\n template,\n styles,\n children: el.children.map(child => elementToMetadata(child, path)),\n };\n};\n\nexport const metadataToElement = (metadata: ElementMetadata, recursive: boolean = true): UIElement => {\n const elMetadata: ElementDefaultMetadata = {\n name: metadata.name,\n isShared: metadata.isShared,\n type: metadata.type,\n model: metadata.model,\n module: metadata.module,\n reference: metadata.reference,\n inputs: metadata.inputs,\n outputs: metadata.outputs,\n children: metadata.children.map(({ name }) => name),\n configuredStyles: metadata.configuredStyles,\n };\n const normalizedElMetadata = normalizeElementMetadata(elMetadata);\n\n if (!metadata.script || !EXPORTED_CLASS_REGEX.test(metadata.script)) {\n throw new UiBuildError(`'${metadata.name}' component script is missing an exported class`, metadata);\n }\n\n const script =\n metadata.script &&\n window.btoa(\n metadata.script.replace(\n EXPORTED_CLASS_REGEX,\n `@ElementDefinition(${stringifyElementMetadata(normalizedElMetadata)})\\nexport class Script`,\n ),\n );\n const template = metadata.template && window.btoa(metadata.template);\n const styles = metadata.styles && window.btoa(metadata.styles);\n\n return {\n script,\n template,\n styles,\n children: recursive ? metadata.children.map(meta => metadataToElement(meta)) : [],\n };\n};\n\nexport const normalizeElementMetadata = (elementMetadata: ElementDefaultMetadata): ElementDefaultMetadata => {\n const metadata = { ...elementMetadata };\n\n // model\n const { lineItem, path } = metadata.model ?? {};\n const model: ElementModel | undefined = lineItem ? { lineItem } : path ? { path } : undefined;\n if (model) {\n metadata.model = model;\n } else {\n delete metadata.model;\n }\n\n // module\n if (!metadata.module) {\n delete metadata.module;\n }\n\n // reference\n if (!metadata.reference) {\n delete metadata.reference;\n }\n\n // inputs\n const inputs = Object.entries(metadata.inputs ?? {}).reduce((acc, [key, value]) => {\n return { ...acc, [key]: value || null };\n }, {});\n if (inputs && Object.keys(inputs).length > 0) {\n metadata.inputs = inputs;\n } else {\n delete metadata.inputs;\n }\n\n // outputs\n const outputs = Object.entries(metadata.outputs ?? {}).reduce((acc, [key, value]) => {\n return { ...acc, [key]: value || null };\n }, {});\n if (outputs && Object.keys(outputs).length > 0) {\n metadata.outputs = outputs;\n } else {\n delete metadata.outputs;\n }\n\n // children\n if (!metadata.children?.length) {\n delete metadata.children;\n }\n\n // isShared\n if (!metadata.isShared) {\n delete metadata.isShared;\n }\n\n // configuredStyles\n if (!metadata.configuredStyles) {\n delete metadata.configuredStyles;\n }\n\n return metadata;\n};\n\nexport const extractElementMetadata = (script: string): ElementDefaultMetadata => {\n const metadataString = (METADATA_DECORATOR_REGEX.exec(script) ?? [])[1];\n\n // need to reset regex last index to prevent null result for next execution\n METADATA_DECORATOR_REGEX.lastIndex = 0;\n\n return new Function(`return ${metadataString}`)();\n};\n\nexport const extendElementMetadata = (script: string, extend: Partial<ElementDefaultMetadata>): string => {\n const metadataString = (METADATA_DECORATOR_REGEX.exec(script) ?? [])[1];\n\n // need to reset regex last index to prevent null result for next execution\n METADATA_DECORATOR_REGEX.lastIndex = 0;\n\n if (!metadataString) {\n return script;\n }\n\n const updated = { ...new Function(`return ${metadataString}`)(), ...extend };\n return script.replace(metadataString, stringifyElementMetadata(updated));\n};\n\nexport const getElementConfig = (type: ELEMENT_TYPE): ElementConfig => {\n return CONFIG[type];\n};\n\nexport const doesElementSupportIO = (type: ELEMENT_TYPE): boolean => {\n return getElementConfig(type).plugins?.includes(IOPlugin) ?? false;\n};\n\nexport function stringifyElementMetadata(elementMetadata: ElementDefaultMetadata): string {\n const cleaned = JSON.stringify(elementMetadata, null, 2);\n\n return cleaned.replace(/^[\\t ]*\"[^:\\n\\r]+(?<!\\\\)\":/gm, function (match) {\n return match.replace(/\"/g, '');\n });\n}\n\nexport const isValidScript = (script?: string): boolean => {\n if (!script) {\n return false;\n }\n\n const exportedClassName = script && (EXPORTED_CLASS_REGEX.exec(script) ?? [])[1];\n if (!exportedClassName) {\n return false;\n }\n\n const meta = extractElementMetadata(script);\n if (!meta.name || !meta.type) {\n return false;\n }\n\n return true;\n};\n\nexport function flattenElements(elements: ElementMetadata[]): ElementMetadata[] {\n return flatten(elements.map(el => [el, ...flattenElements(el.children)]));\n}\n\nexport function isSharedElement(el: ElementMetadata): boolean {\n return Boolean(el.isShared) && el.type !== 'REFERENCE';\n}\n","import { Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class ElementContextService {\n public metadata?: ElementMetadata;\n public parentModelId?: string;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentFactory,\n ComponentRef,\n ElementRef,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n SkipSelf,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { LineItem, UUID } from '@veloceapps/core';\nimport { ConfigurationService } from '@veloceapps/sdk/core';\nimport { Dictionary, isArray, pull } from 'lodash';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { DynamicModuleService } from '../../services/dynamic-module.service';\nimport { ElementContextService } from '../../services/element-context.service';\nimport { IOProviderService } from '../../services/io-provider.service';\nimport { ElementMetadata } from '../../types/common.types';\nimport { parseBoundPath } from '../../utils/path.utils';\n\n@Component({\n selector: 'vl-cms-element-renderer',\n templateUrl: './element-renderer.component.html',\n styleUrls: ['./element-renderer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [ElementContextService],\n})\nexport class ElementRendererComponent implements OnInit, OnDestroy {\n @ViewChild('el', { read: ViewContainerRef, static: true }) public el?: ViewContainerRef;\n\n @Input() public meta!: ElementMetadata;\n\n private factory?: ComponentFactory<any>;\n private refs: Dictionary<ComponentRef<any> | undefined> = {};\n private destroy$ = new Subject<void>();\n\n constructor(\n @SkipSelf() private parentInjector: Injector,\n private dynamicModuleService: DynamicModuleService,\n private elementContext: ElementContextService,\n private ioProviderService: IOProviderService,\n private configurationService: ConfigurationService,\n private elementRef: ElementRef,\n private cdr: ChangeDetectorRef,\n ) {}\n\n public ngOnInit(): void {\n this.elementContext.metadata = this.meta;\n this.factory = this.dynamicModuleService.getComponentFactory(this.meta);\n\n this.createComponents();\n }\n\n public ngOnDestroy(): void {\n this.destroyComponents();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private createComponents(): void {\n const modelMeta = this.meta.model;\n\n if (!modelMeta) {\n this.refs[UUID.UUID()] = this.createComponent();\n return;\n }\n\n if (modelMeta.lineItem) {\n this.createFromLineItem(modelMeta.lineItem);\n } else if (modelMeta.path) {\n this.createFromPath(modelMeta.path);\n }\n }\n\n private createFromPath(path: string): void {\n const array$ = this.ioProviderService.connect(this.meta, 'children$', path);\n\n array$?.pipe(takeUntil(this.destroy$)).subscribe(children => {\n if (!isArray(children)) {\n return;\n }\n\n this.processChildren(children);\n });\n }\n\n private getModelComponent(): ElementRendererComponent | null {\n let component: ElementRendererComponent | null = null;\n let injector = this.parentInjector;\n\n while (!component) {\n const parentComp = injector.get(ElementRendererComponent, null);\n\n if (parentComp?.meta.model) {\n component = parentComp;\n break;\n }\n\n if (parentComp) {\n injector = parentComp.parentInjector;\n } else {\n break;\n }\n }\n\n return component;\n }\n\n private createFromLineItem(path: string): void {\n const parentComp = this.getModelComponent();\n const parentPath = parentComp?.meta.model?.lineItem;\n\n const pathBlocks = parseBoundPath(path).reverse();\n const { property, name } = pathBlocks[1] ?? {};\n const finalPath = pathBlocks[0];\n\n const children$ = this.getParentLineItem$(parentComp).pipe(\n map(model => {\n if (!model) {\n return [];\n }\n\n if (property === 'ports' && !finalPath.property && parentPath !== path) {\n return model.lineItems.filter(({ port }) => port === name) ?? [];\n }\n\n return [model];\n }),\n );\n\n children$.pipe(takeUntil(this.destroy$)).subscribe(children => {\n this.processChildren(children);\n });\n }\n\n private processChildren(children: any[]): void {\n const refs = children.reduce((acc, data, index) => {\n const key = String(data?.id ?? UUID.UUID());\n const existingRef = this.refs[key];\n\n const ref = existingRef ?? this.createComponent(data, index);\n if (existingRef) {\n this.updateComponent(existingRef, data, index);\n }\n\n return ref ? { ...acc, [key]: ref } : acc;\n }, {} as Dictionary<ComponentRef<any>>);\n\n const existingKeys = Object.keys(this.refs);\n const newKeys = Object.keys(refs);\n\n pull(existingKeys, ...newKeys).forEach(key => {\n this.destroyComponent(key);\n });\n\n this.refs = refs;\n this.cdr.detectChanges();\n }\n\n private getParentLineItem$(parentComp: ElementRendererComponent | null): Observable<LineItem | undefined> {\n const parentRefs = Object.values(parentComp?.refs ?? {});\n const parentRef = parentRefs.find(ref =>\n (ref?.location.nativeElement as HTMLElement)?.contains(this.elementRef.nativeElement),\n );\n\n const parentModel$ = parentRef?.instance.model$;\n\n return parentModel$ ?? this.configurationService.get();\n }\n\n private createComponent(data?: any, index?: number): ComponentRef<any> | undefined {\n if (!this.factory) {\n return;\n }\n\n const componentRef = this.el?.createComponent(this.factory, index);\n\n if (componentRef) {\n componentRef.location.nativeElement.setAttribute('name', this.meta.name);\n componentRef.location.nativeElement.setAttribute('path', this.meta.path);\n componentRef.instance?.model$.next(data);\n }\n\n return componentRef;\n }\n\n private updateComponent(ref: ComponentRef<any>, data: any, index: number): void {\n ref.instance.model$.next(data);\n\n if (this.el && this.el.indexOf(ref.hostView) !== index) {\n this.el.move(ref.hostView, index);\n }\n }\n\n private destroyComponent(key: string): void {\n this.refs[key]?.destroy();\n delete this.refs[key];\n }\n\n private destroyComponents(): void {\n Object.values(this.refs).forEach(ref => ref?.destroy());\n this.refs = {};\n }\n}\n","<ng-template #el></ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ElementContextService } from '../../services/element-context.service';\nimport { ElementMetadata } from '../../types/common.types';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'element-children',\n templateUrl: 'element-children.component.html',\n styleUrls: ['./element-children.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ElementChildrenComponent {\n public metadata?: ElementMetadata;\n\n constructor(private elementContext: ElementContextService) {\n this.metadata = this.elementContext.metadata;\n }\n}\n","<ng-container *ngIf=\"metadata?.children.length\">\n <ng-container *ngFor=\"let child of metadata.children\">\n <vl-cms-element-renderer [meta]=\"child\"></vl-cms-element-renderer>\n </ng-container>\n</ng-container>\n","import { AfterViewInit, Directive, Input, TemplateRef } from '@angular/core';\nimport { TemplatesService } from '../services/templates.service';\n\n// eslint-disable-next-line @angular-eslint/directive-selector\n@Directive({ selector: '[customTemplate]' })\nexport class CustomTemplateDirective implements AfterViewInit {\n constructor(private templateRef: TemplateRef<any>, private templatesService: TemplatesService) {}\n\n @Input() public customTemplate: string | undefined;\n\n public ngAfterViewInit(): void {\n if (!this.customTemplate) {\n return;\n }\n\n this.templatesService.register(this.customTemplate, this.templateRef);\n }\n}\n","export const defaultOptions = {\n suppressLoading: false,\n loadingLabel: 'LOADING',\n};\n","import { Dictionary } from 'lodash';\n\ntype Scope = unknown;\ntype Factory = () => any;\n\ntype Container = {\n init(shareScope: Scope): void;\n get(module: string): Factory;\n};\n\ndeclare const __webpack_init_sharing__: (shareScope: string) => Promise<void>;\ndeclare const __webpack_share_scopes__: { default: Scope };\n\nconst moduleMap: Dictionary<boolean> = {};\n\nfunction loadRemoteEntry(remoteEntry: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n if (moduleMap[remoteEntry]) {\n resolve();\n return;\n }\n\n const script = document.createElement('script');\n script.src = remoteEntry;\n\n script.onerror = reject;\n\n script.onload = (): void => {\n moduleMap[remoteEntry] = true;\n resolve(); // window is the global namespace\n };\n\n document.body.append(script);\n });\n}\n\nasync function lookupExposedModule(remoteName: string, exposedModule: string): Promise<any> {\n // Initializes the share scope. This fills it with known provided modules from this build and all remotes\n await __webpack_init_sharing__('default');\n const container = (window as any)[remoteName] as Container; // or get the container somewhere else\n // Initialize the container, it may provide shared modules\n\n await container.init(__webpack_share_scopes__.default);\n const factory = await container.get(exposedModule);\n const Module = factory();\n return Module;\n}\n\nexport async function loadRemoteModule(remoteEntry: string, remoteName: string, exposedModule: string): Promise<any> {\n await loadRemoteEntry(remoteEntry);\n\n return await lookupExposedModule(remoteName, exposedModule);\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Compiler,\n Component,\n ElementRef,\n Injector,\n Input,\n OnChanges,\n OnInit,\n Renderer2,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { defaultOptions } from './default-options';\nimport { FederatedComponentInstance, FederatedModuleOptions } from './federated.types';\nimport { loadRemoteModule } from './federated.utils';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'veloce-host-federated',\n templateUrl: './federated.component.html',\n styleUrls: ['./federated.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FederatedComponent implements OnInit, AfterViewInit, OnChanges {\n @ViewChild('moduleHost', { static: false }) public moduleHostRef?: ElementRef;\n\n @Input() public remoteEntry?: string;\n @Input() public remoteName?: string;\n @Input() public exposedModule?: string;\n @Input() public data?: any;\n @Input() public options?: FederatedModuleOptions;\n\n public isLoading$ = new BehaviorSubject(false);\n\n // configs\n public suppressLoading = defaultOptions.suppressLoading;\n public loadingLabel = defaultOptions.loadingLabel;\n\n private instance?: FederatedComponentInstance;\n\n constructor(\n private injector: Injector,\n private compiler: Compiler,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n ) {}\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes.data && this.instance) {\n this.instance.data = this.data;\n }\n\n if (changes.options) {\n this.suppressLoading = this.options?.suppressLoading ?? defaultOptions.suppressLoading;\n this.loadingLabel = this.options?.loadingLabel ?? defaultOptions.loadingLabel;\n }\n }\n\n public ngOnInit(): void {\n this.isLoading$.next(true);\n }\n\n public ngAfterViewInit(): void {\n const remoteEntry = this.options?.remoteEntry ?? this.remoteEntry;\n const remoteName = this.options?.remoteName ?? this.remoteName;\n const exposedModule = this.options?.exposedModule ?? this.exposedModule;\n\n if (!remoteEntry || !remoteName || !exposedModule) {\n return;\n }\n\n loadRemoteModule(remoteEntry, remoteName, exposedModule).then(federated => {\n this.compiler.compileModuleAsync(federated[exposedModule as string]).then(moduleFactory => {\n const rootModuleRef = moduleFactory.create(this.injector);\n const rootComponentFactory = rootModuleRef.componentFactoryResolver.resolveComponentFactory(\n federated[exposedModule as string].rootComponent,\n );\n const node = document.createElement('div');\n const { instance, hostView } = rootComponentFactory.create(this.injector, [], node);\n\n this.instance = instance as FederatedComponentInstance;\n this.instance.data = this.data;\n\n this.renderer.appendChild(this.moduleHostRef?.nativeElement, node);\n this.appRef.attachView(hostView);\n\n this.options?.onReady?.();\n this.isLoading$.next(false);\n });\n });\n }\n}\n","<div #moduleHost></div>\n\n<vl-loader *ngIf=\"!suppressLoading && (isLoading$ | async)\" [label]=\"loadingLabel\"></vl-loader>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloceapps/components';\nimport { FederatedComponent } from './federated.component';\n\n@NgModule({\n declarations: [FederatedComponent],\n imports: [CommonModule, LoaderModule],\n exports: [FederatedComponent],\n})\nexport class FederatedModule {}\n","import { Directive, OnDestroy } from '@angular/core';\nimport { LineItem } from '@veloceapps/core';\nimport { ConfigurationService, generateLineItem, getAttributeValue, LineItemWorker } from '@veloceapps/sdk/core';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { AttributeElement, ConfigurationElement, PortElement, TypeElement } from '../types';\nimport { ElementMetadata } from '../types/common.types';\nimport { parseBoundPath } from '../utils/path.utils';\n\n@Directive()\nexport class ConfigurationPlugin implements PluginComponent, OnDestroy {\n private modelSnapshot?: LineItem;\n private destroy$ = new Subject<void>();\n\n private elementMetadata: ElementMetadata;\n private configurationService: ConfigurationService;\n\n constructor(public host: ElementComponent & ConfigurationElement) {\n this.elementMetadata = this.host.injector.get(ELEMENT_METADATA);\n this.configurationService = this.host.injector.get(ConfigurationService);\n\n if (this.elementMetadata.model?.lineItem) {\n this.host.model$.pipe(takeUntil(this.destroy$)).subscribe(model => (this.modelSnapshot = model));\n\n const pathBlocks = parseBoundPath(this.elementMetadata.model?.lineItem);\n const { type, property, name } = pathBlocks.reverse()[0];\n\n this.host.boundName = name ?? type;\n\n this.register(type, property, name);\n }\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private register(type?: string, property?: string, name?: string): void {\n if (!type) {\n return;\n }\n\n if (!property) {\n this.registerType();\n } else if (property === 'ports' && name) {\n this.registerPort(name);\n } else if (property === 'attributes' && name) {\n this.registerAttribute(name);\n }\n }\n\n private registerType(): void {\n const remove = (): void => {\n const rootLineItem = this.configurationService.getSnapshot();\n if (!rootLineItem || !this.modelSnapshot) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(rootLineItem).remove(this.modelSnapshot.id).li);\n };\n\n this.typeHost.remove = remove;\n }\n\n private registerPort(name: string): void {\n const model$ = this.host.model$ as Observable<LineItem | undefined>;\n\n const portItems$ = model$.pipe(map(model => model?.lineItems.filter(li => li.port === this.host.boundName) ?? []));\n const portDomain$ = model$.pipe(map(model => model?.portDomains[this.host.boundName]));\n\n const add = (type: string, attributes: { name: string; value: any }[] = []): void => {\n if (!this.modelSnapshot) {\n return;\n }\n\n const portDomain = this.modelSnapshot.portDomains[name];\n if (!portDomain) {\n return;\n }\n\n const generated = generateLineItem(portDomain.name, type, this.modelSnapshot.id, attributes);\n this.configurationService.patch(\n new LineItemWorker(this.modelSnapshot).insert(this.modelSnapshot.id, generated).li,\n );\n };\n\n this.portHost.portItems$ = portItems$;\n this.portHost.portDomain$ = portDomain$;\n this.portHost.addPortItem = add;\n }\n\n private registerAttribute(name: string): void {\n if (!this.host.model$) {\n return;\n }\n\n const value$ = this.host.model$.pipe(map(model => getAttributeValue(model?.attributes ?? [], name)));\n\n const patch = (value: any): void => {\n if (!this.modelSnapshot) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(this.modelSnapshot).patchAttribute([{ name, value }]).li);\n };\n\n this.attributeHost.value$ = value$;\n this.attributeHost.patch = patch;\n }\n\n private get attributeHost(): ElementComponent & AttributeElement {\n return this.host as ElementComponent & AttributeElement;\n }\n\n private get typeHost(): ElementComponent & TypeElement {\n return this.host as ElementComponent & TypeElement;\n }\n\n private get portHost(): ElementComponent & PortElement {\n return this.host as ElementComponent & PortElement;\n }\n}\n","import { UIDefinitionType } from '@veloceapps/sdk/core';\nimport { Plugin } from './engine/models/plugin';\nimport { ConfigurationPlugin } from './plugins/configuration.plugin';\n\nexport const DEFAULT_PLUGINS: { [key in UIDefinitionType]: typeof Plugin[] } = {\n CONFIGURATION: [ConfigurationPlugin],\n DEFAULT: [],\n};\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, filter, map, Observable } from 'rxjs';\nimport { IntegrationAction } from '../types/integration.types';\n\nconst InitAction: IntegrationAction = { type: 'INIT' };\nconst ClearAction: IntegrationAction = { type: 'CLEAR' };\n\n@Injectable({ providedIn: 'root' })\nexport class IntegrationState<S = Dictionary<any>> {\n private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n private readonly action$ = new BehaviorSubject<IntegrationAction>(InitAction);\n\n public get state$(): Observable<S> {\n return this.stateSubj$.asObservable();\n }\n\n public get state(): S {\n return this.stateSubj$.getValue();\n }\n\n public patchState(update: Partial<S>): void {\n this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n }\n\n public dispatch(action: IntegrationAction): void {\n this.action$.next(action);\n }\n\n public listen$<P = any>(actionType: string): Observable<P> {\n return this.action$.pipe(\n filter(action => action.type === actionType),\n map(action => action.payload as P),\n );\n }\n\n public listenAll$<T extends IntegrationAction>(): Observable<T> {\n return this.action$.asObservable() as Observable<T>;\n }\n\n public clear(): void {\n this.stateSubj$.next({} as S);\n this.action$.next(ClearAction);\n }\n}\n","import * as angularCore from '@angular/core';\nimport * as angularForms from '@angular/forms';\nimport {\n CatalogApiService,\n DeltaApiService,\n DocumentAttachmentApiService,\n DocumentTemplatesApiService,\n PicklistsApiService,\n PriceApiService,\n QuoteApiService,\n RampApiService,\n SalesforceApiService,\n ShoppingCartSettingsApiService,\n} from '@veloceapps/api';\nimport {\n ConfigurationService,\n FlowConfigurationService,\n lineItemUtils,\n LineItemWorker,\n ProductImagesService,\n QuoteDraftService,\n} from '@veloceapps/sdk/core';\nimport * as lodash from 'lodash';\nimport * as rxjs from 'rxjs';\nimport * as rxjsOperators from 'rxjs/operators';\nimport * as cmsActions from './cms.actions';\nimport * as cmsInjectionTokens from './injection-tokens';\nimport { IntegrationState } from './services/integration.state';\nimport { TemplatesService } from './services/templates.service';\n\nconst VELOCE_LIBS = {\n '@veloceapps/sdk/core': {\n ConfigurationService,\n QuoteDraftService,\n FlowConfigurationService,\n LineItemWorker,\n ProductImagesService,\n ...lineItemUtils,\n },\n '@veloceapps/sdk/cms': {\n ...cmsInjectionTokens,\n ...cmsActions,\n TemplatesService,\n IntegrationState,\n },\n '@veloceapps/api': {\n SalesforceApiService,\n QuoteApiService,\n DocumentTemplatesApiService,\n DocumentAttachmentApiService,\n RampApiService,\n CatalogApiService,\n DeltaApiService,\n PicklistsApiService,\n PriceApiService,\n ShoppingCartSettingsApiService,\n },\n};\n\nconst VELOCE_LIBS_BACKWARDS_COMPATIBLE = Object.entries(VELOCE_LIBS).reduce(\n (trunk, [key, value]) => ({ ...trunk, [key.replace('@veloceapps/', '@veloce/')]: value }),\n {},\n);\n\nexport const vendorMap = {\n ...VELOCE_LIBS,\n\n // TODO: remove when projects/demos are migrated to @veloceapps organization libraries\n ...VELOCE_LIBS_BACKWARDS_COMPATIBLE,\n\n '@angular/core': angularCore,\n '@angular/forms': angularForms,\n rxjs: rxjs,\n 'rxjs/operators': rxjsOperators,\n lodash: lodash,\n};\n\nexport type VendorMap = typeof vendorMap;\n","import { Component, Type } from '@angular/core';\nimport { transform } from '@babel/standalone';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { flatten, kebabCase, set } from 'lodash';\nimport { DEFAULT_PLUGINS } from '../cms.default';\nimport { CONFIG } from '../cms.elements';\nimport {\n DEFAULT_PLUGINS_TOKEN,\n ELEMENT_CONFIG,\n ELEMENT_METADATA,\n SHARED_ELEMENT_METADATA,\n UI_DEFINITION_METADATA,\n VENDOR_MAP,\n} from '../injection-tokens';\nimport { ElementMetadata, ElementStyleDeclaration } from '../types';\nimport { vendorMap } from '../vendor-map';\n\nexport class ElementsResolver {\n public readonly elements: ElementMetadata[];\n\n private renderableElements: ElementMetadata[] = [];\n private sharedElements: ElementMetadata[] = [];\n\n constructor(private uiDef: UIDefinitionMetadata, elements: ElementMetadata[]) {\n const transpiledElements = this.transpileScripts(elements);\n\n this.sharedElements = this.flattenElements(transpiledElements).filter(el => this.isSharedElement(el));\n\n this.elements = transpiledElements.map(el => this.processElementMetadata(el)).filter(Boolean) as ElementMetadata[];\n\n this.renderableElements = this.getRenderableElements(this.elements);\n }\n\n public getNgComponents(): Type<any>[] {\n return this.renderableElements.map(el => this.resolveElement(el)).filter(Boolean) as Type<any>[];\n }\n\n private transpile(el: ElementMetadata): string | undefined {\n if (!el.script) {\n return;\n }\n\n const transformed = transform(el.script, {\n filename: el.name + '.ts',\n presets: ['typescript'],\n sourceMaps: 'inline',\n });\n\n return transformed.code ?? undefined;\n }\n\n private transpileScripts(elements: ElementMetadata[]): ElementMetadata[] {\n return elements.map(el => ({\n ...el,\n script: this.transpile(el),\n children: this.transpileScripts(el.children),\n }));\n }\n\n private flattenElements(elements: ElementMetadata[]): ElementMetadata[] {\n return flatten(elements.map(el => [el, ...this.flattenElements(el.children)]));\n }\n\n private isSharedElement(el: ElementMetadata): boolean {\n return Boolean(el.isShared) && el.type !== 'REFERENCE';\n }\n\n private getRenderableElements(elements: ElementMetadata[]): ElementMetadata[] {\n const renderable: ElementMetadata[] = [];\n\n for (const el of elements) {\n if (!this.isSharedElement(el)) {\n const children = el.children.filter(child => !this.isSharedElement(child));\n const renderableChildren = this.getRenderableElements(children);\n renderable.push({ ...el, children }, ...renderableChildren);\n }\n }\n\n return renderable;\n }\n\n private getSharedElement(element: ElementMetadata): ElementMetadata | undefined {\n if (!element.reference) {\n return;\n }\n\n return this.sharedElements.find(el => element.reference === el.name);\n }\n\n private resolveElementTemplate(element: ElementMetadata): string {\n const config = CONFIG[element.type];\n const template = !config.suppressTemplate ? element.template : '';\n\n return template || config.defaultTemplate || '';\n }\n\n private resolveElementStyles(element: ElementMetadata): string {\n const config = CONFIG[element.type];\n return !config.suppressStyles ? element.styles ?? '' : '';\n }\n\n private processElementMetadata(sourceElement: ElementMetadata): ElementMetadata | undefined {\n let finalElement: ElementMetadata;\n\n if (sourceElement.type === 'REFERENCE') {\n const sharedElement = this.getSharedElement(sourceElement);\n\n if (!sharedElement) {\n console.warn(`Shared element \"${sourceElement.reference}\" not found`);\n return;\n }\n\n finalElement = {\n ...sourceElement,\n children: this.getSharedChildren(sharedElement.children, sourceElement.path),\n type: sharedElement.type,\n template: sharedElement.template,\n styles: (sharedElement.styles ?? '') + '\\n' + (sourceElement.styles ?? ''),\n inputs: {\n ...sharedElement.inputs,\n ...sourceElement.inputs,\n },\n outputs: {\n ...sharedElement.outputs,\n ...sourceElement.outputs,\n },\n };\n } else {\n finalElement = sourceElement;\n delete sourceElement.reference;\n }\n\n finalElement.template = this.resolveElementTemplate(finalElement);\n finalElement.styles = this.resolveElementStyles(finalElement);\n\n return {\n ...finalElement,\n children: finalElement.children\n .map(child => this.processElementMetadata(child))\n .filter(Boolean) as ElementMetadata[],\n };\n }\n\n private getSharedChildren(children: ElementMetadata[], parentPath?: string): ElementMetadata[] {\n return children.map(c => {\n if (!c.path) {\n return c;\n }\n\n const [elName] = c.path.split('/').reverse();\n const path = parentPath + '/' + elName;\n\n return {\n ...c,\n path,\n children: this.getSharedChildren(c.children, path),\n };\n });\n }\n\n private resolveElement(element: ElementMetadata): Type<any> | undefined {\n const config = CONFIG[element.type];\n const defaultPlugins = DEFAULT_PLUGINS[this.uiDef.type] ?? [];\n\n if (!config) {\n console.warn(`Unknown element type \"${element.type}\"`);\n return;\n }\n\n const styles = this.getElementStyles(element);\n\n const component: Component = {\n selector: 'vl-element',\n template: element.template,\n ...(styles ? { styles: [styles] } : {}),\n providers: [\n { provide: DEFAULT_PLUGINS_TOKEN, useValue: defaultPlugins },\n { provide: UI_DEFINITION_METADATA, useValue: this.uiDef },\n { provide: ELEMENT_METADATA, useValue: element },\n { provide: SHARED_ELEMENT_METADATA, useValue: this.getSharedElement(element) },\n { provide: ELEMENT_CONFIG, useValue: config },\n { provide: VENDOR_MAP, useValue: vendorMap },\n ],\n };\n\n const cmp = Component(component)(class C extends config.component {});\n\n set(cmp, 'path', element.path);\n\n return cmp;\n }\n\n private getElementStyles(element: ElementMetadata): string | undefined {\n let result = '';\n\n const configuredStyles = this.convertInlineStylesToCSS(element.configuredStyles);\n if (configuredStyles) {\n // order is important: styles written by user in CSS code should has higher priority\n result += configuredStyles;\n }\n\n if (element.styles) {\n result += element.styles;\n }\n\n return result || undefined;\n }\n\n private convertInlineStylesToCSS(styles?: ElementStyleDeclaration): string {\n if (!styles) {\n return '';\n }\n\n const entries = Object.entries(styles);\n let result = ':host {\\n';\n\n entries.forEach(([style, value]) => {\n result += ` ${kebabCase(style)}:${value};\\n`;\n });\n\n result += '}\\n';\n\n return result;\n }\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { Compiler, Injectable, ModuleWithComponentFactories, NgModule, Type } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { UIDefinitionMetadata } from '@veloceapps/sdk/core';\nimport { from, map, Observable, tap } from 'rxjs';\nimport { ElementChildrenComponent } from '../components/element-children/element-children.component';\nimport { ElementRendererComponent } from '../components/element-renderer/element-renderer.component';\nimport { CustomTemplateDirective } from '../directives/custom-template.directive';\nimport { FederatedModule } from '../modules/federated/federated.module';\nimport { CompilationResult, ElementMetadata } from '../types';\nimport { ElementsResolver } from '../utils';\nimport { DynamicModuleService } from './dynamic-module.service';\n\n@Injectable()\nexport class LauncherService {\n private module?: Type<NgModule>;\n private moduleInstance?: ModuleWithComponentFactories<NgModule>;\n\n constructor(private compiler: Compiler, private dynamicModuleService: DynamicModuleService) {}\n\n public compileModule(uiDef: UIDefinitionMetadata, elements: ElementMetadata[]): Observable<CompilationResult> {\n const elementsResolver = new ElementsResolver(uiDef, elements);\n\n this.dynamicModuleService.elementsTree = elementsResolver.elements;\n this.module = this.getModule(elementsResolver.getNgComponents());\n\n return from(this.compiler.compileModuleAndAllComponentsAsync(this.module)).pipe(\n tap(m => {\n this.dynamicModuleService.componentFactories = m.componentFactories;\n this.moduleInstance = m;\n }),\n map(m => ({ module: m, elements: elementsResolver.elements })),\n );\n }\n\n public destroy(): void {\n if (this.moduleInstance) {\n this.dynamicModuleService.clear();\n this.moduleInstance = undefined;\n }\n\n if (this.module) {\n this.compiler.clearCacheFor(this.module);\n this.module = undefined;\n }\n }\n\n private getModule(components: Type<any>[]): Type<NgModule> {\n const staticComponents = [ElementChildrenComponent, ElementRendererComponent, CustomTemplateDirective];\n\n @NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, FederatedModule, DragDropModule, ScrollingModule],\n declarations: [...staticComponents, ...components],\n jit: true,\n })\n class DynamicModule {}\n\n return DynamicModule;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { ConfigurationRuntimeService, ConfigurationService, UIDefinition, UIElement } from '@veloceapps/sdk/core';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, catchError, forkJoin, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { IntegrationState } from '../../services';\nimport { IOProviderService } from '../../services/io-provider.service';\nimport { LauncherService } from '../../services/launcher.service';\nimport { TemplatesService } from '../../services/templates.service';\nimport { ElementMetadata } from '../../types/common.types';\nimport { elementToMetadata } from '../../utils/element.utils';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-cms-preview',\n templateUrl: './preview.component.html',\n styleUrls: ['./preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [IOProviderService, TemplatesService],\n // use shadow DOM to prevent UI from being affected by global styles\n encapsulation: ViewEncapsulation.ShadowDom,\n})\nexport class PreviewComponent implements OnInit, OnDestroy {\n @Input() public modelId?: string;\n @Input() public uiDefinition?: UIDefinition;\n @Input() public clearState = false;\n\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n public elements: ElementMetadata[] = [];\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private launcherService: LauncherService,\n private configurationService: ConfigurationService,\n private messageService: MessageService,\n private runtimeService: ConfigurationRuntimeService,\n private integrationState: IntegrationState,\n ) {}\n\n public ngOnInit(): void {\n if (this.clearState) {\n this.integrationState.clear();\n }\n\n this.startPreview();\n }\n\n public ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.configurationService.reset();\n }\n\n private initializeConfiguration$(): Observable<any> {\n const isAlreadyInitialized = this.runtimeService.isInitialized;\n if (!this.uiDefinition || this.uiDefinition.type !== 'CONFIGURATION' || isAlreadyInitialized) {\n return of({});\n }\n\n if (!this.modelId) {\n console.warn(`No modelId is given for uiDefinition with '${this.uiDefinition.type}' type`);\n return of({});\n }\n\n // If still not initialized - init configuration in Test mode\n return this.runtimeService\n .initTestMode(this.modelId, this.uiDefinition)\n .pipe(switchMap(() => this.configurationService.configure()));\n }\n\n private elementToMetadataSafe(elements: UIElement[]): ElementMetadata[] {\n try {\n return elements.map(element => elementToMetadata(element));\n } catch (e) {\n console.error(e);\n\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: String(e) });\n }\n\n return [];\n }\n }\n\n private startPreview(): void {\n if (!this.uiDefinition) {\n return;\n }\n\n const { children, ...uiDefinitionMeta } = this.uiDefinition;\n const elements = this.elementToMetadataSafe(children);\n\n const compilation$ = this.launcherService.compileModule(uiDefinitionMeta, elements);\n\n forkJoin([compilation$, this.initializeConfiguration$()])\n .pipe(\n tap(([result]) => {\n this.elements = result.elements;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(error => {\n console.error(error);\n\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n this.state$.next({ loading: false, failure: true });\n\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n}\n","<ng-container *ngIf=\"state$ | async as state\">\n <vl-loader *ngIf=\"state.loading; else content\" [label]=\"'Loading UI'\"></vl-loader>\n\n <ng-template #content>\n <ng-container *ngIf=\"!state.failure\">\n <vl-cms-element-renderer *ngFor=\"let el of elements\" [meta]=\"el\"></vl-cms-element-renderer>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { ElementRendererComponent } from './element-renderer.component';\n\n@NgModule({\n declarations: [ElementRendererComponent],\n exports: [ElementRendererComponent],\n})\nexport class ElementRendererModule {}\n","import { NgModule } from '@angular/core';\nimport { ElementRendererModule } from '../element-renderer/element-renderer.module';\nimport { ElementChildrenComponent } from './element-children.component';\n\n@NgModule({\n declarations: [ElementChildrenComponent],\n imports: [ElementRendererModule],\n exports: [ElementChildrenComponent],\n})\nexport class ElementChildrenModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloceapps/components';\nimport { IntegrationState } from '../../services';\nimport { ElementChildrenModule } from '../element-children/element-children.module';\nimport { ElementRendererModule } from '../element-renderer/element-renderer.module';\nimport { PreviewComponent } from './preview.component';\n\n@NgModule({\n declarations: [PreviewComponent],\n imports: [CommonModule, LoaderModule, ElementRendererModule, ElementChildrenModule],\n providers: [IntegrationState],\n exports: [PreviewComponent],\n})\nexport class PreviewModule {}\n","import { ElementDefaultMetadata } from '../types';\n\nexport function ElementDefinition(definition: ElementDefaultMetadata) {\n return function (constructor: any): any {\n return constructor;\n };\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { CoreModule } from '@veloceapps/core';\nimport { SdkCoreModule } from '@veloceapps/sdk/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { IntegrationState } from './services';\nimport { DynamicModuleService } from './services/dynamic-module.service';\nimport { LauncherService } from './services/launcher.service';\n\n@NgModule({\n imports: [CommonModule, CoreModule, ApiModule, SdkCoreModule],\n providers: [LauncherService, IntegrationState, DynamicModuleService, DialogService],\n})\nexport class LauncherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["angularCore"],"mappings":"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"}
@@ -1076,6 +1076,9 @@ class FlowConfigurationService {
1076
1076
  get pricePlans$() {
1077
1077
  return this.quoteDraftService.quoteDraft$.pipe(map$1(({ pricePlans }) => pricePlans));
1078
1078
  }
1079
+ get activeMetrics$() {
1080
+ return this.quoteDraftService.quoteDraft$.pipe(map$1(({ activeMetrics }) => activeMetrics));
1081
+ }
1079
1082
  get chargesSnapshot() {
1080
1083
  var _a, _b;
1081
1084
  return (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.charges) !== null && _b !== void 0 ? _b : {};
@@ -1084,6 +1087,10 @@ class FlowConfigurationService {
1084
1087
  var _a, _b;
1085
1088
  return (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.pricePlans) !== null && _b !== void 0 ? _b : {};
1086
1089
  }
1090
+ get activeMetricsSnapshot() {
1091
+ var _a, _b;
1092
+ return (_b = (_a = this.quoteDraftService.quoteDraft) === null || _a === void 0 ? void 0 : _a.activeMetrics) !== null && _b !== void 0 ? _b : [];
1093
+ }
1087
1094
  get contextSnapshot() {
1088
1095
  return this.contextService.resolve();
1089
1096
  }