{"version":3,"sources":["libs/inventory-ui/src/lib/active-items/active-items.service.ts","libs/inventory-ui/src/lib/common/item-label/item-label.component.ts","libs/inventory-ui/src/lib/common/item-label/item-label.component.html","libs/inventory-ui/src/lib/common/item-list/item-list.component.ts","libs/inventory-ui/src/lib/common/item-list/item-list.component.html","libs/inventory-ui/src/lib/active-items/active-items.component.ts","libs/inventory-ui/src/lib/active-items/active-items.component.html","libs/inventory-ui/src/lib/common/edition-selector/edition-selector.component.ts","libs/inventory-ui/src/lib/common/edition-selector/edition-selector.component.html","libs/inventory-ui/src/lib/common/edition-selector/find-item-edition.pipe.ts","libs/inventory-ui/src/lib/common/billing-terms/billing-period.pipe.ts","libs/inventory-ui/src/lib/common/pipes/cents-to-dollars.pipe.ts","libs/inventory-ui/src/lib/common/item-price/frequency.ts","libs/inventory-ui/src/lib/common/item-price/index.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/utils.ts","libs/inventory-ui/src/lib/common/pipes/price-validator.pipe.ts","libs/inventory-ui/src/lib/common/price-summary-display/price-summary-display.component.ts","libs/inventory-ui/src/lib/common/price-summary-display/price-summary-display.component.html","libs/inventory-ui/src/lib/common/pipes/format-wholesale-minimum-hint.pipe.ts","libs/inventory-ui/src/lib/common/pipes/has-setup-fee.pipe.ts","libs/inventory-ui/src/lib/common/pipes/is-setup-fee-removable.pipe.ts","libs/inventory-ui/src/lib/billing-term-dialog/sales-to-galaxy-frequency.pipe.ts","libs/inventory-ui/src/lib/common/billing-terms/format-billing-term.pipe.ts","libs/inventory-ui/src/lib/common/item-common.module.ts","libs/inventory-ui/src/lib/active-items/active-items.module.ts","libs/inventory-ui/src/lib/billing-term-dialog/format-revenue-period.pipe.ts","libs/inventory-ui/src/lib/billing-term-dialog/billing-term-dialog.component.ts","libs/inventory-ui/src/lib/billing-term-dialog/billing-term-dialog.component.html","libs/inventory-ui/src/lib/common/inventory-item/adapters/store.ts","libs/inventory-ui/src/lib/common/inventory-item/adapters/marketplace.ts","libs/inventory-ui/src/lib/common/inventory-item/adapters/adapter.ts","libs/inventory-ui/src/lib/common/inventory-item/adapters/index.ts","libs/inventory-ui/src/lib/common/inventory-item/item-types/index.ts","libs/inventory-ui/src/lib/common/inventory-item/type.ts","libs/inventory-ui/src/lib/common/inventory-item/index.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/interface.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/line-item.ts","libs/inventory-ui/src/lib/item-selector/util/item.ts","libs/inventory-ui/src/lib/item-selector/util/edition.ts","libs/inventory-ui/src/lib/item-selector/util/index.ts","libs/inventory-ui/src/lib/services/package-contents.service.ts","libs/inventory-ui/src/lib/common/package-contents-popover/package-contents-popover.component.ts","libs/inventory-ui/src/lib/common/package-contents-popover/package-contents-popover.component.html","libs/inventory-ui/src/lib/common/package-contents-popover/package-contents-popover.module.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/column.ts","libs/inventory-ui/src/lib/common/item-price/retail.ts","libs/inventory-ui/src/lib/common/item-price/wholesale.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/item-pricing-table.data-source.ts","libs/inventory-ui/src/lib/billing-frequency-dialog/billing-frequency-dialog.component.ts","libs/inventory-ui/src/lib/billing-frequency-dialog/billing-frequency-dialog.component.html","libs/inventory-ui/src/lib/common/item-pricing-table-base/item-pricing-table-base.component.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/item-pricing-table-base.component.html","libs/inventory-ui/src/lib/common/item-pricing-table-base/item-pricing-table-base.module.ts","libs/inventory-ui/src/lib/common/item-pricing-table-base/index.ts","libs/inventory-ui/src/lib/services/item-conflict.service.ts","libs/inventory-ui/src/lib/services/item-dependency.service.ts","libs/inventory-ui/src/lib/item-selector/item-selector-v2.service.ts","libs/inventory-ui/src/lib/services/line-item-cache.service.ts","libs/inventory-ui/src/lib/item-selector/interface.ts","libs/inventory-ui/src/lib/item-selector/item-selector-columns.ts","libs/inventory-ui/src/lib/item-selector/item-selector.data-source.ts","libs/inventory-ui/src/lib/item-selector/pipes/format-product-type.pipe.ts","libs/inventory-ui/src/lib/item-selector/pipes/format-product-requirement.pipe.ts","libs/inventory-ui/src/lib/item-selector/pipes/parse-wholesale-currency.pipe.ts","libs/inventory-ui/src/lib/item-selector/pipes/is-item-disabled.pipe.ts","node_modules/country-list/data.json","node_modules/country-list/country-list.js","libs/inventory-ui/src/lib/item-selector/pipes/format-disabled-item.pipe.ts","libs/inventory-ui/src/lib/item-selector/item-selector.component.ts","libs/inventory-ui/src/lib/item-selector/item-selector.component.html","libs/inventory-ui/src/lib/item-selector/item-selector-dialog/item-selector-dialog.component.ts","libs/inventory-ui/src/lib/item-selector/item-selector-dialog/item-selector-dialog.component.html","libs/inventory-ui/src/lib/item-pricing-table/item-pricing-table.service.ts","libs/inventory-ui/src/lib/item-pricing-table/item-pricing-table.component.ts","libs/inventory-ui/src/lib/item-pricing-table/item-pricing-table.component.html","libs/inventory-ui/src/lib/i18n/assets/en_devel.json","libs/inventory-ui/src/lib/i18n/inventory-ui-i18n.module.ts","libs/inventory-ui/src/lib/item-selector/item-selector.module.ts","libs/inventory-ui/src/lib/item-selector/item-selector-dialog/item-selector-dialog.module.ts","libs/inventory-ui/src/lib/item-pricing-table/item-pricing-table.module.ts","libs/inventory-ui/src/lib/item-pricing-table/index.ts","libs/inventory-ui/src/lib/item-search-select-filter/item-search-select-filter.service.ts","libs/inventory-ui/src/lib/item-search-select-filter/display-label.pipe.ts","libs/inventory-ui/src/lib/item-search-select-filter/item-search-single-select-filter/item-search-single-select-filter.component.ts","libs/inventory-ui/src/lib/item-search-select-filter/item-search-single-select-filter/item-search-single-select-filter.component.html","libs/inventory-ui/src/lib/item-search-select-filter/item-search-select-filter.module.ts","libs/inventory-ui/src/lib/item-selection-cart/item-selection-cart.interface.ts","libs/inventory-ui/src/lib/item-selection-cart/item-selection-cart.module.ts","libs/inventory-ui/src/lib/services/services.module.ts","libs/inventory-ui/src/index.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { combineLatest, forkJoin, Observable, of } from 'rxjs';\nimport { map, switchMap, withLatestFrom } from 'rxjs/operators';\nimport {\n AccountDates,\n AccountsService,\n AddonActivation,\n AppAndAddonActivationStatus,\n ListAppsAndAddonsActivationsStatusesForBusinessResponseAppsAndAddonsActivationStatusesInterface as ActivationStatusesInterface,\n} from '@vendasta/accounts/legacy';\nimport { Account as AccountProductDetails } from '@vendasta/accounts/legacy/_internal/objects/api';\nimport { App, AppKey, GetMultiAppRequest, PartnerApiService } from '@vendasta/marketplace-apps';\nimport { Activation } from './type';\nimport { InventoryListItem } from '../common/item-list/type';\n\n@Injectable()\nexport class ActiveItemsService {\n private accountsService = inject(AccountsService);\n private partnerMarketplaceService = inject(PartnerApiService);\n\n getCurrentlyActiveItems(partnerId: string, businessId: string, marketId: string): Observable {\n const appStatuses$ = this.listAppStatuses(businessId);\n\n const appKeys$ = appStatuses$.pipe(\n map((appStatuses) =>\n appStatuses.map(\n (appStatus) =>\n new AppKey({\n appId: appStatus.appId,\n editionId: appStatus.editionId,\n }),\n ),\n ),\n );\n\n const items$ = appKeys$.pipe(\n switchMap((appKeys) =>\n this.partnerMarketplaceService.getMultiApp(\n new GetMultiAppRequest({\n partnerId: partnerId,\n marketId: marketId,\n appKeys: appKeys,\n includeNotEnabled: true,\n projectionFilter: {\n paths: ['editionInformation', 'sharedMarketingInformation', 'trialConfiguration'],\n },\n }),\n ),\n ),\n );\n\n const activations$ = this.listActivationsForBusiness(businessId, partnerId);\n\n return combineLatest([items$, activations$]).pipe(\n withLatestFrom(appStatuses$),\n map(([[resp, activations], appStatuses]) => {\n const apps = resp?.apps ?? [];\n const appStatusMap = this.mapify(\n appStatuses,\n (as: ActivationStatusesInterface) => as.appId,\n );\n const activationsMap = this.mapify(activations, (ac: Activation) => ac.addonId || ac.appId);\n return apps.map((app: App) =>\n this.convertToInventoryListItem(app, appStatusMap.get(app.key.appId), activationsMap.get(app.key.appId)),\n );\n }),\n );\n }\n\n listAppStatuses(businessId: string): Observable {\n return this.accountsService.listAppsAndAddonsActivationStatusesForBusiness(businessId).pipe(\n map((appStatuses) => {\n if (!appStatuses) return [];\n return appStatuses.filter((appStatus) => this.checkIfActive(appStatus));\n }),\n );\n }\n\n listActivationsForBusiness(businessId: string, partnerId: string): Observable {\n const accountDates$ = this.accountsService.listAccountDates(businessId, '', 1000);\n\n const appActivations$ = this.listActiveProducts(businessId, partnerId).pipe(\n map((acc) => this.convertAppActivationsToActivations(acc)),\n );\n\n const addonActivations$ = appActivations$.pipe(\n map((appActivations) =>\n appActivations.map((act) =>\n this.accountsService.listAddonActivations(businessId, act.appId).pipe(map((resp) => resp.activations || [])),\n ),\n ),\n switchMap((responses: Observable[]) => {\n if (responses.length === 0) return of([]);\n\n return forkJoin([...responses]).pipe(\n map((arrays) => {\n const addonActivations: AddonActivation[] = [];\n return addonActivations.concat(addonActivations, ...arrays);\n }),\n );\n }),\n map((addonActivations) => this.convertAddonActivationsToActivations(addonActivations)),\n );\n\n return combineLatest([appActivations$, addonActivations$, accountDates$]).pipe(\n map(([appActivations, addonActivations, accountDates]) => {\n return appActivations\n .concat(addonActivations)\n .map((activation) => this.mergeActivationsAndDates(activation, accountDates));\n }),\n );\n }\n\n listActiveProducts(businessId: string, partnerId: string): Observable {\n return this.accountsService.list(businessId, partnerId).pipe(map((listResponse) => listResponse.accounts));\n }\n\n private convertToInventoryListItem(\n app: App,\n appStatus: ActivationStatusesInterface | undefined,\n activation: Activation | undefined,\n ): InventoryListItem {\n const activeItem: InventoryListItem = { itemId: '', type: 'app', name: '', iconUrl: '', quantity: 0 };\n\n activeItem.itemId = app.key.appId;\n activeItem.name = app.sharedMarketingInformation.name;\n activeItem.iconUrl = app.sharedMarketingInformation.iconUrl;\n\n if (app.sharedMarketingInformation.editionName) {\n activeItem.edition = { editionId: app.key.editionId, name: app.sharedMarketingInformation.editionName };\n }\n\n if (appStatus) {\n activeItem.quantity = appStatus.count ?? 0;\n\n if (appStatus.status === AppAndAddonActivationStatus.PENDING) {\n activeItem.status = 'Pending';\n }\n if (appStatus.status === AppAndAddonActivationStatus.CANCELED) {\n activeItem.status = 'Canceled';\n }\n }\n\n if (activation) {\n const isTrial = activation.trial;\n if (activation.deactivation) {\n const currentTime = new Date();\n const trialStatusIsActive = activation.deactivation > currentTime;\n if (isTrial) {\n activeItem.status = trialStatusIsActive ? 'Demo' : 'Demo expired';\n }\n }\n activeItem.descriptor = activation.activationDescriptor;\n }\n\n return activeItem;\n }\n\n private convertAppActivationsToActivations(accounts: AccountProductDetails[]): Activation[] {\n if (!accounts) return [];\n return accounts.map((acc) => ({ ...acc, appId: this.getAppId(acc) }));\n }\n\n private convertAddonActivationsToActivations(activations: AddonActivation[]): Activation[] {\n if (!activations) return [];\n\n const now = new Date();\n return activations\n .filter((activation) => !activation.deactivated || activation.deactivated > now)\n .map((a) => ({ ...a, activation: a.activated, deactivation: a.deactivated }));\n }\n\n private getAppId(account: AccountProductDetails): string {\n if (account.productId === 'MP') {\n return account.appId;\n } else if (account.productId === 'CP') {\n return account.accountId;\n } else {\n return account.productId;\n }\n }\n\n private checkIfActive(appStatus: ActivationStatusesInterface): boolean {\n const isActivated = appStatus.status === AppAndAddonActivationStatus.ACTIVATED;\n const isCancelled = appStatus.status === AppAndAddonActivationStatus.CANCELED;\n const isPending = appStatus.status === AppAndAddonActivationStatus.PENDING;\n return isActivated || isCancelled || isPending;\n }\n\n private mergeActivationsAndDates(activation: Activation, accountDates: AccountDates[]): Activation {\n if (!accountDates || accountDates.length < 1) return activation;\n\n const date =\n accountDates.find((item) => item.activationId === activation.activationId) ||\n accountDates.find((item) => item.appId === activation.appId && item.addonId === activation.addonId);\n if (date) {\n if (!activation.deactivation || activation.deactivation.getFullYear() <= 1900) {\n activation.deactivation = date.pendingDeactivation;\n }\n }\n return activation;\n }\n\n private mapify(array: T[], keyFn: (item: T) => string | undefined): Map {\n return array.reduce((map, item) => {\n const key = keyFn(item);\n if (key !== undefined) {\n map.set(key, item);\n }\n return map;\n }, new Map());\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { LabeledItem } from './item-label.interface';\n\n@Component({\n selector: 'inventory-ui-item-label',\n templateUrl: './item-label.component.html',\n styleUrls: ['./item-label.component.scss'],\n standalone: false,\n})\nexport class ItemLabelComponent implements OnInit {\n @Input() item?: LabeledItem;\n @Input() showItemId = true;\n @Input() showEditionName = true;\n @Input() showStatus = false;\n\n itemStatus = '';\n\n ngOnInit(): void {\n if (this.showStatus) {\n let statusKey = '';\n switch (this.item?.status) {\n case 'Pending':\n statusKey = 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.PENDING';\n break;\n case 'Canceled':\n statusKey = 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.CANCELED';\n break;\n case 'Demo':\n statusKey = 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.DEMO';\n break;\n case 'Demo expired':\n statusKey = 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.DEMO_EXPIRED';\n break;\n }\n this.itemStatus = statusKey;\n }\n }\n}\n","
\n \n
\n
\n \n {{ item.name }}\n | {{ item.editionName }}\n \n 1\" class=\"item-quantity\">({{ item.quantity }})\n
\n \n {{ item.subtext }}\n {{ item.itemId }}\n \n {{ itemStatus | translate }}\n \n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { InventoryListItem } from './type';\n\nexport interface ItemListItemRemovedEvent {\n itemId: string;\n parentItemId?: string;\n isNested: boolean;\n}\n\n@Component({\n selector: 'inventory-ui-item-list',\n templateUrl: './item-list.component.html',\n styleUrls: ['./item-list.component.scss'],\n standalone: false,\n})\nexport class ItemListComponent {\n @Input() items: InventoryListItem[] = [];\n @Input() removeButtonEnabled = false;\n @Input() showStatus = false;\n\n @Output() itemRemoved = new EventEmitter();\n\n removeItem(itemId: string, parentItemId: string, isNested: boolean): void {\n this.itemRemoved.emit({ itemId, parentItemId, isNested });\n }\n}\n","\n \n \n \n
\n \n
\n
\n \n
\n\n\n 0\" data-cy=\"item-row\">\n
\n \n \n \n clear\n \n \n
\n
\n
\n","import { Component, inject, Input, OnInit } from '@angular/core';\nimport { ActiveItemsService } from './active-items.service';\nimport { Observable } from 'rxjs';\nimport { InventoryListItem } from '../common/item-list/type';\n\n@Component({\n selector: 'inventory-ui-active-items',\n templateUrl: './active-items.component.html',\n styleUrls: ['./active-items.component.scss'],\n standalone: false,\n})\nexport class ActiveItemsComponent implements OnInit {\n private activeItemsService = inject(ActiveItemsService);\n\n @Input() partnerId = '';\n @Input() businessId = '';\n @Input() marketId = '';\n @Input() hideTitle = false;\n\n currentlyActiveItems$!: Observable;\n\n ngOnInit(): void {\n this.currentlyActiveItems$ = this.activeItemsService.getCurrentlyActiveItems(\n this.partnerId,\n this.businessId,\n this.marketId,\n );\n }\n}\n","@if (!hideTitle) {\n
\n

\n {{ 'INVENTORY_UI.ACTIVE_ITEMS.TITLE' | translate }}\n

\n
\n}\n\n@if (currentlyActiveItems$ | async; as items) {\n @if (items.length) {\n \n } @else {\n
\n {{ 'INVENTORY_UI.ACTIVE_ITEMS.NO_ACTIVE_ITEMS' | translate }}\n
\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\nimport { InventoryItemEdition } from '../inventory-item/item-types/app';\n\nexport interface Edition extends InventoryItemEdition {\n isActive?: boolean;\n}\n\n@Component({\n selector: 'inventory-ui-edition-selector',\n templateUrl: './edition-selector.component.html',\n styleUrls: ['./edition-selector.component.scss'],\n standalone: false,\n})\nexport class EditionSelectorComponent {\n @Input() selectedEditionId!: string;\n @Input() editions!: Edition[];\n\n @Output() editionSelectionChange = new EventEmitter();\n\n handleEditionChange(event: MatSelectChange): void {\n this.editionSelectionChange.emit(event.value);\n }\n}\n","\n \n \n \n \n {{ edition?.name }}\n \n \n {{ 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.ACTIVE' | translate }}\n \n \n \n \n \n \n {{ edition?.name }}\n \n \n {{ 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.ACTIVE' | translate }}\n \n \n \n \n\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Edition } from './edition-selector.component';\n\n@Pipe({\n name: 'findItemEdition',\n pure: false,\n standalone: false,\n})\nexport class FindItemEditionPipe implements PipeTransform {\n transform(selectedEditionId: string, editions: Edition[]): Edition | undefined {\n return editions?.find((edition) => (edition?.editionId ?? '') === (selectedEditionId ?? ''));\n }\n}\n","import { DatePipe } from '@angular/common';\nimport { inject, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BillingPeriodInterface, DurationPeriod, RevenuePeriod } from '@vendasta/sales-orders';\nimport dayjs from 'dayjs';\n\n@Pipe({\n name: 'formatBillingPeriod',\n standalone: false,\n})\nexport class FormatBillingPeriodPipe implements PipeTransform {\n private datePipe = inject(DatePipe);\n private translateService = inject(TranslateService);\n\n transform(billingPeriod?: BillingPeriodInterface, revenuePeriod?: RevenuePeriod, defaultStartDate?: Date): string {\n if (!billingPeriod) {\n return '';\n }\n\n const startDate =\n this.datePipe.transform(billingPeriod.startDate, 'MMM d, yyyy') ||\n this.datePipe.transform(defaultStartDate, 'MMM d, yyyy') ||\n '';\n if (billingPeriod.duration) {\n return this.formatDurationBillingPeriod(startDate, billingPeriod);\n }\n\n if (\n !revenuePeriod ||\n !billingPeriod.endDate ||\n dayjs(billingPeriod.endDate).isSame(0) ||\n dayjs(billingPeriod.endDate).isBefore(startDate)\n ) {\n return startDate;\n }\n\n if (billingPeriod.duration) {\n return this.formatDurationBillingPeriod(startDate, billingPeriod);\n }\n\n if (revenuePeriod === RevenuePeriod.YEARLY) {\n return this.formatYearlyBillingPeriod(startDate, billingPeriod.endDate);\n }\n\n return this.formatMonthlyBillingPeriod(startDate, billingPeriod.endDate);\n }\n\n private formatDurationBillingPeriod(startDate: string, billingPeriod: BillingPeriodInterface): string {\n const translationProps: BillingPeriodTranslationProps = {\n startDate,\n numPeriods: billingPeriod.duration?.value || 1,\n };\n\n if (!billingPeriod?.duration) {\n return startDate;\n }\n\n // Yearly duration periods\n if (billingPeriod.duration.duration === DurationPeriod.YEAR) {\n if (billingPeriod.duration.value === 1) {\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_ONE_YEAR', translationProps);\n }\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_MANY_YEARS', translationProps);\n }\n\n // Monthly duration periods\n if (billingPeriod.duration.value === 1) {\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_ONE_MONTH', translationProps);\n }\n\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_MANY_MONTHS', translationProps);\n }\n\n private formatMonthlyBillingPeriod(startDate: string, endDate: Date): string {\n const numMonths = dayjs(endDate).diff(startDate, 'month');\n const translationProps: BillingPeriodTranslationProps = { startDate, numPeriods: numMonths };\n if (numMonths <= 0) {\n return '';\n }\n if (numMonths === 1) {\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_ONE_MONTH', translationProps);\n }\n\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_MANY_MONTHS', translationProps);\n }\n\n private formatYearlyBillingPeriod(startDate: string, endDate: Date): string {\n const numYears = dayjs(endDate).diff(startDate, 'year');\n const translationProps: BillingPeriodTranslationProps = { startDate, numPeriods: numYears };\n if (numYears <= 0) {\n return '';\n }\n if (numYears === 1) {\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_ONE_YEAR', translationProps);\n }\n\n return this.translateService.instant('INVENTORY_UI.BILLING_PERIOD.START_DATE_MANY_YEARS', translationProps);\n }\n}\n\nexport type BillingPeriodTranslationProps = {\n startDate: string;\n numPeriods: number;\n};\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'centsToDollars',\n standalone: false,\n})\nexport class CentsToDollarsPipe implements PipeTransform {\n transform(value: number): number {\n return value < 0 ? 0 : value / 100;\n }\n}\n","import { AppPrices, FrequencyPrice, InstancePrice } from '@galaxy/marketplace-apps';\nimport { SimplePrice, getPartnerCurrency } from '@vendasta/billing-ui';\n\nexport type ItemFrequencyPrice = SimplePrice & {\n total: number;\n minimumPrice?: number;\n};\n\nexport function getFrequencyPrices(appPrices: AppPrices, editionId = '', pricingContext: string): FrequencyPrice[] {\n const appPrice = appPrices?.pricesForContexts?.[pricingContext];\n const priceForEditions = appPrice?.pricesForEditions?.[editionId];\n const currency = getPartnerCurrency(appPrice);\n return priceForEditions?.pricesForCurrencies?.[currency]?.pricesForFrequencies ?? [];\n}\n\n// instance price is automatically calculated based on: quantity, discounts, and setup fee\n// to get the discounted unit price, we need to reverse engineer the instance price\nexport function calculateUnitPriceFromInstancePrice(instancePrice: InstancePrice, setupFee = 0, quantity = 1): number {\n const totalPricePerUnit = (instancePrice?.total ?? 0) / quantity;\n const basePricePerUnit = totalPricePerUnit - setupFee;\n return basePricePerUnit;\n}\n","export { ItemRetailPrice } from './retail';\nexport { ItemWholesalePrice } from './wholesale';\nexport { ItemFrequencyPrice, getFrequencyPrices } from './frequency';\n","import { Frequency } from '@vendasta/galaxy/frequency';\nimport { ItemFeeRow, ItemRow, PriceSummary } from './interface';\nimport { getFrequencyPrices, ItemFrequencyPrice, ItemWholesalePrice } from '../item-price';\nimport { AppPrices, FeeAmountType, FrequencyPrice } from '@vendasta/marketplace-apps';\nimport { toGalaxyFrequency } from '@vendasta/billing-ui';\nimport { InventoryItemWithPricing } from '../inventory-item';\n\nexport function resetItemFees(item: ItemRow): ItemFeeRow[] {\n if (!item?.fees && item.fees.length < 1) {\n return [];\n }\n const resetFees: ItemFeeRow[] = [];\n item.fees.forEach((fee) => {\n resetFees.push({ ...fee, retailAmount: fee.retailDefaultAmount, retailAmountTotal: fee.retailDefaultAmount });\n });\n return resetFees;\n}\n\nexport function resetItemVariablePrice(item: ItemRow): ItemWholesalePrice {\n if (!item.wholesalePricing) {\n return null;\n }\n const resetVariablePrice = item.wholesalePricing;\n resetVariablePrice.frequencyPrices = resetVariablePrice.frequencyPrices.map((price) => {\n return {\n ...price,\n price: price.minimumPrice,\n total: price.minimumPrice * item.quantity,\n };\n });\n return resetVariablePrice;\n}\n\nexport function parseItemFees(appPrices: AppPrices, item: InventoryItemWithPricing): ItemFeeRow[] {\n const editionId = item.type === 'app' ? item.edition?.editionId : undefined;\n const retailFrequencyPrices = getFrequencyPrices(appPrices, editionId, 'retail');\n const wholesaleFrequencyPrices = getFrequencyPrices(appPrices, editionId, 'wholesale');\n\n const fees: ItemFeeRow[] = [];\n const setupFee = parseSetupFee(wholesaleFrequencyPrices, retailFrequencyPrices, item);\n if (setupFee) {\n fees.push(setupFee);\n }\n\n const managementFees = parseManagementFees(wholesaleFrequencyPrices, item);\n fees.push(...managementFees);\n\n return fees;\n}\n\nexport function convertHTMLControlValueToNumber(value: string | number): number {\n if (typeof value === 'string') {\n return parseFloat(value.replace(/,/g, ''));\n }\n return value;\n}\n\nexport function calculateTotalWholesalePrice(items: ItemRow[]): PriceSummary {\n const priceSummary: PriceSummary = { oneTime: 0, monthly: 0, yearly: 0, currency: '' };\n\n items.forEach((item) => {\n if (!priceSummary.currency && item.wholesalePricing.currency) {\n priceSummary.currency = item.wholesalePricing.currency;\n }\n\n item.wholesalePricing.frequencyPrices?.forEach((price) => {\n addPriceBasedOnFrequency(price, priceSummary);\n });\n addFeesBasedOnFrequency(item, 'wholesale', priceSummary);\n });\n\n return priceSummary;\n}\n\nexport function calculateTotalRetailPrice(items: ItemRow[]): PriceSummary {\n const priceSummary: PriceSummary = { oneTime: 0, monthly: 0, yearly: 0, currency: '' };\n\n items.forEach((item) => {\n if (!priceSummary.currency && item.retailPricing.currency) {\n priceSummary.currency = item.retailPricing.currency;\n }\n\n addPriceBasedOnFrequency(item.retailPricing, priceSummary);\n addFeesBasedOnFrequency(item, 'retail', priceSummary);\n });\n\n return priceSummary;\n}\n\nfunction addPriceBasedOnFrequency(itemPrice: ItemFrequencyPrice, priceSummary: PriceSummary) {\n if (!itemPrice.price) return;\n // one time total needs to be updated regardless of the type of frequency\n priceSummary.oneTime += itemPrice.total;\n if (itemPrice.frequency === Frequency.MONTHLY) {\n priceSummary.monthly += itemPrice.total;\n }\n if (itemPrice.frequency === Frequency.YEARLY) {\n priceSummary.yearly += itemPrice.total;\n }\n}\n\nfunction addFeesBasedOnFrequency(item: ItemRow, priceType: 'wholesale' | 'retail', priceSummary: PriceSummary) {\n item.fees.forEach((fee) => {\n if (priceType === 'wholesale') {\n const wholesaleTotal = fee.wholesaleAmount * item.quantity;\n priceSummary.oneTime += wholesaleTotal;\n if (fee.type === 'management' && fee.frequency === Frequency.MONTHLY) {\n priceSummary.monthly += wholesaleTotal;\n }\n if (fee.type === 'management' && fee.frequency === Frequency.YEARLY) {\n priceSummary.yearly += wholesaleTotal;\n }\n }\n\n if (priceType === 'retail') {\n priceSummary.oneTime += fee.retailAmountTotal ?? 0;\n }\n });\n}\n\nexport function updatePercentageManagementFee(item: ItemRow, oldWholeSalePrice: number): void {\n item.fees.forEach((fee) => {\n if (fee.type === 'management' && fee.amountType === 'percentage') {\n const managementFeePercentage = Math.round((fee.wholesaleAmount / oldWholeSalePrice) * 100);\n const frequencyPrice = item.wholesalePricing.frequencyPrices.find((p) => p.frequency === fee.frequency);\n const wholesalePrice = frequencyPrice?.price || 0;\n fee.wholesaleAmount = calculatePercentageFee(managementFeePercentage, wholesalePrice);\n }\n });\n}\n\nexport function calculatePercentageFee(percentage: number, price: number) {\n return Math.round((percentage * price) / 100);\n}\n\nfunction parseSetupFee(\n wholesalePrices: FrequencyPrice[],\n retailPrices: FrequencyPrice[],\n item: InventoryItemWithPricing,\n): ItemFeeRow | null {\n const wholesaleSetupFeeTotal = wholesalePrices.reduce((acc, price) => acc + (price.setupFee || 0), 0);\n const retailSetupFeeTotal = parseRetailSetupFee(retailPrices, item);\n const retailDefaultSetupFee = parseRetailSetupFee(retailPrices, item, true);\n\n if (!wholesaleSetupFeeTotal && !retailSetupFeeTotal) return null;\n\n return {\n type: 'setup',\n label: 'Setup fee',\n amountType: 'fixed',\n wholesaleAmount: wholesaleSetupFeeTotal,\n retailAmount: retailSetupFeeTotal,\n retailAmountTotal: retailSetupFeeTotal * item.quantity,\n frequency: Frequency.ONE_TIME,\n retailDefaultAmount: retailDefaultSetupFee,\n };\n}\n\nfunction parseRetailSetupFee(\n retailPrices: FrequencyPrice[],\n item: InventoryItemWithPricing,\n useDefault?: boolean,\n): number {\n const revenueComponents = item.pricing?.currentRevenue?.revenueComponents;\n\n // default to marketplaceplace-apps fees if no revenue components are present\n if (!revenueComponents || useDefault) return retailPrices.reduce((acc, price) => acc + (price.setupFee || 0), 0);\n\n let retailSetupFeeTotal = 0;\n revenueComponents.forEach((rc, i) => {\n // one time is the default enum value\n const isOneTime = !rc.period;\n\n // skip the first revenue component since it represents the base price\n if (i > 0 && isOneTime) {\n retailSetupFeeTotal += rc.value ?? 0;\n }\n });\n return retailSetupFeeTotal;\n}\n\nfunction parseManagementFees(wholesaleFrequencyPrices: FrequencyPrice[], item: InventoryItemWithPricing): ItemFeeRow[] {\n const managementFees: ItemFeeRow[] = [];\n\n wholesaleFrequencyPrices.forEach((price) => {\n // exclude management fees when discounted wholesale price is zero\n if (price.instancePrice && getDiscountedBasePrice(price) <= 0) {\n return;\n }\n\n price.fees?.forEach((fee) => {\n if (fee.amountType === FeeAmountType.FEE_AMOUNT_TYPE_FIXED) {\n managementFees.push({\n type: 'management',\n label: 'Management fee',\n amountType: 'fixed',\n wholesaleAmount: fee.amount,\n frequency: toGalaxyFrequency(price.frequency),\n });\n }\n\n if (fee.amountType === FeeAmountType.FEE_AMOUNT_TYPE_PERCENTAGE) {\n let wholesalePrice = price.pricingRules?.[0]?.price;\n // use custom price if it is present\n if (item.pricing?.cost?.customPrice) {\n wholesalePrice = item.pricing.cost.customPrice;\n }\n managementFees.push({\n type: 'management',\n label: `Management fee (${fee.amount}%)`,\n amountType: 'percentage',\n wholesaleAmount: (fee.amount * wholesalePrice) / 100,\n frequency: toGalaxyFrequency(price.frequency),\n });\n }\n });\n });\n\n return managementFees;\n}\n\nfunction getDiscountedBasePrice(price: FrequencyPrice): number {\n const instancePrice = price.instancePrice?.total ?? 0;\n const setupFee = price.setupFee ?? 0;\n\n return instancePrice - setupFee;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport { GalaxyInputValidator } from '@vendasta/galaxy/input';\nimport { convertHTMLControlValueToNumber } from '../item-pricing-table-base/utils';\n\n@Pipe({\n name: 'priceValidator',\n standalone: false,\n})\nexport class PriceValidatorPipe implements PipeTransform {\n transform(minimumPrice: number): GalaxyInputValidator[] {\n const required: GalaxyInputValidator = {\n validatorFn: Validators.required,\n errorMessage: 'Required',\n };\n const minValue: GalaxyInputValidator = {\n validatorFn: (control) => {\n const convertedPrice = convertHTMLControlValueToNumber(control.value);\n if (convertedPrice < minimumPrice) {\n return { min: true };\n }\n return null;\n },\n errorMessage: 'Cannot be lower than minimum',\n };\n return [required, minValue];\n }\n}\n","import { Component, computed, Input, Signal, signal, ViewEncapsulation } from '@angular/core';\nimport { Frequency } from '@vendasta/galaxy/frequency';\nimport { PriceSummary } from '../item-pricing-table-base';\n\n@Component({\n selector: 'inventory-ui-price-summary-display',\n templateUrl: './price-summary-display.component.html',\n styleUrls: ['./price-summary-display.component.scss'],\n encapsulation: ViewEncapsulation.None,\n standalone: false,\n})\nexport class PriceSummaryDisplayComponent {\n protected readonly Frequency = Frequency;\n @Input() priceTotal: Signal = signal({\n oneTime: 0,\n monthly: 0,\n yearly: 0,\n currency: '',\n });\n\n public oneTimeCost = computed(() => {\n const priceTotal = this.priceTotal();\n return priceTotal.oneTime;\n });\n\n public monthlyCost = computed(() => {\n const priceTotal = this.priceTotal();\n return priceTotal.monthly;\n });\n\n public yearlyCost = computed(() => {\n const priceTotal = this.priceTotal();\n return priceTotal.yearly;\n });\n\n public currency = computed(() => {\n const priceTotal = this.priceTotal();\n return priceTotal.currency;\n });\n}\n","
\n \n
\n
\n \n
\n
\n \n
\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'formatWholesaleMinimumHint',\n standalone: false,\n})\nexport class FormatWholesaleMinimumHintPipe implements PipeTransform {\n transform(value: string): string {\n return `Minimum: ${value}`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ItemFeeRow } from '../item-pricing-table-base';\n\n@Pipe({\n name: 'hasSetupFee',\n pure: false,\n standalone: false,\n})\nexport class HasSetupFeePipe implements PipeTransform {\n transform(itemFees: ItemFeeRow[]): boolean {\n return itemFees.some((fee) => fee.type === 'setup');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ItemFeeRow } from '../item-pricing-table-base';\n\n@Pipe({\n name: 'isSetupFeeRemovable',\n pure: false,\n standalone: false,\n})\nexport class IsSetupFeeRemovablePipe implements PipeTransform {\n transform(fee: ItemFeeRow): boolean {\n return fee.type === 'setup' && (fee.retailAmount ?? 0) > 0 && !fee.wholesaleAmount;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\nimport { RevenuePeriod } from '@vendasta/sales-orders';\n\n@Pipe({ name: 'revenuePeriodToGalaxyFrequency', standalone: true })\nexport class RevenuePeriodToGalaxyFrequency implements PipeTransform {\n transform(value: RevenuePeriod): GalaxyFrequency {\n return revenuePeriodToGalaxyFrequency(value);\n }\n}\n\nexport function revenuePeriodToGalaxyFrequency(value: RevenuePeriod): GalaxyFrequency {\n switch (value) {\n case RevenuePeriod.ONETIME:\n return GalaxyFrequency.ONE_TIME;\n case RevenuePeriod.YEARLY:\n return GalaxyFrequency.YEARLY;\n default:\n return GalaxyFrequency.MONTHLY;\n }\n}\n\n@Pipe({ name: 'galaxyFrequencyToRevenuePeriod', standalone: true })\nexport class GalaxyFrequencyToRevenuePeriodPipe implements PipeTransform {\n transform(value: GalaxyFrequency): RevenuePeriod {\n return galaxyFrequencyToRevenuePeriod(value);\n }\n}\n\nexport function galaxyFrequencyToRevenuePeriod(value: GalaxyFrequency): RevenuePeriod {\n switch (value) {\n case GalaxyFrequency.ONE_TIME:\n return RevenuePeriod.ONETIME;\n case GalaxyFrequency.YEARLY:\n return RevenuePeriod.YEARLY;\n default:\n return RevenuePeriod.MONTHLY;\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\nimport { BillingTerm } from './interface';\nimport { FormatBillingPeriodPipe } from './billing-period.pipe';\nimport { galaxyFrequencyToRevenuePeriod } from '../../billing-term-dialog/sales-to-galaxy-frequency.pipe';\n\n@Pipe({\n name: 'formatBillingTerm',\n standalone: false,\n})\nexport class FormatBillingTermPipe implements PipeTransform {\n private formatBillingPeriodPipe = inject(FormatBillingPeriodPipe);\n\n transform(billingTerm: BillingTerm, frequency?: GalaxyFrequency, defaultStartDate?: Date): string {\n if (!frequency) {\n return this.formatBillingPeriodPipe.transform(billingTerm);\n }\n\n const revenuePeriod = galaxyFrequencyToRevenuePeriod(frequency);\n\n return this.formatBillingPeriodPipe.transform(billingTerm, revenuePeriod, defaultStartDate);\n }\n}\n","import { CommonModule, DatePipe } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatSelectModule } from '@angular/material/select';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { EditionSelectorComponent } from './edition-selector/edition-selector.component';\nimport { FindItemEditionPipe } from './edition-selector/find-item-edition.pipe';\nimport { FrequencySelectorComponent } from './frequency-selector/frequency-selector.component';\nimport { ItemLabelComponent } from './item-label/item-label.component';\nimport { ItemListComponent } from './item-list/item-list.component';\nimport { FormatBillingPeriodPipe } from './billing-terms/billing-period.pipe';\nimport { CentsToDollarsPipe } from './pipes/cents-to-dollars.pipe';\nimport { PriceValidatorPipe } from './pipes/price-validator.pipe';\nimport { ToStringPipe } from './pipes/to-string.pipe';\nimport { PriceSummaryDisplayComponent } from './price-summary-display/price-summary-display.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { FormatWholesaleMinimumHintPipe } from './pipes/format-wholesale-minimum-hint.pipe';\nimport { HasSetupFeePipe } from './pipes/has-setup-fee.pipe';\nimport { IsSetupFeeRemovablePipe } from './pipes/is-setup-fee-removable.pipe';\nimport { FormatBillingTermPipe } from './billing-terms/format-billing-term.pipe';\n\nexport const ITEM_COMMON_MODULE_IMPORTS = [\n CommonModule,\n MatButtonModule,\n MatChipsModule,\n MatIconModule,\n MatListModule,\n BillingUiModule,\n GalaxyAvatarModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n GalaxyBadgeModule,\n MatDialogModule,\n];\n\nexport const ITEM_COMMON_MODULE_PROVIDERS = [DatePipe, FormatBillingPeriodPipe];\n\nexport const ITEM_COMMON_MODULE_EXPORTS = [\n ItemLabelComponent,\n ItemListComponent,\n CentsToDollarsPipe,\n PriceValidatorPipe,\n ToStringPipe,\n PriceSummaryDisplayComponent,\n FormatBillingPeriodPipe,\n EditionSelectorComponent,\n FrequencySelectorComponent,\n FindItemEditionPipe,\n FormatWholesaleMinimumHintPipe,\n HasSetupFeePipe,\n IsSetupFeeRemovablePipe,\n FormatBillingTermPipe,\n];\n\nexport const ITEM_COMMON_MODULE_DECLARATIONS = [\n ItemLabelComponent,\n ItemListComponent,\n CentsToDollarsPipe,\n PriceValidatorPipe,\n ToStringPipe,\n PriceSummaryDisplayComponent,\n FormatBillingPeriodPipe,\n EditionSelectorComponent,\n FrequencySelectorComponent,\n FindItemEditionPipe,\n FormatWholesaleMinimumHintPipe,\n HasSetupFeePipe,\n IsSetupFeeRemovablePipe,\n FormatBillingTermPipe,\n];\n\n@NgModule({\n imports: ITEM_COMMON_MODULE_IMPORTS,\n exports: ITEM_COMMON_MODULE_EXPORTS,\n declarations: ITEM_COMMON_MODULE_DECLARATIONS,\n providers: ITEM_COMMON_MODULE_PROVIDERS,\n})\nexport class ItemCommonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ActiveItemsComponent } from './active-items.component';\nimport { ActiveItemsService } from './active-items.service';\nimport { ItemCommonModule } from '../common/item-common.module';\n\n@NgModule({\n imports: [CommonModule, ItemCommonModule, TranslateModule],\n exports: [ActiveItemsComponent],\n declarations: [ActiveItemsComponent],\n providers: [ActiveItemsService],\n})\nexport class ActiveItemsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { RevenuePeriod } from '@vendasta/sales-orders';\n\n@Pipe({ name: 'formatRevenuePeriod', standalone: true })\nexport class FormatRevenuePeriod implements PipeTransform {\n transform(value: RevenuePeriod, termLength: number): string {\n return formatRevenuePeriod(value, termLength);\n }\n}\n\nexport function formatRevenuePeriod(value: RevenuePeriod, termLength: number): string {\n switch (value) {\n case RevenuePeriod.ONETIME:\n return 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_FREQUENCY_ONE_TIME';\n case RevenuePeriod.YEARLY:\n if (termLength === 1) {\n return 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_FREQUENCY_YEAR';\n } else return 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_FREQUENCY_YEARS';\n default:\n if (termLength === 1) {\n return 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_FREQUENCY_MONTH';\n } else return 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_FREQUENCY_MONTHS';\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE, MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { RevenuePeriod, DurationInterface, DurationPeriod } from '@vendasta/sales-orders';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map, shareReplay, startWith, take } from 'rxjs/operators';\nimport { ItemCommonModule } from '../common/item-common.module';\nimport { FormatRevenuePeriod } from './format-revenue-period.pipe';\nimport { RevenuePeriodToGalaxyFrequency } from './sales-to-galaxy-frequency.pipe';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { GalaxyDateAdapter, MY_DATE_FORMATS } from '@vendasta/galaxy/datepicker/src/date-adapter';\nimport { getLocale } from '@vendasta/galaxy/utility/locale';\n\ndayjs.extend(utc);\n\nexport interface BillingTermDialogInput {\n itemId: string;\n name: string;\n editionName: string | undefined;\n iconUrl: string;\n revenueComponent: { revenue: number; period: RevenuePeriod };\n startDate: Date;\n endDate: Date | null;\n contractStartDate: Date;\n canAddAnotherTerm?: boolean;\n nonBillable?: boolean;\n canEditInvoices?: boolean;\n canScheduleActivations?: boolean;\n duration?: DurationInterface;\n}\n\nexport interface BillingTermDialogOutput {\n startDate: Date | null;\n endDate: Date | null;\n billingFrequency: RevenuePeriod;\n addAnotherTerm: boolean;\n nonBillable: boolean;\n duration?: DurationInterface;\n}\n\nconst MATERIAL_IMPORTS = [\n MatDialogModule,\n MatButtonModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatSelectModule,\n MatCheckboxModule,\n ReactiveFormsModule,\n MatMenuModule,\n MatIconModule,\n];\nconst GLXY_IMPORTS = [GalaxyAvatarModule, GalaxyFormFieldModule, GalaxyPipesModule, GalaxyButtonGroupModule];\nexport const IMPORTS = [\n ...MATERIAL_IMPORTS,\n ...GLXY_IMPORTS,\n CommonModule,\n BillingUiModule,\n ItemCommonModule,\n TranslateModule,\n RevenuePeriodToGalaxyFrequency,\n FormatRevenuePeriod,\n MatSlideToggle,\n];\n\nexport const PROVIDERS = [\n { provide: DateAdapter, useClass: GalaxyDateAdapter },\n { provide: MAT_DATE_FORMATS, useValue: MY_DATE_FORMATS },\n { provide: MAT_DATE_LOCALE, useValue: getLocale() },\n];\n\ninterface State {\n estimatedEndDate: Date | null;\n}\n\ninterface TermOptions {\n label: string;\n value: boolean;\n}\n\n@Component({\n selector: 'inventory-ui-billing-term-dialog',\n imports: [IMPORTS],\n providers: PROVIDERS,\n templateUrl: './billing-term-dialog.component.html',\n styleUrl: './billing-term-dialog.component.scss',\n})\nexport class BillingTermDialogComponent implements OnInit {\n protected form!: FormGroup;\n protected currentDate = new Date();\n protected estimatedEndDate$!: Observable;\n protected state$!: Observable;\n protected termOptions: TermOptions[] = [\n { label: 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.INDEFINITE_TERM', value: true },\n { label: 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.FIXED_TERM', value: false },\n ];\n protected billingFrequency!: RevenuePeriod;\n\n constructor(\n private readonly dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) protected input: BillingTermDialogInput,\n private formBuilder: FormBuilder,\n ) {}\n\n ngOnInit(): void {\n const startDate = this.input.startDate;\n let endDate = this.input.endDate;\n this.billingFrequency = this.input.revenueComponent.period;\n const isYearlyBilling = this.billingFrequency === RevenuePeriod.YEARLY;\n const endDateWithinYearlyBillingWindow = dayjs(endDate).isBefore(dayjs(startDate).add(1, 'year').toDate());\n if ((endDate && dayjs(endDate).isSame(0)) || dayjs(endDate).isBefore(dayjs(startDate))) {\n endDate = null;\n }\n if (isYearlyBilling && endDateWithinYearlyBillingWindow) {\n endDate = dayjs(startDate).add(1, 'year').toDate();\n }\n\n let nBillingPeriods = 0;\n let billIndefinitely = false;\n if (this.input.duration) {\n // If there is a duration passed in, then we are not billing indefinitely\n billIndefinitely = false;\n nBillingPeriods = this.input.duration.value || 0;\n const computeFrequency = this.billingFrequency === RevenuePeriod.YEARLY ? 'year' : 'month';\n endDate = dayjs(startDate).add(nBillingPeriods, computeFrequency).toDate();\n } else {\n [nBillingPeriods, billIndefinitely] = computeNBillingPeriods(\n startDate ?? this.input.contractStartDate,\n endDate,\n this.billingFrequency,\n );\n }\n\n this.form = this.formBuilder.group({\n startDate: [startDate],\n nBillingPeriods: [nBillingPeriods, Validators.required],\n billingTerm: [billIndefinitely],\n billable: [!this.input.nonBillable],\n });\n this.estimatedEndDate$ = this.initEstimatedEndDate(\n startDate ?? this.input.contractStartDate,\n nBillingPeriods,\n billIndefinitely,\n );\n this.state$ = this.estimatedEndDate$.pipe(\n map((estimatedEndDate) => {\n return { estimatedEndDate: estimatedEndDate };\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n if (this.billingFrequency === RevenuePeriod.ONETIME) {\n this.disableNBillingPeriods();\n this.disableBillIndefinitely();\n return;\n }\n if (billIndefinitely) {\n this.disableNBillingPeriods();\n }\n }\n\n save(addAnotherTerm = false): void {\n this.estimatedEndDate$.pipe(take(1)).subscribe((endDate) => {\n const output: BillingTermDialogOutput = {\n startDate: this.form.controls.startDate.value\n ? new Date(new Date(this.form.controls.startDate.value).setHours(7, 0, 0, 0))\n : null,\n endDate: endDate ? new Date(new Date(endDate).setHours(7, 0, 0, 0)) : null,\n billingFrequency: this.billingFrequency,\n addAnotherTerm: addAnotherTerm,\n nonBillable: !this.form.controls.billable.value,\n };\n\n if (endDate) {\n output.duration = {\n value: this.form.controls.nBillingPeriods.value,\n duration: this.billingFrequency === RevenuePeriod.YEARLY ? DurationPeriod.YEAR : DurationPeriod.MONTH,\n } as DurationInterface;\n }\n\n this.dialogRef.close(output);\n });\n }\n\n private initEstimatedEndDate(\n initStartDate: Date,\n initNBillingPeriods: number,\n initBillIndefinitely: boolean,\n ): Observable {\n const startDate$ = this.form.controls.startDate.valueChanges.pipe(startWith(initStartDate));\n const nBillingPeriods$ = this.form.controls.nBillingPeriods.valueChanges.pipe(startWith(initNBillingPeriods));\n const billIndefinitely$ = this.form.controls.billingTerm.valueChanges.pipe(startWith(initBillIndefinitely));\n return combineLatest([startDate$, nBillingPeriods$, billIndefinitely$]).pipe(\n map(([startDate, nBillingPeriods, billIndefinitely]) => {\n if (this.billingFrequency === RevenuePeriod.ONETIME || billIndefinitely) {\n return null;\n }\n if (this.billingFrequency === RevenuePeriod.YEARLY) {\n return dayjs(startDate).add(nBillingPeriods, 'year').toDate();\n }\n return dayjs(startDate).add(nBillingPeriods, 'month').toDate();\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n protected handleBillingTermChange(billIndefinitely: boolean): void {\n if (!billIndefinitely) {\n this.enableNBillingPeriods();\n } else {\n this.disableNBillingPeriods();\n }\n }\n\n private enableNBillingPeriods(): void {\n this.form.controls.nBillingPeriods.patchValue(1);\n this.form.controls.nBillingPeriods.enable();\n this.form.controls.nBillingPeriods.updateValueAndValidity();\n }\n\n private disableNBillingPeriods(): void {\n this.form.controls.nBillingPeriods.patchValue('');\n this.form.controls.nBillingPeriods.disable();\n this.form.controls.nBillingPeriods.updateValueAndValidity();\n }\n\n private disableBillIndefinitely(): void {\n this.form.controls.billingTerm.patchValue(false);\n this.form.controls.billingTerm.disable();\n this.form.controls.billingTerm.updateValueAndValidity();\n }\n}\n\nfunction computeNBillingPeriods(\n startDate: Date,\n endDate: Date | null,\n billingFrequency: RevenuePeriod,\n): [number, boolean] {\n if (!endDate) {\n return [1, true]; // Bill indefinitely\n }\n\n const parsedStartDate = dayjs(startDate);\n const parsedEndDate = dayjs(endDate);\n if (billingFrequency === RevenuePeriod.YEARLY) {\n return [parsedEndDate.diff(parsedStartDate, 'year'), false];\n }\n return [parsedEndDate.diff(parsedStartDate, 'month'), false];\n}\n","@if (state$ | async; as state) {\n

{{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.TITLE' | translate }}

\n \n
\n
\n
\n \n
\n \n
\n\n \n {{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_TERMS' | translate }}\n \n \n {{ option.label | translate }}\n \n \n \n\n @if (input.canScheduleActivations) {\n \n {{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.START_DATE' | translate }}\n \n \n \n \n }\n\n \n \n \n {{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.TERM_LENGTH' | translate }}\n \n \n \n @if (state.estimatedEndDate) {\n {{\n 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.ESTIMATED_END_DATE'\n | translate: { estimatedEndDate: state.estimatedEndDate | glxyDate }\n }}\n } @else {\n {{\n 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.ESTIMATED_END_DATE'\n | translate\n : { estimatedEndDate: 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.NOT_APPLICABLE' | translate }\n }}\n }\n \n \n \n @if (input.canEditInvoices) {\n \n
\n \n {{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.INCLUDE_IN_INVOICES' | translate }}\n \n {{\n 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.INCLUDE_IN_INVOICES_HINT' | translate\n }}\n
\n
\n }\n
\n
\n \n \n @if (input.canAddAnotherTerm) {\n \n \n \n \n \n \n \n \n } @else {\n \n }\n \n}\n","import { InventoryItemAddon, InventoryItemApp } from '../item-types';\n\n// Partial properties of a ResellerItem from @vendasta/store (circular dependency)\nexport class GenericResellerItem {\n appId?: string;\n addonId?: string;\n name?: string;\n icon?: string;\n usesEditions?: boolean;\n editionId?: string;\n\n constructor(resellerItem?: Partial) {\n Object.assign(this, resellerItem);\n }\n}\n\nexport function fromResellerItem(resellerItem: GenericResellerItem): InventoryItemApp | InventoryItemAddon {\n if (resellerItem.addonId) {\n return {\n itemId: resellerItem.addonId ?? '',\n type: 'addon',\n name: resellerItem.name ?? '',\n iconUrl: resellerItem.icon ?? '',\n parentItemId: resellerItem.appId ?? '',\n quantity: 1,\n };\n }\n\n let edition: InventoryItemApp['edition'] | undefined;\n if (resellerItem.usesEditions && resellerItem.editionId) {\n edition = {\n editionId: resellerItem.editionId,\n name: resellerItem.name ?? '',\n };\n }\n return {\n itemId: resellerItem.appId ?? '',\n type: 'app',\n name: resellerItem.name ?? '',\n iconUrl: resellerItem.icon ?? '',\n edition: edition,\n quantity: 1,\n };\n}\n","import { Addon as MarketplaceAddon } from '@galaxy/marketplace-apps/v1';\nimport { App as MarketplaceApp, AppType as MarketplaceAppType } from '@vendasta/marketplace-apps';\nimport { Package as MarketplacePackage } from '@vendasta/marketplace-packages';\nimport { InventoryItemAddon, InventoryItemApp, InventoryItemBase, InventoryItemPackage } from '../item-types';\n\nexport function fromMarketplaceApp(mp: MarketplaceApp): InventoryItemApp | InventoryItemAddon {\n const baseItem: InventoryItemBase = {\n itemId: mp.key.appId,\n name: mp.sharedMarketingInformation?.name,\n iconUrl: mp.sharedMarketingInformation?.iconUrl,\n type: 'app',\n quantity: 1,\n };\n\n if (mp.appType === MarketplaceAppType.APP_TYPE_ADDON) {\n return {\n ...baseItem,\n type: 'addon',\n parentItemId: mp.parentRequirements?.parentDetails?.key?.appId,\n };\n }\n\n let edition: InventoryItemApp['edition'];\n const usesEditions = mp.key?.editionId != null;\n if (usesEditions) {\n edition = {\n editionId: mp.key?.editionId ?? '',\n name: mp.sharedMarketingInformation?.editionName ?? '',\n };\n }\n\n return {\n ...baseItem,\n type: 'app',\n edition: edition,\n };\n}\n\nexport function fromMarketplaceAddon(addon: MarketplaceAddon): InventoryItemAddon {\n return {\n itemId: addon.addonId,\n type: 'addon',\n name: addon.productName,\n iconUrl: addon.icon,\n parentItemId: addon.appId,\n quantity: 1,\n };\n}\n\nexport function fromMarketplacePackage(marketplacePackage: MarketplacePackage): InventoryItemPackage {\n return {\n itemId: marketplacePackage.packageId,\n type: 'package',\n name: marketplacePackage.name,\n iconUrl: marketplacePackage.icon,\n quantity: 1,\n };\n}\n","import { Addon as MarketplaceAddon } from '@galaxy/marketplace-apps/v1';\nimport { App as MarketplaceApp } from '@vendasta/marketplace-apps';\nimport { Package as MarketplacePackage } from '@vendasta/marketplace-packages';\nimport { GenericResellerItem, fromResellerItem } from './store';\nimport { fromMarketplaceAddon, fromMarketplaceApp, fromMarketplacePackage } from './marketplace';\nimport { InventoryItem } from '../type';\n\nexport type InventoryItemAdapter = MarketplaceApp | MarketplaceAddon | MarketplacePackage | GenericResellerItem;\n\nexport function ToInventoryItem(item: T): InventoryItem {\n if (isMarketplaceApp(item)) {\n return fromMarketplaceApp(item);\n }\n\n if (isMarketplaceAddon(item)) {\n return fromMarketplaceAddon(item);\n }\n\n if (isMarketplacePackage(item)) {\n return fromMarketplacePackage(item);\n }\n\n if (isResellerItem(item)) {\n return fromResellerItem(item);\n }\n\n throw new Error('ToInventoryItem error - missing adapter for item:' + item);\n}\n\nexport function isMarketplaceApp(item: InventoryItemAdapter): item is MarketplaceApp {\n return item instanceof MarketplaceApp;\n}\n\nexport function isMarketplaceAddon(item: InventoryItemAdapter): item is MarketplaceAddon {\n return item instanceof MarketplaceAddon;\n}\n\nexport function isMarketplacePackage(item: InventoryItemAdapter): item is MarketplacePackage {\n return item instanceof MarketplacePackage;\n}\n\nexport function isResellerItem(item: InventoryItemAdapter): item is GenericResellerItem {\n return item instanceof GenericResellerItem;\n}\n","export { ToInventoryItem } from './adapter';\nexport { GenericResellerItem } from './store';\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgSW52ZW50b3J5SXRlbUFwcCB9IGZyb20gJy4vYXBwJztcbmV4cG9ydCB7IEludmVudG9yeUl0ZW1BZGRvbiB9IGZyb20gJy4vYWRkb24nO1xuZXhwb3J0IHsgSW52ZW50b3J5SXRlbVBhY2thZ2UgfSBmcm9tICcuL3BhY2thZ2UnO1xuZXhwb3J0IHsgSW52ZW50b3J5SXRlbUJhc2UgfSBmcm9tICcuL2Jhc2UnO1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsidHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaW5lSXRlbUludGVyZmFjZSB9IGZyb20gJ0B2ZW5kYXN0YS9zYWxlcy1vcmRlcnMnO1xuaW1wb3J0IHsgSW52ZW50b3J5SXRlbUFkZG9uLCBJbnZlbnRvcnlJdGVtQXBwLCBJbnZlbnRvcnlJdGVtUGFja2FnZSB9IGZyb20gJy4vaXRlbS10eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEludmVudG9yeUl0ZW0gPSBJbnZlbnRvcnlJdGVtQXBwIHwgSW52ZW50b3J5SXRlbUFkZG9uIHwgSW52ZW50b3J5SXRlbVBhY2thZ2U7XG5leHBvcnQgdHlwZSBJbnZlbnRvcnlJdGVtVHlwZSA9IEludmVudG9yeUl0ZW1bJ3R5cGUnXTtcblxuZXhwb3J0IHR5cGUgSW52ZW50b3J5SXRlbVdpdGhQcmljaW5nID0gSW52ZW50b3J5SXRlbSAmIHtcbiAgcHJpY2luZz86IExpbmVJdGVtSW50ZXJmYWNlO1xufTtcbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","export * from './adapters';\nexport * from './item-types';\nexport * from './type';\n","import { Frequency as GalaxyFrequency } from '@vendasta/galaxy/frequency';\nimport { InventoryItemWithPricing } from '../inventory-item';\nimport { ItemRetailPrice, ItemWholesalePrice } from '../item-price';\nimport { ItemPricingTableColumnID } from './column';\nimport { BillingTerm } from '../billing-terms/interface';\n\nexport type ItemRow = InventoryItemWithPricing & {\n wholesalePricing: ItemWholesalePrice;\n retailPricing: ItemRetailPrice;\n defaultRetailPricing: ItemRetailPrice;\n isDiscountedRetailPrice?: boolean;\n displayOriginalPrice?: boolean;\n fees: ItemFeeRow[];\n isMultiactivatable?: boolean;\n billingTerm?: BillingTerm;\n index?: number;\n};\n\ntype BillingTermsConfig = {\n enabled?: boolean;\n defaultStartDate?: Date; // defaults to current date\n};\n\nexport interface ItemPricingTableBaseConfig {\n partnerId: string;\n marketId: string;\n businessId?: string;\n selectionEditable?: boolean;\n quantityEditable?: boolean;\n hideColumns?: ItemPricingTableColumnID[];\n hidePriceSummary?: boolean;\n hideBorder?: boolean;\n hidePackageContents?: boolean;\n billingTermsConfig?: BillingTermsConfig;\n canEditInvoices?: boolean;\n unifiedOrdersEnabled?: boolean;\n canScheduleActivations?: boolean;\n}\n\nexport interface ItemFeeRow {\n type: 'setup' | 'management';\n label: string;\n amountType: 'fixed' | 'percentage';\n retailAmount?: number;\n wholesaleAmount: number;\n retailAmountTotal?: number;\n frequency: GalaxyFrequency;\n retailDefaultAmount?: number;\n}\n\nexport interface PriceSummary {\n oneTime: number;\n monthly: number;\n yearly: number;\n currency: string;\n}\n\nexport interface PriceTotal {\n wholesaleTotal: PriceSummary;\n retailTotal: PriceSummary;\n initialized: boolean; // controls the loading state of the summary component\n}\n\nexport interface ItemRowChangeEvent {\n item: ItemRow;\n action: ItemRowChangeEventAction;\n}\n\nexport type ItemRowChangeEventAction = 'add' | 'update' | 'delete' | 'add-billing-term' | 'edit-billing-term';\n\nexport const WHOLESALE_PRICING_CONTEXT = 'wholesale';\nexport const RETAIL_PRICING_CONTEXT = 'retail';\n","import { Frequency } from '@vendasta/galaxy/frequency';\nimport {\n BillingPeriod,\n Cost,\n LineItem,\n LineItemInterface,\n Revenue,\n RevenueComponent,\n RevenuePeriod,\n} from '@vendasta/sales-orders';\nimport { InventoryItem } from '../inventory-item';\nimport { ItemRow } from './interface';\n\nexport function CreateLineItemFromItemRow(item: ItemRow, currencyOverride?: string): LineItemInterface {\n if (currencyOverride && item?.retailPricing) {\n item.retailPricing.currency = currencyOverride;\n }\n return UpdateLineItemFromItemRow(new LineItem(item.pricing), item);\n}\n\nexport function UpdateLineItemFromItemRow(lineItem: LineItemInterface, item: ItemRow): LineItemInterface {\n if (item?.wholesalePricing?.usesVariablePricing) {\n lineItem.cost = new Cost({\n customPrice: item.wholesalePricing.frequencyPrices[0]?.price || undefined,\n });\n }\n\n const originalRevenueComponents = lineItem.currentRevenue?.revenueComponents || [];\n const revenueComponents: RevenueComponent[] = [];\n if (item?.retailPricing) {\n revenueComponents.push(\n new RevenueComponent({\n value: item.retailPricing.price || undefined,\n period: convertFrequencyToRevenuePeriod(item.retailPricing.frequency) || undefined,\n isStartingRevenue: originalRevenueComponents?.[0]?.isStartingRevenue || undefined,\n }),\n );\n lineItem.currencyCode = item.retailPricing.currency ?? 'USD';\n }\n if (item?.fees?.length) {\n item.fees\n .filter((fee) => Boolean(fee.retailAmount))\n .forEach((fee) => {\n revenueComponents.push(\n new RevenueComponent({ value: fee.retailAmount || undefined, period: RevenuePeriod.ONETIME || undefined }),\n );\n });\n }\n lineItem.currentRevenue = new Revenue({\n revenueComponents: revenueComponents,\n });\n\n lineItem.quantity = item?.quantity;\n if (item?.billingTerm) {\n lineItem.billingPeriod = new BillingPeriod({\n startDate: item.billingTerm?.startDate,\n endDate: item.billingTerm?.endDate,\n });\n } else {\n lineItem.billingPeriod = undefined;\n }\n return lineItem;\n}\n\nexport function LineItemMatchesInventoryItem(lineItem: LineItem, item: InventoryItem): boolean {\n const itemId = item?.itemId;\n if (!itemId) return false;\n\n if (item.type === 'package') {\n return lineItem?.packageId === itemId;\n }\n\n const lineItemAppId = lineItem?.appKey?.appId;\n if (item.type === 'addon') {\n return lineItemAppId === itemId;\n }\n\n const lineItemEdition = lineItem?.appKey?.editionId ?? '';\n const itemEdition = item?.edition?.editionId ?? '';\n return lineItemAppId === itemId && lineItemEdition === itemEdition;\n}\n\nexport function LineItemPricingEqual(li1: LineItemInterface | undefined, li2: LineItemInterface | undefined): boolean {\n if (li1?.currentRevenue?.revenueComponents?.length !== li2?.currentRevenue?.revenueComponents?.length) {\n return false;\n }\n const length = li1?.currentRevenue?.revenueComponents?.length;\n if (length) {\n for (let i = 0; i < length; i++) {\n if (\n li1?.currentRevenue?.revenueComponents?.[i].value !== li2?.currentRevenue?.revenueComponents?.[i].value ||\n li1?.currentRevenue?.revenueComponents?.[i].period !== li2?.currentRevenue?.revenueComponents?.[i].period ||\n li1?.currentRevenue?.revenueComponents?.[i].isStartingRevenue !==\n li2?.currentRevenue?.revenueComponents?.[i].isStartingRevenue\n ) {\n return false;\n }\n }\n }\n\n return (\n li1?.currencyCode === li2?.currencyCode &&\n li1?.quantity === li2?.quantity &&\n li1?.cost?.customPrice === li2?.cost?.customPrice &&\n li1?.billingPeriod?.startDate === li2?.billingPeriod?.startDate &&\n li1?.billingPeriod?.endDate === li2?.billingPeriod?.endDate\n );\n}\n\nfunction convertFrequencyToRevenuePeriod(frequency: Frequency): RevenuePeriod {\n switch (frequency) {\n case Frequency.DAILY:\n return RevenuePeriod.DAILY;\n case Frequency.WEEKLY:\n return RevenuePeriod.WEEKLY;\n case Frequency.BI_WEEKLY:\n return RevenuePeriod.BIWEEKLY;\n case Frequency.ONE_TIME:\n return RevenuePeriod.ONETIME;\n case Frequency.MONTHLY:\n return RevenuePeriod.MONTHLY;\n case Frequency.YEARLY:\n return RevenuePeriod.YEARLY;\n default:\n return RevenuePeriod.ONETIME;\n }\n}\n","import { ItemType } from '@vendasta/marketplace-apps';\nimport { InventoryItem } from '../../common/inventory-item';\nimport { ItemSelectorRowItem, SelectedItem } from '../interface';\n\nexport function findItem(items: SelectedItem[], itemId: string): [SelectedItem | null, number] {\n const index = items?.findIndex((selectedItem) => {\n return selectedItem.itemId === itemId;\n });\n if (index >= 0) {\n return [items[index], index];\n }\n return [null, -1];\n}\n\nexport function convertInventoryItemToSelectedItem(inventoryItem: InventoryItem, immutable = false): SelectedItem {\n return {\n ...inventoryItem,\n immutable: immutable,\n };\n}\n\nexport function convertRowItemToSelectedItem(rowItem: ItemSelectorRowItem): SelectedItem {\n const name = rowItem.sellerWhitelabelName || rowItem.defaultName;\n const iconUrl = rowItem.sellerWhitelabelIconUrl || rowItem.iconUrl;\n const base: Omit = {\n itemId: rowItem.itemId,\n name: name ?? '',\n iconUrl: iconUrl ?? '',\n quantity: rowItem.quantity ?? 1,\n immutable: rowItem.immutable,\n };\n\n if (rowItem.itemType === ItemType.ITEM_TYPE_PACKAGE) {\n return {\n ...base,\n type: 'package',\n };\n }\n\n if (rowItem.itemType === ItemType.ITEM_TYPE_ADDON) {\n return {\n ...base,\n type: 'addon',\n parentItemId: rowItem?.requiredItems?.[0].itemId ?? '',\n };\n }\n\n const rowEdition = rowItem?.editions?.find((edition) => edition.editionId === rowItem.editionId);\n return {\n ...base,\n type: 'app',\n edition: {\n editionId: rowEdition?.editionId ?? '',\n name: rowEdition?.name ?? '',\n },\n };\n}\n\nexport function mapify(array: I[], keyFn: (item: I) => string, valueFn: (item: I) => V): Map {\n return array.reduce((map, item) => {\n map.set(keyFn(item), valueFn ? valueFn(item) : item);\n return map;\n }, new Map());\n}\n","import { Edition as MarketplaceEdition } from '@vendasta/marketplace-apps/v1';\nimport { Edition, ItemSelectorRowItem, SelectedItem } from '../interface';\nimport { findItem } from './item';\n\nexport function convertToItemSelectorEdition(marketplaceEdition: MarketplaceEdition): Edition {\n const editionId = marketplaceEdition?.editionId ? marketplaceEdition?.editionId : '';\n return {\n appId: marketplaceEdition?.appId,\n name: marketplaceEdition?.name,\n editionId: editionId,\n };\n}\n\nexport function areEditionIdsEqual(input1: string | null | undefined, input2: string | null | undefined): boolean {\n // Pro editions of O&O products are represented by an empty edition ID\n const editionId1 = input1 ?? '';\n const editionId2 = input2 ?? '';\n return editionId1 === editionId2;\n}\n\nexport function findItemEdition(item: SelectedItem | null, editions: Edition[]): Edition | null {\n if (!editions?.length) return null;\n\n if (item?.type !== 'app' || !item?.edition) {\n return editions[0];\n }\n\n return (\n editions.find((edition) => {\n const nullishMatch = !edition?.editionId && !item.edition?.editionId;\n const stringMatch = edition?.editionId === item.edition?.editionId;\n return nullishMatch || stringMatch;\n }) ?? null\n );\n}\n\nexport function markActiveEdition(\n selectedItems: SelectedItem[],\n immutableSelectedItems: SelectedItem[],\n activatableItem: ItemSelectorRowItem,\n): ItemSelectorRowItem {\n const [selected] = findItem(selectedItems, activatableItem.itemId);\n const [immutableItem] = findItem(immutableSelectedItems, activatableItem.itemId);\n\n const activeEdition = immutableItem ? findItemEdition(immutableItem, activatableItem.editions ?? []) : null;\n const selectedEdition = selected ? findItemEdition(selected, activatableItem.editions ?? []) : null;\n\n // selectedEdition takes precedence over the activeEdition when setting editionId for an item\n if (activeEdition && !selectedEdition) {\n activeEdition.isActive = true;\n activatableItem.editionId = activeEdition.editionId;\n }\n if (selectedEdition) {\n activatableItem.editionId = selectedEdition.editionId;\n }\n\n return activatableItem;\n}\n","export * from './edition';\nexport * from './item';\n","import { Injectable } from '@angular/core';\nimport { App, AppKey, GetMultiAppRequest, PartnerApiService } from '@vendasta/marketplace-apps';\nimport { MarketplacePackagesApiService, Package } from '@vendasta/marketplace-packages';\nimport { Observable, of } from 'rxjs';\nimport { map, shareReplay, switchMap, withLatestFrom } from 'rxjs/operators';\nimport { InventoryItem, ToInventoryItem } from '../common/inventory-item';\nimport { areEditionIdsEqual, mapify } from '../item-selector/util';\n\n@Injectable()\nexport class PackageContentsService {\n constructor(\n private readonly marketplacePackagesApiService: MarketplacePackagesApiService,\n private readonly partnerApiService: PartnerApiService,\n ) {}\n\n fetchPackageItems(packageId: string, partnerId: string, marketId: string): Observable {\n return this.fetchMultiPackageItems([packageId], partnerId, marketId).pipe(\n map((packageItemsMap) => packageItemsMap.get(packageId) ?? []),\n );\n }\n\n fetchMultiPackageItems(\n packageIds: string[],\n partnerId: string,\n marketId: string,\n ): Observable> {\n if (!packageIds.length) {\n return of(new Map());\n }\n\n const packages$ = this.getPackages(packageIds);\n const lineItems$ = packages$.pipe(switchMap((packages) => this.getLineItems(packages, partnerId, marketId)));\n return lineItems$.pipe(\n withLatestFrom(packages$),\n map(([lineItems, packages]) => {\n const packageItemsMap = mapify(\n packages,\n (p) => p.packageId,\n (p) => this.transformPackageLineItems(p, lineItems),\n );\n return packageItemsMap;\n }),\n );\n }\n\n private getPackages(packageIds: string[]): Observable {\n return this.marketplacePackagesApiService.getMultiPackages({ packageIds: packageIds }).pipe(\n map((resp) => resp.packageContainers.map((p) => p.package)),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n private getLineItems(packages: Package[], partnerId: string, marketId: string): Observable {\n const getMultiAppRequest = new GetMultiAppRequest({\n projectionFilter: {\n paths: ['editionInformation', 'sharedMarketingInformation'],\n },\n appKeys: packages\n .map((p) => p.lineItems.lineItems)\n .flat()\n .map((lineItem) => {\n return new AppKey({\n appId: lineItem.id,\n editionId: lineItem.editionId || '',\n });\n }),\n partnerId: partnerId,\n marketId: marketId,\n });\n return this.partnerApiService.getMultiApp(getMultiAppRequest).pipe(\n map((resp) => resp?.apps ?? []),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n private transformPackageLineItems(packageItem: Package, lineItems: App[]): InventoryItem[] {\n const packageLineItems = packageItem.lineItems.lineItems;\n const transformedLineItems = packageLineItems.map((pli) => {\n const lineItem = lineItems.find(\n (li) => li.key.appId === pli.id && areEditionIdsEqual(li.key.editionId, pli.editionId),\n )!;\n return { ...ToInventoryItem(lineItem), quantity: pli?.quantity ?? 1 };\n });\n return transformedLineItems;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\nimport { SelectedItem } from '../../item-selector/interface';\nimport { PackageContentsService } from '../../services/package-contents.service';\n\n@Component({\n selector: 'inventory-ui-package-contents-popover',\n templateUrl: './package-contents-popover.component.html',\n styleUrls: ['./package-contents-popover.component.scss'],\n standalone: false,\n})\nexport class PackageContentsPopoverComponent {\n protected readonly PopoverPositions = PopoverPositions;\n\n @Input() packageId = '';\n @Input() partnerId = '';\n @Input() marketId = '';\n\n packageItems$!: Observable;\n isOpen = false;\n\n constructor(private readonly packageContentsService: PackageContentsService) {}\n\n togglePopover(): void {\n if (!this.isOpen && !this.packageItems$) {\n this.packageItems$ = this.packageContentsService.fetchPackageItems(this.packageId, this.partnerId, this.marketId);\n }\n this.isOpen = !this.isOpen;\n }\n}\n","\n Package (view contents)\n\n\n\n
\n \n \n \n
\n\n\n\n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { PackageContentsPopoverComponent } from './package-contents-popover.component';\nimport { PackageContentsService } from '../../services/package-contents.service';\nimport { ItemCommonModule } from '../item-common.module';\n\n@NgModule({\n imports: [CommonModule, GalaxyPopoverModule, GalaxyLoadingSpinnerModule, ItemCommonModule],\n exports: [PackageContentsPopoverComponent],\n declarations: [PackageContentsPopoverComponent],\n providers: [PackageContentsService],\n})\nexport class PackageContentsPopoverModule {}\n","import { GalaxyColumnDef } from '@vendasta/galaxy/table';\n\nexport type ItemPricingTableColumnID =\n | 'name'\n | 'quantity'\n | 'wholesale_price'\n | 'retail_price'\n | 'retail_price_total'\n | 'menu';\n\nexport const ITEM_PRICING_TABLE_COLUMNS: GalaxyColumnDef[] = [\n {\n id: 'name',\n title: 'Name',\n },\n {\n id: 'quantity',\n title: 'Quantity',\n },\n {\n id: 'wholesale_price',\n title: 'Wholesale',\n },\n {\n id: 'retail_price',\n title: 'Retail',\n },\n {\n id: 'retail_price_total',\n title: 'Retail Total',\n },\n {\n id: 'menu',\n title: 'Menu',\n },\n];\n","import { AppPrices, FrequencyPrice, PriceDisplayOverride, UnitBillingFrequency } from '@vendasta/marketplace-apps';\nimport { ItemBasePrice } from './base';\nimport { ItemFrequencyPrice, calculateUnitPriceFromInstancePrice, getFrequencyPrices } from './frequency';\nimport { getPartnerCurrency, toGalaxyFrequency } from '@vendasta/billing-ui';\nimport { InventoryItemWithPricing } from '../inventory-item';\nimport { revenuePeriodToGalaxyFrequency } from '../../billing-term-dialog/sales-to-galaxy-frequency.pipe';\nimport { RevenuePeriod } from '@vendasta/sales-orders';\n\nexport type ItemRetailPrice = ItemBasePrice & ItemFrequencyPrice;\n\nexport type ParseRetailPriceConfig = {\n appPrices: AppPrices;\n item: InventoryItemWithPricing;\n marketCurrency: string;\n useDefault?: boolean;\n};\n\nexport function parseRetailItemPrice({\n appPrices,\n item,\n marketCurrency,\n useDefault,\n}: ParseRetailPriceConfig): ItemRetailPrice {\n const editionId = item.type === 'app' ? item.edition?.editionId : undefined;\n const appPrice = appPrices?.pricesForContexts?.['retail'];\n const unitPrice = appPrice?.pricesForEditions?.[editionId ?? ''];\n let currency = getPartnerCurrency(appPrice);\n\n let frequencyPrices = getFrequencyPrices(appPrices, editionId, 'retail');\n if (!frequencyPrices?.length) {\n if (useDefault) {\n return {} as ItemRetailPrice;\n }\n // fallback to wholesale pricing if retail is unavailable,\n frequencyPrices = getFrequencyPrices(appPrices, editionId, 'wholesale');\n currency = marketCurrency;\n }\n\n // retail price is limited to one frequency\n const retailPrice = parseRetailFrequencyPrice({\n mpFrequencyPrice: frequencyPrices[0],\n item,\n useDefault,\n });\n\n return {\n ...retailPrice,\n currency: currency,\n contactSales: appPrice?.displayOverride === PriceDisplayOverride.PRICE_DISPLAY_OVERRIDE_CONTACT_SALES,\n discounts: unitPrice?.discount ?? [],\n };\n}\n\ntype parseRetailFrequencyPriceConfig = {\n mpFrequencyPrice: FrequencyPrice;\n item: InventoryItemWithPricing;\n useDefault?: boolean;\n};\n\nfunction parseRetailFrequencyPrice({\n mpFrequencyPrice,\n item: item,\n useDefault: useDefault,\n}: parseRetailFrequencyPriceConfig): ItemFrequencyPrice {\n const minimumPrice = mpFrequencyPrice?.pricingRules?.[0].price || 0;\n let price = minimumPrice;\n let frequency: ItemFrequencyPrice['frequency'] = toGalaxyFrequency(\n mpFrequencyPrice?.frequency ?? UnitBillingFrequency.UNIT_BILLING_FREQUENCY_ONETIME,\n );\n\n const hasInstancePrice = Boolean(mpFrequencyPrice?.instancePrice);\n if (hasInstancePrice) {\n price = calculateUnitPriceFromInstancePrice(\n mpFrequencyPrice.instancePrice,\n mpFrequencyPrice.setupFee,\n item.quantity,\n );\n }\n\n const revenueComponent = item?.pricing?.currentRevenue?.revenueComponents?.[0];\n if (revenueComponent && !useDefault) {\n frequency = revenuePeriodToGalaxyFrequency(revenueComponent.period ?? RevenuePeriod.ONETIME);\n price = revenueComponent.value ?? 0;\n }\n\n return {\n price: price,\n total: price * item.quantity,\n frequency: frequency,\n minimumPrice: minimumPrice,\n };\n}\n","import { getPartnerCurrency, toGalaxyFrequency } from '@vendasta/billing-ui';\nimport { AppPrices, FrequencyPrice, PriceDisplayOverride, UnitBillingFrequency } from '@vendasta/marketplace-apps';\nimport { ItemBasePrice } from './base';\nimport { ItemFrequencyPrice, calculateUnitPriceFromInstancePrice, getFrequencyPrices } from './frequency';\nimport { InventoryItemWithPricing } from '../inventory-item';\n\nexport type ItemWholesalePrice = ItemBasePrice & {\n frequencyPrices: ItemFrequencyPrice[];\n usesVariablePricing?: boolean;\n contactSales?: boolean;\n};\n\nexport type ParseWholesalePriceConfig = {\n appPrices: AppPrices;\n item: InventoryItemWithPricing;\n};\n\nexport function parseWholesaleItemPrice({ appPrices, item }: ParseWholesalePriceConfig): ItemWholesalePrice {\n const editionId = item.type === 'app' ? item.edition?.editionId : undefined;\n const appPrice = appPrices?.pricesForContexts?.['wholesale'];\n const unitPrice = appPrice?.pricesForEditions?.[editionId ?? ''];\n const marketplaceFrequencyPrices = getFrequencyPrices(appPrices, editionId, 'wholesale');\n\n const usesVariablePricing = appPrice?.billingConfiguration?.usesVariablePricing;\n\n return {\n frequencyPrices: parseWholesaleFrequencyPrices({\n marketplaceFrequencyPrices: marketplaceFrequencyPrices,\n item: item,\n usesVariablePricing,\n }),\n currency: getPartnerCurrency(appPrice),\n usesVariablePricing: appPrice?.billingConfiguration?.usesVariablePricing,\n contactSales: appPrice?.displayOverride === PriceDisplayOverride.PRICE_DISPLAY_OVERRIDE_CONTACT_SALES,\n discounts: unitPrice?.discount ?? [],\n };\n}\n\ntype parseWholesaleFrequencyPrices = {\n marketplaceFrequencyPrices: FrequencyPrice[];\n item: InventoryItemWithPricing;\n usesVariablePricing: boolean;\n};\n\nfunction parseWholesaleFrequencyPrices({\n marketplaceFrequencyPrices,\n item: item,\n usesVariablePricing,\n}: parseWholesaleFrequencyPrices): ItemFrequencyPrice[] {\n return marketplaceFrequencyPrices.map((fp) => {\n const minimumPrice = fp?.pricingRules?.[0].price || 0;\n let price = minimumPrice;\n\n if (usesVariablePricing && item.pricing?.cost?.customPrice) {\n price = item.pricing.cost.customPrice;\n }\n\n const hasInstancePrice = Boolean(fp?.instancePrice);\n if (hasInstancePrice && !usesVariablePricing) {\n price = calculateUnitPriceFromInstancePrice(fp.instancePrice, fp.setupFee, item.quantity);\n }\n\n return {\n price: price,\n total: price * item.quantity,\n frequency: toGalaxyFrequency(fp?.frequency ?? UnitBillingFrequency.UNIT_BILLING_FREQUENCY_ONETIME),\n minimumPrice: minimumPrice,\n };\n });\n}\n","import { MerchantService } from '@galaxy/billing';\nimport { PagedListRequestInterface, PagedResponseInterface, PaginatedAPIInterface } from '@vendasta/galaxy/table';\nimport {\n App,\n AppKey,\n AppPrices,\n AppPricingApiService,\n FieldMask,\n GetMultiAppRequest,\n GetMultiPricingRequest,\n PartnerApiService,\n RequestedApp,\n} from '@vendasta/marketplace-apps';\nimport { MarketplacePackagesApiService, Package } from '@vendasta/marketplace-packages';\nimport { uniq } from 'lodash';\nimport {\n BehaviorSubject,\n combineLatest,\n forkJoin,\n map,\n Observable,\n of,\n skipWhile,\n startWith,\n switchMap,\n take,\n withLatestFrom,\n} from 'rxjs';\nimport { InventoryItemWithPricing } from '../inventory-item';\nimport { parseRetailItemPrice } from '../item-price/retail';\nimport { parseWholesaleItemPrice } from '../item-price/wholesale';\nimport { ItemRow, RETAIL_PRICING_CONTEXT, WHOLESALE_PRICING_CONTEXT } from './interface';\nimport { parseItemFees } from './utils';\n\nexport class ItemPricingTableDataSource implements PaginatedAPIInterface {\n private refreshTrigger$$: BehaviorSubject = new BehaviorSubject(undefined);\n\n private appCache: Map = new Map();\n private packageCache: Map = new Map();\n private appPricesCache: Map = new Map();\n\n constructor(\n private readonly items$: Observable,\n private readonly partnerId: string,\n private readonly marketId: string,\n private readonly businessId: string,\n private readonly excludeWholesale: boolean,\n private readonly appPricingApiService: AppPricingApiService,\n private readonly partnerApiService: PartnerApiService,\n private readonly merchantService: MerchantService,\n private readonly marketplacePackagesApiService: MarketplacePackagesApiService,\n ) {}\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n get(req: PagedListRequestInterface): Observable> {\n const rows$ = this.items$.pipe(\n skipWhile((items) => !items?.length),\n map((items) => {\n const pricesToFetch = uniq(items.filter((item) => !this.appPricesCache.has(item.itemId)));\n const appsToFetch = uniq(\n items.filter((item) => item.type !== 'package' && !this.appCache.has(InventoryItemToCacheKey(item))),\n );\n const packagesToFetch = uniq(\n items.filter((item) => item.type === 'package' && !this.packageCache.has(item.itemId)),\n );\n return [items, pricesToFetch, appsToFetch, packagesToFetch];\n }),\n switchMap(([items, pricesToFetch, appsToFetch, packagesToFetch]) => {\n const appPrices$ = this.fetchAppPrices(pricesToFetch);\n const apps$ = this.fetchApps(appsToFetch);\n const packages$ = this.fetchPackages(packagesToFetch);\n return forkJoin([of(items), appPrices$, apps$, packages$]);\n }),\n map(([items, prices, apps, packages]) => {\n this.appPricesCache = new Map([...this.appPricesCache, ...prices]);\n this.appCache = new Map([...this.appCache, ...apps]);\n this.packageCache = new Map([...this.packageCache, ...packages]);\n return { items, prices: this.appPricesCache, apps: this.appCache, packages: this.packageCache };\n }),\n withLatestFrom(this.getMarketCurrency$()),\n map(([{ items, prices, apps, packages }, marketCurrency]) => {\n const rows = this.buildRows(items, prices, apps, packages, marketCurrency);\n return {\n data: rows,\n pagingMetadata: {\n nextCursor: '',\n hasMore: false,\n },\n } as PagedResponseInterface;\n }),\n );\n\n return combineLatest([rows$, this.refreshTrigger$$]).pipe(\n map(([rows]) => {\n rows.data = rows.data.filter((row) => row.quantity > 0);\n return rows;\n }),\n startWith({ data: [], pagingMetadata: { nextCursor: '', hasMore: false } }),\n );\n }\n\n private buildRows(\n items: InventoryItemWithPricing[],\n itemPrices: Map,\n apps: Map,\n packages: Map,\n marketCurrency: string,\n ) {\n return items.map((item, index) => {\n const itemPrice = itemPrices.get(item.itemId) as AppPrices;\n const app = apps.get(InventoryItemToCacheKey(item)) as App;\n const pkg = packages.get(item.itemId) as Package;\n return this.buildItemRow(item, itemPrice, app, pkg, marketCurrency, index);\n });\n }\n\n private fetchAppPrices(items: InventoryItemWithPricing[]): Observable> {\n if (!items.length) return of(new Map());\n const getMultiPricingRequest = new GetMultiPricingRequest({\n appIds: items.map((item) => item.itemId),\n pricingContexts: {\n paths: this.getPricingContexts(),\n },\n partnerId: this.partnerId,\n marketId: this.marketId,\n businessId: this.businessId,\n });\n if (!this.excludeWholesale) {\n getMultiPricingRequest.filterOptions = new FieldMask({ paths: ['instance_price'] });\n getMultiPricingRequest.requestedItems = items.map((item) => {\n return new RequestedApp({\n appId: item.itemId,\n quantity: item.quantity,\n });\n });\n }\n return this.appPricingApiService\n .getMultiPricing(getMultiPricingRequest)\n .pipe(map((response) => this.mapify(response.appPrices, (ap: AppPrices) => ap.appId)));\n }\n\n private getPricingContexts(): string[] {\n const pricingContexts: string[] = [];\n if (!this.excludeWholesale) pricingContexts.push(WHOLESALE_PRICING_CONTEXT);\n pricingContexts.push(RETAIL_PRICING_CONTEXT);\n return pricingContexts;\n }\n\n private fetchApps(items: InventoryItemWithPricing[]): Observable> {\n const appItems = items.filter((item) => item.type !== 'package');\n if (!appItems.length) return of(new Map());\n\n const getMultiAppRequest = new GetMultiAppRequest({\n projectionFilter: {\n paths: ['sharedMarketingInformation'],\n },\n appKeys: appItems.map((item) => {\n return new AppKey({\n appId: item.itemId,\n editionId: item.type === 'app' ? item.edition?.editionId : undefined,\n });\n }),\n partnerId: this.partnerId,\n marketId: this.marketId,\n includeNotEnabled: true,\n });\n\n return this.partnerApiService\n .getMultiApp(getMultiAppRequest)\n .pipe(map((response) => this.mapify(response.apps, (a: App) => AppToCacheKey(a))));\n }\n\n private fetchPackages(items: InventoryItemWithPricing[]): Observable> {\n const packageIds = items.filter((item) => item.type === 'package').map((item) => item.itemId);\n if (!packageIds.length) return of(new Map());\n return this.marketplacePackagesApiService.getMultiPackages({ packageIds: packageIds }).pipe(\n map((resp) => {\n const packages = resp.packageContainers.map((container) => container.package);\n return this.mapify(packages, (p: Package) => p.packageId);\n }),\n );\n }\n\n private getMarketCurrency$() {\n return this.merchantService.getMultiRetailConfigurations(this.partnerId, [this.marketId]).pipe(\n take(1),\n map((resp) => {\n let currencyCode = '';\n resp.forEach((retailConfig) => {\n if (retailConfig?.currencyCode) {\n currencyCode = retailConfig.currencyCode;\n }\n });\n return currencyCode;\n }),\n );\n }\n\n private buildItemRow(\n item: InventoryItemWithPricing,\n appPrices: AppPrices,\n app: App,\n marketplacePackage: Package,\n marketCurrency: string,\n index: number,\n ): ItemRow {\n if (item?.pricing?.quantity) {\n item.quantity = item.pricing.quantity;\n }\n const itemRow = {\n ...item,\n name: item.type !== 'package' ? app?.sharedMarketingInformation?.name : marketplacePackage?.name,\n iconUrl: item.type !== 'package' ? app?.sharedMarketingInformation?.iconUrl : marketplacePackage?.icon,\n wholesalePricing: parseWholesaleItemPrice({\n appPrices,\n item,\n }),\n retailPricing: parseRetailItemPrice({\n appPrices,\n item,\n marketCurrency,\n }),\n defaultRetailPricing: parseRetailItemPrice({\n appPrices,\n item,\n marketCurrency,\n useDefault: true,\n }),\n fees: parseItemFees(appPrices, item),\n isMultiactivatable: app?.activationInformation?.multipleActivationsEnabled || false,\n index: index,\n } as ItemRow;\n if (itemRow.type === 'app' && itemRow.edition) {\n itemRow.edition.name = app?.sharedMarketingInformation?.editionName;\n }\n if (item.pricing?.billingPeriod) {\n itemRow.billingTerm = {\n startDate: item.pricing.billingPeriod.startDate,\n endDate: item.pricing.billingPeriod.endDate,\n duration: item.pricing.billingPeriod.duration,\n };\n }\n\n if (\n itemRow.retailPricing.price < itemRow.defaultRetailPricing.price &&\n itemRow.retailPricing.frequency === itemRow.defaultRetailPricing.frequency &&\n itemRow.retailPricing.currency === itemRow.defaultRetailPricing.currency &&\n !itemRow.wholesalePricing.usesVariablePricing\n ) {\n itemRow.isDiscountedRetailPrice = true;\n }\n\n if (\n itemRow.retailPricing.price !== itemRow.defaultRetailPricing.price ||\n itemRow.retailPricing.frequency !== itemRow.defaultRetailPricing.frequency ||\n itemRow.retailPricing.currency !== itemRow.defaultRetailPricing.currency\n ) {\n itemRow.displayOriginalPrice = true;\n }\n return itemRow;\n }\n\n refreshItemRows(): void {\n this.refreshTrigger$$.next();\n }\n\n private mapify(array: any[], keyFn: (item: any) => string): Map {\n return array.reduce((map, item) => {\n map.set(keyFn(item), item);\n return map;\n }, new Map());\n }\n}\n\nfunction AppToCacheKey(app: App): string {\n return createCacheKey(app.key.appId, app.key.editionId);\n}\n\nfunction InventoryItemToCacheKey(item: InventoryItemWithPricing): string {\n return createCacheKey(item.itemId, item.type === 'app' ? item.edition?.editionId : undefined);\n}\n\nfunction createCacheKey(itemId: string, editionId?: string): string {\n if (editionId) {\n return `${itemId}:${editionId}`;\n }\n return itemId;\n}\n","import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n MAT_DIALOG_DATA,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport { ItemCommonModule } from '../common/item-common.module';\nimport { Frequency as GalaxyFrequency, Frequency } from '@vendasta/galaxy/frequency';\nimport { PackageContentsPopoverModule } from '../common/package-contents-popover/package-contents-popover.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { RevenuePeriod } from '@vendasta/sales-orders';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { RevenuePeriodToGalaxyFrequency } from '../billing-term-dialog/sales-to-galaxy-frequency.pipe';\nimport { MatOption } from '@angular/material/autocomplete';\nimport { MatSelect } from '@angular/material/select';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyButtonGroupModule } from '@vendasta/galaxy/button-group';\n\nexport interface DialogData {\n itemId: string;\n name: string;\n editionName: string | undefined;\n iconUrl: string;\n revenueComponent: { revenue: number; period: RevenuePeriod };\n frequency: GalaxyFrequency;\n viewOnly: boolean;\n}\n\nexport interface BillingFrequencyDialogOutput {\n frequency: GalaxyFrequency;\n}\n\n@Component({\n selector: 'inventory-ui-billing-frequency-dialog',\n templateUrl: './billing-frequency-dialog.component.html',\n styleUrls: ['./billing-frequency-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ItemCommonModule,\n PackageContentsPopoverModule,\n TranslateModule,\n CommonModule,\n LexiconModule,\n MatButtonModule,\n MatDialogContent,\n BillingUiModule,\n RevenuePeriodToGalaxyFrequency,\n MatOption,\n MatSelect,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n GalaxyButtonGroupModule,\n MatDialogActions,\n MatDialogClose,\n MatDialogModule,\n ],\n})\nexport class BillingFrequencyDialogComponent {\n protected form!: FormGroup;\n loading$$: Subject = new Subject();\n protected billingFrequency!: RevenuePeriod;\n\n frequencyOptions = [\n { label: 'INVENTORY_UI.BILLING_FREQUENCY.ONE_TIME', value: GalaxyFrequency.ONE_TIME },\n { label: 'INVENTORY_UI.BILLING_FREQUENCY.MONTHLY', value: GalaxyFrequency.MONTHLY },\n { label: 'INVENTORY_UI.BILLING_FREQUENCY.YEARLY', value: GalaxyFrequency.YEARLY },\n ];\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: DialogData,\n private formBuilder: FormBuilder,\n ) {\n this.billingFrequency = this.data.revenueComponent.period;\n\n this.form = this.formBuilder.group({\n frequency: [data.frequency, Validators.required],\n });\n }\n\n public save(): void {\n const output: BillingFrequencyDialogOutput = {\n frequency: this.form.controls.frequency.value,\n };\n this.dialogRef.close(output);\n }\n\n protected readonly Frequency = Frequency;\n}\n","

{{ 'INVENTORY_UI.EDIT_RETAIL_BILLING_FREQUENCY_DIALOG.TITLE' | translate }}

\n\n
\n
\n
\n \n
\n \n
\n \n {{\n 'INVENTORY_UI.EDIT_RETAIL_BILLING_FREQUENCY_DIALOG.RETAIL_BILLING_FREQUENCY' | translate\n }}\n \n \n {{ frequency.label | translate }}\n \n \n \n
\n
\n\n \n \n\n","import { Component, DestroyRef, EventEmitter, inject, Injector, Input, OnInit, Output, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MerchantService } from '@galaxy/billing';\nimport { Frequency } from '@vendasta/galaxy/frequency';\nimport { GalaxyDataSource } from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport { AppPricingApiService, PartnerApiService } from '@vendasta/marketplace-apps';\nimport { MarketplacePackagesApiService } from '@vendasta/marketplace-packages';\nimport { BehaviorSubject, combineLatest, filter, Observable, startWith, take } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { InventoryItemWithPricing } from '../inventory-item';\nimport { ITEM_PRICING_TABLE_COLUMNS } from './column';\nimport {\n ItemFeeRow,\n ItemPricingTableBaseConfig,\n ItemRow,\n ItemRowChangeEvent,\n ItemRowChangeEventAction,\n PriceSummary,\n PriceTotal,\n} from './interface';\nimport { ItemPricingTableDataSource } from './item-pricing-table.data-source';\nimport {\n calculateTotalRetailPrice,\n calculateTotalWholesalePrice,\n convertHTMLControlValueToNumber,\n resetItemFees,\n resetItemVariablePrice,\n updatePercentageManagementFee,\n} from './utils';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport {\n BillingFrequencyDialogComponent,\n DialogData,\n BillingFrequencyDialogOutput,\n} from '../../billing-frequency-dialog/billing-frequency-dialog.component';\nimport { galaxyFrequencyToRevenuePeriod } from '../../billing-term-dialog/sales-to-galaxy-frequency.pipe';\n\n@Component({\n selector: 'inventory-ui-item-pricing-table-base',\n templateUrl: './item-pricing-table-base.component.html',\n styleUrls: ['./item-pricing-table-base.component.scss'],\n standalone: false,\n})\nexport class ItemPricingTableBaseComponent implements OnInit {\n @Input() config!: ItemPricingTableBaseConfig;\n protected _items$$ = new BehaviorSubject([]);\n\n @Input() set items(value: InventoryItemWithPricing[]) {\n this._items$$.next(value);\n }\n\n @Input() viewOnly = false;\n @Input() showRetailFrequencySuffix = false;\n\n @Output() updatedItemRow = new EventEmitter();\n @Output() valid = new EventEmitter();\n @Output() wholesaleTotal = new EventEmitter();\n\n private _invalidPriceItems: string[] = [];\n\n dataSource!: ItemPricingTableDataSource;\n tableDataSource!: GalaxyDataSource;\n columns: GalaxyColumnDef[] = ITEM_PRICING_TABLE_COLUMNS;\n Frequency = Frequency;\n priceTotals$!: Observable;\n showManagementFees = true;\n\n private injector = inject(Injector);\n private dataMembers!: Signal;\n private wholesaleSummary$!: Observable;\n private retailSummary$!: Observable;\n public wholesaleSummary!: Signal;\n public retailSummary!: Signal;\n\n constructor(\n private dialog: MatDialog,\n private readonly partnerApiService: PartnerApiService,\n private readonly appPricingApiService: AppPricingApiService,\n private readonly merchantService: MerchantService,\n private readonly marketplacePackagesApiService: MarketplacePackagesApiService,\n private readonly destroyRef: DestroyRef,\n private readonly productAnalyticsService: ProductAnalyticsService,\n ) {}\n\n ngOnInit(): void {\n if (this.config?.hideColumns?.length) {\n this.config.hideColumns.forEach((col) => {\n if (col === 'wholesale_price') {\n this.showManagementFees = false;\n }\n\n this.columns = this.columns.filter((c) => c.id !== col);\n });\n }\n\n this.dataSource = new ItemPricingTableDataSource(\n this._items$$.asObservable(),\n this.config?.partnerId,\n this.config?.marketId,\n this.config?.businessId ?? '',\n this.shouldExcludeWholesale(),\n this.appPricingApiService,\n this.partnerApiService,\n this.merchantService,\n this.marketplacePackagesApiService,\n );\n this.tableDataSource = new GalaxyDataSource(this.dataSource);\n this.dataMembers = toSignal(this.tableDataSource.dataMembers$, {\n initialValue: [],\n injector: this.injector,\n });\n\n this.wholesaleSummary$ = this.getPriceSummaryByContext('wholesale');\n this.retailSummary$ = this.getPriceSummaryByContext('retail');\n this.wholesaleSummary = toSignal(this.wholesaleSummary$, {\n initialValue: { oneTime: 0, monthly: 0, yearly: 0, currency: '' },\n injector: this.injector,\n });\n this.retailSummary = toSignal(this.retailSummary$, {\n initialValue: { oneTime: 0, monthly: 0, yearly: 0, currency: '' },\n injector: this.injector,\n });\n this.priceTotals$ = combineLatest([this.wholesaleSummary$, this.retailSummary$]).pipe(\n map(([wholesale, retail]) => {\n return {\n wholesaleTotal: wholesale,\n retailTotal: retail,\n initialized: true,\n };\n }),\n startWith({\n wholesaleTotal: { oneTime: 0, monthly: 0, yearly: 0, currency: '' },\n retailTotal: { oneTime: 0, monthly: 0, yearly: 0, currency: '' },\n initialized: false,\n }),\n );\n\n // TODO - clean this up when the ordering workflow is refactored to initialize package pricing\n this.tableDataSource.dataMembers$\n .pipe(\n filter((rows: ItemRow[]) => rows.length > 0),\n take(1),\n )\n .subscribe((rows) => {\n rows.forEach((row) => {\n // explicitly publish changes for packages to initialize pricing\n this.publishChanges(row);\n });\n });\n this.wholesaleSummary$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((wholesale) => {\n this.wholesaleTotal.emit(wholesale.oneTime);\n });\n }\n\n shouldExcludeWholesale(): boolean {\n return (\n (this.config.hideColumns?.length &&\n this.config.hideColumns.includes('wholesale_price') &&\n this.config.hidePriceSummary)\n );\n }\n onQuantityChange(changeEvent: Event, item: ItemRow): void {\n const htmlElement = changeEvent.target as HTMLInputElement;\n let quantity = htmlElement.valueAsNumber;\n if (quantity < 1) {\n htmlElement.value = '1';\n quantity = 1;\n }\n this.updateQuantity(item, quantity);\n }\n\n updateQuantity(item: ItemRow, quantity: number): void {\n item.quantity = quantity;\n if (quantity > 0) {\n item.wholesalePricing.frequencyPrices.forEach((fp) => (fp.total = fp.price * item.quantity));\n item.retailPricing.total = item.retailPricing.price * item.quantity;\n }\n const eventType = quantity > 0 ? 'update' : 'delete';\n this.publishChanges(item, eventType);\n }\n\n updateRetailPricing(item: ItemRow, value: number) {\n item.retailPricing.price = value;\n item.retailPricing.total = value * item.quantity;\n }\n\n updateWholesalePricing(item: ItemRow, frequency: Frequency, value: number) {\n const frequencyPrice = item.wholesalePricing.frequencyPrices.find((fp) => fp.frequency === frequency);\n if (!frequencyPrice) return;\n\n const oldWholeSalePrice = frequencyPrice.price;\n frequencyPrice.price = value;\n frequencyPrice.total = value * item.quantity;\n updatePercentageManagementFee(item, oldWholeSalePrice);\n this.validateWholesalePrice(item);\n }\n\n updateSetupFee(item: ItemRow, value: number) {\n item.fees.forEach((fee) => {\n if (fee.type === 'setup') {\n fee.retailAmount = value;\n fee.retailAmountTotal = fee.retailAmount * item.quantity;\n }\n });\n }\n\n validateWholesalePrice(item: ItemRow) {\n const invalidPrice = item.wholesalePricing.frequencyPrices.every(\n (fp) => fp.minimumPrice && fp.minimumPrice >= fp.price,\n );\n if (invalidPrice) {\n if (!this._invalidPriceItems.includes(item.itemId)) {\n this._invalidPriceItems.push(item.itemId);\n this.valid.emit(this._invalidPriceItems.length === 0);\n }\n } else {\n if (this._invalidPriceItems.includes(item.itemId)) {\n this._invalidPriceItems.splice(this._invalidPriceItems.indexOf(item.itemId), 1);\n this.valid.emit(this._invalidPriceItems.length === 0);\n }\n }\n }\n\n resetItemPricing(item: ItemRow): void {\n item.retailPricing = { ...item.defaultRetailPricing };\n if (item.wholesalePricing.usesVariablePricing) {\n item.wholesalePricing = resetItemVariablePrice(item);\n }\n item.fees = resetItemFees(item);\n item.billingTerm = undefined;\n this.publishChanges(item);\n }\n\n onPriceChange(\n changeEvent: Event,\n item: ItemRow,\n priceType: 'wholesale' | 'retail' | 'setupfee',\n frequency: Frequency = Frequency.ONE_TIME,\n ): void {\n const htmlInputValue = convertHTMLControlValueToNumber((changeEvent.target).value);\n const price = this.convertDollarsToCents(htmlInputValue);\n if (priceType === 'wholesale') this.updateWholesalePricing(item, frequency, price);\n if (priceType === 'retail') this.updateRetailPricing(item, price);\n if (priceType === 'setupfee') this.updateSetupFee(item, price);\n this.publishChanges(item);\n }\n\n handleFrequencyChange(frequency: Frequency, item: ItemRow): void {\n item.retailPricing.frequency = frequency;\n this.publishChanges(item);\n }\n\n editRetailBillingFrequency(item: ItemRow): void {\n this.openBillingFrequencyDialog(item).subscribe((output) => {\n if (!output || !output.frequency) {\n return;\n }\n item.retailPricing.frequency = output.frequency;\n this.publishChanges(item);\n });\n }\n\n openBillingFrequencyDialog(itemRow: ItemRow): Observable {\n return this.dialog\n .open(BillingFrequencyDialogComponent, {\n data: {\n itemId: itemRow.itemId,\n name: itemRow.name,\n editionName: itemRow.type === 'app' ? (itemRow.edition?.name ?? undefined) : undefined,\n iconUrl: itemRow.iconUrl,\n revenueComponent: {\n revenue: itemRow.retailPricing.total,\n period: galaxyFrequencyToRevenuePeriod(itemRow.retailPricing.frequency),\n },\n frequency: itemRow.retailPricing.frequency,\n viewOnly: this.viewOnly,\n } as DialogData,\n maxWidth: '90vw',\n maxHeight: '90vh',\n width: '500px',\n })\n .afterClosed()\n .pipe(take(1));\n }\n\n convertDollarsToCents(value: number): number {\n return Math.round(value * 100);\n }\n\n removeSetupFee(item: ItemRow, fee: ItemFeeRow): void {\n this.updateSetupFee(item, 0);\n item.fees.splice(item.fees.indexOf(fee), 1);\n this.publishChanges(item);\n }\n\n addSetupFee(itemToUpdate: ItemRow): void {\n itemToUpdate.fees.unshift({\n retailAmount: 0,\n amountType: 'fixed',\n label: 'Setup fee',\n type: 'setup',\n wholesaleAmount: 0,\n frequency: Frequency.ONE_TIME,\n });\n }\n\n publishChanges(item: ItemRow, action: ItemRowChangeEventAction = 'update', source?: string) {\n if (action === 'edit-billing-term') {\n if (source === 'link') {\n this.productAnalyticsService.trackEvent('billing-term-updated', 'updated-from-link', 'update');\n } else {\n this.productAnalyticsService.trackEvent('billing-term-updated', 'updated-from-menu', 'update');\n }\n }\n\n this.updatedItemRow.emit({ item, action });\n this.dataSource.refreshItemRows();\n }\n\n getPriceSummaryByContext = (type: 'wholesale' | 'retail'): Observable => {\n return this.tableDataSource.dataMembers$.pipe(\n filter((dataMembers) => dataMembers.length > 0),\n map((dataMembers) => {\n if (type === 'wholesale') return calculateTotalWholesalePrice(dataMembers);\n return calculateTotalRetailPrice(dataMembers);\n }),\n startWith({ oneTime: 0, monthly: 0, yearly: 0, currency: '' }),\n );\n };\n\n onRemoveItem(item: ItemRow): void {\n this.updateQuantity(item, 0);\n }\n\n getItems(): ItemRow[] {\n return this.dataMembers();\n }\n}\n","\n \n \n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.ITEM' | translate }}\n \n \n
\n \n @if (!config.hidePackageContents) {\n \n }\n @if (\n !viewOnly &&\n config.billingTermsConfig?.enabled &&\n (item?.retailPricing?.frequency !== Frequency.ONE_TIME || item?.billingTerm)\n ) {\n
\n @if (item?.billingTerm) {\n {{\n item?.billingTerm\n | formatBillingTerm: item?.retailPricing?.frequency : config.billingTermsConfig?.defaultStartDate\n }}\n } @else {\n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.AUTOMATICALLY_RENEW' | translate }}\n }\n
\n }\n \n
\n
\n
\n \n subdirectory_arrow_right\n {{ fee.label }}\n \n
\n
\n
\n
\n\n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.QUANTITY' | translate }}\n \n \n
\n @if (config?.quantityEditable && item.isMultiactivatable && item.type === 'addon' && !viewOnly) {\n \n \n \n } @else {\n {{ item.quantity }}\n }\n
\n
\n
\n\n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.WHOLESALE' | translate }}\n \n \n
\n
\n \n \n \n \n
\n
\n \n 0; else noFee\"\n [align]=\"'end'\"\n [price]=\"fee.wholesaleAmount\"\n [currencyCode]=\"item.wholesalePricing.currency\"\n [frequency]=\"fee.type === 'setup' ? Frequency.ONE_TIME : item.wholesalePricing.frequency\"\n />\n \n
\n
\n
\n
\n\n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.RETAIL' | translate }}\n \n \n
\n @if (viewOnly && this.config.unifiedOrdersEnabled) {\n
\n \n @if (item.isDiscountedRetailPrice) {\n \n }\n
\n
\n \n @if (fee.type === 'setup' || fee.showManagementFees) {\n = 0; else noFee\"\n class=\"item-pricing\"\n [align]=\"'end'\"\n [price]=\"fee.retailAmount\"\n [currencyCode]=\"item.retailPricing.currency\"\n [frequency]=\"fee.type === 'setup' ? Frequency.ONE_TIME : item.retailPricing.frequency\"\n />\n fee.retailAmount; else noFee\"\n class=\"item-pricing crossed-out-price\"\n [align]=\"'end'\"\n [price]=\"fee.retailDefaultAmount\"\n [currencyCode]=\"item.retailPricing.currency\"\n [frequency]=\"fee.type === 'setup' ? Frequency.ONE_TIME : item.retailPricing.frequency\"\n />\n }\n \n
\n } @else {\n
\n \n @if (item.displayOriginalPrice && this.config.unifiedOrdersEnabled) {\n
\n {{\n 'INVENTORY_UI.ITEM_PRICING_TABLE.ORIGINAL_PRICE_HINT' | translate\n }}\n \n
\n }\n
\n
\n \n = 0; else noFee\"\n [ngClass]=\"{ 'more-spacing': item.displayOriginalPrice && this.config.unifiedOrdersEnabled }\"\n [value]=\"fee.retailAmount | centsToDollars\"\n [currencyCode]=\"item.retailPricing.currency\"\n [minimumValue]=\"'0'\"\n [maxWidth]=\"220\"\n (change)=\"onPriceChange($event, item, 'setupfee')\"\n [bottomSpacing]=\"'none'\"\n [viewOnly]=\"viewOnly\"\n data-cy=\"retail-fee\"\n />\n @if (\n fee.type === 'setup' &&\n fee.retailDefaultAmount > 0 &&\n fee.retailDefaultAmount !== fee.retailAmount &&\n this.config.unifiedOrdersEnabled\n ) {\n
\n {{\n 'INVENTORY_UI.ITEM_PRICING_TABLE.ORIGINAL_PRICE_HINT' | translate\n }}\n \n
\n }\n
\n
\n }\n
\n
\n
\n\n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.RETAIL_TOTAL' | translate }}\n \n \n
\n
\n \n
\n
\n \n 0; else noFee\"\n [align]=\"'end'\"\n [price]=\"fee.retailAmountTotal\"\n [currencyCode]=\"item.retailPricing.currency\"\n [frequency]=\"Frequency.ONE_TIME\"\n />\n \n
\n
\n
\n
\n\n \n \n \n @if (!viewOnly) {\n
\n
\n \n \n @if (config.billingTermsConfig?.enabled) {\n \n\n @if (config.selectionEditable && item.billingTerm && item.isMultiactivatable) {\n \n }\n }\n \n \n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.ADD_SETUP_FEE' | translate }}\n \n \n @if (config?.selectionEditable) {\n \n }\n \n
\n\n \n
\n \n
\n
\n
\n }\n
\n
\n \n
\n\n @if (!config?.hidePriceSummary) {\n \n \n
\n
\n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.TOTALS' | translate }}\n
\n\n
\n
\n
\n {{\n 'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.WHOLESALE' | translate\n }}\n
\n
\n \n
\n
\n\n
\n
\n {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.RETAIL' | translate }}\n
\n
\n \n
\n
\n
\n
\n
\n
\n }\n\n
\n
\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTableModule } from '@angular/material/table';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyFrequencyModule } from '@vendasta/galaxy/frequency';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { GalaxyTableModule } from '@vendasta/galaxy/table';\nimport { GalaxyFrequencyToRevenuePeriodPipe } from '../../billing-term-dialog/sales-to-galaxy-frequency.pipe';\nimport { PackageContentsPopoverModule } from '../package-contents-popover/package-contents-popover.module';\nimport { ItemPricingTableBaseComponent } from './item-pricing-table-base.component';\nimport { ItemCommonModule } from '../item-common.module';\n\nexport const ITEM_PRICING_TABLE_DECLARATIONS = [ItemPricingTableBaseComponent];\n\nconst MAT_IMPORTS = [CommonModule, MatButtonModule, MatDialogModule, MatIconModule, MatMenuModule, MatTableModule];\n\nconst GALAXY_IMPORTS = [\n GalaxyAvatarModule,\n GalaxyFormFieldModule,\n GalaxyFrequencyModule,\n GalaxyInputModule,\n GalaxyTableModule,\n GalaxyFrequencyToRevenuePeriodPipe,\n];\n\nexport const ITEM_PRICING_TABLE_IMPORTS = [\n ...MAT_IMPORTS,\n ...GALAXY_IMPORTS,\n ItemCommonModule,\n BillingUiModule,\n PackageContentsPopoverModule,\n];\n\n@NgModule({\n exports: [ItemPricingTableBaseComponent],\n declarations: ITEM_PRICING_TABLE_DECLARATIONS,\n imports: ITEM_PRICING_TABLE_IMPORTS,\n})\nexport class ItemPricingTableBaseModule {}\n","export * from './interface';\nexport * from './line-item';\nexport { ItemPricingTableBaseModule } from './item-pricing-table-base.module';\nexport { ItemPricingTableBaseComponent } from './item-pricing-table-base.component';\n","import { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { InventoryItem } from '../common/inventory-item';\nimport { SelectedItem } from '../item-selector/interface';\nimport { PackageContentsService } from './package-contents.service';\n\n@Injectable()\nexport class ItemConflictService {\n constructor(private packageContentsService: PackageContentsService) {}\n\n resolveItemConflicts(\n selectedItem: SelectedItem,\n availableItems: SelectedItem[],\n partnerId: string,\n marketId: string,\n ): Observable {\n const duplicateItem = availableItems.find((i) => i.itemId === selectedItem.itemId);\n if (duplicateItem) {\n return of([]);\n }\n\n const packageItemsMap$ = this.getPackagedItemsMap(selectedItem, availableItems, partnerId, marketId);\n return packageItemsMap$.pipe(\n map((packageItemsMap) => {\n const itemsToCheck = packageItemsMap.get(selectedItem.itemId) ?? [selectedItem];\n packageItemsMap.delete(selectedItem.itemId);\n return this.getItemsToSelect(selectedItem, itemsToCheck, packageItemsMap, availableItems);\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n private getPackagedItemsMap(\n selectedItem: SelectedItem,\n availableItems: SelectedItem[],\n partnerId: string,\n marketId: string,\n ): Observable> {\n const availablePackageItems = availableItems.filter((i) => i.type === 'package');\n const allPackageIds = availablePackageItems.map((i) => i.itemId);\n if (selectedItem.type === 'package') {\n allPackageIds.push(selectedItem.itemId);\n }\n return this.packageContentsService.fetchMultiPackageItems(allPackageIds, partnerId, marketId);\n }\n\n private getItemsToSelect(\n selectedItem: SelectedItem,\n itemsToCheck: SelectedItem[],\n packageItemsMap: Map,\n availableItems: SelectedItem[],\n ): SelectedItem[] {\n const allProductItemIds = availableItems.filter((i) => i.type !== 'package').map((i) => i.itemId);\n const allPackagedItemIds = Array.from(packageItemsMap.values())\n .flat()\n .map((i) => i.itemId);\n const allAvailableItemIds = allProductItemIds.concat(allPackagedItemIds);\n const uniqueItems = itemsToCheck.filter((i) => !allAvailableItemIds.some((aid) => aid === i.itemId));\n if (uniqueItems.length === itemsToCheck.length) {\n return [selectedItem];\n }\n return uniqueItems;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n App,\n AppKey,\n GetMultiAppRequest,\n ItemIdentifier,\n ItemsApiService,\n ListDependenciesRequest,\n ListDependenciesRequiredItem,\n ListDependenciesRequiredItems,\n PartnerApiService,\n} from '@galaxy/marketplace-apps';\nimport { Observable, of } from 'rxjs';\nimport { map, shareReplay, switchMap } from 'rxjs/operators';\nimport { InventoryItem, InventoryItemApp } from '../common/inventory-item';\nimport { areEditionIdsEqual, mapify } from '../item-selector/util';\n\nexport type InventoryDependencyItem = InventoryItem & {\n enabled?: boolean;\n};\n\ntype MissingItems = { [key: string]: ListDependenciesRequiredItems };\n\n@Injectable()\nexport class ItemDependencyService {\n constructor(\n private itemsApiService: ItemsApiService,\n private partnerApiService: PartnerApiService,\n ) {}\n\n listMissingRequirementsForItems(\n partnerId: string,\n marketId: string,\n targetItems: InventoryItem[],\n availableItems: InventoryItem[],\n ): Observable> {\n // We are only concerned about app and add-on dependencies\n const filteredTargetItems = targetItems.filter((ti) => ti.type !== 'package');\n if (!filteredTargetItems.length) {\n return of(new Map());\n }\n\n // We only need to be concerned with available apps because only apps can satisfy dependencies\n const filteredAvailableItems = availableItems.filter((ai) => ai.type === 'app');\n return this.listMissingItems(partnerId, marketId, filteredTargetItems).pipe(\n switchMap((missingItems) => {\n const missingItemsMap = this.mapifyMissingItems(missingItems);\n const filteredMissingItemsMap = this.filterMissingItems(missingItemsMap, filteredAvailableItems);\n return this.convertMissingItemsToInventoryDependencyItems(partnerId, marketId, filteredMissingItemsMap);\n }),\n );\n }\n\n private listMissingItems(\n partnerId: string,\n marketId: string,\n targetItems: InventoryItem[],\n ): Observable {\n const itemIdentifiers = targetItems.map((ti) => {\n const itemId = ti.itemId;\n let editionId = '';\n if (ti.type === 'app') {\n const app = ti as InventoryItemApp;\n editionId = app.edition?.editionId ?? '';\n }\n return new ItemIdentifier({ itemId: itemId, editionId: editionId });\n });\n return this.itemsApiService\n .listDependencies(\n new ListDependenciesRequest({\n sellerId: partnerId,\n storeId: marketId,\n items: itemIdentifiers,\n }),\n )\n .pipe(\n map((resp) => resp?.missingItems ?? {}),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private mapifyMissingItems(missingItems: MissingItems): Map {\n return mapify(\n Object.entries(missingItems) || [],\n ([itemId]) => itemId,\n ([, requiredItems]) => requiredItems.requiredItems,\n );\n }\n\n private filterMissingItems(\n missingItemsMap: Map,\n availableItems: InventoryItem[],\n ): Map {\n const availableApps = availableItems as InventoryItemApp[];\n const filteredMissingItems = new Map();\n missingItemsMap.forEach((rawRequiredItems, itemId) => {\n const filteredRequiredItems =\n rawRequiredItems?.filter((ri) => {\n const item = availableApps.find(\n (i) =>\n i.itemId === ri.itemId &&\n (!ri.editionRequirement?.editionRequired ||\n areEditionIdsEqual(i.edition?.editionId, ri.editionRequirement?.editionId)),\n );\n return !item;\n }) ?? [];\n if (filteredRequiredItems?.length) {\n filteredMissingItems.set(itemId, filteredRequiredItems);\n }\n });\n return filteredMissingItems;\n }\n\n private convertMissingItemsToInventoryDependencyItems(\n partnerId: string,\n marketId: string,\n missingItemsMap: Map,\n ): Observable> {\n const requiredItems = Array.from(missingItemsMap.values()).flat();\n const requiredAppKeys = requiredItems.map((ri) => new AppKey({ appId: ri.itemId }));\n const appsMap$ = this.getAppsMap(partnerId, marketId, requiredAppKeys);\n return appsMap$.pipe(\n map((appsMap) => {\n const inventoryItemsMap = new Map();\n missingItemsMap.forEach((requiredItems, itemId) => {\n const inventoryItems = requiredItems.map((ri) => {\n const app = appsMap.get(ri.itemId);\n return this.requiredItemToInventoryDependencyItem(ri, app!);\n });\n inventoryItemsMap.set(itemId, inventoryItems);\n });\n return inventoryItemsMap;\n }),\n );\n }\n\n private getAppsMap(partnerId: string, marketId: string, appKeys: AppKey[]): Observable> {\n if (!appKeys.length) {\n return of(new Map());\n }\n\n return this.partnerApiService\n .getMultiApp(\n new GetMultiAppRequest({\n partnerId: partnerId,\n marketId: marketId,\n appKeys: appKeys,\n projectionFilter: { paths: ['key', 'sharedMarketingInformation', 'editionInformation'] },\n }),\n )\n .pipe(\n map((resp) =>\n mapify(\n resp.apps ?? [],\n (app) => app.key?.appId,\n (app) => app,\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private requiredItemToInventoryDependencyItem(\n requiredItem: ListDependenciesRequiredItem,\n app: App,\n ): InventoryDependencyItem {\n const editions = app?.editionInformation?.editions || [];\n let edition = null;\n if (editions.length > 0) {\n // If a specific edition is required, find it. Otherwise, default to the first edition.\n if (requiredItem.editionRequirement?.editionRequired) {\n edition = editions.find((e) =>\n areEditionIdsEqual(e.appKey?.editionId, requiredItem.editionRequirement?.editionId),\n );\n } else {\n edition = editions[0];\n }\n }\n return {\n itemId: requiredItem.itemId,\n edition: {\n editionId: edition?.appKey?.editionId ?? '',\n name: edition?.name ?? '',\n },\n name: app?.sharedMarketingInformation?.name ?? '',\n iconUrl: app?.sharedMarketingInformation?.iconUrl ?? '',\n type: 'app',\n quantity: 1,\n enabled: requiredItem.enabled ?? false,\n };\n }\n}\n","import { Injectable, Signal, WritableSignal, computed, signal } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { map, shareReplay, switchMap, take, withLatestFrom } from 'rxjs/operators';\nimport { InventoryItem, InventoryItemApp } from '../common/inventory-item';\nimport { ItemConflictService } from '../services/item-conflict.service';\nimport { InventoryDependencyItem, ItemDependencyService } from '../services/item-dependency.service';\nimport { SelectedItem } from './interface';\nimport { convertInventoryItemToSelectedItem, findItem } from './util/item';\n\nexport interface SelectionOptions {\n partnerId: string;\n marketId: string;\n confirmItenComflictResolutionCallback?: () => Observable;\n enforceDependencies?: boolean;\n}\n\ntype SelectionEventType = 'selected' | 'deselected';\n\ntype SelectionEventSource =\n | 'user'\n | 'conflict-duplicate-item'\n | 'conflict-intersecting-items'\n | 'dependency-selection-change'\n | 'dependency-edition-change'\n | 'dependency-unavailable';\n\nexport interface SelectionEvent {\n triggerItem?: SelectedItem;\n updatedItems: SelectedItem[];\n eventType: SelectionEventType;\n eventSource: SelectionEventSource;\n}\n\n@Injectable()\nexport class ItemSelectorServiceV2 {\n private _selectedItems: WritableSignal = signal([]);\n private _immutableSelectedItems: WritableSignal = signal([]);\n private _availableItems: WritableSignal = signal([]);\n private _changeEvents: WritableSignal = signal([]);\n\n public readonly selectedItems: Signal = this._selectedItems.asReadonly();\n public readonly immutableSelectedItems: Signal = this._immutableSelectedItems.asReadonly();\n public readonly availableItems: Signal = this._availableItems.asReadonly();\n public readonly changeEvents: Signal = this._changeEvents.asReadonly();\n\n public readonly allItems: Signal = computed(() => {\n const selectedItems = this._selectedItems();\n const immutableSelectedItems = this._immutableSelectedItems();\n return [...selectedItems, ...immutableSelectedItems];\n });\n\n constructor(\n private itemConflictService: ItemConflictService,\n private itemDependencyService: ItemDependencyService,\n ) {}\n\n public initSelectedItems(value: SelectedItem[]) {\n this._selectedItems.set(value ?? []);\n // For now, reset the change events when the items are selected to deal\n // with the circular dependency between the item selector and the activation\n // service causing items to be re-selected from a different \"selection session\"\n // for a different account.\n this._changeEvents.set([]);\n }\n\n public initImmutableSelectedItems(items: SelectedItem[]) {\n const immutableItems = items?.map((i) => ({ ...i, immutable: true }));\n this._immutableSelectedItems.set(immutableItems ?? []);\n }\n\n // availableItems can be re-selected and are taken into consideration for dependency resolution\n public initAvailableItems(items: SelectedItem[]) {\n this._availableItems.set(items ?? []);\n }\n\n public updateSelection(isSelected: boolean, targetItem: SelectedItem, options?: SelectionOptions): void {\n if (isSelected) {\n this.addSelection(targetItem, 'user', options);\n return;\n }\n\n const [, index] = findItem(this.selectedItems(), targetItem.itemId);\n if (isIndexValid(index)) {\n this.removeSelection(index, 'user', options);\n }\n }\n\n public updateItemEdition(targetItem: SelectedItem, options?: SelectionOptions): void {\n const [, index] = findItem(this.selectedItems(), targetItem.itemId);\n\n if (!isIndexValid(index)) {\n if (targetItem.immutable) {\n this.updateSelection(\n true,\n {\n ...targetItem,\n quantity: targetItem?.quantity || 1,\n },\n options,\n );\n }\n return;\n }\n\n this._selectedItems.update((selectedItems) => {\n const selectedItem = selectedItems[index];\n if (selectedItem.type === 'app') {\n const targetApp = targetItem as InventoryItemApp;\n selectedItem.edition = targetApp.edition;\n }\n return [...selectedItems];\n });\n const updatedItem = this.selectedItems()[index];\n this.pushSelectionEvent([updatedItem], 'selected', 'user');\n if (updatedItem.type === 'package' || !options?.enforceDependencies) {\n return;\n }\n\n const selectedItems = this.selectedItems();\n this.removeBrokenDependencies(\n options.partnerId,\n options.marketId,\n selectedItems,\n 'dependency-edition-change',\n updatedItem,\n );\n }\n\n public updateItemQuantity(targetItem: SelectedItem, options?: SelectionOptions): void {\n const [, index] = findItem(this.selectedItems(), targetItem.itemId);\n const quantity = targetItem.quantity;\n\n // add item with quantity\n if (!isIndexValid(index)) {\n this.addSelection(targetItem, 'user', options);\n return;\n }\n\n // update item quantity\n if (quantity > 0) {\n this._selectedItems.update((selectedItems) => {\n selectedItems[index].quantity = quantity;\n return [...selectedItems];\n });\n const updatedItem = this.selectedItems()[index];\n this.pushSelectionEvent([updatedItem], 'selected', 'user');\n return;\n }\n\n // remove selected item\n if (quantity <= 0) {\n this.removeSelection(index, 'user', options);\n }\n }\n\n public removeItemId(itemId: string, eventSource: SelectionEventSource, options?: SelectionOptions): void {\n const [, index] = findItem(this.selectedItems(), itemId);\n if (isIndexValid(index)) {\n this.removeSelection(index, eventSource, options);\n }\n }\n\n public clearSelection(clearedByUser = false): void {\n if (clearedByUser) {\n this.pushSelectionEvent([...this.selectedItems()], 'deselected', 'user');\n }\n this._selectedItems.set([]);\n }\n\n private addSelection(\n selectedItem: SelectedItem,\n eventSource: SelectionEventSource,\n options?: SelectionOptions,\n ): void {\n const selectedItems = this.selectedItems();\n const immutableSelectedItems = this.immutableSelectedItems();\n const availableItems = this.availableItems();\n this._selectedItems.update((selectedItems) => [...selectedItems, selectedItem]);\n this.pushSelectionEvent([selectedItem], 'selected', eventSource);\n this.validateItemSelections(selectedItem, selectedItems, immutableSelectedItems, availableItems, options);\n }\n\n private removeSelection(itemIndex: number, eventSource: SelectionEventSource, options?: SelectionOptions): void {\n const selectedItems = this._selectedItems();\n const [removedItem] = selectedItems.splice(itemIndex, 1);\n this._selectedItems.set([...selectedItems]);\n this.pushSelectionEvent([removedItem], 'deselected', eventSource);\n\n if (removedItem.type === 'package' || !options?.enforceDependencies) {\n return;\n }\n\n this.removeBrokenDependencies(\n options.partnerId,\n options.marketId,\n selectedItems,\n 'dependency-selection-change',\n removedItem,\n );\n }\n\n private validateItemSelections(\n selectedItem: SelectedItem,\n selectedItems: SelectedItem[],\n immutableSelectedItems: SelectedItem[],\n availableItems: InventoryItem[],\n options?: SelectionOptions,\n ): void {\n // When resolving item conflicts, only consider the selected items so multi-activatable items\n // can be selected again, even if there are active.\n const items = [...selectedItems, ...immutableSelectedItems, ...availableItems];\n const resolvedItems$ = this.resolveItemConflicts(selectedItem, selectedItems, options);\n const missingItems$ = resolvedItems$.pipe(\n switchMap((resolvedItems) => {\n const updatedItems = this.replaceSelectedItemWithResolvedItems(selectedItem, selectedItems, resolvedItems);\n return this.findMissingDependencies(updatedItems, items, options);\n }),\n );\n // TODO - refactor this when the item selector service supports selecting multiple items simultaneously\n // because not doing this causes a flicker when a package is decomposed into its contents\n resolvedItems$.pipe(take(1)).subscribe((resolvedItems) => this.handleItemConflicts(selectedItem, resolvedItems));\n if (!options?.enforceDependencies) {\n return;\n }\n missingItems$\n .pipe(take(1))\n .subscribe((missingItems) => this.handleMissingDependencies(selectedItem, missingItems, options));\n }\n\n private resolveItemConflicts(\n selectedItem: SelectedItem,\n availableItems: SelectedItem[],\n options?: SelectionOptions,\n ): Observable {\n const resolvedItems$ = this.itemConflictService\n .resolveItemConflicts(selectedItem, availableItems, options?.partnerId ?? '', options?.marketId ?? '')\n .pipe(\n map((resolvedItems) => resolvedItems.map((ri) => convertInventoryItemToSelectedItem(ri, false))),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n return resolvedItems$.pipe(\n switchMap((resolvedItems) => {\n const shouldConfirm = resolvedItems?.length && resolvedItems[0].itemId !== selectedItem.itemId;\n if (!shouldConfirm || !options?.confirmItenComflictResolutionCallback) {\n return of(true);\n }\n return options.confirmItenComflictResolutionCallback();\n }),\n withLatestFrom(resolvedItems$),\n map(([confirmation, resolvedItems]) => {\n if (!confirmation) {\n return [];\n }\n return resolvedItems ?? [];\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n private handleItemConflicts(selectedItem: SelectedItem, resolvedItems: SelectedItem[]): void {\n if (resolvedItems?.length === 1 && resolvedItems[0].itemId === selectedItem.itemId) {\n // In this case, there are no conflicts and the item is already selected.\n return;\n }\n\n this._selectedItems.update((selectedItems) => [\n ...this.replaceSelectedItemWithResolvedItems(selectedItem, selectedItems, resolvedItems),\n ]);\n\n let updatedItems = [selectedItem];\n let eventType: SelectionEventType = 'deselected';\n let eventSource: SelectionEventSource = 'conflict-duplicate-item';\n if (resolvedItems?.length) {\n updatedItems = resolvedItems;\n eventType = 'selected';\n eventSource = 'conflict-intersecting-items';\n }\n this.pushSelectionEvent(updatedItems, eventType, eventSource);\n }\n\n private replaceSelectedItemWithResolvedItems(\n selectedItem: SelectedItem,\n selectedItems: SelectedItem[],\n resolvedItems: SelectedItem[],\n ): SelectedItem[] {\n const filteredItems = selectedItems.filter((si) => si.itemId !== selectedItem.itemId);\n return [...filteredItems, ...resolvedItems];\n }\n\n private findMissingDependencies(\n targetItems: SelectedItem[],\n availableItems: SelectedItem[],\n options?: SelectionOptions,\n ): Observable> {\n return this.itemDependencyService\n .listMissingRequirementsForItems(options?.partnerId ?? '', options?.marketId ?? '', targetItems, availableItems)\n .pipe(shareReplay({ bufferSize: 1, refCount: true }));\n }\n\n private handleMissingDependencies(\n triggerItem: SelectedItem,\n missingItemsMap: Map,\n options?: SelectionOptions,\n ): void {\n missingItemsMap.forEach((missingItems, targetItemId) => {\n if (missingItems.some((mi) => !mi.enabled)) {\n this.removeItemId(targetItemId, 'dependency-unavailable', {\n partnerId: options?.partnerId ?? '',\n marketId: options?.marketId ?? '',\n enforceDependencies: false,\n });\n return;\n }\n\n const requiredItems = missingItems.map((mi) => convertInventoryItemToSelectedItem(mi, false));\n this._selectedItems.update((selectedItems) => {\n requiredItems.forEach((requiredItem) => {\n const [targetItem, targetItemIdx] = findItem(selectedItems, requiredItem.itemId);\n if (!isIndexValid(targetItemIdx)) {\n selectedItems.push(requiredItem);\n } else {\n if (targetItem?.type === 'app' && requiredItem?.type === 'app') {\n const targetApp = targetItem as InventoryItemApp;\n const requiredApp = requiredItem as InventoryItemApp;\n targetApp.edition = requiredApp.edition;\n }\n }\n });\n return [...selectedItems];\n });\n this.pushSelectionEvent(requiredItems, 'selected', 'dependency-selection-change', triggerItem);\n });\n }\n\n private removeBrokenDependencies(\n partnerId: string,\n marketId: string,\n targetItems: SelectedItem[],\n eventSource: SelectionEventSource,\n triggerItem?: SelectedItem,\n ): void {\n const selectedItems = this.selectedItems();\n // TODO - replace this with active items?\n const activeItems = this.immutableSelectedItems();\n const availabeItems = selectedItems.concat(activeItems);\n this.itemDependencyService\n .listMissingRequirementsForItems(partnerId, marketId, targetItems, availabeItems)\n .pipe(\n take(1),\n map((missingItemsMap) => Array.from(missingItemsMap.keys())),\n )\n .subscribe((brokenItemIds) => {\n if (!brokenItemIds?.length) {\n return;\n }\n\n const selectedItems = this._selectedItems();\n const removedItems: SelectedItem[] = [];\n brokenItemIds.forEach((brokenItemId) => {\n const [, brokenItemIdx] = findItem(selectedItems, brokenItemId);\n const [removedItem] = selectedItems.splice(brokenItemIdx, 1);\n removedItems.push(removedItem);\n });\n this._selectedItems.set([...selectedItems]);\n this.pushSelectionEvent(removedItems, 'deselected', eventSource, triggerItem);\n });\n }\n\n private pushSelectionEvent(\n updatedItems: SelectedItem[],\n eventType: SelectionEventType,\n eventSource: SelectionEventSource,\n triggerItem?: SelectedItem,\n ) {\n this._changeEvents.update((changeEvents) => {\n return [{ triggerItem, updatedItems, eventType, eventSource }, ...changeEvents];\n });\n }\n}\n\nfunction isIndexValid(index: number): boolean {\n return index >= 0;\n}\n","import { Injectable } from '@angular/core';\n\nexport interface LineItem {\n itemId: string;\n editionId?: string;\n itemType: 'app' | 'addon' | 'package';\n quantity: number;\n}\n\nconst LINE_ITEMS_CACHE_KEY = 'inventory/line-items-cache';\n\n@Injectable()\nexport class LineItemCacheService {\n private buildKey(businessId: string): string {\n return `${LINE_ITEMS_CACHE_KEY}:${businessId}`;\n }\n\n readLineItems(businessId: string): LineItem[] {\n const key = this.buildKey(businessId);\n const lineItems = sessionStorage.getItem(key);\n if (!lineItems?.length) return [];\n\n return JSON.parse(lineItems);\n }\n\n cacheLineItems(businessId: string, lineItems: LineItem[]): void {\n const key = this.buildKey(businessId);\n if (!lineItems?.length) {\n sessionStorage.removeItem(key);\n return;\n }\n\n sessionStorage.setItem(key, JSON.stringify(lineItems));\n }\n\n clearLineItemCache(businessId: string): void {\n const key = this.buildKey(businessId);\n sessionStorage.removeItem(key);\n }\n}\n","import {\n ActivatableItemSummaryInterface,\n AppPricesInterface,\n ChildAppInterface,\n ItemType,\n ListActivatableItemsFilters,\n ListActivatableItemsRequest,\n} from '@vendasta/marketplace-apps';\nimport { InventoryItem } from '../common/inventory-item';\nimport { InventoryItemEdition } from '../common/inventory-item/item-types/app';\n\nexport interface ItemSelectorRowItem extends ActivatableItemSummaryInterface {\n itemId: string;\n appPrices?: AppPricesInterface;\n isSelected?: boolean;\n editionId?: string;\n quantity?: number;\n editions?: Edition[];\n itemType?: ItemType;\n immutable?: boolean;\n unavailableInCountry?: boolean;\n pricesInitialized?: boolean;\n childApps?: ChildAppInterface[];\n}\n\nexport interface Edition extends InventoryItemEdition {\n appId: string;\n isActive?: boolean;\n}\n\nexport type SelectedItem = InventoryItem & {\n immutable?: boolean;\n};\n\nexport interface ItemSelectorConfig {\n partnerId?: string;\n marketId?: string;\n businessId?: string;\n pageSize?: number;\n country?: string;\n priceType?: 'generic' | 'instance';\n hideOwnerName?: boolean;\n hideWholesale?: boolean;\n hideRetail?: boolean;\n hideQuantity?: boolean;\n hideItemsWithOrderForms?: boolean;\n itemTypesAvailable?: ItemSelectorFilterType[];\n enforceDependencies?: boolean;\n}\n\nexport type ItemSelectorFilterType = 'products' | 'packages';\n\nexport enum SelectionChangeEventType {\n SELECTED,\n DESELECTED,\n}\n\nexport interface SelectionChange {\n selectedItems: SelectedItem[];\n updatedItem: SelectedItem;\n eventType: SelectionChangeEventType;\n}\n\nexport type ItemSelectorFilters = Omit<\n ListActivatableItemsFilters,\n 'searchTerm' | 'itemType' | 'ownerPartnerId' | 'toApiJson'\n>;\n\nexport interface ItemSelectorState {\n itemType: 'products' | 'packages' | 'allItems';\n requiredItem: ItemSelectorRowItem | null;\n showAddons: boolean;\n showUnavailableItems: boolean;\n}\n\nexport type FilterFn = (req: ListActivatableItemsRequest) => ListActivatableItemsRequest;\n","import { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\n\nexport const ITEMS_SELECTOR_COLUMNS: GalaxyColumnDef[] = [\n {\n id: 'checkbox',\n title: 'Checkbox',\n },\n {\n id: 'name',\n title: 'Name',\n },\n {\n id: 'quantityInput',\n title: 'Quantity',\n },\n {\n id: 'wholesale',\n title: 'Wholesale',\n },\n {\n id: 'retail',\n title: 'Retail',\n },\n];\n","import { PagedListRequestInterface, PagedResponseInterface, PaginatedAPIInterface } from '@vendasta/galaxy/table';\nimport {\n App,\n AppPrice,\n AppPrices,\n AppPricingApiService,\n FieldMask,\n GetMultiPricingRequest,\n GetMultiPricingResponse,\n ItemsApiService,\n ListActivatableItemsRequest,\n ListActivatableItemsSortOptions,\n PartnerApiService,\n RequestedApp,\n} from '@vendasta/marketplace-apps';\nimport {\n EditionsApiService,\n ListByMultiAppRequest,\n ListByMultiAppResponseAppEditions,\n} from '@vendasta/marketplace-apps/v1';\nimport { combineLatest, merge, Observable, of } from 'rxjs';\nimport { catchError, map, shareReplay, skipWhile, startWith, switchMap } from 'rxjs/operators';\nimport { ItemSelectorConfig, ItemSelectorFilters, ItemSelectorRowItem, SelectedItem } from './interface';\nimport { ItemSelectorServiceV2 } from './item-selector-v2.service';\nimport { convertToItemSelectorEdition, findItem, findItemEdition, markActiveEdition } from './util';\n\nexport class ItemSelectorDataSource implements PaginatedAPIInterface {\n constructor(\n private readonly itemsApiService: ItemsApiService,\n private readonly appPricingApiService: AppPricingApiService,\n private readonly editionsService: EditionsApiService,\n private readonly sortOptions$: Observable,\n private readonly itemSelectorServiceV2: ItemSelectorServiceV2,\n private readonly immutableSelectedItems$: Observable,\n private readonly selectedItems$: Observable,\n private readonly config: Required,\n private readonly partnerApiService: PartnerApiService,\n ) {}\n\n get(\n pagedReq: PagedListRequestInterface,\n ): Observable> {\n const activatableItems$ = this.sortOptions$.pipe(\n switchMap((sortOptions) => {\n const listReq = this.buildRequest(this.config.partnerId, this.config.marketId, pagedReq, sortOptions);\n return this.listActivatableItems(listReq);\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n const rows$ = merge(\n activatableItems$,\n activatableItems$.pipe(switchMap((response) => this.sideloadData(response))),\n );\n\n return combineLatest([rows$, this.immutableSelectedItems$, this.selectedItems$]).pipe(\n map(([rows]) => {\n rows.data = this.processActivatableItems(rows.data);\n return rows;\n }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private buildRequest(\n partnerId: string,\n marketId: string,\n pagedReq: PagedListRequestInterface,\n sortOptions: ListActivatableItemsSortOptions,\n ): ListActivatableItemsRequest {\n const cursor = pagedReq.pagingOptions?.cursor ?? '';\n const pageSize = pagedReq.pagingOptions?.pageSize ?? 0;\n const itemSelectorFilters = pagedReq?.filters?.[0];\n return new ListActivatableItemsRequest({\n sellerId: partnerId,\n storeId: marketId,\n cursor: cursor,\n pageSize: pageSize,\n filters: { searchTerm: pagedReq.searchOptions?.text, ...itemSelectorFilters },\n sortOptions: sortOptions,\n });\n }\n\n private listActivatableItems(\n req: ListActivatableItemsRequest,\n ): Observable> {\n return this.itemsApiService.listActivatableItems(req).pipe(\n map((response) => {\n return {\n data: (response.activatableItemSummaries as ItemSelectorRowItem[]) ?? [],\n pagingMetadata: {\n nextCursor: response.nextCursor,\n hasMore: response.hasMore,\n totalResults: response.totalResults,\n },\n };\n }),\n );\n }\n\n private sideloadData(\n rows: PagedResponseInterface,\n ): Observable> {\n const pricing$ = this.getPricing(rows.data).pipe();\n const editions$ = this.getEditions(rows).pipe(startWith([]));\n const apps$ = this.getMarketplaceApps(rows.data).pipe(startWith([]));\n return combineLatest([pricing$, editions$, apps$]).pipe(\n skipWhile(([pricing, editions, apps]) => pricing.loading && !editions?.length && !apps?.length),\n map(([pricing, editions, apps]) => this.hydrateRows(rows, pricing, editions, apps)),\n );\n }\n\n private hydrateRows(\n rows: PagedResponseInterface,\n pricing: GetItemPricingState,\n editions: ListByMultiAppResponseAppEditions[],\n apps: App[],\n ): PagedResponseInterface {\n const pricingContexts = this.getPricingContexts();\n rows.data.forEach((rowItem: ItemSelectorRowItem) => {\n if (!pricing.loading) {\n rowItem.appPrices = this.getItemPrice(rowItem.itemId, pricing.prices, pricingContexts);\n rowItem.pricesInitialized = true;\n }\n if (editions.length > 0) {\n const rowItemEditions = editions.find((edition) => edition.appId === rowItem.itemId);\n if (rowItemEditions?.editions?.length) {\n rowItem.editions = rowItemEditions.editions.map(convertToItemSelectorEdition);\n const [item] = findItem(this.itemSelectorServiceV2.allItems(), rowItem.itemId);\n const edition = findItemEdition(item, rowItemEditions.editions);\n rowItem.editionId = edition?.editionId ?? '';\n }\n }\n if (apps?.length) {\n const app = apps.find((app) => app?.key?.appId === rowItem.itemId);\n rowItem.childApps = app?.childApps ?? [];\n }\n });\n return rows;\n }\n\n private getPricing(rows: ItemSelectorRowItem[]): Observable {\n const itemIds = rows.map((item) => item.itemId);\n if (!itemIds.length || (this.config.hideWholesale && this.config.hideRetail)) {\n return of({ prices: [], loading: false });\n }\n const request = new GetMultiPricingRequest({\n itemIds: itemIds,\n pricingContexts: new FieldMask({\n paths: this.getPricingContexts(),\n }),\n partnerId: this.config.partnerId,\n marketId: this.config.marketId,\n businessId: this.config.businessId,\n });\n if (this.config.priceType === 'instance') {\n request.requestedApps = rows.map((row) => new RequestedApp({ appId: row.itemId, quantity: row.quantity || 1 }));\n request.filterOptions = new FieldMask({ paths: ['instance_price'] });\n }\n return this.appPricingApiService.getMultiPricing(request).pipe(\n map((resp) => ({\n prices: resp?.appPrices ?? [],\n loading: false,\n })),\n catchError(() => {\n return of({ prices: [], loading: false });\n }),\n startWith({ prices: [], loading: true }),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private getPricingContexts(): string[] {\n const pricingContexts: string[] = [];\n if (!this.config.hideRetail) pricingContexts.push('retail');\n if (!this.config.hideWholesale) pricingContexts.push('wholesale');\n return pricingContexts;\n }\n\n private getEditions(\n rows: PagedResponseInterface,\n ): Observable {\n const appIds = rows.data.filter((item) => item.usesEditions).map((item) => item.itemId);\n if (!appIds.length) {\n return of([]);\n }\n const request = new ListByMultiAppRequest({ appIds });\n return this.editionsService.listByMultiApp(request).pipe(\n map((resp) => resp?.appEditions),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private getMarketplaceApps(rows: ItemSelectorRowItem[]): Observable {\n const getMultiAppRequest = {\n projectionFilter: {\n paths: ['childApps'],\n },\n appKeys: rows.map((row) => {\n return {\n appId: row.itemId,\n editionId: row.editionId,\n };\n }),\n partnerId: this.config.partnerId,\n marketId: this.config.marketId,\n };\n return this.partnerApiService.getMultiApp(getMultiAppRequest).pipe(\n map((response) => response.apps),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n private processActivatableItems(activatableItems: ItemSelectorRowItem[]): ItemSelectorRowItem[] {\n return activatableItems.map((activatableItem) => {\n activatableItem = this.markActivatableItemAsSelected(activatableItem);\n activatableItem = this.markUnavailableItemInCountry(activatableItem, this.config.country);\n activatableItem = markActiveEdition(\n this.itemSelectorServiceV2.selectedItems(),\n this.itemSelectorServiceV2.immutableSelectedItems(),\n activatableItem,\n );\n return activatableItem;\n });\n }\n\n private markActivatableItemAsSelected(activatableItem: ItemSelectorRowItem): ItemSelectorRowItem {\n const [selectedItem] = findItem(this.itemSelectorServiceV2.selectedItems(), activatableItem.itemId);\n const [immutableItem] = findItem(this.itemSelectorServiceV2.immutableSelectedItems(), activatableItem.itemId);\n let isSelected = !!selectedItem || !!immutableItem;\n if (activatableItem.isMultiactivatable) {\n isSelected = !!selectedItem;\n }\n activatableItem.isSelected = isSelected;\n activatableItem.quantity = immutableItem?.immutable ? 0 : (selectedItem?.quantity ?? 0);\n activatableItem.immutable = immutableItem?.immutable;\n return activatableItem;\n }\n\n private markUnavailableItemInCountry(activatableItem: ItemSelectorRowItem, country?: string): ItemSelectorRowItem {\n activatableItem.unavailableInCountry = !this.isItemAvailableInCountry(activatableItem, country);\n return activatableItem;\n }\n\n private isItemAvailableInCountry(item: ItemSelectorRowItem, country?: string): boolean {\n if (!country || !item?.requiredCountries) return true;\n const matchesCountry = item?.requiredCountries?.some((c) => c.toUpperCase() === country.toUpperCase());\n return matchesCountry;\n }\n\n private getItemPrice(itemId: string, prices: AppPrices[], pricingContexts: string[]): AppPrices {\n const itemPrice = prices.find((price) => price.appId === itemId);\n if (itemPrice) return itemPrice;\n\n const unavailableItemPrice = new AppPrices({ appId: itemId, pricesForContexts: {} });\n pricingContexts.forEach((context) => {\n unavailableItemPrice.pricesForContexts[context] = new AppPrice({ appId: itemId });\n });\n return unavailableItemPrice;\n }\n}\n\ninterface GetItemPricingState {\n prices: AppPrices[];\n loading: boolean;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActivatableItemSummary, DeliveryMethod, ItemType } from '@vendasta/marketplace-apps';\n\n@Pipe({\n name: 'formatProductType',\n standalone: false,\n})\nexport class FormatProductTypePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(item: ActivatableItemSummary): string {\n if (item.itemType === ItemType.ITEM_TYPE_PACKAGE) {\n return this.translateService.instant('INVENTORY_UI.COMMON.ITEM_TYPE.PACKAGE');\n }\n\n switch (item.deliveryMethod) {\n case DeliveryMethod.DELIVERY_METHOD_PRODUCT:\n switch (item.itemType) {\n case ItemType.ITEM_TYPE_APP:\n case ItemType.ITEM_TYPE_ADDON:\n return this.translateService.instant('INVENTORY_UI.COMMON.ITEM_TYPE.PRODUCT');\n default:\n return '';\n }\n case DeliveryMethod.DELIVERY_METHOD_SERVICE:\n return this.translateService.instant('INVENTORY_UI.COMMON.ITEM_TYPE.SERVICE');\n default:\n return '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ActivatableItemSummary, ItemType } from '@vendasta/marketplace-apps';\n\n@Pipe({\n name: 'formatProductRequirement',\n standalone: false,\n})\nexport class FormatProductRequirementPipe implements PipeTransform {\n transform(item: ActivatableItemSummary): string {\n if (item?.requiredItems?.length > 0) {\n const requiredItemName = item.requiredItems[0].name;\n switch (item.itemType) {\n case ItemType.ITEM_TYPE_ADDON:\n return `Add-on to ${requiredItemName}`;\n case ItemType.ITEM_TYPE_APP:\n if (item.requiredItems.length > 1) {\n return `Requires ${requiredItemName} and ${item.requiredItems.length - 1} more`;\n }\n return `Requires ${requiredItemName}`;\n default:\n return '';\n }\n }\n return '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ItemSelectorRowItem } from '../interface';\n\n@Pipe({\n name: 'parseWholesaleCurrency',\n standalone: false,\n})\nexport class ParseWholesaleCurrencyPipe implements PipeTransform {\n transform(item: ItemSelectorRowItem): string {\n const pricesForEditions = item?.appPrices?.pricesForContexts?.['wholesale']?.pricesForEditions;\n if (pricesForEditions && Object.keys(pricesForEditions).length > 0) {\n const [firstEditionId] = Object.keys(pricesForEditions);\n const currencies = pricesForEditions[firstEditionId]?.pricesForCurrencies;\n if (currencies && Object.keys(currencies).length > 0) {\n return Object.keys(currencies)[0];\n }\n }\n return 'USD';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ItemSelectorRowItem } from '../interface';\n\n@Pipe({\n name: 'isItemDisabled',\n pure: false,\n standalone: false,\n})\nexport class IsItemDisabledPipe implements PipeTransform {\n transform(item: ItemSelectorRowItem, hideQuantity: boolean): boolean {\n if (item.isSuspended || item.unavailableInCountry) return true;\n if (item.isMultiactivatable && !hideQuantity) return false;\n\n const invalidEditions = item?.usesEditions && !item?.editions;\n return item?.immutable || !!invalidEditions;\n }\n}\n","[\n { \"code\": \"AD\", \"name\": \"Andorra\" },\n { \"code\": \"AE\", \"name\": \"United Arab Emirates\" },\n { \"code\": \"AF\", \"name\": \"Afghanistan\" },\n { \"code\": \"AG\", \"name\": \"Antigua and Barbuda\" },\n { \"code\": \"AI\", \"name\": \"Anguilla\" },\n { \"code\": \"AL\", \"name\": \"Albania\" },\n { \"code\": \"AM\", \"name\": \"Armenia\" },\n { \"code\": \"AO\", \"name\": \"Angola\" },\n { \"code\": \"AQ\", \"name\": \"Antarctica\" },\n { \"code\": \"AR\", \"name\": \"Argentina\" },\n { \"code\": \"AS\", \"name\": \"American Samoa\" },\n { \"code\": \"AT\", \"name\": \"Austria\" },\n { \"code\": \"AU\", \"name\": \"Australia\" },\n { \"code\": \"AW\", \"name\": \"Aruba\" },\n { \"code\": \"AX\", \"name\": \"Åland Islands\" },\n { \"code\": \"AZ\", \"name\": \"Azerbaijan\" },\n { \"code\": \"BA\", \"name\": \"Bosnia and Herzegovina\" },\n { \"code\": \"BB\", \"name\": \"Barbados\" },\n { \"code\": \"BD\", \"name\": \"Bangladesh\" },\n { \"code\": \"BE\", \"name\": \"Belgium\" },\n { \"code\": \"BF\", \"name\": \"Burkina Faso\" },\n { \"code\": \"BG\", \"name\": \"Bulgaria\" },\n { \"code\": \"BH\", \"name\": \"Bahrain\" },\n { \"code\": \"BI\", \"name\": \"Burundi\" },\n { \"code\": \"BJ\", \"name\": \"Benin\" },\n { \"code\": \"BL\", \"name\": \"Saint Barthélemy\" },\n { \"code\": \"BM\", \"name\": \"Bermuda\" },\n { \"code\": \"BN\", \"name\": \"Brunei Darussalam\" },\n { \"code\": \"BO\", \"name\": \"Bolivia, Plurinational State of\" },\n { \"code\": \"BQ\", \"name\": \"Bonaire, Sint Eustatius and Saba\" },\n { \"code\": \"BR\", \"name\": \"Brazil\" },\n { \"code\": \"BS\", \"name\": \"Bahamas\" },\n { \"code\": \"BT\", \"name\": \"Bhutan\" },\n { \"code\": \"BV\", \"name\": \"Bouvet Island\" },\n { \"code\": \"BW\", \"name\": \"Botswana\" },\n { \"code\": \"BY\", \"name\": \"Belarus\" },\n { \"code\": \"BZ\", \"name\": \"Belize\" },\n { \"code\": \"CA\", \"name\": \"Canada\" },\n { \"code\": \"CC\", \"name\": \"Cocos (Keeling) Islands\" },\n { \"code\": \"CD\", \"name\": \"Congo, Democratic Republic of the\" },\n { \"code\": \"CF\", \"name\": \"Central African Republic\" },\n { \"code\": \"CG\", \"name\": \"Congo\" },\n { \"code\": \"CH\", \"name\": \"Switzerland\" },\n { \"code\": \"CI\", \"name\": \"Côte d'Ivoire\" },\n { \"code\": \"CK\", \"name\": \"Cook Islands\" },\n { \"code\": \"CL\", \"name\": \"Chile\" },\n { \"code\": \"CM\", \"name\": \"Cameroon\" },\n { \"code\": \"CN\", \"name\": \"China\" },\n { \"code\": \"CO\", \"name\": \"Colombia\" },\n { \"code\": \"CR\", \"name\": \"Costa Rica\" },\n { \"code\": \"CU\", \"name\": \"Cuba\" },\n { \"code\": \"CV\", \"name\": \"Cabo Verde\" },\n { \"code\": \"CW\", \"name\": \"Curaçao\" },\n { \"code\": \"CX\", \"name\": \"Christmas Island\" },\n { \"code\": \"CY\", \"name\": \"Cyprus\" },\n { \"code\": \"CZ\", \"name\": \"Czechia\" },\n { \"code\": \"DE\", \"name\": \"Germany\" },\n { \"code\": \"DJ\", \"name\": \"Djibouti\" },\n { \"code\": \"DK\", \"name\": \"Denmark\" },\n { \"code\": \"DM\", \"name\": \"Dominica\" },\n { \"code\": \"DO\", \"name\": \"Dominican Republic\" },\n { \"code\": \"DZ\", \"name\": \"Algeria\" },\n { \"code\": \"EC\", \"name\": \"Ecuador\" },\n { \"code\": \"EE\", \"name\": \"Estonia\" },\n { \"code\": \"EG\", \"name\": \"Egypt\" },\n { \"code\": \"EH\", \"name\": \"Western Sahara\" },\n { \"code\": \"ER\", \"name\": \"Eritrea\" },\n { \"code\": \"ES\", \"name\": \"Spain\" },\n { \"code\": \"ET\", \"name\": \"Ethiopia\" },\n { \"code\": \"FI\", \"name\": \"Finland\" },\n { \"code\": \"FJ\", \"name\": \"Fiji\" },\n { \"code\": \"FK\", \"name\": \"Falkland Islands (Malvinas)\" },\n { \"code\": \"FM\", \"name\": \"Micronesia, Federated States of\" },\n { \"code\": \"FO\", \"name\": \"Faroe Islands\" },\n { \"code\": \"FR\", \"name\": \"France\" },\n { \"code\": \"GA\", \"name\": \"Gabon\" },\n { \"code\": \"GB\", \"name\": \"United Kingdom of Great Britain and Northern Ireland\" },\n { \"code\": \"GD\", \"name\": \"Grenada\" },\n { \"code\": \"GE\", \"name\": \"Georgia\" },\n { \"code\": \"GF\", \"name\": \"French Guiana\" },\n { \"code\": \"GG\", \"name\": \"Guernsey\" },\n { \"code\": \"GH\", \"name\": \"Ghana\" },\n { \"code\": \"GI\", \"name\": \"Gibraltar\" },\n { \"code\": \"GL\", \"name\": \"Greenland\" },\n { \"code\": \"GM\", \"name\": \"Gambia\" },\n { \"code\": \"GN\", \"name\": \"Guinea\" },\n { \"code\": \"GP\", \"name\": \"Guadeloupe\" },\n { \"code\": \"GQ\", \"name\": \"Equatorial Guinea\" },\n { \"code\": \"GR\", \"name\": \"Greece\" },\n { \"code\": \"GS\", \"name\": \"South Georgia and the South Sandwich Islands\" },\n { \"code\": \"GT\", \"name\": \"Guatemala\" },\n { \"code\": \"GU\", \"name\": \"Guam\" },\n { \"code\": \"GW\", \"name\": \"Guinea-Bissau\" },\n { \"code\": \"GY\", \"name\": \"Guyana\" },\n { \"code\": \"HK\", \"name\": \"Hong Kong\" },\n { \"code\": \"HM\", \"name\": \"Heard Island and McDonald Islands\" },\n { \"code\": \"HN\", \"name\": \"Honduras\" },\n { \"code\": \"HR\", \"name\": \"Croatia\" },\n { \"code\": \"HT\", \"name\": \"Haiti\" },\n { \"code\": \"HU\", \"name\": \"Hungary\" },\n { \"code\": \"ID\", \"name\": \"Indonesia\" },\n { \"code\": \"IE\", \"name\": \"Ireland\" },\n { \"code\": \"IL\", \"name\": \"Israel\" },\n { \"code\": \"IM\", \"name\": \"Isle of Man\" },\n { \"code\": \"IN\", \"name\": \"India\" },\n { \"code\": \"IO\", \"name\": \"British Indian Ocean Territory\" },\n { \"code\": \"IQ\", \"name\": \"Iraq\" },\n { \"code\": \"IR\", \"name\": \"Iran, Islamic Republic of\" },\n { \"code\": \"IS\", \"name\": \"Iceland\" },\n { \"code\": \"IT\", \"name\": \"Italy\" },\n { \"code\": \"JE\", \"name\": \"Jersey\" },\n { \"code\": \"JM\", \"name\": \"Jamaica\" },\n { \"code\": \"JO\", \"name\": \"Jordan\" },\n { \"code\": \"JP\", \"name\": \"Japan\" },\n { \"code\": \"KE\", \"name\": \"Kenya\" },\n { \"code\": \"KG\", \"name\": \"Kyrgyzstan\" },\n { \"code\": \"KH\", \"name\": \"Cambodia\" },\n { \"code\": \"KI\", \"name\": \"Kiribati\" },\n { \"code\": \"KM\", \"name\": \"Comoros\" },\n { \"code\": \"KN\", \"name\": \"Saint Kitts and Nevis\" },\n { \"code\": \"KP\", \"name\": \"Korea, Democratic People's Republic of\" },\n { \"code\": \"KR\", \"name\": \"Korea, Republic of\" },\n { \"code\": \"KW\", \"name\": \"Kuwait\" },\n { \"code\": \"KY\", \"name\": \"Cayman Islands\" },\n { \"code\": \"KZ\", \"name\": \"Kazakhstan\" },\n { \"code\": \"LA\", \"name\": \"Lao People's Democratic Republic\" },\n { \"code\": \"LB\", \"name\": \"Lebanon\" },\n { \"code\": \"LC\", \"name\": \"Saint Lucia\" },\n { \"code\": \"LI\", \"name\": \"Liechtenstein\" },\n { \"code\": \"LK\", \"name\": \"Sri Lanka\" },\n { \"code\": \"LR\", \"name\": \"Liberia\" },\n { \"code\": \"LS\", \"name\": \"Lesotho\" },\n { \"code\": \"LT\", \"name\": \"Lithuania\" },\n { \"code\": \"LU\", \"name\": \"Luxembourg\" },\n { \"code\": \"LV\", \"name\": \"Latvia\" },\n { \"code\": \"LY\", \"name\": \"Libya\" },\n { \"code\": \"MA\", \"name\": \"Morocco\" },\n { \"code\": \"MC\", \"name\": \"Monaco\" },\n { \"code\": \"MD\", \"name\": \"Moldova, Republic of\" },\n { \"code\": \"ME\", \"name\": \"Montenegro\" },\n { \"code\": \"MF\", \"name\": \"Saint Martin, (French part)\" },\n { \"code\": \"MG\", \"name\": \"Madagascar\" },\n { \"code\": \"MH\", \"name\": \"Marshall Islands\" },\n { \"code\": \"MK\", \"name\": \"North Macedonia\" },\n { \"code\": \"ML\", \"name\": \"Mali\" },\n { \"code\": \"MM\", \"name\": \"Myanmar\" },\n { \"code\": \"MN\", \"name\": \"Mongolia\" },\n { \"code\": \"MO\", \"name\": \"Macao\" },\n { \"code\": \"MP\", \"name\": \"Northern Mariana Islands\" },\n { \"code\": \"MQ\", \"name\": \"Martinique\" },\n { \"code\": \"MR\", \"name\": \"Mauritania\" },\n { \"code\": \"MS\", \"name\": \"Montserrat\" },\n { \"code\": \"MT\", \"name\": \"Malta\" },\n { \"code\": \"MU\", \"name\": \"Mauritius\" },\n { \"code\": \"MV\", \"name\": \"Maldives\" },\n { \"code\": \"MW\", \"name\": \"Malawi\" },\n { \"code\": \"MX\", \"name\": \"Mexico\" },\n { \"code\": \"MY\", \"name\": \"Malaysia\" },\n { \"code\": \"MZ\", \"name\": \"Mozambique\" },\n { \"code\": \"NA\", \"name\": \"Namibia\" },\n { \"code\": \"NC\", \"name\": \"New Caledonia\" },\n { \"code\": \"NE\", \"name\": \"Niger\" },\n { \"code\": \"NF\", \"name\": \"Norfolk Island\" },\n { \"code\": \"NG\", \"name\": \"Nigeria\" },\n { \"code\": \"NI\", \"name\": \"Nicaragua\" },\n { \"code\": \"NL\", \"name\": \"Netherlands\" },\n { \"code\": \"NO\", \"name\": \"Norway\" },\n { \"code\": \"NP\", \"name\": \"Nepal\" },\n { \"code\": \"NR\", \"name\": \"Nauru\" },\n { \"code\": \"NU\", \"name\": \"Niue\" },\n { \"code\": \"NZ\", \"name\": \"New Zealand\" },\n { \"code\": \"OM\", \"name\": \"Oman\" },\n { \"code\": \"PA\", \"name\": \"Panama\" },\n { \"code\": \"PE\", \"name\": \"Peru\" },\n { \"code\": \"PF\", \"name\": \"French Polynesia\" },\n { \"code\": \"PG\", \"name\": \"Papua New Guinea\" },\n { \"code\": \"PH\", \"name\": \"Philippines\" },\n { \"code\": \"PK\", \"name\": \"Pakistan\" },\n { \"code\": \"PL\", \"name\": \"Poland\" },\n { \"code\": \"PM\", \"name\": \"Saint Pierre and Miquelon\" },\n { \"code\": \"PN\", \"name\": \"Pitcairn\" },\n { \"code\": \"PR\", \"name\": \"Puerto Rico\" },\n { \"code\": \"PS\", \"name\": \"Palestine, State of\" },\n { \"code\": \"PT\", \"name\": \"Portugal\" },\n { \"code\": \"PW\", \"name\": \"Palau\" },\n { \"code\": \"PY\", \"name\": \"Paraguay\" },\n { \"code\": \"QA\", \"name\": \"Qatar\" },\n { \"code\": \"RE\", \"name\": \"Réunion\" },\n { \"code\": \"RO\", \"name\": \"Romania\" },\n { \"code\": \"RS\", \"name\": \"Serbia\" },\n { \"code\": \"RU\", \"name\": \"Russian Federation\" },\n { \"code\": \"RW\", \"name\": \"Rwanda\" },\n { \"code\": \"SA\", \"name\": \"Saudi Arabia\" },\n { \"code\": \"SB\", \"name\": \"Solomon Islands\" },\n { \"code\": \"SC\", \"name\": \"Seychelles\" },\n { \"code\": \"SD\", \"name\": \"Sudan\" },\n { \"code\": \"SE\", \"name\": \"Sweden\" },\n { \"code\": \"SG\", \"name\": \"Singapore\" },\n { \"code\": \"SH\", \"name\": \"Saint Helena, Ascension and Tristan da Cunha\" },\n { \"code\": \"SI\", \"name\": \"Slovenia\" },\n { \"code\": \"SJ\", \"name\": \"Svalbard and Jan Mayen\" },\n { \"code\": \"SK\", \"name\": \"Slovakia\" },\n { \"code\": \"SL\", \"name\": \"Sierra Leone\" },\n { \"code\": \"SM\", \"name\": \"San Marino\" },\n { \"code\": \"SN\", \"name\": \"Senegal\" },\n { \"code\": \"SO\", \"name\": \"Somalia\" },\n { \"code\": \"SR\", \"name\": \"Suriname\" },\n { \"code\": \"SS\", \"name\": \"South Sudan\" },\n { \"code\": \"ST\", \"name\": \"Sao Tome and Principe\" },\n { \"code\": \"SV\", \"name\": \"El Salvador\" },\n { \"code\": \"SX\", \"name\": \"Sint Maarten, (Dutch part)\" },\n { \"code\": \"SY\", \"name\": \"Syrian Arab Republic\" },\n { \"code\": \"SZ\", \"name\": \"Eswatini\" },\n { \"code\": \"TC\", \"name\": \"Turks and Caicos Islands\" },\n { \"code\": \"TD\", \"name\": \"Chad\" },\n { \"code\": \"TF\", \"name\": \"French Southern Territories\" },\n { \"code\": \"TG\", \"name\": \"Togo\" },\n { \"code\": \"TH\", \"name\": \"Thailand\" },\n { \"code\": \"TJ\", \"name\": \"Tajikistan\" },\n { \"code\": \"TK\", \"name\": \"Tokelau\" },\n { \"code\": \"TL\", \"name\": \"Timor-Leste\" },\n { \"code\": \"TM\", \"name\": \"Turkmenistan\" },\n { \"code\": \"TN\", \"name\": \"Tunisia\" },\n { \"code\": \"TO\", \"name\": \"Tonga\" },\n { \"code\": \"TR\", \"name\": \"Türkiye\" },\n { \"code\": \"TT\", \"name\": \"Trinidad and Tobago\" },\n { \"code\": \"TV\", \"name\": \"Tuvalu\" },\n { \"code\": \"TW\", \"name\": \"Taiwan, Province of China\" },\n { \"code\": \"TZ\", \"name\": \"Tanzania, United Republic of\" },\n { \"code\": \"UA\", \"name\": \"Ukraine\" },\n { \"code\": \"UG\", \"name\": \"Uganda\" },\n { \"code\": \"UM\", \"name\": \"United States Minor Outlying Islands\" },\n { \"code\": \"US\", \"name\": \"United States of America\" },\n { \"code\": \"UY\", \"name\": \"Uruguay\" },\n { \"code\": \"UZ\", \"name\": \"Uzbekistan\" },\n { \"code\": \"VA\", \"name\": \"Holy See\" },\n { \"code\": \"VC\", \"name\": \"Saint Vincent and the Grenadines\" },\n { \"code\": \"VE\", \"name\": \"Venezuela, Bolivarian Republic of\" },\n { \"code\": \"VG\", \"name\": \"Virgin Islands, British\" },\n { \"code\": \"VI\", \"name\": \"Virgin Islands, U.S.\" },\n { \"code\": \"VN\", \"name\": \"Viet Nam\" },\n { \"code\": \"VU\", \"name\": \"Vanuatu\" },\n { \"code\": \"WF\", \"name\": \"Wallis and Futuna\" },\n { \"code\": \"WS\", \"name\": \"Samoa\" },\n { \"code\": \"YE\", \"name\": \"Yemen\" },\n { \"code\": \"YT\", \"name\": \"Mayotte\" },\n { \"code\": \"ZA\", \"name\": \"South Africa\" },\n { \"code\": \"ZM\", \"name\": \"Zambia\" },\n { \"code\": \"ZW\", \"name\": \"Zimbabwe\" }\n]\n","'use strict';\n\nvar data = require('./data.json');\n\n/** Precompute name and code lookups. */\nvar nameMap = {};\nvar codeMap = {};\ndata.forEach(mapCodeAndName);\nfunction mapCodeAndName(country) {\n nameMap[country.name.toLowerCase()] = country.code;\n codeMap[country.code.toLowerCase()] = country.name;\n}\nexports.overwrite = function overwrite(countries) {\n if (!countries || !countries.length) return;\n countries.forEach(function (country) {\n var foundIndex = data.findIndex(function (item) {\n return item.code === country.code;\n });\n data[foundIndex] = country;\n mapCodeAndName(country);\n });\n};\nexports.getCode = function getCode(name) {\n return nameMap[name.toLowerCase()];\n};\nexports.getName = function getName(code) {\n return codeMap[code.toLowerCase()];\n};\nexports.getNames = function getNames() {\n return data.map(function (country) {\n return country.name;\n });\n};\nexports.getCodes = function getCodes() {\n return data.map(function (country) {\n return country.code;\n });\n};\nexports.getCodeList = function getCodeList() {\n return codeMap;\n};\nexports.getNameList = function getNameList() {\n return nameMap;\n};\nexports.getData = function getData() {\n return data;\n};","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getName as getCountryNameFromCode } from 'country-list';\nimport { ItemSelectorRowItem } from '../interface';\n\n@Pipe({\n name: 'formatDisabledItem',\n pure: true,\n standalone: false,\n})\nexport class FormatDisabledItemPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(item: ItemSelectorRowItem, countryCode = '', context: Context): string {\n if (item.isSuspended) {\n return this.translateService.instant(this.translationPath(UnavailableItemType.SUSPENDED, context));\n }\n\n if (item.unavailableInCountry) {\n return this.translateService.instant(this.translationPath(UnavailableItemType.COUNTRY_RESTRICTION, context), {\n country: this.formatCountry(countryCode, context),\n });\n }\n\n if (item.isSelected && item.immutable) {\n return this.translateService.instant(this.translationPath(UnavailableItemType.ALREADY_ACTIVE, context));\n }\n\n return this.translateService.instant(this.translationPath(UnavailableItemType.DEFAULT, context));\n }\n\n translationPath(type: UnavailableItemType, context: Context) {\n const base = 'INVENTORY_UI.COMMON.UNAVAILABLE_ITEM';\n const contextPath = context === 'subtext' ? 'SUBTEXT' : 'TOOLTIP';\n return base + '.' + type + '.' + contextPath;\n }\n\n formatCountry(countryCode: string, context: Context) {\n if (context === 'tooltip') {\n return (\n getCountryNameFromCode(countryCode) ??\n this.translateService.instant('INVENTORY_UI.COMMON.UNAVAILABLE_ITEM.COUNTRY_RESTRICTION.COUNTRY_FALLBACK')\n );\n }\n return countryCode;\n }\n}\n\nexport enum UnavailableItemType {\n SUSPENDED = 'SUSPENDED',\n COUNTRY_RESTRICTION = 'COUNTRY_RESTRICTION',\n ALREADY_ACTIVE = 'ALREADY_ACTIVE',\n DEFAULT = 'DEFAULT',\n}\n\ntype Context = 'tooltip' | 'subtext';\n","import {\n Component,\n computed,\n effect,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n signal,\n SimpleChanges,\n untracked,\n ViewChild,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox';\nimport { EditionsApiService } from '@galaxy/marketplace-apps/v1';\nimport { TranslateService } from '@ngx-translate/core';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyDataSource, TableContentHeaderComponent } from '@vendasta/galaxy/table';\nimport { GalaxyColumnDef } from '@vendasta/galaxy/table/src/table.interface';\nimport {\n AppPricingApiService,\n ItemsApiService,\n ItemType,\n ListActivatableItemsSortField,\n ListActivatableItemsSortOptions,\n OrderFormFilter,\n PartnerApiService,\n SortDirection,\n} from '@vendasta/marketplace-apps';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { LineItem, LineItemCacheService } from '../services/line-item-cache.service';\nimport {\n ItemSelectorConfig,\n ItemSelectorFilters,\n ItemSelectorRowItem,\n ItemSelectorState,\n SelectedItem,\n SelectionChange,\n SelectionChangeEventType,\n} from './interface';\nimport { ITEMS_SELECTOR_COLUMNS } from './item-selector-columns';\nimport { ItemSelectorServiceV2, SelectionEvent, SelectionOptions } from './item-selector-v2.service';\nimport { ItemSelectorDataSource } from './item-selector.data-source';\nimport { convertRowItemToSelectedItem } from './util/item';\n\n@Component({\n selector: 'inventory-ui-item-selector',\n templateUrl: './item-selector.component.html',\n styleUrls: ['./item-selector.component.scss'],\n providers: [{ provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } }],\n standalone: false,\n})\nexport class ItemSelectorComponent implements OnInit, OnChanges, OnDestroy {\n readonly ItemType = ItemType;\n readonly PopoverPositions = PopoverPositions;\n\n @Input() config?: ItemSelectorConfig;\n protected configuration: Required = DEFAULT_CONFIG;\n\n @Input() dependenciesLoading = false;\n\n @Input() set selectedItems(value: SelectedItem[]) {\n this.itemSelectorServiceV2.initSelectedItems(value);\n }\n\n @Input() set immutableSelectedItems(value: SelectedItem[]) {\n this.itemSelectorServiceV2.initImmutableSelectedItems(value);\n }\n\n @Input() set availableItems(value: SelectedItem[]) {\n this.itemSelectorServiceV2.initAvailableItems(value);\n }\n\n @Output() selectionChange: EventEmitter = new EventEmitter();\n\n @ViewChild('tableHeader') tableHeader!: TableContentHeaderComponent;\n columns: GalaxyColumnDef[] = ITEMS_SELECTOR_COLUMNS;\n dataSource!: ItemSelectorDataSource;\n tableDataSource!: GalaxyDataSource;\n\n private sortOptions$$ = new BehaviorSubject(\n new ListActivatableItemsSortOptions({\n sortField: ListActivatableItemsSortField.LIST_ACTIVATABLE_ITEMS_SORT_FIELD_DEFAULT_NAME,\n sortDirection: SortDirection.ASCENDING,\n }),\n );\n\n private immutableSelectedItems$ = toObservable(this.itemSelectorServiceV2.immutableSelectedItems);\n private selectedItems$ = toObservable(this.itemSelectorServiceV2.selectedItems);\n\n private state = signal({\n itemType: 'products',\n requiredItem: null,\n showAddons: true,\n showUnavailableItems: false,\n });\n\n private filters = computed(() => {\n const state = this.state();\n\n return {\n itemTypes: calculateItemTypes(state.itemType, state.showAddons),\n includeSuspended: state.showUnavailableItems,\n requiredItemId: requiredItemFilter(state.itemType, state.requiredItem),\n country: state.showUnavailableItems ? '' : this.configuration.country,\n hasOrderForm: this.configuration.hideItemsWithOrderForms\n ? OrderFormFilter.ORDER_FORM_FILTER_NO_ORDER_FORM\n : OrderFormFilter.ORDER_FORM_FILTER_UNSPECIFIED,\n };\n });\n\n public showAddons = computed(() => this.state().showAddons);\n public requiredItem = computed(() => this.state().requiredItem);\n public showUnavailableItems = computed(() => this.state().showUnavailableItems);\n public itemType = computed(() => this.state().itemType);\n public itemTypeTranslationKey = computed(() => {\n const itemType = this.itemType();\n switch (itemType) {\n case 'products': {\n return 'INVENTORY_UI.COMMON.ITEM_TYPE.PRODUCTS';\n }\n case 'packages': {\n return 'INVENTORY_UI.COMMON.ITEM_TYPE.PACKAGES';\n }\n default: {\n return 'INVENTORY_UI.COMMON.ITEM_TYPE.ALL_ITEMS';\n }\n }\n });\n\n constructor(\n private itemsApiService: ItemsApiService,\n private appPricingApiService: AppPricingApiService,\n private itemSelectorServiceV2: ItemSelectorServiceV2,\n private editionsService: EditionsApiService,\n private partnerApiService: PartnerApiService,\n private lineItemCacheService: LineItemCacheService,\n private confirmationModalService: OpenConfirmationModalService,\n private translateService: TranslateService,\n private snackbarService: SnackbarService,\n ) {\n effect(() => {\n this.updateTableFilters();\n });\n\n effect(() => {\n const selectedItems = this.itemSelectorServiceV2.selectedItems();\n if (this.configuration?.businessId) {\n const lineItems: LineItem[] =\n selectedItems.map((selectedItem) => {\n const editionId = selectedItem.type === 'app' ? selectedItem.edition?.editionId : undefined;\n return {\n itemId: selectedItem.itemId,\n editionId: editionId,\n itemType: selectedItem.type,\n quantity: selectedItem.quantity,\n };\n }) || [];\n this.lineItemCacheService.cacheLineItems(this.configuration.businessId, lineItems);\n }\n });\n\n effect(() => {\n const selectionEvents = this.itemSelectorServiceV2.changeEvents();\n untracked(() => {\n const selectionEvent = selectionEvents[0];\n // Don't emit for duplicate item events\n if (selectionEvent?.eventSource === 'conflict-duplicate-item' && selectionEvent?.eventType === 'deselected') {\n return;\n }\n // Emit all other events, but only show snackbar for dependency events\n if (selectionEvent?.updatedItems?.length) {\n this.emitSelectionChanges(selectionEvent);\n }\n if (selectionEvent?.eventSource === 'user') {\n return;\n }\n\n this.notifyUserOfChanges(selectionEvent);\n });\n });\n }\n\n ngOnInit(): void {\n this.dataSource = new ItemSelectorDataSource(\n this.itemsApiService,\n this.appPricingApiService,\n this.editionsService,\n this.sortOptions$$.asObservable(),\n this.itemSelectorServiceV2,\n this.immutableSelectedItems$,\n this.selectedItems$,\n this.configuration,\n this.partnerApiService,\n );\n this.tableDataSource = new GalaxyDataSource(this.dataSource);\n this.setupColumns();\n this.updateTableFilters();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.config) {\n const config = changes.config.currentValue as ItemSelectorConfig;\n this.configuration = {\n ...DEFAULT_CONFIG,\n ...config,\n };\n if (config?.itemTypesAvailable?.length) {\n this.setItemType(config.itemTypesAvailable[0]);\n }\n }\n }\n\n ngOnDestroy(): void {\n this.itemSelectorServiceV2.clearSelection();\n }\n\n setupColumns() {\n const hideRetailColumn = (column: GalaxyColumnDef) => column.id === 'retail' && this.config?.hideRetail;\n const hideWholesaleColumn = (column: GalaxyColumnDef) => column.id === 'wholesale' && this.config?.hideWholesale;\n\n this.columns = this.columns.filter((column) => !hideRetailColumn(column) && !hideWholesaleColumn(column));\n }\n\n updateTableFilters(): void {\n const filters = this.filters();\n this.tableDataSource?.setFilters([filters]);\n }\n\n handleSelectionChange(selected: boolean, rowItem: ItemSelectorRowItem): void {\n rowItem.quantity = selected ? 1 : 0;\n const selectedItem = convertRowItemToSelectedItem(rowItem);\n this.itemSelectorServiceV2.updateSelection(selected, selectedItem, this.selectionOptionsFromConfig());\n }\n\n handleEditionChange(editionId: string, rowItem: ItemSelectorRowItem): void {\n rowItem.editionId = editionId;\n const selectedItem = convertRowItemToSelectedItem(rowItem);\n this.itemSelectorServiceV2.updateItemEdition(selectedItem, this.selectionOptionsFromConfig());\n }\n\n handleQuantityChange(event: Event, rowItem: ItemSelectorRowItem): void {\n rowItem.quantity = (event.target as HTMLInputElement).valueAsNumber;\n const selectedItem = convertRowItemToSelectedItem(rowItem);\n this.itemSelectorServiceV2.updateItemQuantity(selectedItem, this.selectionOptionsFromConfig());\n }\n\n setShowUnavailableItems(value: boolean): void {\n this.state.update((s) => ({ ...s, showUnavailableItems: value }));\n }\n\n setShowAddons(value: boolean): void {\n this.state.update((s) => {\n s.showAddons = value;\n if (!value) {\n s.requiredItem = null;\n }\n return { ...s };\n });\n }\n\n setRequiredItem(item: ItemSelectorRowItem): void {\n this.state.update((s) => ({ ...s, requiredItem: item, showAddons: true }));\n this.tableHeader.setSearchTerm('');\n }\n\n unsetRequiredItem(): void {\n this.state.update((s) => ({ ...s, requiredItem: null }));\n this.tableHeader.setSearchTerm('');\n }\n\n private selectionOptionsFromConfig(): SelectionOptions {\n return {\n partnerId: this.configuration.partnerId,\n marketId: this.configuration.marketId,\n confirmItenComflictResolutionCallback: this.confirmItemConflictResolutionModal.bind(this),\n enforceDependencies: this.configuration.enforceDependencies,\n };\n }\n\n private confirmItemConflictResolutionModal(): Observable {\n return this.confirmationModalService.openModal({\n title: this.translateService.instant('INVENTORY_UI.ITEM_SELECTOR.CONFLICT_RESOLUTION_MODAL.TITLE'),\n message: this.translateService.instant('INVENTORY_UI.ITEM_SELECTOR.CONFLICT_RESOLUTION_MODAL.MESSAGE'),\n confirmButtonText: this.translateService.instant('INVENTORY_UI.COMMON.ACTIONS.ADD_TO_ORDER'),\n type: 'confirm',\n });\n }\n\n private formatItemNames(selectedItems: SelectedItem[], includeEditions = true): string {\n return selectedItems\n .map((si) => {\n let name = si.name;\n if (si.type === 'app' && includeEditions && si.edition?.name) {\n name = `${si.name} | ${si.edition.name}`;\n }\n return name;\n })\n .join(', ');\n }\n\n private emitSelectionChanges(selectionEvent: SelectionEvent): void {\n selectionEvent.updatedItems.forEach((updatedItem) => {\n this.selectionChange.emit({\n selectedItems: this.itemSelectorServiceV2.selectedItems(),\n updatedItem: updatedItem,\n eventType:\n selectionEvent.eventType === 'selected'\n ? SelectionChangeEventType.SELECTED\n : SelectionChangeEventType.DESELECTED,\n });\n });\n }\n\n setItemType(type: 'products' | 'packages') {\n this.state.update((s) => ({ ...s, itemType: type, requiredItem: null }));\n }\n\n private notifyUserOfChanges(selectionEvent: SelectionEvent): void {\n switch (selectionEvent?.eventSource) {\n case 'dependency-selection-change':\n this.showSelectionChangeNotification(selectionEvent);\n break;\n case 'dependency-edition-change':\n this.showEditionChangeNotification(selectionEvent);\n break;\n case 'dependency-unavailable':\n this.snackbarService.openErrorSnack('INVENTORY_UI.ITEM_SELECTOR.DEPENDENCIES.REQUIRED_ITEMS_UNAVAILABLE');\n break;\n }\n }\n\n private showSelectionChangeNotification(selectionEvent: SelectionEvent): void {\n const translation =\n selectionEvent.eventType === 'selected'\n ? 'INVENTORY_UI.ITEM_SELECTOR.DEPENDENCIES.SELECTION_NOTIFICATION'\n : 'INVENTORY_UI.ITEM_SELECTOR.DEPENDENCIES.REMOVAL_NOTIFICATION';\n const notification = this.translateService.instant(translation, {\n itemNames: this.formatItemNames(selectionEvent.updatedItems),\n });\n this.snackbarService.openSuccessSnack(notification);\n }\n\n private showEditionChangeNotification(selectionEvent: SelectionEvent): void {\n if (selectionEvent.eventType !== 'deselected' || !selectionEvent.triggerItem) {\n return;\n }\n\n const translation = 'INVENTORY_UI.ITEM_SELECTOR.DEPENDENCIES.REMOVAL_DUE_TO_EDITION_CHANGE';\n const notification = this.translateService.instant(translation, {\n affectedItemNames: this.formatItemNames(selectionEvent.updatedItems),\n triggerItemName: this.formatItemNames([selectionEvent.triggerItem], false),\n });\n this.snackbarService.openSuccessSnack(notification);\n }\n}\n\nexport const DEFAULT_CONFIG: Required = {\n partnerId: '',\n pageSize: 15,\n country: '',\n priceType: 'generic',\n marketId: '',\n businessId: '',\n hideOwnerName: false,\n hideWholesale: false,\n hideRetail: false,\n hideQuantity: false,\n hideItemsWithOrderForms: false,\n itemTypesAvailable: ['products'],\n enforceDependencies: false,\n};\n\nfunction calculateItemTypes(itemType: 'products' | 'packages' | 'allItems', showAddons: boolean) {\n let itemTypes = [ItemType.ITEM_TYPE_APP, ItemType.ITEM_TYPE_PACKAGE];\n\n if (itemType === 'packages') {\n return [ItemType.ITEM_TYPE_PACKAGE];\n }\n if (itemType === 'products') {\n itemTypes = [ItemType.ITEM_TYPE_APP];\n }\n\n if (showAddons) {\n itemTypes.push(ItemType.ITEM_TYPE_ADDON);\n }\n\n return itemTypes;\n}\n\nfunction requiredItemFilter(itemType: 'products' | 'packages' | 'allItems', requiredItem: ItemSelectorRowItem | null) {\n if (itemType === 'packages') {\n return '';\n }\n\n return requiredItem?.itemId ?? '';\n}\n","\n \n
1\" filter-button class=\"filter-toggle\">\n \n \n {{ 'INVENTORY_UI.COMMON.ITEM_TYPE.PRODUCTS' | translate }}\n \n \n {{ 'INVENTORY_UI.COMMON.ITEM_TYPE.PACKAGES' | translate }}\n \n \n
\n\n
\n \n {{ 'INVENTORY_UI.ITEM_SELECTOR.SHOW_ADDONS' | translate }}\n \n\n \n {{ 'INVENTORY_UI.ITEM_SELECTOR.SHOW_UNAVAILABLE' | translate }}\n \n
\n\n
\n \n Add-ons: {{ requiredItem()?.sellerWhitelabelName ?? requiredItem()?.defaultName ?? requiredItem()?.itemId }}\n \n \n
\n \n\n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n
\n
\n\n \n
\n \n \n \n\n \n \n \n \n {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.NAME' | translate }}\n \n
\n \n
\n
\n
\n {{ item?.sellerWhitelabelName ?? item?.defaultName }}\n
\n
\n \n \n
\n
\n\n
\n \n \n \n \n \n {{ item | formatProductType }}\n \n \n \n {{\n 'INVENTORY_UI.ITEM_SELECTOR.ITEM_TYPE_BY_OWNER'\n | translate: { itemType: item | formatProductType, owner: item.ownerName }\n }}\n \n
\n\n
\n {{ item | formatDisabledItem: configuration.country : 'subtext' }}\n
\n\n \n 1\"\n (mouseleave)=\"productRequirementPopover.isOpen = false\"\n [glxyPopover]=\"productRequirementPopover\"\n >\n {{ item | formatProductRequirement }}\n
\n\n \n

{{ 'INVENTORY_UI.ITEM_SELECTOR.REQUIRED_ITEMS_LABEL' | translate }}

\n
    \n
  • \n {{ requiredItem.name }}\n
  • \n
\n
\n \n 0\"\n data-cy=\"addon-filter-chip\"\n (click)=\"setRequiredItem(item)\"\n [trackEvent]=\"{\n eventName: 'item-selector-view-addons',\n category: 'chip',\n action: 'click'\n }\"\n >\n {{ 'INVENTORY_UI.ITEM_SELECTOR.VIEW_ADDONS' | translate }}\n \n
\n \n
\n {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.QUANTITY' | translate }}\n \n \n \n \n \n {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.WHOLESALE' | translate }}\n \n \n \n \n \n {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.RETAIL' | translate }}\n \n \n \n \n
\n\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { InventoryItem } from '../../common/inventory-item';\nimport { ItemSelectorConfig, SelectedItem } from '../interface';\nimport { ItemSelectorServiceV2 } from '../item-selector-v2.service';\n\n@Component({\n templateUrl: './item-selector-dialog.component.html',\n styleUrl: './item-selector-dialog.component.scss',\n standalone: false,\n})\nexport class ItemSelectorDialogComponent {\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: ItemSelectorDialogData,\n private itemSelectorService: ItemSelectorServiceV2,\n ) {}\n\n onSelect() {\n const selectedItems = this.itemSelectorService.selectedItems();\n this.dialogRef.close({ selectedItems: selectedItems });\n }\n}\n\ninterface ItemSelectorDialogData {\n config: ItemSelectorConfig;\n selectedItems: SelectedItem[];\n immutableSelectedItems: InventoryItem[];\n availableItems: InventoryItem[];\n}\n","

{{ 'INVENTORY_UI.COMMON.ACTIONS.ADD_ITEMS' | translate }}

\n\n
\n \n
\n
\n\n \n \n\n","import { computed, Injectable, Signal, signal, WritableSignal } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { Observable } from 'rxjs';\nimport { filter, map, shareReplay, startWith, switchMap, take } from 'rxjs/operators';\nimport { ActiveItemsService } from '../active-items/active-items.service';\nimport { InventoryItemWithPricing } from '../common/inventory-item';\nimport { InventoryListItem } from '../common/item-list/type';\nimport { ItemRow } from '../common/item-pricing-table-base';\nimport { CreateLineItemFromItemRow, LineItemPricingEqual } from '../common/item-pricing-table-base/line-item';\nimport { ItemDependencyService } from '../services/item-dependency.service';\nimport { DurationInterface } from '@vendasta/sales-orders/';\n\nexport type ChangedInventoryItem = InventoryItemWithPricing & { index: number };\n\nexport interface BillingTermCallbackOutput {\n startDate: Date;\n endDate?: Date;\n addAnotherTerm?: boolean;\n nonBillable?: boolean;\n duration?: DurationInterface;\n}\n\nexport type BillingTermCallbackFn = (editing?: boolean) => Observable;\n\nexport interface ItemsChangedEvent {\n items: ChangedInventoryItem[];\n type: ItemsChangedEventType;\n source: 'user' | 'dependency';\n}\n\nexport type ItemsChangedEventType = 'add' | 'update' | 'overwrite' | 'delete';\nexport type ItemChangedEventSource = 'user' | 'dependency';\n\ntype ServiceConfig = {\n partnerId: string;\n marketId: string;\n businessId: string;\n enforceDependencies: boolean;\n currencyOverride: string;\n};\n\n@Injectable()\nexport class ItemPricingTableService {\n private _config = signal({\n partnerId: '',\n marketId: '',\n businessId: '',\n currencyOverride: '',\n enforceDependencies: false,\n });\n\n private _items: WritableSignal = signal([]);\n items: Signal = this._items.asReadonly();\n private _events: WritableSignal = signal([]);\n events: Signal = this._events.asReadonly();\n\n latestEvent = computed(() => {\n const events = this.events();\n const latestEvent = events?.length ? events[events.length - 1] : null;\n if (latestEvent) {\n this.eventHandler(latestEvent);\n }\n return latestEvent;\n });\n activeItems: Signal;\n\n constructor(\n private activeItemsService: ActiveItemsService,\n private dependencyService: ItemDependencyService,\n ) {\n const config$ = toObservable(this._config);\n const activeItems$ = config$.pipe(\n filter((config) => Boolean(config.partnerId && config.marketId && config.businessId)),\n switchMap((config) => {\n return this.activeItemsService.getCurrentlyActiveItems(config.partnerId, config.businessId, config.marketId);\n }),\n startWith([]),\n shareReplay(1),\n );\n this.activeItems = toSignal(activeItems$);\n }\n\n setConfig(config: ServiceConfig): void {\n this._config.set(config);\n }\n\n initItems(items: InventoryItemWithPricing[]): void {\n if (!items?.length) {\n return;\n }\n\n this._items.set(items);\n }\n\n overwriteItems(items: InventoryItemWithPricing[]): void {\n const changedItems = items.map((item, index) => ({ ...item, index }));\n this.updateItems(() => items, changedItems, 'overwrite');\n }\n\n private eventHandler(event: ItemsChangedEvent): void {\n // Prevent chain reaction of dependency events\n if (event.source === 'dependency') return;\n\n if (event.type === 'delete' && this._config().enforceDependencies) {\n this.removeItemsWithMissingDependencies(this.items());\n }\n }\n\n addItems(newItems: InventoryItemWithPricing[]): void {\n if (!newItems?.length) {\n return;\n }\n\n let lastItemIndex = this._items().length - 1;\n const changedItems = newItems.map((item) => {\n lastItemIndex += 1;\n return { ...item, index: lastItemIndex };\n });\n this.updateItems((items) => items.concat(newItems), changedItems, 'add');\n }\n\n addItemAtIndex(newItem: InventoryItemWithPricing, index: number): void {\n const nItems = this._items().length;\n if (!this.isItemIndexValid(index) && index !== nItems) {\n return;\n }\n\n this.updateItems(\n (items) => {\n items.splice(index, 0, newItem);\n return items;\n },\n [{ ...newItem, index }],\n 'add',\n );\n }\n\n setItemMatchingRow(changedItem: InventoryItemWithPricing, itemRow: ItemRow): void {\n const index = itemRow.index ?? -1;\n if (!this.isItemIndexValid(index)) {\n return;\n }\n\n this.updateItems(\n (items) => {\n items[index] = changedItem;\n return items;\n },\n [{ ...changedItem, index }],\n 'update',\n );\n }\n\n setItemsMatchingRows(changedItems: InventoryItemWithPricing[], itemRows: ItemRow[]): void {\n if (changedItems.length !== itemRows.length) {\n return;\n }\n\n this.updateItems(\n (items) => {\n changedItems.forEach((changedItem, i) => {\n const itemRow = itemRows[i];\n const index = itemRow.index ?? -1;\n if (!this.isItemIndexValid(index)) {\n return;\n }\n\n items[index] = changedItem;\n });\n return items;\n },\n changedItems.map((changedItem, i) => {\n const itemRow = itemRows[i];\n return {\n ...changedItem,\n pricing: CreateLineItemFromItemRow(itemRow, this._config().currencyOverride),\n index: itemRow.index ?? -1,\n quantity: itemRow.quantity,\n };\n }),\n 'update',\n );\n }\n\n removeItemMatchingRow(itemRow: ItemRow): void {\n const index = itemRow.index ?? -1;\n if (!this.isItemIndexValid(index)) {\n return;\n }\n\n const changedItem = this.getItemWithIndex(index);\n this.updateItems(\n (items) => {\n items.splice(index, 1);\n return items;\n },\n [changedItem],\n 'delete',\n );\n }\n\n removeItems(itemIds: string[], source: ItemChangedEventSource = 'user'): void {\n const items = this._items();\n const changedItems: ChangedInventoryItem[] = [];\n items.forEach((item, index) => {\n if (itemIds.includes(item.itemId)) {\n changedItems.push({ ...item, index });\n }\n });\n if (!changedItems.length) {\n return;\n }\n this.updateItems((items) => items.filter((item) => !itemIds.includes(item.itemId)), changedItems, 'delete', source);\n }\n\n removeItemsWithMissingDependencies(items: InventoryItemWithPricing[]): void {\n this.dependencyService\n .listMissingRequirementsForItems(\n this._config().partnerId,\n this._config().marketId,\n items,\n items.concat(this.activeItems()),\n )\n .pipe(\n map((missingRequirements) => Array.from(missingRequirements.keys())),\n take(1),\n )\n .subscribe((itemsMissingRequirements) => {\n this.removeItems(itemsMissingRequirements, 'dependency');\n });\n }\n\n addNewBillingTermForItemMatchingRow(itemRow: ItemRow, billingTermCallback: BillingTermCallbackFn): void {\n const index = itemRow.index ?? -1;\n if (!this.isItemIndexValid(index)) {\n return;\n }\n\n const item = this.getItemWithIndex(index);\n const itemCopy = structuredClone(item);\n const indexForCopy = index + 1;\n billingTermCallback().subscribe((output) => {\n if (!output) {\n return;\n }\n\n if (!itemCopy.pricing) itemCopy.pricing = {};\n if (!itemCopy.pricing.billingPeriod) itemCopy.pricing.billingPeriod = {};\n itemCopy.pricing.billingPeriod.startDate = output.startDate;\n itemCopy.pricing.billingPeriod.endDate = output.endDate ?? undefined;\n itemCopy.pricing.billingPeriod.duration = output.duration ?? undefined;\n itemCopy.pricing.nonBillable = output.nonBillable;\n\n this.addItemAtIndex(itemCopy, indexForCopy);\n\n if (output.addAnotherTerm) {\n const itemRowCopy = structuredClone(itemRow);\n itemRowCopy.index = indexForCopy;\n this.addNewBillingTermForItemMatchingRow(itemRowCopy, billingTermCallback);\n }\n });\n }\n\n editBillingTermForItemMatchingRow(itemRow: ItemRow, billingTermCallback: BillingTermCallbackFn): void {\n const index = itemRow.index ?? -1;\n if (!this.isItemIndexValid(index)) {\n return;\n }\n\n const item = this.getItemWithIndex(index);\n billingTermCallback(true).subscribe((output) => {\n if (!output) {\n return;\n }\n\n this.setItemMatchingRow(\n {\n ...item,\n pricing: {\n ...item.pricing,\n billingPeriod: {\n startDate: output.startDate,\n endDate: output.endDate ?? undefined,\n duration: output.duration ?? undefined,\n },\n nonBillable: output.nonBillable,\n },\n },\n itemRow,\n );\n\n if (output.addAnotherTerm) {\n this.addNewBillingTermForItemMatchingRow(itemRow, billingTermCallback);\n }\n });\n }\n\n updateItemsWithPricing(itemRows: ItemRow[]): void {\n if (!itemRows?.length) {\n return;\n }\n const items = this._items();\n const changedItems: InventoryItemWithPricing[] = [];\n const changedRows: ItemRow[] = [];\n items.forEach((item, index) => {\n const itemRow = itemRows[index];\n const lineItem = CreateLineItemFromItemRow(itemRow, this._config().currencyOverride);\n if (!LineItemPricingEqual(item.pricing, lineItem)) {\n item.pricing = lineItem;\n changedItems.push(item);\n changedRows.push(itemRow);\n }\n });\n if (!changedItems.length || !changedRows.length) {\n return;\n }\n this.setItemsMatchingRows(changedItems, changedRows);\n }\n\n updateItemsCurrency(currency: string): void {\n const items = this._items();\n const changedItems: ChangedInventoryItem[] = [];\n items.forEach((item, index) => {\n const newItem = { ...item };\n if (newItem?.pricing?.currencyCode && newItem.pricing.currencyCode !== currency) {\n newItem.pricing.currencyCode = currency;\n changedItems.push({ ...newItem, index });\n }\n });\n if (!changedItems.length) {\n return;\n }\n return this.updateItems(\n (items) => {\n return items;\n },\n changedItems,\n 'update',\n );\n }\n\n private isItemIndexValid(index: number): boolean {\n return index >= 0 && index < this._items().length;\n }\n\n private getItemWithIndex(index: number): ChangedInventoryItem {\n const item = this._items()[index];\n return {\n ...item,\n index,\n };\n }\n\n private updateItems(\n updateFn: UpdateItemsFn,\n changedItems: ChangedInventoryItem[],\n eventType: ItemsChangedEventType,\n eventSource: ItemChangedEventSource = 'user',\n ): void {\n // Create a new array because change detection doesn't detect a change to an array's items, only the reference.\n this._items.update((items) => [...updateFn(items)]);\n this._events.update((events) => [...events, { items: changedItems, type: eventType, source: eventSource }]);\n }\n}\n\ntype UpdateItemsFn = (items: InventoryItemWithPricing[]) => InventoryItemWithPricing[];\n","import {\n afterRenderEffect,\n Component,\n effect,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n Signal,\n SimpleChanges,\n untracked,\n ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { map, take } from 'rxjs/operators';\nimport {\n BillingTermDialogComponent,\n BillingTermDialogInput,\n} from '../billing-term-dialog/billing-term-dialog.component';\nimport { galaxyFrequencyToRevenuePeriod } from '../billing-term-dialog/sales-to-galaxy-frequency.pipe';\nimport { InventoryItemWithPricing } from '../common/inventory-item';\nimport { InventoryListItem } from '../common/item-list/type';\nimport { ItemPricingTableBaseComponent, ItemRow, ItemRowChangeEvent } from '../common/item-pricing-table-base';\nimport { ItemSelectorDialogComponent } from '../item-selector/item-selector-dialog/item-selector-dialog.component';\nimport { ItemPricingTableConfig } from './interface';\nimport { BillingTermCallbackFn, ItemPricingTableService, ItemsChangedEvent } from './item-pricing-table.service';\n\nexport const ITEM_PRICING_TABLE_SELECTOR_PROVIDERS = [ItemPricingTableService];\n\n@Component({\n selector: 'inventory-ui-item-pricing-table',\n templateUrl: './item-pricing-table.component.html',\n styleUrl: './item-pricing-table.component.scss',\n providers: [ITEM_PRICING_TABLE_SELECTOR_PROVIDERS],\n standalone: false,\n})\nexport class ItemPricingTableComponent implements OnChanges {\n private _config?: ItemPricingTableConfig;\n get config(): ItemPricingTableConfig | undefined {\n return this._config;\n }\n\n @Input()\n set config(config: Omit) {\n this._config = {\n ...config,\n selectionEditable: config.canAddItems,\n };\n }\n\n @Input()\n set selectedItems(items: InventoryItemWithPricing[]) {\n this.service.initItems(items);\n }\n\n @Input() viewOnly = false;\n @Input() currencyOverride = '';\n @Input() showRetailFrequencySuffix = false;\n @Output() itemsChanged = new EventEmitter();\n @Output() validityChanged = new EventEmitter();\n @Output() wholesaleTotalChanged = new EventEmitter();\n\n @ViewChild('itemPricingTable') itemPricingTable!: ItemPricingTableBaseComponent;\n\n items: Signal;\n activeItems: Signal;\n\n constructor(\n private service: ItemPricingTableService,\n private dialog: MatDialog,\n private translateService: TranslateService,\n private snackbarService: SnackbarService,\n ) {\n this.items = this.service.items;\n this.activeItems = this.service.activeItems;\n\n afterRenderEffect({\n write: () => {\n if (this.itemPricingTable) {\n const ptItems = this.itemPricingTable.getItems();\n untracked(() => this.service.updateItemsWithPricing(ptItems));\n }\n },\n });\n\n effect(() => {\n const latestEvent = this.service.latestEvent();\n if (latestEvent) {\n this.notifyUserOfChanges(latestEvent);\n this.itemsChanged.emit(latestEvent);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const currencyChanged = changes?.currencyOverride?.currentValue !== changes?.currencyOverride?.previousValue;\n if (changes?.config?.currentValue !== changes?.config?.previousValue || currencyChanged) {\n const partnerId = this.config?.partnerId ?? '';\n const marketId = this.config?.marketId ?? '';\n const businessId = this.config?.businessId ?? '';\n const enforceDependencies = this.config?.enforceDependencies ?? false;\n this.service.setConfig({\n partnerId,\n marketId,\n businessId,\n currencyOverride: this.currencyOverride,\n enforceDependencies: enforceDependencies,\n });\n\n if (currencyChanged) {\n this.service.updateItemsCurrency(this.currencyOverride);\n }\n }\n }\n\n onAddItems(): void {\n this.dialog\n .open(ItemSelectorDialogComponent, {\n data: {\n config: this.config,\n selectedItems: this.items(),\n immutableSelectedItems: this.activeItems(),\n availableItems: this.items().concat(this.activeItems()),\n },\n width: '1000px',\n maxWidth: '95vw',\n height: '900px',\n minHeight: '420px',\n maxHeight: '85vh',\n })\n .afterClosed()\n .pipe(\n map((output) => output?.selectedItems ?? []),\n take(1),\n )\n .subscribe((newItems) => {\n if (newItems.length > 0) {\n this.service.overwriteItems(newItems);\n }\n });\n }\n\n onUpdatedItemRow(changeEvent: ItemRowChangeEvent): void {\n const itemRow = changeEvent.item;\n switch (changeEvent.action) {\n case 'add':\n this.service.addItems([itemRow]);\n break;\n case 'delete':\n this.service.removeItemMatchingRow(itemRow);\n break;\n case 'add-billing-term':\n this.service.addNewBillingTermForItemMatchingRow(itemRow, this.openBillingTermDialog(itemRow));\n break;\n case 'edit-billing-term':\n this.service.editBillingTermForItemMatchingRow(itemRow, this.openBillingTermDialog(itemRow));\n break;\n }\n }\n\n onValid(valid: boolean): void {\n this.validityChanged.emit(valid);\n }\n\n onWholesaleTotal(total: number): void {\n this.wholesaleTotalChanged.emit(total);\n }\n\n private openBillingTermDialog(itemRow: ItemRow): BillingTermCallbackFn {\n return (editing?: boolean) => {\n let billingTerm = itemRow.billingTerm;\n if (!editing) {\n billingTerm = undefined;\n }\n return this.dialog\n .open(BillingTermDialogComponent, {\n data: {\n itemId: itemRow.itemId,\n name: itemRow.name,\n editionName: itemRow.type === 'app' ? (itemRow.edition?.name ?? undefined) : undefined,\n iconUrl: itemRow.iconUrl,\n revenueComponent: {\n revenue: itemRow.retailPricing.total,\n period: galaxyFrequencyToRevenuePeriod(itemRow.retailPricing.frequency),\n },\n startDate: billingTerm?.startDate,\n endDate: billingTerm?.endDate,\n contractStartDate: this.config?.billingTermsConfig?.defaultStartDate,\n canAddAnotherTerm: this.config?.canAddItems && itemRow.isMultiactivatable,\n nonBillable: itemRow.pricing?.nonBillable,\n canEditInvoices: this.config?.canEditInvoices,\n canScheduleActivations: this.config?.canScheduleActivations,\n duration: billingTerm?.duration,\n } as BillingTermDialogInput,\n maxWidth: '90vw',\n maxHeight: '90vh',\n width: '500px',\n })\n .afterClosed()\n .pipe(take(1));\n };\n }\n\n private notifyUserOfChanges(changeEvent: ItemsChangedEvent): void {\n // ItemSelectorComponent handles adding dependencies and notifying the user\n if (changeEvent.type === 'delete' && changeEvent.source === 'dependency') {\n const translation = 'INVENTORY_UI.ITEM_SELECTOR.DEPENDENCIES.REMOVAL_NOTIFICATION';\n const notification = this.translateService.instant(translation, {\n itemNames: changeEvent.items.map((item) => item.name).join(', '),\n });\n this.snackbarService.openSuccessSnack(notification);\n }\n }\n}\n","@if (config) {\n \n @if (config?.canAddItems && !viewOnly) {\n
\n \n
\n }\n}\n","{\n \"INVENTORY_UI\": {\n \"COMMON\": {\n \"ACTIONS\": {\n \"ADD_ITEMS\": \"Add items\",\n \"ADD_TO_ORDER\": \"Add to order\",\n \"CANCEL\": \"Cancel\",\n \"CLEAR\": \"Clear\",\n \"REMOVE\": \"Remove\",\n \"SELECT\": \"Select\",\n \"SAVE\": \"Save\"\n },\n \"ITEM_TYPE\": {\n \"PRODUCT\": \"Product\",\n \"PRODUCTS\": \"Products\",\n \"SERVICE\": \"Service\",\n \"SERVICES\": \"Services\",\n \"PACKAGE\": \"Package\",\n \"PACKAGES\": \"Packages\",\n \"ALL_ITEMS\": \"All items\"\n },\n \"UNAVAILABLE_ITEM\": {\n \"SUSPENDED\": {\n \"SUBTEXT\": \"Unavailable\",\n \"TOOLTIP\": \"This item has been suspended, and is no longer available for new orders\"\n },\n \"COUNTRY_RESTRICTION\": {\n \"SUBTEXT\": \"Unavailable in {{country}}\",\n \"TOOLTIP\": \"Unavailable to customers located in {{country}}\",\n \"COUNTRY_FALLBACK\": \"your country\"\n },\n \"ALREADY_ACTIVE\": {\n \"SUBTEXT\": \"Already active\",\n \"TOOLTIP\": \"This item is already active\"\n },\n \"DEFAULT\": {\n \"SUBTEXT\": \"Unavailable\",\n \"TOOLTIP\": \"This item is not available\"\n }\n }\n },\n \"ACTIVE_ITEMS\": {\n \"TITLE\": \"Active items\",\n \"NO_ACTIVE_ITEMS\": \"No active items\",\n \"STATUS\": {\n \"ACTIVE\": \"Active\",\n \"CANCELED\": \"Canceled\",\n \"PENDING\": \"Pending\",\n \"DEMO\": \"Demo\",\n \"DEMO_EXPIRED\": \"Demo expired\"\n }\n },\n \"ITEM_SELECTOR\": {\n \"SHOW_UNAVAILABLE\": \"Show unavailable\",\n \"SHOW_ADDONS\": \"Show add-ons\",\n \"COLUMN\": {\n \"NAME\": \"Name\",\n \"QUANTITY\": \"Quantity\",\n \"WHOLESALE\": \"Wholesale\",\n \"RETAIL\": \"Retail\"\n },\n \"REQUIRED_ITEMS_LABEL\": \"Required items to be active\",\n \"ITEM_TYPE_BY_OWNER\": \"{{itemType}} by {{owner}}\",\n \"CONFLICT_RESOLUTION_MODAL\": {\n \"TITLE\": \"Add to order?\",\n \"MESSAGE\": \"One or more products in this package are already selected or active. Add the remaining products to this order?\"\n },\n \"DEPENDENCIES\": {\n \"SELECTION_NOTIFICATION\": \"{{itemNames}} selected as well\",\n \"REMOVAL_NOTIFICATION\": \"{{itemNames}} removed as well\",\n \"REMOVAL_DUE_TO_EDITION_CHANGE\": \"{{affectedItemNames}} removed because required edition of {{triggerItemName}} changed\",\n \"REQUIRED_ITEMS_UNAVAILABLE\": \"Missing required items — Contact an administrator to ensure that all requirements are available for this item\"\n },\n \"VIEW_ADDONS\": \"View add-ons\"\n },\n \"ITEM_SEARCH_SELECT_FILTER\": {\n \"LABEL\": \"Select item\",\n \"ADDON_LABEL\": \"Select add-on\",\n \"PRODUCT_LABEL\": \"Select product\",\n \"SEARCH\": \"Search\"\n },\n \"ITEM_SELECTION_CART\": {\n \"TITLE\": \"Selected items\",\n \"NO_ITEMS_SELECTED\": \"No item selected\",\n \"CLEAR_ALL_CONFIRMATION_MODAL\": {\n \"TITLE\": \"Clear selected items?\",\n \"MESSAGE\": \"This action cannot be undone.\"\n },\n \"REMOVE_ITEM_CONFIRMATION_MODAL\": {\n \"TITLE\": \"Remove item?\",\n \"MESSAGE\": \"This will also remove the {{parentItemName}} package from this order. The rest of its contents will stay on this order, but this may change the total retail price of the order.\"\n }\n },\n \"ITEM_PRICING_TABLE\": {\n \"COLUMNS\": {\n \"ITEM\": \"Item\",\n \"QUANTITY\": \"Quantity\",\n \"WHOLESALE\": \"Wholesale\",\n \"RETAIL\": \"Retail\",\n \"FREQUENCY\": \"Frequency\",\n \"RETAIL_TOTAL\": \"Retail total\"\n },\n \"ACTION_MENU\": {\n \"ADD_SETUP_FEE\": \"Add setup fee\",\n \"RESET_TO_DEFAULT\": \"Reset to default\",\n \"REMOVE_ITEM\": \"Remove item\",\n \"EDIT_BILLING_TERMS\": \"Edit billing terms\",\n \"ADD_BILLING_TERMS\": \"Add billing terms\",\n \"EDIT_BILLING_FREQUENCY\": \"Edit retail billing frequency\"\n },\n \"FOOTER\": {\n \"TOTALS\": \"Totals\",\n \"WHOLESALE\": \"Wholesale\",\n \"RETAIL\": \"Retail\"\n },\n \"ORIGINAL_PRICE_HINT\": \"Original price: \",\n \"AUTOMATICALLY_RENEW\": \"Automatically renews\"\n },\n \"BILLING_FREQUENCY\": {\n \"ONE_TIME\": \"One time\",\n \"MONTHLY\": \"Monthly\",\n \"YEARLY\": \"Yearly\"\n },\n \"EDIT_BILLING_TERMS_DIALOG\": {\n \"TITLE\": \"Edit billing terms\",\n \"FORM\": {\n \"START_DATE\": \"Start date\",\n \"ESTIMATED_END_DATE\": \"Estimated end date: {{estimatedEndDate}}\",\n \"NOT_APPLICABLE\": \"N/A\",\n \"TERM_LENGTH\": \"Term length\",\n \"BILLING_TERMS\": \"Billing terms\",\n \"FIXED_TERM\": \"Fixed number of payments\",\n \"INDEFINITE_TERM\": \"Automatically renew until cancelled\",\n \"BILLING_FREQUENCY_ONE_TIME\": \"one-time\",\n \"BILLING_FREQUENCY_MONTH\": \"month\",\n \"BILLING_FREQUENCY_MONTHS\": \"months\",\n \"BILLING_FREQUENCY_YEAR\": \"year\",\n \"BILLING_FREQUENCY_YEARS\": \"years\",\n \"INCLUDE_IN_INVOICES\": \"Include in invoices\",\n \"INCLUDE_IN_INVOICES_HINT\": \"When turned off, the subscription created for this item will not be included in invoices\"\n }\n },\n \"BILLING_PERIOD\": {\n \"START_DATE_ONE_MONTH\": \"{{startDate}} (1 month)\",\n \"START_DATE_MANY_MONTHS\": \"{{startDate}} ({{numPeriods}} months)\",\n \"START_DATE_ONE_YEAR\": \"{{startDate}} (1 year)\",\n \"START_DATE_MANY_YEARS\": \"{{startDate}} ({{numPeriods}} years)\",\n \"ONE_MONTH\": \"1 month\",\n \"MANY_MONTHS\": \"{{numPeriods}} months\",\n \"ONE_YEAR\": \"1 year\",\n \"MANY_YEARS\": \"{{numPeriods}} years\",\n \"SAVE_AND_ADD_ANOTHER_TERM\": \"Save and add another term\"\n },\n \"EDIT_RETAIL_BILLING_FREQUENCY_DIALOG\": {\n \"TITLE\": \"Edit retail billing frequency\",\n \"RETAIL_BILLING_FREQUENCY\": \"Retail billing frequency\"\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport En from './assets/en_devel.json';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/inventory',\n baseTranslation: En,\n }),\n ],\n})\nexport class InventoryUiI18nModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BillingUiModule } from '@vendasta/billing-ui';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { GalaxyTableModule } from '@vendasta/galaxy/table';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { ProductAnalyticsModule } from '@vendasta/product-analytics';\nimport { ItemCommonModule } from '../common/item-common.module';\nimport { InventoryUiI18nModule } from '../i18n/inventory-ui-i18n.module';\nimport { PackageContentsPopoverModule } from '../common/package-contents-popover/package-contents-popover.module';\nimport { ItemConflictService } from '../services/item-conflict.service';\nimport { ItemDependencyService } from '../services/item-dependency.service';\nimport { LineItemCacheService } from '../services/line-item-cache.service';\nimport { ItemSelectorServiceV2 } from './item-selector-v2.service';\nimport { ItemSelectorComponent } from './item-selector.component';\nimport { FormatDisabledItemPipe } from './pipes/format-disabled-item.pipe';\nimport { FormatProductRequirementPipe } from './pipes/format-product-requirement.pipe';\nimport { FormatProductTypePipe } from './pipes/format-product-type.pipe';\nimport { IsItemDisabledPipe } from './pipes/is-item-disabled.pipe';\nimport { ParseWholesaleCurrencyPipe } from './pipes/parse-wholesale-currency.pipe';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\n\nconst MAT_MODULES = [\n MatButtonModule,\n MatButtonToggleModule,\n MatCheckboxModule,\n MatChipsModule,\n MatIconModule,\n MatInputModule,\n MatMenuModule,\n MatSelectModule,\n MatTableModule,\n MatTooltipModule,\n FormsModule,\n];\n\nconst GALAXY_MODULES = [\n GalaxyTableModule,\n GalaxyAvatarModule,\n GalaxyInputModule,\n GalaxyFormFieldModule,\n GalaxyLoadingSpinnerModule,\n GalaxyPopoverModule,\n GalaxyTooltipModule,\n GalaxyBadgeModule,\n];\n\nexport const ITEM_SELECTOR_MODULE_IMPORTS = [\n ...MAT_MODULES,\n ...GALAXY_MODULES,\n BillingUiModule,\n CommonModule,\n InventoryUiI18nModule,\n ItemCommonModule,\n ProductAnalyticsModule,\n PackageContentsPopoverModule,\n TranslateModule,\n];\n\nexport const ITEM_SELECTOR_MODULE_DECLARATIONS = [\n ItemSelectorComponent,\n FormatProductTypePipe,\n FormatProductRequirementPipe,\n ParseWholesaleCurrencyPipe,\n IsItemDisabledPipe,\n FormatDisabledItemPipe,\n];\n\nexport const ITEM_SELECTOR_MODULE_PROVIDERS = [\n ItemSelectorServiceV2,\n LineItemCacheService,\n ItemConflictService,\n ItemDependencyService,\n];\n\n@NgModule({\n imports: ITEM_SELECTOR_MODULE_IMPORTS,\n exports: [ItemSelectorComponent],\n declarations: ITEM_SELECTOR_MODULE_DECLARATIONS,\n providers: ITEM_SELECTOR_MODULE_PROVIDERS,\n})\nexport class ItemSelectorModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItemSelectorModule } from '../item-selector.module';\nimport { ItemSelectorDialogComponent } from './item-selector-dialog.component';\n\nexport const ITEM_SELECTOR_DIALOG_MODULE_IMPORTS = [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n ItemSelectorModule,\n LexiconModule,\n TranslateModule,\n];\nexport const ITEM_SELECTOR_DIALOG_MODULE_DECLARATIONS = [ItemSelectorDialogComponent];\n\n@NgModule({\n imports: ITEM_SELECTOR_DIALOG_MODULE_IMPORTS,\n exports: [ItemSelectorDialogComponent],\n declarations: ITEM_SELECTOR_DIALOG_MODULE_DECLARATIONS,\n})\nexport class ItemSelectorDialogModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItemSelectorDialogModule } from '../item-selector/item-selector-dialog/item-selector-dialog.module';\nimport { ItemPricingTableComponent } from './item-pricing-table.component';\nimport { ItemPricingTableBaseModule } from '../common/item-pricing-table-base';\n\nexport const ITEM_PRICING_TABLE_IMPORTS = [\n CommonModule,\n ItemSelectorDialogModule,\n MatButtonModule,\n LexiconModule,\n TranslateModule,\n ItemPricingTableBaseModule,\n];\nexport const ITEM_PRICING_TABLE_DECLARATIONS = [ItemPricingTableComponent];\n\n@NgModule({\n imports: ITEM_PRICING_TABLE_IMPORTS,\n exports: [ItemPricingTableComponent],\n declarations: ITEM_PRICING_TABLE_DECLARATIONS,\n})\nexport class ItemPricingTableModule {}\n","export * from '../common/item-pricing-table-base';\nexport { ItemPricingTableConfig } from './interface';\nexport { ItemPricingTableComponent } from './item-pricing-table.component';\nexport { ItemPricingTableModule } from './item-pricing-table.module';\nexport { ItemsChangedEvent } from './item-pricing-table.service';\n","import { BehaviorSubject, combineLatest, merge, Observable, of, Subject } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport {\n AppKey,\n AppType,\n FieldMask,\n GetMultiAppRequest,\n ItemsApiService,\n ItemType,\n ListActivatableItemsRequest,\n ListActivatableItemsResponse,\n PartnerApiService,\n SortDirection,\n} from '@vendasta/marketplace-apps';\nimport { Config, SelectedDropdownItem, TemplateState } from './interface';\nimport { debounceTime, map, scan, startWith, switchMap, tap, withLatestFrom } from 'rxjs/operators';\n\nconst MARKETPLACE_APPS_FALL_BACK_MARKET_ID = 'all-markets-default-fallback';\n\n@Injectable()\nexport class ItemSearchSelectFilterService {\n _selectedItems: SelectedDropdownItem[] = [];\n _selectionUpdated$$ = new BehaviorSubject(null);\n _triggerLoadMore$$ = new BehaviorSubject(null);\n _pagingInfo$$ = new BehaviorSubject<{ cursor: string; hasMore: boolean }>({ cursor: '', hasMore: true });\n _clearItemList$$ = new Subject();\n\n get selectedItems(): SelectedDropdownItem[] {\n return this._selectedItems || [];\n }\n\n constructor(\n private readonly appPartnerService: PartnerApiService,\n private readonly itemsApiService: ItemsApiService,\n ) {}\n\n init(searchControl$: Observable, config: Config, singleSelect: boolean): Observable {\n const loadMore$ = this._triggerLoadMore$$.asObservable();\n const searchTerm$ = searchControl$.pipe(\n debounceTime(250),\n startWith(''),\n tap(() => {\n this._pagingInfo$$.next({ cursor: '', hasMore: true });\n this._clearItemList$$.next();\n }),\n );\n\n const nextActivatableItems$ = combineLatest([loadMore$, searchTerm$]).pipe(\n debounceTime(10),\n withLatestFrom(this._pagingInfo$$.asObservable()),\n switchMap(([[, searchTerm], pagingInfo]) => this.listActivatableItems(config, searchTerm, pagingInfo.cursor)),\n tap((resp) => this._pagingInfo$$.next({ cursor: resp.nextCursor, hasMore: resp.hasMore })),\n map(this.parseListItemsResponse),\n );\n\n const scanAddFn = this.buildScanFn(config, singleSelect);\n const scanClearFn = () => () => [] as SelectedDropdownItem[];\n const addItemsToList$ = nextActivatableItems$.pipe(map(scanAddFn));\n const clearItemList$ = this._clearItemList$$.asObservable().pipe(map(scanClearFn));\n\n const itemList$: Observable = merge(addItemsToList$, clearItemList$).pipe(\n scan((acc, scanInnerFn) => scanInnerFn(acc), [] as SelectedDropdownItem[]),\n );\n\n const selectedItems$ = this._selectionUpdated$$\n .asObservable()\n .pipe(switchMap(() => (singleSelect ? this.setItemName(config) : of(this.selectedItems))));\n\n return combineLatest([selectedItems$, itemList$]).pipe(\n map(([selectedItems, availableItems]) => {\n return { initialized: true, selectedItems, availableItems };\n }),\n startWith({ initialized: false, selectedItems: [], availableItems: [] }),\n );\n }\n\n updateSelection(selectedItems: SelectedDropdownItem[]): void {\n this._selectedItems = selectedItems;\n this._selectionUpdated$$.next(null);\n }\n\n buildScanFn(config: Config, singleSelect: boolean) {\n return (value: SelectedDropdownItem[]) => (acc: SelectedDropdownItem[]) => {\n if (acc.length === 0 && singleSelect) {\n acc = config.customDropdownItems ? [...config.customDropdownItems] : [];\n }\n return [...acc, ...value];\n };\n }\n\n triggerLoadMore(): void {\n this._triggerLoadMore$$.next(null);\n }\n\n setItemName(config: Config): Observable {\n const selectedItem = this.selectedItems?.[0];\n if (!selectedItem || isCustomItem(selectedItem, config)) {\n const wildcardSelectedItem = config.customDropdownItems ? [...config.customDropdownItems] : [];\n this._selectedItems = wildcardSelectedItem;\n return of(wildcardSelectedItem);\n }\n if (selectedItem?.name) {\n return of([selectedItem]);\n }\n return this.hyrdateItemName(selectedItem, config);\n }\n\n private hyrdateItemName(selectedItem: SelectedDropdownItem, config: Config) {\n const fieldMask = new FieldMask({\n paths: ['AppID', 'Name', 'Type'],\n });\n const appKey = new AppKey({ appId: selectedItem.addonId || selectedItem.appId });\n const marketIdWithFallback = config.marketId ? config.marketId : MARKETPLACE_APPS_FALL_BACK_MARKET_ID;\n // since the List API is paged, any existing selections need to be looked up to display info (eg name)\n const request = new GetMultiAppRequest({\n projectionFilter: fieldMask,\n appKeys: [appKey],\n partnerId: config.partnerId,\n marketId: marketIdWithFallback,\n includeNotEnabled: true,\n });\n return this.appPartnerService.getMultiApp(request).pipe(\n map((resp) => {\n return resp.apps.map((app) => {\n const selectedItem: SelectedDropdownItem = {\n appId: app.key.appId,\n name: app.sharedMarketingInformation.name,\n };\n if (app.appType === AppType.APP_TYPE_ADDON) {\n selectedItem.appId = app.parentRequirements?.parentDetails?.key?.appId;\n selectedItem.addonId = app.key.appId;\n }\n return selectedItem;\n });\n }),\n tap((items) => {\n this._selectedItems = items;\n }),\n );\n }\n\n parseListItemsResponse(response: ListActivatableItemsResponse): SelectedDropdownItem[] {\n return (response.activatableItemSummaries || []).map((item) => {\n const selectedItem: SelectedDropdownItem = {\n appId: item.itemId,\n name: item.sellerWhitelabelName ? item.sellerWhitelabelName : item.defaultName,\n };\n if (item.itemType === ItemType.ITEM_TYPE_ADDON) {\n selectedItem.addonId = item.itemId;\n selectedItem.appId = item.requiredItems[0].itemId;\n }\n return selectedItem;\n });\n }\n\n listActivatableItems(config: Config, searchTerm: string, cursor: string): Observable {\n const request = new ListActivatableItemsRequest({\n sellerId: config.partnerId,\n storeId: config.marketId,\n cursor: cursor,\n pageSize: 25,\n filters: { ...config.filters, searchTerm: searchTerm },\n sortOptions: { sortDirection: SortDirection.ASCENDING },\n });\n return this.itemsApiService.listActivatableItems(request);\n }\n}\n\nfunction isCustomItem(selectedItem: SelectedDropdownItem, config: Config): boolean {\n if (!config.customDropdownItems) return false;\n\n return config.customDropdownItems.some((item) => {\n const itemTypes = config.filters?.itemTypes ?? [];\n const isCustomApp = itemTypes.includes(ItemType.ITEM_TYPE_APP) && item.appId === selectedItem.appId;\n const isCustomAddon = itemTypes.includes(ItemType.ITEM_TYPE_ADDON) && item.addonId === selectedItem.addonId;\n return isCustomApp || isCustomAddon;\n });\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ItemType } from '@vendasta/marketplace-apps';\n\n@Pipe({\n name: 'displayLabelPipe',\n pure: true,\n standalone: false,\n})\nexport class DisplayLabelPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(itemType?: ItemType): string {\n if (itemType === ItemType.ITEM_TYPE_APP) {\n return this.translateService.instant('INVENTORY_UI.ITEM_SEARCH_SELECT_FILTER.PRODUCT_LABEL');\n } else if (itemType === ItemType.ITEM_TYPE_ADDON) {\n return this.translateService.instant('INVENTORY_UI.ITEM_SEARCH_SELECT_FILTER.ADDON_LABEL');\n } else {\n return this.translateService.instant('INVENTORY_UI.ITEM_SEARCH_SELECT_FILTER.LABEL');\n }\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport { SelectedDropdownItem, SingleSelectFilterConfig, SingleSelectTemplateState } from '../interface';\nimport { ItemSearchSelectFilterService } from '../item-search-select-filter.service';\n\n@Component({\n selector: 'inventory-ui-item-search-single-select-filter',\n templateUrl: './item-search-single-select-filter.component.html',\n styleUrls: ['./item-search-single-select-filter.component.scss'],\n providers: [ItemSearchSelectFilterService],\n standalone: false,\n})\nexport class ItemSearchSingleSelectFilterComponent implements OnInit {\n @Input() config: SingleSelectFilterConfig = {\n partnerId: '',\n };\n\n @Input() set selectedItem(value: SelectedDropdownItem | null) {\n if (value && (value.appId || value.addonId)) {\n this.itemSearchSelectFilterService.updateSelection([value]);\n } else {\n this.itemSearchSelectFilterService.updateSelection([]);\n }\n }\n\n @Output() selectionChange: EventEmitter = new EventEmitter();\n\n templateState$!: Observable;\n searchCtrl = new UntypedFormControl('');\n\n constructor(private readonly itemSearchSelectFilterService: ItemSearchSelectFilterService) {}\n\n ngOnInit(): void {\n const searchCtrl$ = this.searchCtrl.valueChanges.pipe(\n filter((term) => typeof term === 'string'),\n map((searchTerm) => searchTerm ?? ''),\n );\n\n this.templateState$ = this.itemSearchSelectFilterService\n .init(searchCtrl$, this.config, true)\n .pipe(map((state) => ({ ...state, selectedItem: state.selectedItems?.[0] || null })));\n }\n\n addItem(event: MatAutocompleteSelectedEvent, selectedItem: SelectedDropdownItem | null): void {\n const newlySelectedItem = event?.option?.value as SelectedDropdownItem;\n if (!newlySelectedItem) return;\n\n const isAlreadySelected =\n selectedItem &&\n selectedItem.appId === newlySelectedItem.appId &&\n selectedItem.addonId === newlySelectedItem.addonId;\n if (isAlreadySelected) return;\n\n this.searchCtrl.setValue('');\n this.itemSearchSelectFilterService.updateSelection([newlySelectedItem]);\n this.selectionChange.emit(newlySelectedItem);\n }\n\n loadMore(): void {\n this.itemSearchSelectFilterService.triggerLoadMore();\n }\n\n displayFn(item: SelectedDropdownItem | null): () => string {\n return () => {\n return item?.name ?? '';\n };\n }\n}\n","\n \n {{ config.filters?.itemType | displayLabelPipe }}\n \n \n \n
\n \n arrow_drop_down\n \n \n
\n {{ appSummary.name }}\n
\n
\n \n \n
\n
\n
\n\n \n
\n \n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { ItemSearchMultiSelectFilterComponent } from './item-search-multi-select-filter/item-search-multi-select-filter.component';\nimport { ItemSearchSingleSelectFilterComponent } from './item-search-single-select-filter/item-search-single-select-filter.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { GalaxyWrapModule } from '@vendasta/galaxy/galaxy-wrap';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { InventoryUiI18nModule } from '../i18n/inventory-ui-i18n.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { DisplayLabelPipe } from './display-label.pipe';\nimport { ItemSearchSelectFilterService } from './item-search-select-filter.service';\n\n@NgModule({\n declarations: [ItemSearchMultiSelectFilterComponent, ItemSearchSingleSelectFilterComponent, DisplayLabelPipe],\n imports: [\n CommonModule,\n MatInputModule,\n MatIconModule,\n MatChipsModule,\n GalaxyInfiniteScrollTriggerModule,\n GalaxyWrapModule,\n GalaxyFormFieldModule,\n InventoryUiI18nModule,\n TranslateModule,\n MatAutocompleteModule,\n ReactiveFormsModule,\n MatFormFieldModule,\n ],\n providers: [ItemSearchSelectFilterService],\n exports: [ItemSearchMultiSelectFilterComponent, ItemSearchSingleSelectFilterComponent],\n})\nexport class ItemSearchSelectFilterModule {}\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiaXRlbS1zZWxlY3Rpb24tY2FydC5pbnRlcmZhY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaXNwbGF5SXRlbSB7XG4gIGl0ZW1JZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgcXVhbnRpdHk/OiBudW1iZXI7XG4gIGVkaXRpb25JZD86IHN0cmluZztcbiAgZWRpdGlvbk5hbWU/OiBzdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ItemCommonModule } from '../common/item-common.module';\nimport { ItemSelectionCartComponent } from './item-selection-cart.component';\n\nexport const ITEM_SELECTION_CART_MODULE_DECLARATIONS = [ItemSelectionCartComponent];\n\nexport const ITEM_SELECTION_CART_MODULE_IMPORTS = [\n CommonModule,\n ItemCommonModule,\n MatButtonModule,\n MatIconModule,\n MatListModule,\n TranslateModule,\n];\n\n@NgModule({\n exports: [ItemSelectionCartComponent],\n declarations: ITEM_SELECTION_CART_MODULE_DECLARATIONS,\n imports: ITEM_SELECTION_CART_MODULE_IMPORTS,\n})\nexport class ItemSelectionCartModule {}\n","import { NgModule } from '@angular/core';\nimport { ItemConflictService } from './item-conflict.service';\nimport { ItemDependencyService } from './item-dependency.service';\nimport { LineItemCacheService } from './line-item-cache.service';\nimport { PackageContentsService } from './package-contents.service';\n\n@NgModule({\n imports: [],\n exports: [],\n declarations: [],\n providers: [LineItemCacheService, ItemConflictService, ItemDependencyService, PackageContentsService],\n})\nexport class ServicesModule {}\n","export * from './lib/active-items/active-items.module';\nexport { ActiveItemsService } from './lib/active-items/active-items.service';\nexport {\n BillingTermDialogComponent,\n BillingTermDialogOutput,\n} from './lib/billing-term-dialog/billing-term-dialog.component';\nexport * from './lib/common/inventory-item';\nexport * from './lib/common/item-common.module';\nexport * from './lib/item-pricing-table';\nexport { SelectedDropdownItem } from './lib/item-search-select-filter/interface';\nexport * from './lib/item-search-select-filter/item-search-select-filter.module';\nexport {\n ItemSelectionCartComponent,\n ItemSelectionCartConfig,\n} from './lib/item-selection-cart/item-selection-cart.component';\nexport * from './lib/item-selection-cart/item-selection-cart.interface';\nexport * from './lib/item-selection-cart/item-selection-cart.module';\nexport {\n ItemSelectorConfig,\n ItemSelectorFilterType,\n SelectedItem,\n SelectionChange,\n SelectionChangeEventType,\n} from './lib/item-selector/interface';\nexport { ItemSelectorServiceV2, SelectionOptions } from './lib/item-selector/item-selector-v2.service';\nexport { ItemSelectorComponent } from './lib/item-selector/item-selector.component';\nexport * from './lib/item-selector/item-selector.module';\nexport { ItemWhitelabelService } from './lib/item-whitelabel/item-whitelabel.service';\nexport { LineItem, LineItemCacheService } from './lib/services/line-item-cache.service';\nexport * from './lib/services/services.module';\n"],"mappings":"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","names":["ActiveItemsService","init_active_items_service","__esmMin","init_core","init_esm","init_operators","init_vendasta_accounts_legacy","init_vendasta_marketplace_apps","constructor","accountsService","inject","AccountsService","partnerMarketplaceService","PartnerApiService","getCurrentlyActiveItems","partnerId","businessId","marketId","appStatuses$","listAppStatuses","items$","pipe","map","appStatuses","appStatus","AppKey","appId","editionId","switchMap","appKeys","getMultiApp","GetMultiAppRequest","includeNotEnabled","projectionFilter","paths","activations$","listActivationsForBusiness","combineLatest","withLatestFrom","resp","activations","apps","appStatusMap","mapify","as","activationsMap","ac","addonId","app","convertToInventoryListItem","get","key","listAppsAndAddonsActivationStatusesForBusiness","filter","checkIfActive","accountDates$","listAccountDates","appActivations$","listActiveProducts","acc","convertAppActivationsToActivations","addonActivations$","appActivations","act","listAddonActivations","responses","length","of","forkJoin","arrays","addonActivations","concat","convertAddonActivationsToActivations","accountDates","activation","mergeActivationsAndDates","list","listResponse","accounts","activeItem","itemId","type","name","iconUrl","quantity","sharedMarketingInformation","editionName","edition","count","status","AppAndAddonActivationStatus","PENDING","CANCELED","isTrial","trial","deactivation","currentTime","Date","trialStatusIsActive","descriptor","activationDescriptor","__spreadProps","__spreadValues","getAppId","now","deactivated","a","activated","account","productId","accountId","isActivated","ACTIVATED","isCancelled","isPending","date","find","item","activationId","getFullYear","pendingDeactivation","array","keyFn","reduce","undefined","set","Map","factory","ɵfac","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","item","editionName","quantity","ɵɵtextInterpolate","subtext","itemId","ɵɵproperty","status","ɵɵpipeBind1","itemStatus","ɵɵelement","ɵɵtemplate","ItemLabelComponent_div_0_span_6_Template","ItemLabelComponent_div_0_span_7_Template","ɵɵprojection","ItemLabelComponent_div_0_span_9_Template","ItemLabelComponent_div_0_span_10_Template","ItemLabelComponent_div_0_span_11_Template","name","iconUrl","showEditionName","showItemId","showStatus","ItemLabelComponent","init_item_label_component","__esmMin","constructor","ngOnInit","statusKey","selectors","inputs","standalone","ngContentSelectors","_c0","decls","vars","consts","template","rf","ctx","ItemLabelComponent_div_0_Template","ɵɵelementContainer","ɵɵelementStart","ɵɵtemplate","ItemListComponent_ng_container_1_ng_container_2_div_1_ng_container_1_Template","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","listItem_r3","ɵɵpureFunction2","_c1","nestedItem_r1","item_r2","ɵɵelementContainerStart","ItemListComponent_ng_container_1_ng_container_2_div_1_Template","nestedItems","ItemListComponent_ng_container_1_ng_container_1_Template","ItemListComponent_ng_container_1_ng_container_2_Template","ɵɵpureFunction1","_c0","length","ɵɵlistener","ɵɵrestoreView","_r4","ctx_r4","ɵɵnextContext","item_r6","item","parentItem_r7","parentItem","isNested_r8","isNested","ctx_r8","ɵɵresetView","removeItem","itemId","ɵɵtext","ɵɵelement","ItemListComponent_ng_template_2_mat_list_item_0_span_3_Template","ɵɵpureFunction6","_c2","name","type","edition","iconUrl","quantity","status","showStatus","removeButtonEnabled","ItemListComponent_ng_template_2_mat_list_item_0_Template","ItemListComponent","init_item_list_component","__esmMin","init_core","constructor","items","itemRemoved","EventEmitter","parentItemId","emit","selectors","inputs","outputs","standalone","decls","vars","consts","template","rf","ctx","ItemListComponent_ng_container_1_Template","ItemListComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelement","ɵɵproperty","items_r1","ɵɵtemplate","ActiveItemsComponent_Conditional_1_Conditional_0_Template","ActiveItemsComponent_Conditional_1_Conditional_1_Template","ɵɵconditional","ctx","length","ActiveItemsComponent","init_active_items_component","__esmMin","init_core","init_active_items_service","constructor","activeItemsService","inject","ActiveItemsService","partnerId","businessId","marketId","hideTitle","ngOnInit","currentlyActiveItems$","getCurrentlyActiveItems","selectors","inputs","standalone","decls","vars","consts","template","rf","ActiveItemsComponent_Conditional_0_Template","ActiveItemsComponent_Conditional_1_Template","tmp_1_0","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtemplate","EditionSelectorComponent_glxy_form_field_0_ng_container_3_ng_container_3_Template","edition_r3","name","isActive","EditionSelectorComponent_glxy_form_field_0_mat_option_5_ng_container_2_Template","edition_r4","editionId","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","handleEditionChange","EditionSelectorComponent_glxy_form_field_0_ng_container_3_Template","EditionSelectorComponent_glxy_form_field_0_mat_option_5_Template","selectedEditionId","ɵɵpipeBind2","editions","EditionSelectorComponent","init_edition_selector_component","__esmMin","init_core","constructor","editionSelectionChange","EventEmitter","event","emit","value","selectors","inputs","outputs","standalone","decls","vars","consts","template","rf","ctx","EditionSelectorComponent_glxy_form_field_0_Template","FindItemEditionPipe","init_find_item_edition_pipe","__esmMin","transform","selectedEditionId","editions","find","edition","editionId","pure","standalone","import_dayjs","FormatBillingPeriodPipe","init_billing_period_pipe","__esmMin","init_common","init_core","init_ngx_translate_core","init_vendasta_sales_orders","constructor","datePipe","inject","DatePipe","translateService","TranslateService","transform","billingPeriod","revenuePeriod","defaultStartDate","startDate","duration","formatDurationBillingPeriod","endDate","dayjs","isSame","isBefore","RevenuePeriod","YEARLY","formatYearlyBillingPeriod","formatMonthlyBillingPeriod","translationProps","numPeriods","value","DurationPeriod","YEAR","instant","numMonths","diff","numYears","pure","standalone","CentsToDollarsPipe","init_cents_to_dollars_pipe","__esmMin","transform","value","pure","standalone","getFrequencyPrices","appPrices","editionId","pricingContext","appPrice","pricesForContexts","priceForEditions","pricesForEditions","currency","getPartnerCurrency","pricesForCurrencies","pricesForFrequencies","calculateUnitPriceFromInstancePrice","instancePrice","setupFee","quantity","total","init_frequency","__esmMin","init_src","init_item_price","__esmMin","init_frequency","resetItemFees","item","fees","length","resetFees","forEach","fee","push","__spreadProps","__spreadValues","retailAmount","retailDefaultAmount","retailAmountTotal","resetItemVariablePrice","wholesalePricing","resetVariablePrice","frequencyPrices","map","price","minimumPrice","total","quantity","parseItemFees","appPrices","editionId","type","edition","undefined","retailFrequencyPrices","getFrequencyPrices","wholesaleFrequencyPrices","setupFee","parseSetupFee","managementFees","parseManagementFees","convertHTMLControlValueToNumber","value","parseFloat","replace","calculateTotalWholesalePrice","items","priceSummary","oneTime","monthly","yearly","currency","addPriceBasedOnFrequency","addFeesBasedOnFrequency","calculateTotalRetailPrice","retailPricing","itemPrice","frequency","Frequency","MONTHLY","YEARLY","priceType","wholesaleTotal","wholesaleAmount","updatePercentageManagementFee","oldWholeSalePrice","amountType","managementFeePercentage","Math","round","wholesalePrice","find","p","calculatePercentageFee","percentage","wholesalePrices","retailPrices","wholesaleSetupFeeTotal","reduce","acc","retailSetupFeeTotal","parseRetailSetupFee","retailDefaultSetupFee","label","ONE_TIME","useDefault","revenueComponents","pricing","currentRevenue","rc","i","isOneTime","period","instancePrice","getDiscountedBasePrice","FeeAmountType","FEE_AMOUNT_TYPE_FIXED","amount","toGalaxyFrequency","FEE_AMOUNT_TYPE_PERCENTAGE","pricingRules","cost","customPrice","init_utils","__esmMin","init_frequency","init_item_price","init_vendasta_marketplace_apps","init_src","PriceValidatorPipe","init_price_validator_pipe","__esmMin","init_forms","init_utils","transform","minimumPrice","validatorFn","Validators","required","errorMessage","control","convertHTMLControlValueToNumber","value","min","pure","standalone","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","monthlyCost","Frequency","MONTHLY","currency","yearlyCost","YEARLY","PriceSummaryDisplayComponent","init_price_summary_display_component","__esmMin","init_core","init_frequency","constructor","priceTotal","signal","oneTime","monthly","yearly","oneTimeCost","computed","selectors","inputs","standalone","decls","vars","consts","template","rf","ctx","ɵɵtemplate","PriceSummaryDisplayComponent_div_2_Template","PriceSummaryDisplayComponent_div_3_Template","ONE_TIME","FormatWholesaleMinimumHintPipe","init_format_wholesale_minimum_hint_pipe","__esmMin","transform","value","pure","standalone","HasSetupFeePipe","init_has_setup_fee_pipe","__esmMin","transform","itemFees","some","fee","type","pure","standalone","IsSetupFeeRemovablePipe","init_is_setup_fee_removable_pipe","__esmMin","transform","fee","type","retailAmount","wholesaleAmount","pure","standalone","revenuePeriodToGalaxyFrequency","value","RevenuePeriod","ONETIME","GalaxyFrequency","ONE_TIME","YEARLY","MONTHLY","galaxyFrequencyToRevenuePeriod","RevenuePeriodToGalaxyFrequency","GalaxyFrequencyToRevenuePeriodPipe","init_sales_to_galaxy_frequency_pipe","__esmMin","init_frequency","init_vendasta_sales_orders","transform","pure","FormatBillingTermPipe","init_format_billing_term_pipe","__esmMin","init_core","init_billing_period_pipe","init_sales_to_galaxy_frequency_pipe","constructor","formatBillingPeriodPipe","inject","FormatBillingPeriodPipe","transform","billingTerm","frequency","defaultStartDate","revenuePeriod","galaxyFrequencyToRevenuePeriod","pure","standalone","ITEM_COMMON_MODULE_IMPORTS","ITEM_COMMON_MODULE_PROVIDERS","ItemCommonModule","init_item_common_module","__esmMin","init_common","init_button","init_chips","init_icon","init_list","init_select","init_src","init_avatar","init_badge","init_form_field","init_edition_selector_component","init_find_item_edition_pipe","init_billing_period_pipe","init_dialog","CommonModule","MatButtonModule","MatChipsModule","MatIconModule","MatListModule","BillingUiModule","GalaxyAvatarModule","GalaxyFormFieldModule","MatSelectModule","GalaxyBadgeModule","MatDialogModule","DatePipe","FormatBillingPeriodPipe","imports","EditionSelectorComponent","NgForOf","NgIf","FormFieldComponent","MatSelect","MatSelectTrigger","MatOption","BadgeComponent","TranslatePipe","FindItemEditionPipe","ActiveItemsModule","init_active_items_module","__esmMin","init_common","init_ngx_translate_core","init_active_items_service","init_item_common_module","ActiveItemsService","imports","CommonModule","ItemCommonModule","TranslateModule","formatRevenuePeriod","value","termLength","RevenuePeriod","ONETIME","YEARLY","FormatRevenuePeriod","init_format_revenue_period_pipe","__esmMin","init_vendasta_sales_orders","transform","pure","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r3","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","label","ɵɵelement","ɵɵtextInterpolate","startDate_r4","ctx_r1","currentDate","ɵɵpipeBind2","ɵɵpureFunction1","_c1","state_r5","estimatedEndDate","ɵɵtemplate","BillingTermDialogComponent_Conditional_0_glxy_form_row_17_Conditional_9_Template","BillingTermDialogComponent_Conditional_0_glxy_form_row_17_Conditional_10_Template","billingFrequency","form","controls","nBillingPeriods","ɵɵconditional","ɵɵlistener","ɵɵrestoreView","_r6","ɵɵnextContext","ɵɵresetView","save","valid","saveMenu_r7","_r8","$event","_r1","handleBillingTermChange","BillingTermDialogComponent_Conditional_0_mat_option_15_Template","BillingTermDialogComponent_Conditional_0_Conditional_16_Template","BillingTermDialogComponent_Conditional_0_glxy_form_row_17_Template","BillingTermDialogComponent_Conditional_0_Conditional_18_Template","BillingTermDialogComponent_Conditional_0_Conditional_23_Template","BillingTermDialogComponent_Conditional_0_Conditional_24_Template","ɵɵpureFunction4","_c0","input","itemId","name","iconUrl","editionName","revenueComponent","revenue","termOptions","canScheduleActivations","billingTerm","canEditInvoices","canAddAnotherTerm","computeNBillingPeriods","startDate","endDate","parsedStartDate","dayjs","parsedEndDate","RevenuePeriod","YEARLY","diff","import_dayjs","import_utc","MATERIAL_IMPORTS","GLXY_IMPORTS","IMPORTS","PROVIDERS","BillingTermDialogComponent","init_billing_term_dialog_component","__esmMin","init_common","init_forms","init_button","init_checkbox","init_core","init_datepicker","init_dialog","init_icon","init_input","init_menu","init_select","init_ngx_translate_core","init_src","init_avatar","init_button_group","init_form_field","init_pipes","init_vendasta_sales_orders","init_esm","init_operators","init_item_common_module","init_format_revenue_period_pipe","init_sales_to_galaxy_frequency_pipe","init_slide_toggle","init_date_adapter","init_locale","extend","utc","MatDialogModule","MatButtonModule","MatInputModule","MatDatepickerModule","MatNativeDateModule","MatSelectModule","MatCheckboxModule","ReactiveFormsModule","MatMenuModule","MatIconModule","GalaxyAvatarModule","GalaxyFormFieldModule","GalaxyPipesModule","GalaxyButtonGroupModule","CommonModule","BillingUiModule","ItemCommonModule","TranslateModule","RevenuePeriodToGalaxyFrequency","FormatRevenuePeriod","MatSlideToggle","provide","DateAdapter","useClass","GalaxyDateAdapter","MAT_DATE_FORMATS","useValue","MY_DATE_FORMATS","MAT_DATE_LOCALE","getLocale","constructor","dialogRef","formBuilder","Date","ngOnInit","period","isYearlyBilling","endDateWithinYearlyBillingWindow","isBefore","add","toDate","isSame","billIndefinitely","duration","computeFrequency","contractStartDate","group","Validators","required","billable","nonBillable","estimatedEndDate$","initEstimatedEndDate","state$","pipe","map","shareReplay","refCount","bufferSize","ONETIME","disableNBillingPeriods","disableBillIndefinitely","addAnotherTerm","take","subscribe","output","setHours","DurationPeriod","YEAR","MONTH","close","initStartDate","initNBillingPeriods","initBillIndefinitely","startDate$","valueChanges","startWith","nBillingPeriods$","billIndefinitely$","combineLatest","enableNBillingPeriods","patchValue","enable","updateValueAndValidity","disable","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","FormBuilder","selectors","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","BillingTermDialogComponent_Conditional_0_Template","tmp_0_0","MatDialogClose","MatDialogTitle","MatDialogActions","MatDialogContent","MatButton","MatInput","MatHint","MatSuffix","MatDatepicker","MatDatepickerInput","MatDatepickerToggle","MatSelect","MatOption","ɵNgNoValidate","DefaultValueAccessor","NumberValueAccessor","NgControlStatus","NgControlStatusGroup","MinValidator","FormGroupDirective","FormControlName","MatMenu","MatMenuItem","MatMenuTrigger","MatIcon","FormFieldComponent","FormRowComponent","LabelDirective","HintDirective","GalaxyDatePipe","ButtonGroupComponent","NgForOf","NgIf","AsyncPipe","SimplePriceDisplayComponent","TranslatePipe","ItemLabelComponent","styles","fromResellerItem","resellerItem","addonId","itemId","type","name","iconUrl","icon","parentItemId","appId","quantity","edition","usesEditions","editionId","GenericResellerItem","init_store","__esmMin","constructor","Object","assign","fromMarketplaceApp","mp","baseItem","itemId","key","appId","name","sharedMarketingInformation","iconUrl","type","quantity","appType","MarketplaceAppType","APP_TYPE_ADDON","__spreadProps","__spreadValues","parentItemId","parentRequirements","parentDetails","edition","editionId","editionName","fromMarketplaceAddon","addon","addonId","productName","icon","fromMarketplacePackage","marketplacePackage","packageId","init_marketplace","__esmMin","init_vendasta_marketplace_apps","ToInventoryItem","item","isMarketplaceApp","fromMarketplaceApp","isMarketplaceAddon","fromMarketplaceAddon","isMarketplacePackage","fromMarketplacePackage","isResellerItem","fromResellerItem","Error","MarketplaceApp","MarketplaceAddon","MarketplacePackage","GenericResellerItem","init_adapter","__esmMin","init_v1","init_vendasta_marketplace_apps","init_vendasta_marketplace_packages","init_store","init_marketplace","init_adapters","__esmMin","init_adapter","init_item_types","__esmMin","init_type","__esmMin","init_inventory_item","__esmMin","init_adapters","init_item_types","init_type","WHOLESALE_PRICING_CONTEXT","RETAIL_PRICING_CONTEXT","init_interface","__esmMin","CreateLineItemFromItemRow","item","currencyOverride","retailPricing","currency","UpdateLineItemFromItemRow","LineItem","pricing","lineItem","wholesalePricing","usesVariablePricing","cost","Cost","customPrice","frequencyPrices","price","undefined","originalRevenueComponents","currentRevenue","revenueComponents","push","RevenueComponent","value","period","convertFrequencyToRevenuePeriod","frequency","isStartingRevenue","currencyCode","fees","length","filter","fee","Boolean","retailAmount","forEach","RevenuePeriod","ONETIME","Revenue","quantity","billingTerm","billingPeriod","BillingPeriod","startDate","endDate","LineItemPricingEqual","li1","li2","i","Frequency","DAILY","WEEKLY","BI_WEEKLY","BIWEEKLY","ONE_TIME","MONTHLY","YEARLY","init_line_item","__esmMin","init_frequency","init_vendasta_sales_orders","findItem","items","itemId","index","findIndex","selectedItem","convertInventoryItemToSelectedItem","inventoryItem","immutable","__spreadProps","__spreadValues","convertRowItemToSelectedItem","rowItem","name","sellerWhitelabelName","defaultName","iconUrl","sellerWhitelabelIconUrl","base","quantity","itemType","ItemType","ITEM_TYPE_PACKAGE","type","ITEM_TYPE_ADDON","parentItemId","requiredItems","rowEdition","editions","find","edition","editionId","mapify","array","keyFn","valueFn","reduce","map","item","set","Map","init_item","__esmMin","init_vendasta_marketplace_apps","convertToItemSelectorEdition","marketplaceEdition","editionId","appId","name","areEditionIdsEqual","input1","input2","findItemEdition","item","editions","length","type","edition","find","nullishMatch","stringMatch","markActiveEdition","selectedItems","immutableSelectedItems","activatableItem","selected","findItem","itemId","immutableItem","activeEdition","selectedEdition","isActive","init_edition","__esmMin","init_item","init_util","__esmMin","init_edition","init_item","PackageContentsService","init_package_contents_service","__esmMin","init_vendasta_marketplace_apps","init_esm","init_operators","init_inventory_item","init_util","constructor","marketplacePackagesApiService","partnerApiService","fetchPackageItems","packageId","partnerId","marketId","fetchMultiPackageItems","pipe","map","packageItemsMap","get","packageIds","length","of","Map","packages$","getPackages","switchMap","packages","getLineItems","withLatestFrom","lineItems","mapify","p","transformPackageLineItems","getMultiPackages","resp","packageContainers","package","shareReplay","bufferSize","refCount","getMultiAppRequest","GetMultiAppRequest","projectionFilter","paths","appKeys","flat","lineItem","AppKey","appId","id","editionId","getMultiApp","apps","packageItem","pli","find","li","key","areEditionIdsEqual","__spreadProps","__spreadValues","ToInventoryItem","quantity","ɵɵinject","MarketplacePackagesApiService","PartnerApiService","factory","ɵfac","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","packageItems_r2","PackageContentsPopoverComponent","init_package_contents_popover_component","__esmMin","init_popover","constructor","packageContentsService","PopoverPositions","packageId","partnerId","marketId","isOpen","togglePopover","packageItems$","fetchPackageItems","ɵɵdirectiveInject","PackageContentsService","selectors","inputs","standalone","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtext","ɵɵelementEnd","ɵɵtwoWayListener","$event","ɵɵtwoWayBindingSet","ɵɵtemplate","PackageContentsPopoverComponent_ng_container_5_Template","PackageContentsPopoverComponent_ng_template_7_Template","ɵɵtemplateRefExtractor","popover_r3","ɵɵtwoWayProperty","ɵɵpureFunction2","_c0","Bottom","Top","ɵɵpipeBind1","loadingSpinner_r4","PackageContentsPopoverModule","init_package_contents_popover_module","__esmMin","init_common","init_popover","init_loading_spinner","init_package_contents_service","init_item_common_module","PackageContentsService","imports","CommonModule","GalaxyPopoverModule","GalaxyLoadingSpinnerModule","ItemCommonModule","ITEM_PRICING_TABLE_COLUMNS","init_column","__esmMin","id","title","parseRetailItemPrice","appPrices","item","marketCurrency","useDefault","editionId","type","edition","undefined","appPrice","pricesForContexts","unitPrice","pricesForEditions","currency","getPartnerCurrency","frequencyPrices","getFrequencyPrices","length","retailPrice","parseRetailFrequencyPrice","mpFrequencyPrice","__spreadProps","__spreadValues","contactSales","displayOverride","PriceDisplayOverride","PRICE_DISPLAY_OVERRIDE_CONTACT_SALES","discounts","discount","minimumPrice","pricingRules","price","frequency","toGalaxyFrequency","UnitBillingFrequency","UNIT_BILLING_FREQUENCY_ONETIME","Boolean","instancePrice","calculateUnitPriceFromInstancePrice","setupFee","quantity","revenueComponent","pricing","currentRevenue","revenueComponents","revenuePeriodToGalaxyFrequency","period","RevenuePeriod","ONETIME","value","total","init_retail","__esmMin","init_vendasta_marketplace_apps","init_frequency","init_src","init_sales_to_galaxy_frequency_pipe","init_vendasta_sales_orders","parseWholesaleItemPrice","appPrices","item","editionId","type","edition","undefined","appPrice","pricesForContexts","unitPrice","pricesForEditions","marketplaceFrequencyPrices","getFrequencyPrices","usesVariablePricing","billingConfiguration","frequencyPrices","parseWholesaleFrequencyPrices","currency","getPartnerCurrency","contactSales","displayOverride","PriceDisplayOverride","PRICE_DISPLAY_OVERRIDE_CONTACT_SALES","discounts","discount","map","fp","minimumPrice","pricingRules","price","pricing","cost","customPrice","Boolean","instancePrice","calculateUnitPriceFromInstancePrice","setupFee","quantity","total","frequency","toGalaxyFrequency","UnitBillingFrequency","UNIT_BILLING_FREQUENCY_ONETIME","init_wholesale","__esmMin","init_src","init_vendasta_marketplace_apps","init_frequency","AppToCacheKey","app","createCacheKey","key","appId","editionId","InventoryItemToCacheKey","item","itemId","type","edition","undefined","import_lodash","ItemPricingTableDataSource","init_item_pricing_table_data_source","__esmMin","init_vendasta_marketplace_apps","init_esm","init_retail","init_wholesale","init_interface","init_utils","constructor","items$","partnerId","marketId","businessId","excludeWholesale","appPricingApiService","partnerApiService","merchantService","marketplacePackagesApiService","refreshTrigger$$","BehaviorSubject","appCache","Map","packageCache","appPricesCache","get","req","rows$","pipe","skipWhile","items","length","map","pricesToFetch","uniq","filter","has","appsToFetch","packagesToFetch","switchMap","appPrices$","fetchAppPrices","apps$","fetchApps","packages$","fetchPackages","forkJoin","of","prices","apps","packages","withLatestFrom","getMarketCurrency$","marketCurrency","data","buildRows","pagingMetadata","nextCursor","hasMore","combineLatest","rows","row","quantity","startWith","itemPrices","index","itemPrice","pkg","buildItemRow","getMultiPricingRequest","GetMultiPricingRequest","appIds","pricingContexts","paths","getPricingContexts","filterOptions","FieldMask","requestedItems","RequestedApp","getMultiPricing","response","mapify","appPrices","ap","push","WHOLESALE_PRICING_CONTEXT","RETAIL_PRICING_CONTEXT","appItems","getMultiAppRequest","GetMultiAppRequest","projectionFilter","appKeys","AppKey","includeNotEnabled","getMultiApp","a","packageIds","getMultiPackages","resp","packageContainers","container","package","p","packageId","getMultiRetailConfigurations","take","currencyCode","forEach","retailConfig","marketplacePackage","pricing","itemRow","__spreadProps","__spreadValues","name","sharedMarketingInformation","iconUrl","icon","wholesalePricing","parseWholesaleItemPrice","retailPricing","parseRetailItemPrice","defaultRetailPricing","useDefault","fees","parseItemFees","isMultiactivatable","activationInformation","multipleActivationsEnabled","editionName","billingPeriod","billingTerm","startDate","endDate","duration","price","frequency","currency","usesVariablePricing","isDiscountedRetailPrice","displayOriginalPrice","refreshItemRows","next","array","keyFn","reduce","set","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","frequency_r1","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","label","BillingFrequencyDialogComponent","init_billing_frequency_dialog_component","__esmMin","init_esm","init_forms","init_dialog","init_item_common_module","init_frequency","init_package_contents_popover_module","init_ngx_translate_core","init_common","init_button","init_src","init_sales_to_galaxy_frequency_pipe","init_autocomplete","init_select","init_form_field","init_button_group","constructor","dialogRef","data","formBuilder","loading$$","Subject","frequencyOptions","GalaxyFrequency","ONE_TIME","MONTHLY","YEARLY","Frequency","billingFrequency","revenueComponent","period","form","group","frequency","Validators","required","save","output","controls","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","FormBuilder","selectors","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","BillingFrequencyDialogComponent_mat_option_15_Template","ɵɵlistener","ɵɵtextInterpolate","ɵɵpureFunction4","_c0","itemId","name","iconUrl","editionName","revenue","viewOnly","valid","ItemCommonModule","ItemLabelComponent","PackageContentsPopoverModule","TranslateModule","TranslatePipe","CommonModule","NgForOf","LexiconModule","MatButtonModule","MatButton","MatDialogContent","BillingUiModule","SimplePriceDisplayComponent","RevenuePeriodToGalaxyFrequency","MatOption","MatSelect","ReactiveFormsModule","ɵNgNoValidate","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","GalaxyFormFieldModule","FormFieldComponent","LabelDirective","GalaxyButtonGroupModule","MatDialogActions","MatDialogClose","MatDialogModule","MatDialogTitle","styles","changeDetection","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","item_r1","itemId","ctx_r1","config","partnerId","marketId","ɵɵtemplate","ItemPricingTableBaseComponent_mat_cell_5_Conditional_5_inventory_ui_package_contents_popover_0_Template","type","ɵɵpipeBind3","billingTerm","retailPricing","frequency","billingTermsConfig","defaultStartDate","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","$implicit","ɵɵresetView","publishChanges","ItemPricingTableBaseComponent_mat_cell_5_Conditional_6_Conditional_1_Template","ItemPricingTableBaseComponent_mat_cell_5_Conditional_6_Conditional_2_Template","ɵɵconditional","ɵɵelementContainerStart","ɵɵtextInterpolate","fee_r4","label","ItemPricingTableBaseComponent_mat_cell_5_div_8_ng_container_1_Template","showManagementFees","ItemPricingTableBaseComponent_mat_cell_5_Conditional_5_Template","ItemPricingTableBaseComponent_mat_cell_5_Conditional_6_Template","ItemPricingTableBaseComponent_mat_cell_5_div_8_Template","ɵɵpureFunction5","_c1","name","edition","iconUrl","viewOnly","enabled","Frequency","ONE_TIME","hidePackageContents","fees","$event","_r5","item_r6","onQuantityChange","quantity","ItemPricingTableBaseComponent_mat_cell_8_Conditional_2_Template","ItemPricingTableBaseComponent_mat_cell_8_Conditional_3_Template","quantityEditable","isMultiactivatable","item_r7","wholesalePricing","frequencyPrices","currency","contactSales","discounts","frequencyPrice_r9","_r8","onPriceChange","price","minimumPrice","ɵɵpipeBind2","ItemPricingTableBaseComponent_mat_cell_11_ng_template_4_glxy_currency_field_0_Template","fee_r10","wholesaleAmount","ItemPricingTableBaseComponent_mat_cell_11_ng_container_7_billing_ui_simple_price_display_1_Template","noFee_r11","ItemPricingTableBaseComponent_mat_cell_11_billing_ui_simple_price_display_3_Template","ItemPricingTableBaseComponent_mat_cell_11_ng_template_4_Template","ɵɵtemplateRefExtractor","ItemPricingTableBaseComponent_mat_cell_11_ng_container_7_Template","ɵɵpureFunction1","_c2","usesVariablePricing","wholesaleSpend_r12","item_r13","defaultRetailPricing","fee_r14","retailAmount","retailDefaultAmount","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_ng_container_4_Conditional_1_billing_ui_simple_price_display_0_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_ng_container_4_Conditional_1_billing_ui_simple_price_display_1_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_ng_container_4_Conditional_1_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_Conditional_2_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_ng_container_4_Template","isDiscountedRetailPrice","_r16","_c3","displayOriginalPrice","unifiedOrdersEnabled","fee_r17","ItemPricingTableBaseComponent_mat_cell_14_Conditional_3_ng_container_6_glxy_currency_field_1_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_3_ng_container_6_Conditional_2_Template","_r15","ItemPricingTableBaseComponent_mat_cell_14_Conditional_3_Conditional_4_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_3_ng_container_6_Template","showRetailFrequencySuffix","undefined","ItemPricingTableBaseComponent_mat_cell_14_Conditional_2_Template","ItemPricingTableBaseComponent_mat_cell_14_Conditional_3_Template","fee_r18","retailAmountTotal","item_r19","ItemPricingTableBaseComponent_mat_cell_17_ng_container_5_billing_ui_simple_price_display_1_Template","ItemPricingTableBaseComponent_mat_cell_17_ng_container_5_Template","total","_r23","item_r22","_r21","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_Conditional_7_Conditional_3_Template","selectionEditable","_r24","onRemoveItem","_r25","fee_r26","removeSetupFee","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_ng_container_19_div_1_Template","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_Conditional_7_Template","_r20","editRetailBillingFrequency","addSetupFee","resetItemPricing","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_Conditional_18_Template","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_ng_container_19_Template","menu_r27","ItemPricingTableBaseComponent_mat_cell_20_Conditional_1_Template","wholesaleSummary","retailSummary","ItemPricingTableBaseComponent_Conditional_22_ng_container_0_ng_container_1_Template","total_r28","initialized","loadingTotals_r29","ItemPricingTableBaseComponent_Conditional_22_ng_container_0_Template","priceTotals$","ItemPricingTableBaseComponent","init_item_pricing_table_base_component","__esmMin","init_core","init_rxjs_interop","init_frequency","init_table","init_esm","init_operators","init_column","init_item_pricing_table_data_source","init_utils","init_billing_frequency_dialog_component","init_sales_to_galaxy_frequency_pipe","items","value","_items$$","next","constructor","dialog","partnerApiService","appPricingApiService","merchantService","marketplacePackagesApiService","destroyRef","productAnalyticsService","BehaviorSubject","updatedItemRow","EventEmitter","valid","wholesaleTotal","_invalidPriceItems","columns","ITEM_PRICING_TABLE_COLUMNS","injector","inject","Injector","getPriceSummaryByContext","tableDataSource","dataMembers$","pipe","filter","dataMembers","length","map","calculateTotalWholesalePrice","calculateTotalRetailPrice","startWith","oneTime","monthly","yearly","ngOnInit","hideColumns","forEach","col","c","id","dataSource","ItemPricingTableDataSource","asObservable","businessId","shouldExcludeWholesale","GalaxyDataSource","toSignal","initialValue","wholesaleSummary$","retailSummary$","combineLatest","wholesale","retail","retailTotal","rows","take","subscribe","row","takeUntilDestroyed","emit","includes","hidePriceSummary","changeEvent","item","htmlElement","target","valueAsNumber","updateQuantity","fp","eventType","updateRetailPricing","updateWholesalePricing","frequencyPrice","find","oldWholeSalePrice","updatePercentageManagementFee","validateWholesalePrice","updateSetupFee","fee","every","push","splice","indexOf","__spreadValues","resetItemVariablePrice","resetItemFees","priceType","htmlInputValue","convertHTMLControlValueToNumber","convertDollarsToCents","handleFrequencyChange","openBillingFrequencyDialog","output","itemRow","open","BillingFrequencyDialogComponent","data","editionName","revenueComponent","revenue","period","galaxyFrequencyToRevenuePeriod","maxWidth","maxHeight","width","afterClosed","Math","round","itemToUpdate","unshift","amountType","action","source","trackEvent","refreshItemRows","getItems","ɵɵdirectiveInject","MatDialog","PartnerApiService","AppPricingApiService","MerchantService","MarketplacePackagesApiService","DestroyRef","ProductAnalyticsService","selectors","inputs","outputs","standalone","decls","vars","consts","template","rf","ctx","ItemPricingTableBaseComponent_mat_header_row_2_Template","ItemPricingTableBaseComponent_mat_header_cell_4_Template","ItemPricingTableBaseComponent_mat_cell_5_Template","ItemPricingTableBaseComponent_mat_header_cell_7_Template","ItemPricingTableBaseComponent_mat_cell_8_Template","ItemPricingTableBaseComponent_mat_header_cell_10_Template","ItemPricingTableBaseComponent_mat_cell_11_Template","ItemPricingTableBaseComponent_mat_header_cell_13_Template","ItemPricingTableBaseComponent_mat_cell_14_Template","ItemPricingTableBaseComponent_mat_header_cell_16_Template","ItemPricingTableBaseComponent_mat_cell_17_Template","ItemPricingTableBaseComponent_mat_header_cell_19_Template","ItemPricingTableBaseComponent_mat_cell_20_Template","ItemPricingTableBaseComponent_mat_row_21_Template","ItemPricingTableBaseComponent_Conditional_22_Template","ItemPricingTableBaseComponent_ng_template_23_Template","ItemPricingTableBaseComponent_ng_template_25_Template","hideBorder","ɵɵpureFunction0","_c0","MAT_IMPORTS","GALAXY_IMPORTS","ITEM_PRICING_TABLE_IMPORTS","ItemPricingTableBaseModule","init_item_pricing_table_base_module","__esmMin","init_common","init_button","init_dialog","init_icon","init_menu","init_table","init_src","init_avatar","init_form_field","init_frequency","init_input","init_sales_to_galaxy_frequency_pipe","init_package_contents_popover_module","init_item_pricing_table_base_component","init_item_common_module","CommonModule","MatButtonModule","MatDialogModule","MatIconModule","MatMenuModule","MatTableModule","GalaxyAvatarModule","GalaxyFormFieldModule","GalaxyFrequencyModule","GalaxyInputModule","GalaxyTableModule","GalaxyFrequencyToRevenuePeriodPipe","ItemCommonModule","BillingUiModule","PackageContentsPopoverModule","ItemPricingTableBaseComponent","NgClass","NgForOf","NgIf","MatIconButton","MatIcon","MatMenu","MatMenuItem","MatMenuTrigger","MatTable","MatHeaderCellDef","MatHeaderRowDef","MatColumnDef","MatCellDef","MatRowDef","MatHeaderCell","MatCell","MatHeaderRow","MatRow","FormFieldComponent","CurrencyFieldComponent","TableContainerComponent","ItemLabelComponent","PriceSummaryDisplayComponent","SimplePriceDisplayComponent","PackageContentsPopoverComponent","AsyncPipe","GalaxyFrequencyPipe","CentsToDollarsPipe","PriceValidatorPipe","FormatWholesaleMinimumHintPipe","HasSetupFeePipe","IsSetupFeeRemovablePipe","FormatBillingTermPipe","PricePipe","TranslatePipe","init_item_pricing_table_base","__esmMin","init_interface","init_line_item","init_item_pricing_table_base_module","ItemConflictService","init_item_conflict_service","__esmMin","init_esm","init_operators","constructor","packageContentsService","resolveItemConflicts","selectedItem","availableItems","partnerId","marketId","find","i","itemId","of","getPackagedItemsMap","pipe","map","packageItemsMap","itemsToCheck","get","delete","getItemsToSelect","shareReplay","bufferSize","refCount","allPackageIds","filter","type","push","fetchMultiPackageItems","allProductItemIds","allPackagedItemIds","Array","from","values","flat","allAvailableItemIds","concat","uniqueItems","some","aid","length","ɵɵinject","PackageContentsService","factory","ɵfac","ItemDependencyService","init_item_dependency_service","__esmMin","init_src","init_esm","init_operators","init_util","constructor","itemsApiService","partnerApiService","listMissingRequirementsForItems","partnerId","marketId","targetItems","availableItems","filteredTargetItems","filter","ti","type","length","of","Map","filteredAvailableItems","ai","listMissingItems","pipe","switchMap","missingItems","missingItemsMap","mapifyMissingItems","filteredMissingItemsMap","filterMissingItems","convertMissingItemsToInventoryDependencyItems","itemIdentifiers","map","itemId","editionId","edition","ItemIdentifier","listDependencies","ListDependenciesRequest","sellerId","storeId","items","resp","shareReplay","refCount","bufferSize","mapify","Object","entries","requiredItems","availableApps","filteredMissingItems","forEach","rawRequiredItems","filteredRequiredItems","ri","find","i","editionRequirement","editionRequired","areEditionIdsEqual","set","requiredAppKeys","Array","from","values","flat","AppKey","appId","getAppsMap","appsMap","inventoryItemsMap","inventoryItems","app","get","requiredItemToInventoryDependencyItem","appKeys","getMultiApp","GetMultiAppRequest","projectionFilter","paths","apps","key","requiredItem","editions","editionInformation","e","appKey","name","sharedMarketingInformation","iconUrl","quantity","enabled","ɵɵinject","ItemsApiService","PartnerApiService","factory","ɵfac","isIndexValid","index","ItemSelectorServiceV2","init_item_selector_v2_service","__esmMin","init_core","init_esm","init_operators","init_item","constructor","itemConflictService","itemDependencyService","_selectedItems","signal","_immutableSelectedItems","_availableItems","_changeEvents","selectedItems","asReadonly","immutableSelectedItems","availableItems","changeEvents","allItems","computed","initSelectedItems","value","set","initImmutableSelectedItems","items","immutableItems","map","i","__spreadProps","__spreadValues","immutable","initAvailableItems","updateSelection","isSelected","targetItem","options","addSelection","findItem","itemId","removeSelection","updateItemEdition","quantity","update","selectedItem","type","targetApp","edition","updatedItem","pushSelectionEvent","enforceDependencies","removeBrokenDependencies","partnerId","marketId","updateItemQuantity","removeItemId","eventSource","clearSelection","clearedByUser","validateItemSelections","itemIndex","removedItem","splice","resolvedItems$","resolveItemConflicts","missingItems$","pipe","switchMap","resolvedItems","updatedItems","replaceSelectedItemWithResolvedItems","findMissingDependencies","take","subscribe","handleItemConflicts","missingItems","handleMissingDependencies","ri","convertInventoryItemToSelectedItem","shareReplay","bufferSize","refCount","length","confirmItenComflictResolutionCallback","of","withLatestFrom","confirmation","eventType","filter","si","targetItems","listMissingRequirementsForItems","triggerItem","missingItemsMap","forEach","targetItemId","some","mi","enabled","requiredItems","requiredItem","targetItemIdx","push","requiredApp","activeItems","availabeItems","concat","Array","from","keys","brokenItemIds","removedItems","brokenItemId","brokenItemIdx","ɵɵinject","ItemConflictService","ItemDependencyService","factory","ɵfac","LINE_ITEMS_CACHE_KEY","LineItemCacheService","init_line_item_cache_service","__esmMin","buildKey","businessId","readLineItems","key","lineItems","sessionStorage","getItem","length","JSON","parse","cacheLineItems","removeItem","setItem","stringify","clearLineItemCache","factory","ɵfac","SelectionChangeEventType","init_interface","__esmMin","ITEMS_SELECTOR_COLUMNS","init_item_selector_columns","__esmMin","id","title","ItemSelectorDataSource","init_item_selector_data_source","__esmMin","init_vendasta_marketplace_apps","init_vendasta_marketplace_apps_v1","init_esm","init_operators","init_util","constructor","itemsApiService","appPricingApiService","editionsService","sortOptions$","itemSelectorServiceV2","immutableSelectedItems$","selectedItems$","config","partnerApiService","get","pagedReq","activatableItems$","pipe","switchMap","sortOptions","listReq","buildRequest","partnerId","marketId","listActivatableItems","shareReplay","refCount","bufferSize","rows$","merge","response","sideloadData","combineLatest","map","rows","data","processActivatableItems","cursor","pagingOptions","pageSize","itemSelectorFilters","filters","ListActivatableItemsRequest","sellerId","storeId","__spreadValues","searchTerm","searchOptions","text","req","activatableItemSummaries","pagingMetadata","nextCursor","hasMore","totalResults","pricing$","getPricing","editions$","getEditions","startWith","apps$","getMarketplaceApps","skipWhile","pricing","editions","apps","loading","length","hydrateRows","pricingContexts","getPricingContexts","forEach","rowItem","appPrices","getItemPrice","itemId","prices","pricesInitialized","rowItemEditions","find","edition","appId","convertToItemSelectorEdition","item","findItem","allItems","findItemEdition","editionId","app","key","childApps","itemIds","hideWholesale","hideRetail","of","request","GetMultiPricingRequest","FieldMask","paths","businessId","priceType","requestedApps","row","RequestedApp","quantity","filterOptions","getMultiPricing","resp","catchError","push","appIds","filter","usesEditions","ListByMultiAppRequest","listByMultiApp","appEditions","getMultiAppRequest","projectionFilter","appKeys","getMultiApp","activatableItems","activatableItem","markActivatableItemAsSelected","markUnavailableItemInCountry","country","markActiveEdition","selectedItems","immutableSelectedItems","selectedItem","immutableItem","isSelected","isMultiactivatable","immutable","unavailableInCountry","isItemAvailableInCountry","requiredCountries","some","c","toUpperCase","itemPrice","price","unavailableItemPrice","AppPrices","pricesForContexts","context","AppPrice","FormatProductTypePipe","init_format_product_type_pipe","__esmMin","init_vendasta_marketplace_apps","constructor","translateService","transform","item","itemType","ItemType","ITEM_TYPE_PACKAGE","instant","deliveryMethod","DeliveryMethod","DELIVERY_METHOD_PRODUCT","ITEM_TYPE_APP","ITEM_TYPE_ADDON","DELIVERY_METHOD_SERVICE","ɵɵdirectiveInject","TranslateService","pure","standalone","FormatProductRequirementPipe","init_format_product_requirement_pipe","__esmMin","init_vendasta_marketplace_apps","transform","item","requiredItems","length","requiredItemName","name","itemType","ItemType","ITEM_TYPE_ADDON","ITEM_TYPE_APP","pure","standalone","ParseWholesaleCurrencyPipe","init_parse_wholesale_currency_pipe","__esmMin","transform","item","pricesForEditions","appPrices","pricesForContexts","Object","keys","length","firstEditionId","currencies","pricesForCurrencies","pure","standalone","IsItemDisabledPipe","init_is_item_disabled_pipe","__esmMin","transform","item","hideQuantity","isSuspended","unavailableInCountry","isMultiactivatable","invalidEditions","usesEditions","editions","immutable","pure","standalone","require_data","__commonJSMin","exports","module","require_country_list","__commonJSMin","exports","data","nameMap","codeMap","mapCodeAndName","country","countries","foundIndex","item","name","code","import_country_list","FormatDisabledItemPipe","UnavailableItemType","init_format_disabled_item_pipe","__esmMin","constructor","translateService","transform","item","countryCode","context","isSuspended","instant","translationPath","SUSPENDED","unavailableInCountry","COUNTRY_RESTRICTION","country","formatCountry","isSelected","immutable","ALREADY_ACTIVE","DEFAULT","type","base","contextPath","getCountryNameFromCode","ɵɵdirectiveInject","TranslateService","pure","standalone","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","setItemType","value","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","_r4","setShowAddons","showAddons","ɵɵproperty","_r5","unsetRequiredItem","tmp_3_0","requiredItem","sellerWhitelabelName","undefined","defaultName","itemId","ɵɵelement","_r6","item_r7","$implicit","handleSelectionChange","isSelected","ɵɵpipeBind3","configuration","country","ɵɵpipeBind2","hideQuantity","ɵɵtemplate","ItemSelectorComponent_td_15_div_1_Template","ItemSelectorComponent_td_15_ng_template_2_Template","ɵɵtemplateRefExtractor","dependenciesLoading","loadingSpinner_r8","_r9","item_r10","handleEditionChange","editionId","editions","ItemSelectorComponent_td_18_div_7_inventory_ui_edition_selector_1_Template","ItemSelectorComponent_td_18_div_7_span_2_Template","ɵɵelementContainerStart","partnerId","marketId","ItemSelectorComponent_td_18_ng_container_9_ng_container_1_Template","ItemSelectorComponent_td_18_ng_container_9_ng_template_2_Template","itemType","ItemType","ITEM_TYPE_PACKAGE","itemTypeOnly_r11","ɵɵpureFunction2","_c3","ownerName","_r12","productRequirementPopover_r13","ɵɵreference","isOpen","requiredItems","length","requiredItem_r14","name","ItemSelectorComponent_td_18_ng_template_14_div_0_Template","ItemSelectorComponent_td_18_ng_template_14_li_7_Template","ɵɵpureFunction1","_c4","PopoverPositions","Right","ɵɵtextInterpolate","_r15","setRequiredItem","ɵɵpureFunction0","_c5","ItemSelectorComponent_td_18_div_7_Template","ItemSelectorComponent_td_18_ng_container_9_Template","ItemSelectorComponent_td_18_ng_template_10_Template","ItemSelectorComponent_td_18_div_12_Template","ItemSelectorComponent_td_18_ng_template_14_Template","ItemSelectorComponent_td_18_mat_chip_16_Template","tmp_7_0","tmp_8_0","sellerWhitelabelIconUrl","iconUrl","tmp_9_0","usesEditions","hideOwnerName","itemTypeByOwner_r16","productRequirements_r17","ITEM_TYPE_APP","childApps","_r18","item_r19","handleQuantityChange","quantity","ItemSelectorComponent_td_21_glxy_form_field_1_Template","isMultiactivatable","ITEM_TYPE_ADDON","item_r20","appPrices","pricesForContexts","priceType","ItemSelectorComponent_td_24_ng_container_1_billing_ui_price_display_1_Template","ItemSelectorComponent_td_24_ng_container_1_Template","pricesInitialized","priceShimmer_r21","item_r22","ItemSelectorComponent_td_27_ng_container_1_billing_ui_price_display_1_Template","ItemSelectorComponent_td_27_ng_container_1_Template","_c6","row_r23","isSuspended","unavailableInCountry","calculateItemTypes","itemTypes","push","requiredItemFilter","ItemSelectorComponent","DEFAULT_CONFIG","init_item_selector_component","__esmMin","init_core","init_rxjs_interop","init_checkbox","init_popover","init_table","init_vendasta_marketplace_apps","init_esm","init_interface","init_item_selector_columns","init_item_selector_data_source","init_item","selectedItems","itemSelectorServiceV2","initSelectedItems","immutableSelectedItems","initImmutableSelectedItems","availableItems","initAvailableItems","constructor","itemsApiService","appPricingApiService","editionsService","partnerApiService","lineItemCacheService","confirmationModalService","translateService","snackbarService","selectionChange","EventEmitter","columns","ITEMS_SELECTOR_COLUMNS","sortOptions$$","BehaviorSubject","ListActivatableItemsSortOptions","sortField","ListActivatableItemsSortField","LIST_ACTIVATABLE_ITEMS_SORT_FIELD_DEFAULT_NAME","sortDirection","SortDirection","ASCENDING","immutableSelectedItems$","toObservable","selectedItems$","state","signal","showUnavailableItems","filters","computed","includeSuspended","requiredItemId","hasOrderForm","hideItemsWithOrderForms","OrderFormFilter","ORDER_FORM_FILTER_NO_ORDER_FORM","ORDER_FORM_FILTER_UNSPECIFIED","itemTypeTranslationKey","effect","updateTableFilters","businessId","lineItems","map","selectedItem","type","edition","cacheLineItems","selectionEvents","changeEvents","untracked","selectionEvent","eventSource","eventType","updatedItems","emitSelectionChanges","notifyUserOfChanges","ngOnInit","dataSource","ItemSelectorDataSource","asObservable","tableDataSource","GalaxyDataSource","setupColumns","ngOnChanges","changes","config","currentValue","__spreadValues","itemTypesAvailable","ngOnDestroy","clearSelection","hideRetailColumn","column","id","hideRetail","hideWholesaleColumn","hideWholesale","filter","setFilters","selected","rowItem","convertRowItemToSelectedItem","updateSelection","selectionOptionsFromConfig","updateItemEdition","event","target","valueAsNumber","updateItemQuantity","setShowUnavailableItems","update","s","__spreadProps","item","tableHeader","setSearchTerm","confirmItenComflictResolutionCallback","confirmItemConflictResolutionModal","bind","enforceDependencies","openModal","title","instant","message","confirmButtonText","formatItemNames","includeEditions","si","join","forEach","updatedItem","emit","SelectionChangeEventType","SELECTED","DESELECTED","showSelectionChangeNotification","showEditionChangeNotification","openErrorSnack","translation","notification","itemNames","openSuccessSnack","triggerItem","affectedItemNames","triggerItemName","ɵɵdirectiveInject","ItemsApiService","AppPricingApiService","ItemSelectorServiceV2","EditionsApiService","PartnerApiService","LineItemCacheService","OpenConfirmationModalService","TranslateService","SnackbarService","selectors","viewQuery","rf","ctx","provide","MAT_CHECKBOX_DEFAULT_OPTIONS","useValue","clickAction","ɵɵNgOnChangesFeature","decls","vars","consts","template","ItemSelectorComponent_div_3_Template","ItemSelectorComponent_mat_checkbox_5_Template","i0","_r1","ItemSelectorComponent_mat_chip_10_Template","ItemSelectorComponent_tr_12_Template","ItemSelectorComponent_th_14_Template","ItemSelectorComponent_td_15_Template","ItemSelectorComponent_th_17_Template","ItemSelectorComponent_td_18_Template","ItemSelectorComponent_th_20_Template","ItemSelectorComponent_td_21_Template","ItemSelectorComponent_th_23_Template","ItemSelectorComponent_td_24_Template","ItemSelectorComponent_th_26_Template","ItemSelectorComponent_td_27_Template","ItemSelectorComponent_ng_template_28_Template","ItemSelectorComponent_tr_30_Template","pageSize","_c1","_c2","ItemSelectorDialogComponent","init_item_selector_dialog_component","__esmMin","init_dialog","constructor","dialogRef","data","itemSelectorService","onSelect","selectedItems","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","ItemSelectorServiceV2","selectors","standalone","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵproperty","config","immutableSelectedItems","availableItems","ɵɵtextInterpolate1","ItemPricingTableService","init_item_pricing_table_service","__esmMin","init_core","init_rxjs_interop","init_operators","init_line_item","constructor","activeItemsService","dependencyService","_config","signal","partnerId","marketId","businessId","currencyOverride","enforceDependencies","_items","items","asReadonly","_events","events","latestEvent","computed","length","eventHandler","activeItems$","toObservable","pipe","filter","config","Boolean","switchMap","getCurrentlyActiveItems","startWith","shareReplay","activeItems","toSignal","setConfig","set","initItems","overwriteItems","changedItems","map","item","index","__spreadProps","__spreadValues","updateItems","event","source","type","removeItemsWithMissingDependencies","addItems","newItems","lastItemIndex","concat","addItemAtIndex","newItem","nItems","isItemIndexValid","splice","setItemMatchingRow","changedItem","itemRow","setItemsMatchingRows","itemRows","forEach","i","pricing","CreateLineItemFromItemRow","quantity","removeItemMatchingRow","getItemWithIndex","removeItems","itemIds","includes","itemId","push","listMissingRequirementsForItems","missingRequirements","Array","from","keys","take","subscribe","itemsMissingRequirements","addNewBillingTermForItemMatchingRow","billingTermCallback","itemCopy","structuredClone","indexForCopy","output","billingPeriod","startDate","endDate","undefined","duration","nonBillable","addAnotherTerm","itemRowCopy","editBillingTermForItemMatchingRow","updateItemsWithPricing","changedRows","lineItem","LineItemPricingEqual","updateItemsCurrency","currency","currencyCode","updateFn","eventType","eventSource","update","ɵɵinject","ActiveItemsService","ItemDependencyService","factory","ɵfac","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r1","ɵɵnextContext","ɵɵresetView","onAddItems","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","$event","_r1","onUpdatedItemRow","onValid","onWholesaleTotal","ɵɵtemplate","ItemPricingTableComponent_Conditional_0_Conditional_2_Template","ɵɵproperty","config","items","viewOnly","showRetailFrequencySuffix","ɵɵconditional","canAddItems","ITEM_PRICING_TABLE_SELECTOR_PROVIDERS","ItemPricingTableComponent","init_item_pricing_table_component","__esmMin","init_core","init_operators","init_billing_term_dialog_component","init_sales_to_galaxy_frequency_pipe","init_item_selector_dialog_component","init_item_pricing_table_service","ItemPricingTableService","_config","__spreadProps","__spreadValues","selectionEditable","selectedItems","service","initItems","constructor","dialog","translateService","snackbarService","currencyOverride","itemsChanged","EventEmitter","validityChanged","wholesaleTotalChanged","activeItems","afterRenderEffect","write","itemPricingTable","ptItems","getItems","untracked","updateItemsWithPricing","effect","latestEvent","notifyUserOfChanges","emit","ngOnChanges","changes","currencyChanged","currentValue","previousValue","partnerId","marketId","businessId","enforceDependencies","setConfig","updateItemsCurrency","open","ItemSelectorDialogComponent","data","immutableSelectedItems","availableItems","concat","width","maxWidth","height","minHeight","maxHeight","afterClosed","pipe","map","output","take","subscribe","newItems","length","overwriteItems","changeEvent","itemRow","item","action","addItems","removeItemMatchingRow","addNewBillingTermForItemMatchingRow","openBillingTermDialog","editBillingTermForItemMatchingRow","valid","total","editing","billingTerm","undefined","BillingTermDialogComponent","itemId","name","editionName","type","edition","iconUrl","revenueComponent","revenue","retailPricing","period","galaxyFrequencyToRevenuePeriod","frequency","startDate","endDate","contractStartDate","billingTermsConfig","defaultStartDate","canAddAnotherTerm","isMultiactivatable","nonBillable","pricing","canEditInvoices","canScheduleActivations","duration","source","notification","instant","itemNames","join","openSuccessSnack","ɵɵdirectiveInject","MatDialog","TranslateService","SnackbarService","selectors","viewQuery","rf","ctx","ɵɵNgOnChangesFeature","decls","vars","consts","template","ItemPricingTableComponent_Conditional_0_Template","en_devel_default","init_en_devel","__esmMin","InventoryUiI18nModule","init_inventory_ui_i18n_module","__esmMin","init_src","init_ngx_translate_core","init_en_devel","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","En","MAT_MODULES","GALAXY_MODULES","ITEM_SELECTOR_MODULE_IMPORTS","ITEM_SELECTOR_MODULE_PROVIDERS","ItemSelectorModule","init_item_selector_module","__esmMin","init_common","init_forms","init_button","init_button_toggle","init_checkbox","init_chips","init_icon","init_input","init_menu","init_select","init_table","init_tooltip","init_ngx_translate_core","init_src","init_avatar","init_form_field","init_loading_spinner","init_popover","init_item_common_module","init_inventory_ui_i18n_module","init_package_contents_popover_module","init_item_conflict_service","init_item_dependency_service","init_line_item_cache_service","init_item_selector_v2_service","init_badge","MatButtonModule","MatButtonToggleModule","MatCheckboxModule","MatChipsModule","MatIconModule","MatInputModule","MatMenuModule","MatSelectModule","MatTableModule","MatTooltipModule","FormsModule","GalaxyTableModule","GalaxyAvatarModule","GalaxyInputModule","GalaxyFormFieldModule","GalaxyLoadingSpinnerModule","GalaxyPopoverModule","GalaxyTooltipModule","GalaxyBadgeModule","BillingUiModule","CommonModule","InventoryUiI18nModule","ItemCommonModule","ProductAnalyticsModule","PackageContentsPopoverModule","TranslateModule","ItemSelectorServiceV2","LineItemCacheService","ItemConflictService","ItemDependencyService","imports","ITEM_SELECTOR_DIALOG_MODULE_IMPORTS","ItemSelectorDialogModule","init_item_selector_dialog_module","__esmMin","init_common","init_button","init_dialog","init_src","init_ngx_translate_core","init_item_selector_module","CommonModule","MatDialogModule","MatButtonModule","ItemSelectorModule","LexiconModule","TranslateModule","ITEM_PRICING_TABLE_IMPORTS","ItemPricingTableModule","init_item_pricing_table_module","__esmMin","init_common","init_button","init_src","init_ngx_translate_core","init_item_selector_dialog_module","init_item_pricing_table_base","CommonModule","ItemSelectorDialogModule","MatButtonModule","LexiconModule","TranslateModule","ItemPricingTableBaseModule","init_item_pricing_table","__esmMin","init_item_pricing_table_base","init_item_pricing_table_module","isCustomItem","selectedItem","config","customDropdownItems","some","item","itemTypes","filters","isCustomApp","includes","ItemType","ITEM_TYPE_APP","appId","isCustomAddon","ITEM_TYPE_ADDON","addonId","MARKETPLACE_APPS_FALL_BACK_MARKET_ID","ItemSearchSelectFilterService","init_item_search_select_filter_service","__esmMin","init_esm","init_vendasta_marketplace_apps","init_operators","selectedItems","_selectedItems","constructor","appPartnerService","itemsApiService","_selectionUpdated$$","BehaviorSubject","_triggerLoadMore$$","_pagingInfo$$","cursor","hasMore","_clearItemList$$","Subject","init","searchControl$","singleSelect","loadMore$","asObservable","searchTerm$","pipe","debounceTime","startWith","tap","next","nextActivatableItems$","combineLatest","withLatestFrom","switchMap","searchTerm","pagingInfo","listActivatableItems","resp","nextCursor","map","parseListItemsResponse","scanAddFn","buildScanFn","scanClearFn","addItemsToList$","clearItemList$","itemList$","merge","scan","acc","scanInnerFn","selectedItems$","setItemName","of","availableItems","initialized","updateSelection","value","length","triggerLoadMore","wildcardSelectedItem","name","hyrdateItemName","fieldMask","FieldMask","paths","appKey","AppKey","marketIdWithFallback","marketId","request","GetMultiAppRequest","projectionFilter","appKeys","partnerId","includeNotEnabled","getMultiApp","apps","app","key","sharedMarketingInformation","appType","AppType","APP_TYPE_ADDON","parentRequirements","parentDetails","items","response","activatableItemSummaries","itemId","sellerWhitelabelName","defaultName","itemType","requiredItems","ListActivatableItemsRequest","sellerId","storeId","pageSize","__spreadProps","__spreadValues","sortOptions","sortDirection","SortDirection","ASCENDING","ɵɵinject","PartnerApiService","ItemsApiService","factory","ɵfac","DisplayLabelPipe","init_display_label_pipe","__esmMin","init_vendasta_marketplace_apps","constructor","translateService","transform","itemType","ItemType","ITEM_TYPE_APP","instant","ITEM_TYPE_ADDON","ɵɵdirectiveInject","TranslateService","pure","standalone","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","appSummary_r4","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵelementContainerStart","ɵɵelement","ɵɵlistener","$event","ɵɵrestoreView","_r1","state_r2","ɵɵnextContext","ngIf","ctx_r2","ɵɵresetView","addItem","selectedItem","ɵɵtemplate","ItemSearchSingleSelectFilterComponent_ng_container_4_ng_container_1_mat_option_7_Template","loadMore","searchCtrl","autocomplete_r5","displayFn","availableItems","ItemSearchSingleSelectFilterComponent_ng_container_4_ng_container_1_Template","initialized","loadingState_r6","ItemSearchSingleSelectFilterComponent","init_item_search_single_select_filter_component","__esmMin","init_core","init_forms","init_operators","init_item_search_select_filter_service","value","appId","addonId","itemSearchSelectFilterService","updateSelection","constructor","config","partnerId","selectionChange","EventEmitter","UntypedFormControl","ngOnInit","searchCtrl$","valueChanges","pipe","filter","term","map","searchTerm","templateState$","init","state","__spreadProps","__spreadValues","selectedItems","event","newlySelectedItem","option","setValue","emit","triggerLoadMore","item","ɵɵdirectiveInject","ItemSearchSelectFilterService","selectors","inputs","outputs","standalone","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","ItemSearchSingleSelectFilterComponent_ng_container_4_Template","ItemSearchSingleSelectFilterComponent_ng_template_6_Template","ɵɵtemplateRefExtractor","ɵɵpipeBind1","filters","itemType","ItemSearchSelectFilterModule","init_item_search_select_filter_module","__esmMin","init_input","init_galaxy_wrap","init_icon","init_chips","init_infinite_scroll_trigger","init_form_field","init_inventory_ui_i18n_module","init_ngx_translate_core","init_autocomplete","init_forms","init_common","init_item_search_select_filter_service","ItemSearchSelectFilterService","imports","CommonModule","MatInputModule","MatIconModule","MatChipsModule","GalaxyInfiniteScrollTriggerModule","GalaxyWrapModule","GalaxyFormFieldModule","InventoryUiI18nModule","TranslateModule","MatAutocompleteModule","ReactiveFormsModule","MatFormFieldModule","init_item_selection_cart_interface","__esmMin","init_item_selection_cart_module","__esmMin","init_services_module","__esmMin","init_src","__esmMin","init_active_items_module","init_billing_term_dialog_component","init_inventory_item","init_item_common_module","init_item_pricing_table","init_item_search_select_filter_module","init_item_selection_cart_interface","init_item_selection_cart_module","init_item_selector_module","init_services_module"],"x_google_ignoreList":[65,66]}