{"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<InventoryListItem[]> {\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<ActivationStatusesInterface>(\n          appStatuses,\n          (as: ActivationStatusesInterface) => as.appId,\n        );\n        const activationsMap = this.mapify<Activation>(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<ActivationStatusesInterface[]> {\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<Activation[]> {\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<AddonActivation[]>[]) => {\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<AccountProductDetails[]> {\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<T>(array: T[], keyFn: (item: T) => string | undefined): Map<string, T> {\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<string, T>());\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","<div *ngIf=\"item\" class=\"item-label\">\n  <glxy-avatar\n    data-cy=\"product-icon\"\n    data-testid=\"item-icon\"\n    [name]=\"item.name\"\n    [src]=\"item.iconUrl\"\n    [width]=\"32\"\n  ></glxy-avatar>\n  <div class=\"item-description\">\n    <div class=\"item-details\">\n      <span class=\"item-name-edition\" data-testid=\"item-name\">\n        {{ item.name }}\n        <span *ngIf=\"showEditionName && item.editionName\" data-testid=\"item-edition\">| {{ item.editionName }}</span>\n      </span>\n      <span *ngIf=\"item.quantity && item.quantity > 1\" class=\"item-quantity\">({{ item.quantity }})</span>\n    </div>\n    <ng-content></ng-content>\n    <span *ngIf=\"item.subtext\" class=\"item-subtext\" data-testid=\"item-subtext\">{{ item.subtext }}</span>\n    <span *ngIf=\"showItemId && item.itemId\" class=\"item-id\" data-testid=\"item-id\">{{ item.itemId }}</span>\n    <span\n      *ngIf=\"showStatus && item.status\"\n      [ngClass]=\"item.status === 'Canceled' || item.status === 'Demo expired' ? 'status-canceled' : 'status'\"\n      data-testid=\"item-status\"\n    >\n      {{ itemStatus | translate }}\n    </span>\n  </div>\n</div>\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<ItemListItemRemovedEvent>();\n\n  removeItem(itemId: string, parentItemId: string, isNested: boolean): void {\n    this.itemRemoved.emit({ itemId, parentItemId, isNested });\n  }\n}\n","<mat-list class=\"list-container\">\n  <ng-container *ngFor=\"let item of items\">\n    <ng-container\n      *ngTemplateOutlet=\"listItem; context: { item: item, parentItem: null, isNested: false }\"\n    ></ng-container>\n    <ng-container *ngIf=\"item.nestedItems?.length\">\n      <div class=\"nested-item-container\" *ngFor=\"let nestedItem of item.nestedItems\">\n        <ng-container\n          *ngTemplateOutlet=\"listItem; context: { item: nestedItem, parentItem: item, isNested: true }\"\n        ></ng-container>\n      </div>\n    </ng-container>\n  </ng-container>\n</mat-list>\n\n<ng-template #listItem let-item=\"item\" let-parentItem=\"parentItem\" let-isNested=\"isNested\">\n  <mat-list-item *ngIf=\"item.quantity > 0\" data-cy=\"item-row\">\n    <div class=\"item-container\">\n      <inventory-ui-item-label\n        [item]=\"{\n            itemId: item.itemId,\n            name: item.name,\n            editionName: item.type === 'app' ? item?.edition?.name : '',\n            iconUrl: item.iconUrl,\n            quantity: item.quantity,\n            status: item.status,\n          }\"\n        [showEditionName]=\"true\"\n        [showItemId]=\"false\"\n        [showStatus]=\"showStatus\"\n      />\n      <span *ngIf=\"removeButtonEnabled\" class=\"button-container\">\n        <button\n          mat-icon-button\n          type=\"button\"\n          data-cy=\"remove-button\"\n          (click)=\"removeItem(item.itemId, parentItem?.itemId, isNested)\"\n        >\n          <mat-icon>clear</mat-icon>\n        </button>\n      </span>\n    </div>\n  </mat-list-item>\n</ng-template>\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<InventoryListItem[]>;\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  <div class=\"title-container\">\n    <h3 class=\"title\">\n      {{ 'INVENTORY_UI.ACTIVE_ITEMS.TITLE' | translate }}\n    </h3>\n  </div>\n}\n\n@if (currentlyActiveItems$ | async; as items) {\n  @if (items.length) {\n    <inventory-ui-item-list [items]=\"items\" [showStatus]=\"true\" />\n  } @else {\n    <div class=\"no-items\">\n      {{ 'INVENTORY_UI.ACTIVE_ITEMS.NO_ACTIVE_ITEMS' | translate }}\n    </div>\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<string>();\n\n  handleEditionChange(event: MatSelectChange): void {\n    this.editionSelectionChange.emit(event.value);\n  }\n}\n","<glxy-form-field size=\"small\" *ngIf=\"editions\">\n  <mat-select\n    data-cy=\"select-product-edition-dropdown\"\n    [value]=\"selectedEditionId\"\n    (selectionChange)=\"handleEditionChange($event)\"\n  >\n    <mat-select-trigger>\n      <ng-container *ngIf=\"selectedEditionId | findItemEdition: editions as edition\">\n        <span class=\"active-edition-label\">\n          {{ edition?.name }}\n          <ng-container *ngIf=\"edition?.isActive\">\n            <glxy-badge [size]=\"'small'\" [color]=\"'blue'\">\n              {{ 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.ACTIVE' | translate }}\n            </glxy-badge>\n          </ng-container>\n        </span>\n      </ng-container>\n    </mat-select-trigger>\n    <mat-option\n      data-cy=\"edition-option\"\n      *ngFor=\"let edition of editions\"\n      [disabled]=\"edition?.isActive\"\n      [value]=\"edition?.editionId\"\n    >\n      {{ edition?.name }}\n      <ng-container *ngIf=\"edition?.isActive\">\n        <glxy-badge [size]=\"'small'\" [color]=\"'blue'\">\n          {{ 'INVENTORY_UI.ACTIVE_ITEMS.STATUS.ACTIVE' | translate }}\n        </glxy-badge>\n      </ng-container>\n    </mat-option>\n  </mat-select>\n</glxy-form-field>\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<PriceSummary> = 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","<div class=\"total-price price-div\">\n  <billing-ui-simple-price-display\n    [price]=\"oneTimeCost()\"\n    [frequency]=\"Frequency.ONE_TIME\"\n    [currencyCode]=\"currency()\"\n    [componentTextLength]=\"'verbose'\"\n    [allowCustomStyling]=\"true\"\n  ></billing-ui-simple-price-display>\n</div>\n<div class=\"recurring-price price-div\" *ngIf=\"monthlyCost()\">\n  <billing-ui-simple-price-display\n    [price]=\"monthlyCost()\"\n    [frequency]=\"Frequency.MONTHLY\"\n    [currencyCode]=\"currency()\"\n    [componentTextLength]=\"'verbose'\"\n    [allowCustomStyling]=\"true\"\n  ></billing-ui-simple-price-display>\n</div>\n<div class=\"recurring-price price-div\" *ngIf=\"yearlyCost()\">\n  <billing-ui-simple-price-display\n    [price]=\"yearlyCost()\"\n    [frequency]=\"Frequency.YEARLY\"\n    [currencyCode]=\"currency()\"\n    [componentTextLength]=\"'verbose'\"\n    [allowCustomStyling]=\"true\"\n  ></billing-ui-simple-price-display>\n</div>\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<Date | null>;\n  protected state$!: Observable<State>;\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<BillingTermDialogComponent>,\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<Date | null> {\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  <h2 mat-dialog-title>{{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.TITLE' | translate }}</h2>\n  <mat-dialog-content>\n    <form [formGroup]=\"form\">\n      <div class=\"item-info-pricing-container\">\n        <div class=\"item-name-icon-container\">\n          <inventory-ui-item-label\n            [item]=\"{\n              itemId: input.itemId,\n              name: input.name,\n              iconUrl: input.iconUrl,\n              editionName: input.editionName,\n            }\"\n            [showItemId]=\"false\"\n            [showEditionName]=\"true\"\n          />\n        </div>\n        <billing-ui-simple-price-display\n          class=\"center-text-vertically\"\n          [price]=\"input.revenueComponent.revenue\"\n          [frequency]=\"this.billingFrequency | revenuePeriodToGalaxyFrequency\"\n        />\n      </div>\n\n      <glxy-form-field>\n        <glxy-label>{{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.BILLING_TERMS' | translate }}</glxy-label>\n        <mat-select formControlName=\"billingTerm\" (selectionChange)=\"handleBillingTermChange($event.value)\">\n          <mat-option *ngFor=\"let option of termOptions\" [value]=\"option.value\">\n            {{ option.label | translate }}\n          </mat-option>\n        </mat-select>\n      </glxy-form-field>\n\n      @if (input.canScheduleActivations) {\n        <glxy-form-field>\n          <glxy-label>{{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.START_DATE' | translate }}</glxy-label>\n          <input matInput [matDatepicker]=\"startDate\" formControlName=\"startDate\" [min]=\"currentDate\" />\n          <mat-datepicker-toggle matSuffix [for]=\"startDate\" />\n          <mat-datepicker #startDate />\n        </glxy-form-field>\n      }\n\n      <glxy-form-row *ngIf=\"!form.controls.billingTerm.value\">\n        <glxy-form-field\n          [suffixText]=\"this.billingFrequency | formatRevenuePeriod: form.controls.nBillingPeriods.value | translate\"\n        >\n          <glxy-label>\n            {{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.TERM_LENGTH' | translate }}\n          </glxy-label>\n          <input matInput type=\"number\" formControlName=\"nBillingPeriods\" min=\"1\" />\n          <glxy-hint>\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          </glxy-hint>\n        </glxy-form-field>\n      </glxy-form-row>\n      @if (input.canEditInvoices) {\n        <glxy-form-field>\n          <div class=\"toggle-container\">\n            <mat-slide-toggle formControlName=\"billable\">\n              <span>{{ 'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.INCLUDE_IN_INVOICES' | translate }}</span>\n            </mat-slide-toggle>\n            <mat-hint>{{\n              'INVENTORY_UI.EDIT_BILLING_TERMS_DIALOG.FORM.INCLUDE_IN_INVOICES_HINT' | translate\n            }}</mat-hint>\n          </div>\n        </glxy-form-field>\n      }\n    </form>\n  </mat-dialog-content>\n  <mat-dialog-actions class=\"dialog-buttons\">\n    <button mat-stroked-button mat-dialog-close>\n      {{ 'INVENTORY_UI.COMMON.ACTIONS.CANCEL' | translate }}\n    </button>\n    @if (input.canAddAnotherTerm) {\n      <glxy-button-group>\n        <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!form.valid\">\n          {{ 'INVENTORY_UI.COMMON.ACTIONS.SAVE' | translate }}\n        </button>\n        <button class=\"dropdown-icon\" mat-flat-button color=\"primary\" [matMenuTriggerFor]=\"saveMenu\">\n          <mat-icon>arrow_drop_down</mat-icon>\n        </button>\n      </glxy-button-group>\n      <mat-menu #saveMenu=\"matMenu\">\n        <button mat-menu-item (click)=\"save()\" [disabled]=\"!form.valid\">\n          {{ 'INVENTORY_UI.COMMON.ACTIONS.SAVE' | translate }}\n        </button>\n        <button mat-menu-item (click)=\"save(true)\" [disabled]=\"!form.valid\">\n          {{ 'INVENTORY_UI.BILLING_PERIOD.SAVE_AND_ADD_ANOTHER_TERM' | translate }}\n        </button>\n      </mat-menu>\n    } @else {\n      <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!form.valid\">\n        {{ 'INVENTORY_UI.COMMON.ACTIONS.SAVE' | translate }}\n      </button>\n    }\n  </mat-dialog-actions>\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<GenericResellerItem>) {\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<T extends InventoryItemAdapter>(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<SelectedItem, 'type'> = {\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<I, V>(array: I[], keyFn: (item: I) => string, valueFn: (item: I) => V): Map<string, V> {\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<InventoryItem[]> {\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<Map<string, InventoryItem[]>> {\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<Package[]> {\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<App[]> {\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<App>(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<SelectedItem[]>;\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","<a class=\"view-contents-button\" [glxyPopover]=\"popover\" (click)=\"togglePopover()\" data-cy=\"show-contents-button\">\n  Package (view contents)\n</a>\n\n<glxy-popover\n  #popover\n  [(isOpen)]=\"isOpen\"\n  [positions]=\"[PopoverPositions.Bottom, PopoverPositions.Top]\"\n  [hasArrow]=\"true\"\n  [keepOnScreen]=\"true\"\n  [padding]=\"'none'\"\n  [closeOnBackdropClick]=\"true\"\n  [closeOnEscapeKey]=\"true\"\n>\n  <div class=\"item-list-container\">\n    <ng-container *ngIf=\"packageItems$ | async as packageItems; else loadingSpinner\">\n      <inventory-ui-item-list [items]=\"packageItems\" />\n    </ng-container>\n  </div>\n</glxy-popover>\n\n<ng-template #loadingSpinner>\n  <glxy-loading-spinner [fullWidth]=\"true\" [fullHeight]=\"true\"></glxy-loading-spinner>\n</ng-template>\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<ItemFrequencyPrice>((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<ItemRow> {\n  private refreshTrigger$$: BehaviorSubject<void> = new BehaviorSubject<void>(undefined);\n\n  private appCache: Map<string, App> = new Map<string, App>();\n  private packageCache: Map<string, Package> = new Map<string, Package>();\n  private appPricesCache: Map<string, AppPrices> = new Map<string, AppPrices>();\n\n  constructor(\n    private readonly items$: Observable<InventoryItemWithPricing[]>,\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<PagedResponseInterface<ItemRow>> {\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<ItemRow>;\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<string, AppPrices>,\n    apps: Map<string, App>,\n    packages: Map<string, Package>,\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<Map<string, AppPrices>> {\n    if (!items.length) return of(new Map<string, AppPrices>());\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<Map<string, App>> {\n    const appItems = items.filter((item) => item.type !== 'package');\n    if (!appItems.length) return of(new Map<string, App>());\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<Map<string, Package>> {\n    const packageIds = items.filter((item) => item.type === 'package').map((item) => item.itemId);\n    if (!packageIds.length) return of(new Map<string, Package>());\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<string, any> {\n    return array.reduce((map, item) => {\n      map.set(keyFn(item), item);\n      return map;\n    }, new Map<string, any>());\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<boolean> = new Subject<boolean>();\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<BillingFrequencyDialogComponent, BillingFrequencyDialogOutput>,\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","<h2 mat-dialog-title>{{ 'INVENTORY_UI.EDIT_RETAIL_BILLING_FREQUENCY_DIALOG.TITLE' | translate }}</h2>\n<mat-dialog-content>\n  <form [formGroup]=\"form\">\n    <div class=\"item-info-pricing-container\">\n      <div class=\"item-name-icon-container\">\n        <inventory-ui-item-label\n          [item]=\"{\n            itemId: data.itemId,\n            name: data.name,\n            iconUrl: data.iconUrl,\n            editionName: data.editionName,\n          }\"\n          [showItemId]=\"false\"\n          [showEditionName]=\"true\"\n        />\n      </div>\n      <billing-ui-simple-price-display\n        class=\"center-text-vertically\"\n        [price]=\"data.revenueComponent.revenue\"\n        [frequency]=\"this.billingFrequency | revenuePeriodToGalaxyFrequency\"\n      />\n    </div>\n    <glxy-form-field>\n      <glxy-label>{{\n        'INVENTORY_UI.EDIT_RETAIL_BILLING_FREQUENCY_DIALOG.RETAIL_BILLING_FREQUENCY' | translate\n      }}</glxy-label>\n      <mat-select formControlName=\"frequency\" [disabled]=\"data.viewOnly\">\n        <mat-option *ngFor=\"let frequency of frequencyOptions\" [value]=\"frequency.value\">\n          {{ frequency.label | translate }}\n        </mat-option>\n      </mat-select>\n    </glxy-form-field>\n  </form>\n</mat-dialog-content>\n<mat-dialog-actions class=\"dialog-buttons\">\n  <button mat-stroked-button mat-dialog-close>\n    {{ 'INVENTORY_UI.COMMON.ACTIONS.CANCEL' | translate }}\n  </button>\n  <button mat-flat-button color=\"primary\" (click)=\"save()\" [disabled]=\"!form.valid\">\n    {{ 'INVENTORY_UI.COMMON.ACTIONS.SAVE' | translate }}\n  </button>\n</mat-dialog-actions>\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<InventoryItemWithPricing[]>([]);\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<ItemRowChangeEvent>();\n  @Output() valid = new EventEmitter<boolean>();\n  @Output() wholesaleTotal = new EventEmitter<number>();\n\n  private _invalidPriceItems: string[] = [];\n\n  dataSource!: ItemPricingTableDataSource;\n  tableDataSource!: GalaxyDataSource<ItemRow>;\n  columns: GalaxyColumnDef[] = ITEM_PRICING_TABLE_COLUMNS;\n  Frequency = Frequency;\n  priceTotals$!: Observable<PriceTotal>;\n  showManagementFees = true;\n\n  private injector = inject(Injector);\n  private dataMembers!: Signal<ItemRow[]>;\n  private wholesaleSummary$!: Observable<PriceSummary>;\n  private retailSummary$!: Observable<PriceSummary>;\n  public wholesaleSummary!: Signal<PriceSummary>;\n  public retailSummary!: Signal<PriceSummary>;\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<ItemRow>(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 <boolean>(\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((<HTMLInputElement>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<BillingFrequencyDialogOutput> {\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<PriceSummary> => {\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","<glxy-table-container\n  [dataSource]=\"tableDataSource\"\n  [columns]=\"columns\"\n  [showFooter]=\"false\"\n  [border]=\"!config.hideBorder\"\n>\n  <mat-table>\n    <mat-header-row *matHeaderRowDef=\"[]\" />\n    <ng-container matColumnDef=\"name\">\n      <mat-header-cell class=\"name-column-label\" *matHeaderCellDef>\n        {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.ITEM' | translate }}\n      </mat-header-cell>\n      <mat-cell class=\"name-column\" *matCellDef=\"let item\">\n        <div class=\"cell-top\">\n          <inventory-ui-item-label\n            [item]=\"{\n              itemId: item?.itemId,\n              name: item?.name,\n              editionName: item?.edition?.name,\n              iconUrl: item?.iconUrl,\n              subtext:\n                viewOnly && config.billingTermsConfig?.enabled && item?.billingTerm\n                  ? (item?.billingTerm\n                    | formatBillingTerm: item?.retailPricing?.frequency : config.billingTermsConfig?.defaultStartDate)\n                  : viewOnly &&\n                      config.billingTermsConfig?.enabled &&\n                      item?.retailPricing?.frequency !== Frequency.ONE_TIME\n                    ? ('INVENTORY_UI.ITEM_PRICING_TABLE.AUTOMATICALLY_RENEW' | translate)\n                    : '',\n            }\"\n            [showItemId]=\"false\"\n            [showEditionName]=\"true\"\n          >\n            @if (!config.hidePackageContents) {\n              <inventory-ui-package-contents-popover\n                *ngIf=\"item?.type === 'package'\"\n                [packageId]=\"item?.itemId\"\n                [partnerId]=\"config.partnerId\"\n                [marketId]=\"config.marketId\"\n              />\n            }\n            @if (\n              !viewOnly &&\n              config.billingTermsConfig?.enabled &&\n              (item?.retailPricing?.frequency !== Frequency.ONE_TIME || item?.billingTerm)\n            ) {\n              <div class=\"billing-term-link\" (click)=\"publishChanges(item, 'edit-billing-term', 'link')\">\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              </div>\n            }\n          </inventory-ui-item-label>\n        </div>\n        <div class=\"cell-bottom fee label\">\n          <div class=\"item-fees label\" *ngFor=\"let fee of item.fees\">\n            <ng-container *ngIf=\"fee.type === 'setup' || showManagementFees\">\n              <mat-icon class=\"fee-icon\">subdirectory_arrow_right</mat-icon>\n              <span>{{ fee.label }}</span>\n            </ng-container>\n          </div>\n        </div>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container matColumnDef=\"quantity\">\n      <mat-header-cell class=\"quantity-column-label\" *matHeaderCellDef>\n        {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.QUANTITY' | translate }}\n      </mat-header-cell>\n      <mat-cell class=\"quantity-column\" *matCellDef=\"let item\" data-cy=\"item-quantity-cell\">\n        <div class=\"cell-top\">\n          @if (config?.quantityEditable && item.isMultiactivatable && item.type === 'addon' && !viewOnly) {\n            <glxy-form-field>\n              <input\n                matInput\n                dense\n                type=\"number\"\n                min=\"1\"\n                [value]=\"item.quantity\"\n                (change)=\"onQuantityChange($event, item)\"\n              />\n            </glxy-form-field>\n          } @else {\n            <span class=\"quantity\">{{ item.quantity }}</span>\n          }\n        </div>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container matColumnDef=\"wholesale_price\">\n      <mat-header-cell class=\"pricing-column-label\" *matHeaderCellDef>\n        {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.WHOLESALE' | translate }}\n      </mat-header-cell>\n      <mat-cell class=\"pricing-column\" *matCellDef=\"let item\">\n        <div>\n          <div class=\"cell-top\" [ngClass]=\"{ 'input-box': item.wholesalePricing.usesVariablePricing }\">\n            <billing-ui-simple-price-display\n              *ngIf=\"item.wholesalePricing.usesVariablePricing !== true; else wholesaleSpend\"\n              class=\"item-pricing\"\n              [align]=\"'end'\"\n              [prices]=\"item.wholesalePricing.frequencyPrices\"\n              [currencyCode]=\"item.wholesalePricing.currency\"\n              [contactSales]=\"item.wholesalePricing.contactSales\"\n              [discounts]=\"item.wholesalePricing.discounts\"\n              data-cy=\"wholesale-price-display\"\n            />\n            <ng-template #wholesaleSpend>\n              <glxy-currency-field\n                *ngFor=\"let frequencyPrice of item.wholesalePricing.frequencyPrices\"\n                [value]=\"frequencyPrice.price | centsToDollars\"\n                [currencyCode]=\"frequencyPrice.currency\"\n                [minimumValue]=\"'0'\"\n                [validators]=\"frequencyPrice.minimumPrice | centsToDollars | priceValidator\"\n                [hint]=\"frequencyPrice.minimumPrice | price: frequencyPrice.currency | formatWholesaleMinimumHint\"\n                [suffixText]=\"frequencyPrice.frequency | glxyFrequency\"\n                [maxWidth]=\"220\"\n                (change)=\"onPriceChange($event, item, 'wholesale', frequencyPrice.frequency)\"\n                [bottomSpacing]=\"'none'\"\n                data-cy=\"wholesale-spend\"\n              />\n            </ng-template>\n          </div>\n          <div class=\"cell-bottom\">\n            <ng-container *ngFor=\"let fee of item.fees\">\n              <billing-ui-simple-price-display\n                class=\"item-fees simple-price-display\"\n                *ngIf=\"fee.wholesaleAmount > 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            </ng-container>\n          </div>\n        </div>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container matColumnDef=\"retail_price\">\n      <mat-header-cell class=\"pricing-column-label\" *matHeaderCellDef>\n        {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.RETAIL' | translate }}\n      </mat-header-cell>\n      <mat-cell class=\"pricing-column\" *matCellDef=\"let item\">\n        <div>\n          @if (viewOnly && this.config.unifiedOrdersEnabled) {\n            <div class=\"view-only-top-cell\">\n              <billing-ui-simple-price-display\n                class=\"item-pricing\"\n                [align]=\"'end'\"\n                [price]=\"item.retailPricing.price\"\n                [currencyCode]=\"item.retailPricing.currency\"\n                [frequency]=\"item.retailPricing.frequency\"\n              />\n              @if (item.isDiscountedRetailPrice) {\n                <billing-ui-simple-price-display\n                  class=\"item-pricing crossed-out-price\"\n                  [align]=\"'end'\"\n                  [price]=\"item.defaultRetailPricing.price\"\n                  [currencyCode]=\"item.defaultRetailPricing.currency\"\n                  [frequency]=\"item.defaultRetailPricing.frequency\"\n                />\n              }\n            </div>\n            <div class=\"view-only-fees\">\n              <ng-container *ngFor=\"let fee of item.fees\">\n                @if (fee.type === 'setup' || fee.showManagementFees) {\n                  <billing-ui-simple-price-display\n                    *ngIf=\"fee.retailAmount >= 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                  <billing-ui-simple-price-display\n                    *ngIf=\"fee.retailDefaultAmount > 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              </ng-container>\n            </div>\n          } @else {\n            <div class=\"cell-top input-box\">\n              <glxy-currency-field\n                [value]=\"item.retailPricing.price | centsToDollars\"\n                [currencyCode]=\"item.retailPricing.currency\"\n                [minimumValue]=\"'0'\"\n                [suffixText]=\"showRetailFrequencySuffix ? (item.retailPricing.frequency | glxyFrequency) : undefined\"\n                [maxWidth]=\"220\"\n                (change)=\"onPriceChange($event, item, 'retail', item.retailPricing.frequency)\"\n                [bottomSpacing]=\"'none'\"\n                [viewOnly]=\"viewOnly\"\n                data-cy=\"retail-price\"\n              />\n              @if (item.displayOriginalPrice && this.config.unifiedOrdersEnabled) {\n                <div class=\"fake-hint\">\n                  <span class=\"original-price-hint\">{{\n                    'INVENTORY_UI.ITEM_PRICING_TABLE.ORIGINAL_PRICE_HINT' | translate\n                  }}</span>\n                  <billing-ui-simple-price-display\n                    [align]=\"'end'\"\n                    [price]=\"item.defaultRetailPricing.price\"\n                    [currencyCode]=\"item.defaultRetailPricing.currency\"\n                    [frequency]=\"item.defaultRetailPricing.frequency\"\n                  />\n                </div>\n              }\n            </div>\n            <div class=\"cell-bottom\">\n              <ng-container *ngFor=\"let fee of item.fees\">\n                <glxy-currency-field\n                  *ngIf=\"fee.retailAmount >= 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                  <div class=\"fake-hint\">\n                    <span class=\"original-price-hint\">{{\n                      'INVENTORY_UI.ITEM_PRICING_TABLE.ORIGINAL_PRICE_HINT' | translate\n                    }}</span>\n                    <billing-ui-simple-price-display\n                      [align]=\"'end'\"\n                      [price]=\"fee.retailDefaultAmount\"\n                      [currencyCode]=\"item.retailPricing.currency\"\n                      [frequency]=\"Frequency.ONE_TIME\"\n                    />\n                  </div>\n                }\n              </ng-container>\n            </div>\n          }\n        </div>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container matColumnDef=\"retail_price_total\">\n      <mat-header-cell class=\"pricing-column-label\" *matHeaderCellDef>\n        {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.COLUMNS.RETAIL_TOTAL' | translate }}\n      </mat-header-cell>\n      <mat-cell class=\"pricing-column\" *matCellDef=\"let item\">\n        <div>\n          <div class=\"cell-top\">\n            <billing-ui-simple-price-display\n              class=\"item-pricing\"\n              [align]=\"'end'\"\n              [price]=\"item.retailPricing.total\"\n              [currencyCode]=\"item.retailPricing.currency\"\n              [frequency]=\"item.retailPricing.frequency\"\n            />\n          </div>\n          <div class=\"cell-bottom\">\n            <ng-container *ngFor=\"let fee of item.fees\">\n              <billing-ui-simple-price-display\n                class=\"item-fees\"\n                *ngIf=\"fee.retailAmountTotal > 0; else noFee\"\n                [align]=\"'end'\"\n                [price]=\"fee.retailAmountTotal\"\n                [currencyCode]=\"item.retailPricing.currency\"\n                [frequency]=\"Frequency.ONE_TIME\"\n              />\n            </ng-container>\n          </div>\n        </div>\n      </mat-cell>\n    </ng-container>\n\n    <ng-container matColumnDef=\"menu\">\n      <mat-header-cell class=\"menu-column\" *matHeaderCellDef />\n      <mat-cell class=\"menu-column\" *matCellDef=\"let item\">\n        @if (!viewOnly) {\n          <div>\n            <div class=\"cell-top menu\">\n              <button mat-icon-button [matMenuTriggerFor]=\"menu\" data-cy=\"menu-trigger\">\n                <mat-icon>more_vert</mat-icon>\n              </button>\n              <mat-menu #menu=\"matMenu\">\n                @if (config.billingTermsConfig?.enabled) {\n                  <button class=\"edit-billing-terms\" mat-menu-item (click)=\"publishChanges(item, 'edit-billing-term')\">\n                    {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.EDIT_BILLING_TERMS' | translate }}\n                  </button>\n\n                  @if (config.selectionEditable && item.billingTerm && item.isMultiactivatable) {\n                    <button class=\"add-billing-terms\" mat-menu-item (click)=\"publishChanges(item, 'add-billing-term')\">\n                      {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.ADD_BILLING_TERMS' | translate }}\n                    </button>\n                  }\n                }\n                <button mat-menu-item (click)=\"editRetailBillingFrequency(item)\" data-cy=\"edit-billing-frequency\">\n                  {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.EDIT_BILLING_FREQUENCY' | translate }}\n                </button>\n                <button\n                  mat-menu-item\n                  (click)=\"addSetupFee(item)\"\n                  [disabled]=\"item.fees | hasSetupFee\"\n                  data-cy=\"add-setup-fee\"\n                >\n                  {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.ADD_SETUP_FEE' | translate }}\n                </button>\n                <button mat-menu-item (click)=\"resetItemPricing(item)\" data-cy=\"reset-to-default\">\n                  {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.RESET_TO_DEFAULT' | translate }}\n                </button>\n                @if (config?.selectionEditable) {\n                  <button mat-menu-item (click)=\"onRemoveItem(item)\">\n                    {{ 'INVENTORY_UI.ITEM_PRICING_TABLE.ACTION_MENU.REMOVE_ITEM' | translate }}\n                  </button>\n                }\n              </mat-menu>\n            </div>\n\n            <ng-container *ngFor=\"let fee of item.fees\">\n              <div class=\"cell-bottom close\" *ngIf=\"fee | isSetupFeeRemovable\">\n                <button mat-icon-button (click)=\"removeSetupFee(item, fee)\" data-cy=\"remove-setup-fee\">\n                  <mat-icon>close</mat-icon>\n                </button>\n              </div>\n            </ng-container>\n          </div>\n        }\n      </mat-cell>\n    </ng-container>\n    <mat-row *matRowDef=\"let row; columns: []\" />\n  </mat-table>\n\n  @if (!config?.hidePriceSummary) {\n    <ng-container *ngIf=\"priceTotals$ | async as total\">\n      <ng-container *ngIf=\"total.initialized; else loadingTotals\">\n        <div class=\"price-summary-footer\">\n          <div class=\"totals-row\">\n            <span>{{ 'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.TOTALS' | translate }}</span>\n          </div>\n\n          <div class=\"row price-summary-row\" data-cy=\"price-summary-footer\">\n            <div class=\"row price-row wholesale-row\">\n              <div>\n                <span class=\"price-type-text\">{{\n                  'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.WHOLESALE' | translate\n                }}</span>\n              </div>\n              <div class=\"price-display\">\n                <inventory-ui-price-summary-display [priceTotal]=\"wholesaleSummary\" />\n              </div>\n            </div>\n\n            <div class=\"row price-row retail-row\">\n              <div>\n                <span class=\"price-type-text\">{{ 'INVENTORY_UI.ITEM_PRICING_TABLE.FOOTER.RETAIL' | translate }}</span>\n              </div>\n              <div class=\"price-display\">\n                <inventory-ui-price-summary-display [priceTotal]=\"retailSummary\" />\n              </div>\n            </div>\n          </div>\n        </div>\n      </ng-container>\n    </ng-container>\n  }\n\n  <ng-template #noFee><div style=\"height: 20px; margin-bottom: 12px\"></div></ng-template>\n  <ng-template #loadingTotals><div class=\"stencil-shimmer loading-shimmer\"></div></ng-template>\n</glxy-table-container>\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<SelectedItem[]> {\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<Map<string, InventoryItem[]>> {\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<string, InventoryItem[]>,\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<Map<string, InventoryDependencyItem[]>> {\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<MissingItems> {\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<string, ListDependenciesRequiredItem[]> {\n    return mapify(\n      Object.entries(missingItems) || [],\n      ([itemId]) => itemId,\n      ([, requiredItems]) => requiredItems.requiredItems,\n    );\n  }\n\n  private filterMissingItems(\n    missingItemsMap: Map<string, ListDependenciesRequiredItem[]>,\n    availableItems: InventoryItem[],\n  ): Map<string, ListDependenciesRequiredItem[]> {\n    const availableApps = availableItems as InventoryItemApp[];\n    const filteredMissingItems = new Map<string, ListDependenciesRequiredItem[]>();\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<string, ListDependenciesRequiredItem[]>,\n  ): Observable<Map<string, InventoryDependencyItem[]>> {\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<string, InventoryDependencyItem[]>();\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<Map<string, App>> {\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<boolean>;\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<SelectedItem[]> = signal([]);\n  private _immutableSelectedItems: WritableSignal<SelectedItem[]> = signal([]);\n  private _availableItems: WritableSignal<InventoryItem[]> = signal([]);\n  private _changeEvents: WritableSignal<SelectionEvent[]> = signal([]);\n\n  public readonly selectedItems: Signal<SelectedItem[]> = this._selectedItems.asReadonly();\n  public readonly immutableSelectedItems: Signal<SelectedItem[]> = this._immutableSelectedItems.asReadonly();\n  public readonly availableItems: Signal<SelectedItem[]> = this._availableItems.asReadonly();\n  public readonly changeEvents: Signal<SelectionEvent[]> = this._changeEvents.asReadonly();\n\n  public readonly allItems: Signal<SelectedItem[]> = 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<SelectedItem>((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<SelectedItem[]> {\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<Map<string, InventoryDependencyItem[]>> {\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<string, InventoryDependencyItem[]>,\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<ItemSelectorRowItem, ItemSelectorFilters> {\n  constructor(\n    private readonly itemsApiService: ItemsApiService,\n    private readonly appPricingApiService: AppPricingApiService,\n    private readonly editionsService: EditionsApiService,\n    private readonly sortOptions$: Observable<ListActivatableItemsSortOptions>,\n    private readonly itemSelectorServiceV2: ItemSelectorServiceV2,\n    private readonly immutableSelectedItems$: Observable<SelectedItem[]>,\n    private readonly selectedItems$: Observable<SelectedItem[]>,\n    private readonly config: Required<ItemSelectorConfig>,\n    private readonly partnerApiService: PartnerApiService,\n  ) {}\n\n  get(\n    pagedReq: PagedListRequestInterface<ItemSelectorFilters>,\n  ): Observable<PagedResponseInterface<ItemSelectorRowItem>> {\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<ItemSelectorFilters>,\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<PagedResponseInterface<ItemSelectorRowItem>> {\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<ItemSelectorRowItem>,\n  ): Observable<PagedResponseInterface<ItemSelectorRowItem>> {\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<ItemSelectorRowItem>,\n    pricing: GetItemPricingState,\n    editions: ListByMultiAppResponseAppEditions[],\n    apps: App[],\n  ): PagedResponseInterface<ItemSelectorRowItem> {\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<GetItemPricingState> {\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<GetMultiPricingResponse, GetItemPricingState>((resp) => ({\n        prices: resp?.appPrices ?? [],\n        loading: false,\n      })),\n      catchError(() => {\n        return of<GetItemPricingState>({ prices: [], loading: false });\n      }),\n      startWith<GetItemPricingState>({ 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<ItemSelectorRowItem>,\n  ): Observable<ListByMultiAppResponseAppEditions[]> {\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<App[]> {\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<ItemSelectorConfig> = 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<SelectionChange> = new EventEmitter<SelectionChange>();\n\n  @ViewChild('tableHeader') tableHeader!: TableContentHeaderComponent;\n  columns: GalaxyColumnDef[] = ITEMS_SELECTOR_COLUMNS;\n  dataSource!: ItemSelectorDataSource;\n  tableDataSource!: GalaxyDataSource<ItemSelectorRowItem, ItemSelectorFilters>;\n\n  private sortOptions$$ = new BehaviorSubject<ListActivatableItemsSortOptions>(\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<ItemSelectorState>({\n    itemType: 'products',\n    requiredItem: null,\n    showAddons: true,\n    showUnavailableItems: false,\n  });\n\n  private filters = computed<ItemSelectorFilters>(() => {\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<LineItem>((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<ItemSelectorRowItem, ItemSelectorFilters>(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<boolean> {\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<ItemSelectorConfig> = {\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","<glxy-table-container\n  class=\"product-selector-table-container\"\n  [columns]=\"columns\"\n  [dataSource]=\"tableDataSource\"\n  [pageSize]=\"configuration.pageSize\"\n  [pageSizeOptions]=\"[15, 30, 50]\"\n>\n  <glxy-table-content-header\n    #tableHeader\n    [showColumnArrange]=\"false\"\n    [showSearch]=\"true\"\n    [showFilters]=\"true\"\n    [showFiltersButton]=\"false\"\n    [showFiltersOpen]=\"!!requiredItem()\"\n    [showSort]=\"false\"\n    [showActions]=\"false\"\n  >\n    <div *ngIf=\"configuration?.itemTypesAvailable?.length > 1\" filter-button class=\"filter-toggle\">\n      <mat-button-toggle-group class=\"item-type-filter\">\n        <mat-button-toggle\n          value=\"products\"\n          checked\n          (change)=\"setItemType($event.value)\"\n          data-cy=\"item-type-filter-toggle-products\"\n        >\n          {{ 'INVENTORY_UI.COMMON.ITEM_TYPE.PRODUCTS' | translate }}\n        </mat-button-toggle>\n        <mat-button-toggle\n          value=\"packages\"\n          (change)=\"setItemType($event.value)\"\n          data-cy=\"item-type-filter-toggle-packages\"\n        >\n          {{ 'INVENTORY_UI.COMMON.ITEM_TYPE.PACKAGES' | translate }}\n        </mat-button-toggle>\n      </mat-button-toggle-group>\n    </div>\n\n    <div after-search class=\"after-search-container\">\n      <mat-checkbox\n        *ngIf=\"itemType() === 'products' || itemType() === 'allItems'\"\n        data-cy=\"show-addonitems-checkbox\"\n        [checked]=\"showAddons()\"\n        (click)=\"setShowAddons(!showAddons())\"\n      >\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.SHOW_ADDONS' | translate }}\n      </mat-checkbox>\n\n      <mat-checkbox\n        data-cy=\"show-unavailable-checkbox\"\n        [checked]=\"showUnavailableItems()\"\n        (click)=\"setShowUnavailableItems(!showUnavailableItems())\"\n      >\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.SHOW_UNAVAILABLE' | translate }}\n      </mat-checkbox>\n    </div>\n\n    <div filters-area data-cy=\"selector-filter-chips\">\n      <mat-chip data-cy=\"selector-filter-chip\" *ngIf=\"!!requiredItem()\" (removed)=\"unsetRequiredItem()\">\n        Add-ons: {{ requiredItem()?.sellerWhitelabelName ?? requiredItem()?.defaultName ?? requiredItem()?.itemId }}\n        <button matChipRemove>\n          <mat-icon>cancel</mat-icon>\n        </button>\n      </mat-chip>\n    </div>\n  </glxy-table-content-header>\n\n  <table mat-table>\n    <tr mat-header-row *matHeaderRowDef=\"[]\"></tr>\n\n    <!-- Checkbox Column -->\n    <ng-container matColumnDef=\"checkbox\">\n      <th mat-header-cell *matHeaderCellDef data-cy=\"header-cell\"></th>\n      <td mat-cell *matCellDef=\"let item\" class=\"checkbox-cell\">\n        <div\n          *ngIf=\"!dependenciesLoading; else loadingSpinner\"\n          [glxyTooltip]=\"item | formatDisabledItem: configuration.country : 'tooltip'\"\n          [glxyTooltipDisabled]=\"!(item | isItemDisabled: configuration.hideQuantity)\"\n          [highContrast]=\"false\"\n        >\n          <mat-checkbox\n            #checkbox\n            data-cy=\"select-item-checkbox\"\n            [checked]=\"item.isSelected\"\n            [disabled]=\"item | isItemDisabled: configuration.hideQuantity\"\n            (click)=\"handleSelectionChange(!item.isSelected, item)\"\n          ></mat-checkbox>\n        </div>\n\n        <ng-template #loadingSpinner>\n          <glxy-loading-spinner [size]=\"'small'\"></glxy-loading-spinner>\n        </ng-template>\n      </td>\n    </ng-container>\n\n    <!-- Name Column -->\n    <ng-container matColumnDef=\"name\">\n      <th mat-header-cell *matHeaderCellDef data-cy=\"header-cell\">\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.NAME' | translate }}\n      </th>\n      <td mat-cell *matCellDef=\"let item\">\n        <div class=\"product-cell\">\n          <glxy-avatar\n            data-cy=\"product-icon\"\n            [width]=\"32\"\n            [name]=\"item?.sellerWhitelabelName ?? item?.defaultName\"\n            [src]=\"item?.sellerWhitelabelIconUrl ?? item?.iconUrl\"\n          ></glxy-avatar>\n          <div class=\"product-name-type\">\n            <div class=\"product-edition\">\n              <div class=\"product-name\">\n                {{ item?.sellerWhitelabelName ?? item?.defaultName }}\n              </div>\n              <div *ngIf=\"item?.usesEditions\">\n                <inventory-ui-edition-selector\n                  *ngIf=\"item?.editions\"\n                  [selectedEditionId]=\"item?.editionId\"\n                  [editions]=\"item.editions\"\n                  (editionSelectionChange)=\"handleEditionChange($event, item)\"\n                ></inventory-ui-edition-selector>\n                <span *ngIf=\"!item?.editions\" class=\"stencil-shimmer edition-shimmer\"></span>\n              </div>\n            </div>\n\n            <div>\n              <ng-container\n                *ngIf=\"\n                  configuration.hideOwnerName || item.itemType === ItemType.ITEM_TYPE_PACKAGE;\n                  else itemTypeByOwner\n                \"\n              >\n                <ng-container *ngIf=\"item.itemType === ItemType.ITEM_TYPE_PACKAGE; else itemTypeOnly\">\n                  <inventory-ui-package-contents-popover\n                    [packageId]=\"item?.itemId\"\n                    [partnerId]=\"configuration.partnerId\"\n                    [marketId]=\"configuration.marketId\"\n                  />\n                </ng-container>\n                <ng-template #itemTypeOnly>\n                  {{ item | formatProductType }}\n                </ng-template>\n              </ng-container>\n              <ng-template #itemTypeByOwner>\n                {{\n                  'INVENTORY_UI.ITEM_SELECTOR.ITEM_TYPE_BY_OWNER'\n                    | translate: { itemType: item | formatProductType, owner: item.ownerName }\n                }}\n              </ng-template>\n            </div>\n\n            <div *ngIf=\"item | isItemDisabled: configuration.hideQuantity; else productRequirements\">\n              {{ item | formatDisabledItem: configuration.country : 'subtext' }}\n            </div>\n\n            <ng-template #productRequirements>\n              <div\n                *ngIf=\"item?.requiredItems?.length\"\n                (mouseenter)=\"productRequirementPopover.isOpen = item.requiredItems.length > 1\"\n                (mouseleave)=\"productRequirementPopover.isOpen = false\"\n                [glxyPopover]=\"productRequirementPopover\"\n              >\n                {{ item | formatProductRequirement }}\n              </div>\n\n              <glxy-popover #productRequirementPopover [positions]=\"[PopoverPositions.Right]\">\n                <p>{{ 'INVENTORY_UI.ITEM_SELECTOR.REQUIRED_ITEMS_LABEL' | translate }}</p>\n                <ul>\n                  <li *ngFor=\"let requiredItem of item?.requiredItems\">\n                    {{ requiredItem.name }}\n                  </li>\n                </ul>\n              </glxy-popover>\n            </ng-template>\n            <mat-chip\n              *ngIf=\"item.itemType === ItemType.ITEM_TYPE_APP && item.childApps?.length > 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            </mat-chip>\n          </div>\n        </div>\n      </td>\n    </ng-container>\n\n    <!-- Quantity Input Column -->\n    <ng-container matColumnDef=\"quantityInput\">\n      <th mat-header-cell *matHeaderCellDef data-cy=\"header-cell\">\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.QUANTITY' | translate }}\n      </th>\n      <td mat-cell class=\"quantity-column\" *matCellDef=\"let item\">\n        <glxy-form-field\n          *ngIf=\"\n            item?.isMultiactivatable && item?.itemType === ItemType.ITEM_TYPE_ADDON && !this.configuration.hideQuantity\n          \"\n        >\n          <input\n            data-cy=\"quantity-input\"\n            matInput\n            type=\"number\"\n            dense\n            min=\"0\"\n            [value]=\"item?.quantity\"\n            (change)=\"handleQuantityChange($event, item)\"\n          />\n        </glxy-form-field>\n      </td>\n    </ng-container>\n\n    <!-- Wholesale Column -->\n    <ng-container matColumnDef=\"wholesale\">\n      <th mat-header-cell *matHeaderCellDef data-cy=\"header-cell\">\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.WHOLESALE' | translate }}\n      </th>\n      <td mat-cell *matCellDef=\"let item\">\n        <ng-container *ngIf=\"item.pricesInitialized; else priceShimmer\">\n          <billing-ui-price-display\n            *ngIf=\"item?.appPrices?.pricesForContexts?.['wholesale']\"\n            [align]=\"'end'\"\n            [currencyCode]=\"item | parseWholesaleCurrency\"\n            [appPrice]=\"item.appPrices.pricesForContexts['wholesale']\"\n            [editionId]=\"item?.editionId\"\n            [priceType]=\"item?.priceType\"\n          ></billing-ui-price-display>\n        </ng-container>\n      </td>\n    </ng-container>\n\n    <!-- Retail Column -->\n    <ng-container matColumnDef=\"retail\">\n      <th mat-header-cell *matHeaderCellDef data-cy=\"header-cell\">\n        {{ 'INVENTORY_UI.ITEM_SELECTOR.COLUMN.RETAIL' | translate }}\n      </th>\n      <td mat-cell *matCellDef=\"let item\">\n        <ng-container *ngIf=\"item.pricesInitialized; else priceShimmer\">\n          <billing-ui-price-display\n            *ngIf=\"item?.appPrices?.pricesForContexts?.['retail']\"\n            [align]=\"'end'\"\n            [appPrice]=\"item.appPrices.pricesForContexts['retail']\"\n            [editionId]=\"item?.editionId\"\n          ></billing-ui-price-display>\n        </ng-container>\n      </td>\n    </ng-container>\n\n    <ng-template #priceShimmer>\n      <div class=\"stencil-shimmer shimmer\"></div>\n    </ng-template>\n\n    <tr\n      mat-row\n      *matRowDef=\"let row; columns: []\"\n      data-cy=\"table-row\"\n      [ngClass]=\"{ 'mat-row-disabled': row.isSuspended || row.unavailableInCountry }\"\n    ></tr>\n  </table>\n</glxy-table-container>\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<ItemSelectorDialogComponent>,\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","<h1 mat-dialog-title>{{ 'INVENTORY_UI.COMMON.ACTIONS.ADD_ITEMS' | translate }}</h1>\n<mat-dialog-content class=\"item-selector-dialog-content\">\n  <div class=\"item-selector\">\n    <inventory-ui-item-selector\n      [config]=\"data.config\"\n      [selectedItems]=\"data.selectedItems\"\n      [immutableSelectedItems]=\"data.immutableSelectedItems\"\n      [availableItems]=\"data.availableItems\"\n    />\n  </div>\n</mat-dialog-content>\n<mat-dialog-actions align=\"end\">\n  <button mat-stroked-button matDialogClose tabindex=\"-1\">\n    {{ 'INVENTORY_UI.COMMON.ACTIONS.CANCEL' | translate }}\n  </button>\n  <button mat-flat-button color=\"primary\" (click)=\"onSelect()\">\n    {{ 'INVENTORY_UI.COMMON.ACTIONS.SELECT' | translate }}\n  </button>\n</mat-dialog-actions>\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<BillingTermCallbackOutput>;\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<ServiceConfig>({\n    partnerId: '',\n    marketId: '',\n    businessId: '',\n    currencyOverride: '',\n    enforceDependencies: false,\n  });\n\n  private _items: WritableSignal<InventoryItemWithPricing[]> = signal<InventoryItemWithPricing[]>([]);\n  items: Signal<InventoryItemWithPricing[]> = this._items.asReadonly();\n  private _events: WritableSignal<ItemsChangedEvent[]> = signal<ItemsChangedEvent[]>([]);\n  events: Signal<ItemsChangedEvent[]> = 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<InventoryListItem[]>;\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<ItemPricingTableConfig, 'selectionEditable'>) {\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<ItemsChangedEvent>();\n  @Output() validityChanged = new EventEmitter<boolean>();\n  @Output() wholesaleTotalChanged = new EventEmitter<number>();\n\n  @ViewChild('itemPricingTable') itemPricingTable!: ItemPricingTableBaseComponent;\n\n  items: Signal<InventoryItemWithPricing[]>;\n  activeItems: Signal<InventoryListItem[]>;\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  <inventory-ui-item-pricing-table-base\n    #itemPricingTable\n    [config]=\"config\"\n    [items]=\"items()\"\n    [viewOnly]=\"viewOnly\"\n    [showRetailFrequencySuffix]=\"showRetailFrequencySuffix\"\n    (updatedItemRow)=\"onUpdatedItemRow($event)\"\n    (valid)=\"onValid($event)\"\n    (wholesaleTotal)=\"onWholesaleTotal($event)\"\n  />\n  @if (config?.canAddItems && !viewOnly) {\n    <div class=\"selector-button-container\">\n      <button type=\"button\" color=\"primary\" mat-stroked-button class=\"selector-button\" (click)=\"onAddItems()\">\n        + {{ 'INVENTORY_UI.COMMON.ACTIONS.ADD_ITEMS' | translate }}\n      </button>\n    </div>\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<void>();\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<string>, config: Config, singleSelect: boolean): Observable<TemplateState> {\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<SelectedDropdownItem[]> = 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<SelectedDropdownItem[]> {\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<ListActivatableItemsResponse> {\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<SelectedDropdownItem> = new EventEmitter<SelectedDropdownItem>();\n\n  templateState$!: Observable<SingleSelectTemplateState>;\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","<mat-form-field class=\"item-selector\" floatLabel=\"always\">\n  <mat-label>\n    {{ config.filters?.itemType | displayLabelPipe }}\n  </mat-label>\n  <ng-container *ngIf=\"templateState$ | async as state; else loadingState\">\n    <ng-container *ngIf=\"state.initialized; else loadingState\">\n      <div class=\"dropdown-container\">\n        <input\n          type=\"text\"\n          data-cy=\"item-search-select-input\"\n          [formControl]=\"searchCtrl\"\n          [matAutocomplete]=\"autocomplete\"\n          matInput\n          onfocus=\"this.select()\"\n        />\n        <mat-icon class=\"selector-arrow cursor-pointer\" matSuffix>arrow_drop_down</mat-icon>\n        <mat-autocomplete\n          #autocomplete=\"matAutocomplete\"\n          (optionSelected)=\"addItem($event, state.selectedItem)\"\n          [displayWith]=\"displayFn(state.selectedItem)\"\n        >\n          <mat-option *ngFor=\"let appSummary of state.availableItems\" [value]=\"appSummary\">\n            <div class=\"item-option\">\n              {{ appSummary.name }}\n            </div>\n          </mat-option>\n          <glxy-infinite-scroll-trigger\n            [visiblilityMargin]=\"60\"\n            (isVisible)=\"loadMore()\"\n          ></glxy-infinite-scroll-trigger>\n        </mat-autocomplete>\n      </div>\n    </ng-container>\n  </ng-container>\n\n  <ng-template #loadingState>\n    <div class=\"stencil-shimmer loading-state\">\n      <input matInput disabled />\n    </div>\n  </ng-template>\n</mat-form-field>\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]}