@veloceapps/sdk 2.0.2 → 2.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"veloce-sdk-cms.js","sources":["../../../../libs/sdk/cms/injection-tokens.ts","../../../../libs/sdk/cms/engine/models/entity.ts","../../../../libs/sdk/cms/components/element.component.ts","../../../../libs/sdk/cms/utils/line-item.utils.ts","../../../../libs/sdk/cms/types/line-item.types.ts","../../../../libs/sdk/cms/modules/configuration/helpers.ts","../../../../libs/sdk/cms/modules/configuration/services/configuration.service.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/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/plugins/configuration.plugin.ts","../../../../libs/sdk/cms/plugins/script.plugin.ts","../../../../libs/sdk/cms/cms.default.ts","../../../../libs/sdk/cms/plugins/io.plugin.ts","../../../../libs/sdk/cms/cms.elements.ts","../../../../libs/sdk/cms/utils/elements-resolver.ts","../../../../libs/sdk/cms/utils/federated.util.ts","../../../../libs/sdk/cms/components/federated/federated.component.ts","../../../../libs/sdk/cms/components/federated/federated.component.html","../../../../libs/sdk/cms/components/federated/federated.module.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/modules/configuration/configuration.module.ts","../../../../libs/sdk/cms/launcher.module.ts","../../../../libs/sdk/cms/veloce-sdk-cms.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Plugin } from './engine/models/plugin';\nimport { ElementConfig, ElementMetadata } from './types/common.types';\nimport { UIDefinitionMetadata } from './types/ui-definition.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');\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() {\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) {\n this.plugins.push(plugin);\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Injector, OnDestroy, OnInit } 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 extends Entity implements OnInit, AfterViewInit, OnDestroy {\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 ngOnInit(): void {\n this.plugins.forEach(plugin => plugin.ngOnInit?.());\n }\n\n ngAfterViewInit() {\n this.plugins.forEach(plugin => plugin.ngAfterViewInit?.());\n }\n\n ngOnDestroy(): void {\n this.plugins.forEach(plugin => plugin.ngOnDestroy?.());\n }\n}\n","import { Attribute, CfgStatus, EntityUtil, LineItem, PortDomain } from '@veloce/core';\nimport { compact, Dictionary, sortBy } from 'lodash';\nimport { PathBlock } from '../types/configuration.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 findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n return EntityUtil.findByFieldHierarchically('id', id, lineItems, 'lineItems');\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n const insertData = lineItem.id === parentId ? [toInsert] : [];\n return {\n ...lineItem,\n lineItems: [\n ...insertData,\n ...lineItem.lineItems.map(li => {\n return insertLineItem(li, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n return {\n ...lineItem,\n lineItems: lineItem.lineItems\n .map(li => {\n if (li.id === idToRemove) {\n return;\n } else if (li.lineItems.length) {\n return removeLineItem(li, idToRemove);\n }\n return li;\n })\n .filter(r => !!r) as LineItem[],\n };\n};\n\nexport const replaceLineItem = (lineItem: LineItem, replaceTo: LineItem): LineItem => {\n if (lineItem.id === replaceTo.id) {\n return { ...replaceTo };\n }\n\n return {\n ...lineItem,\n lineItems: lineItem.lineItems.map(li => {\n if (li.id === replaceTo.id) {\n return replaceTo;\n } else if (li.lineItems.length) {\n return replaceLineItem(li, replaceTo);\n }\n return li;\n }),\n };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []) => {\n const filtered = attributes.filter(({ name }) => names.includes(name));\n return sortBy(filtered, [({ name }) => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (\n originalAttributes: Attribute[],\n attributesToUpsert: { name: string; value: any }[],\n) => {\n return attributesToUpsert.reduce((acc, { name, value }) => {\n const [origAttr] = getAttributes(acc, [name]);\n return [\n ...acc.filter(attr => attr.name !== name),\n { ...(origAttr ?? { name }), cfgStatus: 'User' as CfgStatus, value },\n ];\n }, originalAttributes);\n};\n\nexport const patchAttributes = (rootLineItem: LineItem, id: string, attrs: { name: string; value: any }[]) => {\n const lineItem = findLineItem(id, [rootLineItem]);\n\n if (!lineItem) {\n return rootLineItem;\n }\n\n const attributes = upsertAttributes(lineItem.attributes, attrs);\n return replaceLineItem(rootLineItem, { ...lineItem, attributes });\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n port: string,\n type: string,\n parentId: string,\n attributes: { name: string; value: any }[] = [],\n lineItems: LineItem[] = [],\n): LineItem => {\n return {\n port,\n type,\n actionCode: 'ADD',\n cfgStatus: 'New',\n attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n lineItems,\n parentId,\n qty: 1,\n } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n const [net, list] = domainType?.recommendedPrices\n ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n .reduce(\n (acc, rp) => {\n const [netPrice, listPrice] = acc;\n return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n },\n [0, 0],\n ) ?? [0, 0];\n\n return { net, list };\n};\n","import { LineItem } from '@veloce/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from '../utils/line-item.utils';\n\nexport class LineItemWorker {\n public li: LineItem;\n\n constructor(src: LineItem) {\n this.li = { ...src };\n }\n\n public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n }\n\n public remove(id: string): LineItemWorker {\n return new LineItemWorker(removeLineItem(this.li, id));\n }\n\n public replace(toReplace: LineItem): LineItemWorker {\n return new LineItemWorker(replaceLineItem(this.li, toReplace));\n }\n\n public patchAttribute(attrs: { name: string; value: any }[], id?: string): LineItemWorker {\n return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs));\n }\n}\n","import { LineItem, UUID } from '@veloce/core';\nimport { UIDefinitionProps } from '../../types/ui-definition.types';\nimport { RuntimeContext } from './types/configuration.types';\n\nexport const getDefaultLineItem = (context: RuntimeContext, uiDefinitionProperties: UIDefinitionProps): LineItem => {\n const id = UUID.UUID();\n\n const lineItem: LineItem = {\n id,\n type: uiDefinitionProperties.rootType ?? '',\n cfgStatus: 'Default',\n qty: 1,\n productName: context.properties?.displayName || context.productName,\n productId: context.productId ?? '',\n offeringId: context.offeringId,\n ...(context.offeringId\n ? { offeringId: context.offeringId, offeringInstanceId: context.offeringInstanceId || id }\n : {}),\n } as LineItem;\n\n return lineItem;\n};\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloce/api';\nimport {\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationMode,\n ConfigurationRequest,\n LineItem,\n RuntimeModel,\n} from '@veloce/core';\nimport { ContextService, QuoteStates, RuntimeMode, RuntimeStep } from '@veloce/sdk/runtime';\nimport { Dictionary } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, combineLatest, Observable, of, shareReplay, throwError } from 'rxjs';\nimport { catchError, first, map, switchMap, tap } from 'rxjs/operators';\nimport { LineItemWorker } from '../../../types/line-item.types';\nimport { UIDefinitionProps } from '../../../types/ui-definition.types';\nimport { getDefaultLineItem } from '../helpers';\nimport { RuntimeContext } from '../types/configuration.types';\n\n@Injectable()\nexport class ConfigurationService {\n private mode = ConfigurationMode.SEARCH;\n private states: QuoteStates = {};\n private uiDefinitionProperties: UIDefinitionProps = {};\n private runtimeModel?: RuntimeModel;\n private runtimeContext?: RuntimeContext;\n\n private lineItem = new BehaviorSubject<LineItem | undefined>(undefined);\n\n constructor(\n private apiService: ConfigurationApiService,\n private contextService: ContextService,\n private configurationApiService: ConfigurationApiService,\n private messageService: MessageService,\n ) {}\n\n public init(modelId: string, uiDefinitionProperties: UIDefinitionProps) {\n this.uiDefinitionProperties = uiDefinitionProperties;\n\n return combineLatest([\n this.apiService.getRuntimeDataByModelId(modelId),\n this.contextService.create('TestId', ConfigurationContextMode.TEST),\n ]).pipe(\n first(),\n switchMap(([runtimeData]) => {\n this.runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n const runtimeContext: RuntimeContext = {\n modelId: modelId,\n runtimeModel: this.runtimeModel,\n runtimeMode: RuntimeMode.TEST,\n };\n this.runtimeContext = runtimeContext;\n\n return this.configure();\n }),\n );\n }\n\n public patch(lineItem: LineItem): void {\n if (!this.lineItem.value) {\n return;\n }\n\n this.states.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;\n\n this.configure()\n .pipe(\n catchError(error => {\n this.messageService.add({\n severity: 'error',\n summary: error,\n });\n\n // bounce back if configuration call has failed\n this.lineItem.next(this.lineItem.value ? { ...this.lineItem.value } : undefined);\n return of();\n }),\n )\n .subscribe();\n }\n\n public get(): Observable<LineItem | undefined> {\n return this.lineItem?.asObservable().pipe(shareReplay());\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.lineItem.value ? { ...this.lineItem.value } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel | undefined {\n return this.runtimeModel;\n }\n public getRuntimeContext(): RuntimeContext | undefined {\n return this.runtimeContext;\n }\n\n private configure(): Observable<LineItem | undefined> {\n if (!this.runtimeContext || !this.runtimeModel) {\n return of(undefined);\n }\n\n const lineItem =\n this.states.configurableRamp ?? getDefaultLineItem(this.runtimeContext, this.uiDefinitionProperties);\n const configurationRequest = this.createRequest(lineItem);\n configurationRequest.lineItems = this.states.currentState || [];\n configurationRequest.asset = this.states.asset;\n const runtimeModel = this.runtimeContext?.runtimeModel;\n\n let request$: Observable<LineItem>;\n if (this.uiDefinitionProperties.pricingEnabled) {\n request$ = this.configurationApiService.configureAndPriceLineItem(configurationRequest, this.runtimeModel).pipe(\n map(({ lineItem, context }) => {\n if (context) {\n this.contextService.update({ properties: context.properties });\n }\n\n return lineItem;\n }),\n );\n } else {\n request$ = this.configurationApiService.configureLineItem(configurationRequest, runtimeModel);\n }\n\n return request$.pipe(\n tap(lineItem => lineItem && this.lineItem?.next(lineItem)),\n catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))),\n );\n }\n\n private createRequest(lineItem: LineItem): ConfigurationRequest {\n const runtimeContext = this.runtimeContext as RuntimeContext;\n\n if (runtimeContext.runtimeMode === RuntimeMode.TEST) {\n const properties: Dictionary<any> = {\n ...runtimeContext.properties,\n ModelId: runtimeContext.modelId,\n RuntimeMode: ConfigurationContextMode.TEST,\n PricingEnabled: String(this.uiDefinitionProperties.pricingEnabled),\n StartDate: runtimeContext.properties?.StartDate ?? new Date().toISOString().substring(0, 10),\n PriceListId: this.uiDefinitionProperties.priceList,\n };\n\n const ctx: Partial<ConfigurationContext> = {\n priceListId: this.uiDefinitionProperties.priceList,\n properties,\n };\n\n this.contextService.update(ctx);\n } else {\n const context = this.contextService.resolve();\n\n if (context?.properties && runtimeContext.properties?.StartDate) {\n this.contextService.update({\n properties: {\n ...context.properties,\n ...runtimeContext.properties,\n },\n });\n }\n }\n\n return {\n lineItem,\n mode: this.mode,\n step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,\n attributeDomainMode: 'ALL',\n context: this.contextService.resolve() as ConfigurationContext,\n };\n }\n}\n","import { ElementMetadata, ElementPath } from '../types';\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 return {\n segments,\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 isRelativePath = path.segments[0]?.[0] === '.';\n\n if (!isRelativePath) {\n return path.segments.join('/');\n }\n\n const segments = [...path.segments];\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 set componentFactories(data: ComponentFactory<any>[]) {\n this._componentFactories = data;\n }\n\n get componentFactories(): ComponentFactory<any>[] {\n return this._componentFactories;\n }\n\n getComponentFactory(element: ElementMetadata): ComponentFactory<any> | undefined {\n return this.componentFactories.find(f => (f.componentType as any).path === element.path);\n }\n\n get elementsTree(): ElementMetadata[] {\n return this._elementsTree;\n }\n\n set elementsTree(tree: ElementMetadata[]) {\n this._elementsTree = tree;\n }\n\n clear() {\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 if (!this.inputs[path][name]) {\n this.inputs[path][name] = subject ?? new BehaviorSubject<any>(undefined);\n }\n\n return this.inputs[path][name];\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { Dictionary } from 'lodash';\n\n@Injectable()\nexport class TemplatesService {\n private templates: Dictionary<TemplateRef<any>> = {};\n\n public register(name: string, templateRef: TemplateRef<any>) {\n this.templates[name] = templateRef;\n }\n\n public get(name: string): TemplateRef<any> | undefined {\n return this.templates[name];\n }\n}\n","import { ElementMetadata, UIElement, UIElementMetadata } from '../types';\n\nconst EXPORTED_CLASS_REGEX = /export class (\\S+)/;\nconst METADATA_DECORATOR_REGEX = /@ElementDefinition\\(([^)]+)\\)(\\n|.)*export class/g;\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 console.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): UIElement => {\n const elMetadata: UIElementMetadata = {\n name: metadata.name,\n type: metadata.type,\n model: metadata.model,\n module: metadata.module,\n inputs: metadata.inputs,\n outputs: metadata.outputs,\n children: metadata.children.map(({ name }) => name),\n };\n const script =\n metadata.script &&\n window.btoa(\n metadata.script.replace(\n EXPORTED_CLASS_REGEX,\n `@ElementDefinition(${JSON.stringify(elMetadata)}) export 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: metadata.children.map(meta => metadataToElement(meta)),\n };\n};\n\nexport const extractElementMetadata = (script: string): UIElementMetadata => {\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 eval(`(${metadataString})`);\n};\n\nexport const extendElementMetadata = (script: string, extend: Partial<UIElementMetadata>): 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 = { ...eval(`(${metadataString})`), ...extend };\n return script.replace(metadataString, JSON.stringify(updated));\n};\n","import { Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class ElementContextService {\n metadata?: ElementMetadata;\n 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 '@veloce/core';\nimport { Dictionary, isArray, pull } from 'lodash';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ConfigurationService } from '../../modules/configuration/services/configuration.service';\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/line-item.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 }) el?: ViewContainerRef;\n\n @Input() 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 ngOnInit() {\n this.elementContext.metadata = this.meta;\n this.factory = this.dynamicModuleService.getComponentFactory(this.meta);\n\n this.createComponents();\n }\n\n 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 createFromLineItem(path: string): void {\n const parentComp = this.parentInjector.get(ElementRendererComponent, null);\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 (property === 'ports' && !finalPath.property && parentPath !== path) {\n return model.lineItems.filter(({ port }) => port === name) ?? [];\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) => {\n const key = String(data?.id ?? UUID.UUID());\n const ref = this.refs[key] ? this.updateComponent(key, data) : this.createComponent(data);\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> {\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): ComponentRef<any> | undefined {\n if (!this.factory) {\n return;\n }\n\n const componentRef = this.el?.createComponent(this.factory);\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(key: string, data?: any): ComponentRef<any> | undefined {\n const ref = this.refs[key];\n ref?.instance.model$.next(data);\n\n return ref;\n }\n\n private destroyComponent(key: string) {\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() customTemplate: string | undefined;\n\n ngAfterViewInit(): void {\n if (!this.customTemplate) {\n return;\n }\n\n this.templatesService.register(this.customTemplate, this.templateRef);\n }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { LineItem } from '@veloce/core';\nimport { map, Subject, takeUntil } from 'rxjs';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { ConfigurationService } from '../modules/configuration/services/configuration.service';\nimport { AttributeElement, ConfigurationElement, PortElement, TypeElement } from '../types';\nimport { ElementMetadata } from '../types/common.types';\nimport { LineItemWorker } from '../types/line-item.types';\nimport { generateLineItem, getAttributeValue, parseBoundPath } from '../utils/line-item.utils';\n\n@Directive()\nexport class ConfigurationPlugin implements PluginComponent, OnInit, 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\n ngOnInit(): void {\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 ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private register(type?: string, property?: string, name?: string) {\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 = (id: string): void => {\n const rootLineItem = this.configurationService.getSnapshot();\n if (!rootLineItem) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(rootLineItem).remove(id).li);\n };\n\n this.typeHost.remove = remove;\n }\n\n private registerPort(name: string): void {\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.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) => {\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() {\n return this.host as ElementComponent & AttributeElement;\n }\n\n private get typeHost() {\n return this.host as ElementComponent & TypeElement;\n }\n\n private get portHost() {\n return this.host as ElementComponent & PortElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport * as angularCore from '@angular/core';\nimport { Directive } from '@angular/core';\nimport * as angularForms from '@angular/forms';\nimport { UUID } from '@veloce/core';\nimport * as lodash from 'lodash';\nimport { Dictionary } from 'lodash';\nimport * as rxjs from 'rxjs';\nimport * as rxjsOperators from 'rxjs/operators';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport * as vlInjectionTokens from '../injection-tokens';\nimport { ELEMENT_METADATA, SHARED_ELEMENT_METADATA } from '../injection-tokens';\nimport * as vlCmsModules from '../modules';\nimport { TemplatesService } from '../services/templates.service';\nimport { ElementMetadata } from '../types/common.types';\nimport * as vlCmsLineItemTypes from '../types/line-item.types';\nimport * as vlCmsUtils from '../utils';\n\nconst vendorMap: Dictionary<any> = {\n '@veloce/sdk/cms': {\n ...vlCmsModules,\n ...vlCmsUtils,\n ...vlCmsLineItemTypes,\n ...vlInjectionTokens,\n TemplatesService,\n },\n '@angular/core': angularCore,\n '@angular/forms': angularForms,\n rxjs: rxjs,\n 'rxjs/operators': rxjsOperators,\n lodash: lodash,\n};\n\nconst normalizeImports = (script: 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) => `const ${g1} = vendor['${src}'];`);\n return result;\n};\n\n@Directive()\nexport class ScriptPlugin implements PluginComponent {\n private document: Document;\n\n constructor(public host: ElementComponent) {\n this.document = this.host.injector.get(DOCUMENT);\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const sharedElementMetadata: ElementMetadata | undefined = this.host.injector.get(SHARED_ELEMENT_METADATA);\n\n if (sharedElementMetadata?.script) {\n this.addScript(sharedElementMetadata.script);\n }\n\n if (elementMetadata.script) {\n this.addScript(elementMetadata.script);\n }\n }\n\n private addScript(scriptStr: string) {\n const id = btoa(UUID.UUID());\n const script = this.document.createElement('script');\n script.type = `text/javascript`;\n\n let scriptContent = normalizeImports(scriptStr);\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](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","import { Plugin } from './engine/models/plugin';\nimport { ConfigurationPlugin } from './plugins/configuration.plugin';\nimport { ScriptPlugin } from './plugins/script.plugin';\nimport { UIDefinitionType } from './types/ui-definition.types';\n\nexport const DEFAULT_PLUGINS: { [key in UIDefinitionType]: typeof Plugin[] } = {\n CONFIGURATION: [ScriptPlugin, ConfigurationPlugin],\n DEFAULT: [ScriptPlugin],\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 { ElementComponent } from './components/element.component';\nimport { IOPlugin } from './plugins/io.plugin';\nimport { ElementConfig, ELEMENT_TYPE } from './types/common.types';\n\nexport const CONFIG: { [key in ELEMENT_TYPE]: ElementConfig } = {\n CUSTOM: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n CONTAINER: {\n component: ElementComponent,\n template: '<element-children></element-children>',\n plugins: [IOPlugin],\n },\n SERVICE: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n REFERENCE: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n};\n","import { Component, Type } from '@angular/core';\nimport { transform } from '@babel/standalone';\nimport { flatten, 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} from '../injection-tokens';\nimport { ElementMetadata, UIDefinitionMetadata } from '../types';\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 this.elements = this.transpileScripts(elements);\n\n const flatElements = this.flattenElements(this.elements);\n\n for (const el of flatElements) {\n if (this.isSharedElement(el)) {\n this.sharedElements.push(el);\n } else {\n this.renderableElements.push(el);\n }\n }\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.reference) && el.type !== 'REFERENCE';\n }\n\n private getSharedElement(element: ElementMetadata): ElementMetadata | undefined {\n if (element.type !== 'REFERENCE') {\n return;\n }\n\n return this.sharedElements.find(el => element.reference === el.name);\n }\n\n private processElementMetadata(\n element: ElementMetadata,\n sharedElement?: ElementMetadata,\n ): ElementMetadata | undefined {\n if (element.type === 'REFERENCE') {\n if (!sharedElement) {\n console.warn(`Shared element \"${element.reference}\" not found`);\n return;\n }\n\n return {\n ...element,\n type: sharedElement.type,\n template: sharedElement.template,\n styles: sharedElement.styles,\n inputs: {\n ...sharedElement.inputs,\n ...element.inputs,\n },\n outputs: {\n ...sharedElement.outputs,\n ...element.outputs,\n },\n };\n }\n\n return element;\n }\n\n private resolveElement(sourceElement: ElementMetadata): Type<any> | undefined {\n const sharedElement = this.getSharedElement(sourceElement);\n const element = this.processElementMetadata(sourceElement, sharedElement);\n if (!element) {\n return;\n }\n\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 component: Component = {\n selector: 'vl-element',\n template: element.template || config.template || '',\n ...(element.styles ? { styles: [element.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: sharedElement },\n { provide: ELEMENT_CONFIG, useValue: config },\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 public getNgComponents(): Type<any>[] {\n return this.renderableElements.map(el => this.resolveElement(el)).filter(Boolean) as Type<any>[];\n }\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 = () => {\n moduleMap[remoteEntry] = true;\n resolve(); // window is the global namespace\n };\n\n document.body.append(script);\n });\n}\n\nasync function lookupExposedModule<T>(remoteName: string, exposedModule: string): Promise<T> {\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 as T;\n}\n\nexport type LoadRemoteModuleOptions = {\n remoteEntry: string;\n remoteName: string;\n exposedModule: string;\n};\n\nexport async function loadRemoteModule(options: LoadRemoteModuleOptions): Promise<any> {\n await loadRemoteEntry(options.remoteEntry);\n\n return await lookupExposedModule<any>(options.remoteName, options.exposedModule);\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Compiler,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { loadRemoteModule } from '../../utils/federated.util';\nimport { LineItem } from '@veloce/core';\n\nenum IntegrationEvent {\n Init = 'Init',\n}\n\ninterface InputData {\n rootLineItem: LineItem;\n}\n\ninterface IntegrationEventPayload {\n type: IntegrationEvent;\n payload?: unknown;\n}\n\ninterface InegrationComponentInstance extends OnChanges {\n integrationEvent: EventEmitter<IntegrationEventPayload>;\n integrationAppRef: ApplicationRef;\n data?: InputData;\n eventData?: IntegrationEventPayload;\n}\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 AfterViewInit, OnChanges {\n @ViewChild('federatedComponent', { read: ViewContainerRef }) federatedComponent?: ViewContainerRef;\n @ViewChild('foo', { read: TemplateRef }) foo?: TemplateRef<unknown>;\n @ViewChild('moduleHost', { static: false }) moduleHostRef?: ElementRef;\n\n @Input() remoteEntry?: string;\n @Input() remoteName?: string;\n @Input() exposedModule?: string;\n @Input() data?: InputData;\n @Input() eventData?: IntegrationEventPayload;\n @Output() private integrationEvent = new EventEmitter<IntegrationEventPayload>();\n\n moduleReady = false;\n\n private instance?: InegrationComponentInstance;\n\n constructor(\n private injector: Injector,\n private compiler: Compiler,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.remoteEntry || !this.remoteName || !this.exposedModule) {\n return;\n }\n\n loadRemoteModule({\n remoteEntry: this.remoteEntry,\n remoteName: this.remoteName,\n exposedModule: this.exposedModule,\n }).then(federated => {\n this.compiler.compileModuleAsync(federated[this.exposedModule as string]).then(moduleFactory => {\n const rootModuleRef = moduleFactory.create(this.injector);\n const rootComponentFactory = rootModuleRef.componentFactoryResolver.resolveComponentFactory(\n federated[this.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 InegrationComponentInstance;\n this.instance.data = this.data;\n this.instance.eventData = this.eventData;\n this.instance.integrationEvent = this.integrationEvent;\n\n this.renderer.appendChild(this.moduleHostRef?.nativeElement, node);\n this.appRef.attachView(hostView);\n });\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) {\n return;\n }\n\n this.instance.ngOnChanges(changes);\n }\n}\n","<div #moduleHost></div>\n","import { NgModule } from '@angular/core';\nimport { FederatedComponent } from './federated.component';\n\n@NgModule({\n declarations: [FederatedComponent],\n exports: [FederatedComponent],\n})\nexport class FederatedModule {}\n","import { CommonModule } from '@angular/common';\nimport { Compiler, Injectable, ModuleWithComponentFactories, NgModule, Type } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { from, 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 { ElementMetadata } from '../types';\nimport { UIDefinitionMetadata } from '../types/ui-definition.types';\nimport { ElementsResolver } from '../utils/elements-resolver';\nimport { DynamicModuleService } from './dynamic-module.service';\nimport { FederatedModule } from '../components/federated/federated.module';\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(\n elements: ElementMetadata[],\n uiDefs: UIDefinitionMetadata,\n ): Observable<ModuleWithComponentFactories<NgModule>> {\n this.module = this.getModule(elements, uiDefs);\n return from(this.compiler.compileModuleAndAllComponentsAsync(this.module)).pipe(\n tap(m => {\n this.dynamicModuleService.componentFactories = m.componentFactories;\n this.moduleInstance = m;\n }),\n );\n }\n\n public destroy() {\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(elements: ElementMetadata[], uiDef: UIDefinitionMetadata): Type<NgModule> {\n const staticComponents = [ElementChildrenComponent, ElementRendererComponent, CustomTemplateDirective];\n const elementsResolver = new ElementsResolver(uiDef, elements);\n this.dynamicModuleService.elementsTree = elementsResolver.elements;\n\n @NgModule({\n imports: [CommonModule, ReactiveFormsModule, FederatedModule],\n declarations: [...staticComponents, ...elementsResolver.getNgComponents()],\n jit: true,\n })\n class DynamicModule {}\n\n return DynamicModule;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, catchError, forkJoin, Observable, of, Subject, takeUntil, tap } from 'rxjs';\nimport { ConfigurationService } from '../../modules/configuration/services/configuration.service';\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 { UIDefinition, UIDefinitionProps } from '../../types/ui-definition.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, ConfigurationService, TemplatesService],\n})\nexport class PreviewComponent implements OnInit, OnDestroy {\n @Input() modelId?: string;\n @Input() uiDefinition?: UIDefinition;\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 ) {}\n\n ngOnInit() {\n this.startPreview();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private startPreview() {\n if (!this.uiDefinition) {\n return;\n }\n\n const { children, ...uiDefinitionMeta } = this.uiDefinition;\n this.elements = children.map(child => elementToMetadata(child));\n\n const initializers: Observable<any>[] = [this.launcherService.compileModule(this.elements, uiDefinitionMeta)];\n\n if (this.uiDefinition.type === 'CONFIGURATION') {\n if (!this.modelId) {\n console.warn(`No modelId is given for uiDefinition with '${this.uiDefinition.type}' type`);\n return;\n }\n\n const uiDefinitionProps: UIDefinitionProps = this.uiDefinition.properties ?? {};\n initializers.push(this.configurationService.init(this.modelId, uiDefinitionProps));\n }\n\n forkJoin(initializers)\n .pipe(\n tap(() => this.state$.next({ loading: false, failure: false })),\n catchError(error => {\n this.messageService.add({\n severity: 'error',\n summary: error,\n });\n this.state$.next({ loading: false, failure: true });\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 '@veloce/components';\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 exports: [PreviewComponent],\n})\nexport class PreviewModule {}\n","import { UIElementMetadata } from '../types';\n\nexport function ElementDefinition(definition: UIElementMetadata) {\n return function (constructor: any) {\n return constructor;\n };\n}\n","import { NgModule } from '@angular/core';\nimport { ConfigurationApiService, ContextApiService, ProductModelApiService } from '@veloce/api';\nimport { ContextService } from '@veloce/sdk/runtime';\n\n@NgModule({\n providers: [ContextService, ContextApiService, ProductModelApiService, ConfigurationApiService],\n})\nexport class ConfigurationModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@veloce/core';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { DynamicModuleService } from './services/dynamic-module.service';\nimport { LauncherService } from './services/launcher.service';\n\n@NgModule({\n imports: [CommonModule, CoreModule, ConfigurationModule],\n providers: [LauncherService, DynamicModuleService],\n})\nexport class LauncherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","angularCore","tap","catchError"],"mappings":"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"}
1
+ {"version":3,"file":"veloce-sdk-cms.js","sources":["../../../../libs/sdk/cms/injection-tokens.ts","../../../../libs/sdk/cms/engine/models/entity.ts","../../../../libs/sdk/cms/components/element.component.ts","../../../../libs/sdk/cms/utils/line-item.utils.ts","../../../../libs/sdk/cms/types/line-item.types.ts","../../../../libs/sdk/cms/modules/configuration/helpers.ts","../../../../libs/sdk/cms/modules/configuration/services/configuration.service.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/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/plugins/configuration.plugin.ts","../../../../libs/sdk/cms/plugins/script.plugin.ts","../../../../libs/sdk/cms/cms.default.ts","../../../../libs/sdk/cms/plugins/io.plugin.ts","../../../../libs/sdk/cms/cms.elements.ts","../../../../libs/sdk/cms/utils/elements-resolver.ts","../../../../libs/sdk/cms/utils/federated.util.ts","../../../../libs/sdk/cms/components/federated/federated.component.ts","../../../../libs/sdk/cms/components/federated/federated.component.html","../../../../libs/sdk/cms/components/federated/federated.module.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/modules/configuration/configuration.module.ts","../../../../libs/sdk/cms/launcher.module.ts","../../../../libs/sdk/cms/veloce-sdk-cms.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { Plugin } from './engine/models/plugin';\nimport { ElementConfig, ElementMetadata } from './types/common.types';\nimport { UIDefinitionMetadata } from './types/ui-definition.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');\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() {\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) {\n this.plugins.push(plugin);\n }\n}\n","import { AfterViewInit, ChangeDetectionStrategy, Component, Inject, Injector, OnDestroy, OnInit } 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 extends Entity implements OnInit, AfterViewInit, OnDestroy {\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 ngOnInit(): void {\n this.plugins.forEach(plugin => plugin.ngOnInit?.());\n }\n\n ngAfterViewInit() {\n this.plugins.forEach(plugin => plugin.ngAfterViewInit?.());\n }\n\n ngOnDestroy(): void {\n this.plugins.forEach(plugin => plugin.ngOnDestroy?.());\n }\n}\n","import { Attribute, CfgStatus, EntityUtil, LineItem, PortDomain } from '@veloce/core';\nimport { compact, Dictionary, sortBy } from 'lodash';\nimport { PathBlock } from '../types/configuration.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 findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n return EntityUtil.findByFieldHierarchically('id', id, lineItems, 'lineItems');\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n const insertData = lineItem.id === parentId ? [toInsert] : [];\n return {\n ...lineItem,\n lineItems: [\n ...insertData,\n ...lineItem.lineItems.map(li => {\n return insertLineItem(li, parentId, toInsert);\n }),\n ],\n };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n return {\n ...lineItem,\n lineItems: lineItem.lineItems\n .map(li => {\n if (li.id === idToRemove) {\n return;\n } else if (li.lineItems.length) {\n return removeLineItem(li, idToRemove);\n }\n return li;\n })\n .filter(r => !!r) as LineItem[],\n };\n};\n\nexport const replaceLineItem = (lineItem: LineItem, replaceTo: LineItem): LineItem => {\n if (lineItem.id === replaceTo.id) {\n return { ...replaceTo };\n }\n\n return {\n ...lineItem,\n lineItems: lineItem.lineItems.map(li => {\n if (li.id === replaceTo.id) {\n return replaceTo;\n } else if (li.lineItems.length) {\n return replaceLineItem(li, replaceTo);\n }\n return li;\n }),\n };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []) => {\n const filtered = attributes.filter(({ name }) => names.includes(name));\n return sortBy(filtered, [({ name }) => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (\n originalAttributes: Attribute[],\n attributesToUpsert: { name: string; value: any }[],\n) => {\n return attributesToUpsert.reduce((acc, { name, value }) => {\n const [origAttr] = getAttributes(acc, [name]);\n return [\n ...acc.filter(attr => attr.name !== name),\n { ...(origAttr ?? { name }), cfgStatus: 'User' as CfgStatus, value },\n ];\n }, originalAttributes);\n};\n\nexport const patchAttributes = (rootLineItem: LineItem, id: string, attrs: { name: string; value: any }[]) => {\n const lineItem = findLineItem(id, [rootLineItem]);\n\n if (!lineItem) {\n return rootLineItem;\n }\n\n const attributes = upsertAttributes(lineItem.attributes, attrs);\n return replaceLineItem(rootLineItem, { ...lineItem, attributes });\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n port: string,\n type: string,\n parentId: string,\n attributes: { name: string; value: any }[] = [],\n lineItems: LineItem[] = [],\n): LineItem => {\n return {\n port,\n type,\n actionCode: 'ADD',\n cfgStatus: 'New',\n attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n lineItems,\n parentId,\n qty: 1,\n } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n const [net, list] = domainType?.recommendedPrices\n ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n .reduce(\n (acc, rp) => {\n const [netPrice, listPrice] = acc;\n return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n },\n [0, 0],\n ) ?? [0, 0];\n\n return { net, list };\n};\n","import { LineItem } from '@veloce/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from '../utils/line-item.utils';\n\nexport class LineItemWorker {\n public li: LineItem;\n\n constructor(src: LineItem) {\n this.li = { ...src };\n }\n\n public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n }\n\n public remove(id: string): LineItemWorker {\n return new LineItemWorker(removeLineItem(this.li, id));\n }\n\n public replace(toReplace: LineItem): LineItemWorker {\n return new LineItemWorker(replaceLineItem(this.li, toReplace));\n }\n\n public patchAttribute(attrs: { name: string; value: any }[], id?: string): LineItemWorker {\n return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs));\n }\n}\n","import { LineItem, UUID } from '@veloce/core';\nimport { UIDefinitionProps } from '../../types/ui-definition.types';\nimport { RuntimeContext } from './types/configuration.types';\n\nexport const getDefaultLineItem = (context: RuntimeContext, uiDefinitionProperties: UIDefinitionProps): LineItem => {\n const id = UUID.UUID();\n\n const lineItem: LineItem = {\n id,\n type: uiDefinitionProperties.rootType ?? '',\n cfgStatus: 'Default',\n qty: 1,\n productName: context.properties?.displayName || context.productName,\n productId: context.productId ?? '',\n offeringId: context.offeringId,\n ...(context.offeringId\n ? { offeringId: context.offeringId, offeringInstanceId: context.offeringInstanceId || id }\n : {}),\n } as LineItem;\n\n return lineItem;\n};\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloce/api';\nimport {\n ConfigurationContext,\n ConfigurationContextMode,\n ConfigurationMode,\n ConfigurationRequest,\n LineItem,\n PricePlanCharge,\n RuntimeModel,\n} from '@veloce/core';\nimport { ContextService, QuoteStates, RuntimeMode, RuntimeStep } from '@veloce/sdk/runtime';\nimport { Dictionary } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, combineLatest, Observable, of, shareReplay, throwError } from 'rxjs';\nimport { catchError, first, map, switchMap, tap } from 'rxjs/operators';\nimport { LineItemWorker } from '../../../types/line-item.types';\nimport { UIDefinitionProps } from '../../../types/ui-definition.types';\nimport { getDefaultLineItem } from '../helpers';\nimport { RuntimeContext } from '../types/configuration.types';\n\n@Injectable()\nexport class ConfigurationService {\n private mode = ConfigurationMode.SEARCH;\n private states: QuoteStates = {};\n private uiDefinitionProperties: UIDefinitionProps = {};\n private runtimeModel?: RuntimeModel;\n private runtimeContext?: RuntimeContext;\n\n private lineItem = new BehaviorSubject<LineItem | undefined>(undefined);\n private charges = new BehaviorSubject<Dictionary<PricePlanCharge>>({});\n\n constructor(\n private apiService: ConfigurationApiService,\n private contextService: ContextService,\n private configurationApiService: ConfigurationApiService,\n private messageService: MessageService,\n ) {}\n\n public init(modelId: string, uiDefinitionProperties: UIDefinitionProps) {\n this.uiDefinitionProperties = uiDefinitionProperties;\n\n return combineLatest([\n this.apiService.getRuntimeDataByModelId(modelId),\n this.contextService.create('TestId', ConfigurationContextMode.TEST),\n ]).pipe(\n first(),\n switchMap(([runtimeData]) => {\n this.runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n const runtimeContext: RuntimeContext = {\n modelId: modelId,\n runtimeModel: this.runtimeModel,\n runtimeMode: RuntimeMode.TEST,\n };\n this.runtimeContext = runtimeContext;\n\n return this.configure();\n }),\n );\n }\n\n public patch(lineItem: LineItem): void {\n if (!this.lineItem.value) {\n return;\n }\n\n this.states.configurableRamp = new LineItemWorker(this.lineItem.value).replace(lineItem).li;\n\n this.configure()\n .pipe(\n catchError(error => {\n this.messageService.add({\n severity: 'error',\n summary: error,\n });\n\n // bounce back if configuration call has failed\n this.lineItem.next(this.lineItem.value ? { ...this.lineItem.value } : undefined);\n return of();\n }),\n )\n .subscribe();\n }\n\n public get(): Observable<LineItem | undefined> {\n return this.lineItem.asObservable().pipe(shareReplay());\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.lineItem.value ? { ...this.lineItem.value } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel | undefined {\n return this.runtimeModel;\n }\n public getRuntimeContext(): RuntimeContext | undefined {\n return this.runtimeContext;\n }\n\n public get charges$(): Observable<Dictionary<PricePlanCharge>> {\n return this.charges.asObservable();\n }\n\n public get chargesSnapshot(): Dictionary<PricePlanCharge> {\n return this.charges.value;\n }\n\n private configure(): Observable<LineItem | undefined> {\n if (!this.runtimeContext || !this.runtimeModel) {\n return of(undefined);\n }\n\n const lineItem =\n this.states.configurableRamp ?? getDefaultLineItem(this.runtimeContext, this.uiDefinitionProperties);\n const configurationRequest = this.createRequest(lineItem);\n configurationRequest.lineItems = this.states.currentState || [];\n configurationRequest.asset = this.states.asset;\n const runtimeModel = this.runtimeContext?.runtimeModel;\n\n let request$: Observable<LineItem>;\n if (this.uiDefinitionProperties.pricingEnabled) {\n request$ = this.configurationApiService.configureAndPriceLineItem(configurationRequest, this.runtimeModel).pipe(\n map(({ lineItem, context, charges }) => {\n if (context) {\n this.contextService.update({ properties: context.properties });\n }\n this.charges.next(charges ?? {});\n\n return lineItem;\n }),\n );\n } else {\n request$ = this.configurationApiService.configureLineItem(configurationRequest, runtimeModel);\n }\n\n return request$.pipe(\n tap(lineItem => lineItem && this.lineItem.next(lineItem)),\n catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))),\n );\n }\n\n private createRequest(lineItem: LineItem): ConfigurationRequest {\n const runtimeContext = this.runtimeContext as RuntimeContext;\n\n if (runtimeContext.runtimeMode === RuntimeMode.TEST) {\n const properties: Dictionary<any> = {\n ...runtimeContext.properties,\n ModelId: runtimeContext.modelId,\n RuntimeMode: ConfigurationContextMode.TEST,\n PricingEnabled: String(this.uiDefinitionProperties.pricingEnabled),\n StartDate: runtimeContext.properties?.StartDate ?? new Date().toISOString().substring(0, 10),\n PriceListId: this.uiDefinitionProperties.priceList,\n };\n\n const ctx: Partial<ConfigurationContext> = {\n priceListId: this.uiDefinitionProperties.priceList,\n properties,\n };\n\n this.contextService.update(ctx);\n } else {\n const context = this.contextService.resolve();\n\n if (context?.properties && runtimeContext.properties?.StartDate) {\n this.contextService.update({\n properties: {\n ...context.properties,\n ...runtimeContext.properties,\n },\n });\n }\n }\n\n return {\n lineItem,\n mode: this.mode,\n step: !this.lineItem.value ? RuntimeStep.START : RuntimeStep.UPDATE,\n attributeDomainMode: 'ALL',\n context: this.contextService.resolve() as ConfigurationContext,\n };\n }\n}\n","import { ElementMetadata, ElementPath } from '../types';\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 return {\n segments,\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 isRelativePath = path.segments[0]?.[0] === '.';\n\n if (!isRelativePath) {\n return path.segments.join('/');\n }\n\n const segments = [...path.segments];\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 set componentFactories(data: ComponentFactory<any>[]) {\n this._componentFactories = data;\n }\n\n get componentFactories(): ComponentFactory<any>[] {\n return this._componentFactories;\n }\n\n getComponentFactory(element: ElementMetadata): ComponentFactory<any> | undefined {\n return this.componentFactories.find(f => (f.componentType as any).path === element.path);\n }\n\n get elementsTree(): ElementMetadata[] {\n return this._elementsTree;\n }\n\n set elementsTree(tree: ElementMetadata[]) {\n this._elementsTree = tree;\n }\n\n clear() {\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 if (!this.inputs[path][name]) {\n this.inputs[path][name] = subject ?? new BehaviorSubject<any>(undefined);\n }\n\n return this.inputs[path][name];\n }\n}\n","import { Injectable, TemplateRef } from '@angular/core';\nimport { Dictionary } from 'lodash';\n\n@Injectable()\nexport class TemplatesService {\n private templates: Dictionary<TemplateRef<any>> = {};\n\n public register(name: string, templateRef: TemplateRef<any>) {\n this.templates[name] = templateRef;\n }\n\n public get(name: string): TemplateRef<any> | undefined {\n return this.templates[name];\n }\n}\n","import { ElementMetadata, UIElement, UIElementMetadata } from '../types';\n\nconst EXPORTED_CLASS_REGEX = /export class (\\S+)/;\nconst METADATA_DECORATOR_REGEX = /@ElementDefinition\\(([\\s\\S]+)\\)(\\n|.)*export class/g;\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 console.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): UIElement => {\n const elMetadata: UIElementMetadata = {\n name: metadata.name,\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 };\n const script =\n metadata.script &&\n window.btoa(\n metadata.script.replace(\n EXPORTED_CLASS_REGEX,\n `@ElementDefinition(${JSON.stringify(elMetadata)}) export 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: metadata.children.map(meta => metadataToElement(meta)),\n };\n};\n\nexport const extractElementMetadata = (script: string): UIElementMetadata => {\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 eval(`(${metadataString})`);\n};\n\nexport const extendElementMetadata = (script: string, extend: Partial<UIElementMetadata>): 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 = { ...eval(`(${metadataString})`), ...extend };\n return script.replace(metadataString, JSON.stringify(updated));\n};\n","import { Injectable } from '@angular/core';\nimport { ElementMetadata } from '../types/common.types';\n\n@Injectable()\nexport class ElementContextService {\n metadata?: ElementMetadata;\n 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 '@veloce/core';\nimport { Dictionary, isArray, pull } from 'lodash';\nimport { map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ConfigurationService } from '../../modules/configuration/services/configuration.service';\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/line-item.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 }) el?: ViewContainerRef;\n\n @Input() 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 ngOnInit() {\n this.elementContext.metadata = this.meta;\n this.factory = this.dynamicModuleService.getComponentFactory(this.meta);\n\n this.createComponents();\n }\n\n 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 createFromLineItem(path: string): void {\n const parentComp = this.parentInjector.get(ElementRendererComponent, null);\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 (property === 'ports' && !finalPath.property && parentPath !== path) {\n return model.lineItems.filter(({ port }) => port === name) ?? [];\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) => {\n const key = String(data?.id ?? UUID.UUID());\n const ref = this.refs[key] ? this.updateComponent(key, data) : this.createComponent(data);\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> {\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): ComponentRef<any> | undefined {\n if (!this.factory) {\n return;\n }\n\n const componentRef = this.el?.createComponent(this.factory);\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(key: string, data?: any): ComponentRef<any> | undefined {\n const ref = this.refs[key];\n ref?.instance.model$.next(data);\n\n return ref;\n }\n\n private destroyComponent(key: string) {\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() customTemplate: string | undefined;\n\n ngAfterViewInit(): void {\n if (!this.customTemplate) {\n return;\n }\n\n this.templatesService.register(this.customTemplate, this.templateRef);\n }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { LineItem } from '@veloce/core';\nimport { map, Subject, takeUntil } from 'rxjs';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport { ELEMENT_METADATA } from '../injection-tokens';\nimport { ConfigurationService } from '../modules/configuration/services/configuration.service';\nimport { AttributeElement, ConfigurationElement, PortElement, TypeElement } from '../types';\nimport { ElementMetadata } from '../types/common.types';\nimport { LineItemWorker } from '../types/line-item.types';\nimport { generateLineItem, getAttributeValue, parseBoundPath } from '../utils/line-item.utils';\n\n@Directive()\nexport class ConfigurationPlugin implements PluginComponent, OnInit, 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\n ngOnInit(): void {\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 ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private register(type?: string, property?: string, name?: string) {\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 = (id: string): void => {\n const rootLineItem = this.configurationService.getSnapshot();\n if (!rootLineItem) {\n return;\n }\n this.configurationService.patch(new LineItemWorker(rootLineItem).remove(id).li);\n };\n\n this.typeHost.remove = remove;\n }\n\n private registerPort(name: string): void {\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.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) => {\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() {\n return this.host as ElementComponent & AttributeElement;\n }\n\n private get typeHost() {\n return this.host as ElementComponent & TypeElement;\n }\n\n private get portHost() {\n return this.host as ElementComponent & PortElement;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport * as angularCore from '@angular/core';\nimport { Directive } from '@angular/core';\nimport * as angularForms from '@angular/forms';\nimport { UUID } from '@veloce/core';\nimport * as lodash from 'lodash';\nimport { Dictionary } from 'lodash';\nimport * as rxjs from 'rxjs';\nimport * as rxjsOperators from 'rxjs/operators';\nimport { ElementComponent } from '../components/element.component';\nimport { PluginComponent } from '../components/plugin.component';\nimport * as vlInjectionTokens from '../injection-tokens';\nimport { ELEMENT_METADATA, SHARED_ELEMENT_METADATA } from '../injection-tokens';\nimport * as vlCmsModules from '../modules';\nimport { TemplatesService } from '../services/templates.service';\nimport { ElementMetadata } from '../types/common.types';\nimport * as vlCmsLineItemTypes from '../types/line-item.types';\nimport * as vlCmsUtils from '../utils';\nimport { QuoteApiService, SalesforceApiService } from '@veloce/api';\n\nconst vendorMap: Dictionary<any> = {\n '@veloce/sdk/cms': {\n ...vlCmsModules,\n ...vlCmsUtils,\n ...vlCmsLineItemTypes,\n ...vlInjectionTokens,\n TemplatesService,\n },\n '@veloce/api': {\n SalesforceApiService,\n QuoteApiService\n },\n '@angular/core': angularCore,\n '@angular/forms': angularForms,\n rxjs: rxjs,\n 'rxjs/operators': rxjsOperators,\n lodash: lodash,\n};\n\nconst normalizeImports = (script: 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) => `const ${g1} = vendor['${src}'];`);\n return result;\n};\n\n@Directive()\nexport class ScriptPlugin implements PluginComponent {\n private document: Document;\n\n constructor(public host: ElementComponent) {\n this.document = this.host.injector.get(DOCUMENT);\n const elementMetadata: ElementMetadata = this.host.injector.get(ELEMENT_METADATA);\n const sharedElementMetadata: ElementMetadata | undefined = this.host.injector.get(SHARED_ELEMENT_METADATA);\n\n if (sharedElementMetadata?.script) {\n this.addScript(sharedElementMetadata.script);\n }\n\n if (elementMetadata.script) {\n this.addScript(elementMetadata.script);\n }\n }\n\n private addScript(scriptStr: string) {\n const id = btoa(UUID.UUID());\n const script = this.document.createElement('script');\n script.type = `text/javascript`;\n\n let scriptContent = normalizeImports(scriptStr);\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](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","import { Plugin } from './engine/models/plugin';\nimport { ConfigurationPlugin } from './plugins/configuration.plugin';\nimport { ScriptPlugin } from './plugins/script.plugin';\nimport { UIDefinitionType } from './types/ui-definition.types';\n\nexport const DEFAULT_PLUGINS: { [key in UIDefinitionType]: typeof Plugin[] } = {\n CONFIGURATION: [ScriptPlugin, ConfigurationPlugin],\n DEFAULT: [ScriptPlugin],\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 { ElementComponent } from './components/element.component';\nimport { IOPlugin } from './plugins/io.plugin';\nimport { ElementConfig, ELEMENT_TYPE } from './types/common.types';\n\nexport const CONFIG: { [key in ELEMENT_TYPE]: ElementConfig } = {\n CUSTOM: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n CONTAINER: {\n component: ElementComponent,\n template: '<element-children></element-children>',\n plugins: [IOPlugin],\n },\n SERVICE: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n REFERENCE: {\n component: ElementComponent,\n plugins: [IOPlugin],\n },\n};\n","import { Component, Type } from '@angular/core';\nimport { transform } from '@babel/standalone';\nimport { flatten, 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} from '../injection-tokens';\nimport { ElementMetadata, UIDefinitionMetadata } from '../types';\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 this.elements = this.transpileScripts(elements);\n\n const flatElements = this.flattenElements(this.elements);\n\n for (const el of flatElements) {\n if (this.isSharedElement(el)) {\n this.sharedElements.push(el);\n } else {\n this.renderableElements.push(el);\n }\n }\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.reference) && el.type !== 'REFERENCE';\n }\n\n private getSharedElement(element: ElementMetadata): ElementMetadata | undefined {\n if (element.type !== 'REFERENCE') {\n return;\n }\n\n return this.sharedElements.find(el => element.reference === el.name);\n }\n\n private processElementMetadata(\n element: ElementMetadata,\n sharedElement?: ElementMetadata,\n ): ElementMetadata | undefined {\n if (element.type === 'REFERENCE') {\n if (!sharedElement) {\n console.warn(`Shared element \"${element.reference}\" not found`);\n return;\n }\n\n return {\n ...element,\n type: sharedElement.type,\n template: sharedElement.template,\n styles: sharedElement.styles,\n inputs: {\n ...sharedElement.inputs,\n ...element.inputs,\n },\n outputs: {\n ...sharedElement.outputs,\n ...element.outputs,\n },\n };\n }\n\n return element;\n }\n\n private resolveElement(sourceElement: ElementMetadata): Type<any> | undefined {\n const sharedElement = this.getSharedElement(sourceElement);\n const element = this.processElementMetadata(sourceElement, sharedElement);\n if (!element) {\n return;\n }\n\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 component: Component = {\n selector: 'vl-element',\n template: element.template || config.template || '',\n ...(element.styles ? { styles: [element.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: sharedElement },\n { provide: ELEMENT_CONFIG, useValue: config },\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 public getNgComponents(): Type<any>[] {\n return this.renderableElements.map(el => this.resolveElement(el)).filter(Boolean) as Type<any>[];\n }\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 = () => {\n moduleMap[remoteEntry] = true;\n resolve(); // window is the global namespace\n };\n\n document.body.append(script);\n });\n}\n\nasync function lookupExposedModule<T>(remoteName: string, exposedModule: string): Promise<T> {\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 as T;\n}\n\nexport type LoadRemoteModuleOptions = {\n remoteEntry: string;\n remoteName: string;\n exposedModule: string;\n};\n\nexport async function loadRemoteModule(options: LoadRemoteModuleOptions): Promise<any> {\n await loadRemoteEntry(options.remoteEntry);\n\n return await lookupExposedModule<any>(options.remoteName, options.exposedModule);\n}\n","import {\n AfterViewInit,\n ApplicationRef,\n ChangeDetectionStrategy,\n Compiler,\n Component,\n ElementRef,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { loadRemoteModule } from '../../utils/federated.util';\nimport { LineItem } from '@veloce/core';\n\nenum IntegrationEvent {\n Init = 'Init',\n}\n\ninterface InputData {\n rootLineItem: LineItem;\n}\n\ninterface IntegrationEventPayload {\n type: IntegrationEvent;\n payload?: unknown;\n}\n\ninterface InegrationComponentInstance extends OnChanges {\n integrationEvent: EventEmitter<IntegrationEventPayload>;\n integrationAppRef: ApplicationRef;\n data?: InputData;\n eventData?: IntegrationEventPayload;\n}\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 AfterViewInit, OnChanges {\n @ViewChild('federatedComponent', { read: ViewContainerRef }) federatedComponent?: ViewContainerRef;\n @ViewChild('foo', { read: TemplateRef }) foo?: TemplateRef<unknown>;\n @ViewChild('moduleHost', { static: false }) moduleHostRef?: ElementRef;\n\n @Input() remoteEntry?: string;\n @Input() remoteName?: string;\n @Input() exposedModule?: string;\n @Input() data?: InputData;\n @Input() eventData?: IntegrationEventPayload;\n @Output() private integrationEvent = new EventEmitter<IntegrationEventPayload>();\n\n moduleReady = false;\n\n private instance?: InegrationComponentInstance;\n\n constructor(\n private injector: Injector,\n private compiler: Compiler,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n ) {}\n\n ngAfterViewInit(): void {\n if (!this.remoteEntry || !this.remoteName || !this.exposedModule) {\n return;\n }\n\n loadRemoteModule({\n remoteEntry: this.remoteEntry,\n remoteName: this.remoteName,\n exposedModule: this.exposedModule,\n }).then(federated => {\n this.compiler.compileModuleAsync(federated[this.exposedModule as string]).then(moduleFactory => {\n const rootModuleRef = moduleFactory.create(this.injector);\n const rootComponentFactory = rootModuleRef.componentFactoryResolver.resolveComponentFactory(\n federated[this.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 InegrationComponentInstance;\n this.instance.data = this.data;\n this.instance.eventData = this.eventData;\n this.instance.integrationEvent = this.integrationEvent;\n\n this.renderer.appendChild(this.moduleHostRef?.nativeElement, node);\n this.appRef.attachView(hostView);\n });\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.instance) {\n return;\n }\n\n this.instance.ngOnChanges(changes);\n }\n}\n","<div #moduleHost></div>\n","import { NgModule } from '@angular/core';\nimport { FederatedComponent } from './federated.component';\n\n@NgModule({\n declarations: [FederatedComponent],\n exports: [FederatedComponent],\n})\nexport class FederatedModule {}\n","import { CommonModule } from '@angular/common';\nimport { Compiler, Injectable, ModuleWithComponentFactories, NgModule, Type } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { from, 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 { ElementMetadata } from '../types';\nimport { UIDefinitionMetadata } from '../types/ui-definition.types';\nimport { ElementsResolver } from '../utils/elements-resolver';\nimport { DynamicModuleService } from './dynamic-module.service';\nimport { FederatedModule } from '../components/federated/federated.module';\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(\n elements: ElementMetadata[],\n uiDefs: UIDefinitionMetadata,\n ): Observable<ModuleWithComponentFactories<NgModule>> {\n this.module = this.getModule(elements, uiDefs);\n return from(this.compiler.compileModuleAndAllComponentsAsync(this.module)).pipe(\n tap(m => {\n this.dynamicModuleService.componentFactories = m.componentFactories;\n this.moduleInstance = m;\n }),\n );\n }\n\n public destroy() {\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(elements: ElementMetadata[], uiDef: UIDefinitionMetadata): Type<NgModule> {\n const staticComponents = [ElementChildrenComponent, ElementRendererComponent, CustomTemplateDirective];\n const elementsResolver = new ElementsResolver(uiDef, elements);\n this.dynamicModuleService.elementsTree = elementsResolver.elements;\n\n @NgModule({\n imports: [CommonModule, ReactiveFormsModule, FederatedModule],\n declarations: [...staticComponents, ...elementsResolver.getNgComponents()],\n jit: true,\n })\n class DynamicModule {}\n\n return DynamicModule;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { BehaviorSubject, catchError, forkJoin, Observable, of, Subject, takeUntil, tap } from 'rxjs';\nimport { ConfigurationService } from '../../modules/configuration/services/configuration.service';\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 { UIDefinition, UIDefinitionProps } from '../../types/ui-definition.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, ConfigurationService, TemplatesService],\n})\nexport class PreviewComponent implements OnInit, OnDestroy {\n @Input() modelId?: string;\n @Input() uiDefinition?: UIDefinition;\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 ) {}\n\n ngOnInit() {\n this.startPreview();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private startPreview() {\n if (!this.uiDefinition) {\n return;\n }\n\n const { children, ...uiDefinitionMeta } = this.uiDefinition;\n this.elements = children.map(child => elementToMetadata(child));\n\n const initializers: Observable<any>[] = [this.launcherService.compileModule(this.elements, uiDefinitionMeta)];\n\n if (this.uiDefinition.type === 'CONFIGURATION') {\n if (!this.modelId) {\n console.warn(`No modelId is given for uiDefinition with '${this.uiDefinition.type}' type`);\n return;\n }\n\n const uiDefinitionProps: UIDefinitionProps = this.uiDefinition.properties ?? {};\n initializers.push(this.configurationService.init(this.modelId, uiDefinitionProps));\n }\n\n forkJoin(initializers)\n .pipe(\n tap(() => this.state$.next({ loading: false, failure: false })),\n catchError(error => {\n this.messageService.add({\n severity: 'error',\n summary: error,\n });\n this.state$.next({ loading: false, failure: true });\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 '@veloce/components';\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 exports: [PreviewComponent],\n})\nexport class PreviewModule {}\n","import { UIElementMetadata } from '../types';\n\nexport function ElementDefinition(definition: UIElementMetadata) {\n return function (constructor: any) {\n return constructor;\n };\n}\n","import { NgModule } from '@angular/core';\nimport { ConfigurationApiService, ContextApiService, ProductModelApiService } from '@veloce/api';\nimport { ContextService } from '@veloce/sdk/runtime';\n\n@NgModule({\n providers: [ContextService, ContextApiService, ProductModelApiService, ConfigurationApiService],\n})\nexport class ConfigurationModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@veloce/core';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { DynamicModuleService } from './services/dynamic-module.service';\nimport { LauncherService } from './services/launcher.service';\nimport { QuoteApiService, SalesforceApiService } from '@veloce/api';\n\n@NgModule({\n imports: [CommonModule, CoreModule, ConfigurationModule],\n providers: [LauncherService, DynamicModuleService, SalesforceApiService, QuoteApiService],\n})\nexport class LauncherModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","angularCore","tap","catchError"],"mappings":"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"}
@@ -1024,26 +1024,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
1024
1024
  args: [{ providedIn: 'root' }]
1025
1025
  }] });
1026
1026
 
1027
- class FlowService {
1028
- constructor(configurationSettingsApiService) {
1029
- this.configurationSettingsApiService = configurationSettingsApiService;
1030
- this.flowsKey = 'flows';
1031
- }
1032
- getFlow(id) {
1033
- return this.fetchFlows().pipe(map(flows => flows.find(flow => flow.id == id)));
1034
- }
1035
- fetchFlows() {
1036
- return this.configurationSettingsApiService
1037
- .fetchSetting(this.flowsKey)
1038
- .pipe(map(({ value }) => (value ? JSON.parse(value) : [])));
1039
- }
1040
- }
1041
- FlowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowService, deps: [{ token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
1042
- FlowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowService });
1043
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowService, decorators: [{
1044
- type: Injectable
1045
- }], ctorParameters: function () { return [{ type: i1.ConfigurationSettingsApiService }]; } });
1046
-
1047
1027
  class ProductModelCacheService {
1048
1028
  constructor(productModelApiService) {
1049
1029
  this.productModelApiService = productModelApiService;
@@ -2994,7 +2974,6 @@ RuntimeExecutionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
2994
2974
  RuntimeContextService,
2995
2975
  RuntimeFormService,
2996
2976
  CurrentStateService,
2997
- FlowService,
2998
2977
  ProductModelCacheService,
2999
2978
  DatePipe,
3000
2979
  SectionStoreService,
@@ -3041,7 +3020,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
3041
3020
  RuntimeContextService,
3042
3021
  RuntimeFormService,
3043
3022
  CurrentStateService,
3044
- FlowService,
3045
3023
  ProductModelCacheService,
3046
3024
  DatePipe,
3047
3025
  SectionStoreService,
@@ -3921,7 +3899,6 @@ RuntimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
3921
3899
  RuntimeContextService,
3922
3900
  RuntimeFormService,
3923
3901
  CurrentStateService,
3924
- FlowService,
3925
3902
  ProductModelCacheService,
3926
3903
  DatePipe,
3927
3904
  SectionsService,
@@ -3950,7 +3927,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
3950
3927
  RuntimeContextService,
3951
3928
  RuntimeFormService,
3952
3929
  CurrentStateService,
3953
- FlowService,
3954
3930
  ProductModelCacheService,
3955
3931
  DatePipe,
3956
3932
  SectionsService,
@@ -3981,5 +3957,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
3981
3957
  * Generated bundle index. Do not edit.
3982
3958
  */
3983
3959
 
3984
- export { ComponentPreviewComponent, ContextService, CurrentStateService, FlowService, QuoteService, RuntimeComponent, RuntimeContextService, RuntimeMode, RuntimeModule, RuntimeOperation, RuntimePreviewComponent, RuntimeService, RuntimeStep, SectionRendererComponent };
3960
+ export { ComponentPreviewComponent, ContextService, CurrentStateService, QuoteService, RuntimeComponent, RuntimeContextService, RuntimeMode, RuntimeModule, RuntimeOperation, RuntimePreviewComponent, RuntimeService, RuntimeStep, SectionRendererComponent };
3985
3961
  //# sourceMappingURL=veloce-sdk-runtime.js.map