@veloceapps/sdk 8.0.0-88 → 8.0.0-89
Sign up to get free protection for your applications and to get access to all the features.
- package/cms/vendor-map.d.ts +5 -1
- package/core/pipes/date.pipe.d.ts +2 -1
- package/core/types/index.d.ts +1 -0
- package/core/types/pipe.types.d.ts +1 -0
- package/esm2020/cms/vendor-map.mjs +6 -2
- package/esm2020/core/pipes/date.pipe.mjs +10 -4
- package/esm2020/core/types/index.mjs +2 -1
- package/esm2020/core/types/pipe.types.mjs +2 -0
- package/fesm2015/veloceapps-sdk-cms.mjs +6 -2
- package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2015/veloceapps-sdk-core.mjs +9 -3
- package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-cms.mjs +5 -1
- package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
- package/fesm2020/veloceapps-sdk-core.mjs +9 -3
- 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/types/formatting-settings.types.ts","../../../../libs/sdk/core/types/runtime.types.ts","../../../../libs/sdk/core/types/ui-definition.types.ts","../../../../libs/sdk/core/services/context.service.ts","../../../../libs/sdk/core/services/metric-calculation/metric-calculation.utils.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/services/metric-calculation/metric-calculation.service.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.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.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 ConfigurationContextMode,\n ConfigurationRequest,\n LineItem,\n UIDefinitionProps,\n UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData } 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 = (data: GuidedSellingSubmitData): ConfigurationRequest => {\n return {\n mode: 'SEARCH',\n step: 'START',\n attributeDomainMode: 'ALL',\n context: {\n headerId: 'TestId',\n mode: ConfigurationContextMode.TEST,\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","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 { 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({ providedIn: 'root' })\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 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 { LineItem } from '@veloceapps/core';\nimport { MetricCalculationMethod } from './metric-calculation.types';\n\nexport function calculateMetricByMethod(\n lineItems: LineItem[],\n metric: string,\n method: MetricCalculationMethod,\n): number {\n const items = getLineItemsByMethod(lineItems, method);\n\n return items.reduce((acc: number, li: LineItem[]) => {\n let value = li.reduce(\n (accProduct: number, item: LineItem) => accProduct + ((item.totalMetrics && item.totalMetrics[metric]) || 0),\n 0,\n );\n\n if (method === 'avg' && li.length > 0) {\n value /= li.length;\n }\n\n return acc + value;\n }, 0);\n}\n\nexport function getLineItemsByMethod(lineItems: LineItem[], method: MetricCalculationMethod): LineItem[][] {\n switch (method) {\n case 'first': {\n return lineItems.filter(li => !li.rampInstanceId).map(item => [item]);\n }\n case 'last': {\n const rootTermItems = lineItems.filter(li => !li.rampInstanceId);\n const products = rootTermItems.map(lineItem => [\n lineItem,\n ...lineItems.filter(li => li.rampInstanceId === lineItem.id),\n ]);\n\n return products\n .map(items => [...items].sort((a, b) => getDateValue(a.endDate || '') - getDateValue(b.endDate || '')).pop())\n .filter((li): li is LineItem => Boolean(li))\n .map(item => [item]);\n }\n case 'avg': {\n const rootTermItems = lineItems.filter(li => !li.rampInstanceId);\n return rootTermItems.map(lineItem => [lineItem, ...lineItems.filter(li => li.rampInstanceId === lineItem.id)]);\n }\n case 'sum': {\n return lineItems.map(item => [item]);\n }\n default: {\n return lineItems.map(item => [item]);\n }\n }\n}\n\nexport function getDateValue(date: string): number {\n return date ? new Date(date).getTime() : 0;\n}\n","import { Injectable } from '@angular/core';\nimport { PriceApiService, QuoteApiService } from '@veloceapps/api';\nimport { ConfigurationContextMode, LineItem, PriceList, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, Observable, combineLatest, noop, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\n\n@Injectable({ providedIn: 'root' })\nexport class QuoteDraftService {\n private quoteSubj$ = new BehaviorSubject<QuoteDraft | 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(): 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 const quoteDraft = this.quoteSubj$.value;\n return Boolean(quoteDraft && quoteDraft.currentState.length > 0);\n }\n\n public allPriceLists: PriceList[] = [];\n public assetPriceLists: PriceList[] = [];\n public reset$ = this.resetSubj$.asObservable();\n public activePriceList$: Observable<PriceList | null>;\n\n constructor(\n private context: ContextService,\n private quoteApiService: QuoteApiService,\n private priceApiService: PriceApiService,\n ) {\n this.activePriceList$ = this.context.resolve$().pipe(\n map(ctx => this.allPriceLists.find(priceList => priceList.id === ctx.properties.PriceListId)),\n map(priceList => priceList ?? null),\n );\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.isInitialized = false;\n this.hasUnsavedChanges = false;\n }\n\n public init(quoteId: string, params: Dictionary<string>): Observable<void> {\n return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(\n tap(([quote, allPriceLists]) => {\n this.allPriceLists = allPriceLists;\n this.quoteSubj$.next(quote);\n\n this.context.update(quote.context);\n\n this.populateActivePriceLists$();\n }),\n map(() => noop()),\n take(1),\n );\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 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 quoteDraftForActivePriceList(): QuoteDraft | null {\n const quoteDraft = this.quoteDraft;\n\n if (!quoteDraft) {\n return null;\n }\n\n return {\n ...quoteDraft,\n initialState: this.filterByActivePriceList(quoteDraft.initialState),\n currentState: this.filterByActivePriceList(quoteDraft.currentState),\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 /**\n * Stream of activeCurrentState\n */\n public get activeCurrentState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(() => this.activeCurrentState));\n }\n\n /**\n * activeCurrentState is currentState passed through additional filters\n */\n public get activeCurrentState(): LineItem[] {\n let currentState = this.quoteDraft?.currentState ?? [];\n\n currentState = this.filterByActivePriceList(currentState);\n\n return currentState;\n }\n\n /**\n * Stream of activeInitialState\n */\n public get activeInitialState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(() => this.activeInitialState));\n }\n\n /**\n * activeInitialState is initialState passed through additional filters\n */\n public get activeInitialState(): LineItem[] {\n const ctx = this.context.resolve();\n let initialState = this.quoteDraft?.initialState ?? [];\n\n if (ctx.mode === ConfigurationContextMode.ACCOUNT) {\n initialState = this.filterByActivePriceList(initialState);\n }\n\n return initialState;\n }\n\n public get isStandalone(): boolean {\n return this.context.resolve().properties.standalone === 'true';\n }\n\n public get isStandalone$(): Observable<boolean> {\n return this.context.resolve$().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 public updateActivePriceList(priceListId: string): void {\n this.context.update({ properties: { PriceListId: priceListId } });\n }\n\n private populateActivePriceLists$(): void {\n const ctx = this.context.resolve();\n const quoteDraft = this.quoteDraft;\n\n if (!quoteDraft) {\n return;\n }\n\n // In ACCOUNT mode populate price lists from related assets\n if (ctx.mode === ConfigurationContextMode.ACCOUNT) {\n // Populate list of price lists\n this.assetPriceLists = quoteDraft.currentState\n .map(({ priceListId }) => priceListId)\n .reduce<PriceList[]>((trunk, priceListId) => {\n if (!priceListId || trunk.some(item => item.id === priceListId)) {\n return trunk;\n }\n\n return [\n ...trunk,\n { id: priceListId, name: this.allPriceLists.find(item => item.id === priceListId)?.name ?? '' },\n ];\n }, []);\n }\n }\n\n private filterByActivePriceList(lineItems: LineItem[]): LineItem[] {\n const ctx = this.context.resolve();\n\n return lineItems.filter(li => !li.priceListId || li.priceListId === ctx.properties.PriceListId);\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 { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, 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\nexport const calculateCardinalityVariables = (lineItems: LineItem[]): Map<string, number> => {\n const cardVars = new Map<string, number>();\n lineItems\n .filter(({ port, type }) => !!port && !!type)\n .forEach(li => {\n const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n });\n return cardVars;\n};\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n const cardinalityVariables = calculateCardinalityVariables(updated.lineItems);\n const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems);\n\n originalCardinalityVariables.forEach((value, key) => {\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 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 }), 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 generateModifiedAssetsMap = (lineItems: LineItem[]): Record<string, boolean> => {\n return lineItems.reduce((acc: Record<string, boolean>, li) => {\n const isModified = isLineItemModified(li);\n\n if (!isModified) {\n return acc;\n }\n\n const target = getOriginParent(lineItems, li);\n\n const id = target?.assetId ?? target?.openOrderLineItemId;\n if (id) {\n acc[id] = true;\n }\n\n return acc;\n }, {});\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 isLineItemModified = <T extends Pick<LineItem, 'actionCode' | 'status'>>(lineItem: T): boolean => {\n if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {\n return false;\n }\n\n return lineItem.actionCode !== 'EXIST';\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 { 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 { 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 { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n ConfigurationSettings,\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 RuntimeConfigurationSettings,\n RuntimeCurrencySettings,\n ShoppingCartSetting,\n ShoppingCartSettings,\n getSupportedDateFormats,\n parseJsonSafely,\n validateDateFormat,\n DEFAULT_ACTION_CODE_LABELS,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, Observable, map, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable({ providedIn: 'root' })\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 }\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 { 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 LineItem,\n NewAttribute,\n PatchLineItemOptions,\n RuntimeModel,\n UIDefinitionProps,\n VlWindow,\n} from '@veloceapps/core';\nimport { 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 { 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 lineItem = new BehaviorSubject<LineItem | undefined>(undefined);\n private charges = new BehaviorSubject<Dictionary<Charge>>({});\n private pricePlans = new BehaviorSubject<Dictionary<CompiledPricePlan>>({});\n private procedureContext = new BehaviorSubject<Dictionary<unknown>>({});\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.lineItem.next(undefined);\n this.charges.next({});\n this.pricePlans.next({});\n }\n\n public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n if (!this.lineItem.value) {\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(this.lineItem.value).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 this.lineItem.next(this.lineItem.value ? { ...this.lineItem.value } : undefined);\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.lineItem.asObservable().pipe(shareReplay());\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.lineItem.value ? { ...this.lineItem.value } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel {\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 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.charges.asObservable();\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.charges.value;\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.pricePlans.asObservable();\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.pricePlans.value;\n }\n\n public get procedureContext$(): Observable<Dictionary<unknown>> {\n return this.procedureContext.asObservable();\n }\n\n public get procedureContextSnapshot(): Dictionary<unknown> {\n return this.procedureContext.value;\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(({ lineItem, context, charges, pricePlans, deletedLineItems, procedureContext }) => {\n this.contextService.update(context ?? {});\n this.charges.next(charges ?? {});\n this.pricePlans.next(pricePlans ?? {});\n this.procedureContext.next(procedureContext ?? {});\n\n if (lineItem) {\n this.lineItem.next(lineItem);\n }\n\n if (deletedLineItems?.length) {\n this.showInactiveProductsConfirmation();\n }\n\n this.configurableRamp = lineItem;\n }),\n map(({ lineItem }) => lineItem),\n catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))),\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),\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(): ConfigurationRequest {\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 let request: ConfigurationRequest = {\n lineItem,\n mode: this.mode,\n step: !this.lineItem.value ? 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 request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n\n return request;\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 private getAsset(): LineItem | undefined {\n const lineItem = this.configurableRamp;\n if (!lineItem) {\n return;\n }\n\n return this.quoteDraftService.quoteDraft?.initialState.find(\n a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId,\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, cloneDeep } from 'lodash';\nimport { Observable, catchError, map, noop, of, shareReplay, 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';\n\n@Injectable()\nexport class FlowConfigurationService {\n constructor(\n private proceduresApiService: ProceduresApiService,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private updateService: FlowUpdateService,\n private configurationService: ConfigurationService,\n ) {}\n\n public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n return this.proceduresApiService.apply$(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 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.activeCurrentState;\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 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 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 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 this.handleErrorAndBounceBack(),\n );\n }\n\n public get(): Observable<LineItem[]> {\n return this.quoteDraftService.quoteDraft$.pipe(\n map(() => this.quoteDraftService.activeCurrentState),\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 }\n\n return throwError(() => error);\n }),\n );\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport { LineItem, MetricRule } from '@veloceapps/core';\nimport { Dictionary, uniq } from 'lodash';\nimport { combineLatest, Observable, Subject, take } from 'rxjs';\nimport { FlowConfigurationService } from '../../modules/flow-configuration/services/flow-configuration.service';\nimport { QuoteDraftService } from '../quote-draft.service';\nimport { MetricCalculationMethod } from './metric-calculation.types';\nimport { calculateMetricByMethod } from './metric-calculation.utils';\n\n@Injectable({ providedIn: 'root' })\nexport class MetricsCalculationService {\n public get onMetricsUpdate$(): Observable<void> {\n return this.metricsUpdated$.asObservable();\n }\n\n private metricsUpdated$ = new Subject<void>();\n private quoteMetricsSettings: Dictionary<MetricCalculationMethod> = {};\n private metricsCalculationMethodMap: Dictionary<MetricCalculationMethod> = {};\n private metricsData: Dictionary<number> = {};\n private activeMetricRules: MetricRule[] = [];\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private flowConfiguration: FlowConfigurationService,\n private settingsService: ConfigurationSettingsApiService,\n ) {\n this.activeMetricRules = this.flowConfiguration.activeMetricsSnapshot.filter(metricRule =>\n metricRule.metrics.some(metric => !!metric.totalName),\n );\n\n combineLatest([\n this.quoteDraftService.currentState$,\n this.settingsService.fetchSetting('QUOTE_LEVEL_METRIC_CALCULATION_METHOD').pipe(take(1)),\n ]).subscribe(([lineItems, setting]) => {\n let settingsData: Dictionary<MetricCalculationMethod> = {};\n try {\n settingsData = JSON.parse(setting?.value || '{}');\n } catch (error) {\n settingsData = {};\n }\n\n this.quoteMetricsSettings = settingsData;\n\n this.updateMetrics(lineItems);\n });\n }\n\n public getMetricValue(metric: string): number {\n return this.metricsData[metric] || 0;\n }\n\n private updateMetrics(lineItems: LineItem[]): void {\n const metricKeys = this.collectMetricKeys(lineItems).filter(key => !key.includes('Effective_'));\n this.metricsCalculationMethodMap = this.buildMetricsCalculationMethods(\n metricKeys,\n this.metricsCalculationMethodMap,\n );\n\n this.metricsData = metricKeys.reduce(\n (acc: Dictionary<number>, key: string) => ({ ...acc, [key]: this.calculateMetric(lineItems, key) }),\n {},\n );\n\n this.metricsUpdated$.next();\n }\n\n private calculateMetric(lineItems: LineItem[], metric: string): number {\n return calculateMetricByMethod(lineItems, metric, this.metricsCalculationMethodMap[metric] || 'sum');\n }\n\n private buildMetricsCalculationMethods(\n metricKeys: string[],\n initial: Dictionary<MetricCalculationMethod>,\n ): Dictionary<MetricCalculationMethod> {\n return metricKeys.reduce((acc: Dictionary<MetricCalculationMethod>, name: string) => {\n if (acc[name]) {\n return acc;\n }\n\n acc = { ...acc, [name]: 'sum' };\n\n const metricRule = this.getMetricRuleByTotalMetricName(name);\n const settingKey = metricRule?.metrics?.find(metric => metric.totalName === name)?.name || name;\n\n if (this.quoteMetricsSettings[settingKey]) {\n acc = { ...acc, [name]: this.quoteMetricsSettings[settingKey] };\n }\n\n return acc;\n }, initial);\n }\n\n private collectMetricKeys(lineItems: LineItem[]): string[] {\n const keys: string[] = [];\n lineItems.forEach(lineItem => {\n keys.push(...Object.keys(lineItem.totalMetrics || {}));\n keys.push(...this.collectMetricKeys(lineItem.lineItems));\n });\n return uniq(keys);\n }\n\n private getMetricRuleByTotalMetricName(name: string): MetricRule | undefined {\n return this.activeMetricRules.find(metricRule => metricRule.metrics.find(metric => metric.totalName === name));\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({ providedIn: 'root' })\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]),\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 { StatefulConfigurationApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationExecuteRequest,\n ConfigurationRequest,\n ConfigurationRequestAction,\n ConfigurationRequestSelector,\n EntityUtil,\n UUID,\n} from '@veloceapps/core';\nimport { omit } from 'lodash';\nimport { BehaviorSubject, Observable, map, of, switchMap, tap } from 'rxjs';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\n@Injectable()\nexport class ConfigurationState {\n private readonly stateSubj$ = new BehaviorSubject<Record<string, unknown>>({});\n\n public state$ = this.stateSubj$.asObservable();\n\n private stateId: string | null = null;\n\n constructor(\n private statefulConfigurationApiService: StatefulConfigurationApiService,\n private runtimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private toastService: ToastService,\n ) {}\n\n public init$(): Observable<void> {\n return this.configurationService.configure().pipe(\n switchMap(() => {\n if (!this.isStatefulConfiguration) {\n return of(undefined);\n }\n\n const { actions, selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n\n return this.statefulConfigurationApiService.init({\n request: this.configurationService.generateRequest(),\n actions: actions?.map(action => ({ name: action.apiName, script: action.script })),\n selectors: selectors?.map(selector => ({ name: selector.apiName, script: selector.script })),\n });\n }),\n tap(stateId => (this.stateId = stateId || null)),\n map(() => undefined),\n );\n }\n\n public cleanup(): void {\n this.stateId = null;\n this.configurationService.reset();\n this.stateSubj$.next({});\n }\n\n public execute$(req: ConfigurationExecuteRequest): Observable<void> {\n if (this.isStatefulConfiguration) {\n return this.executeStateful$(req);\n } else {\n return this.executeStateless$(req);\n }\n }\n\n public dispatch$(actionName: string, inputData: unknown): Observable<void> {\n return this.execute$({ actions: [{ name: actionName, inputData }] });\n }\n\n public select$(selectorName: string, inputData: unknown): Observable<unknown> {\n const requestId = UUID.UUID();\n\n return this.execute$({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n }).pipe(\n map(() => this.stateSubj$.value[requestId]),\n tap(() => this.stateSubj$.next(omit(this.stateSubj$.value, requestId))),\n );\n }\n\n private get isStatefulConfiguration(): boolean {\n return this.runtimeService.uiDefinitionProperties.statefulConfigurationEnabled ?? false;\n }\n\n private executeStateless$(request: ConfigurationExecuteRequest): Observable<void> {\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();\n request.actions.forEach(action => {\n configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n });\n\n return this.configurationService.configureRequest$(configurationRequest);\n }),\n tap(() => {\n if (!request.selectors) {\n return;\n }\n\n // Run selectors and apply them to the state\n const finalConfigurationRequest = this.configurationService.generateRequest();\n const selectorsResult = EntityUtil.entries(request.selectors).reduce(\n (trunk: Record<string, unknown>, [key, selector]) => {\n trunk[key] = this.executeSelectorScript(finalConfigurationRequest, selector);\n return trunk;\n },\n {},\n );\n\n this.stateSubj$.next({\n ...this.stateSubj$.value,\n ...selectorsResult,\n });\n }),\n map(() => undefined),\n );\n }\n\n private executeStateful$(request: ConfigurationExecuteRequest): Observable<void> {\n if (!this.stateId) {\n return of(undefined);\n }\n\n return this.statefulConfigurationApiService.execute(this.stateId, request).pipe(\n tap(response => {\n this.stateId = response.stateId;\n const updatedState = this.stateSubj$.value;\n\n EntityUtil.entries(response.selectors).forEach(([key, value]) => {\n if (!value.success) {\n if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n this.toastService.add({ summary: value.errorMessage, severity: ToastType.error });\n }\n\n return;\n }\n\n updatedState[key] = value.result;\n });\n\n this.stateSubj$.next(updatedState);\n }),\n map(() => undefined),\n );\n }\n\n private executeActionScript(\n request: ConfigurationRequest,\n processor: ConfigurationRequestAction,\n ): ConfigurationRequest | null {\n const { actions } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n const script = actions?.find(action => action.apiName === processor.name)?.script;\n if (!script) {\n return null;\n }\n\n return this.executeProcessorScript(request, script, processor.inputData) as ConfigurationRequest;\n }\n\n private executeSelectorScript(request: ConfigurationRequest, processor: ConfigurationRequestSelector): unknown {\n const { selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n const script = selectors?.find(selector => selector.apiName === processor.name)?.script;\n if (!script) {\n return null;\n }\n\n return this.executeProcessorScript(request, script, processor.inputData);\n }\n\n private executeProcessorScript(request: ConfigurationRequest, script: string, inputData: unknown): unknown {\n return new Function(`${script}\\nreturn transform;`)()({\n request,\n inputData: inputData,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PriceApiService } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n imports: [],\n providers: [FlowConfigurationService, FlowUpdateService, PriceApiService],\n})\nexport class FlowConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport { ConfigurationApiService, ContextApiService, ProductModelApiService } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationService } from './services/configuration.service';\nimport { ConfigurationState } from './services/configuration.state';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule],\n providers: [\n ContextApiService,\n ProductModelApiService,\n ConfigurationApiService,\n ConfigurationRuntimeService,\n RuntimeContextService,\n ConfigurationService,\n ConfigurationState,\n ],\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_DECIMAL_SEPARATOR,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_THOUSANDS_SEPARATOR,\n getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { RuntimeSettingsService } from './services';\nimport { FORMATTING_SETTINGS_TOKEN, FormattingSettings } 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 {\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 } from '@veloceapps/core';\nimport { Subject } from 'rxjs';\nimport { 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): string {\n if (!date) {\n return '';\n }\n\n try {\n return formatDate(\n date,\n this.formattingSettings?.dateFormats.datePipeFormat || DEFAULT_DATE_FORMAT,\n this.locale,\n this.defaultOptions?.timezone,\n );\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":["i1.ContextService","i2","map","tap","shareReplay","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i7.RuntimeSettingsService","switchMap","catchError","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","take","i2.FlowConfigurationService","i3","i3.RuntimeContextService","i3.ConfigurationService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"veloceapps-sdk-core.mjs","sources":["../../../../libs/sdk/core/modules/configuration/helpers.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/context.service.ts","../../../../libs/sdk/core/services/metric-calculation/metric-calculation.utils.ts","../../../../libs/sdk/core/services/quote-draft.service.ts","../../../../libs/sdk/core/utils/line-item.utils.ts","../../../../libs/sdk/core/utils/line-item.worker.ts","../../../../libs/sdk/core/utils/ui-definition.utils.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-update.service.ts","../../../../libs/sdk/core/services/runtime-settings.service.ts","../../../../libs/sdk/core/modules/configuration/services/configuration.service.ts","../../../../libs/sdk/core/modules/flow-configuration/services/flow-configuration.service.ts","../../../../libs/sdk/core/services/metric-calculation/metric-calculation.service.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.ts","../../../../libs/sdk/core/modules/flow-configuration/flow-configuration.module.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 ConfigurationContextMode,\n ConfigurationRequest,\n LineItem,\n UIDefinitionProps,\n UUID,\n} from '@veloceapps/core';\nimport { RuntimeContext } from '../../types';\nimport { GuidedSellingSubmitData } 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 = (data: GuidedSellingSubmitData): ConfigurationRequest => {\n return {\n mode: 'SEARCH',\n step: 'START',\n attributeDomainMode: 'ALL',\n context: {\n headerId: 'TestId',\n mode: ConfigurationContextMode.TEST,\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","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 { 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({ providedIn: 'root' })\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 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 { LineItem } from '@veloceapps/core';\nimport { MetricCalculationMethod } from './metric-calculation.types';\n\nexport function calculateMetricByMethod(\n lineItems: LineItem[],\n metric: string,\n method: MetricCalculationMethod,\n): number {\n const items = getLineItemsByMethod(lineItems, method);\n\n return items.reduce((acc: number, li: LineItem[]) => {\n let value = li.reduce(\n (accProduct: number, item: LineItem) => accProduct + ((item.totalMetrics && item.totalMetrics[metric]) || 0),\n 0,\n );\n\n if (method === 'avg' && li.length > 0) {\n value /= li.length;\n }\n\n return acc + value;\n }, 0);\n}\n\nexport function getLineItemsByMethod(lineItems: LineItem[], method: MetricCalculationMethod): LineItem[][] {\n switch (method) {\n case 'first': {\n return lineItems.filter(li => !li.rampInstanceId).map(item => [item]);\n }\n case 'last': {\n const rootTermItems = lineItems.filter(li => !li.rampInstanceId);\n const products = rootTermItems.map(lineItem => [\n lineItem,\n ...lineItems.filter(li => li.rampInstanceId === lineItem.id),\n ]);\n\n return products\n .map(items => [...items].sort((a, b) => getDateValue(a.endDate || '') - getDateValue(b.endDate || '')).pop())\n .filter((li): li is LineItem => Boolean(li))\n .map(item => [item]);\n }\n case 'avg': {\n const rootTermItems = lineItems.filter(li => !li.rampInstanceId);\n return rootTermItems.map(lineItem => [lineItem, ...lineItems.filter(li => li.rampInstanceId === lineItem.id)]);\n }\n case 'sum': {\n return lineItems.map(item => [item]);\n }\n default: {\n return lineItems.map(item => [item]);\n }\n }\n}\n\nexport function getDateValue(date: string): number {\n return date ? new Date(date).getTime() : 0;\n}\n","import { Injectable } from '@angular/core';\nimport { PriceApiService, QuoteApiService } from '@veloceapps/api';\nimport { ConfigurationContextMode, LineItem, PriceList, PriceSummary, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, isEqual } from 'lodash';\nimport { BehaviorSubject, Observable, combineLatest, noop, zip } from 'rxjs';\nimport { filter, map, shareReplay, skip, switchMap, take, tap } from 'rxjs/operators';\nimport { ContextService } from './context.service';\n\n@Injectable({ providedIn: 'root' })\nexport class QuoteDraftService {\n private quoteSubj$ = new BehaviorSubject<QuoteDraft | 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(): 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 const quoteDraft = this.quoteSubj$.value;\n return Boolean(quoteDraft && quoteDraft.currentState.length > 0);\n }\n\n public allPriceLists: PriceList[] = [];\n public assetPriceLists: PriceList[] = [];\n public reset$ = this.resetSubj$.asObservable();\n public activePriceList$: Observable<PriceList | null>;\n\n constructor(\n private context: ContextService,\n private quoteApiService: QuoteApiService,\n private priceApiService: PriceApiService,\n ) {\n this.activePriceList$ = this.context.resolve$().pipe(\n map(ctx => this.allPriceLists.find(priceList => priceList.id === ctx.properties.PriceListId)),\n map(priceList => priceList ?? null),\n );\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.isInitialized = false;\n this.hasUnsavedChanges = false;\n }\n\n public init(quoteId: string, params: Dictionary<string>): Observable<void> {\n return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(\n tap(([quote, allPriceLists]) => {\n this.allPriceLists = allPriceLists;\n this.quoteSubj$.next(quote);\n\n this.context.update(quote.context);\n\n this.populateActivePriceLists$();\n }),\n map(() => noop()),\n take(1),\n );\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 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 quoteDraftForActivePriceList(): QuoteDraft | null {\n const quoteDraft = this.quoteDraft;\n\n if (!quoteDraft) {\n return null;\n }\n\n return {\n ...quoteDraft,\n initialState: this.filterByActivePriceList(quoteDraft.initialState),\n currentState: this.filterByActivePriceList(quoteDraft.currentState),\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 /**\n * Stream of activeCurrentState\n */\n public get activeCurrentState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(() => this.activeCurrentState));\n }\n\n /**\n * activeCurrentState is currentState passed through additional filters\n */\n public get activeCurrentState(): LineItem[] {\n let currentState = this.quoteDraft?.currentState ?? [];\n\n currentState = this.filterByActivePriceList(currentState);\n\n return currentState;\n }\n\n /**\n * Stream of activeInitialState\n */\n public get activeInitialState$(): Observable<LineItem[]> {\n return this.quoteDraft$.pipe(map(() => this.activeInitialState));\n }\n\n /**\n * activeInitialState is initialState passed through additional filters\n */\n public get activeInitialState(): LineItem[] {\n const ctx = this.context.resolve();\n let initialState = this.quoteDraft?.initialState ?? [];\n\n if (ctx.mode === ConfigurationContextMode.ACCOUNT) {\n initialState = this.filterByActivePriceList(initialState);\n }\n\n return initialState;\n }\n\n public get isStandalone(): boolean {\n return this.context.resolve().properties.standalone === 'true';\n }\n\n public get isStandalone$(): Observable<boolean> {\n return this.context.resolve$().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 public updateActivePriceList(priceListId: string): void {\n this.context.update({ properties: { PriceListId: priceListId } });\n }\n\n private populateActivePriceLists$(): void {\n const ctx = this.context.resolve();\n const quoteDraft = this.quoteDraft;\n\n if (!quoteDraft) {\n return;\n }\n\n // In ACCOUNT mode populate price lists from related assets\n if (ctx.mode === ConfigurationContextMode.ACCOUNT) {\n // Populate list of price lists\n this.assetPriceLists = quoteDraft.currentState\n .map(({ priceListId }) => priceListId)\n .reduce<PriceList[]>((trunk, priceListId) => {\n if (!priceListId || trunk.some(item => item.id === priceListId)) {\n return trunk;\n }\n\n return [\n ...trunk,\n { id: priceListId, name: this.allPriceLists.find(item => item.id === priceListId)?.name ?? '' },\n ];\n }, []);\n }\n }\n\n private filterByActivePriceList(lineItems: LineItem[]): LineItem[] {\n const ctx = this.context.resolve();\n\n return lineItems.filter(li => !li.priceListId || li.priceListId === ctx.properties.PriceListId);\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 { Attribute, LineItem, NewAttribute, PortDomain, UUID } from '@veloceapps/core';\nimport { Dictionary, 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\nexport const calculateCardinalityVariables = (lineItems: LineItem[]): Map<string, number> => {\n const cardVars = new Map<string, number>();\n lineItems\n .filter(({ port, type }) => !!port && !!type)\n .forEach(li => {\n const cardinalityVariableName = `#CV-${li.type}@${li.port}`;\n cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);\n });\n return cardVars;\n};\n\nexport const recalculateCardinalityVariables = (original: LineItem, updated: LineItem): LineItem => {\n const cardinalityVariables = calculateCardinalityVariables(updated.lineItems);\n const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems);\n\n originalCardinalityVariables.forEach((value, key) => {\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 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 }), 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 generateModifiedAssetsMap = (lineItems: LineItem[]): Record<string, boolean> => {\n return lineItems.reduce((acc: Record<string, boolean>, li) => {\n const isModified = isLineItemModified(li);\n\n if (!isModified) {\n return acc;\n }\n\n const target = getOriginParent(lineItems, li);\n\n const id = target?.assetId ?? target?.openOrderLineItemId;\n if (id) {\n acc[id] = true;\n }\n\n return acc;\n }, {});\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 isLineItemModified = <T extends Pick<LineItem, 'actionCode' | 'status'>>(lineItem: T): boolean => {\n if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {\n return false;\n }\n\n return lineItem.actionCode !== 'EXIST';\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 { 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 { 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 { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport {\n ConfigurationSettings,\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 RuntimeConfigurationSettings,\n RuntimeCurrencySettings,\n ShoppingCartSetting,\n ShoppingCartSettings,\n getSupportedDateFormats,\n parseJsonSafely,\n validateDateFormat,\n DEFAULT_ACTION_CODE_LABELS,\n} from '@veloceapps/core';\nimport { Dictionary, uniqBy } from 'lodash';\nimport { BehaviorSubject, Observable, map, tap } from 'rxjs';\nimport { FormattingSettings } from '../types';\n\n@Injectable({ providedIn: 'root' })\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 }\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 { 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 LineItem,\n NewAttribute,\n PatchLineItemOptions,\n RuntimeModel,\n UIDefinitionProps,\n VlWindow,\n} from '@veloceapps/core';\nimport { 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 { 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 lineItem = new BehaviorSubject<LineItem | undefined>(undefined);\n private charges = new BehaviorSubject<Dictionary<Charge>>({});\n private pricePlans = new BehaviorSubject<Dictionary<CompiledPricePlan>>({});\n private procedureContext = new BehaviorSubject<Dictionary<unknown>>({});\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.lineItem.next(undefined);\n this.charges.next({});\n this.pricePlans.next({});\n }\n\n public patch$(lineItem: LineItem, options?: PatchLineItemOptions): Observable<LineItem> {\n if (!this.lineItem.value) {\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(this.lineItem.value).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 this.lineItem.next(this.lineItem.value ? { ...this.lineItem.value } : undefined);\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.lineItem.asObservable().pipe(shareReplay());\n }\n\n public getSnapshot(): LineItem | undefined {\n return this.lineItem.value ? { ...this.lineItem.value } : undefined;\n }\n\n public getRuntimeModel(): RuntimeModel {\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 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.charges.asObservable();\n }\n\n public get chargesSnapshot(): Dictionary<Charge> {\n return this.charges.value;\n }\n\n public get pricePlans$(): Observable<Dictionary<CompiledPricePlan>> {\n return this.pricePlans.asObservable();\n }\n\n public get pricePlansSnapshot(): Dictionary<CompiledPricePlan> {\n return this.pricePlans.value;\n }\n\n public get procedureContext$(): Observable<Dictionary<unknown>> {\n return this.procedureContext.asObservable();\n }\n\n public get procedureContextSnapshot(): Dictionary<unknown> {\n return this.procedureContext.value;\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(({ lineItem, context, charges, pricePlans, deletedLineItems, procedureContext }) => {\n this.contextService.update(context ?? {});\n this.charges.next(charges ?? {});\n this.pricePlans.next(pricePlans ?? {});\n this.procedureContext.next(procedureContext ?? {});\n\n if (lineItem) {\n this.lineItem.next(lineItem);\n }\n\n if (deletedLineItems?.length) {\n this.showInactiveProductsConfirmation();\n }\n\n this.configurableRamp = lineItem;\n }),\n map(({ lineItem }) => lineItem),\n catchError(error => throwError(() => new Error(error.error?.message || error.message || JSON.stringify(error)))),\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),\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(): ConfigurationRequest {\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 let request: ConfigurationRequest = {\n lineItem,\n mode: this.mode,\n step: !this.lineItem.value ? 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 request = ConfigurationTranslatorUtils.lightenConfigurationRequest(request);\n\n return request;\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 private getAsset(): LineItem | undefined {\n const lineItem = this.configurableRamp;\n if (!lineItem) {\n return;\n }\n\n return this.quoteDraftService.quoteDraft?.initialState.find(\n a => a.id === lineItem.openOrderLineItemId || a.id === lineItem.assetId,\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ProceduresApiService } from '@veloceapps/api';\nimport { Charge, CompiledPricePlan, ConfigurationContext, LineItem, MetricRule, QuoteDraft } from '@veloceapps/core';\nimport { Dictionary, cloneDeep } from 'lodash';\nimport { Observable, catchError, map, noop, of, shareReplay, 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';\n\n@Injectable()\nexport class FlowConfigurationService {\n constructor(\n private proceduresApiService: ProceduresApiService,\n private contextService: ContextService,\n private quoteDraftService: QuoteDraftService,\n private updateService: FlowUpdateService,\n private configurationService: ConfigurationService,\n ) {}\n\n public calculate$(quoteDraft: QuoteDraft): Observable<void> {\n return this.proceduresApiService.apply$(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 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.activeCurrentState;\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 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 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 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 this.handleErrorAndBounceBack(),\n );\n }\n\n public get(): Observable<LineItem[]> {\n return this.quoteDraftService.quoteDraft$.pipe(\n map(() => this.quoteDraftService.activeCurrentState),\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 }\n\n return throwError(() => error);\n }),\n );\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ConfigurationSettingsApiService } from '@veloceapps/api';\nimport { LineItem, MetricRule } from '@veloceapps/core';\nimport { Dictionary, uniq } from 'lodash';\nimport { combineLatest, Observable, Subject, take } from 'rxjs';\nimport { FlowConfigurationService } from '../../modules/flow-configuration/services/flow-configuration.service';\nimport { QuoteDraftService } from '../quote-draft.service';\nimport { MetricCalculationMethod } from './metric-calculation.types';\nimport { calculateMetricByMethod } from './metric-calculation.utils';\n\n@Injectable({ providedIn: 'root' })\nexport class MetricsCalculationService {\n public get onMetricsUpdate$(): Observable<void> {\n return this.metricsUpdated$.asObservable();\n }\n\n private metricsUpdated$ = new Subject<void>();\n private quoteMetricsSettings: Dictionary<MetricCalculationMethod> = {};\n private metricsCalculationMethodMap: Dictionary<MetricCalculationMethod> = {};\n private metricsData: Dictionary<number> = {};\n private activeMetricRules: MetricRule[] = [];\n\n constructor(\n private quoteDraftService: QuoteDraftService,\n private flowConfiguration: FlowConfigurationService,\n private settingsService: ConfigurationSettingsApiService,\n ) {\n this.activeMetricRules = this.flowConfiguration.activeMetricsSnapshot.filter(metricRule =>\n metricRule.metrics.some(metric => !!metric.totalName),\n );\n\n combineLatest([\n this.quoteDraftService.currentState$,\n this.settingsService.fetchSetting('QUOTE_LEVEL_METRIC_CALCULATION_METHOD').pipe(take(1)),\n ]).subscribe(([lineItems, setting]) => {\n let settingsData: Dictionary<MetricCalculationMethod> = {};\n try {\n settingsData = JSON.parse(setting?.value || '{}');\n } catch (error) {\n settingsData = {};\n }\n\n this.quoteMetricsSettings = settingsData;\n\n this.updateMetrics(lineItems);\n });\n }\n\n public getMetricValue(metric: string): number {\n return this.metricsData[metric] || 0;\n }\n\n private updateMetrics(lineItems: LineItem[]): void {\n const metricKeys = this.collectMetricKeys(lineItems).filter(key => !key.includes('Effective_'));\n this.metricsCalculationMethodMap = this.buildMetricsCalculationMethods(\n metricKeys,\n this.metricsCalculationMethodMap,\n );\n\n this.metricsData = metricKeys.reduce(\n (acc: Dictionary<number>, key: string) => ({ ...acc, [key]: this.calculateMetric(lineItems, key) }),\n {},\n );\n\n this.metricsUpdated$.next();\n }\n\n private calculateMetric(lineItems: LineItem[], metric: string): number {\n return calculateMetricByMethod(lineItems, metric, this.metricsCalculationMethodMap[metric] || 'sum');\n }\n\n private buildMetricsCalculationMethods(\n metricKeys: string[],\n initial: Dictionary<MetricCalculationMethod>,\n ): Dictionary<MetricCalculationMethod> {\n return metricKeys.reduce((acc: Dictionary<MetricCalculationMethod>, name: string) => {\n if (acc[name]) {\n return acc;\n }\n\n acc = { ...acc, [name]: 'sum' };\n\n const metricRule = this.getMetricRuleByTotalMetricName(name);\n const settingKey = metricRule?.metrics?.find(metric => metric.totalName === name)?.name || name;\n\n if (this.quoteMetricsSettings[settingKey]) {\n acc = { ...acc, [name]: this.quoteMetricsSettings[settingKey] };\n }\n\n return acc;\n }, initial);\n }\n\n private collectMetricKeys(lineItems: LineItem[]): string[] {\n const keys: string[] = [];\n lineItems.forEach(lineItem => {\n keys.push(...Object.keys(lineItem.totalMetrics || {}));\n keys.push(...this.collectMetricKeys(lineItem.lineItems));\n });\n return uniq(keys);\n }\n\n private getMetricRuleByTotalMetricName(name: string): MetricRule | undefined {\n return this.activeMetricRules.find(metricRule => metricRule.metrics.find(metric => metric.totalName === name));\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({ providedIn: 'root' })\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]),\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 { StatefulConfigurationApiService } from '@veloceapps/api';\nimport { ToastService, ToastType } from '@veloceapps/components';\nimport {\n ConfigurationExecuteRequest,\n ConfigurationRequest,\n ConfigurationRequestAction,\n ConfigurationRequestSelector,\n EntityUtil,\n UUID,\n} from '@veloceapps/core';\nimport { omit } from 'lodash';\nimport { BehaviorSubject, Observable, map, of, switchMap, tap } from 'rxjs';\nimport { ConfigurationRuntimeService } from './configuration-runtime.service';\nimport { ConfigurationService } from './configuration.service';\n\n@Injectable()\nexport class ConfigurationState {\n private readonly stateSubj$ = new BehaviorSubject<Record<string, unknown>>({});\n\n public state$ = this.stateSubj$.asObservable();\n\n private stateId: string | null = null;\n\n constructor(\n private statefulConfigurationApiService: StatefulConfigurationApiService,\n private runtimeService: ConfigurationRuntimeService,\n private configurationService: ConfigurationService,\n private toastService: ToastService,\n ) {}\n\n public init$(): Observable<void> {\n return this.configurationService.configure().pipe(\n switchMap(() => {\n if (!this.isStatefulConfiguration) {\n return of(undefined);\n }\n\n const { actions, selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n\n return this.statefulConfigurationApiService.init({\n request: this.configurationService.generateRequest(),\n actions: actions?.map(action => ({ name: action.apiName, script: action.script })),\n selectors: selectors?.map(selector => ({ name: selector.apiName, script: selector.script })),\n });\n }),\n tap(stateId => (this.stateId = stateId || null)),\n map(() => undefined),\n );\n }\n\n public cleanup(): void {\n this.stateId = null;\n this.configurationService.reset();\n this.stateSubj$.next({});\n }\n\n public execute$(req: ConfigurationExecuteRequest): Observable<void> {\n if (this.isStatefulConfiguration) {\n return this.executeStateful$(req);\n } else {\n return this.executeStateless$(req);\n }\n }\n\n public dispatch$(actionName: string, inputData: unknown): Observable<void> {\n return this.execute$({ actions: [{ name: actionName, inputData }] });\n }\n\n public select$(selectorName: string, inputData: unknown): Observable<unknown> {\n const requestId = UUID.UUID();\n\n return this.execute$({\n selectors: {\n [requestId]: {\n name: selectorName,\n inputData,\n },\n },\n }).pipe(\n map(() => this.stateSubj$.value[requestId]),\n tap(() => this.stateSubj$.next(omit(this.stateSubj$.value, requestId))),\n );\n }\n\n private get isStatefulConfiguration(): boolean {\n return this.runtimeService.uiDefinitionProperties.statefulConfigurationEnabled ?? false;\n }\n\n private executeStateless$(request: ConfigurationExecuteRequest): Observable<void> {\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();\n request.actions.forEach(action => {\n configurationRequest = this.executeActionScript(configurationRequest, action) ?? configurationRequest;\n });\n\n return this.configurationService.configureRequest$(configurationRequest);\n }),\n tap(() => {\n if (!request.selectors) {\n return;\n }\n\n // Run selectors and apply them to the state\n const finalConfigurationRequest = this.configurationService.generateRequest();\n const selectorsResult = EntityUtil.entries(request.selectors).reduce(\n (trunk: Record<string, unknown>, [key, selector]) => {\n trunk[key] = this.executeSelectorScript(finalConfigurationRequest, selector);\n return trunk;\n },\n {},\n );\n\n this.stateSubj$.next({\n ...this.stateSubj$.value,\n ...selectorsResult,\n });\n }),\n map(() => undefined),\n );\n }\n\n private executeStateful$(request: ConfigurationExecuteRequest): Observable<void> {\n if (!this.stateId) {\n return of(undefined);\n }\n\n return this.statefulConfigurationApiService.execute(this.stateId, request).pipe(\n tap(response => {\n this.stateId = response.stateId;\n const updatedState = this.stateSubj$.value;\n\n EntityUtil.entries(response.selectors).forEach(([key, value]) => {\n if (!value.success) {\n if (!this.runtimeService.uiDefinitionProperties.suppressToastMessages) {\n this.toastService.add({ summary: value.errorMessage, severity: ToastType.error });\n }\n\n return;\n }\n\n updatedState[key] = value.result;\n });\n\n this.stateSubj$.next(updatedState);\n }),\n map(() => undefined),\n );\n }\n\n private executeActionScript(\n request: ConfigurationRequest,\n processor: ConfigurationRequestAction,\n ): ConfigurationRequest | null {\n const { actions } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n const script = actions?.find(action => action.apiName === processor.name)?.script;\n if (!script) {\n return null;\n }\n\n return this.executeProcessorScript(request, script, processor.inputData) as ConfigurationRequest;\n }\n\n private executeSelectorScript(request: ConfigurationRequest, processor: ConfigurationRequestSelector): unknown {\n const { selectors } = this.runtimeService.runtimeContext?.uiDefinitionContainer ?? {};\n const script = selectors?.find(selector => selector.apiName === processor.name)?.script;\n if (!script) {\n return null;\n }\n\n return this.executeProcessorScript(request, script, processor.inputData);\n }\n\n private executeProcessorScript(request: ConfigurationRequest, script: string, inputData: unknown): unknown {\n return new Function(`${script}\\nreturn transform;`)()({\n request,\n inputData: inputData,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { PriceApiService } from '@veloceapps/api';\nimport { FlowConfigurationService } from './services/flow-configuration.service';\nimport { FlowUpdateService } from './services/flow-update.service';\n\n@NgModule({\n imports: [],\n providers: [FlowConfigurationService, FlowUpdateService, PriceApiService],\n})\nexport class FlowConfigurationModule {}\n","import { NgModule } from '@angular/core';\nimport { ConfigurationApiService, ContextApiService, ProductModelApiService } from '@veloceapps/api';\nimport { ConfirmationDialogModule } from '@veloceapps/components';\nimport { ConfigurationRuntimeService } from './services/configuration-runtime.service';\nimport { ConfigurationService } from './services/configuration.service';\nimport { ConfigurationState } from './services/configuration.state';\nimport { RuntimeContextService } from './services/runtime-context.service';\n\n@NgModule({\n imports: [ConfirmationDialogModule],\n providers: [\n ContextApiService,\n ProductModelApiService,\n ConfigurationApiService,\n ConfigurationRuntimeService,\n RuntimeContextService,\n ConfigurationService,\n ConfigurationState,\n ],\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_DECIMAL_SEPARATOR,\n DEFAULT_DECIMALS_COUNT,\n DEFAULT_THOUSANDS_SEPARATOR,\n getSupportedDateFormats,\n} from '@veloceapps/core';\nimport { FlowConfigurationModule } from './modules';\nimport { ConfigurationModule } from './modules/configuration/configuration.module';\nimport { RuntimeSettingsService } from './services';\nimport { FORMATTING_SETTINGS_TOKEN, FormattingSettings } 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 {\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":["i1.ContextService","i2","map","tap","shareReplay","i1.QuoteDraftService","i2.ConfigurationRuntimeService","i3.ContextService","i4","i7.RuntimeSettingsService","switchMap","catchError","i2.ContextService","i3.QuoteDraftService","i4.FlowUpdateService","i5.ConfigurationService","take","i2.FlowConfigurationService","i3","i3.RuntimeContextService","i3.ConfigurationService"],"mappings":"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"}
|