@veloceapps/sdk 4.0.0 → 4.0.1

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.js","sources":["../../../../libs/sdk/src/constants.ts","../../../../libs/sdk/src/components/dialog/dialog.component.ts","../../../../libs/sdk/src/components/dialog/dialog.component.html","../../../../libs/sdk/src/components/dialog/dialog.module.ts","../../../../libs/sdk/src/services/doc-gen.service.ts","../../../../libs/sdk/src/components/doc-gen/doc-gen.component.ts","../../../../libs/sdk/src/components/doc-gen/doc-gen.component.html","../../../../libs/sdk/src/components/doc-gen/doc-gen.module.ts","../../../../libs/sdk/src/services/flow-router.service.ts","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.component.ts","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.component.html","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.module.ts","../../../../libs/sdk/src/services/flow-dialog.service.ts","../../../../libs/sdk/src/components/header/header.component.ts","../../../../libs/sdk/src/components/header/header.component.html","../../../../libs/sdk/src/components/header/header.module.ts","../../../../libs/sdk/src/services/flow.service.ts","../../../../libs/sdk/src/flow.component.ts","../../../../libs/sdk/src/flow.component.html","../../../../libs/sdk/src/guards/context.guard.ts","../../../../libs/sdk/src/guards/product-unload.guard.ts","../../../../libs/sdk/src/guards/root.guard.ts","../../../../libs/sdk/src/types/flow-customization.types.ts","../../../../libs/sdk/src/pages/catalog/catalog.component.ts","../../../../libs/sdk/src/pages/catalog/catalog.component.html","../../../../libs/sdk/src/pages/catalog/catalog.module.ts","../../../../libs/sdk/src/utils/flow.utils.ts","../../../../libs/sdk/src/pages/debug/debug.component.ts","../../../../libs/sdk/src/pages/debug/debug.component.html","../../../../libs/sdk/src/pages/debug/debug.module.ts","../../../../libs/sdk/src/pages/legacy-product/legacy-product.component.ts","../../../../libs/sdk/src/pages/legacy-product/legacy-product.component.html","../../../../libs/sdk/src/pages/legacy-product/legacy-product.module.ts","../../../../libs/sdk/src/pages/product/product.component.ts","../../../../libs/sdk/src/pages/product/product.component.html","../../../../libs/sdk/src/pages/product/product.module.ts","../../../../libs/sdk/src/pages/record-not-found/record-not-found.component.ts","../../../../libs/sdk/src/pages/record-not-found/record-not-found.component.html","../../../../libs/sdk/src/pages/record-not-found/record-not-found.module.ts","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.component.ts","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.component.html","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.module.ts","../../../../libs/sdk/src/resolvers/flow.resolver.ts","../../../../libs/sdk/src/resolvers/quote.resolver.ts","../../../../libs/sdk/src/flow-routing.module.ts","../../../../libs/sdk/src/flow.module.ts","../../../../libs/sdk/veloce-sdk.ts"],"sourcesContent":["export const VELOCE_FLOW_ROOT_ROUTE = 'VELOCE_FLOW_ROOT_ROUTE';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { FlowDialogConfig } from './dialog.types';\n\n@Component({\n selector: 'vl-flow-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowDialogComponent {\n public config: FlowDialogConfig;\n\n constructor(private dialogConfig: DynamicDialogConfig, private ref: DynamicDialogRef) {\n this.config = this.dialogConfig.data.config;\n }\n\n cancelHandler(): void {\n this.ref.close();\n }\n\n confirmHandler(): void {\n this.ref.close(true);\n }\n}\n","<div *ngIf=\"config.description\" class=\"description\">\n {{ config.description }}\n</div>\n\n<div class=\"form-actions\">\n <p-button\n *ngIf=\"config.secondaryButton\"\n styleClass=\"p-button-outlined button-text-bold\"\n [label]=\"config.secondaryButton!\"\n (onClick)=\"cancelHandler()\"\n ></p-button>\n <p-button\n styleClass=\"p-button p-button-filled\"\n [label]=\"config.primaryButton\"\n (onClick)=\"confirmHandler()\"\n ></p-button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { FlowDialogComponent } from './dialog.component';\n\n@NgModule({\n declarations: [FlowDialogComponent],\n imports: [CommonModule, ButtonModule],\n exports: [FlowDialogComponent],\n})\nexport class FlowDialogModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowAction, IntegrationState } from '@veloce/sdk/cms';\nimport { BehaviorSubject, Subject, takeUntil, tap } from 'rxjs';\n\n@Injectable()\nexport class FlowDocGenService {\n private cleanup$ = new Subject<void>();\n private isVisibleSubj$ = new BehaviorSubject(false);\n\n public isVisible$ = this.isVisibleSubj$.asObservable();\n\n constructor(private integrationState: IntegrationState) {\n this.initSubscriptions();\n }\n\n public cleanup(): void {\n this.cleanup$.next();\n }\n\n private initSubscriptions(): void {\n this.integrationState\n .listen$(FlowAction.FLOW_OPEN_DOC_GEN)\n .pipe(\n tap(() => this.isVisibleSubj$.next(true)),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_CLOSE_DOC_GEN)\n .pipe(\n tap(() => this.isVisibleSubj$.next(false)),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport { TemplateComponent, UITemplate, UITemplateComponentType, UITemplateType } from '@veloce/core';\nimport { extendElementMetadata, extractElementMetadata } from '@veloce/sdk/cms';\nimport { ContextService, QuoteDraftService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, first, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowDocGenService } from '../../services/doc-gen.service';\n\n@Component({\n selector: 'vl-flow-doc-gen',\n templateUrl: './doc-gen.component.html',\n styleUrls: ['./doc-gen.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DocGenComponent implements OnDestroy {\n public uiDefinition$ = new BehaviorSubject<UIDefinition | null>(null);\n public isVisible$: Observable<boolean>;\n\n private templateApiName = '';\n private destroy$ = new Subject<void>();\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private contextService: ContextService,\n private templatesApi: UITemplatesApiService,\n private docGenService: FlowDocGenService,\n private toastService: ToastService,\n ) {\n this.isVisible$ = this.docGenService.isVisible$;\n\n // initialize when quote draft requested\n this.quoteDraftService.quoteDraft$\n .pipe(\n first(),\n tap(() => this.initialize()),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private initialize(): void {\n this.templateApiName = this.contextService.resolve().properties.docGenTemplateApiName ?? '';\n\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition$.next(uiDef);\n }),\n catchError(err => {\n const message = 'Failed to resolve DocGen component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getDocGenComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates => {\n const template = templates.find(\n template => template.type === UITemplateType.DOCGEN && template.name === this.templateApiName,\n );\n return template ?? templates[0];\n }),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'docGenTemplateApiName' is missing.\");\n }\n }),\n switchMap(meta => (meta ? of(meta) : this.getDocGenComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const headerId = this.contextService.resolve().properties.Id ?? null;\n let script = meta.js;\n\n if (script) {\n const metadata = extractElementMetadata(script);\n script = extendElementMetadata(script, {\n inputs: {\n ...metadata.inputs,\n Id: headerId ? `\"${headerId}\"` : null,\n },\n });\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: script && btoa(script),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\n }\n}\n","<ng-container *ngIf=\"isVisible$ | async\">\n <ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\" [clearState]=\"true\"></vl-cms-preview>\n </ng-container>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { DocGenComponent } from './doc-gen.component';\n\n@NgModule({\n declarations: [DocGenComponent],\n imports: [CommonModule, PreviewModule],\n exports: [DocGenComponent],\n})\nexport class DocGenModule {}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n Event,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Params,\n Router,\n} from '@angular/router';\nimport { ContextService } from '@veloce/sdk/core';\nimport { distinctUntilChanged, filter, map, Observable, shareReplay, startWith } from 'rxjs';\nimport { VELOCE_FLOW_ROOT_ROUTE } from '../constants';\nimport { RouteWithId } from '../types/route.types';\n\n@Injectable({ providedIn: 'root' })\nexport class FlowRouterService {\n private routeChange$: Observable<Event>;\n private lastChildParams$: Observable<Params>;\n private lastChildRoute$: Observable<ActivatedRouteSnapshot>;\n private urlHistory: string[] = [];\n\n public loading$: Observable<boolean>;\n\n constructor(private router: Router, private route: ActivatedRoute, private contextService: ContextService) {\n this.routeChange$ = this.router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n shareReplay(),\n );\n\n this.lastChildParams$ = this.watchLastChildParams$(this.route).pipe(\n startWith(this.getLastChildParams(this.route.snapshot)),\n shareReplay(),\n );\n this.lastChildRoute$ = this.watchLastChildRoute$(this.route).pipe(\n startWith(this.getLastChildRouteSnapshot(this.route.snapshot)),\n shareReplay(),\n );\n\n this.loading$ = this.router.events.pipe(\n filter(\n e =>\n e instanceof NavigationStart ||\n e instanceof NavigationCancel ||\n e instanceof NavigationEnd ||\n e instanceof NavigationError,\n ),\n map(e => e instanceof NavigationStart),\n startWith(false),\n distinctUntilChanged(),\n );\n\n this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {\n this.urlHistory.push(this.router.url);\n });\n }\n\n getFlowRootRoute(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot | undefined {\n const path = [...route.pathFromRoot];\n\n while (path.length) {\n const parent = path.pop();\n\n if (!parent) {\n break;\n }\n\n if ((parent.routeConfig as RouteWithId)?.id === VELOCE_FLOW_ROOT_ROUTE) {\n return parent;\n }\n }\n\n return;\n }\n\n getFlowRootPath(route: ActivatedRouteSnapshot): string {\n const rootRoute = this.getFlowRootRoute(route);\n if (!rootRoute) {\n return '';\n }\n\n const path = rootRoute.pathFromRoot\n .map(r => r.routeConfig?.path)\n .filter(Boolean)\n .join('/');\n\n return '/' + path;\n }\n\n get route$(): Observable<ActivatedRouteSnapshot> {\n return this.lastChildRoute$;\n }\n\n get params$(): Observable<Params> {\n return this.lastChildParams$;\n }\n\n public getLastChildRoute = (route: ActivatedRoute): ActivatedRoute => {\n return route.firstChild ? this.getLastChildRoute(route.firstChild) : route;\n };\n\n public getNthChildRoute = (route: ActivatedRoute, index: number): ActivatedRoute => {\n if (index <= 0) {\n return route;\n }\n\n return route.firstChild ? this.getNthChildRoute(route.firstChild, index - 1) : route;\n };\n\n public getLastChildRouteSnapshot = (route: ActivatedRouteSnapshot): ActivatedRouteSnapshot => {\n return route.firstChild ? this.getLastChildRouteSnapshot(route.firstChild) : route;\n };\n\n public watchLastChildRoute$ = (route: ActivatedRoute): Observable<ActivatedRouteSnapshot> => {\n return this.routeChange$.pipe(map(() => this.getLastChildRouteSnapshot(route.snapshot)));\n };\n\n public getLastChildParams = (route: ActivatedRouteSnapshot): Params => {\n return route.firstChild ? this.getLastChildParams(route.firstChild) : route.params;\n };\n\n public watchLastChildParams$ = (route: ActivatedRoute): Observable<Params> => {\n return this.routeChange$.pipe(map(() => this.getLastChildParams(route.snapshot)));\n };\n\n public getFlowSubpath$ = (): Observable<string> => {\n return this.route$.pipe(\n map(route => {\n const url = route.url.join('/');\n const flowRootUrl = this.getFlowRootPath(route);\n return url.replace(flowRootUrl, '');\n }),\n );\n };\n\n public isConfigurationRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('product')));\n }\n\n public isCartRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('cart')));\n }\n\n public isCatalogRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('catalog')));\n }\n\n public navigateBack(): void {\n const prevUrl = this.urlHistory[this.urlHistory.length - 2];\n\n if (prevUrl) {\n this.router.navigateByUrl(prevUrl);\n }\n }\n\n public navigateToProductConfiguration(productId: string, lineItemId?: string): void {\n this.contextService.update({ properties: { productId, lineItemId } });\n\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'product'], {\n queryParams: { ...routeSnapshot.queryParams, productId },\n });\n }\n\n public navigateToShoppingCart(): void {\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'cart'], { queryParams: routeSnapshot.queryParams });\n }\n\n public navigateToCatalog(): void {\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'catalog'], { queryParams: routeSnapshot.queryParams });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FlowConfigurationService, ProductImagesService, QuoteDraftService } from '@veloce/sdk/core';\nimport { OverlayPanel } from 'primeng/overlaypanel';\nimport { BehaviorSubject, combineLatest, filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { FlowRouterService } from '../../../services/flow-router.service';\nimport { HeaderProduct } from '../header.types';\n\n@Component({\n selector: 'vl-cart-preview',\n templateUrl: './cart-preview.component.html',\n styleUrls: ['./cart-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CartPreviewComponent implements OnChanges, AfterViewInit, OnDestroy {\n @ViewChild(OverlayPanel) overlayPanel!: OverlayPanel;\n\n @Input() products!: HeaderProduct[];\n\n public form = new FormGroup({});\n public readonlyProductId$: Observable<string | null>;\n\n private shouldUpdate$ = new BehaviorSubject(true);\n private destroyed$ = new Subject<void>();\n\n public isEditMode$: Observable<boolean>;\n\n constructor(\n private flowConfiguration: FlowConfigurationService,\n private routerService: FlowRouterService,\n private productImagesService: ProductImagesService,\n private quoteDraftService: QuoteDraftService,\n ) {\n this.readonlyProductId$ = combineLatest([\n this.routerService.route$,\n this.routerService.isConfigurationRoute$(),\n ]).pipe(\n map(([route, isConfigurationRoute]) => {\n if (!isConfigurationRoute) {\n return null;\n }\n\n return route.queryParams.productId;\n }),\n );\n\n this.isEditMode$ = this.quoteDraftService.isEditMode$();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.products) {\n this.shouldUpdate$.next(true);\n }\n }\n\n ngAfterViewInit() {\n combineLatest([this.readonlyProductId$, this.shouldUpdate$, this.overlayPanel.onShow])\n .pipe(\n filter(() => this.overlayPanel.overlayVisible),\n takeUntil(this.destroyed$),\n )\n .subscribe(([readonlyProductId]) => this.updateControls(this.products, readonlyProductId));\n }\n\n public ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n public getImageUrl(productId: string): Observable<string | null> {\n return this.productImagesService.getImageUrl$(productId);\n }\n\n public navigateToProductConfiguration(productId: string, lineItemId: string) {\n this.overlayPanel.hide();\n this.routerService.navigateToProductConfiguration(productId, lineItemId);\n }\n\n public controlBlurHandler(product: HeaderProduct): void {\n const control = this.form.controls[product.id];\n if (control.invalid) {\n return;\n }\n\n this.flowConfiguration.update([\n {\n dataType: 'LINEITEM',\n attributeType: 'QTY',\n id: product.id,\n newValue: control.value,\n },\n ]);\n }\n\n public deleteHandler(product: HeaderProduct): void {\n this.flowConfiguration.delete([product.id]);\n }\n\n public deleteAllHandler(): void {\n const productIds = this.products.map(product => product.id);\n this.flowConfiguration.delete(productIds);\n }\n\n private updateControls(products: HeaderProduct[], readonlyProductId: string | null): void {\n const ids: string[] = [];\n\n products.forEach(item => {\n if (!item.id) {\n return;\n }\n\n ids.push(item.id);\n\n if (!this.form.controls[item.id]) {\n this.form.addControl(item.id, new FormControl(item.qty, []));\n } else {\n this.form.controls[item.id]?.setValue(item.qty);\n }\n\n if (item.productId === readonlyProductId) {\n this.form.controls[item.id].disable();\n } else {\n this.form.controls[item.id].enable();\n }\n });\n\n const removedIds = Object.keys(this.form.controls).filter(id => !ids.includes(id));\n removedIds.forEach(id => this.form.removeControl(id));\n }\n}\n","<p-overlayPanel\n styleClass=\"navigation-settings-overlay flow-header-overlay center\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"readonlyProductId$ | async as readonlyProductId\">\n <ng-container *vlLet=\"isEditMode$ | async as isEditMode\">\n <ng-container *ngIf=\"products.length > 0; else empty\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Products ({{ products.length }})</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <div class=\"product header\">\n <span>Product</span>\n <span class=\"text-right\">Qty</span>\n <span class=\"text-right\">MRR</span>\n <span class=\"text-right\">NRR</span>\n </div>\n\n <div class=\"scrollable-wrapper\">\n <div class=\"product\" *ngFor=\"let product of products\">\n <div class=\"product__info\">\n <div class=\"product__image-wrapper\">\n <div\n *ngIf=\"getImageUrl(product.productId) | async as imageUrl; else noImage\"\n class=\"product__image\"\n [ngStyle]=\"{ 'background-image': 'url(' + imageUrl + ')' }\"\n ></div>\n </div>\n <div class=\"flex flex-column justify-content-center\">\n <div class=\"word-break\">{{ product.name }}</div>\n <div>\n <p-button\n label=\"Configure\"\n [disabled]=\"!isEditMode || !product.configurable || readonlyProductId === product.productId\"\n styleClass=\"p-button-link p-button-sm pl-0\"\n (onClick)=\"navigateToProductConfiguration(product.productId, product.id)\"\n ></p-button>\n <p-button\n label=\"Delete\"\n [disabled]=\"!isEditMode || readonlyProductId === product.productId\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n (onClick)=\"deleteHandler(product)\"\n ></p-button>\n </div>\n </div>\n </div>\n\n <span>\n <p-inputNumber\n *ngIf=\"form.controls[product.id] as control\"\n class=\"qty-control\"\n [formControl]=\"$any(control)\"\n [min]=\"1\"\n [required]=\"true\"\n [disabled]=\"!isEditMode\"\n (onBlur)=\"controlBlurHandler(product)\"\n ></p-inputNumber>\n </span>\n <span class=\"text-right pt-3\">${{ product.mrr }}</span>\n <span class=\"text-right pt-3\">${{ product.nrr }}</span>\n </div>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-icon-no-image no-image-icon\"></i>\n </ng-template>\n </div>\n\n <div class=\"flex justify-content-end mt-3\">\n <p-button\n label=\"Clear cart\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n [disabled]=\"!isEditMode || readonlyProductId\"\n (onClick)=\"deleteAllHandler()\"\n ></p-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #empty>\n <h2 class=\"flow-header-overlay__title\">\n <span>Empty Cart</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">There are no products added to the Shopping Cart yet.</span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { LetDirectiveModule } from '@veloce/components';\nimport { ButtonModule } from 'primeng/button';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { CartPreviewComponent } from './cart-preview.component';\n\n@NgModule({\n declarations: [CartPreviewComponent],\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, OverlayPanelModule, LetDirectiveModule, InputNumberModule],\n exports: [CartPreviewComponent],\n})\nexport class CartPreviewModule {}\n","import { Injectable } from '@angular/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Observable } from 'rxjs';\nimport { FlowDialogComponent } from '../components/dialog/dialog.component';\nimport { FlowDialogConfig } from '../components/dialog/dialog.types';\n\n@Injectable()\nexport class FlowDialogService {\n constructor(private dialogService: DialogService, private contextService: ContextService) {}\n\n public show(config: FlowDialogConfig): Observable<boolean> {\n return this.dialogService.open(FlowDialogComponent, {\n dismissableMask: true,\n closeOnEscape: true,\n closable: true,\n showHeader: true,\n header: config.title,\n width: '440px',\n data: { config },\n }).onClose;\n }\n\n public showEmptyCartDialog(): Observable<boolean> {\n return this.show({\n title: 'No Products in Quote',\n description: 'There are no products in your Quote. To save a Quote, add at least one product.',\n primaryButton: 'OK',\n });\n }\n\n public showReadonlyModeDialog(): Observable<boolean> {\n const ctx = this.contextService.resolve();\n const objectName = ctx.mode ? ctx.mode[0].toUpperCase() + ctx.mode.substring(1).toLowerCase() : 'Object';\n\n return this.show({\n title: 'Error',\n description: `${objectName} Cannot be Saved`,\n primaryButton: 'OK',\n });\n }\n\n public showQuoteReadonlyModeDialog(): Observable<boolean> {\n return this.show({\n title: 'Quote Cannot be Saved',\n description:\n 'It is only possible to save quotes with the “Draft” status. Please create a new quote to make and save changes.',\n primaryButton: 'OK',\n });\n }\n\n public showQuoteOutsideShoppingCartDialog(): Observable<boolean> {\n return this.show({\n title: 'Quote Cannot be Saved',\n description: 'It is only possible to save quotes from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showAccountNoChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'No Changes to Save',\n description: 'There are no changes since the last update. Please make changes to proceed.',\n primaryButton: 'OK',\n });\n }\n\n public showUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Unsaved Changes',\n description: 'Are you sure you want to leave this page and discard your unsaved changes?',\n primaryButton: 'Keep Editing',\n secondaryButton: 'Discard Changes',\n });\n }\n\n public showReadonlyQuoteSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Cannot Submit for Approval',\n description:\n 'It is only possible to submit for approval quotes with the “Draft“ status. Please create a new quote to proceed.',\n primaryButton: 'OK',\n });\n }\n\n public showOutsideShoppingCartQuoteSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Cannot Submit for Approval',\n description:\n 'It is only possible to submit quotes for approval from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showAccountSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Save Changes',\n description:\n 'To submit for approval, save the quote first, and then submit it for approval from the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenAccountUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Save Quote',\n description:\n 'To generate a document, save the quote first, and then generate the document from the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenReadonlyDialog(): Observable<boolean> {\n return this.show({\n title: 'Document Generation is not Available',\n description:\n 'It is only possible to generate documents for quotes with the “Draft” status. Please create a new quote to generate a document.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenOutsideShoppingCartDialog(): Observable<boolean> {\n return this.show({\n title: 'Document Generation is not Available',\n description:\n 'It is only possible to generate documents for quotes from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Unsaved Changes',\n description: 'To generate a document, save the quote first.',\n primaryButton: 'Save and proceed',\n secondaryButton: 'Cancel',\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { QuoteApiService, SalesforceApiService } from '@veloce/api';\nimport {\n ConfigurationContextMode,\n ContextProperties,\n LineItem,\n PriceList,\n SearchRequest,\n VlWindow,\n} from '@veloce/core';\nimport { IntegrationState, OpenDocGenAction } from '@veloce/sdk/cms';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { MenuItem } from 'primeng/api';\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n first,\n map,\n noop,\n Observable,\n of,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { FlowDialogService } from '../../services/flow-dialog.service';\nimport { FlowRouterService } from '../../services/flow-router.service';\nimport { HeaderObjectDetails, HeaderProduct } from './header.types';\n\ndeclare const window: VlWindow;\n\n@Component({\n selector: 'vl-flow-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowHeaderComponent implements OnInit, OnDestroy {\n public objectName: string;\n public contextProperties: ContextProperties;\n public assetPriceLists: PriceList[];\n public activePriceList$: Observable<PriceList | null>;\n public status$: Observable<string>;\n public objectDetails$ = new BehaviorSubject<HeaderObjectDetails>({});\n public products$: Observable<HeaderProduct[]>;\n public isConfigurationRoute$: Observable<boolean>;\n public isCartRoute$: Observable<boolean>;\n public isCatalogRoute$: Observable<boolean>;\n public isEditMode$: Observable<boolean>;\n public isSaveInProgress$ = new BehaviorSubject(false);\n public isSubmitInProgress$ = new BehaviorSubject(false);\n public totalMRR$: Observable<string>;\n public totalNRR$: Observable<string>;\n\n private mode?: ConfigurationContextMode;\n private destroyed$ = new Subject<void>();\n\n constructor(\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private quoteApiService: QuoteApiService,\n private sfApiService: SalesforceApiService,\n private flowConfiguration: FlowConfigurationService,\n private routerService: FlowRouterService,\n private dialogService: FlowDialogService,\n private integrationState: IntegrationState,\n ) {\n const ctx = this.contextService.resolve();\n\n this.mode = ctx.mode;\n this.objectName = ctx.mode.toLowerCase();\n this.contextProperties = ctx.properties;\n this.assetPriceLists = this.quoteDraftService.assetPriceLists;\n\n this.activePriceList$ = this.quoteDraftService.activePriceList$;\n this.status$ = this.contextService.resolve$().pipe(map(context => context.properties.Status ?? ''));\n this.isEditMode$ = this.quoteDraftService.isEditMode$();\n this.products$ = this.flowConfiguration.getActive().pipe(map(lineItems => this.generateProducts(lineItems)));\n this.isConfigurationRoute$ = this.routerService.isConfigurationRoute$();\n this.isCartRoute$ = this.routerService.isCartRoute$();\n this.isCatalogRoute$ = this.routerService.isCatalogRoute$();\n\n this.totalMRR$ = this.contextService.resolve$().pipe(\n map(ctx => ctx.properties.VDM_Total_MRR),\n distinctUntilChanged(),\n map(mrr => this.formatMetric(mrr)),\n );\n\n this.totalNRR$ = this.contextService.resolve$().pipe(\n map(ctx => ctx.properties.VDM_Total_NRR),\n distinctUntilChanged(),\n map(nrr => this.formatMetric(nrr)),\n );\n }\n\n ngOnInit() {\n this.populateObjectDetails();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n public get isAccountMode() {\n return this.mode === ConfigurationContextMode.ACCOUNT;\n }\n\n public get isQuoteMode() {\n return this.mode === ConfigurationContextMode.QUOTE;\n }\n\n public getSplitButtonActions(isCartRoute: boolean): MenuItem[] {\n return [\n {\n label: 'Save to Quote',\n command: () => {\n this.saveButtonClickHandler(isCartRoute);\n },\n },\n {\n label: 'Submit For Approval',\n command: () => {\n this.submitButtonClickHandler(isCartRoute);\n },\n },\n ];\n }\n\n public back(objectId?: string): void {\n const targetId = objectId ?? this.contextService.resolve().headerId;\n\n if (targetId) {\n window.VELO_BACK_FN.apply(null, [targetId]);\n }\n }\n\n public getSalesforceObjectLink(objectId?: string): string {\n if (!objectId) {\n return '';\n }\n\n return `${window.location.origin}/${objectId}`;\n }\n\n public navigateToShoppingCart() {\n this.routerService.navigateToShoppingCart();\n }\n\n public navigateToCatalog() {\n this.routerService.navigateToCatalog();\n }\n\n public docGenButtonClickHandler(isCartRoute: boolean): void {\n if (this.mode === ConfigurationContextMode.ACCOUNT) {\n if (!this.quoteDraftService.hasUnsavedChanges) {\n this.dialogService.showAccountNoChangesDialog().subscribe();\n } else {\n this.dialogService.showDocgenAccountUnsavedChangesDialog().subscribe();\n }\n return;\n }\n\n if (!this.quoteDraftService.isEditMode()) {\n this.dialogService.showDocgenReadonlyDialog().subscribe();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showDocgenOutsideShoppingCartDialog().subscribe();\n return;\n }\n\n let observable = of(true);\n\n if (this.quoteDraftService.hasUnsavedChanges) {\n observable = this.dialogService.showDocgenUnsavedChangesDialog().pipe(\n switchMap(confirmed => (confirmed ? this.saveQuote$(true) : of(true))),\n map(() => true),\n );\n }\n\n observable\n .pipe(\n first(),\n tap(() => this.integrationState.dispatch(OpenDocGenAction())),\n )\n .subscribe();\n }\n\n public saveButtonClickHandler(isCartRoute: boolean): void {\n if (!this.quoteDraftService.isEditMode()) {\n if (this.mode === ConfigurationContextMode.QUOTE) {\n this.dialogService.showQuoteReadonlyModeDialog().subscribe();\n } else {\n this.dialogService.showReadonlyModeDialog().subscribe();\n }\n return;\n }\n\n if (this.mode === ConfigurationContextMode.ACCOUNT && !this.quoteDraftService.hasUnsavedChanges) {\n this.dialogService.showAccountNoChangesDialog().subscribe();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showQuoteOutsideShoppingCartDialog().subscribe();\n return;\n }\n\n const lineItems = this.flowConfiguration.getSnapshot();\n\n if (!lineItems.length) {\n this.dialogService.showEmptyCartDialog().subscribe();\n return;\n }\n\n this.saveQuote$().subscribe();\n }\n\n public submitButtonClickHandler(isCartRoute: boolean): void {\n if (this.mode === ConfigurationContextMode.QUOTE && !this.quoteDraftService.isEditMode()) {\n this.dialogService.showReadonlyQuoteSubmitFailureDialog();\n return;\n }\n\n if (this.mode === ConfigurationContextMode.ACCOUNT) {\n this.dialogService.showAccountSubmitFailureDialog();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showOutsideShoppingCartQuoteSubmitFailureDialog().subscribe();\n return;\n }\n\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (!quoteDraft) {\n return;\n }\n\n this.isSubmitInProgress$.next(true);\n\n this.quoteApiService\n .submitQuote(quoteDraft)\n .pipe(\n tap(({ quoteId }) => {\n this.quoteDraftService.hasUnsavedChanges = false;\n this.back(quoteId);\n }),\n finalize(() => this.isSubmitInProgress$.next(false)),\n takeUntil(this.destroyed$),\n )\n .subscribe();\n }\n\n public selectPriceList(priceListId: string): void {\n this.quoteDraftService.updateActivePriceList(priceListId);\n }\n\n private saveQuote$(stayOnPage = false): Observable<void> {\n const quoteDraft = this.quoteDraftService.quoteDraftForActivePriceList;\n if (!quoteDraft) {\n return of(undefined);\n }\n\n this.isSaveInProgress$.next(true);\n\n return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n tap(({ quoteId }) => {\n this.quoteDraftService.hasUnsavedChanges = false;\n\n if (!stayOnPage) {\n this.back(quoteId);\n }\n }),\n finalize(() => this.isSaveInProgress$.next(false)),\n map(noop),\n takeUntil(this.destroyed$),\n );\n }\n\n private queryName$(objectName: string, id?: string): Observable<string> {\n if (!id) {\n return of('');\n }\n\n const searchRequest: SearchRequest = {\n count: 1,\n rawCondition: `Id = '${id}'`,\n fields: ['Name'],\n };\n\n return this.sfApiService.query<any>(searchRequest, objectName).pipe(\n map(result => result[0]?.Name ?? ''),\n takeUntil(this.destroyed$),\n );\n }\n\n private populateObjectDetails(): void {\n const accountId = this.isAccountMode ? this.contextProperties.Id : this.contextProperties.AccountId;\n const opportunityId = this.contextProperties.OpportunityId;\n const quoteId = this.isQuoteMode ? this.contextProperties.Id : undefined;\n const quoteName = this.isQuoteMode ? this.contextProperties.Name : undefined;\n const quoteNumber = this.isQuoteMode ? this.contextProperties.QuoteNumber?.replace(/^0+/, '') : undefined;\n\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n accountId,\n opportunityId,\n quoteId,\n quoteName,\n quoteNumber,\n });\n\n this.queryName$('Account', accountId).subscribe(accountName =>\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n accountName,\n }),\n );\n this.queryName$('Opportunity', opportunityId).subscribe(opportunityName =>\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n opportunityName,\n }),\n );\n }\n\n private formatMetric(value?: string): string {\n return (value ? Number(value) : 0).toFixed(2);\n }\n\n private generateProducts(lineItems: LineItem[]): HeaderProduct[] {\n const date = new Date();\n date.setHours(0, 0, 0, 0);\n const now = date.getTime();\n\n return lineItems.reduce((result: HeaderProduct[], li) => {\n // find main term line item\n if (li.rampInstanceId) {\n return result;\n }\n\n // find current term line item\n let target: LineItem | undefined = li;\n while (target && target.endDate && new Date(target.endDate).getTime() <= now) {\n target = lineItems.find(sub => sub.rampInstanceId === li.id);\n }\n\n if (target && target.productId) {\n return [\n ...result,\n {\n id: target.id,\n productId: target.productId,\n name: target.name,\n configurable: target.properties['#configurable'] === 'true',\n qty: target.qty,\n mrr: this.formatMetric(target.properties.VDM_Total_MRR),\n nrr: this.formatMetric(target.properties.VDM_Total_NRR),\n },\n ];\n }\n\n return result;\n }, []);\n }\n}\n","<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\">&nbsp;To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span>{{ priceList?.name }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span class=\"metrics\">\n <div class=\"metrics__row\">\n MRR: <span class=\"font-semibold\">${{ totalMRR$ | async }}</span>\n </div>\n <div class=\"metrics__row\">\n NRR: <span class=\"font-semibold\">${{ totalNRR$ | async }}</span>\n </div>\n </span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n class=\"doc-gen-button\"\n icon=\"vl-icon vl-icon-doc-gen\"\n (onClick)=\"docGenButtonClickHandler(isCartRoute)\"\n ></p-button>\n\n <ng-container *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\">\n <ng-container *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\">\n <p-splitButton\n *ngIf=\"!isSaveInProgress && !isSubmitInProgress\"\n label=\"Save to Quote\"\n (onClick)=\"saveButtonClickHandler(isCartRoute)\"\n [model]=\"getSplitButtonActions(isCartRoute)\"\n styleClass=\"p-button-outlined\"\n >\n </p-splitButton>\n\n <p-button\n *ngIf=\"isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button\"\n label=\"Saving\"\n [loading]=\"true\"\n ></p-button>\n\n <p-button\n *ngIf=\"isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n label=\"Submitting\"\n [loading]=\"true\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LetDirectiveModule } from '@veloce/components';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { CartPreviewModule } from './cart-overlay/cart-preview.module';\nimport { FlowHeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [FlowHeaderComponent],\n imports: [\n CommonModule,\n OverlayPanelModule,\n LetDirectiveModule,\n TooltipModule,\n ButtonModule,\n CartPreviewModule,\n SplitButtonModule,\n ],\n exports: [FlowHeaderComponent],\n})\nexport class FlowHeaderModule {}\n","import { Injectable } from '@angular/core';\nimport { LineItem } from '@veloce/core';\nimport { FlowAction, IntegrationState } from '@veloce/sdk/cms';\nimport { ConfigurationService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowRouterService } from './flow-router.service';\n\n@Injectable()\nexport class FlowService {\n private cleanup$ = new Subject<void>();\n\n constructor(\n private integrationState: IntegrationState,\n private flowRouterService: FlowRouterService,\n private quoteDraftService: QuoteDraftService,\n private configurationService: ConfigurationService,\n private flowConfigurationService: FlowConfigurationService,\n ) {}\n\n public initSubscriptions(): void {\n this.integrationState\n .listen$<{ lineItemId?: string; productId?: string }>(FlowAction.FLOW_CONFIGURE_PRODUCT)\n .pipe(\n tap(payload => {\n const productId =\n payload.productId ??\n this.quoteDraftService.currentState.find(li => li.id === payload.lineItemId)?.productId;\n\n if (productId) {\n this.flowRouterService.navigateToProductConfiguration(productId, payload.lineItemId);\n } else {\n console.warn(\"Parameter 'productId' is needed to start configuration\");\n }\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_NAVIGATE_BACK)\n .pipe(\n tap(() => this.flowRouterService.navigateBack()),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_NAVIGATE_TO_CATALOG)\n .pipe(\n tap(() => this.flowRouterService.navigateToCatalog()),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION)\n .pipe(\n switchMap(() => {\n const lineItem = this.configurationService.getSnapshot();\n\n if (!lineItem) {\n return of(undefined);\n }\n\n const currentState = this.quoteDraftService.currentState;\n const isNewLineItem = currentState.every(li => li.id !== lineItem.id);\n\n let updatedState: LineItem[];\n if (isNewLineItem) {\n updatedState = [...currentState, lineItem];\n } else {\n updatedState = currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n }\n\n this.quoteDraftService.setCurrentLineItemState(updatedState);\n\n return this.flowConfigurationService.calculate$();\n }),\n tap(() => {\n this.configurationService.hasUnsavedChanges = false;\n this.flowRouterService.navigateToShoppingCart();\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n }\n\n public cleanup(): void {\n this.cleanup$.next();\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { QuoteDraftService } from '@veloce/sdk/core';\nimport { IntegrationState } from '@veloce/sdk/cms';\nimport { map, Observable } from 'rxjs';\nimport { FlowService } from './services';\nimport { FlowDocGenService } from './services/doc-gen.service';\nimport { FlowRouterService } from './services/flow-router.service';\n\n@Component({\n selector: 'vl-flow',\n templateUrl: './flow.component.html',\n styleUrls: ['./flow.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowComponent implements OnInit, OnDestroy {\n public isLoading$: Observable<boolean>;\n public showHeader$: Observable<boolean>;\n public isStandalone$: Observable<boolean>;\n\n constructor(\n private routerService: FlowRouterService,\n private quoteDraftService: QuoteDraftService,\n private flowService: FlowService,\n private docGenService: FlowDocGenService,\n private integrationState: IntegrationState,\n ) {\n this.isLoading$ = this.routerService.loading$;\n\n this.showHeader$ = this.routerService.route$.pipe(\n map(route => route.data.showHeader && !this.quoteDraftService.isStandalone),\n );\n\n this.isStandalone$ = this.quoteDraftService.isStandalone$;\n\n this.flowService.initSubscriptions();\n }\n\n ngOnInit() {\n this.integrationState.clear();\n }\n\n ngOnDestroy(): void {\n this.flowService.cleanup();\n this.docGenService.cleanup();\n }\n}\n","<vl-flow-header *ngIf=\"showHeader$ | async\"></vl-flow-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n\n<ng-container *vlLet=\"isStandalone$ | async as isStandalone\">\n <vl-flow-doc-gen *ngIf=\"!isStandalone\"></vl-flow-doc-gen>\n</ng-container>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router } from '@angular/router';\nimport { ConfigurationContext, ConfigurationContextMode, VlWindow } from '@veloce/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { catchError, from, map, Observable, of, tap } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ContextGuard implements CanActivate, CanActivateChild {\n constructor(\n private router: Router,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n ) {}\n\n public checkActivation(route: ActivatedRouteSnapshot): Observable<boolean> {\n const { queryParams } = route;\n const { accountId, quoteId, orderId } = queryParams;\n const rpcMessage = window.RPC_MESSAGE;\n const mode = this.getConfigurationContextMode(accountId, quoteId, orderId, rpcMessage);\n\n // Restrict if mode is not defined\n if (mode == null) {\n return this.handleError(route, 'Mode is undefined');\n }\n\n const rpcMessageId: string = rpcMessage && JSON.parse(rpcMessage)?.quote?.Id;\n const headerId = accountId || quoteId || orderId || rpcMessageId || 'empty-for-test-mode';\n\n // Allow if context is already initialized with the same headerId\n if (this.contextService.isInitialized) {\n const currentContext = this.contextService.resolve();\n\n if (headerId && currentContext.headerId === headerId) {\n return of(true);\n }\n }\n\n // Initialize context\n return this.contextService.create(headerId, mode).pipe(\n tap((context: ConfigurationContext) => {\n // Update context with queryParams\n this.contextService.update({\n ...context,\n properties: {\n ...context.properties,\n ...(queryParams ?? {}),\n },\n });\n }),\n map(() => true),\n catchError(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message);\n }),\n );\n }\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n return this.checkActivation(route);\n }\n\n public canActivateChild(childRoute: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n return this.checkActivation(childRoute);\n }\n\n private getConfigurationContextMode(\n accountId?: string,\n quoteId?: string,\n orderId?: string,\n rpcMessage?: string,\n ): ConfigurationContextMode | undefined {\n if (accountId) {\n return ConfigurationContextMode.ACCOUNT;\n }\n\n if (quoteId) {\n return ConfigurationContextMode.QUOTE;\n }\n\n if (orderId) {\n return ConfigurationContextMode.ORDER;\n }\n\n if (rpcMessage) {\n return ConfigurationContextMode.REMOTE;\n }\n\n return;\n }\n\n private handleError(route: ActivatedRouteSnapshot, message: string): Observable<boolean> {\n this.contextService.delete();\n const parentUrl = this.routerService.getFlowRootPath(route);\n return from(this.router.navigate([parentUrl, '404'], { state: { message } })).pipe(map(() => false));\n }\n}\n","import { Component, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { ConfigurationService, ContextService, QuoteDraftService } from '@veloce/sdk/core';\nimport { map, of } from 'rxjs';\nimport { FlowDialogService } from '../services/flow-dialog.service';\n\n@Injectable()\nexport class ProductUnloadGuard implements CanDeactivate<any> {\n constructor(\n private router: Router,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private configurationService: ConfigurationService,\n private flowDialogService: FlowDialogService,\n ) {}\n\n canDeactivate(\n _: Component,\n route: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot,\n ) {\n let observable = of(true);\n\n if (!this.quoteDraftService.isStandalone && this.configurationService.hasUnsavedChanges) {\n observable = this.flowDialogService.showUnsavedChangesDialog().pipe(map(confirmed => !confirmed));\n }\n\n return observable.pipe(\n map(unload => {\n if (unload) {\n this.configurationService.reset();\n this.contextService.update({ properties: { productId: undefined, lineItemId: undefined } });\n\n if (!nextState || currentState.url === nextState.url) {\n return true;\n }\n\n // clear obsolete queryParams\n const urlTree = this.router.parseUrl(nextState.url);\n delete urlTree.queryParams.productId;\n\n // replace url after deactivation has finished\n setTimeout(() => this.router.navigateByUrl(urlTree.toString(), { replaceUrl: true }));\n\n return true;\n }\n\n return false;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanDeactivate, Navigation, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RootGuard implements CanActivate, CanDeactivate<any> {\n private initialized = false;\n private navToRestore: Navigation | null = null;\n\n constructor(private router: Router, private routerService: FlowRouterService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n // We always need to initialize root component first, and only then start checking guards/resolvers\n\n if (!this.initialized) {\n this.initialized = true;\n this.navToRestore = this.router.getCurrentNavigation();\n\n const rootUrl = this.routerService.getFlowRootPath(route);\n this.router.navigate([rootUrl], { replaceUrl: !this.navToRestore?.previousNavigation });\n } else if (this.navToRestore) {\n const nav = this.navToRestore;\n setTimeout(() => {\n this.router.navigateByUrl(nav.extractedUrl, nav.extras);\n\n this.navToRestore = null;\n });\n }\n\n return true;\n }\n\n canDeactivate() {\n this.initialized = false;\n return true;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TemplateComponentWithAttachments, UIDefinition as LegacyUIDefinition } from '@veloce/core';\nimport { UIDefinition } from '@veloce/sdk/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n getUiDefinition?(productId: string): Observable<UIDefinition | null>;\n getLegacyUiDefinition?(productId: string): Observable<LegacyUIDefinition | null>;\n getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport {\n ComponentAttachments,\n TemplateComponent,\n UITemplate,\n UITemplateComponentType,\n UITemplateType,\n} from '@veloce/core';\nimport { ContextService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-catalog',\n templateUrl: './catalog.component.html',\n styleUrls: ['./catalog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CatalogComponent implements OnInit, OnDestroy {\n public uiDefinition?: UIDefinition = undefined;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n private templateApiName = '';\n private destroyed$ = new Subject<void>();\n\n constructor(\n private templatesApi: UITemplatesApiService,\n private contextService: ContextService,\n private cdr: ChangeDetectorRef,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.templateApiName = this.contextService.resolve().properties.catalogTemplateApiName ?? '';\n }\n\n ngOnInit(): void {\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition = uiDef;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(err => {\n const message = 'Failed to resolve Catalog component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n\n this.uiDefinition = undefined;\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroyed$),\n )\n .subscribe(() => this.cdr.detectChanges());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getLocalCatalogComponentMeta$(): Observable<ComponentAttachments | undefined> {\n if (!this.customizationService?.getCatalogComponent) {\n return of(undefined);\n }\n\n return this.customizationService?.getCatalogComponent(this.templateApiName).pipe(\n map(component => {\n if (!component) {\n return;\n }\n\n return <ComponentAttachments>{\n html: component.html,\n css: component.css,\n js: component.js,\n json: component.json,\n };\n }),\n );\n }\n\n private getCatalogComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates =>\n templates.find(template => template.type === UITemplateType.CATALOG && template.name === this.templateApiName),\n ),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'catalogTemplateApiName' is missing.\");\n }\n }),\n switchMap(() => this.getLocalCatalogComponentMeta$()),\n switchMap(meta => (meta ? of(meta) : this.getCatalogComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: meta.js && btoa(meta.js),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { CatalogComponent } from './catalog.component';\n\n@NgModule({\n declarations: [CatalogComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [CatalogComponent],\n})\nexport class CatalogModule {}\n","export const getFlowObjectIdPropertyName = (objectName?: string) => {\n switch (objectName) {\n case 'Account':\n return 'accountId';\n case 'Order':\n return 'orderId';\n case 'Quote':\n default:\n return 'quoteId';\n }\n};\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { FlowsApiService } from '@veloce/api';\nimport { FlowProperties } from '@veloce/core';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { map, Observable, shareReplay } from 'rxjs';\nimport { getFlowObjectIdPropertyName } from '../../utils';\n\ninterface FlowPropertiesExt extends FlowProperties {\n queryParamsStr: string;\n}\n\n@Component({\n selector: 'vl-flow-debug',\n templateUrl: './debug.component.html',\n styleUrls: ['./debug.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DebugComponent {\n public readonly objectNames = ['Account', 'Quote', 'Order'];\n public form = new FormGroup({\n id: new FormControl(''),\n name: new FormControl('Quote'),\n });\n\n public selectedFlow?: FlowPropertiesExt;\n public flows$: Observable<FlowPropertiesExt[]>;\n\n constructor(\n private flowsApiService: FlowsApiService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private context: ContextService,\n private flowConfiguration: FlowConfigurationService,\n private quoteDraftService: QuoteDraftService,\n ) {\n this.flows$ = this.flowsApiService.fetchFlows().pipe(\n map(flows =>\n flows.map<FlowPropertiesExt>(flow => {\n const queryParams: Params = flow?.properties?.queryParams ?? {};\n return {\n id: flow.id,\n entryPath: flow?.properties?.entryPath,\n queryParams,\n queryParamsStr: JSON.stringify(queryParams),\n };\n }),\n ),\n shareReplay(),\n );\n }\n\n runFlow() {\n const { id, name } = this.form.value;\n const objectPropertyName = getFlowObjectIdPropertyName(name);\n\n if (!id || !this.selectedFlow) {\n return;\n }\n\n // Delete context before starting a new flow\n this.context.delete();\n this.quoteDraftService.reset();\n\n this.router.navigate(['..', 'flows'], {\n queryParams: {\n flowId: this.selectedFlow.id,\n [objectPropertyName]: id,\n ...this.selectedFlow.queryParams,\n },\n relativeTo: this.activatedRoute,\n });\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n\n <div class=\"field\">\n <label>SF Object Name</label>\n <p-dropdown\n appendTo=\"body\"\n formControlName=\"name\"\n [autoDisplayFirst]=\"false\"\n [options]=\"objectNames\"\n ></p-dropdown>\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.entryPath }}</td>\n <td>{{ flow.queryParamsStr }}</td>\n </tr>\n </tbody>\n</table>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { DebugComponent } from './debug.component';\n\nconst routes: Routes = [{ path: '', component: DebugComponent }];\n\n@NgModule({\n declarations: [DebugComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(routes),\n RadioButtonModule,\n ButtonModule,\n InputTextModule,\n DropdownModule,\n ],\n})\nexport class DebugModule {}\n","import { Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { QuoteApiService } from '@veloce/api';\nimport { EntityUtil, LineItem, QuoteDraft, VlWindow } from '@veloce/core';\nimport { ContextService, QuoteDraftService, QuoteStates, RuntimeOperation } from '@veloce/sdk/core';\nimport {\n CurrentStateService,\n LegacyRuntimeContext,\n RuntimeContextService,\n RuntimeService,\n SolutionReadyAware,\n SolutionUpdatedAware,\n} from '@veloce/sdk/runtime';\nimport { Observable, of, Subject } from 'rxjs';\nimport { first, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ndeclare const window: VlWindow;\n\n@Component({\n templateUrl: './legacy-product.component.html',\n styleUrls: ['./legacy-product.component.scss'],\n})\nexport class LegacyProductComponent implements OnInit, OnDestroy, SolutionUpdatedAware, SolutionReadyAware {\n private destroyed$ = new Subject<void>();\n\n private assets?: LineItem[];\n\n constructor(\n private route: ActivatedRoute,\n private quoteDraftService: QuoteDraftService,\n private quoteApiService: QuoteApiService,\n private contextService: ContextService,\n private runtimeContextService: RuntimeContextService,\n private runtimeService: RuntimeService,\n private currentStateService: CurrentStateService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {}\n\n ngOnInit(): void {\n this.quoteDraftService.quoteDraft$\n .pipe(first(), takeUntil(this.destroyed$))\n .subscribe(quote => this.init(quote, this.route.snapshot.queryParams));\n\n this.runtimeService.onSolutionStopEvent.pipe(take(1)).subscribe(lineItem => this.onSolutionStop(lineItem));\n\n this.runtimeService.onSolutionReadyEvent.pipe(take(1)).subscribe(event => this.onSolutionReady(event));\n\n this.runtimeService.onSolutionCancelEvent.pipe(take(1)).subscribe(() => this.onSolutionCancel());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n onSolutionReady(lineItem: LineItem): void {\n lineItem.actionCode = lineItem.actionCode ?? 'ADD';\n }\n\n onSolutionCancel(): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {\n window['VELO_BACK_FN'].apply(null, [quote.quoteId]);\n });\n }\n\n onSolutionUpdated(lineItem: LineItem): void {\n const states: QuoteStates = {\n configurableRamp: lineItem,\n currentState: this.currentStateService.currentState,\n asset: this.getAsset(lineItem),\n };\n\n this.runtimeService.updateRuntime(states);\n }\n\n onSolutionStop(lineItem: LineItem): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {\n const quoteToUpsert: QuoteDraft = {\n ...quote,\n context: this.contextService.resolve(),\n currentState: [...(this.currentStateService.currentState || []).filter(li => li.id !== lineItem.id), lineItem],\n };\n\n this.quoteApiService\n .upsertQuote(quoteToUpsert)\n .pipe(take(1))\n .subscribe(quote => {\n window['VELO_BACK_FN'].apply(null, [quote.quoteId]);\n });\n });\n }\n\n private init(quote: QuoteDraft, queryParams: Params): void {\n const productId = queryParams['productId'];\n const lineItemId = this.getLineItemId(quote, queryParams);\n this.assets = quote.initialState;\n\n lineItemId && quote.currentState ? this.reConfigure(lineItemId, quote.currentState) : this.configure(productId);\n }\n\n private getLineItemId(quote: QuoteDraft, queryParams: Params): string | undefined {\n if (EntityUtil.isPresent(queryParams['lineItemId'])) {\n return queryParams['lineItemId'];\n }\n\n return quote.currentState\n .filter(lineItem => lineItem.productId === queryParams['productId'])\n .map(lineItem => lineItem.id)\n .find(id => id);\n }\n\n private configure(productId: string): void {\n const runtimeContext = this.getRuntimeContext(productId, '', RuntimeOperation.INIT);\n\n this.startRuntime({}, runtimeContext);\n }\n\n private reConfigure(lineItemId: string, currentState: LineItem[]): void {\n const currentStateItem = EntityUtil.findById(lineItemId, currentState);\n const runtimeContext = this.getRuntimeContext(\n currentStateItem.productId,\n currentStateItem.offeringId,\n RuntimeOperation.UPDATE,\n );\n\n const states: QuoteStates = {\n configurableRamp: currentStateItem,\n currentState,\n asset: this.getAsset(currentStateItem),\n };\n\n this.currentStateService.update(currentState);\n this.startRuntime(states, runtimeContext);\n }\n\n private getAsset(lineItem: LineItem): LineItem | undefined {\n return this.assets && this.assets.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);\n }\n\n private startRuntime(states: QuoteStates, runtimeContext$: Observable<LegacyRuntimeContext>): void {\n runtimeContext$\n .pipe(\n take(1),\n map(runtimeContext => {\n this.runtimeService.startRuntime(runtimeContext, states);\n }),\n )\n .subscribe();\n }\n\n private customizeContext(productId: string, context: LegacyRuntimeContext): Observable<LegacyRuntimeContext> {\n if (!this.customizationService?.getLegacyUiDefinition) {\n return of(context);\n }\n\n return this.customizationService.getLegacyUiDefinition(productId).pipe(\n map(uiDef => ({\n ...context,\n uiDefinition: uiDef ?? context.uiDefinition,\n })),\n );\n }\n\n private getRuntimeContext(\n productId: string,\n offeringId: string,\n runtimeOperation: RuntimeOperation,\n ): Observable<LegacyRuntimeContext> {\n return this.runtimeContextService.getRuntimeContext(productId, offeringId).pipe(\n map(runtimeContext => {\n runtimeContext.invocationContext = { runtimeOperation: RuntimeOperation[runtimeOperation] };\n return runtimeContext;\n }),\n switchMap(runtimeContext => this.customizeContext(productId, runtimeContext)),\n );\n }\n}\n","<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RuntimeModule } from '@veloce/sdk/runtime';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { LegacyProductComponent } from './legacy-product.component';\n\n@NgModule({\n declarations: [LegacyProductComponent],\n imports: [CommonModule, RuntimeModule, TooltipModule.forRoot()],\n exports: [LegacyProductComponent],\n})\nexport class LegacyProductModule {}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { LineItem, QuoteDraft } from '@veloce/core';\nimport {\n ConfigurationRuntimeService,\n ConfigurationService,\n ContextService,\n QuoteDraftService,\n UIDefinition,\n} from '@veloce/sdk/core';\nimport { MessageService } from 'primeng/api';\nimport {\n BehaviorSubject,\n catchError,\n first,\n Observable,\n of,\n Subject,\n switchMap,\n takeUntil,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types/flow-customization.types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-product',\n templateUrl: './product.component.html',\n styleUrls: ['./product.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProductComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n\n public uiDefinition?: UIDefinition;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n constructor(\n private contextService: ContextService,\n private runtimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private quoteDraftService: QuoteDraftService,\n private messageService: MessageService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {}\n\n ngOnInit(): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroy$)).subscribe(quote => this.init(quote));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private customize(productId: string): Observable<any> {\n if (!this.customizationService?.getUiDefinition) {\n return of(null);\n }\n\n return this.customizationService.getUiDefinition(productId).pipe(\n tap(uiDef => {\n if (uiDef) {\n this.uiDefinition = uiDef;\n this.runtimeService.uiDefinitionProperties = uiDef.properties ?? {};\n }\n }),\n );\n }\n\n private init(quote: QuoteDraft): void {\n const contextProperties = this.contextService.resolve().properties;\n const productId = contextProperties.productId;\n\n if (!productId) {\n return;\n }\n\n const lineItemId = this.getLineItemId(quote, productId, contextProperties.lineItemId);\n const currentStateItem = quote.currentState.find(({ id }) => id === lineItemId);\n\n if (currentStateItem) {\n this.configurationService.updateCurrentStates({\n configurableRamp: currentStateItem,\n currentState: quote.currentState,\n asset: this.getAsset(quote, currentStateItem),\n });\n }\n\n const { offeringId } = currentStateItem ?? {};\n\n this.runtimeService\n .init({ productId, offeringId })\n .pipe(\n tap(context => (this.uiDefinition = context?.uiDefinition)),\n switchMap(() => this.customize(productId)),\n this.throwIfNoUIDefinition(),\n switchMap(() => this.configurationService.configure()),\n tap(() => this.state$.next({ loading: false, failure: false })),\n catchError(error => {\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private throwIfNoUIDefinition() {\n return <T>(source$: Observable<T>): Observable<T> => {\n return source$.pipe(\n switchMap(() => {\n if (!this.uiDefinition) {\n return throwError(() => 'Product does not have Configuration UI');\n }\n\n return source$;\n }),\n );\n };\n }\n\n private getLineItemId(quote: QuoteDraft, productId: string, lineItemId?: string): string | undefined {\n // search by lineItemId first\n let id: string | undefined = quote.currentState.find(li => li.id === lineItemId)?.id;\n\n if (!id && this.quoteDraftService.isStandalone) {\n id = quote.currentState.find(li => li.productId === productId)?.id;\n }\n\n return id;\n }\n\n private getAsset(quote: QuoteDraft, lineItem: LineItem): LineItem | undefined {\n return quote.initialState.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { ProductComponent } from './product.component';\n\n@NgModule({\n declarations: [ProductComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [ProductComponent],\n})\nexport class ProductModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'vl-flow-record-not-found',\n templateUrl: './record-not-found.component.html',\n styleUrls: ['./record-not-found.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RecordNotFoundComponent {\n message: string;\n subMessage = '';\n\n constructor(private router: Router, private route: ActivatedRoute) {\n const navigation = this.router.getCurrentNavigation();\n const { state } = navigation?.extras || {};\n\n this.message = state?.message;\n if (typeof this.message === 'string') {\n this.subMessage = this.message.includes('/describe') ? 'A potential problem with permissions' : '';\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div class=\"msg\">\n <div *ngIf=\"message; else defaultMessage\" class=\"message-title\">\n <p>{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"message-title\">{{ subMessage }}</p>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RecordNotFoundComponent } from './record-not-found.component';\n\nconst routes: Routes = [{ path: '', component: RecordNotFoundComponent }];\n\n@NgModule({\n declarations: [RecordNotFoundComponent],\n imports: [CommonModule, RouterModule.forChild(routes)],\n})\nexport class RecordNotFoundModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport {\n ComponentAttachments,\n TemplateComponent,\n UITemplate,\n UITemplateComponentType,\n UITemplateType,\n} from '@veloce/core';\nimport { ContextService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-shopping-cart',\n templateUrl: './shopping-cart.component.html',\n styleUrls: ['./shopping-cart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShoppingCartComponent implements OnInit, OnDestroy {\n public uiDefinition?: UIDefinition = undefined;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n private templateApiName = '';\n private destroyed$ = new Subject<void>();\n\n constructor(\n private templatesApi: UITemplatesApiService,\n private contextService: ContextService,\n private cdr: ChangeDetectorRef,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.templateApiName = this.contextService.resolve().properties.cartTemplateApiName ?? '';\n }\n\n ngOnInit(): void {\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition = uiDef;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(err => {\n const message = 'Failed to resolve Shopping cart component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n\n this.uiDefinition = undefined;\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroyed$),\n )\n .subscribe(() => this.cdr.detectChanges());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getLocalShoppingCartComponentMeta$(): Observable<ComponentAttachments | undefined> {\n if (!this.customizationService?.getShoppingCartComponent) {\n return of(undefined);\n }\n\n return this.customizationService?.getShoppingCartComponent(this.templateApiName).pipe(\n map(component => {\n if (!component) {\n return;\n }\n\n return <ComponentAttachments>{\n html: component.html,\n css: component.css,\n js: component.js,\n json: component.json,\n };\n }),\n );\n }\n\n private getShoppingCartComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates =>\n templates.find(\n template => template.type === UITemplateType.SHOPPING_CART && template.name === this.templateApiName,\n ),\n ),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'cartTemplateApiName' is missing.\");\n }\n }),\n switchMap(() => this.getLocalShoppingCartComponentMeta$()),\n switchMap(meta => (meta ? of(meta) : this.getShoppingCartComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: meta.js && btoa(meta.js),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { ShoppingCartComponent } from './shopping-cart.component';\n\n@NgModule({\n declarations: [ShoppingCartComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [ShoppingCartComponent],\n})\nexport class ShoppingCartModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';\nimport { FlowsApiService } from '@veloce/api';\nimport { FlowQueryParams } from '@veloce/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { Dictionary } from 'lodash';\nimport { map } from 'rxjs/operators';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable()\nexport class FlowResolver implements Resolve<Promise<boolean>> {\n constructor(\n private router: Router,\n private flowsApiService: FlowsApiService,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n ) {}\n\n private handleError(\n route: ActivatedRouteSnapshot,\n message?: string,\n queryParams?: Dictionary<any>,\n ): Promise<boolean> {\n const parentUrl = this.routerService.getFlowRootPath(route);\n return this.router.navigate([parentUrl, '404'], {\n queryParams,\n state: {\n message: message,\n },\n });\n }\n\n resolve(route: ActivatedRouteSnapshot) {\n const { queryParams } = route;\n const { flowId } = queryParams;\n\n if (!flowId) {\n return this.handleError(route);\n }\n\n return this.flowsApiService.getFlow(flowId).pipe(\n map(flow => {\n if (!flow) {\n return this.handleError(route, `Flow with flowId=${flowId} is not defined`);\n }\n\n const { properties } = flow;\n const { queryParams: flowQueryParams, entryPath } = properties;\n const isProductFlow = entryPath.includes('/product');\n const mergedParams = {\n ...queryParams,\n ...flowQueryParams,\n ...(<FlowQueryParams>{\n ...(isProductFlow && { standalone: true }),\n }),\n };\n\n const contextProperties = Object.entries(mergedParams).reduce<Dictionary<string>>(\n (trunk, [key, value]) => ({ ...trunk, [key]: String(value) }),\n {},\n );\n\n this.contextService.update({ properties: contextProperties });\n\n const parentUrl = this.routerService.getFlowRootPath(route);\n const entryUrl = String(entryPath ?? '')\n .split('/')\n .filter(Boolean);\n\n return this.router\n .navigate([parentUrl, ...entryUrl], {\n queryParams: mergedParams,\n replaceUrl: true,\n })\n .catch(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message, mergedParams);\n });\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { catchError, from, Observable, of, switchMap, tap } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable()\nexport class QuoteResolver implements Resolve<void | boolean> {\n constructor(\n private router: Router,\n private quoteDraftService: QuoteDraftService,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n private flowConfiguration: FlowConfigurationService,\n ) {}\n\n private handleError(route: ActivatedRouteSnapshot, message: string): Observable<boolean> {\n const parentUrl = this.routerService.getFlowRootPath(route);\n return from(this.router.navigate([parentUrl, '404'], { state: { message } }));\n }\n\n private calculate$(): Observable<void> {\n if (!this.quoteDraftService.isStandalone) {\n return this.flowConfiguration.calculate$();\n }\n\n return of(undefined);\n }\n\n resolve(route: ActivatedRouteSnapshot): Observable<void | boolean> {\n const { headerId } = this.contextService.resolve();\n const quote = this.quoteDraftService.quoteDraft;\n\n if (quote && quote.quoteId === headerId) {\n return of(true);\n }\n\n const { queryParams } = route;\n\n return this.quoteDraftService.init(headerId, queryParams).pipe(\n switchMap(() => this.calculate$()),\n tap(() => (this.quoteDraftService.isInitialized = true)),\n catchError(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message);\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { VELOCE_FLOW_ROOT_ROUTE } from './constants';\nimport { FlowComponent } from './flow.component';\nimport { ContextGuard } from './guards/context.guard';\nimport { ProductUnloadGuard } from './guards/product-unload.guard';\nimport { RootGuard } from './guards/root.guard';\nimport { CatalogComponent } from './pages/catalog/catalog.component';\nimport { CatalogModule } from './pages/catalog/catalog.module';\nimport { DebugModule } from './pages/debug/debug.module';\nimport { LegacyProductComponent } from './pages/legacy-product/legacy-product.component';\nimport { LegacyProductModule } from './pages/legacy-product/legacy-product.module';\nimport { ProductComponent } from './pages/product/product.component';\nimport { ProductModule } from './pages/product/product.module';\nimport { RecordNotFoundModule } from './pages/record-not-found/record-not-found.module';\nimport { ShoppingCartComponent } from './pages/shopping-cart/shopping-cart.component';\nimport { ShoppingCartModule } from './pages/shopping-cart/shopping-cart.module';\nimport { FlowResolver } from './resolvers/flow.resolver';\nimport { QuoteResolver } from './resolvers/quote.resolver';\nimport { FlowRouterService } from './services/flow-router.service';\nimport { RouteWithId } from './types/route.types';\n\nconst rootRoute: RouteWithId = {\n id: VELOCE_FLOW_ROOT_ROUTE,\n path: '',\n component: FlowComponent,\n canActivate: [RootGuard],\n canDeactivate: [RootGuard],\n children: [\n {\n path: 'flows',\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: FlowResolver },\n canActivate: [ContextGuard],\n children: [],\n },\n {\n path: 'legacy',\n children: [\n {\n path: 'product',\n component: LegacyProductComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n },\n ],\n },\n {\n path: 'product',\n component: ProductComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n canDeactivate: [ProductUnloadGuard],\n data: { showHeader: true },\n },\n {\n path: 'cart',\n component: ShoppingCartComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n data: { showHeader: true },\n },\n {\n path: 'catalog',\n component: CatalogComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n data: { showHeader: true },\n },\n {\n path: 'debug',\n loadChildren: () => DebugModule,\n },\n {\n path: '404',\n loadChildren: () => RecordNotFoundModule,\n },\n ],\n};\n\n@NgModule({\n imports: [RouterModule.forChild([rootRoute]), ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule],\n exports: [RouterModule],\n providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver],\n})\nexport class FlowRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloce/api';\nimport { LetDirectiveModule, LoaderModule } from '@veloce/components';\nimport { LauncherModule } from '@veloce/sdk/cms';\nimport { SdkCoreModule } from '@veloce/sdk/core';\nimport { FlowDialogModule } from './components/dialog/dialog.module';\nimport { DocGenModule } from './components/doc-gen/doc-gen.module';\nimport { FlowHeaderModule } from './components/header/header.module';\nimport { FlowRoutingModule } from './flow-routing.module';\nimport { FlowComponent } from './flow.component';\nimport { FlowService } from './services';\nimport { FlowDocGenService } from './services/doc-gen.service';\nimport { FlowDialogService } from './services/flow-dialog.service';\n\n@NgModule({\n declarations: [FlowComponent],\n imports: [\n CommonModule,\n FlowRoutingModule,\n ApiModule,\n LauncherModule,\n LoaderModule,\n FlowHeaderModule,\n FlowDialogModule,\n SdkCoreModule,\n DocGenModule,\n LetDirectiveModule,\n ],\n providers: [FlowService, FlowDialogService, FlowDocGenService],\n})\nexport class FlowModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["routes","first","takeUntil","map","switchMap","TooltipModule"],"mappings":"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"}
1
+ {"version":3,"file":"veloce-sdk.js","sources":["../../../../libs/sdk/src/constants.ts","../../../../libs/sdk/src/components/dialog/dialog.component.ts","../../../../libs/sdk/src/components/dialog/dialog.component.html","../../../../libs/sdk/src/components/dialog/dialog.module.ts","../../../../libs/sdk/src/services/doc-gen.service.ts","../../../../libs/sdk/src/components/doc-gen/doc-gen.component.ts","../../../../libs/sdk/src/components/doc-gen/doc-gen.component.html","../../../../libs/sdk/src/components/doc-gen/doc-gen.module.ts","../../../../libs/sdk/src/services/flow-router.service.ts","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.component.ts","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.component.html","../../../../libs/sdk/src/components/header/cart-overlay/cart-preview.module.ts","../../../../libs/sdk/src/services/flow-dialog.service.ts","../../../../libs/sdk/src/components/header/header.component.ts","../../../../libs/sdk/src/components/header/header.component.html","../../../../libs/sdk/src/components/header/header.module.ts","../../../../libs/sdk/src/services/flow.service.ts","../../../../libs/sdk/src/flow.component.ts","../../../../libs/sdk/src/flow.component.html","../../../../libs/sdk/src/guards/context.guard.ts","../../../../libs/sdk/src/guards/product-unload.guard.ts","../../../../libs/sdk/src/guards/root.guard.ts","../../../../libs/sdk/src/types/flow-customization.types.ts","../../../../libs/sdk/src/pages/catalog/catalog.component.ts","../../../../libs/sdk/src/pages/catalog/catalog.component.html","../../../../libs/sdk/src/pages/catalog/catalog.module.ts","../../../../libs/sdk/src/utils/flow.utils.ts","../../../../libs/sdk/src/pages/debug/debug.component.ts","../../../../libs/sdk/src/pages/debug/debug.component.html","../../../../libs/sdk/src/pages/debug/debug.module.ts","../../../../libs/sdk/src/pages/legacy-product/legacy-product.component.ts","../../../../libs/sdk/src/pages/legacy-product/legacy-product.component.html","../../../../libs/sdk/src/pages/legacy-product/legacy-product.module.ts","../../../../libs/sdk/src/pages/product/product.component.ts","../../../../libs/sdk/src/pages/product/product.component.html","../../../../libs/sdk/src/pages/product/product.module.ts","../../../../libs/sdk/src/pages/record-not-found/record-not-found.component.ts","../../../../libs/sdk/src/pages/record-not-found/record-not-found.component.html","../../../../libs/sdk/src/pages/record-not-found/record-not-found.module.ts","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.component.ts","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.component.html","../../../../libs/sdk/src/pages/shopping-cart/shopping-cart.module.ts","../../../../libs/sdk/src/resolvers/flow.resolver.ts","../../../../libs/sdk/src/resolvers/quote.resolver.ts","../../../../libs/sdk/src/flow-routing.module.ts","../../../../libs/sdk/src/flow.module.ts","../../../../libs/sdk/veloce-sdk.ts"],"sourcesContent":["export const VELOCE_FLOW_ROOT_ROUTE = 'VELOCE_FLOW_ROOT_ROUTE';\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { FlowDialogConfig } from './dialog.types';\n\n@Component({\n selector: 'vl-flow-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowDialogComponent {\n public config: FlowDialogConfig;\n\n constructor(private dialogConfig: DynamicDialogConfig, private ref: DynamicDialogRef) {\n this.config = this.dialogConfig.data.config;\n }\n\n cancelHandler(): void {\n this.ref.close();\n }\n\n confirmHandler(): void {\n this.ref.close(true);\n }\n}\n","<div *ngIf=\"config.description\" class=\"description\">\n {{ config.description }}\n</div>\n\n<div class=\"form-actions\">\n <p-button\n *ngIf=\"config.secondaryButton\"\n styleClass=\"p-button-outlined button-text-bold\"\n [label]=\"config.secondaryButton!\"\n (onClick)=\"cancelHandler()\"\n ></p-button>\n <p-button\n styleClass=\"p-button p-button-filled\"\n [label]=\"config.primaryButton\"\n (onClick)=\"confirmHandler()\"\n ></p-button>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonModule } from 'primeng/button';\nimport { FlowDialogComponent } from './dialog.component';\n\n@NgModule({\n declarations: [FlowDialogComponent],\n imports: [CommonModule, ButtonModule],\n exports: [FlowDialogComponent],\n})\nexport class FlowDialogModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowAction, IntegrationState } from '@veloce/sdk/cms';\nimport { BehaviorSubject, Subject, takeUntil, tap } from 'rxjs';\n\n@Injectable()\nexport class FlowDocGenService {\n private cleanup$ = new Subject<void>();\n private isVisibleSubj$ = new BehaviorSubject(false);\n\n public isVisible$ = this.isVisibleSubj$.asObservable();\n\n constructor(private integrationState: IntegrationState) {\n this.initSubscriptions();\n }\n\n public cleanup(): void {\n this.cleanup$.next();\n }\n\n private initSubscriptions(): void {\n this.integrationState\n .listen$(FlowAction.FLOW_OPEN_DOC_GEN)\n .pipe(\n tap(() => this.isVisibleSubj$.next(true)),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_CLOSE_DOC_GEN)\n .pipe(\n tap(() => this.isVisibleSubj$.next(false)),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy } from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport { TemplateComponent, UITemplate, UITemplateComponentType, UITemplateType } from '@veloce/core';\nimport { extendElementMetadata, extractElementMetadata } from '@veloce/sdk/cms';\nimport { ContextService, QuoteDraftService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, first, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowDocGenService } from '../../services/doc-gen.service';\n\n@Component({\n selector: 'vl-flow-doc-gen',\n templateUrl: './doc-gen.component.html',\n styleUrls: ['./doc-gen.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DocGenComponent implements OnDestroy {\n public uiDefinition$ = new BehaviorSubject<UIDefinition | null>(null);\n public isVisible$: Observable<boolean>;\n\n private templateApiName = '';\n private destroy$ = new Subject<void>();\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private contextService: ContextService,\n private templatesApi: UITemplatesApiService,\n private docGenService: FlowDocGenService,\n private toastService: ToastService,\n ) {\n this.isVisible$ = this.docGenService.isVisible$;\n\n // initialize when quote draft requested\n this.quoteDraftService.quoteDraft$\n .pipe(\n first(),\n tap(() => this.initialize()),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private initialize(): void {\n this.templateApiName = this.contextService.resolve().properties.docGenTemplateApiName ?? '';\n\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition$.next(uiDef);\n }),\n catchError(err => {\n const message = 'Failed to resolve DocGen component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getDocGenComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates => {\n const template = templates.find(\n template => template.type === UITemplateType.DOCGEN && template.name === this.templateApiName,\n );\n return template ?? templates[0];\n }),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'docGenTemplateApiName' is missing.\");\n }\n }),\n switchMap(meta => (meta ? of(meta) : this.getDocGenComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const headerId = this.contextService.resolve().properties.Id ?? null;\n let script = meta.js;\n\n if (script) {\n const metadata = extractElementMetadata(script);\n script = extendElementMetadata(script, {\n inputs: {\n ...metadata.inputs,\n Id: headerId ? `\"${headerId}\"` : null,\n },\n });\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: script && btoa(script),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\n }\n}\n","<ng-container *ngIf=\"isVisible$ | async\">\n <ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\" [clearState]=\"true\"></vl-cms-preview>\n </ng-container>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { DocGenComponent } from './doc-gen.component';\n\n@NgModule({\n declarations: [DocGenComponent],\n imports: [CommonModule, PreviewModule],\n exports: [DocGenComponent],\n})\nexport class DocGenModule {}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n Event,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationStart,\n Params,\n Router,\n} from '@angular/router';\nimport { ContextService } from '@veloce/sdk/core';\nimport { distinctUntilChanged, filter, map, Observable, shareReplay, startWith } from 'rxjs';\nimport { VELOCE_FLOW_ROOT_ROUTE } from '../constants';\nimport { RouteWithId } from '../types/route.types';\n\n@Injectable({ providedIn: 'root' })\nexport class FlowRouterService {\n private routeChange$: Observable<Event>;\n private lastChildParams$: Observable<Params>;\n private lastChildRoute$: Observable<ActivatedRouteSnapshot>;\n private urlHistory: string[] = [];\n\n public loading$: Observable<boolean>;\n\n constructor(private router: Router, private route: ActivatedRoute, private contextService: ContextService) {\n this.routeChange$ = this.router.events.pipe(\n filter(e => e instanceof NavigationEnd),\n shareReplay(),\n );\n\n this.lastChildParams$ = this.watchLastChildParams$(this.route).pipe(\n startWith(this.getLastChildParams(this.route.snapshot)),\n shareReplay(),\n );\n this.lastChildRoute$ = this.watchLastChildRoute$(this.route).pipe(\n startWith(this.getLastChildRouteSnapshot(this.route.snapshot)),\n shareReplay(),\n );\n\n this.loading$ = this.router.events.pipe(\n filter(\n e =>\n e instanceof NavigationStart ||\n e instanceof NavigationCancel ||\n e instanceof NavigationEnd ||\n e instanceof NavigationError,\n ),\n map(e => e instanceof NavigationStart),\n startWith(false),\n distinctUntilChanged(),\n );\n\n this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {\n this.urlHistory.push(this.router.url);\n });\n }\n\n getFlowRootRoute(route: ActivatedRouteSnapshot): ActivatedRouteSnapshot | undefined {\n const path = [...route.pathFromRoot];\n\n while (path.length) {\n const parent = path.pop();\n\n if (!parent) {\n break;\n }\n\n if ((parent.routeConfig as RouteWithId)?.id === VELOCE_FLOW_ROOT_ROUTE) {\n return parent;\n }\n }\n\n return;\n }\n\n getFlowRootPath(route: ActivatedRouteSnapshot): string {\n const rootRoute = this.getFlowRootRoute(route);\n if (!rootRoute) {\n return '';\n }\n\n const path = rootRoute.pathFromRoot\n .map(r => r.routeConfig?.path)\n .filter(Boolean)\n .join('/');\n\n return '/' + path;\n }\n\n get route$(): Observable<ActivatedRouteSnapshot> {\n return this.lastChildRoute$;\n }\n\n get params$(): Observable<Params> {\n return this.lastChildParams$;\n }\n\n public getLastChildRoute = (route: ActivatedRoute): ActivatedRoute => {\n return route.firstChild ? this.getLastChildRoute(route.firstChild) : route;\n };\n\n public getNthChildRoute = (route: ActivatedRoute, index: number): ActivatedRoute => {\n if (index <= 0) {\n return route;\n }\n\n return route.firstChild ? this.getNthChildRoute(route.firstChild, index - 1) : route;\n };\n\n public getLastChildRouteSnapshot = (route: ActivatedRouteSnapshot): ActivatedRouteSnapshot => {\n return route.firstChild ? this.getLastChildRouteSnapshot(route.firstChild) : route;\n };\n\n public watchLastChildRoute$ = (route: ActivatedRoute): Observable<ActivatedRouteSnapshot> => {\n return this.routeChange$.pipe(map(() => this.getLastChildRouteSnapshot(route.snapshot)));\n };\n\n public getLastChildParams = (route: ActivatedRouteSnapshot): Params => {\n return route.firstChild ? this.getLastChildParams(route.firstChild) : route.params;\n };\n\n public watchLastChildParams$ = (route: ActivatedRoute): Observable<Params> => {\n return this.routeChange$.pipe(map(() => this.getLastChildParams(route.snapshot)));\n };\n\n public getFlowSubpath$ = (): Observable<string> => {\n return this.route$.pipe(\n map(route => {\n const url = route.url.join('/');\n const flowRootUrl = this.getFlowRootPath(route);\n return url.replace(flowRootUrl, '');\n }),\n );\n };\n\n public isConfigurationRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('product')));\n }\n\n public isCartRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('cart')));\n }\n\n public isCatalogRoute$(): Observable<boolean> {\n return this.getFlowSubpath$().pipe(map(url => url.startsWith('catalog')));\n }\n\n public navigateBack(): void {\n const prevUrl = this.urlHistory[this.urlHistory.length - 2];\n\n if (prevUrl) {\n this.router.navigateByUrl(prevUrl);\n }\n }\n\n public navigateToProductConfiguration(productId: string, lineItemId?: string): void {\n this.contextService.update({ properties: { productId, lineItemId } });\n\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'product'], {\n queryParams: { ...routeSnapshot.queryParams, productId },\n });\n }\n\n public navigateToShoppingCart(): void {\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'cart'], { queryParams: routeSnapshot.queryParams });\n }\n\n public navigateToCatalog(): void {\n const routeSnapshot = this.getLastChildRouteSnapshot(this.route.snapshot);\n const flowRouteUrl = this.getFlowRootPath(routeSnapshot);\n\n this.router.navigate([flowRouteUrl, 'catalog'], { queryParams: routeSnapshot.queryParams });\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { FlowConfigurationService, ProductImagesService, QuoteDraftService } from '@veloce/sdk/core';\nimport { OverlayPanel } from 'primeng/overlaypanel';\nimport { BehaviorSubject, combineLatest, filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { FlowRouterService } from '../../../services/flow-router.service';\nimport { HeaderProduct } from '../header.types';\n\n@Component({\n selector: 'vl-cart-preview',\n templateUrl: './cart-preview.component.html',\n styleUrls: ['./cart-preview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CartPreviewComponent implements OnChanges, AfterViewInit, OnDestroy {\n @ViewChild(OverlayPanel) overlayPanel!: OverlayPanel;\n\n @Input() products!: HeaderProduct[];\n\n public form = new FormGroup({});\n public readonlyProductId$: Observable<string | null>;\n\n private shouldUpdate$ = new BehaviorSubject(true);\n private destroyed$ = new Subject<void>();\n\n public isEditMode$: Observable<boolean>;\n\n constructor(\n private flowConfiguration: FlowConfigurationService,\n private routerService: FlowRouterService,\n private productImagesService: ProductImagesService,\n private quoteDraftService: QuoteDraftService,\n ) {\n this.readonlyProductId$ = combineLatest([\n this.routerService.route$,\n this.routerService.isConfigurationRoute$(),\n ]).pipe(\n map(([route, isConfigurationRoute]) => {\n if (!isConfigurationRoute) {\n return null;\n }\n\n return route.queryParams.productId;\n }),\n );\n\n this.isEditMode$ = this.quoteDraftService.isEditMode$();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.products) {\n this.shouldUpdate$.next(true);\n }\n }\n\n ngAfterViewInit() {\n combineLatest([this.readonlyProductId$, this.isEditMode$, this.shouldUpdate$, this.overlayPanel.onShow])\n .pipe(\n filter(() => this.overlayPanel.overlayVisible),\n takeUntil(this.destroyed$),\n )\n .subscribe(([readonlyProductId, isEditMode]) =>\n this.updateControls(this.products, isEditMode, readonlyProductId),\n );\n }\n\n public ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n public getImageUrl(productId: string): Observable<string | null> {\n return this.productImagesService.getImageUrl$(productId);\n }\n\n public navigateToProductConfiguration(productId: string, lineItemId: string) {\n this.overlayPanel.hide();\n this.routerService.navigateToProductConfiguration(productId, lineItemId);\n }\n\n public controlBlurHandler(product: HeaderProduct): void {\n const control = this.form.controls[product.id];\n if (control.invalid) {\n return;\n }\n\n this.flowConfiguration.update([\n {\n dataType: 'LINEITEM',\n attributeType: 'QTY',\n id: product.id,\n newValue: control.value,\n },\n ]);\n }\n\n public deleteHandler(product: HeaderProduct): void {\n this.flowConfiguration.delete([product.id]);\n }\n\n public deleteAllHandler(): void {\n const productIds = this.products.map(product => product.id);\n this.flowConfiguration.delete(productIds);\n }\n\n private updateControls(products: HeaderProduct[], isEditMode: boolean, readonlyProductId: string | null): void {\n const ids: string[] = [];\n\n products.forEach(item => {\n if (!item.id) {\n return;\n }\n\n ids.push(item.id);\n\n if (!this.form.controls[item.id]) {\n this.form.addControl(item.id, new FormControl(item.qty, []));\n } else {\n this.form.controls[item.id]?.setValue(item.qty);\n }\n\n if (!isEditMode || item.deleted || item.productId === readonlyProductId) {\n this.form.controls[item.id].disable();\n } else {\n this.form.controls[item.id].enable();\n }\n });\n\n const removedIds = Object.keys(this.form.controls).filter(id => !ids.includes(id));\n removedIds.forEach(id => this.form.removeControl(id));\n }\n}\n","<p-overlayPanel\n styleClass=\"navigation-settings-overlay flow-header-overlay center\"\n showTransitionOptions=\"0ms\"\n hideTransitionOptions=\"0ms\"\n>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\" *vlLet=\"readonlyProductId$ | async as readonlyProductId\">\n <ng-container *vlLet=\"isEditMode$ | async as isEditMode\">\n <ng-container *ngIf=\"products.length > 0; else empty\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Products ({{ products.length }})</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <div class=\"product header\">\n <span>Product</span>\n <span class=\"text-right\">Qty</span>\n <span class=\"text-right\">MRR</span>\n <span class=\"text-right\">NRR</span>\n </div>\n\n <div class=\"scrollable-wrapper\">\n <div class=\"product\" *ngFor=\"let product of products\">\n <div\n class=\"product__info\"\n *vlLet=\"!isEditMode || product.deleted || readonlyProductId === product.productId as readonlyProduct\"\n >\n <div class=\"product__image-wrapper\">\n <div\n *ngIf=\"getImageUrl(product.productId) | async as imageUrl; else noImage\"\n class=\"product__image\"\n [ngStyle]=\"{ 'background-image': 'url(' + imageUrl + ')' }\"\n ></div>\n </div>\n <div class=\"flex flex-column justify-content-center\">\n <div class=\"word-break\">{{ product.name }}</div>\n <div>\n <p-button\n label=\"Configure\"\n [disabled]=\"readonlyProduct || !product.configurable\"\n styleClass=\"p-button-link p-button-sm pl-0\"\n (onClick)=\"navigateToProductConfiguration(product.productId, product.id)\"\n ></p-button>\n <p-button\n label=\"Delete\"\n [disabled]=\"readonlyProduct\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n (onClick)=\"deleteHandler(product)\"\n ></p-button>\n </div>\n </div>\n </div>\n\n <span>\n <p-inputNumber\n *ngIf=\"form.controls[product.id] as control\"\n class=\"qty-control\"\n [formControl]=\"$any(control)\"\n [min]=\"1\"\n [required]=\"true\"\n (onBlur)=\"controlBlurHandler(product)\"\n ></p-inputNumber>\n </span>\n <span class=\"text-right pt-3\">${{ product.mrr }}</span>\n <span class=\"text-right pt-3\">${{ product.nrr }}</span>\n </div>\n\n <ng-template #noImage>\n <i class=\"vl-icon vl-icon-no-image no-image-icon\"></i>\n </ng-template>\n </div>\n\n <div class=\"flex justify-content-end mt-3\">\n <p-button\n label=\"Clear cart\"\n styleClass=\"p-button-link p-button-sm p-button-danger pl-0 pr-0\"\n [disabled]=\"!isEditMode || readonlyProductId\"\n (onClick)=\"deleteAllHandler()\"\n ></p-button>\n </div>\n </ng-container>\n </ng-container>\n\n <ng-template #empty>\n <h2 class=\"flow-header-overlay__title\">\n <span>Empty Cart</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"overlayPanel.hide()\"></i>\n </h2>\n\n <span class=\"empty-state\">There are no products added to the Shopping Cart yet.</span>\n </ng-template>\n </div>\n </ng-template>\n</p-overlayPanel>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { LetDirectiveModule } from '@veloce/components';\nimport { ButtonModule } from 'primeng/button';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { CartPreviewComponent } from './cart-preview.component';\n\n@NgModule({\n declarations: [CartPreviewComponent],\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, OverlayPanelModule, LetDirectiveModule, InputNumberModule],\n exports: [CartPreviewComponent],\n})\nexport class CartPreviewModule {}\n","import { Injectable } from '@angular/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { Observable } from 'rxjs';\nimport { FlowDialogComponent } from '../components/dialog/dialog.component';\nimport { FlowDialogConfig } from '../components/dialog/dialog.types';\n\n@Injectable()\nexport class FlowDialogService {\n constructor(private dialogService: DialogService, private contextService: ContextService) {}\n\n public show(config: FlowDialogConfig): Observable<boolean> {\n return this.dialogService.open(FlowDialogComponent, {\n dismissableMask: true,\n closeOnEscape: true,\n closable: true,\n showHeader: true,\n header: config.title,\n width: '440px',\n data: { config },\n }).onClose;\n }\n\n public showEmptyCartDialog(): Observable<boolean> {\n return this.show({\n title: 'No Products in Quote',\n description: 'There are no products in your Quote. To save a Quote, add at least one product.',\n primaryButton: 'OK',\n });\n }\n\n public showReadonlyModeDialog(): Observable<boolean> {\n const ctx = this.contextService.resolve();\n const objectName = ctx.mode ? ctx.mode[0].toUpperCase() + ctx.mode.substring(1).toLowerCase() : 'Object';\n\n return this.show({\n title: 'Error',\n description: `${objectName} Cannot be Saved`,\n primaryButton: 'OK',\n });\n }\n\n public showQuoteReadonlyModeDialog(): Observable<boolean> {\n return this.show({\n title: 'Quote Cannot be Saved',\n description:\n 'It is only possible to save quotes with the “Draft” status. Please create a new quote to make and save changes.',\n primaryButton: 'OK',\n });\n }\n\n public showQuoteOutsideShoppingCartDialog(): Observable<boolean> {\n return this.show({\n title: 'Quote Cannot be Saved',\n description: 'It is only possible to save quotes from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showAccountNoChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'No Changes to Save',\n description: 'There are no changes since the last update. Please make changes to proceed.',\n primaryButton: 'OK',\n });\n }\n\n public showUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Unsaved Changes',\n description: 'Are you sure you want to leave this page and discard your unsaved changes?',\n primaryButton: 'Keep Editing',\n secondaryButton: 'Discard Changes',\n });\n }\n\n public showReadonlyQuoteSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Cannot Submit for Approval',\n description:\n 'It is only possible to submit for approval quotes with the “Draft“ status. Please create a new quote to proceed.',\n primaryButton: 'OK',\n });\n }\n\n public showOutsideShoppingCartQuoteSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Cannot Submit for Approval',\n description:\n 'It is only possible to submit quotes for approval from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showAccountSubmitFailureDialog(): Observable<boolean> {\n return this.show({\n title: 'Save Changes',\n description:\n 'To submit for approval, save the quote first, and then submit it for approval from the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenAccountUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Save Quote',\n description:\n 'To generate a document, save the quote first, and then generate the document from the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenReadonlyDialog(): Observable<boolean> {\n return this.show({\n title: 'Document Generation is not Available',\n description:\n 'It is only possible to generate documents for quotes with the “Draft” status. Please create a new quote to generate a document.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenOutsideShoppingCartDialog(): Observable<boolean> {\n return this.show({\n title: 'Document Generation is not Available',\n description:\n 'It is only possible to generate documents for quotes from the Shopping Cart. To proceed, go to the Shopping Cart.',\n primaryButton: 'OK',\n });\n }\n\n public showDocgenUnsavedChangesDialog(): Observable<boolean> {\n return this.show({\n title: 'Unsaved Changes',\n description: 'To generate a document, save the quote first.',\n primaryButton: 'Save and proceed',\n secondaryButton: 'Cancel',\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { QuoteApiService, SalesforceApiService } from '@veloce/api';\nimport {\n ConfigurationContextMode,\n ContextProperties,\n LineItem,\n PriceList,\n SearchRequest,\n VlWindow,\n} from '@veloce/core';\nimport { IntegrationState, OpenDocGenAction } from '@veloce/sdk/cms';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { MenuItem } from 'primeng/api';\nimport {\n BehaviorSubject,\n distinctUntilChanged,\n finalize,\n first,\n map,\n noop,\n Observable,\n of,\n Subject,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs';\nimport { FlowDialogService } from '../../services/flow-dialog.service';\nimport { FlowRouterService } from '../../services/flow-router.service';\nimport { HeaderObjectDetails, HeaderProduct } from './header.types';\n\ndeclare const window: VlWindow;\n\n@Component({\n selector: 'vl-flow-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowHeaderComponent implements OnInit, OnDestroy {\n public objectName: string;\n public contextProperties: ContextProperties;\n public assetPriceLists: PriceList[];\n public activePriceList$: Observable<PriceList | null>;\n public status$: Observable<string>;\n public objectDetails$ = new BehaviorSubject<HeaderObjectDetails>({});\n public products$: Observable<HeaderProduct[]>;\n public isConfigurationRoute$: Observable<boolean>;\n public isCartRoute$: Observable<boolean>;\n public isCatalogRoute$: Observable<boolean>;\n public isEditMode$: Observable<boolean>;\n public isSaveInProgress$ = new BehaviorSubject(false);\n public isSubmitInProgress$ = new BehaviorSubject(false);\n public totalMRR$: Observable<string>;\n public totalNRR$: Observable<string>;\n\n private mode?: ConfigurationContextMode;\n private destroyed$ = new Subject<void>();\n\n constructor(\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private quoteApiService: QuoteApiService,\n private sfApiService: SalesforceApiService,\n private flowConfiguration: FlowConfigurationService,\n private routerService: FlowRouterService,\n private dialogService: FlowDialogService,\n private integrationState: IntegrationState,\n ) {\n const ctx = this.contextService.resolve();\n\n this.mode = ctx.mode;\n this.objectName = ctx.mode.toLowerCase();\n this.contextProperties = ctx.properties;\n this.assetPriceLists = this.quoteDraftService.assetPriceLists;\n\n this.activePriceList$ = this.quoteDraftService.activePriceList$;\n this.status$ = this.contextService.resolve$().pipe(map(context => context.properties.Status ?? ''));\n this.isEditMode$ = this.quoteDraftService.isEditMode$();\n this.products$ = this.flowConfiguration.get().pipe(map(lineItems => this.generateProducts(lineItems)));\n this.isConfigurationRoute$ = this.routerService.isConfigurationRoute$();\n this.isCartRoute$ = this.routerService.isCartRoute$();\n this.isCatalogRoute$ = this.routerService.isCatalogRoute$();\n\n this.totalMRR$ = this.contextService.resolve$().pipe(\n map(ctx => ctx.properties.VDM_Total_MRR),\n distinctUntilChanged(),\n map(mrr => this.formatMetric(mrr)),\n );\n\n this.totalNRR$ = this.contextService.resolve$().pipe(\n map(ctx => ctx.properties.VDM_Total_NRR),\n distinctUntilChanged(),\n map(nrr => this.formatMetric(nrr)),\n );\n }\n\n ngOnInit() {\n this.populateObjectDetails();\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n public get isAccountMode() {\n return this.mode === ConfigurationContextMode.ACCOUNT;\n }\n\n public get isQuoteMode() {\n return this.mode === ConfigurationContextMode.QUOTE;\n }\n\n public getSplitButtonActions(isCartRoute: boolean): MenuItem[] {\n return [\n {\n label: 'Save to Quote',\n command: () => {\n this.saveButtonClickHandler(isCartRoute);\n },\n },\n {\n label: 'Submit For Approval',\n command: () => {\n this.submitButtonClickHandler(isCartRoute);\n },\n },\n ];\n }\n\n public back(objectId?: string): void {\n const targetId = objectId ?? this.contextService.resolve().headerId;\n\n if (targetId) {\n window.VELO_BACK_FN.apply(null, [targetId]);\n }\n }\n\n public getSalesforceObjectLink(objectId?: string): string {\n if (!objectId) {\n return '';\n }\n\n return `${window.location.origin}/${objectId}`;\n }\n\n public navigateToShoppingCart() {\n this.routerService.navigateToShoppingCart();\n }\n\n public navigateToCatalog() {\n this.routerService.navigateToCatalog();\n }\n\n public docGenButtonClickHandler(isCartRoute: boolean): void {\n if (this.mode === ConfigurationContextMode.ACCOUNT) {\n if (!this.quoteDraftService.hasUnsavedChanges) {\n this.dialogService.showAccountNoChangesDialog().subscribe();\n } else {\n this.dialogService.showDocgenAccountUnsavedChangesDialog().subscribe();\n }\n return;\n }\n\n if (!this.quoteDraftService.isEditMode()) {\n this.dialogService.showDocgenReadonlyDialog().subscribe();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showDocgenOutsideShoppingCartDialog().subscribe();\n return;\n }\n\n let observable = of(true);\n\n if (this.quoteDraftService.hasUnsavedChanges) {\n observable = this.dialogService.showDocgenUnsavedChangesDialog().pipe(\n switchMap(confirmed => (confirmed ? this.saveQuote$(true) : of(true))),\n map(() => true),\n );\n }\n\n observable\n .pipe(\n first(),\n tap(() => this.integrationState.dispatch(OpenDocGenAction())),\n )\n .subscribe();\n }\n\n public saveButtonClickHandler(isCartRoute: boolean): void {\n if (!this.quoteDraftService.isEditMode()) {\n if (this.mode === ConfigurationContextMode.QUOTE) {\n this.dialogService.showQuoteReadonlyModeDialog().subscribe();\n } else {\n this.dialogService.showReadonlyModeDialog().subscribe();\n }\n return;\n }\n\n if (this.mode === ConfigurationContextMode.ACCOUNT && !this.quoteDraftService.hasUnsavedChanges) {\n this.dialogService.showAccountNoChangesDialog().subscribe();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showQuoteOutsideShoppingCartDialog().subscribe();\n return;\n }\n\n const lineItems = this.flowConfiguration.getSnapshot();\n\n if (!lineItems.length) {\n this.dialogService.showEmptyCartDialog().subscribe();\n return;\n }\n\n this.saveQuote$().subscribe();\n }\n\n public submitButtonClickHandler(isCartRoute: boolean): void {\n if (this.mode === ConfigurationContextMode.QUOTE && !this.quoteDraftService.isEditMode()) {\n this.dialogService.showReadonlyQuoteSubmitFailureDialog();\n return;\n }\n\n if (this.mode === ConfigurationContextMode.ACCOUNT) {\n this.dialogService.showAccountSubmitFailureDialog();\n return;\n }\n\n if (!isCartRoute) {\n this.dialogService.showOutsideShoppingCartQuoteSubmitFailureDialog().subscribe();\n return;\n }\n\n const quoteDraft = this.quoteDraftService.quoteDraft;\n if (!quoteDraft) {\n return;\n }\n\n this.isSubmitInProgress$.next(true);\n\n this.quoteApiService\n .submitQuote(quoteDraft)\n .pipe(\n tap(({ quoteId }) => {\n this.quoteDraftService.hasUnsavedChanges = false;\n this.back(quoteId);\n }),\n finalize(() => this.isSubmitInProgress$.next(false)),\n takeUntil(this.destroyed$),\n )\n .subscribe();\n }\n\n public selectPriceList(priceListId: string): void {\n this.quoteDraftService.updateActivePriceList(priceListId);\n }\n\n private saveQuote$(stayOnPage = false): Observable<void> {\n const quoteDraft = this.quoteDraftService.quoteDraftForActivePriceList;\n if (!quoteDraft) {\n return of(undefined);\n }\n\n this.isSaveInProgress$.next(true);\n\n return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n tap(({ quoteId }) => {\n this.quoteDraftService.hasUnsavedChanges = false;\n\n if (!stayOnPage) {\n this.back(quoteId);\n }\n }),\n finalize(() => this.isSaveInProgress$.next(false)),\n map(noop),\n takeUntil(this.destroyed$),\n );\n }\n\n private queryName$(objectName: string, id?: string): Observable<string> {\n if (!id) {\n return of('');\n }\n\n const searchRequest: SearchRequest = {\n count: 1,\n rawCondition: `Id = '${id}'`,\n fields: ['Name'],\n };\n\n return this.sfApiService.query<any>(searchRequest, objectName).pipe(\n map(result => result[0]?.Name ?? ''),\n takeUntil(this.destroyed$),\n );\n }\n\n private populateObjectDetails(): void {\n const accountId = this.isAccountMode ? this.contextProperties.Id : this.contextProperties.AccountId;\n const opportunityId = this.contextProperties.OpportunityId;\n const quoteId = this.isQuoteMode ? this.contextProperties.Id : undefined;\n const quoteName = this.isQuoteMode ? this.contextProperties.Name : undefined;\n const quoteNumber = this.isQuoteMode ? this.contextProperties.QuoteNumber?.replace(/^0+/, '') : undefined;\n\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n accountId,\n opportunityId,\n quoteId,\n quoteName,\n quoteNumber,\n });\n\n this.queryName$('Account', accountId).subscribe(accountName =>\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n accountName,\n }),\n );\n this.queryName$('Opportunity', opportunityId).subscribe(opportunityName =>\n this.objectDetails$.next({\n ...this.objectDetails$.value,\n opportunityName,\n }),\n );\n }\n\n private formatMetric(value?: string): string {\n return (value ? Number(value) : 0).toFixed(2);\n }\n\n private generateProducts(lineItems: LineItem[]): HeaderProduct[] {\n const date = new Date();\n date.setHours(0, 0, 0, 0);\n const now = date.getTime();\n\n return lineItems.reduce((result: HeaderProduct[], li) => {\n // find main term line item\n if (li.rampInstanceId) {\n return result;\n }\n\n // find current term line item\n let target: LineItem | undefined = li;\n while (target && target.endDate && new Date(target.endDate).getTime() <= now) {\n target = lineItems.find(sub => sub.rampInstanceId === li.id);\n }\n\n if (target && target.productId) {\n return [\n ...result,\n {\n id: target.id,\n productId: target.productId,\n name: target.name,\n configurable: target.properties['#configurable'] === 'true',\n deleted: target.actionCode === 'DELETE',\n qty: target.qty,\n mrr: this.formatMetric(target.properties.VDM_Total_MRR),\n nrr: this.formatMetric(target.properties.VDM_Total_NRR),\n },\n ];\n }\n\n return result;\n }, []);\n }\n}\n","<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back </span>\n <span *ngIf=\"objectName\" class=\"object-name\">&nbsp;To {{ objectName }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Account name</span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCatalogRoute$ | async }\" (click)=\"navigateToCatalog()\">Catalog</nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav class=\"nav-item\" [ngClass]=\"{ active: isCartRoute$ | async }\" (click)=\"navigateToShoppingCart()\">\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav class=\"nav-popover-toggle active\" (click)=\"cart?.overlayPanel?.toggle($event)\">\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span>{{ priceList?.name }}</span>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</span>\n\n <span class=\"slash-separator\"></span>\n\n <span class=\"metrics\">\n <div class=\"metrics__row\">\n MRR: <span class=\"font-semibold\">${{ totalMRR$ | async }}</span>\n </div>\n <div class=\"metrics__row\">\n NRR: <span class=\"font-semibold\">${{ totalNRR$ | async }}</span>\n </div>\n </span>\n </ng-container>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <p-button\n class=\"doc-gen-button\"\n icon=\"vl-icon vl-icon-doc-gen\"\n (onClick)=\"docGenButtonClickHandler(isCartRoute)\"\n ></p-button>\n\n <ng-container *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\">\n <ng-container *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\">\n <p-splitButton\n *ngIf=\"!isSaveInProgress && !isSubmitInProgress\"\n label=\"Save to Quote\"\n (onClick)=\"saveButtonClickHandler(isCartRoute)\"\n [model]=\"getSplitButtonActions(isCartRoute)\"\n styleClass=\"p-button-outlined\"\n >\n </p-splitButton>\n\n <p-button\n *ngIf=\"isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button\"\n label=\"Saving\"\n [loading]=\"true\"\n ></p-button>\n\n <p-button\n *ngIf=\"isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n label=\"Submitting\"\n [loading]=\"true\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LetDirectiveModule } from '@veloce/components';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\nimport { SplitButtonModule } from 'primeng/splitbutton';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { CartPreviewModule } from './cart-overlay/cart-preview.module';\nimport { FlowHeaderComponent } from './header.component';\n\n@NgModule({\n declarations: [FlowHeaderComponent],\n imports: [\n CommonModule,\n OverlayPanelModule,\n LetDirectiveModule,\n TooltipModule,\n ButtonModule,\n CartPreviewModule,\n SplitButtonModule,\n ],\n exports: [FlowHeaderComponent],\n})\nexport class FlowHeaderModule {}\n","import { Injectable } from '@angular/core';\nimport { LineItem } from '@veloce/core';\nimport { FlowAction, IntegrationState } from '@veloce/sdk/cms';\nimport { ConfigurationService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowRouterService } from './flow-router.service';\n\n@Injectable()\nexport class FlowService {\n private cleanup$ = new Subject<void>();\n\n constructor(\n private integrationState: IntegrationState,\n private flowRouterService: FlowRouterService,\n private quoteDraftService: QuoteDraftService,\n private configurationService: ConfigurationService,\n private flowConfigurationService: FlowConfigurationService,\n ) {}\n\n public initSubscriptions(): void {\n this.integrationState\n .listen$<{ lineItemId?: string; productId?: string }>(FlowAction.FLOW_CONFIGURE_PRODUCT)\n .pipe(\n tap(payload => {\n const productId =\n payload.productId ??\n this.quoteDraftService.currentState.find(li => li.id === payload.lineItemId)?.productId;\n\n if (productId) {\n this.flowRouterService.navigateToProductConfiguration(productId, payload.lineItemId);\n } else {\n console.warn(\"Parameter 'productId' is needed to start configuration\");\n }\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_NAVIGATE_BACK)\n .pipe(\n tap(() => this.flowRouterService.navigateBack()),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_NAVIGATE_TO_CATALOG)\n .pipe(\n tap(() => this.flowRouterService.navigateToCatalog()),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n\n this.integrationState\n .listen$(FlowAction.FLOW_APPLY_PRODUCT_CONFIGURATION)\n .pipe(\n switchMap(() => {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n const lineItem = this.configurationService.getSnapshot();\n\n if (!quoteDraft || !lineItem) {\n return of(undefined);\n }\n\n const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);\n\n let updatedState: LineItem[];\n if (isNewLineItem) {\n updatedState = [...quoteDraft.currentState, lineItem];\n } else {\n updatedState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n }\n\n return this.flowConfigurationService.calculate$({ ...quoteDraft, currentState: updatedState });\n }),\n tap(() => {\n this.configurationService.hasUnsavedChanges = false;\n this.flowRouterService.navigateToShoppingCart();\n }),\n takeUntil(this.cleanup$),\n )\n .subscribe();\n }\n\n public cleanup(): void {\n this.cleanup$.next();\n }\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { QuoteDraftService } from '@veloce/sdk/core';\nimport { IntegrationState } from '@veloce/sdk/cms';\nimport { map, Observable } from 'rxjs';\nimport { FlowService } from './services';\nimport { FlowDocGenService } from './services/doc-gen.service';\nimport { FlowRouterService } from './services/flow-router.service';\n\n@Component({\n selector: 'vl-flow',\n templateUrl: './flow.component.html',\n styleUrls: ['./flow.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FlowComponent implements OnInit, OnDestroy {\n public isLoading$: Observable<boolean>;\n public showHeader$: Observable<boolean>;\n public isStandalone$: Observable<boolean>;\n\n constructor(\n private routerService: FlowRouterService,\n private quoteDraftService: QuoteDraftService,\n private flowService: FlowService,\n private docGenService: FlowDocGenService,\n private integrationState: IntegrationState,\n ) {\n this.isLoading$ = this.routerService.loading$;\n\n this.showHeader$ = this.routerService.route$.pipe(\n map(route => route.data.showHeader && !this.quoteDraftService.isStandalone),\n );\n\n this.isStandalone$ = this.quoteDraftService.isStandalone$;\n\n this.flowService.initSubscriptions();\n }\n\n ngOnInit() {\n this.integrationState.clear();\n }\n\n ngOnDestroy(): void {\n this.flowService.cleanup();\n this.docGenService.cleanup();\n }\n}\n","<vl-flow-header *ngIf=\"showHeader$ | async\"></vl-flow-header>\n\n<div class=\"flow-content\">\n <div class=\"loading-overlay\" *ngIf=\"isLoading$ | async\">\n <vl-loader label=\"LOADING\"></vl-loader>\n </div>\n\n <router-outlet></router-outlet>\n</div>\n\n<ng-container *vlLet=\"isStandalone$ | async as isStandalone\">\n <vl-flow-doc-gen *ngIf=\"!isStandalone\"></vl-flow-doc-gen>\n</ng-container>\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router } from '@angular/router';\nimport { ConfigurationContext, ConfigurationContextMode, VlWindow } from '@veloce/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { catchError, from, map, Observable, of, tap } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ContextGuard implements CanActivate, CanActivateChild {\n constructor(\n private router: Router,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n ) {}\n\n public checkActivation(route: ActivatedRouteSnapshot): Observable<boolean> {\n const { queryParams } = route;\n const { accountId, quoteId, orderId } = queryParams;\n const rpcMessage = window.RPC_MESSAGE;\n const mode = this.getConfigurationContextMode(accountId, quoteId, orderId, rpcMessage);\n\n // Restrict if mode is not defined\n if (mode == null) {\n return this.handleError(route, 'Mode is undefined');\n }\n\n const rpcMessageId: string = rpcMessage && JSON.parse(rpcMessage)?.quote?.Id;\n const headerId = accountId || quoteId || orderId || rpcMessageId || 'empty-for-test-mode';\n\n // Allow if context is already initialized with the same headerId\n if (this.contextService.isInitialized) {\n const currentContext = this.contextService.resolve();\n\n if (headerId && currentContext.headerId === headerId) {\n return of(true);\n }\n }\n\n // Initialize context\n return this.contextService.create(headerId, mode).pipe(\n tap((context: ConfigurationContext) => {\n // Update context with queryParams\n this.contextService.update({\n ...context,\n properties: {\n ...context.properties,\n ...(queryParams ?? {}),\n },\n });\n }),\n map(() => true),\n catchError(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message);\n }),\n );\n }\n\n public canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n return this.checkActivation(route);\n }\n\n public canActivateChild(childRoute: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n return this.checkActivation(childRoute);\n }\n\n private getConfigurationContextMode(\n accountId?: string,\n quoteId?: string,\n orderId?: string,\n rpcMessage?: string,\n ): ConfigurationContextMode | undefined {\n if (accountId) {\n return ConfigurationContextMode.ACCOUNT;\n }\n\n if (quoteId) {\n return ConfigurationContextMode.QUOTE;\n }\n\n if (orderId) {\n return ConfigurationContextMode.ORDER;\n }\n\n if (rpcMessage) {\n return ConfigurationContextMode.REMOTE;\n }\n\n return;\n }\n\n private handleError(route: ActivatedRouteSnapshot, message: string): Observable<boolean> {\n this.contextService.delete();\n const parentUrl = this.routerService.getFlowRootPath(route);\n return from(this.router.navigate([parentUrl, '404'], { state: { message } })).pipe(map(() => false));\n }\n}\n","import { Component, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanDeactivate, Router, RouterStateSnapshot } from '@angular/router';\nimport { ConfigurationService, ContextService, QuoteDraftService } from '@veloce/sdk/core';\nimport { map, of } from 'rxjs';\nimport { FlowDialogService } from '../services/flow-dialog.service';\n\n@Injectable()\nexport class ProductUnloadGuard implements CanDeactivate<any> {\n constructor(\n private router: Router,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private configurationService: ConfigurationService,\n private flowDialogService: FlowDialogService,\n ) {}\n\n canDeactivate(\n _: Component,\n route: ActivatedRouteSnapshot,\n currentState: RouterStateSnapshot,\n nextState?: RouterStateSnapshot,\n ) {\n let observable = of(true);\n\n if (!this.quoteDraftService.isStandalone && this.configurationService.hasUnsavedChanges) {\n observable = this.flowDialogService.showUnsavedChangesDialog().pipe(map(confirmed => !confirmed));\n }\n\n return observable.pipe(\n map(unload => {\n if (unload) {\n this.configurationService.reset();\n this.contextService.update({ properties: { productId: undefined, lineItemId: undefined } });\n\n if (!nextState || currentState.url === nextState.url) {\n return true;\n }\n\n // clear obsolete queryParams\n const urlTree = this.router.parseUrl(nextState.url);\n delete urlTree.queryParams.productId;\n\n // replace url after deactivation has finished\n setTimeout(() => this.router.navigateByUrl(urlTree.toString(), { replaceUrl: true }));\n\n return true;\n }\n\n return false;\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanDeactivate, Navigation, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable({ providedIn: 'root' })\nexport class RootGuard implements CanActivate, CanDeactivate<any> {\n private initialized = false;\n private navToRestore: Navigation | null = null;\n\n constructor(private router: Router, private routerService: FlowRouterService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n // We always need to initialize root component first, and only then start checking guards/resolvers\n\n if (!this.initialized) {\n this.initialized = true;\n this.navToRestore = this.router.getCurrentNavigation();\n\n const rootUrl = this.routerService.getFlowRootPath(route);\n this.router.navigate([rootUrl], { replaceUrl: !this.navToRestore?.previousNavigation });\n } else if (this.navToRestore) {\n const nav = this.navToRestore;\n setTimeout(() => {\n this.router.navigateByUrl(nav.extractedUrl, nav.extras);\n\n this.navToRestore = null;\n });\n }\n\n return true;\n }\n\n canDeactivate() {\n this.initialized = false;\n return true;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { TemplateComponentWithAttachments, UIDefinition as LegacyUIDefinition } from '@veloce/core';\nimport { UIDefinition } from '@veloce/sdk/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n getUiDefinition?(productId: string): Observable<UIDefinition | null>;\n getLegacyUiDefinition?(productId: string): Observable<LegacyUIDefinition | null>;\n getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport {\n ComponentAttachments,\n TemplateComponent,\n UITemplate,\n UITemplateComponentType,\n UITemplateType,\n} from '@veloce/core';\nimport { ContextService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-catalog',\n templateUrl: './catalog.component.html',\n styleUrls: ['./catalog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CatalogComponent implements OnInit, OnDestroy {\n public uiDefinition?: UIDefinition = undefined;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n private templateApiName = '';\n private destroyed$ = new Subject<void>();\n\n constructor(\n private templatesApi: UITemplatesApiService,\n private contextService: ContextService,\n private cdr: ChangeDetectorRef,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.templateApiName = this.contextService.resolve().properties.catalogTemplateApiName ?? '';\n }\n\n ngOnInit(): void {\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition = uiDef;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(err => {\n const message = 'Failed to resolve Catalog component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n\n this.uiDefinition = undefined;\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroyed$),\n )\n .subscribe(() => this.cdr.detectChanges());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getLocalCatalogComponentMeta$(): Observable<ComponentAttachments | undefined> {\n if (!this.customizationService?.getCatalogComponent) {\n return of(undefined);\n }\n\n return this.customizationService?.getCatalogComponent(this.templateApiName).pipe(\n map(component => {\n if (!component) {\n return;\n }\n\n return <ComponentAttachments>{\n html: component.html,\n css: component.css,\n js: component.js,\n json: component.json,\n };\n }),\n );\n }\n\n private getCatalogComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates =>\n templates.find(template => template.type === UITemplateType.CATALOG && template.name === this.templateApiName),\n ),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'catalogTemplateApiName' is missing.\");\n }\n }),\n switchMap(() => this.getLocalCatalogComponentMeta$()),\n switchMap(meta => (meta ? of(meta) : this.getCatalogComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: meta.js && btoa(meta.js),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { CatalogComponent } from './catalog.component';\n\n@NgModule({\n declarations: [CatalogComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [CatalogComponent],\n})\nexport class CatalogModule {}\n","export const getFlowObjectIdPropertyName = (objectName?: string) => {\n switch (objectName) {\n case 'Account':\n return 'accountId';\n case 'Order':\n return 'orderId';\n case 'Quote':\n default:\n return 'quoteId';\n }\n};\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Params, Router } from '@angular/router';\nimport { FlowsApiService } from '@veloce/api';\nimport { FlowProperties } from '@veloce/core';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { map, Observable, shareReplay } from 'rxjs';\nimport { getFlowObjectIdPropertyName } from '../../utils';\n\ninterface FlowPropertiesExt extends FlowProperties {\n queryParamsStr: string;\n}\n\n@Component({\n selector: 'vl-flow-debug',\n templateUrl: './debug.component.html',\n styleUrls: ['./debug.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DebugComponent {\n public readonly objectNames = ['Account', 'Quote', 'Order'];\n public form = new FormGroup({\n id: new FormControl(''),\n name: new FormControl('Quote'),\n });\n\n public selectedFlow?: FlowPropertiesExt;\n public flows$: Observable<FlowPropertiesExt[]>;\n\n constructor(\n private flowsApiService: FlowsApiService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private context: ContextService,\n private flowConfiguration: FlowConfigurationService,\n private quoteDraftService: QuoteDraftService,\n ) {\n this.flows$ = this.flowsApiService.fetchFlows().pipe(\n map(flows =>\n flows.map<FlowPropertiesExt>(flow => {\n const queryParams: Params = flow?.properties?.queryParams ?? {};\n return {\n id: flow.id,\n entryPath: flow?.properties?.entryPath,\n queryParams,\n queryParamsStr: JSON.stringify(queryParams),\n };\n }),\n ),\n shareReplay(),\n );\n }\n\n runFlow() {\n const { id, name } = this.form.value;\n const objectPropertyName = getFlowObjectIdPropertyName(name);\n\n if (!id || !this.selectedFlow) {\n return;\n }\n\n // Delete context before starting a new flow\n this.context.delete();\n this.quoteDraftService.reset();\n\n this.router.navigate(['..', 'flows'], {\n queryParams: {\n flowId: this.selectedFlow.id,\n [objectPropertyName]: id,\n ...this.selectedFlow.queryParams,\n },\n relativeTo: this.activatedRoute,\n });\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"fields-container\">\n <div class=\"field\">\n <label>SF Object ID</label>\n <input formControlName=\"id\" pInputText type=\"text\" />\n </div>\n\n <div class=\"field\">\n <label>SF Object Name</label>\n <p-dropdown\n appendTo=\"body\"\n formControlName=\"name\"\n [autoDisplayFirst]=\"false\"\n [options]=\"objectNames\"\n ></p-dropdown>\n </div>\n </div>\n\n <p-button\n styleClass=\"p-button-primary\"\n label=\"Run Flow\"\n [disabled]=\"!form.value.id || !selectedFlow\"\n (onClick)=\"runFlow()\"\n ></p-button>\n</form>\n\n<table>\n <thead>\n <tr>\n <th [width]=\"30\"></th>\n <th [width]=\"160\">ID</th>\n <th [width]=\"160\">Entry Path</th>\n <th>QueryParams</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let flow of flows$ | async\" (click)=\"selectedFlow = flow\">\n <td><p-radioButton [inputId]=\"flow.id\" name=\"flow\" [value]=\"flow\" [(ngModel)]=\"selectedFlow\"></p-radioButton></td>\n <td>{{ flow.id }}</td>\n <td>{{ flow.entryPath }}</td>\n <td>{{ flow.queryParamsStr }}</td>\n </tr>\n </tbody>\n</table>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule, Routes } from '@angular/router';\nimport { ButtonModule } from 'primeng/button';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { RadioButtonModule } from 'primeng/radiobutton';\nimport { DebugComponent } from './debug.component';\n\nconst routes: Routes = [{ path: '', component: DebugComponent }];\n\n@NgModule({\n declarations: [DebugComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n RouterModule.forChild(routes),\n RadioButtonModule,\n ButtonModule,\n InputTextModule,\n DropdownModule,\n ],\n})\nexport class DebugModule {}\n","import { Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { QuoteApiService } from '@veloce/api';\nimport { EntityUtil, LineItem, QuoteDraft, VlWindow } from '@veloce/core';\nimport { ContextService, QuoteDraftService, QuoteStates, RuntimeOperation } from '@veloce/sdk/core';\nimport {\n CurrentStateService,\n LegacyRuntimeContext,\n RuntimeContextService,\n RuntimeService,\n SolutionReadyAware,\n SolutionUpdatedAware,\n} from '@veloce/sdk/runtime';\nimport { Observable, of, Subject } from 'rxjs';\nimport { first, map, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ndeclare const window: VlWindow;\n\n@Component({\n templateUrl: './legacy-product.component.html',\n styleUrls: ['./legacy-product.component.scss'],\n})\nexport class LegacyProductComponent implements OnInit, OnDestroy, SolutionUpdatedAware, SolutionReadyAware {\n private destroyed$ = new Subject<void>();\n\n private assets?: LineItem[];\n\n constructor(\n private route: ActivatedRoute,\n private quoteDraftService: QuoteDraftService,\n private quoteApiService: QuoteApiService,\n private contextService: ContextService,\n private runtimeContextService: RuntimeContextService,\n private runtimeService: RuntimeService,\n private currentStateService: CurrentStateService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {}\n\n ngOnInit(): void {\n this.quoteDraftService.quoteDraft$\n .pipe(first(), takeUntil(this.destroyed$))\n .subscribe(quote => this.init(quote, this.route.snapshot.queryParams));\n\n this.runtimeService.onSolutionStopEvent.pipe(take(1)).subscribe(lineItem => this.onSolutionStop(lineItem));\n\n this.runtimeService.onSolutionReadyEvent.pipe(take(1)).subscribe(event => this.onSolutionReady(event));\n\n this.runtimeService.onSolutionCancelEvent.pipe(take(1)).subscribe(() => this.onSolutionCancel());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n onSolutionReady(lineItem: LineItem): void {\n lineItem.actionCode = lineItem.actionCode ?? 'ADD';\n }\n\n onSolutionCancel(): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {\n window['VELO_BACK_FN'].apply(null, [quote.quoteId]);\n });\n }\n\n onSolutionUpdated(lineItem: LineItem): void {\n const states: QuoteStates = {\n configurableRamp: lineItem,\n currentState: this.currentStateService.currentState,\n asset: this.getAsset(lineItem),\n };\n\n this.runtimeService.updateRuntime(states);\n }\n\n onSolutionStop(lineItem: LineItem): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroyed$)).subscribe(quote => {\n const quoteToUpsert: QuoteDraft = {\n ...quote,\n context: this.contextService.resolve(),\n currentState: [...(this.currentStateService.currentState || []).filter(li => li.id !== lineItem.id), lineItem],\n };\n\n this.quoteApiService\n .upsertQuote(quoteToUpsert)\n .pipe(take(1))\n .subscribe(quote => {\n window['VELO_BACK_FN'].apply(null, [quote.quoteId]);\n });\n });\n }\n\n private init(quote: QuoteDraft, queryParams: Params): void {\n const productId = queryParams['productId'];\n const lineItemId = this.getLineItemId(quote, queryParams);\n this.assets = quote.initialState;\n\n lineItemId && quote.currentState ? this.reConfigure(lineItemId, quote.currentState) : this.configure(productId);\n }\n\n private getLineItemId(quote: QuoteDraft, queryParams: Params): string | undefined {\n if (EntityUtil.isPresent(queryParams['lineItemId'])) {\n return queryParams['lineItemId'];\n }\n\n return quote.currentState\n .filter(lineItem => lineItem.productId === queryParams['productId'])\n .map(lineItem => lineItem.id)\n .find(id => id);\n }\n\n private configure(productId: string): void {\n const runtimeContext = this.getRuntimeContext(productId, '', RuntimeOperation.INIT);\n\n this.startRuntime({}, runtimeContext);\n }\n\n private reConfigure(lineItemId: string, currentState: LineItem[]): void {\n const currentStateItem = EntityUtil.findById(lineItemId, currentState);\n const runtimeContext = this.getRuntimeContext(\n currentStateItem.productId,\n currentStateItem.offeringId,\n RuntimeOperation.UPDATE,\n );\n\n const states: QuoteStates = {\n configurableRamp: currentStateItem,\n currentState,\n asset: this.getAsset(currentStateItem),\n };\n\n this.currentStateService.update(currentState);\n this.startRuntime(states, runtimeContext);\n }\n\n private getAsset(lineItem: LineItem): LineItem | undefined {\n return this.assets && this.assets.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);\n }\n\n private startRuntime(states: QuoteStates, runtimeContext$: Observable<LegacyRuntimeContext>): void {\n runtimeContext$\n .pipe(\n take(1),\n map(runtimeContext => {\n this.runtimeService.startRuntime(runtimeContext, states);\n }),\n )\n .subscribe();\n }\n\n private customizeContext(productId: string, context: LegacyRuntimeContext): Observable<LegacyRuntimeContext> {\n if (!this.customizationService?.getLegacyUiDefinition) {\n return of(context);\n }\n\n return this.customizationService.getLegacyUiDefinition(productId).pipe(\n map(uiDef => ({\n ...context,\n uiDefinition: uiDef ?? context.uiDefinition,\n })),\n );\n }\n\n private getRuntimeContext(\n productId: string,\n offeringId: string,\n runtimeOperation: RuntimeOperation,\n ): Observable<LegacyRuntimeContext> {\n return this.runtimeContextService.getRuntimeContext(productId, offeringId).pipe(\n map(runtimeContext => {\n runtimeContext.invocationContext = { runtimeOperation: RuntimeOperation[runtimeOperation] };\n return runtimeContext;\n }),\n switchMap(runtimeContext => this.customizeContext(productId, runtimeContext)),\n );\n }\n}\n","<vl-runtime #runtimeView (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RuntimeModule } from '@veloce/sdk/runtime';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { LegacyProductComponent } from './legacy-product.component';\n\n@NgModule({\n declarations: [LegacyProductComponent],\n imports: [CommonModule, RuntimeModule, TooltipModule.forRoot()],\n exports: [LegacyProductComponent],\n})\nexport class LegacyProductModule {}\n","import { ChangeDetectionStrategy, Component, Inject, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { LineItem, QuoteDraft } from '@veloce/core';\nimport {\n ConfigurationRuntimeService,\n ConfigurationService,\n ContextService,\n QuoteDraftService,\n UIDefinition,\n} from '@veloce/sdk/core';\nimport { MessageService } from 'primeng/api';\nimport {\n BehaviorSubject,\n catchError,\n first,\n Observable,\n of,\n Subject,\n switchMap,\n takeUntil,\n tap,\n throwError,\n} from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types/flow-customization.types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-product',\n templateUrl: './product.component.html',\n styleUrls: ['./product.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProductComponent implements OnInit, OnDestroy {\n private destroy$ = new Subject<void>();\n\n public uiDefinition?: UIDefinition;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n constructor(\n private contextService: ContextService,\n private runtimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private quoteDraftService: QuoteDraftService,\n private messageService: MessageService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {}\n\n ngOnInit(): void {\n this.quoteDraftService.quoteDraft$.pipe(first(), takeUntil(this.destroy$)).subscribe(quote => this.init(quote));\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private customize(productId: string): Observable<any> {\n if (!this.customizationService?.getUiDefinition) {\n return of(null);\n }\n\n return this.customizationService.getUiDefinition(productId).pipe(\n tap(uiDef => {\n if (uiDef) {\n this.uiDefinition = uiDef;\n this.runtimeService.uiDefinitionProperties = uiDef.properties ?? {};\n }\n }),\n );\n }\n\n private init(quote: QuoteDraft): void {\n const contextProperties = this.contextService.resolve().properties;\n const productId = contextProperties.productId;\n\n if (!productId) {\n return;\n }\n\n const lineItemId = this.getLineItemId(quote, productId, contextProperties.lineItemId);\n const currentStateItem = quote.currentState.find(({ id }) => id === lineItemId);\n\n if (currentStateItem) {\n this.configurationService.updateCurrentStates({\n configurableRamp: currentStateItem,\n currentState: quote.currentState,\n asset: this.getAsset(quote, currentStateItem),\n });\n }\n\n const { offeringId } = currentStateItem ?? {};\n\n this.runtimeService\n .init({ productId, offeringId })\n .pipe(\n tap(context => (this.uiDefinition = context?.uiDefinition)),\n switchMap(() => this.customize(productId)),\n this.throwIfNoUIDefinition(),\n switchMap(() => this.configurationService.configure()),\n tap(() => this.state$.next({ loading: false, failure: false })),\n catchError(error => {\n if (!this.uiDefinition?.properties?.suppressToastMessages) {\n this.messageService.add({ severity: 'error', summary: error });\n }\n\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroy$),\n )\n .subscribe();\n }\n\n private throwIfNoUIDefinition() {\n return <T>(source$: Observable<T>): Observable<T> => {\n return source$.pipe(\n switchMap(() => {\n if (!this.uiDefinition) {\n return throwError(() => 'Product does not have Configuration UI');\n }\n\n return source$;\n }),\n );\n };\n }\n\n private getLineItemId(quote: QuoteDraft, productId: string, lineItemId?: string): string | undefined {\n // search by lineItemId first\n let id: string | undefined = quote.currentState.find(li => li.id === lineItemId)?.id;\n\n if (!id && this.quoteDraftService.isStandalone) {\n id = quote.currentState.find(li => li.productId === productId)?.id;\n }\n\n return id;\n }\n\n private getAsset(quote: QuoteDraft, lineItem: LineItem): LineItem | undefined {\n return quote.initialState.find(a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId);\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { ProductComponent } from './product.component';\n\n@NgModule({\n declarations: [ProductComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [ProductComponent],\n})\nexport class ProductModule {}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'vl-flow-record-not-found',\n templateUrl: './record-not-found.component.html',\n styleUrls: ['./record-not-found.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RecordNotFoundComponent {\n message: string;\n subMessage = '';\n\n constructor(private router: Router, private route: ActivatedRoute) {\n const navigation = this.router.getCurrentNavigation();\n const { state } = navigation?.extras || {};\n\n this.message = state?.message;\n if (typeof this.message === 'string') {\n this.subMessage = this.message.includes('/describe') ? 'A potential problem with permissions' : '';\n }\n }\n}\n","<div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"message-wrapper\">\n <div class=\"msg\">\n <div *ngIf=\"message; else defaultMessage\" class=\"message-title\">\n <p>{{ message }}</p>\n\n <p *ngIf=\"subMessage\" class=\"message-title\">{{ subMessage }}</p>\n </div>\n\n <ng-template #defaultMessage>Record not found</ng-template>\n </div>\n </div>\n </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { RecordNotFoundComponent } from './record-not-found.component';\n\nconst routes: Routes = [{ path: '', component: RecordNotFoundComponent }];\n\n@NgModule({\n declarations: [RecordNotFoundComponent],\n imports: [CommonModule, RouterModule.forChild(routes)],\n})\nexport class RecordNotFoundModule {}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Inject,\n OnDestroy,\n OnInit,\n Optional,\n} from '@angular/core';\nimport { UITemplatesApiService } from '@veloce/api';\nimport { ToastService, ToastType } from '@veloce/components';\nimport {\n ComponentAttachments,\n TemplateComponent,\n UITemplate,\n UITemplateComponentType,\n UITemplateType,\n} from '@veloce/core';\nimport { ContextService, UIDefinition } from '@veloce/sdk/core';\nimport { BehaviorSubject, catchError, map, Observable, of, Subject, switchMap, takeUntil, tap } from 'rxjs';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../../types';\n\ninterface State {\n loading: boolean;\n failure: boolean;\n}\n\n@Component({\n selector: 'vl-flow-shopping-cart',\n templateUrl: './shopping-cart.component.html',\n styleUrls: ['./shopping-cart.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ShoppingCartComponent implements OnInit, OnDestroy {\n public uiDefinition?: UIDefinition = undefined;\n public state$ = new BehaviorSubject<State>({ loading: true, failure: false });\n\n private templateApiName = '';\n private destroyed$ = new Subject<void>();\n\n constructor(\n private templatesApi: UITemplatesApiService,\n private contextService: ContextService,\n private cdr: ChangeDetectorRef,\n private toastService: ToastService,\n @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n ) {\n this.templateApiName = this.contextService.resolve().properties.cartTemplateApiName ?? '';\n }\n\n ngOnInit(): void {\n this.generateUIDefinition$()\n .pipe(\n tap(uiDef => {\n if (!uiDef) {\n throw new Error(`Component with name '${this.templateApiName}' not found.`);\n }\n\n this.uiDefinition = uiDef;\n this.state$.next({ loading: false, failure: false });\n }),\n catchError(err => {\n const message = 'Failed to resolve Shopping cart component. ' + (err.message ?? '');\n this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });\n\n this.uiDefinition = undefined;\n this.state$.next({ loading: false, failure: true });\n return of();\n }),\n takeUntil(this.destroyed$),\n )\n .subscribe(() => this.cdr.detectChanges());\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n private getTemplateRootComponent$(template: UITemplate): Observable<TemplateComponent | undefined> {\n return this.templatesApi\n .fetchComponents$(template.id)\n .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));\n }\n\n private getLocalShoppingCartComponentMeta$(): Observable<ComponentAttachments | undefined> {\n if (!this.customizationService?.getShoppingCartComponent) {\n return of(undefined);\n }\n\n return this.customizationService?.getShoppingCartComponent(this.templateApiName).pipe(\n map(component => {\n if (!component) {\n return;\n }\n\n return <ComponentAttachments>{\n html: component.html,\n css: component.css,\n js: component.js,\n json: component.json,\n };\n }),\n );\n }\n\n private getShoppingCartComponentMeta$() {\n return this.templatesApi.fetchTemplates$().pipe(\n map<UITemplate[], UITemplate | undefined>(templates =>\n templates.find(\n template => template.type === UITemplateType.SHOPPING_CART && template.name === this.templateApiName,\n ),\n ),\n switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))),\n switchMap(component =>\n component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined),\n ),\n );\n }\n\n private generateUIDefinition$(): Observable<UIDefinition | undefined> {\n return of(undefined).pipe(\n tap(() => {\n if (!this.templateApiName) {\n throw new Error(\"Flow Query parameter 'cartTemplateApiName' is missing.\");\n }\n }),\n switchMap(() => this.getLocalShoppingCartComponentMeta$()),\n switchMap(meta => (meta ? of(meta) : this.getShoppingCartComponentMeta$())),\n map(meta => {\n if (!meta) {\n return;\n }\n\n const uiDef: UIDefinition = {\n name: '',\n createdTimestamp: 0,\n primary: true,\n type: 'DEFAULT',\n version: 2,\n children: [\n {\n children: [],\n template: meta.html && btoa(meta.html),\n script: meta.js && btoa(meta.js),\n styles: meta.css && btoa(meta.css),\n },\n ],\n };\n\n return uiDef;\n }),\n );\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-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n </ng-container>\n </ng-template>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { LoaderModule } from '@veloce/components';\nimport { PreviewModule } from '@veloce/sdk/cms';\nimport { ShoppingCartComponent } from './shopping-cart.component';\n\n@NgModule({\n declarations: [ShoppingCartComponent],\n imports: [CommonModule, PreviewModule, LoaderModule],\n exports: [ShoppingCartComponent],\n})\nexport class ShoppingCartModule {}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';\nimport { FlowsApiService } from '@veloce/api';\nimport { FlowQueryParams } from '@veloce/core';\nimport { ContextService } from '@veloce/sdk/core';\nimport { Dictionary } from 'lodash';\nimport { map } from 'rxjs/operators';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable()\nexport class FlowResolver implements Resolve<Promise<boolean>> {\n constructor(\n private router: Router,\n private flowsApiService: FlowsApiService,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n ) {}\n\n private handleError(\n route: ActivatedRouteSnapshot,\n message?: string,\n queryParams?: Dictionary<any>,\n ): Promise<boolean> {\n const parentUrl = this.routerService.getFlowRootPath(route);\n return this.router.navigate([parentUrl, '404'], {\n queryParams,\n state: {\n message: message,\n },\n });\n }\n\n resolve(route: ActivatedRouteSnapshot) {\n const { queryParams } = route;\n const { flowId } = queryParams;\n\n if (!flowId) {\n return this.handleError(route);\n }\n\n return this.flowsApiService.getFlow(flowId).pipe(\n map(flow => {\n if (!flow) {\n return this.handleError(route, `Flow with flowId=${flowId} is not defined`);\n }\n\n const { properties } = flow;\n const { queryParams: flowQueryParams, entryPath } = properties;\n const isProductFlow = entryPath.includes('/product');\n const mergedParams = {\n ...queryParams,\n ...flowQueryParams,\n ...(<FlowQueryParams>{\n ...(isProductFlow && { standalone: true }),\n }),\n };\n\n const contextProperties = Object.entries(mergedParams).reduce<Dictionary<string>>(\n (trunk, [key, value]) => ({ ...trunk, [key]: String(value) }),\n {},\n );\n\n this.contextService.update({ properties: contextProperties });\n\n const parentUrl = this.routerService.getFlowRootPath(route);\n const entryUrl = String(entryPath ?? '')\n .split('/')\n .filter(Boolean);\n\n return this.router\n .navigate([parentUrl, ...entryUrl], {\n queryParams: mergedParams,\n replaceUrl: true,\n })\n .catch(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message, mergedParams);\n });\n }),\n );\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';\nimport { ContextService, FlowConfigurationService, QuoteDraftService } from '@veloce/sdk/core';\nimport { catchError, from, Observable, of, switchMap, tap } from 'rxjs';\nimport { FlowRouterService } from '../services/flow-router.service';\n\n@Injectable()\nexport class QuoteResolver implements Resolve<void | boolean> {\n constructor(\n private router: Router,\n private quoteDraftService: QuoteDraftService,\n private routerService: FlowRouterService,\n private contextService: ContextService,\n private flowConfiguration: FlowConfigurationService,\n ) {}\n\n private handleError(route: ActivatedRouteSnapshot, message: string): Observable<boolean> {\n const parentUrl = this.routerService.getFlowRootPath(route);\n return from(this.router.navigate([parentUrl, '404'], { state: { message } }));\n }\n\n private calculate$(): Observable<void> {\n const quoteDraft = this.quoteDraftService.quoteDraft;\n\n if (!this.quoteDraftService.isStandalone && quoteDraft) {\n return this.flowConfiguration.calculate$(quoteDraft);\n }\n\n return of(undefined);\n }\n\n resolve(route: ActivatedRouteSnapshot): Observable<void | boolean> {\n const { headerId } = this.contextService.resolve();\n const quote = this.quoteDraftService.quoteDraft;\n\n if (quote && quote.quoteId === headerId) {\n return of(true);\n }\n\n const { queryParams } = route;\n\n return this.quoteDraftService.init(headerId, queryParams).pipe(\n switchMap(() => this.calculate$()),\n tap(() => (this.quoteDraftService.isInitialized = true)),\n catchError(e => {\n const message = e instanceof HttpErrorResponse ? e.error.message : e;\n return this.handleError(route, message);\n }),\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { VELOCE_FLOW_ROOT_ROUTE } from './constants';\nimport { FlowComponent } from './flow.component';\nimport { ContextGuard } from './guards/context.guard';\nimport { ProductUnloadGuard } from './guards/product-unload.guard';\nimport { RootGuard } from './guards/root.guard';\nimport { CatalogComponent } from './pages/catalog/catalog.component';\nimport { CatalogModule } from './pages/catalog/catalog.module';\nimport { DebugModule } from './pages/debug/debug.module';\nimport { LegacyProductComponent } from './pages/legacy-product/legacy-product.component';\nimport { LegacyProductModule } from './pages/legacy-product/legacy-product.module';\nimport { ProductComponent } from './pages/product/product.component';\nimport { ProductModule } from './pages/product/product.module';\nimport { RecordNotFoundModule } from './pages/record-not-found/record-not-found.module';\nimport { ShoppingCartComponent } from './pages/shopping-cart/shopping-cart.component';\nimport { ShoppingCartModule } from './pages/shopping-cart/shopping-cart.module';\nimport { FlowResolver } from './resolvers/flow.resolver';\nimport { QuoteResolver } from './resolvers/quote.resolver';\nimport { FlowRouterService } from './services/flow-router.service';\nimport { RouteWithId } from './types/route.types';\n\nconst rootRoute: RouteWithId = {\n id: VELOCE_FLOW_ROOT_ROUTE,\n path: '',\n component: FlowComponent,\n canActivate: [RootGuard],\n canDeactivate: [RootGuard],\n children: [\n {\n path: 'flows',\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: FlowResolver },\n canActivate: [ContextGuard],\n children: [],\n },\n {\n path: 'legacy',\n children: [\n {\n path: 'product',\n component: LegacyProductComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n },\n ],\n },\n {\n path: 'product',\n component: ProductComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n canDeactivate: [ProductUnloadGuard],\n data: { showHeader: true },\n },\n {\n path: 'cart',\n component: ShoppingCartComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n data: { showHeader: true },\n },\n {\n path: 'catalog',\n component: CatalogComponent,\n runGuardsAndResolvers: 'paramsOrQueryParamsChange',\n resolve: { quote: QuoteResolver },\n canActivate: [ContextGuard],\n data: { showHeader: true },\n },\n {\n path: 'debug',\n loadChildren: () => DebugModule,\n },\n {\n path: '404',\n loadChildren: () => RecordNotFoundModule,\n },\n ],\n};\n\n@NgModule({\n imports: [RouterModule.forChild([rootRoute]), ProductModule, LegacyProductModule, ShoppingCartModule, CatalogModule],\n exports: [RouterModule],\n providers: [FlowRouterService, RootGuard, ContextGuard, ProductUnloadGuard, FlowResolver, QuoteResolver],\n})\nexport class FlowRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloce/api';\nimport { LetDirectiveModule, LoaderModule } from '@veloce/components';\nimport { LauncherModule } from '@veloce/sdk/cms';\nimport { SdkCoreModule } from '@veloce/sdk/core';\nimport { FlowDialogModule } from './components/dialog/dialog.module';\nimport { DocGenModule } from './components/doc-gen/doc-gen.module';\nimport { FlowHeaderModule } from './components/header/header.module';\nimport { FlowRoutingModule } from './flow-routing.module';\nimport { FlowComponent } from './flow.component';\nimport { FlowService } from './services';\nimport { FlowDocGenService } from './services/doc-gen.service';\nimport { FlowDialogService } from './services/flow-dialog.service';\n\n@NgModule({\n declarations: [FlowComponent],\n imports: [\n CommonModule,\n FlowRoutingModule,\n ApiModule,\n LauncherModule,\n LoaderModule,\n FlowHeaderModule,\n FlowDialogModule,\n SdkCoreModule,\n DocGenModule,\n LetDirectiveModule,\n ],\n providers: [FlowService, FlowDialogService, FlowDocGenService],\n})\nexport class FlowModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["routes","first","takeUntil","map","switchMap","TooltipModule"],"mappings":"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"}