@veloceapps/sdk 11.0.0-1 → 11.0.0-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cms/cms.actions.d.ts +0 -40
- package/cms/vendor-map.d.ts +0 -12
- package/core/modules/configuration/services/configuration-state.service.d.ts +0 -4
- package/core/types/flow-customization.types.d.ts +0 -12
- package/esm2020/cms/cms.actions.mjs +1 -36
- package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
- package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +2 -3
- package/esm2020/core/types/flow-customization.types.mjs +1 -1
- package/fesm2015/veloceapps-sdk-cms.mjs +4 -46
- package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk-core.mjs +1 -2
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-cms.mjs +4 -46
- package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +1 -2
- package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
- package/package.json +1 -1
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/helpers.ts","../../../../libs/sdk/core/services/context.service.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/runtime.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.ts","../../../../libs/sdk/core/services/flow-state-configuration.service.ts","../../../../libs/sdk/core/services/integration.state.ts","../../../../libs/sdk/core/services/product-images.service.ts","../../../../libs/sdk/core/modules/configuration/services/runtime-context.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.ts","../../../../libs/sdk/core/core.module.ts","../../../../libs/sdk/core/directives/primeng-calendar.directive.ts","../../../../libs/sdk/core/directives/directives.module.ts","../../../../libs/sdk/core/pipes/date.pipe.ts","../../../../libs/sdk/core/pipes/number.pipe.ts","../../../../libs/sdk/core/pipes/price.pipe.ts","../../../../libs/sdk/core/pipes/action-code.pipe.ts","../../../../libs/sdk/core/pipes/pipes.module.ts","../../../../libs/sdk/core/veloceapps-sdk-core.ts"],"sourcesContent":["import {\n  Attribute,\n  ConfigurationContext,\n  ConfigurationContextMode,\n  ConfigurationRequest,\n  LineItem,\n  UIDefinitionProps,\n  UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData, NewConfigurationProps } from './types/configuration.types';\n\nexport const getDefaultLineItem = (\n  context: RuntimeContext,\n  uiDefinitionProperties: UIDefinitionProps,\n  qty = 1,\n): LineItem => {\n  const id = UUID.UUID();\n  const attributes: Attribute[] = [];\n  const lineItems: LineItem[] = [];\n\n  return {\n    id,\n    type: uiDefinitionProperties.rootType ?? '',\n    cfgStatus: 'Default',\n    actionCode: 'ADD',\n    qty,\n    attributes,\n    lineItems,\n    productName: context.properties?.['displayName'] || context.productName,\n    productId: context.productId ?? '',\n    ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),\n  } as LineItem;\n};\n\nexport const getGuidedSellingConfigurationRequest = (\n  data: GuidedSellingSubmitData,\n  context: ConfigurationContext,\n): ConfigurationRequest => {\n  const _context = { ...context };\n  delete _context.configurationToken;\n\n  const properties = { ...context.properties };\n  delete properties['ConfigurationToken'];\n\n  return {\n    mode: 'SEARCH',\n    step: 'START',\n    attributeDomainMode: 'ALL',\n    context: {\n      ..._context,\n      mode: ConfigurationContextMode.TEST,\n      properties: {\n        ...properties,\n        ModelId: data.modelId,\n        Name: 'Veloce Guided Selling',\n        PricingEnabled: 'false',\n        RuntimeMode: 'TEST',\n      },\n    },\n    lineItem: {\n      actionCode: 'ADD',\n      cfgStatus: 'Default',\n      id: UUID.UUID(),\n      qty: 1,\n      type: data.modelType,\n      attributes: Object.entries(data.attributesMap).map(([name, value]) => ({\n        name,\n        value,\n        cfgStatus: 'User',\n      })),\n    } as LineItem,\n  };\n};\n\nexport const generateConfigurationLineItem = (props: NewConfigurationProps, qty = 1): LineItem => {\n  const id = UUID.UUID();\n  const attributes = Object.entries(props.attributesMap ?? {}).map(([name, value]) => ({\n    name,\n    value,\n    cfgStatus: 'User',\n  }));\n  const lineItems: LineItem[] = [];\n\n  return {\n    id,\n    type: props.product.typeName ?? '',\n    cfgStatus: 'Default',\n    actionCode: 'ADD',\n    qty,\n    attributes,\n    lineItems,\n    productName: props.product.name,\n    productId: props.product.id ?? '',\n  } as LineItem;\n};\n","import { Injectable } from '@angular/core';\nimport { ContextApiService } from '@veloceapps/api';\nimport { ConfigurationContext, ConfigurationContextMode } from '@veloceapps/core';\nimport { merge } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class ContextService {\n  private context = new BehaviorSubject<ConfigurationContext | null>(null);\n\n  constructor(private contextApiService: ContextApiService) {}\n\n  public get isInitialized(): boolean {\n    return Boolean(this.context.value);\n  }\n\n  public get isInitialized$(): Observable<boolean> {\n    return this.context.pipe(map(Boolean));\n  }\n\n  public get mode(): ConfigurationContextMode | undefined {\n    return this.resolve().properties['#mode'];\n  }\n\n  public get isEditMode$(): Observable<boolean> {\n    return this.resolve$().pipe(map(() => this.isEditMode));\n  }\n\n  public get isEditMode(): boolean {\n    const context = this.resolve();\n\n    if (context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n      return true;\n    }\n\n    if (context.properties['#mode'] === ConfigurationContextMode.QUOTE) {\n      return context.properties.Status === 'Draft';\n    }\n\n    return false;\n  }\n\n  public resolve(): ConfigurationContext {\n    if (!this.context.value) {\n      throw new Error('Context is not initialized yet!');\n    }\n\n    return { ...this.context.value };\n  }\n\n  public resolve$(): Observable<ConfigurationContext> {\n    return this.context.pipe(filter((ctx): ctx is ConfigurationContext => Boolean(ctx)));\n  }\n\n  public create(headerId: string, mode: ConfigurationContextMode): Observable<ConfigurationContext> {\n    return this.contextApiService.getContext(headerId, mode).pipe(\n      tap(context => this.context.next(merge(new ConfigurationContext(headerId, mode), context))),\n      map(() => this.resolve() as ConfigurationContext),\n    );\n  }\n\n  public initTestMode(): Observable<ConfigurationContext> {\n    return this.create('TestId', ConfigurationContextMode.TEST).pipe(\n      map(context => {\n        return this.update({\n          properties: {\n            ...context.properties,\n            RuntimeMode: ConfigurationContextMode.TEST,\n            StartDate: new Date().toISOString().substring(0, 10),\n            standalone: 'true',\n          },\n        });\n      }),\n    );\n  }\n\n  public update(partialContext: Partial<ConfigurationContext>): ConfigurationContext {\n    const originalContext = this.resolve();\n\n    const updatedContext: ConfigurationContext = {\n      ...originalContext,\n      ...(partialContext as ConfigurationContext),\n      properties: {\n        ...originalContext.properties,\n        ...partialContext.properties,\n      },\n    };\n\n    this.context.next(updatedContext);\n\n    return updatedContext;\n  }\n\n  public set(context: ConfigurationContext): ConfigurationContext {\n    const originalContext = this.resolve();\n\n    const updatedContext: ConfigurationContext = {\n      ...originalContext,\n      ...context,\n    };\n\n    this.context.next(updatedContext);\n\n    return updatedContext;\n  }\n\n  public delete(): void {\n    this.context.next(null);\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport {\n  ConfigurationProcessor,\n  TemplateComponentWithAttachments,\n  UIDefinitionContainer,\n  UITemplate,\n} from '@veloceapps/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n  getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;\n\n  /**\n   * @deprecated Use `getTemplateComponents` instead\n   */\n  getShoppingCartComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n  /**\n   * @deprecated Use `getTemplateComponents` instead\n   */\n  getCatalogComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n  /**\n   * @deprecated Use `getTemplateComponents` instead\n   */\n  getAssetsComponent?(templateName: string): Observable<TemplateComponentWithAttachments | null>;\n\n  getTemplates?(): Observable<UITemplate[]>;\n  getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n  getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Prettify, VlDateSettings } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\n\nexport const FORMATTING_SETTINGS_TOKEN = new InjectionToken<{\n  getFormattingSettings: (...args: unknown[]) => FormattingSettings;\n}>('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');\n\nexport type FormattingSettings = Prettify<\n  {\n    currencySymbol: string;\n    thousandsSeparator: string;\n    decimalSeparator: string;\n    decimalsCount: number;\n    actionCodeLabels: Dictionary<string>;\n  } & VlDateSettings\n>;\n","import { ContextProperties, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\n\nexport enum RuntimeMode {\n  TEST,\n  PROD,\n}\n\nexport enum RuntimeOperation {\n  INIT = 'INIT',\n  UPDATE = 'UPDATE',\n}\n\nexport enum RuntimeStep {\n  START = 'START',\n  UPDATE = 'UPDATE',\n}\n\nexport interface InvocationContext {\n  runtimeOperation?: RuntimeOperation;\n  runtimeStep?: RuntimeStep;\n}\n\nexport interface RuntimeContext {\n  modelId: string;\n  runtimeMode: RuntimeMode;\n  runtimeModel: RuntimeModel;\n  uiDefinitionContainer?: UIDefinitionContainer;\n  productId?: string;\n  productName?: string;\n  productType?: string;\n  properties?: ContextProperties;\n  offeringId?: string;\n  offeringInstanceId?: string;\n  invocationContext?: InvocationContext;\n}\n","export const UI_DEFINITION_VERSION = 3;\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { FlowsApiService, UITemplatesApiService } from '@veloceapps/api';\nimport { Flow, FlowTemplatesMap, UITemplate, UITemplateType } from '@veloceapps/core';\nimport { BehaviorSubject, catchError, forkJoin, map, noop, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport { FLOW_CUSTOMIZATION, FlowCustomization } from '../types';\n\n@Injectable()\nexport class FlowInfoService {\n  public flow$: Observable<Flow | null>;\n  public params?: Params;\n  public templates: { [key in UITemplateType]?: UITemplate } = {};\n\n  public get flow(): Flow | null {\n    return this.flowSubj$.value;\n  }\n  public set flow(value: Flow | null) {\n    this.flowSubj$.next(value);\n  }\n\n  public get isLegacy(): boolean {\n    return !!this.flow && this.flow?.properties.stateful == null;\n  }\n\n  public get isStateful(): boolean {\n    return !!this.flow?.properties.stateful;\n  }\n\n  private readonly defaultTemplates = {\n    flowEngine: 'Flow Engine',\n  };\n  private flowSubj$ = new BehaviorSubject<Flow | null>(null);\n\n  constructor(\n    private flowsApiService: FlowsApiService,\n    private templatesApiService: UITemplatesApiService,\n    @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n  ) {\n    this.flow$ = this.flowSubj$.asObservable();\n  }\n\n  public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n    return this.flowsApiService.getFlow(flowId).pipe(\n      switchMap(flow => this.initFlowTemplates$(flow).pipe(map(() => flow))),\n      tap(flow => {\n        this.params = { ...routeQueryParams, ...flow.properties.queryParams };\n        this.flowSubj$.next(flow);\n      }),\n      map(noop),\n      catchError(e => {\n        this.flowSubj$.next(null);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    this.flowSubj$.next(null);\n    this.params = undefined;\n    this.templates = {};\n  }\n\n  private initFlowTemplates$(flow: Flow): Observable<void> {\n    return forkJoin([\n      this.templatesApiService.fetchTemplates$(),\n      this.customizationService?.getTemplates?.() ?? of([]),\n    ]).pipe(\n      map(([templates, localTemplates]) => {\n        Object.entries({ ...this.defaultTemplates, ...flow.properties.templates }).forEach(([key, name]) => {\n          const type = this.remapTemplateName(key);\n\n          if (type) {\n            this.templates[type] =\n              localTemplates.find(template => template.name === name && template.type === type) ??\n              templates.find(template => template.name === name && template.type === type);\n          }\n        });\n      }),\n    );\n  }\n\n  private remapTemplateName(templateType: string): UITemplateType | undefined {\n    switch (templateType as keyof typeof this.defaultTemplates) {\n      case 'flowEngine':\n        return UITemplateType.FLOW_ENGINE;\n      default:\n        break;\n    }\n\n    switch (templateType as keyof FlowTemplatesMap) {\n      case 'assets':\n      case 'shoppingCart':\n        // No separate Assets template at the moment\n        return UITemplateType.SHOPPING_CART;\n      case 'catalog':\n        return UITemplateType.CATALOG;\n      case 'guidedSelling':\n        return UITemplateType.GUIDED_SELLING;\n      case 'flowHeader':\n        return UITemplateType.FLOW_HEADER;\n      default:\n        break;\n    }\n\n    return undefined;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AccountApiService, QuoteApiService } from '@veloceapps/api';\nimport { AccountAssetsState, ConfigurationContextMode, LineItem, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, combineLatest, noop, Observable, of, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class QuoteDraftService {\n  private quoteSubj$ = new BehaviorSubject<QuoteDraft | null>(null);\n  private assetsSubj$ = new BehaviorSubject<AccountAssetsState | null>(null);\n  private resetSubj$ = new BehaviorSubject<boolean>(true);\n  private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n  private initialCurrentState: LineItem[] = [];\n  private _hasUnsavedChanges = false;\n\n  public get isInitialized$(): Observable<boolean> {\n    return this.isInitializedSubj$.asObservable();\n  }\n  public get isInitialized(): boolean {\n    return this.isInitializedSubj$.getValue();\n  }\n  public set isInitialized(value: boolean) {\n    if (this.isInitialized !== value) {\n      this.isInitializedSubj$.next(value);\n    }\n  }\n\n  public get hasUnsavedChanges(): boolean {\n    return this._hasUnsavedChanges;\n  }\n  public set hasUnsavedChanges(value: boolean) {\n    this._hasUnsavedChanges = value;\n\n    if (!this._hasUnsavedChanges) {\n      this.initialCurrentState = this.quoteDraft?.currentState ?? [];\n    }\n  }\n\n  public get hasProducts$(): Observable<boolean> {\n    return this.quoteSubj$.pipe(map(() => this.hasProducts));\n  }\n  public get hasProducts(): boolean {\n    return Boolean(this.quoteSubj$.value?.currentState.length);\n  }\n\n  public get hasAssets$(): Observable<boolean> {\n    return this.assetsSubj$.pipe(map(() => this.hasAssets));\n  }\n  public get hasAssets(): boolean {\n    return Boolean(this.assetsSubj$.value?.currentState.length);\n  }\n\n  public get assetsState(): AccountAssetsState | null {\n    return this.assetsSubj$.value;\n  }\n\n  public reset$ = this.resetSubj$.asObservable();\n\n  constructor(\n    private context: ContextService,\n    private flowInfoService: FlowInfoService,\n    private accountApiService: AccountApiService,\n    private quoteApiService: QuoteApiService,\n  ) {\n    this.isInitializedSubj$\n      .pipe(\n        filter(isInitialized => isInitialized),\n        switchMap(() => this.quoteSubj$.asObservable()),\n        skip(1),\n        tap(quote => this.markAsUpdated(quote)),\n      )\n      .subscribe();\n  }\n\n  public reset(): void {\n    this.resetSubj$.next(true);\n    this.quoteSubj$.next(null);\n    this.assetsSubj$.next(null);\n    this.isInitialized = false;\n    this.hasUnsavedChanges = false;\n  }\n\n  public init(headerId: string, params: Dictionary<string>): Observable<void> {\n    const ctx = this.context.resolve();\n    const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;\n    const accountId = isAccountMode ? headerId : ctx.properties.AccountId;\n\n    return zip(\n      accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null),\n      isAccountMode\n        ? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT))\n        : this.quoteApiService.getQuoteState(headerId, params),\n    ).pipe(\n      tap(([assets, quote]) => {\n        if (assets) {\n          this.assetsSubj$.next(assets);\n        }\n\n        this.quoteSubj$.next(quote);\n        if (assets && isAccountMode) {\n          this.context.update(assets.context);\n        } else {\n          this.context.update(quote.context);\n        }\n      }),\n      map(() => noop()),\n      take(1),\n    );\n  }\n\n  public finalizeInit(): void {\n    this.isInitialized = true;\n    this.hasUnsavedChanges = false;\n  }\n\n  public setCurrentLineItemState(lineItems: LineItem[]): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      currentState: lineItems,\n    });\n  }\n\n  public updateQuoteDraft(update: Partial<QuoteDraft>): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    if (update.context) {\n      this.context.set(update.context);\n    }\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      ...update,\n    });\n  }\n\n  public updateByPriceSummary(priceSummary: PriceSummary): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    const updatedCurrentState = this.currentState.map(lineItem => {\n      const updated = priceSummary.lineItems.find(li => li.id === lineItem.id);\n      return updated ?? lineItem;\n    });\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      currentState: updatedCurrentState,\n      totalPrices: priceSummary.totalPrices,\n      approvalItems: priceSummary.approvalItems,\n    });\n  }\n\n  public setAssetsState(assetsState: AccountAssetsState): void {\n    this.assetsSubj$.next(assetsState);\n  }\n\n  public get quoteDraft$(): Observable<QuoteDraft> {\n    return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(\n      map(() => this.quoteDraft),\n      filter((quote): quote is QuoteDraft => Boolean(quote)),\n      shareReplay(),\n    );\n  }\n\n  public get quoteDraft(): QuoteDraft | null {\n    const quote = this.quoteSubj$.value;\n\n    if (!quote) {\n      return null;\n    }\n\n    return {\n      ...quote,\n      context: this.context.resolve(),\n    };\n  }\n\n  public get currentState$(): Observable<LineItem[]> {\n    return this.quoteDraft$.pipe(map(quote => quote.currentState));\n  }\n\n  public get currentState(): LineItem[] {\n    return this.quoteDraft?.currentState ?? [];\n  }\n\n  public get isStandalone(): boolean {\n    return this.flowInfoService.flow?.properties.standalone ?? false;\n  }\n\n  public get isStandalone$(): Observable<boolean> {\n    return this.flowInfoService.flow$.pipe(map(() => this.isStandalone));\n  }\n\n  public getInitialCurrentState(): LineItem[] {\n    return this.initialCurrentState;\n  }\n\n  public isEditMode$(): Observable<boolean> {\n    return this.context.resolve$().pipe(map(() => this.isEditMode()));\n  }\n\n  public isEditMode(): boolean {\n    const context = this.context.resolve();\n\n    if (context.mode === ConfigurationContextMode.ACCOUNT) {\n      return true;\n    }\n\n    if (context.mode === ConfigurationContextMode.QUOTE) {\n      return context.properties.Status === 'Draft';\n    }\n\n    return false;\n  }\n\n  private markAsUpdated(quote: QuoteDraft | null): void {\n    if (quote?.context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n      this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');\n    } else {\n      this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote?.currentState);\n    }\n  }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n  Charge,\n  CompiledPricePlan,\n  ConfigurationContext,\n  ConfigurationContextMode,\n  ConfigurationProcessor,\n  ConfigurationProcessorScriptFn,\n  ConfigurationProcessorTypes,\n  EntityUtil,\n  Flow,\n  FlowState,\n  FlowStateExecutableDTO,\n  FlowStateExecutionRequest,\n  FlowStateExecutionRequestDTO,\n  FlowStateExecutionResult,\n  FlowStateSelectorResponse,\n  isDefined,\n  MetricRule,\n  UITemplateType,\n  UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary, flatten, isEqual } from 'lodash';\nimport {\n  BehaviorSubject,\n  buffer,\n  catchError,\n  combineLatest,\n  debounceTime,\n  filter,\n  finalize,\n  forkJoin,\n  map,\n  noop,\n  Observable,\n  of,\n  share,\n  shareReplay,\n  Subject,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throwError,\n} from 'rxjs';\nimport { FlowConfigurationService } from '../modules';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { FlowStateSubscriptionOptions, FlowStore } from '../types/flow-state.types';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\nimport { QuoteDraftService } from './quote-draft.service';\n\ntype ProcessorsMap = Partial<{\n  [ownerId: string]: {\n    [apiName: string]: ConfigurationProcessor;\n  };\n}>;\n\ntype Subscription = {\n  request: FlowStateExecutionRequestDTO;\n  data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class FlowStateService {\n  public charges$: Observable<Dictionary<Charge>>;\n  public pricePlans$: Observable<Dictionary<CompiledPricePlan>>;\n  public activeMetrics$: Observable<MetricRule[]>;\n  public isPriceListLocked$: Observable<boolean>;\n\n  private readonly NOT_INITIALIZED = Symbol();\n  private readonly EXECUTION_BUFFER_TIME = 100;\n\n  private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n  private stateId$ = new BehaviorSubject<string | null>(null);\n  private initialStatefulData: Dictionary<unknown> = {};\n  private trackedStatefulChangesMap: Map<string, boolean> = new Map();\n  private processors: ProcessorsMap = {};\n  private subscriptions: Record<string, Subscription> = {};\n  private flowStore: FlowStore = {};\n\n  private executionInProgress$ = new BehaviorSubject(false);\n  private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n  private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n\n  private cleanup$ = new Subject<void>();\n\n  constructor(\n    private contextService: ContextService,\n    private quoteDraftService: QuoteDraftService,\n    private flowInfoService: FlowInfoService,\n    private flowConfiguration: FlowConfigurationService,\n    private processorsApiService: ConfigurationProcessorsApiService,\n    private flowStateApiService: FlowStateApiService,\n    private quoteApiService: QuoteApiService,\n    private toastService: ToastService,\n    @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n  ) {\n    this.statefulExecutionRequest$ = this.initBufferedRequest$();\n\n    /*\n      In stateless mode watch QuoteDraft changes and call executeRequest so that\n      all subscriptions get their updates according to updated QuoteDraft\n    */\n    this.isInitialized$()\n      .pipe(\n        filter(Boolean),\n        filter(() => !this.getFlowSafe().properties.stateful),\n        switchMap(() => this.flowConfiguration.updated$),\n        switchMap(() => this.executeRequest$({}, true)),\n      )\n      .subscribe();\n\n    this.charges$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.charges));\n        } else {\n          return this.subscribe$<Dictionary<Charge>>(UITemplateType.FLOW_ENGINE, 'CHARGES', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : {})));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.charges$.subscribe();\n\n    this.pricePlans$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.pricePlans));\n        } else {\n          return this.subscribe$<Dictionary<CompiledPricePlan>>(UITemplateType.FLOW_ENGINE, 'PRICE_PLANS', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : {})));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.pricePlans$.subscribe();\n\n    this.activeMetrics$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.activeMetrics));\n        } else {\n          return this.subscribe$<MetricRule[]>(UITemplateType.FLOW_ENGINE, 'ACTIVE_METRICS', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : [])));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.activeMetrics$.subscribe();\n\n    this.isPriceListLocked$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return of(false);\n        } else {\n          return this.subscribe$<boolean>(UITemplateType.FLOW_ENGINE, 'IS_PRICE_LIST_LOCKED', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : false)));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.isPriceListLocked$.subscribe();\n  }\n\n  public init$(): Observable<void> {\n    return this.initProcessors$().pipe(\n      switchMap(() => {\n        if (this.getFlowSafe().properties.stateful) {\n          return this.initStateful$();\n        } else {\n          return this.initStateless$();\n        }\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n    this.subscriptions = {};\n\n    if (this.stateId$.value) {\n      this.flowStateApiService.cancel(this.stateId$.value).subscribe();\n      this.stateId$.next(null);\n    }\n\n    this.processors = {};\n    this.flowStore = {};\n    this.cleanup$.next();\n  }\n\n  public get hasUnsavedChanges(): boolean {\n    return this.getFlowSafe().properties.stateful\n      ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n      : this.quoteDraftService.hasUnsavedChanges;\n  }\n\n  public get stateId(): string | null {\n    return this.stateId$.value;\n  }\n\n  public get isExecutionInProgress$() {\n    return this.executionInProgress$.asObservable();\n  }\n\n  public isInitialized$(): Observable<boolean> {\n    return combineLatest([this.stateId$, this.quoteDraftService.isInitialized$]).pipe(\n      map(values => values.some(Boolean)),\n    );\n  }\n\n  public isInitialized(): boolean {\n    return Boolean(this.stateId$.value) || this.quoteDraftService.isInitialized;\n  }\n\n  public execute$(\n    scope: UITemplateType,\n    exec: FlowStateExecutionRequest,\n  ): Observable<FlowStateExecutionResult['selectors']> {\n    const request = this.execToRequest(scope, exec);\n\n    return this.executeRequest$(request).pipe(\n      map(result => {\n        // Keep only requested results\n        const actualSelectors = Object.entries(result.selectors).reduce(\n          (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n            if (exec.selectors?.[requestId]) {\n              trunk[requestId] = result;\n            }\n            return trunk;\n          },\n          {},\n        );\n\n        return actualSelectors;\n      }),\n    );\n  }\n\n  public dispatch$(scope: UITemplateType, action: string, inputData?: unknown): Observable<void> {\n    const exec: FlowStateExecutionRequest = {\n      actions: [{ name: action, inputData }],\n    };\n    const request = this.execToRequest(scope, exec);\n\n    return this.executeRequest$(request).pipe(map(noop));\n  }\n\n  public select$<Response = unknown>(\n    scope: UITemplateType,\n    selectorName: string,\n    inputData?: unknown,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = this.generateRequestId(scope, selectorName, inputData);\n    const request = this.execToRequest(scope, {\n      selectors: {\n        [requestId]: {\n          name: selectorName,\n          inputData,\n        },\n      },\n    });\n\n    return this.executeRequest$(request).pipe(\n      map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n    );\n  }\n\n  public subscribe$<Response = unknown>(\n    scope: UITemplateType,\n    selectorName: string,\n    inputData?: unknown,\n    options?: FlowStateSubscriptionOptions,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = this.generateRequestId(scope, selectorName, inputData);\n\n    let subscription = this.subscriptions[requestId];\n\n    if (!subscription) {\n      const request = this.execToRequest(scope, {\n        selectors: {\n          [requestId]: {\n            name: selectorName,\n            inputData,\n          },\n        },\n      });\n\n      subscription = {\n        request,\n        data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n      };\n\n      this.subscriptions[requestId] = subscription;\n\n      if (options?.trackedChanges) {\n        this.trackedStatefulChangesMap.set(requestId, false);\n      }\n\n      if (!options?.cold) {\n        this.executeRequest$(request).subscribe();\n      }\n    }\n\n    return subscription.data$.pipe(\n      filter(data => data != this.NOT_INITIALIZED),\n      map(data => data as FlowStateSelectorResponse<Response>),\n      finalize(() => {\n        if (!this.subscriptions[requestId]?.data$.observed) {\n          delete this.subscriptions[requestId];\n        }\n      }),\n    );\n  }\n\n  public save$(): Observable<{ quoteId: string }> {\n    if (this.getFlowSafe().properties.stateful) {\n      if (this.stateId$.value) {\n        return this.flowStateApiService.save(this.stateId$.value).pipe(\n          tap(() => {\n            Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n              this.trackedStatefulChangesMap.set(key, false);\n            });\n          }),\n        );\n      }\n    } else {\n      const quoteDraft = this.quoteDraftService.quoteDraft;\n      if (quoteDraft) {\n        return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n          tap(({ versionId }) => {\n            this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n          }),\n        );\n      }\n    }\n\n    return of({ quoteId: '' });\n  }\n\n  public submit$(): Observable<{ quoteId: string }> {\n    if (this.getFlowSafe().properties.stateful) {\n      if (this.stateId$.value) {\n        return this.flowStateApiService.submit(this.stateId$.value);\n      }\n    } else {\n      const quoteDraft = this.quoteDraftService.quoteDraft;\n      if (quoteDraft) {\n        return this.quoteApiService.submitQuote(quoteDraft).pipe(\n          tap(({ versionId }) => {\n            this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n          }),\n        );\n      }\n    }\n\n    return of({ quoteId: '' });\n  }\n\n  public getFlowStore(): Record<string, unknown> {\n    return this.flowStore;\n  }\n\n  private getOwnerIdByScope(scope: UITemplateType): string {\n    const ownerId = this.flowInfoService.templates[scope]?.id;\n    if (!ownerId) {\n      throw `OwnerId is not found for scope ${scope}`;\n    }\n\n    return ownerId;\n  }\n\n  private getScopeByOwnerId(id: string): UITemplateType | undefined {\n    for (const template of Object.values(this.flowInfoService.templates)) {\n      if (template.id === id) {\n        return template.type;\n      }\n    }\n\n    return;\n  }\n\n  private execToRequest(scope: UITemplateType, exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n    const ownerId = this.getOwnerIdByScope(scope);\n\n    return {\n      actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),\n      selectors:\n        exec.selectors &&\n        Object.entries(exec.selectors).reduce(\n          (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n            ...trunk,\n            [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },\n          }),\n          {},\n        ),\n    };\n  }\n\n  public executeRequest$(\n    request: FlowStateExecutionRequestDTO,\n    forceSubscriptions: boolean = false,\n  ): Observable<FlowStateExecutionResult> {\n    const fullRequest = cloneDeep(request);\n    if (fullRequest.actions?.length || forceSubscriptions) {\n      for (const subscription of Object.values(this.subscriptions)) {\n        fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n      }\n    }\n\n    const execution$ = this.getFlowSafe().properties.stateful\n      ? this.executeStateful$(fullRequest)\n      : this.executeStateless$(fullRequest);\n\n    return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n  }\n\n  private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n    Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n      if (!selectorResult.success) {\n        this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n      }\n\n      const subscription$ = this.subscriptions[requestId]?.data$;\n      if (subscription$ && subscription$.value !== selectorResult) {\n        this.checkStatefulChanges(requestId, selectorResult);\n        subscription$.next(selectorResult);\n      }\n    });\n  }\n\n  private initStateful$(): Observable<void> {\n    // Subscriptions\n    this.subscribe$<ConfigurationContext>(UITemplateType.FLOW_ENGINE, 'CONTEXT', null, { cold: true })\n      .pipe(\n        tap(response => {\n          if (response.success) {\n            this.contextService.update(response.result);\n          }\n        }),\n        takeUntil(this.cleanup$),\n      )\n      .subscribe();\n\n    const processorsList = flatten(Object.values(this.processors).map(ownerMap => Object.values(ownerMap ?? {})));\n    const processors = processorsList.length ? processorsList : undefined;\n    const selectors = Object.values(this.subscriptions)\n      .map(({ request }) => request.selectors)\n      .filter(isDefined)\n      .reduce((trunk, selectors) => ({ ...trunk, ...selectors }), {});\n    const request = this.getDefaultExecutionRequestDTO();\n\n    return this.flowStateApiService\n      .init({\n        quoteId: this.contextService.resolve().headerId,\n        params: this.flowInfoService.params ?? {},\n        actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n        selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n        selectors: { ...selectors, ...request.selectors },\n        actions: request.actions,\n      })\n      .pipe(\n        map(({ stateId, selectors }) => {\n          this.handleSelectorsResponse(selectors);\n          this.stateId$.next(stateId);\n        }),\n      );\n  }\n\n  private initBufferedRequest$() {\n    return this.statefulRequestStream$.pipe(\n      buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n      switchMap(requests => {\n        if (!this.stateId$.value) {\n          throw 'Stateful session is not initialized';\n        }\n\n        // merge buffered requests\n        const request: FlowStateExecutionRequestDTO = {\n          actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n          selectors: requests\n            .map(({ selectors }) => selectors)\n            .filter(isDefined)\n            .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n        };\n\n        this.executionInProgress$.next(true);\n        return this.flowStateApiService.execute(this.stateId$.value, request);\n      }),\n      tap(({ stateId }) => this.stateId$.next(stateId)),\n      share(),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    return this.executionInProgress$.pipe(\n      filter(inProgress => !inProgress),\n      take(1),\n      switchMap(() =>\n        // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n        combineLatest([\n          this.statefulExecutionRequest$,\n          of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n        ]),\n      ),\n      map(([response]) => response),\n      take(1),\n    );\n  }\n\n  private initStateless$(): Observable<void> {\n    const { headerId } = this.contextService.resolve();\n    return this.quoteDraftService.init(headerId, this.flowInfoService.params ?? {}).pipe(\n      tap(() => {\n        const assets = this.quoteDraftService.assetsState;\n        if (assets) {\n          this.flowStore = { ...this.flowStore, assets };\n        }\n      }),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return of(null);\n        }\n        return this.executeRequest$(this.getDefaultExecutionRequestDTO());\n      }),\n      switchMap(() => this.calculate$()),\n      tap(() => this.quoteDraftService.finalizeInit()),\n      map(noop),\n    );\n  }\n\n  private calculate$(): Observable<void> {\n    const flowState = this.quoteDraftService.quoteDraft;\n    if (!flowState) {\n      return of(undefined);\n    }\n\n    /*\n      Don't execute procedures when:\n        * Initializing a standalone product configuration UI, as procedure is execute in /price call\n        * Initializing an empty account (account with no assets)\n    */\n    const isEmptyAccountMode =\n      this.contextService.mode === ConfigurationContextMode.ACCOUNT &&\n      !this.quoteDraftService.hasProducts &&\n      !this.quoteDraftService.hasAssets &&\n      !this.quoteDraftService.quoteDraft?.initialState.length;\n\n    if (this.quoteDraftService.isStandalone || isEmptyAccountMode) {\n      return of(undefined);\n    }\n\n    return this.flowConfiguration.calculate$(flowState);\n  }\n\n  private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    this.executionInProgress$.next(true);\n\n    return of(undefined).pipe(\n      tap(() => this.executeStatelessActions(request)),\n      switchMap(() => {\n        /*\n          Skip price calculation in case\n          1. No actions in the request\n          2. Initialization process execution (state not initialized yet)\n        */\n        if (!request.actions?.length || !this.isInitialized()) {\n          return of(undefined);\n        } else {\n          return this.calculate$();\n        }\n      }),\n      map(() => this.executeStatelessSelectors(request)),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStatelessActions(request: FlowStateExecutionRequestDTO): void {\n    if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {\n      return;\n    }\n\n    let flowState = this.quoteDraftService.quoteDraft;\n    request.actions.forEach(action => {\n      try {\n        flowState = this.executeActionScript(flowState, action) ?? flowState;\n      } catch (e) {\n        console.error(e);\n        this.toastService.add({ severity: ToastType.error, summary: String(e) });\n        throw e;\n      }\n    });\n\n    this.quoteDraftService.updateQuoteDraft(flowState);\n  }\n\n  private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n    if (!this.quoteDraftService.quoteDraft) {\n      throw 'QuoteDraft is not initialized';\n    }\n\n    const flowState = this.quoteDraftService.quoteDraft;\n    return EntityUtil.entries(request.selectors ?? {}).reduce(\n      (result: FlowStateExecutionResult, [key, selector]) => {\n        try {\n          result.selectors[key] = {\n            success: true,\n            result: this.executeSelectorScript(flowState, selector),\n          };\n        } catch (e) {\n          console.error(e);\n          result.selectors[key] = {\n            success: false,\n            errorMessage: String(e),\n          };\n        }\n\n        return result;\n      },\n      { stateId: '', selectors: {} },\n    );\n  }\n\n  private getFlowSafe(): Flow {\n    if (!this.flowInfoService.flow) {\n      throw 'Flow is not defined';\n    }\n\n    return this.flowInfoService.flow;\n  }\n\n  private initProcessors$(): Observable<void> {\n    const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n    const flow = this.getFlowSafe();\n\n    if (flow.properties.stateful && !hasOverrides) {\n      // Skip initialization as backend will take processors from SF\n      return of(undefined);\n    }\n\n    const owners$ = Object.values(this.flowInfoService.templates)\n      .map(template => {\n        if (!template) {\n          return;\n        }\n\n        const localProcessors$ =\n          this.customizationService?.getTemplateConfigurationProcessors?.(template.name) ?? of(null);\n\n        return localProcessors$.pipe(\n          switchMap(processors =>\n            processors ? of(processors) : this.processorsApiService.fetchConfigurationProcessors$(template.id),\n          ),\n          tap(processors => {\n            const processorsMap = processors.reduce((acc: Record<string, ConfigurationProcessor>, p) => {\n              acc[p.apiName] = p;\n              return acc;\n            }, {});\n\n            this.processors[template.id] = processorsMap;\n          }),\n        );\n      })\n      .filter(isDefined);\n\n    if (!owners$.length) {\n      return of(undefined);\n    }\n\n    return forkJoin(owners$).pipe(map(noop));\n  }\n\n  private executeActionScript(request: FlowState, executable: FlowStateExecutableDTO): FlowState | null {\n    const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n    if (!configurationProcessor?.script) {\n      const scope = this.getScopeByOwnerId(executable.ownerId);\n      const scopeText = scope ? ` in ${scope}` : '';\n      throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, executable.inputData) as FlowState;\n  }\n\n  private executeSelectorScript(request: FlowState, executable: FlowStateExecutableDTO): unknown {\n    const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n    if (!configurationProcessor?.script) {\n      const scope = this.getScopeByOwnerId(executable.ownerId);\n      const scopeText = scope ? ` in ${scope}` : '';\n      throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n  }\n\n  private executeProcessorScript(\n    request: FlowState,\n    configurationProcessor: ConfigurationProcessor,\n    inputData: unknown,\n  ): unknown {\n    const scope = this.getScopeByOwnerId(configurationProcessor.ownerId ?? '');\n    let functionToExecute = this.executedFunctions[scope + configurationProcessor.apiName];\n\n    if (!functionToExecute) {\n      const script = `${configurationProcessor.script}\\nreturn transform;`;\n      const sourceMap = `\\n//# sourceURL=${scope ? scope + '/' : ''}${configurationProcessor.apiName}.js`;\n      functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n      this.executedFunctions[scope + configurationProcessor.apiName] = functionToExecute;\n    }\n\n    return functionToExecute({\n      request,\n      inputData,\n      flowStore: this.flowStore,\n    });\n  }\n\n  private generateRequestId(scope: UITemplateType, selectorName: string, inputData?: unknown): string {\n    const inputDataHash = UUID.hex(JSON.stringify(inputData) || '').slice(0, 8);\n    return `${scope}/${selectorName}/${inputDataHash}`;\n  }\n\n  private getDefaultExecutionRequestDTO(): FlowStateExecutionRequestDTO {\n    const request: FlowStateExecutionRequestDTO = {\n      actions: [],\n      selectors: {},\n    };\n\n    if (this.getFlowSafe().properties.standalone) {\n      return request;\n    }\n\n    const flowEngineTemplateId = this.getOwnerIdByScope(UITemplateType.FLOW_ENGINE);\n\n    request.actions?.push({\n      apiName: 'UPDATE_CONTEXT_PROPERTIES',\n      ownerId: flowEngineTemplateId,\n      inputData: this.contextService.resolve().properties,\n    });\n\n    return request;\n  }\n\n  private checkStatefulChanges(requestId: string, selectorResult: unknown) {\n    if (this.trackedStatefulChangesMap.has(requestId)) {\n      if (!this.initialStatefulData[requestId]) {\n        this.initialStatefulData[requestId] = selectorResult;\n      }\n\n      const hasChanges = !isEqual(this.initialStatefulData[requestId], selectorResult);\n      this.trackedStatefulChangesMap.set(requestId, hasChanges);\n    }\n  }\n}\n","import { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, entries, flatten, map, sortBy } from 'lodash';\n\nexport const findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n  return findLineItemWithComparator(lineItems, (li: LineItem) => li.id === id);\n};\n\nexport const findLineItemWithComparator = (\n  lineItems: LineItem[],\n  comparator: (li: LineItem) => boolean,\n): LineItem | undefined => {\n  let currentLevel = lineItems;\n\n  while (currentLevel.length) {\n    const found = currentLevel.find(comparator);\n\n    if (found) {\n      return found;\n    }\n\n    currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n  }\n\n  return;\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n  const insertData = lineItem.id === parentId ? [toInsert] : [];\n  return {\n    ...lineItem,\n    lineItems: [\n      ...insertData,\n      ...lineItem.lineItems.map(li => {\n        return insertLineItem(li, parentId, toInsert);\n      }),\n    ],\n  };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n  return {\n    ...lineItem,\n    lineItems: lineItem.lineItems\n      .map(li => {\n        if (li.id === idToRemove) {\n          return;\n        } else if (li.lineItems.length) {\n          return removeLineItem(li, idToRemove);\n        }\n        return li;\n      })\n      .filter(r => !!r) as LineItem[],\n  };\n};\n\nexport const replaceLineItem = (\n  lineItem: LineItem,\n  replaceTo: LineItem,\n  skipCardinalityCalculation: boolean = false,\n): LineItem => {\n  if (lineItem.id === replaceTo.id) {\n    if (!skipCardinalityCalculation) {\n      return { ...recalculateCardinalityVariables(lineItem, replaceTo) };\n    } else {\n      return { ...replaceTo };\n    }\n  }\n\n  return {\n    ...lineItem,\n    lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),\n  };\n};\n\nconst collectCardinalityComputations = (portDomains: Dictionary<PortDomain>): Map<string, boolean> => {\n  const cardinalityComputations = new Map<string, boolean>();\n  entries(portDomains).forEach(([key, portDomain]) => {\n    cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');\n  });\n  return cardinalityComputations;\n};\n\nconst calculateCardinalityVariables = (\n  lineItems: LineItem[],\n  cardinalityComputations: Map<string, boolean>,\n): Map<string, number> => {\n  const cardVars = new Map<string, number>();\n  lineItems\n    .filter(({ port, type }) => !!port && !!type)\n    .forEach(li => {\n      if (cardinalityComputations.get(`${li.port}`)) {\n        const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n        cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n      }\n    });\n  return cardVars;\n};\n\nconst cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n  const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});\n  const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);\n  const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);\n\n  originalCardinalityVariables.forEach((value, key) => {\n    const execArray = cardinalityRegexp.exec(key);\n    const portName = execArray?.groups?.['portName'];\n    if (!portName || cardinalityComputations.get(portName)) {\n      if (cardinalityVariables.get(key) === value) {\n        // no need to update cardinality if no changes\n        cardinalityVariables.delete(key);\n      } else if (!cardinalityVariables.has(key)) {\n        // remove last item from port\n        cardinalityVariables.set(key, 0);\n      }\n    }\n  });\n\n  return {\n    ...updated,\n    attributes: upsertAttributes(\n      updated.attributes,\n      [...cardinalityVariables].map(([name, value]) => ({ name, value, cfgStatus: 'Changed' })),\n    ),\n  };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n  return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []): Attribute[] => {\n  const filtered = attributes.filter(({ name }) => names.includes(name));\n  return sortBy(filtered, [({ name }): number => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (originalAttributes: Attribute[], attributesToUpsert: NewAttribute[]): Attribute[] => {\n  return attributesToUpsert.reduce((acc, { name, value }) => {\n    const [origAttr] = getAttributes(acc, [name]);\n    return [\n      ...acc.filter(attr => attr.name !== name),\n      { ...(origAttr ?? { name, type: '' }), cfgStatus: origAttr ? 'Changed' : 'User', value },\n    ];\n  }, originalAttributes);\n};\n\nexport const patchAttributes = (\n  rootLineItem: LineItem,\n  id: string,\n  attrs: NewAttribute[],\n  skipCardinalityCalculation: boolean = false,\n): LineItem => {\n  const lineItem = findLineItem(id, [rootLineItem]);\n\n  if (!lineItem) {\n    return rootLineItem;\n  }\n\n  const attributes = upsertAttributes(lineItem.attributes, attrs);\n  return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n  attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n  port: string,\n  type: string,\n  parentId: string,\n  attributes: NewAttribute[] = [],\n  lineItems: LineItem[] = [],\n): LineItem => {\n  return {\n    id: UUID.UUID(),\n    port,\n    type,\n    actionCode: 'ADD',\n    cfgStatus: 'New',\n    attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n    lineItems,\n    parentId,\n    qty: 1,\n  } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n  const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n  const [net, list] = domainType?.recommendedPrices\n    ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n    .reduce(\n      (acc, rp) => {\n        const [netPrice, listPrice] = acc;\n        return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n      },\n      [0, 0],\n    ) ?? [0, 0];\n\n  return { net, list };\n};\n\nexport const getOriginParent = (lineItems: LineItem[], currentLineItem: LineItem): LineItem | undefined => {\n  let target: LineItem | undefined = currentLineItem;\n  while (target && target.rampInstanceId) {\n    target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);\n  }\n  return target;\n};\n\nexport const assetPredicateFn = (lineItem: LineItem, assetId?: string): boolean => {\n  if (!assetId) {\n    return false;\n  }\n\n  return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;\n};\n\nexport const multiplyLineItems = (lineItem: LineItem, qty: number, split: boolean): LineItem[] => {\n  if (split) {\n    const unifyIds = (lineItem: LineItem): LineItem => ({\n      ...lineItem,\n      id: UUID.UUID(),\n      lineItems: lineItem.lineItems.map(unifyIds),\n    });\n\n    return map(new Array(qty), () => unifyIds(lineItem));\n  } else {\n    return [\n      {\n        ...lineItem,\n        qty: qty,\n      },\n    ];\n  }\n};\n\nexport const isTechnicalAttribute = (name: string): boolean => {\n  return name.startsWith('#') || name.startsWith('$');\n};\n\nexport const filterOutTechnicalAttributes = <T extends { name: string }>(attributes: T[]): T[] => {\n  return attributes.filter(({ name }) => !isTechnicalAttribute(name));\n};\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n  ConfigurationSettings,\n  DEFAULT_ACTION_CODE_LABELS,\n  DEFAULT_CURRENCY_ISO_CODE,\n  DEFAULT_CURRENCY_SYMBOL,\n  DEFAULT_DATE_FORMAT,\n  DEFAULT_DECIMALS_COUNT,\n  DEFAULT_DECIMAL_SEPARATOR,\n  DEFAULT_THOUSANDS_SEPARATOR,\n  Flow,\n  getSupportedDateFormats,\n  parseJsonSafely,\n  RuntimeConfigurationSettings,\n  RuntimeCurrencySettings,\n  ShoppingCartSetting,\n  ShoppingCartSettings,\n  validateDateFormat,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, map, Observable, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable()\nexport class RuntimeSettingsService {\n  private configurationSettings$ = new BehaviorSubject<RuntimeConfigurationSettings>({});\n  private currencySettings$ = new BehaviorSubject<RuntimeCurrencySettings>({\n    iso: DEFAULT_CURRENCY_ISO_CODE,\n    symbol: DEFAULT_CURRENCY_SYMBOL,\n  });\n  private formattingSettings!: FormattingSettings;\n  private shoppingCartSettings$ = new BehaviorSubject<ShoppingCartSetting[]>([]);\n\n  constructor(private configurationSettingsApiService: ConfigurationSettingsApiService) {}\n\n  public create(): Observable<void> {\n    return this.configurationSettingsApiService.fetchSettings().pipe(\n      map(settings => this.parseConfigurationSettings(settings)),\n      tap(configurationSettings => {\n        this.configurationSettings$.next(configurationSettings);\n        this.addShoppingCartSettings(configurationSettings['shopping-cart'] ?? []);\n        this.formattingSettings = this.getFormattingSettings();\n      }),\n      map(() => undefined),\n    );\n  }\n\n  public initCurrency(iso?: string): void {\n    if (iso) {\n      const symbol = this.getCurrencySymbol('en-US', iso);\n      this.currencySettings$.next({ iso, symbol });\n      if (this.formattingSettings) {\n        this.formattingSettings.currencySymbol = symbol;\n      }\n    }\n  }\n\n  public getFormattingSettings(): FormattingSettings {\n    if (this.formattingSettings) {\n      return this.formattingSettings;\n    }\n\n    const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {\n      return { ...acc, [setting.id]: setting.properties };\n    }, {} as ShoppingCartSettings);\n    const currencySettings = this.getCurrencySettings();\n    const dateFormat =\n      (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||\n      DEFAULT_DATE_FORMAT;\n    const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR;\n    const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR;\n    // the number of decimal places can be 0\n    const priceScale = shoppingCartSettings?.PRICE_SCALE;\n    const decimalsCount =\n      priceScale !== null && priceScale !== '' && !isNaN(Number(priceScale)) && Number(priceScale) >= 0\n        ? Number(priceScale)\n        : DEFAULT_DECIMALS_COUNT;\n\n    const actionCodeSettings = shoppingCartSettings?.STATUS_LABEL;\n\n    return {\n      currencySymbol: currencySettings.symbol,\n      dateFormats: getSupportedDateFormats(dateFormat),\n      decimalsCount,\n      decimalSeparator:\n        decimalSeparator !== undefined && ['.', ','].includes(decimalSeparator)\n          ? decimalSeparator\n          : DEFAULT_DECIMAL_SEPARATOR,\n      // thousands separator can be a blank value, so it can also be null\n      thousandsSeparator:\n        thousandsSeparator !== undefined && ['.', ',', '', null].includes(thousandsSeparator)\n          ? thousandsSeparator || ''\n          : DEFAULT_THOUSANDS_SEPARATOR,\n      actionCodeLabels: actionCodeSettings?.length\n        ? actionCodeSettings.reduce(\n            (result, setting) => ({ ...result, [setting.status_label]: setting.custom_label }),\n            {},\n          )\n        : DEFAULT_ACTION_CODE_LABELS,\n    };\n  }\n\n  public getConfigurationSettings(): RuntimeConfigurationSettings {\n    return this.configurationSettings$.value;\n  }\n\n  public getShoppingCartSettings(): ShoppingCartSetting[] {\n    return this.shoppingCartSettings$.value;\n  }\n\n  public getCurrencySettings(): RuntimeCurrencySettings {\n    return this.currencySettings$.value;\n  }\n\n  private parseConfigurationSettings(settings: ConfigurationSettings[]): RuntimeConfigurationSettings {\n    return settings.reduce((acc: RuntimeConfigurationSettings, setting) => {\n      switch (setting.key) {\n        case 'shopping-cart':\n          acc['shopping-cart'] = parseJsonSafely<ShoppingCartSetting[]>(setting.value, []);\n          break;\n        case 'navigation':\n          acc.navigation = parseJsonSafely<Dictionary<boolean>>(setting.value, {});\n          break;\n        case 'flows':\n          acc.flows = parseJsonSafely<Flow[]>(setting.value, []);\n          break;\n        default:\n          acc[setting.key] = setting.value;\n      }\n\n      return acc;\n    }, {});\n  }\n\n  private getCurrencySymbol = (locale: string, currency: string) => {\n    return (0)\n      .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })\n      .replace(/\\d/g, '')\n      .trim();\n  };\n\n  public addShoppingCartSettings(settings: ShoppingCartSetting[]) {\n    // uniqBy removes items with the biggest index\n    const newSettings = uniqBy([...settings, ...this.shoppingCartSettings$.value], 'id');\n    this.shoppingCartSettings$.next(newSettings);\n  }\n}\n","import { LineItem, NewAttribute } from '@veloceapps/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from './line-item.utils';\n\nexport class LineItemWorker {\n  public li: LineItem;\n\n  constructor(src: LineItem) {\n    this.li = { ...src };\n  }\n\n  public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n    return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n  }\n\n  public remove(id: string): LineItemWorker {\n    return new LineItemWorker(removeLineItem(this.li, id));\n  }\n\n  public replace(toReplace: LineItem, skipCardinalityCalculation: boolean = false): LineItemWorker {\n    return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));\n  }\n\n  public patchAttribute(\n    attrs: NewAttribute[],\n    id?: string,\n    skipCardinalityCalculation: boolean = false,\n  ): LineItemWorker {\n    return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));\n  }\n}\n","import { UIDefinition, UIDefinitionMetadata } from '@veloceapps/core';\nimport { omit } from 'lodash';\n\nexport function extractMetadata(uiDefinition: UIDefinition): UIDefinitionMetadata {\n  return omit<UIDefinition, keyof Omit<UIDefinition, keyof UIDefinitionMetadata>>(uiDefinition, [\n    'children',\n    'pages',\n    'components',\n  ]);\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { ConfirmationComponent, ConfirmationConfig, ToastType } from '@veloceapps/components';\nimport {\n  Charge,\n  CompiledPricePlan,\n  ConfigurationContext,\n  ConfigurationMode,\n  ConfigurationRequest,\n  ConfigurationTranslatorUtils,\n  ConfigurePrice,\n  extractErrorDetails,\n  LineItem,\n  NewAttribute,\n  PatchLineItemOptions,\n  RuntimeModel,\n  UIDefinitionProps,\n  VlWindow,\n} from '@veloceapps/core';\nimport { cloneDeep, Dictionary, transform } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BehaviorSubject, Observable, shareReplay, throwError } from 'rxjs';\nimport { catchError, finalize, first, map, switchMap, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { RuntimeSettingsService } from '../../../services/runtime-settings.service';\nimport { RuntimeContext, RuntimeStep } from '../../../types';\nimport { assetPredicateFn } from '../../../utils';\nimport { LineItemWorker } from '../../../utils/line-item.worker';\nimport { getDefaultLineItem, getGuidedSellingConfigurationRequest } from '../helpers';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ConfigurationService {\n  private mode = ConfigurationMode.SEARCH;\n  private configurableRamp: LineItem | undefined;\n\n  private configurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n  private previousConfigurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n  private isLoadingSubj$ = new BehaviorSubject(false);\n\n  public isLoading$ = this.isLoadingSubj$.asObservable();\n  public hasUnsavedChanges = false;\n\n  constructor(\n    private quoteDraftService: QuoteDraftService,\n    private runtimeService: ConfigurationRuntimeService,\n    private contextService: ContextService,\n    private configurationApiService: ConfigurationApiService,\n    private messageService: MessageService,\n    private dialogService: DialogService,\n    private runtimeSettings: RuntimeSettingsService,\n  ) {}\n\n  public reset(): void {\n    this.hasUnsavedChanges = false;\n    this.runtimeService.reset();\n\n    this.configurableRamp = undefined;\n    this.configurationState.next(null);\n    this.previousConfigurationState.next(null);\n  }\n\n  public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n    const source = this.getSnapshot();\n    if (!source) {\n      return throwError(() => new Error(`Source LineItem not found`));\n    }\n\n    const skipCardinalityCalculation =\n      options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';\n\n    this.configurableRamp = new LineItemWorker(source).replace(lineItem, skipCardinalityCalculation).li;\n\n    return this.configure().pipe(\n      catchError(error => {\n        console.error(error);\n\n        if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n          this.messageService.add({ severity: 'error', summary: error });\n        }\n\n        // bounce back if configuration call has failed\n        const prevState = this.configurationState.value;\n        this.configurationState.next(prevState ? { ...prevState } : null);\n\n        return throwError(() => error);\n      }),\n      tap(() => {\n        if (!this.hasUnsavedChanges) {\n          this.hasUnsavedChanges = true;\n        }\n      }),\n    );\n  }\n\n  public patch(lineItem: LineItem, options?: PatchLineItemOptions): void {\n    this.patch$(lineItem, options).subscribe();\n  }\n\n  public setConfigurableRamp(lineItem: LineItem): void {\n    this.configurableRamp = lineItem;\n  }\n\n  public get(): Observable<LineItem | undefined> {\n    return this.configurationState.pipe(\n      map(state => state?.lineItem),\n      shareReplay(),\n    );\n  }\n\n  public getSnapshot(): LineItem | undefined {\n    return this.configurationState.value?.lineItem ? { ...this.configurationState.value?.lineItem } : undefined;\n  }\n\n  public getRuntimeModel(): RuntimeModel {\n    const runtimeModel = this.runtimeService.runtimeModel;\n    if (!runtimeModel) {\n      throw new Error('Runtime model not initialized');\n    }\n\n    return runtimeModel;\n  }\n\n  public getRuntimeContext(): RuntimeContext {\n    const runtimeContext = this.runtimeService.runtimeContext;\n    if (!runtimeContext) {\n      throw new Error('Runtime context not initialized');\n    }\n\n    return runtimeContext;\n  }\n\n  public get state$(): Observable<ConfigurePrice | null> {\n    return this.configurationState.asObservable();\n  }\n\n  public get stateSnapshot(): ConfigurePrice | null {\n    return this.configurationState.value;\n  }\n\n  public get previousStateSnapshot(): ConfigurePrice | null {\n    return this.previousConfigurationState.value;\n  }\n\n  public get contextSnapshot(): ConfigurationContext {\n    return this.contextService.resolve();\n  }\n\n  public get context$(): Observable<ConfigurationContext> {\n    return this.contextService.resolve$();\n  }\n\n  public get charges$(): Observable<Dictionary<Charge>> {\n    return this.configurationState.pipe(map(state => state?.charges ?? {}));\n  }\n\n  public get chargesSnapshot(): Dictionary<Charge> {\n    return this.configurationState.value?.charges ?? {};\n  }\n\n  public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n    return this.configurationState.pipe(map(state => state?.pricePlans ?? {}));\n  }\n\n  public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n    return this.configurationState.value?.pricePlans ?? {};\n  }\n\n  public get procedureContext$(): Observable<Dictionary<unknown>> {\n    return this.configurationState.pipe(map(state => state?.procedureContext ?? {}));\n  }\n\n  public get procedureContextSnapshot(): Dictionary<unknown> {\n    return this.configurationState.value?.procedureContext ?? {};\n  }\n\n  public configure(): Observable<LineItem> {\n    return this.configureRequest$(this.generateRequest());\n  }\n\n  public configureRequest$(configurationRequest: ConfigurationRequest): Observable<LineItem> {\n    const runtimeContext = this.getRuntimeContext();\n    const runtimeModel = this.getRuntimeModel();\n    const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n    const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;\n    const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;\n    const customPriceApi = this.runtimeSettings.getConfigurationSettings()['CUSTOM_PRICE_API'];\n\n    this.isLoadingSubj$.next(true);\n\n    const configure$ =\n      pricingEnabled && customPriceApi\n        ? this.configurationApiService.customConfigurePrice({ url: customPriceApi, configurationRequest, runtimeModel })\n        : this.configurationApiService.configureLineItem({\n            configurationRequest,\n            runtimeModel,\n            pricingEnabled,\n          });\n\n    return configure$.pipe(\n      tap(result => {\n        this.contextService.update(result.context);\n        this.configurationState.next(result);\n        this.previousConfigurationState.next(cloneDeep(result));\n\n        if (result.deletedLineItems?.length) {\n          this.showInactiveProductsConfirmation();\n        }\n\n        this.configurableRamp = result.lineItem;\n      }),\n      map(({ lineItem }) => lineItem),\n      catchError(error =>\n        throwError(() => {\n          const resetState = this.previousConfigurationState.value;\n          if (resetState) {\n            this.previousConfigurationState.next(cloneDeep(resetState));\n            this.configurationState.next(resetState);\n          }\n          if (error.error) {\n            return extractErrorDetails(error.error).join('. ');\n          }\n          return error.message || JSON.stringify(error);\n        }),\n      ),\n      finalize(() => this.isLoadingSubj$.next(false)),\n    );\n  }\n\n  public configureExternal$(props: ExternalConfigurationProps): Observable<LineItem> {\n    return this.runtimeService\n      .init({ productId: props.productId, defaultQty: props.qty, attributesMap: props.attributesMap })\n      .pipe(\n        switchMap(() => this.configure()),\n        first(),\n        catchError(error => {\n          this.messageService.add({ severity: ToastType.error, summary: error });\n          throw error;\n        }),\n        finalize(() => this.reset()),\n      );\n  }\n\n  public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<ConfigurePrice> {\n    return this.configurationApiService\n      .configureLineItem({\n        configurationRequest: getGuidedSellingConfigurationRequest(data, this.contextService.resolve()),\n      })\n      .pipe(\n        catchError(error => {\n          if (error instanceof HttpErrorResponse) {\n            this.messageService.add({ severity: ToastType.error, summary: error.error.message || error.error });\n          }\n          throw error;\n        }),\n      );\n  }\n\n  public generateRequest(lightMode: boolean = true): ConfigurationRequest {\n    const lineItem = this.generateLineItem();\n\n    let request: ConfigurationRequest = {\n      lineItem,\n      mode: this.mode,\n      step: !this.configurationState.value?.lineItem ? RuntimeStep.START : RuntimeStep.UPDATE,\n      attributeDomainMode: 'ALL',\n      context: this.contextService.resolve(),\n      lineItems: this.quoteDraftService.quoteDraft?.currentState || [],\n      asset: this.getAsset(),\n    };\n\n    if (lightMode) {\n      request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n    }\n\n    return request;\n  }\n\n  public generateLineItem(): LineItem {\n    const runtimeContext = this.getRuntimeContext();\n    const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n    let lineItem = this.configurableRamp;\n    if (!lineItem) {\n      const { initializationProps } = this.runtimeService ?? {};\n\n      lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);\n\n      // Set default attributes\n      if (initializationProps?.attributesMap) {\n        const attributes = transform(\n          initializationProps?.attributesMap,\n          (acc: NewAttribute[], value, name) => acc.push({ name, value }),\n          [],\n        );\n\n        lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;\n      }\n    }\n\n    return lineItem;\n  }\n\n  public getAsset(): LineItem | undefined {\n    const lineItem = this.configurableRamp;\n    if (!lineItem) {\n      return;\n    }\n\n    const assetId = lineItem.assetId ?? lineItem.openOrderLineItemId;\n    return this.quoteDraftService.assetsState?.initialState.find(li => assetPredicateFn(li, assetId));\n  }\n\n  private getUIDefinitionProperties(): UIDefinitionProps {\n    return {\n      ...(this.getRuntimeContext().uiDefinitionContainer?.source.properties ?? {}),\n      ...(this.runtimeService.uiDefinitionProperties ?? {}),\n    };\n  }\n\n  private showInactiveProductsConfirmation(): void {\n    const confirmationConfig: ConfirmationConfig = {\n      title: ' ',\n      description: 'This quote contains inactive products. Do you want to remove them?',\n      primaryButtonLabel: 'Remove products',\n      secondaryButtonLabel: 'Back to Quote',\n    };\n\n    this.dialogService\n      .open(ConfirmationComponent, {\n        dismissableMask: false,\n        closeOnEscape: false,\n        closable: false,\n        showHeader: true,\n        header: `Inactive Products in Quote`,\n        width: '440px',\n        data: { confirmationConfig },\n      })\n      .onClose.subscribe(result => {\n        if (!result) {\n          const context = this.contextService.resolve();\n          window['VELO_BACK_FN'].apply(null, [context.headerId]);\n        }\n      });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Charge, ChargeGroupUtils, LineItem } from '@veloceapps/core';\nimport { Dictionary, flatten } from 'lodash';\nimport moment from 'moment';\nimport { LineItemWorker } from '../../../utils';\nimport { FlowUpdateParams } from '../types/update.types';\n\n@Injectable()\nexport class FlowUpdateService {\n  public update(rootLineItems: LineItem[], updates: FlowUpdateParams[], charges?: Dictionary<Charge>): void {\n    let remainingUpdates = [...updates];\n    let currentLevel = rootLineItems;\n\n    while (currentLevel.length && remainingUpdates.length) {\n      currentLevel.forEach(li => {\n        const unhandledUpdates: FlowUpdateParams[] = [];\n\n        remainingUpdates.forEach(update => {\n          let updated = false;\n\n          switch (update.dataType) {\n            case 'LINEITEM':\n              updated = this.applyLineItemUpdate(li, update, charges);\n              break;\n            case 'CHARGE':\n              updated = this.applyChargeUpdate(li, update);\n              break;\n            case 'GROUP_CHARGE':\n              updated = this.applyChargeGroupUpdate(li, update);\n              break;\n            default:\n              // Unknown dataType. Do not try to handle it anymore\n              updated = true;\n          }\n\n          if (!updated) {\n            unhandledUpdates.push(update);\n          }\n        });\n\n        remainingUpdates = unhandledUpdates;\n      });\n\n      currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n    }\n  }\n\n  public delete(lineItems: LineItem[], id: string): LineItem[] {\n    const idsToRemove: string[] = [id];\n    const topLevelLineItem = lineItems.find(li => li.id === id);\n\n    if (topLevelLineItem) {\n      // find term-related line items (which are only top level)\n      // expired term line items won't be deleted\n      let foundTermLineItem: LineItem | undefined = topLevelLineItem;\n\n      while (foundTermLineItem) {\n        foundTermLineItem = lineItems.find(li => foundTermLineItem && li.rampInstanceId === foundTermLineItem.id);\n        if (foundTermLineItem) {\n          idsToRemove.push(foundTermLineItem.id);\n        }\n      }\n    }\n\n    const filtered = lineItems.filter(lineItem => !idsToRemove.includes(lineItem.id));\n    return filtered.map(lineItem => new LineItemWorker(lineItem).remove(id).li);\n  }\n\n  private applyLineItemUpdate(lineItem: LineItem, update: FlowUpdateParams, charges?: Dictionary<Charge>): boolean {\n    if (lineItem.id !== update.id) {\n      return false;\n    }\n\n    switch (update.attributeType) {\n      case 'QTY':\n        lineItem.qty = update.newValue;\n        break;\n      case 'EFFECTIVE_START_DATE':\n        lineItem.properties['StartDate'] = moment(update.newValue).format('YYYY-MM-DD');\n        break;\n      case 'END_DATE':\n        lineItem.properties['EndDate'] = moment(update.newValue).format('YYYY-MM-DD');\n        break;\n      case 'PRICE_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.priceAdjustment = update.newValue;\n          }\n        }\n        break;\n      case 'LIST_PRICE_ADJUSTMENT':\n      case 'MARGIN_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.listPriceAdjustment = update.newValue;\n          }\n        }\n        break;\n      case 'COST_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.costAdjustment = update.newValue;\n          }\n        }\n        break;\n      default:\n        throw new Error(`Not suppored AttributeType for LineItem update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n\n  private applyChargeUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n    const foundCharge = lineItem.chargeItems.find(({ id }) => id === update.id);\n    if (!foundCharge) {\n      return false;\n    }\n\n    if (update.attributeType === 'PRICE_ADJUSTMENT') {\n      foundCharge.priceAdjustment = update.newValue;\n    } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n      foundCharge.listPriceAdjustment = update.newValue;\n    } else {\n      throw new Error(`Not suppored AttributeType for Charge Item update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n\n  private applyChargeGroupUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n    const foundChargeGroup = ChargeGroupUtils.findChargeGroupById(update.id, lineItem);\n    if (!foundChargeGroup) {\n      return false;\n    }\n\n    if (update.attributeType === 'PRICE_ADJUSTMENT') {\n      foundChargeGroup.priceAdjustment = update.newValue;\n    } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n      foundChargeGroup.listPriceAdjustment = update.newValue;\n    } else {\n      throw new Error(`Not suppored AttributeType for Charge Group Item update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { cloneDeep, Dictionary } from 'lodash';\nimport { catchError, map, noop, Observable, of, shareReplay, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { multiplyLineItems } from '../../../utils/line-item.utils';\nimport { ExternalConfigurationProps } from '../../configuration';\nimport { ConfigurationService } from '../../configuration/services/configuration.service';\nimport { FlowUpdateParams } from '../types/update.types';\nimport { FlowUpdateService } from './flow-update.service';\nimport { FlowInfoService } from '../../../services';\n\n@Injectable()\nexport class FlowConfigurationService {\n  /**\n   * An event being fired when QuoteDraft was updated\n   */\n  public updated$: Observable<void>;\n\n  private updatedSubj$ = new Subject<void>();\n\n  constructor(\n    private proceduresApiService: ProceduresApiService,\n    private contextService: ContextService,\n    private quoteDraftService: QuoteDraftService,\n    private updateService: FlowUpdateService,\n    private configurationService: ConfigurationService,\n    private flowInfoService: FlowInfoService,\n  ) {\n    this.updated$ = this.updatedSubj$.asObservable();\n  }\n\n  public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n    return this.extendedApply$(quoteDraft).pipe(\n      tap(result => {\n        // sort the result current state based on the quote draft initial state\n        const initialStateIds = quoteDraft.initialState.map(lineItem => lineItem.integrationId);\n        result.currentState = result.currentState\n          .slice()\n          .sort((a, b) => initialStateIds.indexOf(a.integrationId) - initialStateIds.indexOf(b.integrationId));\n        this.quoteDraftService.updateQuoteDraft(result);\n      }),\n      map(noop),\n    );\n  }\n\n  public calculate(quoteDraft: QuoteDraft): void {\n    this.calculate$(quoteDraft).subscribe();\n  }\n\n  public update$(updates: FlowUpdateParams[]): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return of([]).pipe(\n      map(() => {\n        const updatedState = cloneDeep(quoteDraft.currentState);\n        this.updateService.update(updatedState, updates, quoteDraft.charges);\n        return updatedState;\n      }),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public update(updates: FlowUpdateParams[]): void {\n    this.update$(updates).subscribe();\n  }\n\n  public revert$(lineItemId: string): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n    const initialCurrentState = this.quoteDraftService.getInitialCurrentState();\n    const currentState = this.quoteDraftService.currentState;\n\n    const currentLineItemIndex = currentState.findIndex(({ id }) => id === lineItemId);\n    const currentLineItem = currentState[currentLineItemIndex];\n\n    const initialLineItem = initialCurrentState.find(\n      ({ integrationId }) => integrationId === currentLineItem?.integrationId,\n    );\n\n    if (!quoteDraft || !currentLineItem || !initialLineItem) {\n      return of(null);\n    }\n\n    const updatedState = cloneDeep(currentState);\n    updatedState.splice(currentLineItemIndex, 1, initialLineItem);\n\n    return of([]).pipe(\n      tap(() => {\n        this.quoteDraftService.setCurrentLineItemState(updatedState);\n      }),\n      switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public revert(lineItemId: string): void {\n    this.revert$(lineItemId).subscribe();\n  }\n\n  public delete$(ids: string[]): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n    const currentState = this.quoteDraftService.currentState;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return of([]).pipe(\n      map(() => ids.reduce((result, id) => this.updateService.delete(result, id), currentState)),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public delete(ids: string[]): void {\n    this.delete$(ids).subscribe();\n  }\n\n  public addTerm$(term: LineItem): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    const updatedState = [...quoteDraft.currentState, term];\n\n    return of([]).pipe(\n      switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public addToCart$(props: ExternalConfigurationProps): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return this.configurationService.configureExternal$(props).pipe(\n      map(lineItem => {\n        const model = this.configurationService.getRuntimeModel();\n        const split = model?.types.find(type => type.name === lineItem.type)?.split ?? false;\n        const lineItems = multiplyLineItems(lineItem, props.qty ?? 1, split);\n\n        return [...quoteDraft.currentState, ...lineItems];\n      }),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public get(): Observable<LineItem[]> {\n    return this.quoteDraftService.quoteDraft$.pipe(\n      map(() => this.quoteDraftService.currentState),\n      shareReplay(),\n    );\n  }\n\n  public getSnapshot(): LineItem[] {\n    return this.quoteDraftService?.currentState.slice() ?? [];\n  }\n\n  public get charges$(): Observable<Dictionary<Charge>> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ charges }) => charges));\n  }\n\n  public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ pricePlans }) => pricePlans));\n  }\n\n  public get activeMetrics$(): Observable<MetricRule[]> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ activeMetrics }) => activeMetrics));\n  }\n\n  public get chargesSnapshot(): Dictionary<Charge> {\n    return this.quoteDraftService.quoteDraft?.charges ?? {};\n  }\n\n  public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n    return this.quoteDraftService.quoteDraft?.pricePlans ?? {};\n  }\n\n  public get activeMetricsSnapshot(): MetricRule[] {\n    return this.quoteDraftService.quoteDraft?.activeMetrics ?? [];\n  }\n\n  public get contextSnapshot(): ConfigurationContext {\n    return this.contextService.resolve();\n  }\n\n  public get context$(): Observable<ConfigurationContext> {\n    return this.contextService.resolve$();\n  }\n\n  private handleErrorAndBounceBack() {\n    return <T>(source$: Observable<T>): Observable<T> => {\n      return source$.pipe(\n        catchError(error => {\n          console.error(error);\n\n          // bounce back if configuration call has failed\n          const quoteDraft = this.quoteDraftService.quoteDraft;\n          if (quoteDraft) {\n            this.quoteDraftService.updateQuoteDraft(quoteDraft);\n            this.updatedSubj$.next();\n          }\n\n          return throwError(() => error);\n        }),\n      );\n    };\n  }\n\n  private extendedApply$(quoteDraft: QuoteDraft): Observable<QuoteDraft> {\n    const request = { ...quoteDraft };\n    const procedureName = this.flowInfoService.flow?.properties.procedureName;\n    if (procedureName) {\n      request.procedureName = procedureName;\n    }\n    return this.proceduresApiService.apply$(request);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n  imports: [ApiModule],\n  providers: [FlowConfigurationService, FlowUpdateService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { BehaviorSubject, map, noop, Observable, of, switchMap, tap } from 'rxjs';\nimport { generateConfigurationLineItem, NewConfigurationProps } from '../modules/configuration';\nimport { FlowConfigurationService } from '../modules/flow-configuration';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n  private configurationStateId$ = new BehaviorSubject<string | null>(null);\n\n  constructor(\n    private flowInfoService: FlowInfoService,\n    private flowConfigurationService: FlowConfigurationService,\n    private flowStateApiService: FlowStateApiService,\n    private flowStateService: FlowStateService,\n  ) {}\n\n  public get configurationStateId(): string | null {\n    return this.configurationStateId$.value;\n  }\n\n  public addToCart$(props: NewConfigurationProps): Observable<void> {\n    let request$;\n    const stateful = this.flowInfoService.flow?.properties.stateful;\n    if (stateful) {\n      const stateId = this.flowStateService.stateId;\n      if (!stateId) {\n        request$ = of();\n      } else {\n        const lineItem = generateConfigurationLineItem(props, props.qty);\n        request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(\n          tap(r => this.configurationStateId$.next(r.stateId)),\n          switchMap(() => {\n            if (!this.configurationStateId) {\n              return of();\n            }\n            return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(\n              tap(() => this.configurationStateId$.next(null)),\n              map(noop),\n            );\n          }),\n        );\n      }\n    } else {\n      request$ = this.flowConfigurationService.addToCart$(props).pipe(map(noop));\n    }\n\n    return request$.pipe(\n      switchMap(() => this.flowStateService.executeRequest$({}, true)),\n      map(noop),\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, map, Observable, Subject } from 'rxjs';\nimport { IntegrationAction, IntegrationStateModel } from '../types/integration.types';\n\n@Injectable()\nexport class IntegrationState<S = IntegrationStateModel> {\n  private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n  private readonly action$ = new Subject<IntegrationAction>();\n\n  public get state$(): Observable<S> {\n    return this.stateSubj$.asObservable();\n  }\n\n  public get state(): S {\n    return this.stateSubj$.getValue();\n  }\n\n  public patchState(update: Partial<S>): void {\n    this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n  }\n\n  public dispatch(action: IntegrationAction): void {\n    this.action$.next(action);\n  }\n\n  public listen$<P = any>(actionType: string): Observable<P> {\n    return this.action$.pipe(\n      filter(action => action.type === actionType),\n      map(action => action.payload as P),\n    );\n  }\n\n  public listenAll$<T extends IntegrationAction>(): Observable<T> {\n    return this.action$.asObservable() as Observable<T>;\n  }\n\n  public clear(): void {\n    this.stateSubj$.next({} as S);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ProductApiService } from '@veloceapps/api';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, catchError, distinctUntilChanged, map, Observable, of, tap } from 'rxjs';\n\n@Injectable()\nexport class ProductImagesService {\n  private imagesMap$ = new BehaviorSubject<Dictionary<string>>({});\n\n  constructor(private productApiService: ProductApiService) {}\n\n  public getImageUrl$(productId: string): Observable<string | null> {\n    if (this.imagesMap$.value[productId] == null) {\n      this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: '' });\n      this.fetchProductImage(productId);\n    }\n\n    return this.imagesMap$.pipe(\n      map(imagesMap => imagesMap[productId] ?? null),\n      distinctUntilChanged(),\n    );\n  }\n\n  private fetchProductImage(productId: string): void {\n    this.productApiService\n      .fetchImage$(productId)\n      .pipe(\n        map(file => URL.createObjectURL(file)),\n        catchError(() => of('')),\n        tap(url => this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: url })),\n      )\n      .subscribe();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { isNotLegacyUIDefinition, RuntimeData, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\n\n@Injectable()\nexport class RuntimeContextService {\n  constructor(private configurationApiService: ConfigurationApiService) {}\n\n  public getRuntimeContext(productId: string, offeringId?: string): Observable<RuntimeContext> {\n    return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(\n      map(runtimeData => {\n        const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);\n        const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n        const { productName, properties } =\n          Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};\n\n        const uiDefinitionProperties = uiDefinitionContainer?.source.properties;\n\n        return {\n          modelId: runtimeData.modelId,\n          uiDefinitionContainer: uiDefinitionContainer,\n          runtimeModel: runtimeModel,\n          runtimeMode: RuntimeMode.PROD,\n          productId: productId,\n          productType: properties?.['displayName'] || productName,\n          offeringId: offeringId,\n          properties: {\n            PricingEnabled: uiDefinitionProperties?.pricingEnabled ? 'true' : 'false',\n            PriceListId: uiDefinitionProperties?.priceList,\n          },\n        } satisfies RuntimeContext;\n      }),\n    );\n  }\n\n  private getUIDefinitionContainer(runtimeData: RuntimeData): UIDefinitionContainer | undefined {\n    const containers = runtimeData.uiDefinitions.filter(container => isNotLegacyUIDefinition(container.source));\n    return containers.find(container => container.source.primary) ?? containers[0];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { RuntimeModel, SalesforceIdUtils, UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { combineLatest, Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\nimport { RuntimeInitializationProps } from '../types/configuration-runtime.types';\nimport { RuntimeContextService } from './runtime-context.service';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n  private _runtimeContext?: RuntimeContext;\n  private _isInitialized = false;\n\n  public initializationProps?: RuntimeInitializationProps;\n  public uiDefinitionProperties: UIDefinitionProps = {};\n\n  constructor(\n    private apiService: ConfigurationApiService,\n    private contextService: ContextService,\n    private runtimeContextService: RuntimeContextService,\n  ) {}\n\n  public reset(): void {\n    this._isInitialized = false;\n    this._runtimeContext = undefined;\n    this.initializationProps = undefined;\n    this.uiDefinitionProperties = {};\n  }\n\n  public initTestMode(uiDefinitionContainer: UIDefinitionContainer): Observable<RuntimeContext> {\n    this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n    const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};\n\n    return combineLatest([\n      this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),\n      this.contextService.initTestMode(),\n    ]).pipe(\n      first(),\n      map(([runtimeData, context]) => {\n        this.contextService.update({\n          properties: {\n            ...this.runtimeContext?.properties,\n            ...context.properties,\n            ModelId: uiDefinitionContainer.modelId,\n            PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',\n            PriceListId: this.uiDefinitionProperties.priceList,\n            offeringId: this.uiDefinitionProperties.offeringId,\n            ...uiDefinitionExternals,\n          },\n        });\n\n        this._runtimeContext = {\n          modelId: uiDefinitionContainer.modelId,\n          runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),\n          runtimeMode: RuntimeMode.TEST,\n          uiDefinitionContainer,\n        };\n\n        return this._runtimeContext;\n      }),\n      tap(() => (this._isInitialized = true)),\n    );\n  }\n\n  public init(props: RuntimeInitializationProps): Observable<RuntimeContext> {\n    this.initializationProps = props;\n    const context = this.contextService.resolve();\n\n    return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(\n      tap(runtimeContext => {\n        this.uiDefinitionProperties = runtimeContext.uiDefinitionContainer?.source.properties ?? {};\n        const { PriceListId } = context.properties ?? {};\n\n        const mergeContext: RuntimeContext = {\n          ...runtimeContext,\n          properties: {\n            ...runtimeContext.properties,\n            ...context.properties,\n            PricingEnabled: PriceListId ? 'true' : 'false',\n          },\n        };\n\n        this.id15to18('AccountId', mergeContext.properties);\n        this._runtimeContext = mergeContext;\n\n        if (context.properties && this._runtimeContext.properties?.StartDate) {\n          this.contextService.update({\n            properties: {\n              ...this._runtimeContext.properties,\n              ...context.properties,\n            },\n          });\n        }\n\n        return this._runtimeContext;\n      }),\n      tap(() => (this._isInitialized = true)),\n    );\n  }\n\n  public overrideUIDefinition(uiDefinitionContainer: UIDefinitionContainer): void {\n    if (!this._runtimeContext) {\n      return;\n    }\n\n    this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;\n    this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n  }\n\n  private id15to18(propertyName: string, source?: Dictionary<any>): void {\n    if (!source) {\n      return;\n    }\n\n    const value = source[propertyName];\n\n    if (typeof value === 'string' && value.length === 15) {\n      source[propertyName] = SalesforceIdUtils.generateId18FromId15(value);\n    }\n  }\n\n  public get isInitialized(): boolean {\n    return this._isInitialized;\n  }\n\n  public get runtimeModel(): RuntimeModel | undefined {\n    return this.runtimeContext?.runtimeModel;\n  }\n\n  public get runtimeContext(): RuntimeContext | undefined {\n    return this._runtimeContext;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService, QuoteApiService, SaveQuoteResponse } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n  ConfigurationProcessor,\n  ConfigurationProcessorScriptFn,\n  ConfigurationRequest,\n  ConfigurationTranslatorUtils,\n  ConfigurePrice,\n  EntityUtil,\n  FlowStateExecutableDTO,\n  FlowStateExecutionRequest,\n  FlowStateExecutionRequestDTO,\n  FlowStateExecutionResult,\n  FlowStateSelectorResponse,\n  isDefined,\n  LineItem,\n  UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary } from 'lodash';\nimport {\n  BehaviorSubject,\n  buffer,\n  catchError,\n  combineLatest,\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  finalize,\n  map,\n  Observable,\n  of,\n  share,\n  shareReplay,\n  Subject,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throwError,\n} from 'rxjs';\nimport { FlowInfoService, FlowStateService, QuoteDraftService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\nimport { FlowConfigurationService } from '../../flow-configuration';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\ntype StateSubscription = {\n  request: FlowStateExecutionRequestDTO;\n  data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class ConfigurationStateService {\n  public isInitialized$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public canceledConfiguration$: Subject<void> = new Subject<void>();\n\n  private readonly NOT_INITIALIZED = Symbol();\n  private readonly EXECUTION_BUFFER_TIME = 100;\n\n  private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n  private stateId: string | null = null;\n  private ownerId = '';\n  private subscriptions: Record<string, StateSubscription> = {};\n  private configurationStore: Record<string, unknown> = {};\n\n  private executionInProgress$ = new BehaviorSubject(false);\n  private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n  private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n  private statelessExecutionRequest$: Observable<FlowStateExecutionResult> | null = null;\n\n  constructor(\n    private configurationRuntimeService: ConfigurationRuntimeService,\n    private configurationService: ConfigurationService,\n    private quoteDraftService: QuoteDraftService,\n    private toastService: ToastService,\n    private flowStateService: FlowStateService,\n    private flowInfoService: FlowInfoService,\n    private flowConfigurationService: FlowConfigurationService,\n    private flowStateApiService: FlowStateApiService,\n    private quoteApiService: QuoteApiService,\n  ) {\n    this.statefulExecutionRequest$ = this.initBufferedRequest$();\n  }\n\n  public get isExecutionInProgress$() {\n    return this.executionInProgress$.asObservable();\n  }\n\n  public init$(): Observable<void> {\n    let request$;\n    if (this.flowStateService.stateId && this.isStatefulConfiguration) {\n      request$ = this.initStateful$();\n    } else {\n      request$ = this.initStateless$();\n    }\n\n    return request$.pipe(\n      finalize(() => {\n        this.isInitialized$.next(true);\n        this.canceledConfiguration$ = new Subject();\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n    this.subscriptions = {};\n\n    if (this.stateId) {\n      this.cancelConfiguration();\n    }\n\n    this.configurationStore = {};\n    this.executedFunctions = {};\n    this.configurationService.reset();\n  }\n\n  public execute$(exec: FlowStateExecutionRequest): Observable<FlowStateExecutionResult['selectors']> {\n    const request = this.execToRequest(exec);\n\n    return this.executeRequest$(request).pipe(\n      map(result => {\n        // Keep only requested results\n        const actualSelectors = Object.entries(result.selectors).reduce(\n          (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n            if (exec.selectors?.[requestId]) {\n              trunk[requestId] = result;\n            }\n            return trunk;\n          },\n          {},\n        );\n\n        return actualSelectors;\n      }),\n    );\n  }\n\n  public dispatch$(actionName: string, inputData: unknown = {}): Observable<FlowStateExecutionResult> {\n    const exec: FlowStateExecutionRequest = {\n      actions: [{ name: actionName, inputData }],\n    };\n    const request = this.execToRequest(exec);\n\n    const executionRequest$ = this.executeRequest$(request);\n\n    if (this.isStatefulConfiguration) {\n      return executionRequest$;\n    }\n\n    // prevent parallel configuration requests in stateless mode\n    if (!this.statelessExecutionRequest$) {\n      this.statelessExecutionRequest$ = executionRequest$.pipe(\n        shareReplay(),\n        take(1),\n        finalize(() => (this.statelessExecutionRequest$ = null)),\n      );\n    }\n    return this.statelessExecutionRequest$;\n  }\n\n  public select$<Response = unknown>(\n    selectorName: string,\n    inputData: unknown = {},\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = UUID.UUID();\n    const request = this.execToRequest({\n      selectors: {\n        [requestId]: {\n          name: selectorName,\n          inputData,\n        },\n      },\n    });\n\n    return this.executeRequest$(request).pipe(\n      map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n    );\n  }\n\n  public subscribe$<Response = unknown>(\n    selectorName: string,\n    inputData: unknown = {},\n    options?: FlowStateSubscriptionOptions,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = UUID.UUID();\n\n    let subscription = this.subscriptions[requestId];\n    if (!subscription) {\n      const request = this.execToRequest({\n        selectors: {\n          [requestId]: {\n            name: selectorName,\n            inputData,\n          },\n        },\n      });\n\n      subscription = {\n        request,\n        data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n      };\n      this.subscriptions[requestId] = subscription;\n\n      if (!options?.cold) {\n        this.executeRequest$(request).subscribe();\n      }\n    }\n\n    return subscription.data$.pipe(\n      filter(data => data != this.NOT_INITIALIZED),\n      map(data => data as FlowStateSelectorResponse<Response>),\n      distinctUntilChanged(),\n      finalize(() => {\n        if (!this.subscriptions[requestId]?.data$.observed) {\n          delete this.subscriptions[requestId];\n        }\n      }),\n      takeUntil(this.canceledConfiguration$),\n    );\n  }\n\n  public saveConfiguration(flow?: boolean): Observable<SaveQuoteResponse>;\n  /**\n   * @deprecated Will be removed in @veloceapps/sdk@9\n   */\n  public saveConfiguration(quoteId?: string, flow?: boolean): Observable<SaveQuoteResponse>;\n\n  public saveConfiguration(first?: string | boolean, second?: boolean): Observable<SaveQuoteResponse> {\n    const flow = typeof first === 'boolean' ? first : second;\n    if (this.isStatefulConfiguration) {\n      return this.flowStateApiService\n        .saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '')\n        .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))));\n    } else {\n      if (!flow) {\n        const quoteDraft = this.quoteDraftService.quoteDraft;\n        if (!quoteDraft) {\n          return of({ quoteId: '' });\n        }\n\n        const rootLineItem = this.configurationService.getSnapshot();\n        const asset = this.configurationService.getAsset();\n        const currentState = rootLineItem ? [rootLineItem] : [];\n        const initialState = asset ? [asset] : [];\n\n        return this.quoteApiService.upsertQuote({ ...quoteDraft, currentState, initialState });\n      } else {\n        const quoteDraft = this.quoteDraftService.quoteDraft;\n        const lineItem = this.configurationService.getSnapshot();\n\n        if (!quoteDraft || !lineItem) {\n          return of({ quoteId: '' });\n        }\n\n        const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);\n\n        let currentState: LineItem[];\n        if (isNewLineItem) {\n          currentState = [...quoteDraft.currentState, lineItem];\n        } else {\n          currentState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n        }\n\n        const asset = this.configurationService.getAsset();\n        const initialState = [...(this.quoteDraftService.quoteDraft?.initialState ?? [])];\n        if (asset) {\n          if (!initialState.some(li => li.id === asset.id)) {\n            initialState.push(asset);\n          }\n        }\n\n        return this.flowConfigurationService\n          .calculate$({ ...quoteDraft, currentState, initialState })\n          .pipe(map(() => ({ quoteId: '' })));\n      }\n    }\n  }\n\n  public cancelConfiguration(): Observable<void> {\n    if (!this.isInitialized$.value) {\n      return of(undefined);\n    }\n\n    this.canceledConfiguration$.next();\n    this.canceledConfiguration$.complete();\n    this.subscriptions = {};\n\n    this.isInitialized$.next(false);\n    if (!this.isInitialized$.value || !this.isStatefulConfiguration) {\n      return of(undefined);\n    }\n    return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');\n  }\n\n  private get isStatefulConfiguration(): boolean {\n    return this.flowInfoService.flow?.properties.stateful ?? false;\n  }\n\n  private initStateful$(): Observable<void> {\n    this.ownerId = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer?.id ?? '';\n    const lineItemId = this.configurationRuntimeService.runtimeContext?.properties?.lineItemId;\n    if (!this.flowStateService.stateId) {\n      return of(undefined);\n    }\n\n    const container = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer;\n\n    const lineItem = this.configurationService.generateLineItem();\n\n    let request$: Observable<FlowStateExecutionResult>;\n\n    if (!lineItemId) {\n      request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n        lineItem,\n        actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n        selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n      });\n    } else {\n      request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {\n        lineItemId,\n        actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n        selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n      });\n    }\n\n    return request$.pipe(\n      map(r => {\n        this.stateId = r.stateId;\n        return undefined;\n      }),\n    );\n  }\n\n  private initStateless$(): Observable<void> {\n    return this.configurationService.configure().pipe(map(() => undefined));\n  }\n\n  private execToRequest(exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n    return {\n      actions: exec.actions?.map(action => ({\n        apiName: action.name,\n        ownerId: this.ownerId,\n        inputData: action.inputData ?? {},\n      })),\n      selectors:\n        exec.selectors &&\n        Object.entries(exec.selectors).reduce(\n          (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n            ...trunk,\n            [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: selector.inputData ?? {} },\n          }),\n          {},\n        ),\n    };\n  }\n\n  private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n    Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n      if (!selectorResult.success) {\n        this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n      }\n\n      const subscription$ = this.subscriptions[requestId]?.data$;\n      if (subscription$) {\n        subscription$.next(selectorResult);\n      }\n    });\n  }\n\n  private executeRequest$(\n    req: FlowStateExecutionRequestDTO,\n    forceSubscriptions?: boolean,\n  ): Observable<FlowStateExecutionResult> {\n    const fullRequest = cloneDeep(req);\n    if (fullRequest.actions?.length || forceSubscriptions) {\n      for (const subscription of Object.values(this.subscriptions)) {\n        fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n      }\n    }\n\n    let execution$;\n\n    if (this.isStatefulConfiguration) {\n      execution$ = this.executeStateful$(fullRequest);\n    } else {\n      execution$ = this.executeStateless$(fullRequest);\n    }\n\n    return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n  }\n\n  private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    this.executionInProgress$.next(true);\n\n    return of(undefined).pipe(\n      switchMap(() => {\n        // Apply actions and execute configuration/price call\n        // No need to run configuration if no actions in the request\n        if (!request.actions?.length) {\n          return of(undefined);\n        }\n\n        let configurationRequest = this.configurationService.generateRequest(false);\n        request.actions.forEach(action => {\n          configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n        });\n\n        configurationRequest = ConfigurationTranslatorUtils.lightenConfigurationRequest(configurationRequest);\n\n        return this.configurationService.configureRequest$(configurationRequest);\n      }),\n      map(() => {\n        // Run selectors and apply them to the state\n        const configurationState = this.configurationService.stateSnapshot;\n        if (!configurationState) {\n          return { stateId: '', selectors: {} };\n        }\n\n        return this.runStatelessSelectors(request, configurationState);\n      }),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(error => {\n        const configurationState = this.configurationService.previousStateSnapshot;\n        if (configurationState) {\n          const selectorsResult = this.runStatelessSelectors(request, configurationState);\n          this.handleSelectorsResponse(selectorsResult.selectors);\n        }\n        this.executionInProgress$.next(false);\n\n        if (!this.configurationRuntimeService.uiDefinitionProperties.suppressToastMessages) {\n          this.toastService.add({ severity: ToastType.error, summary: String(error) });\n        }\n\n        return throwError(() => error);\n      }),\n    );\n  }\n\n  private initBufferedRequest$() {\n    return this.statefulRequestStream$.pipe(\n      buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n      switchMap(requests => {\n        if (!this.flowStateService.stateId || !this.stateId) {\n          throw 'Stateful session is not initialized';\n        }\n\n        // merge buffered requests\n        const request: FlowStateExecutionRequestDTO = {\n          actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n          selectors: requests\n            .map(({ selectors }) => selectors)\n            .filter(isDefined)\n            .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n        };\n\n        this.executionInProgress$.next(true);\n        return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request);\n      }),\n      tap(({ stateId }) => (this.stateId = stateId)),\n      share(),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    return this.executionInProgress$.pipe(\n      filter(inProgress => !inProgress),\n      take(1),\n      switchMap(() =>\n        // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n        combineLatest([\n          this.statefulExecutionRequest$,\n          of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n        ]),\n      ),\n      map(([response]) => response),\n      take(1),\n    );\n  }\n\n  private executeActionScript(request: ConfigurationRequest, processor: FlowStateExecutableDTO): ConfigurationRequest {\n    const { actions } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};\n    const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);\n\n    if (!configurationProcessor?.script) {\n      throw `ConfigurationProcessor ${processor.apiName} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, processor.inputData) as ConfigurationRequest;\n  }\n\n  private executeSelectorScript(request: ConfigurePrice, processor: FlowStateExecutableDTO): unknown {\n    const { selectors } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};\n    const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);\n\n    if (!configurationProcessor?.script) {\n      throw `ConfigurationProcessor ${processor.apiName} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n  }\n\n  private executeProcessorScript(\n    request: ConfigurationRequest | ConfigurePrice,\n    configurationProcessor: ConfigurationProcessor,\n    inputData: unknown,\n  ): unknown {\n    let functionToExecute = this.executedFunctions[configurationProcessor.apiName];\n    if (!functionToExecute) {\n      const script = `${configurationProcessor.script}\\nreturn transform;`;\n      const sourceMap = `\\n//# sourceURL=${configurationProcessor.apiName}.js`;\n      functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n      this.executedFunctions[configurationProcessor.apiName] = functionToExecute;\n    }\n\n    return functionToExecute({\n      request,\n      inputData,\n      flowStore: this.flowStateService.getFlowStore(),\n      configurationStore: this.configurationStore,\n    });\n  }\n\n  private runStatelessSelectors(\n    request: FlowStateExecutionRequestDTO,\n    configurationState: ConfigurePrice,\n  ): FlowStateExecutionResult {\n    return EntityUtil.entries(request.selectors ?? {}).reduce(\n      (result: FlowStateExecutionResult, [key, selector]) => {\n        try {\n          result.selectors[key] = {\n            success: true,\n            result: this.executeSelectorScript(configurationState, selector),\n          };\n        } catch (e) {\n          console.error(e);\n          result.selectors[key] = {\n            success: false,\n            errorMessage: String(e),\n          };\n        }\n\n        return result;\n      },\n      { stateId: '', selectors: {} },\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationStateService } from './services/configuration-state.service';\nimport { ConfigurationService } from './services/configuration.service';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n  imports: [ConfirmationDialogModule, ApiModule],\n  providers: [ConfigurationRuntimeService, RuntimeContextService, ConfigurationService, ConfigurationStateService],\n})\nexport class ConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport {\n  DEFAULT_ACTION_CODE_LABELS,\n  DEFAULT_CURRENCY_SYMBOL,\n  DEFAULT_DATE_FORMAT,\n  DEFAULT_DECIMALS_COUNT,\n  DEFAULT_DECIMAL_SEPARATOR,\n  DEFAULT_THOUSANDS_SEPARATOR,\n  getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport {\n  ContextService,\n  FlowInfoService,\n  FlowStateConfigurationService,\n  FlowStateService,\n  IntegrationState,\n  ProductImagesService,\n  QuoteDraftService,\n  RuntimeSettingsService,\n} from './services';\nimport { FormattingSettings, FORMATTING_SETTINGS_TOKEN } from './types';\n\nexport const DEFAULT_FORMATTING_SETTINGS: FormattingSettings = {\n  currencySymbol: DEFAULT_CURRENCY_SYMBOL,\n  decimalsCount: DEFAULT_DECIMALS_COUNT,\n  dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),\n  decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n  thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,\n  actionCodeLabels: DEFAULT_ACTION_CODE_LABELS,\n};\n\n@NgModule({\n  imports: [ConfigurationModule, FlowConfigurationModule],\n  providers: [\n    ContextService,\n    FlowInfoService,\n    QuoteDraftService,\n    ProductImagesService,\n    IntegrationState,\n    FlowStateService,\n    FlowStateConfigurationService,\n    RuntimeSettingsService,\n    {\n      provide: FORMATTING_SETTINGS_TOKEN,\n      useExisting: RuntimeSettingsService,\n    },\n  ],\n})\nexport class SdkCoreModule {}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DEFAULT_DATE_FORMAT } from '@veloceapps/core';\nimport { Calendar } from 'primeng/calendar';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Directive({\n  selector: '[vlCalendar]',\n})\nexport class CalendarDirective implements OnInit, OnDestroy {\n  @Input()\n  public set vlCalendar(calendar: Calendar) {\n    this.calendar = calendar;\n  }\n  private calendar!: Calendar;\n\n  private ngControl = inject(NgControl, { host: true, optional: true });\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public ngOnInit(): void {\n    if (this.calendar) {\n      this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;\n\n      if (this.ngControl && this.ngControl.control) {\n        const control = this.ngControl.control;\n        control.setValue(control.value, { emitEvent: false });\n      }\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarDirective } from './primeng-calendar.directive';\n\n@NgModule({\n  declarations: [CalendarDirective],\n  exports: [CalendarDirective],\n})\nexport class SdkDirectivesModule {}\n","import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';\nimport { LOCALE_ID, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { DateType, FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlDate',\n})\nexport class DatePipe implements PipeTransform, OnDestroy {\n  private locale = inject(LOCALE_ID);\n  private defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(date: string | number | Date | undefined | null, type: DateType = 'date'): string {\n    if (!date) {\n      return '';\n    }\n\n    const dateFormat = this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT;\n\n    const formatMap: { [key in DateType]: string } = {\n      date: dateFormat,\n      time: DEFAULT_TIME_FORMAT,\n      datetime: `${dateFormat} ${DEFAULT_TIME_FORMAT}`,\n    };\n\n    try {\n      return formatDate(date, formatMap[type], this.locale, this.defaultOptions?.timezone);\n    } catch (error) {\n      return new Date(date).toString();\n    }\n  }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlNumber',\n})\nexport class NumberPipe implements PipeTransform, OnDestroy {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(price: string | number): string {\n    return formatNumber(\n      price,\n      this.formattingSettings?.thousandsSeparator,\n      this.formattingSettings?.decimalSeparator,\n      this.formattingSettings?.decimalsCount,\n    );\n  }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlPrice',\n})\nexport class PricePipe implements PipeTransform, OnDestroy {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(price: string | number): string {\n    if (price == null || price === '') {\n      return '';\n    }\n\n    return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(\n      price,\n      this.formattingSettings?.thousandsSeparator,\n      this.formattingSettings?.decimalSeparator,\n      this.formattingSettings?.decimalsCount,\n    )}`;\n  }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlActionCode',\n})\nexport class ActionCodePipe implements PipeTransform {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n\n  public transform(actionCode: string): string {\n    return this.formattingSettings?.actionCodeLabels[actionCode] ?? actionCode;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { DatePipe } from './date.pipe';\nimport { NumberPipe } from './number.pipe';\nimport { PricePipe } from './price.pipe';\nimport { ActionCodePipe } from './action-code.pipe';\n\n@NgModule({\n  declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n  exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n})\nexport class SdkPipesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","tap","switchMap","i1.ContextService","i2.FlowInfoService","i3","filter","shareReplay","take","catchError","finalize","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i6","i7.RuntimeSettingsService","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","i6.FlowInfoService","i1.FlowInfoService","i2.FlowConfigurationService","i4.FlowStateService","i3.RuntimeContextService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i5.FlowConfigurationService"],"mappings":"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"}
         | 
| 1 | 
            +
            {"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/helpers.ts","../../../../libs/sdk/core/services/context.service.ts","../../../../libs/sdk/core/types/flow-customization.types.ts","../../../../libs/sdk/core/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/runtime.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/services/flow-info.service.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/services/flow-state.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.ts","../../../../libs/sdk/core/services/flow-state-configuration.service.ts","../../../../libs/sdk/core/services/integration.state.ts","../../../../libs/sdk/core/services/product-images.service.ts","../../../../libs/sdk/core/modules/configuration/services/runtime-context.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-runtime.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration-state.service.ts","../../../../libs/sdk/core/modules/configuration/configuration.module.ts","../../../../libs/sdk/core/core.module.ts","../../../../libs/sdk/core/directives/primeng-calendar.directive.ts","../../../../libs/sdk/core/directives/directives.module.ts","../../../../libs/sdk/core/pipes/date.pipe.ts","../../../../libs/sdk/core/pipes/number.pipe.ts","../../../../libs/sdk/core/pipes/price.pipe.ts","../../../../libs/sdk/core/pipes/action-code.pipe.ts","../../../../libs/sdk/core/pipes/pipes.module.ts","../../../../libs/sdk/core/veloceapps-sdk-core.ts"],"sourcesContent":["import {\n  Attribute,\n  ConfigurationContext,\n  ConfigurationContextMode,\n  ConfigurationRequest,\n  LineItem,\n  UIDefinitionProps,\n  UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData, NewConfigurationProps } from './types/configuration.types';\n\nexport const getDefaultLineItem = (\n  context: RuntimeContext,\n  uiDefinitionProperties: UIDefinitionProps,\n  qty = 1,\n): LineItem => {\n  const id = UUID.UUID();\n  const attributes: Attribute[] = [];\n  const lineItems: LineItem[] = [];\n\n  return {\n    id,\n    type: uiDefinitionProperties.rootType ?? '',\n    cfgStatus: 'Default',\n    actionCode: 'ADD',\n    qty,\n    attributes,\n    lineItems,\n    productName: context.properties?.['displayName'] || context.productName,\n    productId: context.productId ?? '',\n    ...(uiDefinitionProperties.offeringId ? { offeringId: uiDefinitionProperties.offeringId } : {}),\n  } as LineItem;\n};\n\nexport const getGuidedSellingConfigurationRequest = (\n  data: GuidedSellingSubmitData,\n  context: ConfigurationContext,\n): ConfigurationRequest => {\n  const _context = { ...context };\n  delete _context.configurationToken;\n\n  const properties = { ...context.properties };\n  delete properties['ConfigurationToken'];\n\n  return {\n    mode: 'SEARCH',\n    step: 'START',\n    attributeDomainMode: 'ALL',\n    context: {\n      ..._context,\n      mode: ConfigurationContextMode.TEST,\n      properties: {\n        ...properties,\n        ModelId: data.modelId,\n        Name: 'Veloce Guided Selling',\n        PricingEnabled: 'false',\n        RuntimeMode: 'TEST',\n      },\n    },\n    lineItem: {\n      actionCode: 'ADD',\n      cfgStatus: 'Default',\n      id: UUID.UUID(),\n      qty: 1,\n      type: data.modelType,\n      attributes: Object.entries(data.attributesMap).map(([name, value]) => ({\n        name,\n        value,\n        cfgStatus: 'User',\n      })),\n    } as LineItem,\n  };\n};\n\nexport const generateConfigurationLineItem = (props: NewConfigurationProps, qty = 1): LineItem => {\n  const id = UUID.UUID();\n  const attributes = Object.entries(props.attributesMap ?? {}).map(([name, value]) => ({\n    name,\n    value,\n    cfgStatus: 'User',\n  }));\n  const lineItems: LineItem[] = [];\n\n  return {\n    id,\n    type: props.product.typeName ?? '',\n    cfgStatus: 'Default',\n    actionCode: 'ADD',\n    qty,\n    attributes,\n    lineItems,\n    productName: props.product.name,\n    productId: props.product.id ?? '',\n  } as LineItem;\n};\n","import { Injectable } from '@angular/core';\nimport { ContextApiService } from '@veloceapps/api';\nimport { ConfigurationContext, ConfigurationContextMode } from '@veloceapps/core';\nimport { merge } from 'lodash';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class ContextService {\n  private context = new BehaviorSubject<ConfigurationContext | null>(null);\n\n  constructor(private contextApiService: ContextApiService) {}\n\n  public get isInitialized(): boolean {\n    return Boolean(this.context.value);\n  }\n\n  public get isInitialized$(): Observable<boolean> {\n    return this.context.pipe(map(Boolean));\n  }\n\n  public get mode(): ConfigurationContextMode | undefined {\n    return this.resolve().properties['#mode'];\n  }\n\n  public get isEditMode$(): Observable<boolean> {\n    return this.resolve$().pipe(map(() => this.isEditMode));\n  }\n\n  public get isEditMode(): boolean {\n    const context = this.resolve();\n\n    if (context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n      return true;\n    }\n\n    if (context.properties['#mode'] === ConfigurationContextMode.QUOTE) {\n      return context.properties.Status === 'Draft';\n    }\n\n    return false;\n  }\n\n  public resolve(): ConfigurationContext {\n    if (!this.context.value) {\n      throw new Error('Context is not initialized yet!');\n    }\n\n    return { ...this.context.value };\n  }\n\n  public resolve$(): Observable<ConfigurationContext> {\n    return this.context.pipe(filter((ctx): ctx is ConfigurationContext => Boolean(ctx)));\n  }\n\n  public create(headerId: string, mode: ConfigurationContextMode): Observable<ConfigurationContext> {\n    return this.contextApiService.getContext(headerId, mode).pipe(\n      tap(context => this.context.next(merge(new ConfigurationContext(headerId, mode), context))),\n      map(() => this.resolve() as ConfigurationContext),\n    );\n  }\n\n  public initTestMode(): Observable<ConfigurationContext> {\n    return this.create('TestId', ConfigurationContextMode.TEST).pipe(\n      map(context => {\n        return this.update({\n          properties: {\n            ...context.properties,\n            RuntimeMode: ConfigurationContextMode.TEST,\n            StartDate: new Date().toISOString().substring(0, 10),\n            standalone: 'true',\n          },\n        });\n      }),\n    );\n  }\n\n  public update(partialContext: Partial<ConfigurationContext>): ConfigurationContext {\n    const originalContext = this.resolve();\n\n    const updatedContext: ConfigurationContext = {\n      ...originalContext,\n      ...(partialContext as ConfigurationContext),\n      properties: {\n        ...originalContext.properties,\n        ...partialContext.properties,\n      },\n    };\n\n    this.context.next(updatedContext);\n\n    return updatedContext;\n  }\n\n  public set(context: ConfigurationContext): ConfigurationContext {\n    const originalContext = this.resolve();\n\n    const updatedContext: ConfigurationContext = {\n      ...originalContext,\n      ...context,\n    };\n\n    this.context.next(updatedContext);\n\n    return updatedContext;\n  }\n\n  public delete(): void {\n    this.context.next(null);\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport {\n  ConfigurationProcessor,\n  TemplateComponentWithAttachments,\n  UIDefinitionContainer,\n  UITemplate,\n} from '@veloceapps/core';\nimport { Observable } from 'rxjs';\n\nexport const FLOW_CUSTOMIZATION = new InjectionToken<FlowCustomization>('FLOW_CUSTOMIZATION');\n\nexport interface FlowCustomization {\n  getUiDefinition?(productId: string): Observable<UIDefinitionContainer | null>;\n\n  getTemplates?(): Observable<UITemplate[]>;\n  getTemplateComponents?(templateName: string): Observable<TemplateComponentWithAttachments[] | null>;\n\n  getTemplateConfigurationProcessors?(templateName: string): Observable<ConfigurationProcessor[] | null>;\n}\n","import { InjectionToken } from '@angular/core';\nimport { Prettify, VlDateSettings } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\n\nexport const FORMATTING_SETTINGS_TOKEN = new InjectionToken<{\n  getFormattingSettings: (...args: unknown[]) => FormattingSettings;\n}>('Summary of formatting settings for variant types of data, e.g. numbers, text, dates, etc');\n\nexport type FormattingSettings = Prettify<\n  {\n    currencySymbol: string;\n    thousandsSeparator: string;\n    decimalSeparator: string;\n    decimalsCount: number;\n    actionCodeLabels: Dictionary<string>;\n  } & VlDateSettings\n>;\n","import { ContextProperties, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\n\nexport enum RuntimeMode {\n  TEST,\n  PROD,\n}\n\nexport enum RuntimeOperation {\n  INIT = 'INIT',\n  UPDATE = 'UPDATE',\n}\n\nexport enum RuntimeStep {\n  START = 'START',\n  UPDATE = 'UPDATE',\n}\n\nexport interface InvocationContext {\n  runtimeOperation?: RuntimeOperation;\n  runtimeStep?: RuntimeStep;\n}\n\nexport interface RuntimeContext {\n  modelId: string;\n  runtimeMode: RuntimeMode;\n  runtimeModel: RuntimeModel;\n  uiDefinitionContainer?: UIDefinitionContainer;\n  productId?: string;\n  productName?: string;\n  productType?: string;\n  properties?: ContextProperties;\n  offeringId?: string;\n  offeringInstanceId?: string;\n  invocationContext?: InvocationContext;\n}\n","export const UI_DEFINITION_VERSION = 3;\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Params } from '@angular/router';\nimport { FlowsApiService, UITemplatesApiService } from '@veloceapps/api';\nimport { Flow, FlowTemplatesMap, UITemplate, UITemplateType } from '@veloceapps/core';\nimport { BehaviorSubject, catchError, forkJoin, map, noop, Observable, of, switchMap, tap, throwError } from 'rxjs';\nimport { FLOW_CUSTOMIZATION, FlowCustomization } from '../types';\n\n@Injectable()\nexport class FlowInfoService {\n  public flow$: Observable<Flow | null>;\n  public params?: Params;\n  public templates: { [key in UITemplateType]?: UITemplate } = {};\n\n  public get flow(): Flow | null {\n    return this.flowSubj$.value;\n  }\n  public set flow(value: Flow | null) {\n    this.flowSubj$.next(value);\n  }\n\n  public get isLegacy(): boolean {\n    return !!this.flow && this.flow?.properties.stateful == null;\n  }\n\n  public get isStateful(): boolean {\n    return !!this.flow?.properties.stateful;\n  }\n\n  private readonly defaultTemplates = {\n    flowEngine: 'Flow Engine',\n  };\n  private flowSubj$ = new BehaviorSubject<Flow | null>(null);\n\n  constructor(\n    private flowsApiService: FlowsApiService,\n    private templatesApiService: UITemplatesApiService,\n    @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n  ) {\n    this.flow$ = this.flowSubj$.asObservable();\n  }\n\n  public init$(flowId: string, routeQueryParams: Params): Observable<void> {\n    return this.flowsApiService.getFlow(flowId).pipe(\n      switchMap(flow => this.initFlowTemplates$(flow).pipe(map(() => flow))),\n      tap(flow => {\n        this.params = { ...routeQueryParams, ...flow.properties.queryParams };\n        this.flowSubj$.next(flow);\n      }),\n      map(noop),\n      catchError(e => {\n        this.flowSubj$.next(null);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    this.flowSubj$.next(null);\n    this.params = undefined;\n    this.templates = {};\n  }\n\n  private initFlowTemplates$(flow: Flow): Observable<void> {\n    return forkJoin([\n      this.templatesApiService.fetchTemplates$(),\n      this.customizationService?.getTemplates?.() ?? of([]),\n    ]).pipe(\n      map(([templates, localTemplates]) => {\n        Object.entries({ ...this.defaultTemplates, ...flow.properties.templates }).forEach(([key, name]) => {\n          const type = this.remapTemplateName(key);\n\n          if (type) {\n            this.templates[type] =\n              localTemplates.find(template => template.name === name && template.type === type) ??\n              templates.find(template => template.name === name && template.type === type);\n          }\n        });\n      }),\n    );\n  }\n\n  private remapTemplateName(templateType: string): UITemplateType | undefined {\n    switch (templateType as keyof typeof this.defaultTemplates) {\n      case 'flowEngine':\n        return UITemplateType.FLOW_ENGINE;\n      default:\n        break;\n    }\n\n    switch (templateType as keyof FlowTemplatesMap) {\n      case 'assets':\n      case 'shoppingCart':\n        // No separate Assets template at the moment\n        return UITemplateType.SHOPPING_CART;\n      case 'catalog':\n        return UITemplateType.CATALOG;\n      case 'guidedSelling':\n        return UITemplateType.GUIDED_SELLING;\n      case 'flowHeader':\n        return UITemplateType.FLOW_HEADER;\n      default:\n        break;\n    }\n\n    return undefined;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AccountApiService, QuoteApiService } from '@veloceapps/api';\nimport { AccountAssetsState, ConfigurationContextMode, LineItem, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, combineLatest, noop, Observable, of, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\n\n@Injectable()\nexport class QuoteDraftService {\n  private quoteSubj$ = new BehaviorSubject<QuoteDraft | null>(null);\n  private assetsSubj$ = new BehaviorSubject<AccountAssetsState | null>(null);\n  private resetSubj$ = new BehaviorSubject<boolean>(true);\n  private isInitializedSubj$ = new BehaviorSubject<boolean>(false);\n  private initialCurrentState: LineItem[] = [];\n  private _hasUnsavedChanges = false;\n\n  public get isInitialized$(): Observable<boolean> {\n    return this.isInitializedSubj$.asObservable();\n  }\n  public get isInitialized(): boolean {\n    return this.isInitializedSubj$.getValue();\n  }\n  public set isInitialized(value: boolean) {\n    if (this.isInitialized !== value) {\n      this.isInitializedSubj$.next(value);\n    }\n  }\n\n  public get hasUnsavedChanges(): boolean {\n    return this._hasUnsavedChanges;\n  }\n  public set hasUnsavedChanges(value: boolean) {\n    this._hasUnsavedChanges = value;\n\n    if (!this._hasUnsavedChanges) {\n      this.initialCurrentState = this.quoteDraft?.currentState ?? [];\n    }\n  }\n\n  public get hasProducts$(): Observable<boolean> {\n    return this.quoteSubj$.pipe(map(() => this.hasProducts));\n  }\n  public get hasProducts(): boolean {\n    return Boolean(this.quoteSubj$.value?.currentState.length);\n  }\n\n  public get hasAssets$(): Observable<boolean> {\n    return this.assetsSubj$.pipe(map(() => this.hasAssets));\n  }\n  public get hasAssets(): boolean {\n    return Boolean(this.assetsSubj$.value?.currentState.length);\n  }\n\n  public get assetsState(): AccountAssetsState | null {\n    return this.assetsSubj$.value;\n  }\n\n  public reset$ = this.resetSubj$.asObservable();\n\n  constructor(\n    private context: ContextService,\n    private flowInfoService: FlowInfoService,\n    private accountApiService: AccountApiService,\n    private quoteApiService: QuoteApiService,\n  ) {\n    this.isInitializedSubj$\n      .pipe(\n        filter(isInitialized => isInitialized),\n        switchMap(() => this.quoteSubj$.asObservable()),\n        skip(1),\n        tap(quote => this.markAsUpdated(quote)),\n      )\n      .subscribe();\n  }\n\n  public reset(): void {\n    this.resetSubj$.next(true);\n    this.quoteSubj$.next(null);\n    this.assetsSubj$.next(null);\n    this.isInitialized = false;\n    this.hasUnsavedChanges = false;\n  }\n\n  public init(headerId: string, params: Dictionary<string>): Observable<void> {\n    const ctx = this.context.resolve();\n    const isAccountMode = this.context.mode === ConfigurationContextMode.ACCOUNT;\n    const accountId = isAccountMode ? headerId : ctx.properties.AccountId;\n\n    return zip(\n      accountId ? this.accountApiService.getAssetsState(accountId, params) : of(null),\n      isAccountMode\n        ? of(QuoteDraft.emptyQuote(ConfigurationContextMode.ACCOUNT))\n        : this.quoteApiService.getQuoteState(headerId, params),\n    ).pipe(\n      tap(([assets, quote]) => {\n        if (assets) {\n          this.assetsSubj$.next(assets);\n        }\n\n        this.quoteSubj$.next(quote);\n        if (assets && isAccountMode) {\n          this.context.update(assets.context);\n        } else {\n          this.context.update(quote.context);\n        }\n      }),\n      map(() => noop()),\n      take(1),\n    );\n  }\n\n  public finalizeInit(): void {\n    this.isInitialized = true;\n    this.hasUnsavedChanges = false;\n  }\n\n  public setCurrentLineItemState(lineItems: LineItem[]): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      currentState: lineItems,\n    });\n  }\n\n  public updateQuoteDraft(update: Partial<QuoteDraft>): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    if (update.context) {\n      this.context.set(update.context);\n    }\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      ...update,\n    });\n  }\n\n  public updateByPriceSummary(priceSummary: PriceSummary): void {\n    const quoteDraft = this.quoteSubj$.value;\n\n    if (!quoteDraft) {\n      return;\n    }\n\n    const updatedCurrentState = this.currentState.map(lineItem => {\n      const updated = priceSummary.lineItems.find(li => li.id === lineItem.id);\n      return updated ?? lineItem;\n    });\n\n    this.quoteSubj$.next({\n      ...quoteDraft,\n      currentState: updatedCurrentState,\n      totalPrices: priceSummary.totalPrices,\n      approvalItems: priceSummary.approvalItems,\n    });\n  }\n\n  public setAssetsState(assetsState: AccountAssetsState): void {\n    this.assetsSubj$.next(assetsState);\n  }\n\n  public get quoteDraft$(): Observable<QuoteDraft> {\n    return combineLatest([this.quoteSubj$, this.context.resolve$()]).pipe(\n      map(() => this.quoteDraft),\n      filter((quote): quote is QuoteDraft => Boolean(quote)),\n      shareReplay(),\n    );\n  }\n\n  public get quoteDraft(): QuoteDraft | null {\n    const quote = this.quoteSubj$.value;\n\n    if (!quote) {\n      return null;\n    }\n\n    return {\n      ...quote,\n      context: this.context.resolve(),\n    };\n  }\n\n  public get currentState$(): Observable<LineItem[]> {\n    return this.quoteDraft$.pipe(map(quote => quote.currentState));\n  }\n\n  public get currentState(): LineItem[] {\n    return this.quoteDraft?.currentState ?? [];\n  }\n\n  public get isStandalone(): boolean {\n    return this.flowInfoService.flow?.properties.standalone ?? false;\n  }\n\n  public get isStandalone$(): Observable<boolean> {\n    return this.flowInfoService.flow$.pipe(map(() => this.isStandalone));\n  }\n\n  public getInitialCurrentState(): LineItem[] {\n    return this.initialCurrentState;\n  }\n\n  public isEditMode$(): Observable<boolean> {\n    return this.context.resolve$().pipe(map(() => this.isEditMode()));\n  }\n\n  public isEditMode(): boolean {\n    const context = this.context.resolve();\n\n    if (context.mode === ConfigurationContextMode.ACCOUNT) {\n      return true;\n    }\n\n    if (context.mode === ConfigurationContextMode.QUOTE) {\n      return context.properties.Status === 'Draft';\n    }\n\n    return false;\n  }\n\n  private markAsUpdated(quote: QuoteDraft | null): void {\n    if (quote?.context.properties['#mode'] === ConfigurationContextMode.ACCOUNT) {\n      this.hasUnsavedChanges = !!quote && !quote.currentState.every(li => li.actionCode === 'EXIST');\n    } else {\n      this.hasUnsavedChanges = !isEqual(this.initialCurrentState, quote?.currentState);\n    }\n  }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ConfigurationProcessorsApiService, FlowStateApiService, QuoteApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n  Charge,\n  CompiledPricePlan,\n  ConfigurationContext,\n  ConfigurationContextMode,\n  ConfigurationProcessor,\n  ConfigurationProcessorScriptFn,\n  ConfigurationProcessorTypes,\n  EntityUtil,\n  Flow,\n  FlowState,\n  FlowStateExecutableDTO,\n  FlowStateExecutionRequest,\n  FlowStateExecutionRequestDTO,\n  FlowStateExecutionResult,\n  FlowStateSelectorResponse,\n  isDefined,\n  MetricRule,\n  UITemplateType,\n  UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary, flatten, isEqual } from 'lodash';\nimport {\n  BehaviorSubject,\n  buffer,\n  catchError,\n  combineLatest,\n  debounceTime,\n  filter,\n  finalize,\n  forkJoin,\n  map,\n  noop,\n  Observable,\n  of,\n  share,\n  shareReplay,\n  Subject,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throwError,\n} from 'rxjs';\nimport { FlowConfigurationService } from '../modules';\nimport { FlowCustomization, FLOW_CUSTOMIZATION } from '../types/flow-customization.types';\nimport { FlowStateSubscriptionOptions, FlowStore } from '../types/flow-state.types';\nimport { ContextService } from './context.service';\nimport { FlowInfoService } from './flow-info.service';\nimport { QuoteDraftService } from './quote-draft.service';\n\ntype ProcessorsMap = Partial<{\n  [ownerId: string]: {\n    [apiName: string]: ConfigurationProcessor;\n  };\n}>;\n\ntype Subscription = {\n  request: FlowStateExecutionRequestDTO;\n  data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class FlowStateService {\n  public charges$: Observable<Dictionary<Charge>>;\n  public pricePlans$: Observable<Dictionary<CompiledPricePlan>>;\n  public activeMetrics$: Observable<MetricRule[]>;\n  public isPriceListLocked$: Observable<boolean>;\n\n  private readonly NOT_INITIALIZED = Symbol();\n  private readonly EXECUTION_BUFFER_TIME = 100;\n\n  private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n  private stateId$ = new BehaviorSubject<string | null>(null);\n  private initialStatefulData: Dictionary<unknown> = {};\n  private trackedStatefulChangesMap: Map<string, boolean> = new Map();\n  private processors: ProcessorsMap = {};\n  private subscriptions: Record<string, Subscription> = {};\n  private flowStore: FlowStore = {};\n\n  private executionInProgress$ = new BehaviorSubject(false);\n  private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n  private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n\n  private cleanup$ = new Subject<void>();\n\n  constructor(\n    private contextService: ContextService,\n    private quoteDraftService: QuoteDraftService,\n    private flowInfoService: FlowInfoService,\n    private flowConfiguration: FlowConfigurationService,\n    private processorsApiService: ConfigurationProcessorsApiService,\n    private flowStateApiService: FlowStateApiService,\n    private quoteApiService: QuoteApiService,\n    private toastService: ToastService,\n    @Optional() @Inject(FLOW_CUSTOMIZATION) private customizationService?: FlowCustomization,\n  ) {\n    this.statefulExecutionRequest$ = this.initBufferedRequest$();\n\n    /*\n      In stateless mode watch QuoteDraft changes and call executeRequest so that\n      all subscriptions get their updates according to updated QuoteDraft\n    */\n    this.isInitialized$()\n      .pipe(\n        filter(Boolean),\n        filter(() => !this.getFlowSafe().properties.stateful),\n        switchMap(() => this.flowConfiguration.updated$),\n        switchMap(() => this.executeRequest$({}, true)),\n      )\n      .subscribe();\n\n    this.charges$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.charges));\n        } else {\n          return this.subscribe$<Dictionary<Charge>>(UITemplateType.FLOW_ENGINE, 'CHARGES', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : {})));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.charges$.subscribe();\n\n    this.pricePlans$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.pricePlans));\n        } else {\n          return this.subscribe$<Dictionary<CompiledPricePlan>>(UITemplateType.FLOW_ENGINE, 'PRICE_PLANS', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : {})));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.pricePlans$.subscribe();\n\n    this.activeMetrics$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return this.quoteDraftService.quoteDraft$.pipe(map(quoteDraft => quoteDraft.activeMetrics));\n        } else {\n          return this.subscribe$<MetricRule[]>(UITemplateType.FLOW_ENGINE, 'ACTIVE_METRICS', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : [])));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.activeMetrics$.subscribe();\n\n    this.isPriceListLocked$ = this.flowInfoService.flow$.pipe(\n      filter(isDefined),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return of(false);\n        } else {\n          return this.subscribe$<boolean>(UITemplateType.FLOW_ENGINE, 'IS_PRICE_LIST_LOCKED', null, {\n            cold: true,\n          }).pipe(map(response => (response.success ? response.result : false)));\n        }\n      }),\n      shareReplay(1),\n    );\n    this.isPriceListLocked$.subscribe();\n  }\n\n  public init$(): Observable<void> {\n    return this.initProcessors$().pipe(\n      switchMap(() => {\n        if (this.getFlowSafe().properties.stateful) {\n          return this.initStateful$();\n        } else {\n          return this.initStateless$();\n        }\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n    this.subscriptions = {};\n\n    if (this.stateId$.value) {\n      this.flowStateApiService.cancel(this.stateId$.value).subscribe();\n      this.stateId$.next(null);\n    }\n\n    this.processors = {};\n    this.flowStore = {};\n    this.cleanup$.next();\n  }\n\n  public get hasUnsavedChanges(): boolean {\n    return this.getFlowSafe().properties.stateful\n      ? Array.from(this.trackedStatefulChangesMap.values()).some(Boolean)\n      : this.quoteDraftService.hasUnsavedChanges;\n  }\n\n  public get stateId(): string | null {\n    return this.stateId$.value;\n  }\n\n  public get isExecutionInProgress$() {\n    return this.executionInProgress$.asObservable();\n  }\n\n  public isInitialized$(): Observable<boolean> {\n    return combineLatest([this.stateId$, this.quoteDraftService.isInitialized$]).pipe(\n      map(values => values.some(Boolean)),\n    );\n  }\n\n  public isInitialized(): boolean {\n    return Boolean(this.stateId$.value) || this.quoteDraftService.isInitialized;\n  }\n\n  public execute$(\n    scope: UITemplateType,\n    exec: FlowStateExecutionRequest,\n  ): Observable<FlowStateExecutionResult['selectors']> {\n    const request = this.execToRequest(scope, exec);\n\n    return this.executeRequest$(request).pipe(\n      map(result => {\n        // Keep only requested results\n        const actualSelectors = Object.entries(result.selectors).reduce(\n          (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n            if (exec.selectors?.[requestId]) {\n              trunk[requestId] = result;\n            }\n            return trunk;\n          },\n          {},\n        );\n\n        return actualSelectors;\n      }),\n    );\n  }\n\n  public dispatch$(scope: UITemplateType, action: string, inputData?: unknown): Observable<void> {\n    const exec: FlowStateExecutionRequest = {\n      actions: [{ name: action, inputData }],\n    };\n    const request = this.execToRequest(scope, exec);\n\n    return this.executeRequest$(request).pipe(map(noop));\n  }\n\n  public select$<Response = unknown>(\n    scope: UITemplateType,\n    selectorName: string,\n    inputData?: unknown,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = this.generateRequestId(scope, selectorName, inputData);\n    const request = this.execToRequest(scope, {\n      selectors: {\n        [requestId]: {\n          name: selectorName,\n          inputData,\n        },\n      },\n    });\n\n    return this.executeRequest$(request).pipe(\n      map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n    );\n  }\n\n  public subscribe$<Response = unknown>(\n    scope: UITemplateType,\n    selectorName: string,\n    inputData?: unknown,\n    options?: FlowStateSubscriptionOptions,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = this.generateRequestId(scope, selectorName, inputData);\n\n    let subscription = this.subscriptions[requestId];\n\n    if (!subscription) {\n      const request = this.execToRequest(scope, {\n        selectors: {\n          [requestId]: {\n            name: selectorName,\n            inputData,\n          },\n        },\n      });\n\n      subscription = {\n        request,\n        data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n      };\n\n      this.subscriptions[requestId] = subscription;\n\n      if (options?.trackedChanges) {\n        this.trackedStatefulChangesMap.set(requestId, false);\n      }\n\n      if (!options?.cold) {\n        this.executeRequest$(request).subscribe();\n      }\n    }\n\n    return subscription.data$.pipe(\n      filter(data => data != this.NOT_INITIALIZED),\n      map(data => data as FlowStateSelectorResponse<Response>),\n      finalize(() => {\n        if (!this.subscriptions[requestId]?.data$.observed) {\n          delete this.subscriptions[requestId];\n        }\n      }),\n    );\n  }\n\n  public save$(): Observable<{ quoteId: string }> {\n    if (this.getFlowSafe().properties.stateful) {\n      if (this.stateId$.value) {\n        return this.flowStateApiService.save(this.stateId$.value).pipe(\n          tap(() => {\n            Array.from(this.trackedStatefulChangesMap.keys()).forEach(key => {\n              this.trackedStatefulChangesMap.set(key, false);\n            });\n          }),\n        );\n      }\n    } else {\n      const quoteDraft = this.quoteDraftService.quoteDraft;\n      if (quoteDraft) {\n        return this.quoteApiService.upsertQuote(quoteDraft).pipe(\n          tap(({ versionId }) => {\n            this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n          }),\n        );\n      }\n    }\n\n    return of({ quoteId: '' });\n  }\n\n  public submit$(): Observable<{ quoteId: string }> {\n    if (this.getFlowSafe().properties.stateful) {\n      if (this.stateId$.value) {\n        return this.flowStateApiService.submit(this.stateId$.value);\n      }\n    } else {\n      const quoteDraft = this.quoteDraftService.quoteDraft;\n      if (quoteDraft) {\n        return this.quoteApiService.submitQuote(quoteDraft).pipe(\n          tap(({ versionId }) => {\n            this.contextService.update({ properties: { VELOCE_PRISM__VersionId__c: versionId } });\n          }),\n        );\n      }\n    }\n\n    return of({ quoteId: '' });\n  }\n\n  public getFlowStore(): Record<string, unknown> {\n    return this.flowStore;\n  }\n\n  private getOwnerIdByScope(scope: UITemplateType): string {\n    const ownerId = this.flowInfoService.templates[scope]?.id;\n    if (!ownerId) {\n      throw `OwnerId is not found for scope ${scope}`;\n    }\n\n    return ownerId;\n  }\n\n  private getScopeByOwnerId(id: string): UITemplateType | undefined {\n    for (const template of Object.values(this.flowInfoService.templates)) {\n      if (template.id === id) {\n        return template.type;\n      }\n    }\n\n    return;\n  }\n\n  private execToRequest(scope: UITemplateType, exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n    const ownerId = this.getOwnerIdByScope(scope);\n\n    return {\n      actions: exec.actions?.map(action => ({ apiName: action.name, ownerId, inputData: action.inputData ?? {} })),\n      selectors:\n        exec.selectors &&\n        Object.entries(exec.selectors).reduce(\n          (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n            ...trunk,\n            [key]: { apiName: selector.name, ownerId, inputData: selector.inputData ?? {} },\n          }),\n          {},\n        ),\n    };\n  }\n\n  public executeRequest$(\n    request: FlowStateExecutionRequestDTO,\n    forceSubscriptions: boolean = false,\n  ): Observable<FlowStateExecutionResult> {\n    const fullRequest = cloneDeep(request);\n    if (fullRequest.actions?.length || forceSubscriptions) {\n      for (const subscription of Object.values(this.subscriptions)) {\n        fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n      }\n    }\n\n    const execution$ = this.getFlowSafe().properties.stateful\n      ? this.executeStateful$(fullRequest)\n      : this.executeStateless$(fullRequest);\n\n    return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n  }\n\n  private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n    Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n      if (!selectorResult.success) {\n        this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n      }\n\n      const subscription$ = this.subscriptions[requestId]?.data$;\n      if (subscription$ && subscription$.value !== selectorResult) {\n        this.checkStatefulChanges(requestId, selectorResult);\n        subscription$.next(selectorResult);\n      }\n    });\n  }\n\n  private initStateful$(): Observable<void> {\n    // Subscriptions\n    this.subscribe$<ConfigurationContext>(UITemplateType.FLOW_ENGINE, 'CONTEXT', null, { cold: true })\n      .pipe(\n        tap(response => {\n          if (response.success) {\n            this.contextService.update(response.result);\n          }\n        }),\n        takeUntil(this.cleanup$),\n      )\n      .subscribe();\n\n    const processorsList = flatten(Object.values(this.processors).map(ownerMap => Object.values(ownerMap ?? {})));\n    const processors = processorsList.length ? processorsList : undefined;\n    const selectors = Object.values(this.subscriptions)\n      .map(({ request }) => request.selectors)\n      .filter(isDefined)\n      .reduce((trunk, selectors) => ({ ...trunk, ...selectors }), {});\n    const request = this.getDefaultExecutionRequestDTO();\n\n    return this.flowStateApiService\n      .init({\n        quoteId: this.contextService.resolve().headerId,\n        params: this.flowInfoService.params ?? {},\n        actionsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.ACTION),\n        selectorsOverride: processors?.filter(processor => processor.type === ConfigurationProcessorTypes.SELECTOR),\n        selectors: { ...selectors, ...request.selectors },\n        actions: request.actions,\n      })\n      .pipe(\n        map(({ stateId, selectors }) => {\n          this.handleSelectorsResponse(selectors);\n          this.stateId$.next(stateId);\n        }),\n      );\n  }\n\n  private initBufferedRequest$() {\n    return this.statefulRequestStream$.pipe(\n      buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n      switchMap(requests => {\n        if (!this.stateId$.value) {\n          throw 'Stateful session is not initialized';\n        }\n\n        // merge buffered requests\n        const request: FlowStateExecutionRequestDTO = {\n          actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n          selectors: requests\n            .map(({ selectors }) => selectors)\n            .filter(isDefined)\n            .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n        };\n\n        this.executionInProgress$.next(true);\n        return this.flowStateApiService.execute(this.stateId$.value, request);\n      }),\n      tap(({ stateId }) => this.stateId$.next(stateId)),\n      share(),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    return this.executionInProgress$.pipe(\n      filter(inProgress => !inProgress),\n      take(1),\n      switchMap(() =>\n        // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n        combineLatest([\n          this.statefulExecutionRequest$,\n          of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n        ]),\n      ),\n      map(([response]) => response),\n      take(1),\n    );\n  }\n\n  private initStateless$(): Observable<void> {\n    const { headerId } = this.contextService.resolve();\n    return this.quoteDraftService.init(headerId, this.flowInfoService.params ?? {}).pipe(\n      tap(() => {\n        const assets = this.quoteDraftService.assetsState;\n        if (assets) {\n          this.flowStore = { ...this.flowStore, assets };\n        }\n      }),\n      switchMap(() => {\n        if (this.flowInfoService.isLegacy) {\n          return of(null);\n        }\n        return this.executeRequest$(this.getDefaultExecutionRequestDTO());\n      }),\n      switchMap(() => this.calculate$()),\n      tap(() => this.quoteDraftService.finalizeInit()),\n      map(noop),\n    );\n  }\n\n  private calculate$(): Observable<void> {\n    const flowState = this.quoteDraftService.quoteDraft;\n    if (!flowState) {\n      return of(undefined);\n    }\n\n    /*\n      Don't execute procedures when:\n        * Initializing a standalone product configuration UI, as procedure is execute in /price call\n        * Initializing an empty account (account with no assets)\n    */\n    const isEmptyAccountMode =\n      this.contextService.mode === ConfigurationContextMode.ACCOUNT &&\n      !this.quoteDraftService.hasProducts &&\n      !this.quoteDraftService.hasAssets &&\n      !this.quoteDraftService.quoteDraft?.initialState.length;\n\n    if (this.quoteDraftService.isStandalone || isEmptyAccountMode) {\n      return of(undefined);\n    }\n\n    return this.flowConfiguration.calculate$(flowState);\n  }\n\n  private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    this.executionInProgress$.next(true);\n\n    return of(undefined).pipe(\n      tap(() => this.executeStatelessActions(request)),\n      switchMap(() => {\n        /*\n          Skip price calculation in case\n          1. No actions in the request\n          2. Initialization process execution (state not initialized yet)\n        */\n        if (!request.actions?.length || !this.isInitialized()) {\n          return of(undefined);\n        } else {\n          return this.calculate$();\n        }\n      }),\n      map(() => this.executeStatelessSelectors(request)),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStatelessActions(request: FlowStateExecutionRequestDTO): void {\n    if (!this.quoteDraftService.quoteDraft || !request.actions?.length) {\n      return;\n    }\n\n    let flowState = this.quoteDraftService.quoteDraft;\n    request.actions.forEach(action => {\n      try {\n        flowState = this.executeActionScript(flowState, action) ?? flowState;\n      } catch (e) {\n        console.error(e);\n        this.toastService.add({ severity: ToastType.error, summary: String(e) });\n        throw e;\n      }\n    });\n\n    this.quoteDraftService.updateQuoteDraft(flowState);\n  }\n\n  private executeStatelessSelectors(request: FlowStateExecutionRequestDTO): FlowStateExecutionResult {\n    if (!this.quoteDraftService.quoteDraft) {\n      throw 'QuoteDraft is not initialized';\n    }\n\n    const flowState = this.quoteDraftService.quoteDraft;\n    return EntityUtil.entries(request.selectors ?? {}).reduce(\n      (result: FlowStateExecutionResult, [key, selector]) => {\n        try {\n          result.selectors[key] = {\n            success: true,\n            result: this.executeSelectorScript(flowState, selector),\n          };\n        } catch (e) {\n          console.error(e);\n          result.selectors[key] = {\n            success: false,\n            errorMessage: String(e),\n          };\n        }\n\n        return result;\n      },\n      { stateId: '', selectors: {} },\n    );\n  }\n\n  private getFlowSafe(): Flow {\n    if (!this.flowInfoService.flow) {\n      throw 'Flow is not defined';\n    }\n\n    return this.flowInfoService.flow;\n  }\n\n  private initProcessors$(): Observable<void> {\n    const hasOverrides = Boolean(this.customizationService?.getTemplateConfigurationProcessors);\n    const flow = this.getFlowSafe();\n\n    if (flow.properties.stateful && !hasOverrides) {\n      // Skip initialization as backend will take processors from SF\n      return of(undefined);\n    }\n\n    const owners$ = Object.values(this.flowInfoService.templates)\n      .map(template => {\n        if (!template) {\n          return;\n        }\n\n        const localProcessors$ =\n          this.customizationService?.getTemplateConfigurationProcessors?.(template.name) ?? of(null);\n\n        return localProcessors$.pipe(\n          switchMap(processors =>\n            processors ? of(processors) : this.processorsApiService.fetchConfigurationProcessors$(template.id),\n          ),\n          tap(processors => {\n            const processorsMap = processors.reduce((acc: Record<string, ConfigurationProcessor>, p) => {\n              acc[p.apiName] = p;\n              return acc;\n            }, {});\n\n            this.processors[template.id] = processorsMap;\n          }),\n        );\n      })\n      .filter(isDefined);\n\n    if (!owners$.length) {\n      return of(undefined);\n    }\n\n    return forkJoin(owners$).pipe(map(noop));\n  }\n\n  private executeActionScript(request: FlowState, executable: FlowStateExecutableDTO): FlowState | null {\n    const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n    if (!configurationProcessor?.script) {\n      const scope = this.getScopeByOwnerId(executable.ownerId);\n      const scopeText = scope ? ` in ${scope}` : '';\n      throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, executable.inputData) as FlowState;\n  }\n\n  private executeSelectorScript(request: FlowState, executable: FlowStateExecutableDTO): unknown {\n    const configurationProcessor = this.processors[executable.ownerId]?.[executable.apiName];\n\n    if (!configurationProcessor?.script) {\n      const scope = this.getScopeByOwnerId(executable.ownerId);\n      const scopeText = scope ? ` in ${scope}` : '';\n      throw `ConfigurationProcessor ${executable.apiName}${scopeText} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, executable.inputData);\n  }\n\n  private executeProcessorScript(\n    request: FlowState,\n    configurationProcessor: ConfigurationProcessor,\n    inputData: unknown,\n  ): unknown {\n    const scope = this.getScopeByOwnerId(configurationProcessor.ownerId ?? '');\n    let functionToExecute = this.executedFunctions[scope + configurationProcessor.apiName];\n\n    if (!functionToExecute) {\n      const script = `${configurationProcessor.script}\\nreturn transform;`;\n      const sourceMap = `\\n//# sourceURL=${scope ? scope + '/' : ''}${configurationProcessor.apiName}.js`;\n      functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n      this.executedFunctions[scope + configurationProcessor.apiName] = functionToExecute;\n    }\n\n    return functionToExecute({\n      request,\n      inputData,\n      flowStore: this.flowStore,\n    });\n  }\n\n  private generateRequestId(scope: UITemplateType, selectorName: string, inputData?: unknown): string {\n    const inputDataHash = UUID.hex(JSON.stringify(inputData) || '').slice(0, 8);\n    return `${scope}/${selectorName}/${inputDataHash}`;\n  }\n\n  private getDefaultExecutionRequestDTO(): FlowStateExecutionRequestDTO {\n    const request: FlowStateExecutionRequestDTO = {\n      actions: [],\n      selectors: {},\n    };\n\n    if (this.getFlowSafe().properties.standalone) {\n      return request;\n    }\n\n    const flowEngineTemplateId = this.getOwnerIdByScope(UITemplateType.FLOW_ENGINE);\n\n    request.actions?.push({\n      apiName: 'UPDATE_CONTEXT_PROPERTIES',\n      ownerId: flowEngineTemplateId,\n      inputData: this.contextService.resolve().properties,\n    });\n\n    return request;\n  }\n\n  private checkStatefulChanges(requestId: string, selectorResult: unknown) {\n    if (this.trackedStatefulChangesMap.has(requestId)) {\n      if (!this.initialStatefulData[requestId]) {\n        this.initialStatefulData[requestId] = selectorResult;\n      }\n\n      const hasChanges = !isEqual(this.initialStatefulData[requestId], selectorResult);\n      this.trackedStatefulChangesMap.set(requestId, hasChanges);\n    }\n  }\n}\n","import { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, entries, flatten, map, sortBy } from 'lodash';\n\nexport const findLineItem = (id: string, lineItems: LineItem[]): LineItem | undefined => {\n  return findLineItemWithComparator(lineItems, (li: LineItem) => li.id === id);\n};\n\nexport const findLineItemWithComparator = (\n  lineItems: LineItem[],\n  comparator: (li: LineItem) => boolean,\n): LineItem | undefined => {\n  let currentLevel = lineItems;\n\n  while (currentLevel.length) {\n    const found = currentLevel.find(comparator);\n\n    if (found) {\n      return found;\n    }\n\n    currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n  }\n\n  return;\n};\n\nexport const insertLineItem = (lineItem: LineItem, parentId: string, toInsert: LineItem): LineItem => {\n  const insertData = lineItem.id === parentId ? [toInsert] : [];\n  return {\n    ...lineItem,\n    lineItems: [\n      ...insertData,\n      ...lineItem.lineItems.map(li => {\n        return insertLineItem(li, parentId, toInsert);\n      }),\n    ],\n  };\n};\n\nexport const removeLineItem = (lineItem: LineItem, idToRemove: string): LineItem => {\n  return {\n    ...lineItem,\n    lineItems: lineItem.lineItems\n      .map(li => {\n        if (li.id === idToRemove) {\n          return;\n        } else if (li.lineItems.length) {\n          return removeLineItem(li, idToRemove);\n        }\n        return li;\n      })\n      .filter(r => !!r) as LineItem[],\n  };\n};\n\nexport const replaceLineItem = (\n  lineItem: LineItem,\n  replaceTo: LineItem,\n  skipCardinalityCalculation: boolean = false,\n): LineItem => {\n  if (lineItem.id === replaceTo.id) {\n    if (!skipCardinalityCalculation) {\n      return { ...recalculateCardinalityVariables(lineItem, replaceTo) };\n    } else {\n      return { ...replaceTo };\n    }\n  }\n\n  return {\n    ...lineItem,\n    lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),\n  };\n};\n\nconst collectCardinalityComputations = (portDomains: Dictionary<PortDomain>): Map<string, boolean> => {\n  const cardinalityComputations = new Map<string, boolean>();\n  entries(portDomains).forEach(([key, portDomain]) => {\n    cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');\n  });\n  return cardinalityComputations;\n};\n\nconst calculateCardinalityVariables = (\n  lineItems: LineItem[],\n  cardinalityComputations: Map<string, boolean>,\n): Map<string, number> => {\n  const cardVars = new Map<string, number>();\n  lineItems\n    .filter(({ port, type }) => !!port && !!type)\n    .forEach(li => {\n      if (cardinalityComputations.get(`${li.port}`)) {\n        const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n        cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n      }\n    });\n  return cardVars;\n};\n\nconst cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n  const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});\n  const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);\n  const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);\n\n  originalCardinalityVariables.forEach((value, key) => {\n    const execArray = cardinalityRegexp.exec(key);\n    const portName = execArray?.groups?.['portName'];\n    if (!portName || cardinalityComputations.get(portName)) {\n      if (cardinalityVariables.get(key) === value) {\n        // no need to update cardinality if no changes\n        cardinalityVariables.delete(key);\n      } else if (!cardinalityVariables.has(key)) {\n        // remove last item from port\n        cardinalityVariables.set(key, 0);\n      }\n    }\n  });\n\n  return {\n    ...updated,\n    attributes: upsertAttributes(\n      updated.attributes,\n      [...cardinalityVariables].map(([name, value]) => ({ name, value, cfgStatus: 'Changed' })),\n    ),\n  };\n};\n\nexport const mapAttributes = (attributes: Attribute[]): Dictionary<any> => {\n  return attributes.reduce((acc, { name, value }) => ({ ...acc, [name]: value }), {});\n};\n\nexport const getAttributes = (attributes: Attribute[], names: string[] = []): Attribute[] => {\n  const filtered = attributes.filter(({ name }) => names.includes(name));\n  return sortBy(filtered, [({ name }): number => names.indexOf(name)]);\n};\n\nexport const upsertAttributes = (originalAttributes: Attribute[], attributesToUpsert: NewAttribute[]): Attribute[] => {\n  return attributesToUpsert.reduce((acc, { name, value }) => {\n    const [origAttr] = getAttributes(acc, [name]);\n    return [\n      ...acc.filter(attr => attr.name !== name),\n      { ...(origAttr ?? { name, type: '' }), cfgStatus: origAttr ? 'Changed' : 'User', value },\n    ];\n  }, originalAttributes);\n};\n\nexport const patchAttributes = (\n  rootLineItem: LineItem,\n  id: string,\n  attrs: NewAttribute[],\n  skipCardinalityCalculation: boolean = false,\n): LineItem => {\n  const lineItem = findLineItem(id, [rootLineItem]);\n\n  if (!lineItem) {\n    return rootLineItem;\n  }\n\n  const attributes = upsertAttributes(lineItem.attributes, attrs);\n  return replaceLineItem(rootLineItem, { ...lineItem, attributes }, skipCardinalityCalculation);\n};\n\nexport const getAttributeValue = (attributes: Attribute[], name: string): any =>\n  attributes.find(attr => attr.name === name)?.value;\n\nexport const generateLineItem = (\n  port: string,\n  type: string,\n  parentId: string,\n  attributes: NewAttribute[] = [],\n  lineItems: LineItem[] = [],\n): LineItem => {\n  return {\n    id: UUID.UUID(),\n    port,\n    type,\n    actionCode: 'ADD',\n    cfgStatus: 'New',\n    attributes: attributes.map(({ name, value }) => ({ cfgStatus: 'User', name, value })),\n    lineItems,\n    parentId,\n    qty: 1,\n  } as LineItem;\n};\n\nexport const getRecommendedPrices = (portDomain: PortDomain, type: string): { net: number; list: number } => {\n  const domainType = portDomain.domainTypes.find(({ name }) => name === type);\n\n  const [net, list] = domainType?.recommendedPrices\n    ?.filter(({ chargeMethod }) => chargeMethod === 'ONE_TIME')\n    .reduce(\n      (acc, rp) => {\n        const [netPrice, listPrice] = acc;\n        return [netPrice + rp.netPrice, listPrice + rp.listPrice];\n      },\n      [0, 0],\n    ) ?? [0, 0];\n\n  return { net, list };\n};\n\nexport const getOriginParent = (lineItems: LineItem[], currentLineItem: LineItem): LineItem | undefined => {\n  let target: LineItem | undefined = currentLineItem;\n  while (target && target.rampInstanceId) {\n    target = lineItems.find(sub => sub.id === currentLineItem.rampInstanceId);\n  }\n  return target;\n};\n\nexport const assetPredicateFn = (lineItem: LineItem, assetId?: string): boolean => {\n  if (!assetId) {\n    return false;\n  }\n\n  return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;\n};\n\nexport const multiplyLineItems = (lineItem: LineItem, qty: number, split: boolean): LineItem[] => {\n  if (split) {\n    const unifyIds = (lineItem: LineItem): LineItem => ({\n      ...lineItem,\n      id: UUID.UUID(),\n      lineItems: lineItem.lineItems.map(unifyIds),\n    });\n\n    return map(new Array(qty), () => unifyIds(lineItem));\n  } else {\n    return [\n      {\n        ...lineItem,\n        qty: qty,\n      },\n    ];\n  }\n};\n\nexport const isTechnicalAttribute = (name: string): boolean => {\n  return name.startsWith('#') || name.startsWith('$');\n};\n\nexport const filterOutTechnicalAttributes = <T extends { name: string }>(attributes: T[]): T[] => {\n  return attributes.filter(({ name }) => !isTechnicalAttribute(name));\n};\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n  ConfigurationSettings,\n  DEFAULT_ACTION_CODE_LABELS,\n  DEFAULT_CURRENCY_ISO_CODE,\n  DEFAULT_CURRENCY_SYMBOL,\n  DEFAULT_DATE_FORMAT,\n  DEFAULT_DECIMALS_COUNT,\n  DEFAULT_DECIMAL_SEPARATOR,\n  DEFAULT_THOUSANDS_SEPARATOR,\n  Flow,\n  getSupportedDateFormats,\n  parseJsonSafely,\n  RuntimeConfigurationSettings,\n  RuntimeCurrencySettings,\n  ShoppingCartSetting,\n  ShoppingCartSettings,\n  validateDateFormat,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, map, Observable, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable()\nexport class RuntimeSettingsService {\n  private configurationSettings$ = new BehaviorSubject<RuntimeConfigurationSettings>({});\n  private currencySettings$ = new BehaviorSubject<RuntimeCurrencySettings>({\n    iso: DEFAULT_CURRENCY_ISO_CODE,\n    symbol: DEFAULT_CURRENCY_SYMBOL,\n  });\n  private formattingSettings!: FormattingSettings;\n  private shoppingCartSettings$ = new BehaviorSubject<ShoppingCartSetting[]>([]);\n\n  constructor(private configurationSettingsApiService: ConfigurationSettingsApiService) {}\n\n  public create(): Observable<void> {\n    return this.configurationSettingsApiService.fetchSettings().pipe(\n      map(settings => this.parseConfigurationSettings(settings)),\n      tap(configurationSettings => {\n        this.configurationSettings$.next(configurationSettings);\n        this.addShoppingCartSettings(configurationSettings['shopping-cart'] ?? []);\n        this.formattingSettings = this.getFormattingSettings();\n      }),\n      map(() => undefined),\n    );\n  }\n\n  public initCurrency(iso?: string): void {\n    if (iso) {\n      const symbol = this.getCurrencySymbol('en-US', iso);\n      this.currencySettings$.next({ iso, symbol });\n      if (this.formattingSettings) {\n        this.formattingSettings.currencySymbol = symbol;\n      }\n    }\n  }\n\n  public getFormattingSettings(): FormattingSettings {\n    if (this.formattingSettings) {\n      return this.formattingSettings;\n    }\n\n    const shoppingCartSettings = this.getConfigurationSettings()['shopping-cart']?.reduce((acc, setting) => {\n      return { ...acc, [setting.id]: setting.properties };\n    }, {} as ShoppingCartSettings);\n    const currencySettings = this.getCurrencySettings();\n    const dateFormat =\n      (validateDateFormat(shoppingCartSettings?.DATE_FORMAT ?? '') && shoppingCartSettings?.DATE_FORMAT) ||\n      DEFAULT_DATE_FORMAT;\n    const decimalSeparator = shoppingCartSettings?.DECIMAL_SEPARATOR;\n    const thousandsSeparator = shoppingCartSettings?.THOUSANDS_SEPARATOR;\n    // the number of decimal places can be 0\n    const priceScale = shoppingCartSettings?.PRICE_SCALE;\n    const decimalsCount =\n      priceScale !== null && priceScale !== '' && !isNaN(Number(priceScale)) && Number(priceScale) >= 0\n        ? Number(priceScale)\n        : DEFAULT_DECIMALS_COUNT;\n\n    const actionCodeSettings = shoppingCartSettings?.STATUS_LABEL;\n\n    return {\n      currencySymbol: currencySettings.symbol,\n      dateFormats: getSupportedDateFormats(dateFormat),\n      decimalsCount,\n      decimalSeparator:\n        decimalSeparator !== undefined && ['.', ','].includes(decimalSeparator)\n          ? decimalSeparator\n          : DEFAULT_DECIMAL_SEPARATOR,\n      // thousands separator can be a blank value, so it can also be null\n      thousandsSeparator:\n        thousandsSeparator !== undefined && ['.', ',', '', null].includes(thousandsSeparator)\n          ? thousandsSeparator || ''\n          : DEFAULT_THOUSANDS_SEPARATOR,\n      actionCodeLabels: actionCodeSettings?.length\n        ? actionCodeSettings.reduce(\n            (result, setting) => ({ ...result, [setting.status_label]: setting.custom_label }),\n            {},\n          )\n        : DEFAULT_ACTION_CODE_LABELS,\n    };\n  }\n\n  public getConfigurationSettings(): RuntimeConfigurationSettings {\n    return this.configurationSettings$.value;\n  }\n\n  public getShoppingCartSettings(): ShoppingCartSetting[] {\n    return this.shoppingCartSettings$.value;\n  }\n\n  public getCurrencySettings(): RuntimeCurrencySettings {\n    return this.currencySettings$.value;\n  }\n\n  private parseConfigurationSettings(settings: ConfigurationSettings[]): RuntimeConfigurationSettings {\n    return settings.reduce((acc: RuntimeConfigurationSettings, setting) => {\n      switch (setting.key) {\n        case 'shopping-cart':\n          acc['shopping-cart'] = parseJsonSafely<ShoppingCartSetting[]>(setting.value, []);\n          break;\n        case 'navigation':\n          acc.navigation = parseJsonSafely<Dictionary<boolean>>(setting.value, {});\n          break;\n        case 'flows':\n          acc.flows = parseJsonSafely<Flow[]>(setting.value, []);\n          break;\n        default:\n          acc[setting.key] = setting.value;\n      }\n\n      return acc;\n    }, {});\n  }\n\n  private getCurrencySymbol = (locale: string, currency: string) => {\n    return (0)\n      .toLocaleString(locale, { style: 'currency', currency, minimumFractionDigits: 0, maximumFractionDigits: 0 })\n      .replace(/\\d/g, '')\n      .trim();\n  };\n\n  public addShoppingCartSettings(settings: ShoppingCartSetting[]) {\n    // uniqBy removes items with the biggest index\n    const newSettings = uniqBy([...settings, ...this.shoppingCartSettings$.value], 'id');\n    this.shoppingCartSettings$.next(newSettings);\n  }\n}\n","import { LineItem, NewAttribute } from '@veloceapps/core';\nimport { insertLineItem, patchAttributes, removeLineItem, replaceLineItem } from './line-item.utils';\n\nexport class LineItemWorker {\n  public li: LineItem;\n\n  constructor(src: LineItem) {\n    this.li = { ...src };\n  }\n\n  public insert(parentId: string, toInsert: LineItem): LineItemWorker {\n    return new LineItemWorker(insertLineItem(this.li, parentId, toInsert));\n  }\n\n  public remove(id: string): LineItemWorker {\n    return new LineItemWorker(removeLineItem(this.li, id));\n  }\n\n  public replace(toReplace: LineItem, skipCardinalityCalculation: boolean = false): LineItemWorker {\n    return new LineItemWorker(replaceLineItem(this.li, toReplace, skipCardinalityCalculation));\n  }\n\n  public patchAttribute(\n    attrs: NewAttribute[],\n    id?: string,\n    skipCardinalityCalculation: boolean = false,\n  ): LineItemWorker {\n    return new LineItemWorker(patchAttributes(this.li, id ?? this.li.id, attrs, skipCardinalityCalculation));\n  }\n}\n","import { UIDefinition, UIDefinitionMetadata } from '@veloceapps/core';\nimport { omit } from 'lodash';\n\nexport function extractMetadata(uiDefinition: UIDefinition): UIDefinitionMetadata {\n  return omit<UIDefinition, keyof Omit<UIDefinition, keyof UIDefinitionMetadata>>(uiDefinition, [\n    'children',\n    'pages',\n    'components',\n  ]);\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { ConfirmationComponent, ConfirmationConfig, ToastType } from '@veloceapps/components';\nimport {\n  Charge,\n  CompiledPricePlan,\n  ConfigurationContext,\n  ConfigurationMode,\n  ConfigurationRequest,\n  ConfigurationTranslatorUtils,\n  ConfigurePrice,\n  extractErrorDetails,\n  LineItem,\n  NewAttribute,\n  PatchLineItemOptions,\n  RuntimeModel,\n  UIDefinitionProps,\n  VlWindow,\n} from '@veloceapps/core';\nimport { cloneDeep, Dictionary, transform } from 'lodash';\nimport { MessageService } from 'primeng/api';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { BehaviorSubject, Observable, shareReplay, throwError } from 'rxjs';\nimport { catchError, finalize, first, map, switchMap, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { RuntimeSettingsService } from '../../../services/runtime-settings.service';\nimport { RuntimeContext, RuntimeStep } from '../../../types';\nimport { assetPredicateFn } from '../../../utils';\nimport { LineItemWorker } from '../../../utils/line-item.worker';\nimport { getDefaultLineItem, getGuidedSellingConfigurationRequest } from '../helpers';\nimport { ExternalConfigurationProps, GuidedSellingSubmitData } from '../types/configuration.types';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\n\ndeclare const window: VlWindow;\n\n@Injectable()\nexport class ConfigurationService {\n  private mode = ConfigurationMode.SEARCH;\n  private configurableRamp: LineItem | undefined;\n\n  private configurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n  private previousConfigurationState = new BehaviorSubject<ConfigurePrice | null>(null);\n  private isLoadingSubj$ = new BehaviorSubject(false);\n\n  public isLoading$ = this.isLoadingSubj$.asObservable();\n  public hasUnsavedChanges = false;\n\n  constructor(\n    private quoteDraftService: QuoteDraftService,\n    private runtimeService: ConfigurationRuntimeService,\n    private contextService: ContextService,\n    private configurationApiService: ConfigurationApiService,\n    private messageService: MessageService,\n    private dialogService: DialogService,\n    private runtimeSettings: RuntimeSettingsService,\n  ) {}\n\n  public reset(): void {\n    this.hasUnsavedChanges = false;\n    this.runtimeService.reset();\n\n    this.configurableRamp = undefined;\n    this.configurationState.next(null);\n    this.previousConfigurationState.next(null);\n  }\n\n  public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n    const source = this.getSnapshot();\n    if (!source) {\n      return throwError(() => new Error(`Source LineItem not found`));\n    }\n\n    const skipCardinalityCalculation =\n      options?.skipCardinalityCalculation || this.contextSnapshot.properties['#skipCardinalityCalculation'] === 'true';\n\n    this.configurableRamp = new LineItemWorker(source).replace(lineItem, skipCardinalityCalculation).li;\n\n    return this.configure().pipe(\n      catchError(error => {\n        console.error(error);\n\n        if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n          this.messageService.add({ severity: 'error', summary: error });\n        }\n\n        // bounce back if configuration call has failed\n        const prevState = this.configurationState.value;\n        this.configurationState.next(prevState ? { ...prevState } : null);\n\n        return throwError(() => error);\n      }),\n      tap(() => {\n        if (!this.hasUnsavedChanges) {\n          this.hasUnsavedChanges = true;\n        }\n      }),\n    );\n  }\n\n  public patch(lineItem: LineItem, options?: PatchLineItemOptions): void {\n    this.patch$(lineItem, options).subscribe();\n  }\n\n  public setConfigurableRamp(lineItem: LineItem): void {\n    this.configurableRamp = lineItem;\n  }\n\n  public get(): Observable<LineItem | undefined> {\n    return this.configurationState.pipe(\n      map(state => state?.lineItem),\n      shareReplay(),\n    );\n  }\n\n  public getSnapshot(): LineItem | undefined {\n    return this.configurationState.value?.lineItem ? { ...this.configurationState.value?.lineItem } : undefined;\n  }\n\n  public getRuntimeModel(): RuntimeModel {\n    const runtimeModel = this.runtimeService.runtimeModel;\n    if (!runtimeModel) {\n      throw new Error('Runtime model not initialized');\n    }\n\n    return runtimeModel;\n  }\n\n  public getRuntimeContext(): RuntimeContext {\n    const runtimeContext = this.runtimeService.runtimeContext;\n    if (!runtimeContext) {\n      throw new Error('Runtime context not initialized');\n    }\n\n    return runtimeContext;\n  }\n\n  public get state$(): Observable<ConfigurePrice | null> {\n    return this.configurationState.asObservable();\n  }\n\n  public get stateSnapshot(): ConfigurePrice | null {\n    return this.configurationState.value;\n  }\n\n  public get previousStateSnapshot(): ConfigurePrice | null {\n    return this.previousConfigurationState.value;\n  }\n\n  public get contextSnapshot(): ConfigurationContext {\n    return this.contextService.resolve();\n  }\n\n  public get context$(): Observable<ConfigurationContext> {\n    return this.contextService.resolve$();\n  }\n\n  public get charges$(): Observable<Dictionary<Charge>> {\n    return this.configurationState.pipe(map(state => state?.charges ?? {}));\n  }\n\n  public get chargesSnapshot(): Dictionary<Charge> {\n    return this.configurationState.value?.charges ?? {};\n  }\n\n  public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n    return this.configurationState.pipe(map(state => state?.pricePlans ?? {}));\n  }\n\n  public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n    return this.configurationState.value?.pricePlans ?? {};\n  }\n\n  public get procedureContext$(): Observable<Dictionary<unknown>> {\n    return this.configurationState.pipe(map(state => state?.procedureContext ?? {}));\n  }\n\n  public get procedureContextSnapshot(): Dictionary<unknown> {\n    return this.configurationState.value?.procedureContext ?? {};\n  }\n\n  public configure(): Observable<LineItem> {\n    return this.configureRequest$(this.generateRequest());\n  }\n\n  public configureRequest$(configurationRequest: ConfigurationRequest): Observable<LineItem> {\n    const runtimeContext = this.getRuntimeContext();\n    const runtimeModel = this.getRuntimeModel();\n    const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n    const mainPricingEnabled = runtimeContext.properties?.PricingEnabled;\n    const pricingEnabled = mainPricingEnabled ? mainPricingEnabled === 'true' : uiDefinitionProperties.pricingEnabled;\n    const customPriceApi = this.runtimeSettings.getConfigurationSettings()['CUSTOM_PRICE_API'];\n\n    this.isLoadingSubj$.next(true);\n\n    const configure$ =\n      pricingEnabled && customPriceApi\n        ? this.configurationApiService.customConfigurePrice({ url: customPriceApi, configurationRequest, runtimeModel })\n        : this.configurationApiService.configureLineItem({\n            configurationRequest,\n            runtimeModel,\n            pricingEnabled,\n          });\n\n    return configure$.pipe(\n      tap(result => {\n        this.contextService.update(result.context);\n        this.configurationState.next(result);\n        this.previousConfigurationState.next(cloneDeep(result));\n\n        if (result.deletedLineItems?.length) {\n          this.showInactiveProductsConfirmation();\n        }\n\n        this.configurableRamp = result.lineItem;\n      }),\n      map(({ lineItem }) => lineItem),\n      catchError(error =>\n        throwError(() => {\n          const resetState = this.previousConfigurationState.value;\n          if (resetState) {\n            this.previousConfigurationState.next(cloneDeep(resetState));\n            this.configurationState.next(resetState);\n          }\n          if (error.error) {\n            return extractErrorDetails(error.error).join('. ');\n          }\n          return error.message || JSON.stringify(error);\n        }),\n      ),\n      finalize(() => this.isLoadingSubj$.next(false)),\n    );\n  }\n\n  public configureExternal$(props: ExternalConfigurationProps): Observable<LineItem> {\n    return this.runtimeService\n      .init({ productId: props.productId, defaultQty: props.qty, attributesMap: props.attributesMap })\n      .pipe(\n        switchMap(() => this.configure()),\n        first(),\n        catchError(error => {\n          this.messageService.add({ severity: ToastType.error, summary: error });\n          throw error;\n        }),\n        finalize(() => this.reset()),\n      );\n  }\n\n  public configureGuidedSelling$(data: GuidedSellingSubmitData): Observable<ConfigurePrice> {\n    return this.configurationApiService\n      .configureLineItem({\n        configurationRequest: getGuidedSellingConfigurationRequest(data, this.contextService.resolve()),\n      })\n      .pipe(\n        catchError(error => {\n          if (error instanceof HttpErrorResponse) {\n            this.messageService.add({ severity: ToastType.error, summary: error.error.message || error.error });\n          }\n          throw error;\n        }),\n      );\n  }\n\n  public generateRequest(lightMode: boolean = true): ConfigurationRequest {\n    const lineItem = this.generateLineItem();\n\n    let request: ConfigurationRequest = {\n      lineItem,\n      mode: this.mode,\n      step: !this.configurationState.value?.lineItem ? RuntimeStep.START : RuntimeStep.UPDATE,\n      attributeDomainMode: 'ALL',\n      context: this.contextService.resolve(),\n      lineItems: this.quoteDraftService.quoteDraft?.currentState || [],\n      asset: this.getAsset(),\n    };\n\n    if (lightMode) {\n      request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n    }\n\n    return request;\n  }\n\n  public generateLineItem(): LineItem {\n    const runtimeContext = this.getRuntimeContext();\n    const uiDefinitionProperties = this.getUIDefinitionProperties();\n\n    let lineItem = this.configurableRamp;\n    if (!lineItem) {\n      const { initializationProps } = this.runtimeService ?? {};\n\n      lineItem = getDefaultLineItem(runtimeContext, uiDefinitionProperties, initializationProps?.defaultQty);\n\n      // Set default attributes\n      if (initializationProps?.attributesMap) {\n        const attributes = transform(\n          initializationProps?.attributesMap,\n          (acc: NewAttribute[], value, name) => acc.push({ name, value }),\n          [],\n        );\n\n        lineItem = new LineItemWorker(lineItem).patchAttribute(attributes).li;\n      }\n    }\n\n    return lineItem;\n  }\n\n  public getAsset(): LineItem | undefined {\n    const lineItem = this.configurableRamp;\n    if (!lineItem) {\n      return;\n    }\n\n    const assetId = lineItem.assetId ?? lineItem.openOrderLineItemId;\n    return this.quoteDraftService.assetsState?.initialState.find(li => assetPredicateFn(li, assetId));\n  }\n\n  private getUIDefinitionProperties(): UIDefinitionProps {\n    return {\n      ...(this.getRuntimeContext().uiDefinitionContainer?.source.properties ?? {}),\n      ...(this.runtimeService.uiDefinitionProperties ?? {}),\n    };\n  }\n\n  private showInactiveProductsConfirmation(): void {\n    const confirmationConfig: ConfirmationConfig = {\n      title: ' ',\n      description: 'This quote contains inactive products. Do you want to remove them?',\n      primaryButtonLabel: 'Remove products',\n      secondaryButtonLabel: 'Back to Quote',\n    };\n\n    this.dialogService\n      .open(ConfirmationComponent, {\n        dismissableMask: false,\n        closeOnEscape: false,\n        closable: false,\n        showHeader: true,\n        header: `Inactive Products in Quote`,\n        width: '440px',\n        data: { confirmationConfig },\n      })\n      .onClose.subscribe(result => {\n        if (!result) {\n          const context = this.contextService.resolve();\n          window['VELO_BACK_FN'].apply(null, [context.headerId]);\n        }\n      });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Charge, ChargeGroupUtils, LineItem } from '@veloceapps/core';\nimport { Dictionary, flatten } from 'lodash';\nimport moment from 'moment';\nimport { LineItemWorker } from '../../../utils';\nimport { FlowUpdateParams } from '../types/update.types';\n\n@Injectable()\nexport class FlowUpdateService {\n  public update(rootLineItems: LineItem[], updates: FlowUpdateParams[], charges?: Dictionary<Charge>): void {\n    let remainingUpdates = [...updates];\n    let currentLevel = rootLineItems;\n\n    while (currentLevel.length && remainingUpdates.length) {\n      currentLevel.forEach(li => {\n        const unhandledUpdates: FlowUpdateParams[] = [];\n\n        remainingUpdates.forEach(update => {\n          let updated = false;\n\n          switch (update.dataType) {\n            case 'LINEITEM':\n              updated = this.applyLineItemUpdate(li, update, charges);\n              break;\n            case 'CHARGE':\n              updated = this.applyChargeUpdate(li, update);\n              break;\n            case 'GROUP_CHARGE':\n              updated = this.applyChargeGroupUpdate(li, update);\n              break;\n            default:\n              // Unknown dataType. Do not try to handle it anymore\n              updated = true;\n          }\n\n          if (!updated) {\n            unhandledUpdates.push(update);\n          }\n        });\n\n        remainingUpdates = unhandledUpdates;\n      });\n\n      currentLevel = flatten(currentLevel.map(parent => parent.lineItems));\n    }\n  }\n\n  public delete(lineItems: LineItem[], id: string): LineItem[] {\n    const idsToRemove: string[] = [id];\n    const topLevelLineItem = lineItems.find(li => li.id === id);\n\n    if (topLevelLineItem) {\n      // find term-related line items (which are only top level)\n      // expired term line items won't be deleted\n      let foundTermLineItem: LineItem | undefined = topLevelLineItem;\n\n      while (foundTermLineItem) {\n        foundTermLineItem = lineItems.find(li => foundTermLineItem && li.rampInstanceId === foundTermLineItem.id);\n        if (foundTermLineItem) {\n          idsToRemove.push(foundTermLineItem.id);\n        }\n      }\n    }\n\n    const filtered = lineItems.filter(lineItem => !idsToRemove.includes(lineItem.id));\n    return filtered.map(lineItem => new LineItemWorker(lineItem).remove(id).li);\n  }\n\n  private applyLineItemUpdate(lineItem: LineItem, update: FlowUpdateParams, charges?: Dictionary<Charge>): boolean {\n    if (lineItem.id !== update.id) {\n      return false;\n    }\n\n    switch (update.attributeType) {\n      case 'QTY':\n        lineItem.qty = update.newValue;\n        break;\n      case 'EFFECTIVE_START_DATE':\n        lineItem.properties['StartDate'] = moment(update.newValue).format('YYYY-MM-DD');\n        break;\n      case 'END_DATE':\n        lineItem.properties['EndDate'] = moment(update.newValue).format('YYYY-MM-DD');\n        break;\n      case 'PRICE_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.priceAdjustment = update.newValue;\n          }\n        }\n        break;\n      case 'LIST_PRICE_ADJUSTMENT':\n      case 'MARGIN_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.listPriceAdjustment = update.newValue;\n          }\n        }\n        break;\n      case 'COST_ADJUSTMENT':\n        {\n          const charge = lineItem.chargeItems.find(charge => (charges || {})[charge.chargeId]?.main);\n          if (charge) {\n            charge.costAdjustment = update.newValue;\n          }\n        }\n        break;\n      default:\n        throw new Error(`Not suppored AttributeType for LineItem update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n\n  private applyChargeUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n    const foundCharge = lineItem.chargeItems.find(({ id }) => id === update.id);\n    if (!foundCharge) {\n      return false;\n    }\n\n    if (update.attributeType === 'PRICE_ADJUSTMENT') {\n      foundCharge.priceAdjustment = update.newValue;\n    } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n      foundCharge.listPriceAdjustment = update.newValue;\n    } else {\n      throw new Error(`Not suppored AttributeType for Charge Item update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n\n  private applyChargeGroupUpdate(lineItem: LineItem, update: FlowUpdateParams): boolean {\n    const foundChargeGroup = ChargeGroupUtils.findChargeGroupById(update.id, lineItem);\n    if (!foundChargeGroup) {\n      return false;\n    }\n\n    if (update.attributeType === 'PRICE_ADJUSTMENT') {\n      foundChargeGroup.priceAdjustment = update.newValue;\n    } else if (update.attributeType === 'LIST_PRICE_ADJUSTMENT') {\n      foundChargeGroup.listPriceAdjustment = update.newValue;\n    } else {\n      throw new Error(`Not suppored AttributeType for Charge Group Item update: ${update.attributeType}`);\n    }\n\n    return true;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { cloneDeep, Dictionary } from 'lodash';\nimport { catchError, map, noop, Observable, of, shareReplay, Subject, switchMap, tap, throwError } from 'rxjs';\nimport { ContextService } from '../../../services/context.service';\nimport { QuoteDraftService } from '../../../services/quote-draft.service';\nimport { multiplyLineItems } from '../../../utils/line-item.utils';\nimport { ExternalConfigurationProps } from '../../configuration';\nimport { ConfigurationService } from '../../configuration/services/configuration.service';\nimport { FlowUpdateParams } from '../types/update.types';\nimport { FlowUpdateService } from './flow-update.service';\nimport { FlowInfoService } from '../../../services';\n\n@Injectable()\nexport class FlowConfigurationService {\n  /**\n   * An event being fired when QuoteDraft was updated\n   */\n  public updated$: Observable<void>;\n\n  private updatedSubj$ = new Subject<void>();\n\n  constructor(\n    private proceduresApiService: ProceduresApiService,\n    private contextService: ContextService,\n    private quoteDraftService: QuoteDraftService,\n    private updateService: FlowUpdateService,\n    private configurationService: ConfigurationService,\n    private flowInfoService: FlowInfoService,\n  ) {\n    this.updated$ = this.updatedSubj$.asObservable();\n  }\n\n  public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n    return this.extendedApply$(quoteDraft).pipe(\n      tap(result => {\n        // sort the result current state based on the quote draft initial state\n        const initialStateIds = quoteDraft.initialState.map(lineItem => lineItem.integrationId);\n        result.currentState = result.currentState\n          .slice()\n          .sort((a, b) => initialStateIds.indexOf(a.integrationId) - initialStateIds.indexOf(b.integrationId));\n        this.quoteDraftService.updateQuoteDraft(result);\n      }),\n      map(noop),\n    );\n  }\n\n  public calculate(quoteDraft: QuoteDraft): void {\n    this.calculate$(quoteDraft).subscribe();\n  }\n\n  public update$(updates: FlowUpdateParams[]): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return of([]).pipe(\n      map(() => {\n        const updatedState = cloneDeep(quoteDraft.currentState);\n        this.updateService.update(updatedState, updates, quoteDraft.charges);\n        return updatedState;\n      }),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public update(updates: FlowUpdateParams[]): void {\n    this.update$(updates).subscribe();\n  }\n\n  public revert$(lineItemId: string): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n    const initialCurrentState = this.quoteDraftService.getInitialCurrentState();\n    const currentState = this.quoteDraftService.currentState;\n\n    const currentLineItemIndex = currentState.findIndex(({ id }) => id === lineItemId);\n    const currentLineItem = currentState[currentLineItemIndex];\n\n    const initialLineItem = initialCurrentState.find(\n      ({ integrationId }) => integrationId === currentLineItem?.integrationId,\n    );\n\n    if (!quoteDraft || !currentLineItem || !initialLineItem) {\n      return of(null);\n    }\n\n    const updatedState = cloneDeep(currentState);\n    updatedState.splice(currentLineItemIndex, 1, initialLineItem);\n\n    return of([]).pipe(\n      tap(() => {\n        this.quoteDraftService.setCurrentLineItemState(updatedState);\n      }),\n      switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public revert(lineItemId: string): void {\n    this.revert$(lineItemId).subscribe();\n  }\n\n  public delete$(ids: string[]): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n    const currentState = this.quoteDraftService.currentState;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return of([]).pipe(\n      map(() => ids.reduce((result, id) => this.updateService.delete(result, id), currentState)),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public delete(ids: string[]): void {\n    this.delete$(ids).subscribe();\n  }\n\n  public addTerm$(term: LineItem): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    const updatedState = [...quoteDraft.currentState, term];\n\n    return of([]).pipe(\n      switchMap(() => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public addToCart$(props: ExternalConfigurationProps): Observable<QuoteDraft | null> {\n    const quoteDraft = this.quoteDraftService.quoteDraft;\n\n    if (!quoteDraft) {\n      return of(null);\n    }\n\n    return this.configurationService.configureExternal$(props).pipe(\n      map(lineItem => {\n        const model = this.configurationService.getRuntimeModel();\n        const split = model?.types.find(type => type.name === lineItem.type)?.split ?? false;\n        const lineItems = multiplyLineItems(lineItem, props.qty ?? 1, split);\n\n        return [...quoteDraft.currentState, ...lineItems];\n      }),\n      switchMap(updatedState => this.calculate$({ ...quoteDraft, currentState: updatedState })),\n      map(() => this.quoteDraftService.quoteDraft),\n      tap(() => this.updatedSubj$.next()),\n      this.handleErrorAndBounceBack(),\n    );\n  }\n\n  public get(): Observable<LineItem[]> {\n    return this.quoteDraftService.quoteDraft$.pipe(\n      map(() => this.quoteDraftService.currentState),\n      shareReplay(),\n    );\n  }\n\n  public getSnapshot(): LineItem[] {\n    return this.quoteDraftService?.currentState.slice() ?? [];\n  }\n\n  public get charges$(): Observable<Dictionary<Charge>> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ charges }) => charges));\n  }\n\n  public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ pricePlans }) => pricePlans));\n  }\n\n  public get activeMetrics$(): Observable<MetricRule[]> {\n    return this.quoteDraftService.quoteDraft$.pipe(map(({ activeMetrics }) => activeMetrics));\n  }\n\n  public get chargesSnapshot(): Dictionary<Charge> {\n    return this.quoteDraftService.quoteDraft?.charges ?? {};\n  }\n\n  public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n    return this.quoteDraftService.quoteDraft?.pricePlans ?? {};\n  }\n\n  public get activeMetricsSnapshot(): MetricRule[] {\n    return this.quoteDraftService.quoteDraft?.activeMetrics ?? [];\n  }\n\n  public get contextSnapshot(): ConfigurationContext {\n    return this.contextService.resolve();\n  }\n\n  public get context$(): Observable<ConfigurationContext> {\n    return this.contextService.resolve$();\n  }\n\n  private handleErrorAndBounceBack() {\n    return <T>(source$: Observable<T>): Observable<T> => {\n      return source$.pipe(\n        catchError(error => {\n          console.error(error);\n\n          // bounce back if configuration call has failed\n          const quoteDraft = this.quoteDraftService.quoteDraft;\n          if (quoteDraft) {\n            this.quoteDraftService.updateQuoteDraft(quoteDraft);\n            this.updatedSubj$.next();\n          }\n\n          return throwError(() => error);\n        }),\n      );\n    };\n  }\n\n  private extendedApply$(quoteDraft: QuoteDraft): Observable<QuoteDraft> {\n    const request = { ...quoteDraft };\n    const procedureName = this.flowInfoService.flow?.properties.procedureName;\n    if (procedureName) {\n      request.procedureName = procedureName;\n    }\n    return this.proceduresApiService.apply$(request);\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n  imports: [ApiModule],\n  providers: [FlowConfigurationService, FlowUpdateService],\n})\nexport class FlowConfigurationModule {}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService } from '@veloceapps/api';\nimport { BehaviorSubject, map, noop, Observable, of, switchMap, tap } from 'rxjs';\nimport { generateConfigurationLineItem, NewConfigurationProps } from '../modules/configuration';\nimport { FlowConfigurationService } from '../modules/flow-configuration';\nimport { FlowInfoService } from './flow-info.service';\nimport { FlowStateService } from './flow-state.service';\n\n@Injectable()\nexport class FlowStateConfigurationService {\n  private configurationStateId$ = new BehaviorSubject<string | null>(null);\n\n  constructor(\n    private flowInfoService: FlowInfoService,\n    private flowConfigurationService: FlowConfigurationService,\n    private flowStateApiService: FlowStateApiService,\n    private flowStateService: FlowStateService,\n  ) {}\n\n  public get configurationStateId(): string | null {\n    return this.configurationStateId$.value;\n  }\n\n  public addToCart$(props: NewConfigurationProps): Observable<void> {\n    let request$;\n    const stateful = this.flowInfoService.flow?.properties.stateful;\n    if (stateful) {\n      const stateId = this.flowStateService.stateId;\n      if (!stateId) {\n        request$ = of();\n      } else {\n        const lineItem = generateConfigurationLineItem(props, props.qty);\n        request$ = this.flowStateApiService.newConfiguration(stateId, { lineItem }).pipe(\n          tap(r => this.configurationStateId$.next(r.stateId)),\n          switchMap(() => {\n            if (!this.configurationStateId) {\n              return of();\n            }\n            return this.flowStateApiService.saveConfiguration(stateId, this.configurationStateId).pipe(\n              tap(() => this.configurationStateId$.next(null)),\n              map(noop),\n            );\n          }),\n        );\n      }\n    } else {\n      request$ = this.flowConfigurationService.addToCart$(props).pipe(map(noop));\n    }\n\n    return request$.pipe(\n      switchMap(() => this.flowStateService.executeRequest$({}, true)),\n      map(noop),\n    );\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, filter, map, Observable, Subject } from 'rxjs';\nimport { IntegrationAction, IntegrationStateModel } from '../types/integration.types';\n\n@Injectable()\nexport class IntegrationState<S = IntegrationStateModel> {\n  private readonly stateSubj$ = new BehaviorSubject<S>({} as S);\n  private readonly action$ = new Subject<IntegrationAction>();\n\n  public get state$(): Observable<S> {\n    return this.stateSubj$.asObservable();\n  }\n\n  public get state(): S {\n    return this.stateSubj$.getValue();\n  }\n\n  public patchState(update: Partial<S>): void {\n    this.stateSubj$.next({ ...this.stateSubj$.getValue(), ...update });\n  }\n\n  public dispatch(action: IntegrationAction): void {\n    this.action$.next(action);\n  }\n\n  public listen$<P = any>(actionType: string): Observable<P> {\n    return this.action$.pipe(\n      filter(action => action.type === actionType),\n      map(action => action.payload as P),\n    );\n  }\n\n  public listenAll$<T extends IntegrationAction>(): Observable<T> {\n    return this.action$.asObservable() as Observable<T>;\n  }\n\n  public clear(): void {\n    this.stateSubj$.next({} as S);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ProductApiService } from '@veloceapps/api';\nimport { Dictionary } from 'lodash';\nimport { BehaviorSubject, catchError, distinctUntilChanged, map, Observable, of, tap } from 'rxjs';\n\n@Injectable()\nexport class ProductImagesService {\n  private imagesMap$ = new BehaviorSubject<Dictionary<string>>({});\n\n  constructor(private productApiService: ProductApiService) {}\n\n  public getImageUrl$(productId: string): Observable<string | null> {\n    if (this.imagesMap$.value[productId] == null) {\n      this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: '' });\n      this.fetchProductImage(productId);\n    }\n\n    return this.imagesMap$.pipe(\n      map(imagesMap => imagesMap[productId] ?? null),\n      distinctUntilChanged(),\n    );\n  }\n\n  private fetchProductImage(productId: string): void {\n    this.productApiService\n      .fetchImage$(productId)\n      .pipe(\n        map(file => URL.createObjectURL(file)),\n        catchError(() => of('')),\n        tap(url => this.imagesMap$.next({ ...this.imagesMap$.value, [productId]: url })),\n      )\n      .subscribe();\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { isNotLegacyUIDefinition, RuntimeData, RuntimeModel, UIDefinitionContainer } from '@veloceapps/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\n\n@Injectable()\nexport class RuntimeContextService {\n  constructor(private configurationApiService: ConfigurationApiService) {}\n\n  public getRuntimeContext(productId: string, offeringId?: string): Observable<RuntimeContext> {\n    return this.configurationApiService.getRuntimeDataByProductId(productId, offeringId).pipe(\n      map(runtimeData => {\n        const uiDefinitionContainer = this.getUIDefinitionContainer(runtimeData);\n        const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);\n        const { productName, properties } =\n          Array.from(runtimeModel.components.values()).find(c => c.productId === productId) ?? {};\n\n        const uiDefinitionProperties = uiDefinitionContainer?.source.properties;\n\n        return {\n          modelId: runtimeData.modelId,\n          uiDefinitionContainer: uiDefinitionContainer,\n          runtimeModel: runtimeModel,\n          runtimeMode: RuntimeMode.PROD,\n          productId: productId,\n          productType: properties?.['displayName'] || productName,\n          offeringId: offeringId,\n          properties: {\n            PricingEnabled: uiDefinitionProperties?.pricingEnabled ? 'true' : 'false',\n            PriceListId: uiDefinitionProperties?.priceList,\n          },\n        } satisfies RuntimeContext;\n      }),\n    );\n  }\n\n  private getUIDefinitionContainer(runtimeData: RuntimeData): UIDefinitionContainer | undefined {\n    const containers = runtimeData.uiDefinitions.filter(container => isNotLegacyUIDefinition(container.source));\n    return containers.find(container => container.source.primary) ?? containers[0];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationApiService } from '@veloceapps/api';\nimport { RuntimeModel, SalesforceIdUtils, UIDefinitionContainer, UIDefinitionProps } from '@veloceapps/core';\nimport { Dictionary } from 'lodash';\nimport { combineLatest, Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { ContextService } from '../../../services';\nimport { RuntimeContext, RuntimeMode } from '../../../types';\nimport { RuntimeInitializationProps } from '../types/configuration-runtime.types';\nimport { RuntimeContextService } from './runtime-context.service';\n\n@Injectable()\nexport class ConfigurationRuntimeService {\n  private _runtimeContext?: RuntimeContext;\n  private _isInitialized = false;\n\n  public initializationProps?: RuntimeInitializationProps;\n  public uiDefinitionProperties: UIDefinitionProps = {};\n\n  constructor(\n    private apiService: ConfigurationApiService,\n    private contextService: ContextService,\n    private runtimeContextService: RuntimeContextService,\n  ) {}\n\n  public reset(): void {\n    this._isInitialized = false;\n    this._runtimeContext = undefined;\n    this.initializationProps = undefined;\n    this.uiDefinitionProperties = {};\n  }\n\n  public initTestMode(uiDefinitionContainer: UIDefinitionContainer): Observable<RuntimeContext> {\n    this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n    const uiDefinitionExternals = uiDefinitionContainer.source.externals ?? {};\n\n    return combineLatest([\n      this.apiService.getRuntimeDataByModelId(uiDefinitionContainer.modelId),\n      this.contextService.initTestMode(),\n    ]).pipe(\n      first(),\n      map(([runtimeData, context]) => {\n        this.contextService.update({\n          properties: {\n            ...this.runtimeContext?.properties,\n            ...context.properties,\n            ModelId: uiDefinitionContainer.modelId,\n            PricingEnabled: this.uiDefinitionProperties.pricingEnabled ? 'true' : 'false',\n            PriceListId: this.uiDefinitionProperties.priceList,\n            offeringId: this.uiDefinitionProperties.offeringId,\n            ...uiDefinitionExternals,\n          },\n        });\n\n        this._runtimeContext = {\n          modelId: uiDefinitionContainer.modelId,\n          runtimeModel: RuntimeModel.create(runtimeData.types, runtimeData.products),\n          runtimeMode: RuntimeMode.TEST,\n          uiDefinitionContainer,\n        };\n\n        return this._runtimeContext;\n      }),\n      tap(() => (this._isInitialized = true)),\n    );\n  }\n\n  public init(props: RuntimeInitializationProps): Observable<RuntimeContext> {\n    this.initializationProps = props;\n    const context = this.contextService.resolve();\n\n    return this.runtimeContextService.getRuntimeContext(props.productId, props.offeringId).pipe(\n      tap(runtimeContext => {\n        this.uiDefinitionProperties = runtimeContext.uiDefinitionContainer?.source.properties ?? {};\n        const { PriceListId } = context.properties ?? {};\n\n        const mergeContext: RuntimeContext = {\n          ...runtimeContext,\n          properties: {\n            ...runtimeContext.properties,\n            ...context.properties,\n            PricingEnabled: PriceListId ? 'true' : 'false',\n          },\n        };\n\n        this.id15to18('AccountId', mergeContext.properties);\n        this._runtimeContext = mergeContext;\n\n        if (context.properties && this._runtimeContext.properties?.StartDate) {\n          this.contextService.update({\n            properties: {\n              ...this._runtimeContext.properties,\n              ...context.properties,\n            },\n          });\n        }\n\n        return this._runtimeContext;\n      }),\n      tap(() => (this._isInitialized = true)),\n    );\n  }\n\n  public overrideUIDefinition(uiDefinitionContainer: UIDefinitionContainer): void {\n    if (!this._runtimeContext) {\n      return;\n    }\n\n    this._runtimeContext.uiDefinitionContainer = uiDefinitionContainer;\n    this.uiDefinitionProperties = uiDefinitionContainer.source.properties ?? {};\n  }\n\n  private id15to18(propertyName: string, source?: Dictionary<any>): void {\n    if (!source) {\n      return;\n    }\n\n    const value = source[propertyName];\n\n    if (typeof value === 'string' && value.length === 15) {\n      source[propertyName] = SalesforceIdUtils.generateId18FromId15(value);\n    }\n  }\n\n  public get isInitialized(): boolean {\n    return this._isInitialized;\n  }\n\n  public get runtimeModel(): RuntimeModel | undefined {\n    return this.runtimeContext?.runtimeModel;\n  }\n\n  public get runtimeContext(): RuntimeContext | undefined {\n    return this._runtimeContext;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { FlowStateApiService, QuoteApiService, SaveQuoteResponse } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n  ConfigurationProcessor,\n  ConfigurationProcessorScriptFn,\n  ConfigurationRequest,\n  ConfigurationTranslatorUtils,\n  ConfigurePrice,\n  EntityUtil,\n  FlowStateExecutableDTO,\n  FlowStateExecutionRequest,\n  FlowStateExecutionRequestDTO,\n  FlowStateExecutionResult,\n  FlowStateSelectorResponse,\n  isDefined,\n  LineItem,\n  UUID,\n} from '@veloceapps/core';\nimport { assign, cloneDeep, Dictionary } from 'lodash';\nimport {\n  BehaviorSubject,\n  buffer,\n  catchError,\n  combineLatest,\n  debounceTime,\n  distinctUntilChanged,\n  filter,\n  finalize,\n  map,\n  Observable,\n  of,\n  share,\n  shareReplay,\n  Subject,\n  switchMap,\n  take,\n  takeUntil,\n  tap,\n  throwError,\n} from 'rxjs';\nimport { FlowInfoService, FlowStateService, QuoteDraftService } from '../../../services';\nimport { FlowStateSubscriptionOptions } from '../../../types/flow-state.types';\nimport { FlowConfigurationService } from '../../flow-configuration';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\ntype StateSubscription = {\n  request: FlowStateExecutionRequestDTO;\n  data$: BehaviorSubject<unknown>;\n};\n\n@Injectable()\nexport class ConfigurationStateService {\n  public isInitialized$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  public canceledConfiguration$: Subject<void> = new Subject<void>();\n\n  private readonly NOT_INITIALIZED = Symbol();\n  private readonly EXECUTION_BUFFER_TIME = 100;\n\n  private executedFunctions: Dictionary<ConfigurationProcessorScriptFn> = {};\n  private stateId: string | null = null;\n  private ownerId = '';\n  private subscriptions: Record<string, StateSubscription> = {};\n  private configurationStore: Record<string, unknown> = {};\n\n  private executionInProgress$ = new BehaviorSubject(false);\n  private statefulRequestStream$ = new Subject<FlowStateExecutionRequestDTO>();\n  private statefulExecutionRequest$: Observable<FlowStateExecutionResult>;\n  private statelessExecutionRequest$: Observable<FlowStateExecutionResult> | null = null;\n\n  constructor(\n    private configurationRuntimeService: ConfigurationRuntimeService,\n    private configurationService: ConfigurationService,\n    private quoteDraftService: QuoteDraftService,\n    private toastService: ToastService,\n    private flowStateService: FlowStateService,\n    private flowInfoService: FlowInfoService,\n    private flowConfigurationService: FlowConfigurationService,\n    private flowStateApiService: FlowStateApiService,\n    private quoteApiService: QuoteApiService,\n  ) {\n    this.statefulExecutionRequest$ = this.initBufferedRequest$();\n  }\n\n  public get isExecutionInProgress$() {\n    return this.executionInProgress$.asObservable();\n  }\n\n  public init$(): Observable<void> {\n    let request$;\n    if (this.flowStateService.stateId && this.isStatefulConfiguration) {\n      request$ = this.initStateful$();\n    } else {\n      request$ = this.initStateless$();\n    }\n\n    return request$.pipe(\n      finalize(() => {\n        this.isInitialized$.next(true);\n        this.canceledConfiguration$ = new Subject();\n      }),\n    );\n  }\n\n  public cleanup(): void {\n    Object.values(this.subscriptions).forEach(({ data$ }) => data$.complete());\n    this.subscriptions = {};\n\n    if (this.stateId) {\n      this.cancelConfiguration();\n    }\n\n    this.configurationStore = {};\n    this.executedFunctions = {};\n    this.configurationService.reset();\n  }\n\n  public execute$(exec: FlowStateExecutionRequest): Observable<FlowStateExecutionResult['selectors']> {\n    const request = this.execToRequest(exec);\n\n    return this.executeRequest$(request).pipe(\n      map(result => {\n        // Keep only requested results\n        const actualSelectors = Object.entries(result.selectors).reduce(\n          (trunk: Record<string, FlowStateSelectorResponse>, [requestId, result]) => {\n            if (exec.selectors?.[requestId]) {\n              trunk[requestId] = result;\n            }\n            return trunk;\n          },\n          {},\n        );\n\n        return actualSelectors;\n      }),\n    );\n  }\n\n  public dispatch$(actionName: string, inputData: unknown = {}): Observable<FlowStateExecutionResult> {\n    const exec: FlowStateExecutionRequest = {\n      actions: [{ name: actionName, inputData }],\n    };\n    const request = this.execToRequest(exec);\n\n    const executionRequest$ = this.executeRequest$(request);\n\n    if (this.isStatefulConfiguration) {\n      return executionRequest$;\n    }\n\n    // prevent parallel configuration requests in stateless mode\n    if (!this.statelessExecutionRequest$) {\n      this.statelessExecutionRequest$ = executionRequest$.pipe(\n        shareReplay(),\n        take(1),\n        finalize(() => (this.statelessExecutionRequest$ = null)),\n      );\n    }\n    return this.statelessExecutionRequest$;\n  }\n\n  public select$<Response = unknown>(\n    selectorName: string,\n    inputData: unknown = {},\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = UUID.UUID();\n    const request = this.execToRequest({\n      selectors: {\n        [requestId]: {\n          name: selectorName,\n          inputData,\n        },\n      },\n    });\n\n    return this.executeRequest$(request).pipe(\n      map(response => response.selectors[requestId] as FlowStateSelectorResponse<Response>),\n    );\n  }\n\n  public subscribe$<Response = unknown>(\n    selectorName: string,\n    inputData: unknown = {},\n    options?: FlowStateSubscriptionOptions,\n  ): Observable<FlowStateSelectorResponse<Response>> {\n    const requestId = UUID.UUID();\n\n    let subscription = this.subscriptions[requestId];\n    if (!subscription) {\n      const request = this.execToRequest({\n        selectors: {\n          [requestId]: {\n            name: selectorName,\n            inputData,\n          },\n        },\n      });\n\n      subscription = {\n        request,\n        data$: new BehaviorSubject<unknown>(this.NOT_INITIALIZED),\n      };\n      this.subscriptions[requestId] = subscription;\n\n      if (!options?.cold) {\n        this.executeRequest$(request).subscribe();\n      }\n    }\n\n    return subscription.data$.pipe(\n      filter(data => data != this.NOT_INITIALIZED),\n      map(data => data as FlowStateSelectorResponse<Response>),\n      distinctUntilChanged(),\n      finalize(() => {\n        if (!this.subscriptions[requestId]?.data$.observed) {\n          delete this.subscriptions[requestId];\n        }\n      }),\n      takeUntil(this.canceledConfiguration$),\n    );\n  }\n\n  public saveConfiguration(flow?: boolean): Observable<SaveQuoteResponse> {\n    if (this.isStatefulConfiguration) {\n      return this.flowStateApiService\n        .saveConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '')\n        .pipe(switchMap(r => this.flowStateService.executeRequest$({}, true).pipe(map(() => r))));\n    } else {\n      if (!flow) {\n        const quoteDraft = this.quoteDraftService.quoteDraft;\n        if (!quoteDraft) {\n          return of({ quoteId: '' });\n        }\n\n        const rootLineItem = this.configurationService.getSnapshot();\n        const asset = this.configurationService.getAsset();\n        const currentState = rootLineItem ? [rootLineItem] : [];\n        const initialState = asset ? [asset] : [];\n\n        return this.quoteApiService.upsertQuote({ ...quoteDraft, currentState, initialState });\n      } else {\n        const quoteDraft = this.quoteDraftService.quoteDraft;\n        const lineItem = this.configurationService.getSnapshot();\n\n        if (!quoteDraft || !lineItem) {\n          return of({ quoteId: '' });\n        }\n\n        const isNewLineItem = quoteDraft.currentState.every(li => li.id !== lineItem.id);\n\n        let currentState: LineItem[];\n        if (isNewLineItem) {\n          currentState = [...quoteDraft.currentState, lineItem];\n        } else {\n          currentState = quoteDraft.currentState.map(li => (li.id === lineItem.id ? lineItem : li));\n        }\n\n        const asset = this.configurationService.getAsset();\n        const initialState = [...(this.quoteDraftService.quoteDraft?.initialState ?? [])];\n        if (asset) {\n          if (!initialState.some(li => li.id === asset.id)) {\n            initialState.push(asset);\n          }\n        }\n\n        return this.flowConfigurationService\n          .calculate$({ ...quoteDraft, currentState, initialState })\n          .pipe(map(() => ({ quoteId: '' })));\n      }\n    }\n  }\n\n  public cancelConfiguration(): Observable<void> {\n    if (!this.isInitialized$.value) {\n      return of(undefined);\n    }\n\n    this.canceledConfiguration$.next();\n    this.canceledConfiguration$.complete();\n    this.subscriptions = {};\n\n    this.isInitialized$.next(false);\n    if (!this.isInitialized$.value || !this.isStatefulConfiguration) {\n      return of(undefined);\n    }\n    return this.flowStateApiService.cancelConfiguration(this.flowStateService.stateId ?? '', this.stateId ?? '');\n  }\n\n  private get isStatefulConfiguration(): boolean {\n    return this.flowInfoService.flow?.properties.stateful ?? false;\n  }\n\n  private initStateful$(): Observable<void> {\n    this.ownerId = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer?.id ?? '';\n    const lineItemId = this.configurationRuntimeService.runtimeContext?.properties?.lineItemId;\n    if (!this.flowStateService.stateId) {\n      return of(undefined);\n    }\n\n    const container = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer;\n\n    const lineItem = this.configurationService.generateLineItem();\n\n    let request$: Observable<FlowStateExecutionResult>;\n\n    if (!lineItemId) {\n      request$ = this.flowStateApiService.newConfiguration(this.flowStateService.stateId, {\n        lineItem,\n        actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n        selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n      });\n    } else {\n      request$ = this.flowStateApiService.startConfiguration(this.flowStateService.stateId, {\n        lineItemId,\n        actionsOverride: container?.actions?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n        selectorsOverride: container?.selectors?.map(processor => ({ ...processor, ownerId: this.ownerId })),\n      });\n    }\n\n    return request$.pipe(\n      map(r => {\n        this.stateId = r.stateId;\n        return undefined;\n      }),\n    );\n  }\n\n  private initStateless$(): Observable<void> {\n    return this.configurationService.configure().pipe(map(() => undefined));\n  }\n\n  private execToRequest(exec: FlowStateExecutionRequest): FlowStateExecutionRequestDTO {\n    return {\n      actions: exec.actions?.map(action => ({\n        apiName: action.name,\n        ownerId: this.ownerId,\n        inputData: action.inputData ?? {},\n      })),\n      selectors:\n        exec.selectors &&\n        Object.entries(exec.selectors).reduce(\n          (trunk: Record<string, FlowStateExecutableDTO>, [key, selector]) => ({\n            ...trunk,\n            [key]: { apiName: selector.name, ownerId: this.ownerId, inputData: selector.inputData ?? {} },\n          }),\n          {},\n        ),\n    };\n  }\n\n  private handleSelectorsResponse(selectors: Record<string, FlowStateSelectorResponse<unknown>>): void {\n    Object.entries(selectors).forEach(([requestId, selectorResult]) => {\n      if (!selectorResult.success) {\n        this.toastService.add({ severity: ToastType.error, summary: selectorResult.errorMessage });\n      }\n\n      const subscription$ = this.subscriptions[requestId]?.data$;\n      if (subscription$) {\n        subscription$.next(selectorResult);\n      }\n    });\n  }\n\n  private executeRequest$(\n    req: FlowStateExecutionRequestDTO,\n    forceSubscriptions?: boolean,\n  ): Observable<FlowStateExecutionResult> {\n    const fullRequest = cloneDeep(req);\n    if (fullRequest.actions?.length || forceSubscriptions) {\n      for (const subscription of Object.values(this.subscriptions)) {\n        fullRequest.selectors = assign(fullRequest.selectors, subscription.request.selectors);\n      }\n    }\n\n    let execution$;\n\n    if (this.isStatefulConfiguration) {\n      execution$ = this.executeStateful$(fullRequest);\n    } else {\n      execution$ = this.executeStateless$(fullRequest);\n    }\n\n    return execution$.pipe(tap(result => this.handleSelectorsResponse(result.selectors)));\n  }\n\n  private executeStateless$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    this.executionInProgress$.next(true);\n\n    return of(undefined).pipe(\n      switchMap(() => {\n        // Apply actions and execute configuration/price call\n        // No need to run configuration if no actions in the request\n        if (!request.actions?.length) {\n          return of(undefined);\n        }\n\n        let configurationRequest = this.configurationService.generateRequest(false);\n        request.actions.forEach(action => {\n          configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n        });\n\n        configurationRequest = ConfigurationTranslatorUtils.lightenConfigurationRequest(configurationRequest);\n\n        return this.configurationService.configureRequest$(configurationRequest);\n      }),\n      map(() => {\n        // Run selectors and apply them to the state\n        const configurationState = this.configurationService.stateSnapshot;\n        if (!configurationState) {\n          return { stateId: '', selectors: {} };\n        }\n\n        return this.runStatelessSelectors(request, configurationState);\n      }),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(error => {\n        const configurationState = this.configurationService.previousStateSnapshot;\n        if (configurationState) {\n          const selectorsResult = this.runStatelessSelectors(request, configurationState);\n          this.handleSelectorsResponse(selectorsResult.selectors);\n        }\n        this.executionInProgress$.next(false);\n\n        if (!this.configurationRuntimeService.uiDefinitionProperties.suppressToastMessages) {\n          this.toastService.add({ severity: ToastType.error, summary: String(error) });\n        }\n\n        return throwError(() => error);\n      }),\n    );\n  }\n\n  private initBufferedRequest$() {\n    return this.statefulRequestStream$.pipe(\n      buffer(this.statefulRequestStream$.pipe(debounceTime(this.EXECUTION_BUFFER_TIME))),\n      switchMap(requests => {\n        if (!this.flowStateService.stateId || !this.stateId) {\n          throw 'Stateful session is not initialized';\n        }\n\n        // merge buffered requests\n        const request: FlowStateExecutionRequestDTO = {\n          actions: requests.flatMap(({ actions }) => actions).filter(isDefined),\n          selectors: requests\n            .map(({ selectors }) => selectors)\n            .filter(isDefined)\n            .reduce((acc, selectorsMap) => Object.assign(acc, selectorsMap), {}),\n        };\n\n        this.executionInProgress$.next(true);\n        return this.flowStateApiService.executeConfiguration(this.flowStateService.stateId, this.stateId, request);\n      }),\n      tap(({ stateId }) => (this.stateId = stateId)),\n      share(),\n      tap(() => this.executionInProgress$.next(false)),\n      catchError(e => {\n        this.executionInProgress$.next(false);\n        return throwError(() => e);\n      }),\n    );\n  }\n\n  private executeStateful$(request: FlowStateExecutionRequestDTO): Observable<FlowStateExecutionResult> {\n    return this.executionInProgress$.pipe(\n      filter(inProgress => !inProgress),\n      take(1),\n      switchMap(() =>\n        // make sure stream switches to statefulExecutionRequest$ before pushing an execution request\n        combineLatest([\n          this.statefulExecutionRequest$,\n          of(undefined).pipe(tap(() => this.statefulRequestStream$.next(request))),\n        ]),\n      ),\n      map(([response]) => response),\n      take(1),\n    );\n  }\n\n  private executeActionScript(request: ConfigurationRequest, processor: FlowStateExecutableDTO): ConfigurationRequest {\n    const { actions } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};\n    const configurationProcessor = actions?.find(action => action.apiName === processor.apiName);\n\n    if (!configurationProcessor?.script) {\n      throw `ConfigurationProcessor ${processor.apiName} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, processor.inputData) as ConfigurationRequest;\n  }\n\n  private executeSelectorScript(request: ConfigurePrice, processor: FlowStateExecutableDTO): unknown {\n    const { selectors } = this.configurationRuntimeService.runtimeContext?.uiDefinitionContainer ?? {};\n    const configurationProcessor = selectors?.find(selector => selector.apiName === processor.apiName);\n\n    if (!configurationProcessor?.script) {\n      throw `ConfigurationProcessor ${processor.apiName} not found`;\n    }\n\n    return this.executeProcessorScript(request, configurationProcessor, processor.inputData);\n  }\n\n  private executeProcessorScript(\n    request: ConfigurationRequest | ConfigurePrice,\n    configurationProcessor: ConfigurationProcessor,\n    inputData: unknown,\n  ): unknown {\n    let functionToExecute = this.executedFunctions[configurationProcessor.apiName];\n    if (!functionToExecute) {\n      const script = `${configurationProcessor.script}\\nreturn transform;`;\n      const sourceMap = `\\n//# sourceURL=${configurationProcessor.apiName}.js`;\n      functionToExecute = new Function(script + sourceMap)() as ConfigurationProcessorScriptFn;\n      this.executedFunctions[configurationProcessor.apiName] = functionToExecute;\n    }\n\n    return functionToExecute({\n      request,\n      inputData,\n      flowStore: this.flowStateService.getFlowStore(),\n      configurationStore: this.configurationStore,\n    });\n  }\n\n  private runStatelessSelectors(\n    request: FlowStateExecutionRequestDTO,\n    configurationState: ConfigurePrice,\n  ): FlowStateExecutionResult {\n    return EntityUtil.entries(request.selectors ?? {}).reduce(\n      (result: FlowStateExecutionResult, [key, selector]) => {\n        try {\n          result.selectors[key] = {\n            success: true,\n            result: this.executeSelectorScript(configurationState, selector),\n          };\n        } catch (e) {\n          console.error(e);\n          result.selectors[key] = {\n            success: false,\n            errorMessage: String(e),\n          };\n        }\n\n        return result;\n      },\n      { stateId: '', selectors: {} },\n    );\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ApiModule } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationStateService } from './services/configuration-state.service';\nimport { ConfigurationService } from './services/configuration.service';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n  imports: [ConfirmationDialogModule, ApiModule],\n  providers: [ConfigurationRuntimeService, RuntimeContextService, ConfigurationService, ConfigurationStateService],\n})\nexport class ConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport {\n  DEFAULT_ACTION_CODE_LABELS,\n  DEFAULT_CURRENCY_SYMBOL,\n  DEFAULT_DATE_FORMAT,\n  DEFAULT_DECIMALS_COUNT,\n  DEFAULT_DECIMAL_SEPARATOR,\n  DEFAULT_THOUSANDS_SEPARATOR,\n  getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport {\n  ContextService,\n  FlowInfoService,\n  FlowStateConfigurationService,\n  FlowStateService,\n  IntegrationState,\n  ProductImagesService,\n  QuoteDraftService,\n  RuntimeSettingsService,\n} from './services';\nimport { FormattingSettings, FORMATTING_SETTINGS_TOKEN } from './types';\n\nexport const DEFAULT_FORMATTING_SETTINGS: FormattingSettings = {\n  currencySymbol: DEFAULT_CURRENCY_SYMBOL,\n  decimalsCount: DEFAULT_DECIMALS_COUNT,\n  dateFormats: getSupportedDateFormats(DEFAULT_DATE_FORMAT),\n  decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n  thousandsSeparator: DEFAULT_THOUSANDS_SEPARATOR,\n  actionCodeLabels: DEFAULT_ACTION_CODE_LABELS,\n};\n\n@NgModule({\n  imports: [ConfigurationModule, FlowConfigurationModule],\n  providers: [\n    ContextService,\n    FlowInfoService,\n    QuoteDraftService,\n    ProductImagesService,\n    IntegrationState,\n    FlowStateService,\n    FlowStateConfigurationService,\n    RuntimeSettingsService,\n    {\n      provide: FORMATTING_SETTINGS_TOKEN,\n      useExisting: RuntimeSettingsService,\n    },\n  ],\n})\nexport class SdkCoreModule {}\n","import { Directive, Input, OnDestroy, OnInit, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { DEFAULT_DATE_FORMAT } from '@veloceapps/core';\nimport { Calendar } from 'primeng/calendar';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Directive({\n  selector: '[vlCalendar]',\n})\nexport class CalendarDirective implements OnInit, OnDestroy {\n  @Input()\n  public set vlCalendar(calendar: Calendar) {\n    this.calendar = calendar;\n  }\n  private calendar!: Calendar;\n\n  private ngControl = inject(NgControl, { host: true, optional: true });\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public ngOnInit(): void {\n    if (this.calendar) {\n      this.calendar.dateFormat = this.formattingSettings?.dateFormats.primengFormat ?? DEFAULT_DATE_FORMAT;\n\n      if (this.ngControl && this.ngControl.control) {\n        const control = this.ngControl.control;\n        control.setValue(control.value, { emitEvent: false });\n      }\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarDirective } from './primeng-calendar.directive';\n\n@NgModule({\n  declarations: [CalendarDirective],\n  exports: [CalendarDirective],\n})\nexport class SdkDirectivesModule {}\n","import { DATE_PIPE_DEFAULT_OPTIONS, formatDate } from '@angular/common';\nimport { LOCALE_ID, OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_DATE_FORMAT, DEFAULT_TIME_FORMAT } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { DateType, FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlDate',\n})\nexport class DatePipe implements PipeTransform, OnDestroy {\n  private locale = inject(LOCALE_ID);\n  private defaultOptions = inject(DATE_PIPE_DEFAULT_OPTIONS, { optional: true });\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(date: string | number | Date | undefined | null, type: DateType = 'date'): string {\n    if (!date) {\n      return '';\n    }\n\n    const dateFormat = this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT;\n\n    const formatMap: { [key in DateType]: string } = {\n      date: dateFormat,\n      time: DEFAULT_TIME_FORMAT,\n      datetime: `${dateFormat} ${DEFAULT_TIME_FORMAT}`,\n    };\n\n    try {\n      return formatDate(date, formatMap[type], this.locale, this.defaultOptions?.timezone);\n    } catch (error) {\n      return new Date(date).toString();\n    }\n  }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlNumber',\n})\nexport class NumberPipe implements PipeTransform, OnDestroy {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(price: string | number): string {\n    return formatNumber(\n      price,\n      this.formattingSettings?.thousandsSeparator,\n      this.formattingSettings?.decimalSeparator,\n      this.formattingSettings?.decimalsCount,\n    );\n  }\n}\n","import { OnDestroy, Pipe, PipeTransform, inject } from '@angular/core';\nimport { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlPrice',\n})\nexport class PricePipe implements PipeTransform, OnDestroy {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n  private destroy$ = new Subject<void>();\n\n  public ngOnDestroy(): void {\n    this.destroy$.next();\n    this.destroy$.complete();\n  }\n\n  public transform(price: string | number): string {\n    if (price == null || price === '') {\n      return '';\n    }\n\n    return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(\n      price,\n      this.formattingSettings?.thousandsSeparator,\n      this.formattingSettings?.decimalSeparator,\n      this.formattingSettings?.decimalsCount,\n    )}`;\n  }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { FORMATTING_SETTINGS_TOKEN } from '../types';\n\n@Pipe({\n  name: 'vlActionCode',\n})\nexport class ActionCodePipe implements PipeTransform {\n  private formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();\n\n  public transform(actionCode: string): string {\n    return this.formattingSettings?.actionCodeLabels[actionCode] ?? actionCode;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { DatePipe } from './date.pipe';\nimport { NumberPipe } from './number.pipe';\nimport { PricePipe } from './price.pipe';\nimport { ActionCodePipe } from './action-code.pipe';\n\n@NgModule({\n  declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n  exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],\n})\nexport class SdkPipesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["map","tap","switchMap","i1.ContextService","i2.FlowInfoService","i3","filter","shareReplay","take","catchError","finalize","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i6","i7.RuntimeSettingsService","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","i6.FlowInfoService","i1.FlowInfoService","i2.FlowConfigurationService","i4.FlowStateService","i3.RuntimeContextService","i1.ConfigurationRuntimeService","i2.ConfigurationService","i3.FlowStateService","i3.FlowInfoService","i5.FlowConfigurationService"],"mappings":"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"}
         |