{ "version": 3, "sources": ["apps/partner-center-client/src/app/core/package/package.ts", "apps/partner-center-client/src/app/core/package.service.ts"], "sourcesContent": ["import {\n AddonKey,\n ContactFormAction,\n Currency,\n DefaultAction,\n ExternalUrlAction,\n Frequency,\n LineItem,\n OrderFormAction,\n PricingDisplayOption,\n MarketAction as SDKMarketAction,\n Price as SDKPrice,\n Pricing as SDKPricing,\n Status,\n} from '@vendasta/marketplace-packages';\nimport { CONTACT_SALES, Package as StorePackage } from '@vendasta/store';\nimport { Updatable, formatBillingFrequency } from '../utils';\n\nexport interface Price {\n price: number;\n frequency: string;\n is_starting_price?: boolean;\n setup_fee?: number;\n}\n\nexport interface Pricing {\n currency: string;\n prices: Price[];\n price?: Price;\n}\n\nexport interface ResellerItemId {\n app_id: string;\n addon_id?: string;\n quantity: number;\n edition_id?: string;\n}\n\nexport class MarketAction {\n sdkMarketAction: SDKMarketAction;\n constructor(data: SDKMarketAction | string, url: string) {\n if (typeof data === 'string') {\n if (!data) {\n this.sdkMarketAction = new SDKMarketAction();\n this.sdkMarketAction.default = {} as DefaultAction;\n } else {\n this.sdkMarketAction = new SDKMarketAction();\n switch (data) {\n case 'order_form':\n this.sdkMarketAction.orderForm = {} as OrderFormAction;\n break;\n case 'external_url':\n this.sdkMarketAction.externalUrl = { url: url } as ExternalUrlAction;\n break;\n case 'contact_form':\n default:\n this.sdkMarketAction.contactForm = {} as ContactFormAction;\n break;\n }\n }\n } else {\n this.sdkMarketAction = data;\n }\n }\n\n get url(): string {\n return this.sdkMarketAction && this.sdkMarketAction.externalUrl && this.sdkMarketAction.externalUrl.url;\n }\n}\n\nexport class Package implements Updatable {\n constructor(data: any) {\n this.solution_id = data.packageId || data.solution_id;\n this.partner_id = data.partnerId || data.partner_id;\n this.market_id = data.marketId || data.market_id;\n this.name = data.name || '';\n this.icon = data.icon;\n this.status = Package.getStatus(data);\n this.tagline = data.tagline;\n this.header_image_url = data.headerImageUrl || data.header_image_url;\n this.pricing = Package.getPricing(data);\n this.selling_price = data.sellingPrice || data.selling_price; //Deprecated\n this.currency = data.currency; //Deprecated\n this.billing_frequency = data.billingFrequency || data.billing_frequency; //Deprecated\n this.billing_frequency_other = data.billingFrequencyOther || data.billing_frequency_other; //Deprecated\n this.content = data.content;\n this.products = data.products;\n this.hide_product_icons_and_names = data.hideProductIconsAndNames || data.hide_product_icons_and_names;\n this.hide_product_details = data.hideProductDetails || data.hide_product_details;\n this.createdDate = data.created ? new Date(data.created) : null;\n this.updatedDate = data.updated ? new Date(data.updated) : null;\n this.addon_keys = data.addonKeys || data.addon_keys;\n this.product_order = data.productOrder || data.product_order;\n this.line_items = data.line_items;\n const market_action = data.marketAction || data.market_action;\n this.market_action =\n market_action instanceof MarketAction\n ? market_action\n : new MarketAction(data.marketAction || data.market_action, data.market_action_url);\n this.pricingDisplayOption = data.pricingDisplayOption || data.pricing_display_option;\n }\n\n get isDraft(): boolean {\n return this.status && this.status.toUpperCase() === 'DRAFT';\n }\n\n get isPublished(): boolean {\n return this.status && this.status.toUpperCase() === 'PUBLISHED';\n }\n\n get isArchived(): boolean {\n return this.status && this.status.toUpperCase() === 'ARCHIVED';\n }\n\n get statusLabel(): string {\n if (this.isDraft) {\n return 'Draft';\n }\n if (this.isPublished) {\n return 'Published';\n }\n if (this.isArchived) {\n return 'Archived';\n }\n }\n\n get marketAction(): SDKMarketAction {\n return this.market_action.sdkMarketAction;\n }\n\n get formattedWholesalePrice(): string {\n let priceString = '';\n const prices = this.getPriceStrings(this.pricing);\n for (const price of prices) {\n if (priceString.length > 0) {\n priceString += ' + ';\n }\n priceString += price;\n }\n return priceString;\n }\n\n solution_id: string;\n partner_id: string;\n market_id: string;\n name: string;\n icon: string;\n status: string;\n tagline: string;\n header_image_url: string;\n pricing: Pricing;\n selling_price: number; //Deprecated\n currency: string; //Deprecated\n billing_frequency: string; //Deprecated\n billing_frequency_other: string; //Deprecated\n content: string;\n products: string[];\n addon_keys: AddonKey[];\n product_order: string[]; // order of products in the package\n line_items: ResellerItemId[]; //products inside the package with edition information.\n market_action: MarketAction; // object containing config information for \"get it now\" button behavior\n // denotes whether the package uses legacy pricing stored on the package, or bundle pricing stored in billing\n usesBillingPricing: boolean;\n pricingDisplayOption: PricingDisplayOption;\n\n hide_product_icons_and_names: boolean;\n hide_product_details: boolean;\n createdDate: Date;\n updatedDate: Date;\n\n static getPricing(data: any): Pricing {\n //handle the legacy case\n if (!data.pricing && (data.selling_price || data.billing_frequency)) {\n return {\n currency: data.currency,\n prices: [\n {\n price: data.selling_price ? data.selling_price * 100 : null,\n frequency: data.billing_frequency.toUpperCase(),\n is_starting_price: false,\n },\n ],\n };\n }\n\n const newPricing: Pricing = { currency: Currency[0], prices: [], price: null };\n if (data.pricing) {\n if (data.pricing.currency) {\n if (typeof data.pricing.currency === 'string') {\n newPricing.currency = data.pricing.currency;\n } else {\n newPricing.currency = Currency[data.pricing.currency];\n }\n }\n }\n\n if (data.pricing && data.pricing.prices) {\n data.pricing.prices.map((price) => {\n //Frequency[0] is the default enum case, being monthly\n const newPrice: Price = { price: price.price, frequency: Frequency[0] };\n if (price.frequency) {\n if (typeof price.frequency === 'string') {\n newPrice.frequency = price.frequency.toUpperCase();\n } else {\n newPrice.frequency = Frequency[price.frequency].toUpperCase();\n }\n }\n newPrice.is_starting_price = price.isStartingPrice || price.is_starting_price;\n newPricing.prices.push(newPrice);\n });\n }\n\n if (data.pricing && data.pricing.price) {\n newPricing.price = {\n price: data.pricing.price.price,\n setup_fee: data.pricing.price.setup_fee,\n frequency: data.pricing.price.frequency,\n };\n }\n\n return newPricing;\n }\n\n static getStatus(data: any): string {\n if (data.status) {\n if (typeof data.status === 'string') {\n return data.status.toUpperCase();\n } else {\n return Status[data.status];\n }\n } else {\n //default to a package being a draft\n return Status[0];\n }\n }\n\n static getName(data: any): string {\n if (!data.name) {\n return 'Untitled';\n }\n return data.name;\n }\n\n convertPricingToSDKPricing(): SDKPricing {\n if (!this.pricing) {\n return null;\n }\n const sdkPricing = new SDKPricing({\n currency: Currency[this.pricing.currency],\n });\n const prices = (this.pricing.prices || []).map(\n (price) =>\n new SDKPrice({\n price: price.price,\n isStartingPrice: price.is_starting_price,\n frequency: Frequency[price.frequency],\n }),\n );\n sdkPricing.prices = prices;\n\n if (this.pricing.price.frequency.toUpperCase() == 'ONE TIME') {\n this.pricing.price.frequency = 'ONCE';\n }\n\n const price = !this.pricing.price\n ? null\n : new SDKPrice({\n price: this.pricing.price.price,\n setupFee: this.pricing.price.setup_fee,\n frequency: Frequency[this.pricing.price.frequency.toUpperCase()],\n });\n sdkPricing.price = price;\n\n return sdkPricing;\n }\n\n convertProductOrderProductAndAddonKeyListToSDKLineItems(): LineItem[] {\n const allKeys: string[] = [];\n const productMap = new Map();\n\n (this.products || []).forEach((product_id) => {\n allKeys.push(product_id);\n if (!productMap.has(product_id)) {\n productMap.set(\n product_id,\n new LineItem({\n id: product_id,\n quantity: 1,\n editionId: '',\n }),\n );\n }\n });\n (this.line_items || ([] as ResellerItemId[])).forEach((product) => {\n allKeys.push(product.app_id);\n productMap.set(\n product.app_id,\n new LineItem({\n id: product.app_id,\n quantity: 1,\n editionId: product.edition_id,\n }),\n );\n });\n (this.addon_keys || []).forEach((addonKey) => {\n allKeys.push(addonKey.addonId || (addonKey as any).addon_id);\n productMap.set(\n addonKey.addonId || (addonKey as any).addon_id,\n new LineItem({\n id: addonKey.addonId || (addonKey as any).addon_id,\n parentId: addonKey.appId || (addonKey as any).app_id,\n quantity: addonKey.quantity || 1,\n }),\n );\n });\n\n const productOrder = [].concat(this.product_order).concat(allKeys);\n const lineItems: LineItem[] = [];\n productOrder.forEach((id) => {\n if (!productMap.has(id)) {\n return;\n }\n\n lineItems.push(productMap.get(id));\n productMap.delete(id);\n });\n return lineItems;\n }\n\n convertSDKLineItemsToProductListWithEdition(lineItems: LineItem[]): ResellerItemId[] {\n if (!lineItems) {\n return [] as ResellerItemId[];\n }\n const items = lineItems.reduce((resellerItems, lineItem) => {\n if (lineItem.id && !lineItem.parentId) {\n resellerItems.push({\n app_id: lineItem.id,\n addon_id: '',\n quantity: 0,\n edition_id: lineItem.editionId,\n });\n }\n return resellerItems;\n }, [] as ResellerItemId[]);\n\n return items;\n }\n\n getPriceStrings(pricing: Pricing): string[] {\n let prices = [];\n if (pricing && pricing.prices && pricing.prices.length > 0) {\n let currencySymbol = '$';\n let formatFunc = this.getDefaultPriceString;\n pricing.prices.sort(this.sortPricesByFrequency);\n switch (pricing.currency) {\n case 'EUR':\n currencySymbol = '\\u20AC';\n break;\n case 'GBP':\n currencySymbol = '\\u00A3';\n break;\n case 'CHF':\n currencySymbol = 'Fr';\n break;\n case 'CNY':\n currencySymbol = '\\u00A5';\n break;\n case 'JPY':\n currencySymbol = '\\u00A5';\n break;\n case 'CZK':\n currencySymbol = 'K\\u010d';\n formatFunc = this.getCzechPriceString;\n break;\n case 'INR':\n currencySymbol = '\\u20B9';\n break;\n case 'KHR':\n currencySymbol = '\\u17DB';\n break;\n case 'KRW':\n currencySymbol = '\\u20A9';\n break;\n case 'NOK':\n currencySymbol = 'kr';\n break;\n case 'SEK':\n currencySymbol = 'kr';\n break;\n case 'RUB':\n currencySymbol = '\\u20BD';\n break;\n case 'TRY':\n currencySymbol = '\\u20BA';\n break;\n case 'USD':\n formatFunc = this.getUnitedStatesPriceString;\n break;\n case 'ZAR':\n currencySymbol = 'R';\n break;\n default:\n break;\n }\n\n let anyContactSales = false;\n const isFree = pricing.prices.every((price) => price.price === 0 || price.price === undefined);\n for (const price of pricing.prices) {\n if (price.price === null || price.price <= CONTACT_SALES) {\n anyContactSales = true;\n break;\n } else if (price.price != null && price.price > 0) {\n prices.push(formatFunc(price, currencySymbol, pricing.currency));\n }\n }\n\n if (anyContactSales) {\n prices = ['Contact Sales'];\n } else if (prices.length === 0 || isFree) {\n prices = ['Free'];\n }\n } else {\n prices = ['Contact Sales'];\n }\n return prices;\n }\n\n sortPricesByFrequency(priceA: Price, priceB: Price): number {\n // this map is coded based on frequency values described by the enums described in the marketplace packages vendasta\n // apis and the corresponding translations to strings laced throughout galaxy\n const priceFrequencyComparisonMap: Map> = new Map>([\n [\n 'MONTHLY',\n new Map([\n ['MONTHLY', 0],\n ['YEARLY', -1],\n ['ONCE', -1],\n ['ONE TIME', -1],\n ['ONE_TIME', -1],\n ['WEEKLY', -1],\n ]),\n ],\n [\n 'YEARLY',\n new Map([\n ['MONTHLY', 1],\n ['YEARLY', 0],\n ['ONCE', -1],\n ['ONE TIME', -1],\n ['ONE_TIME', -1],\n ['WEEKLY', -1],\n ]),\n ],\n [\n 'ONCE',\n new Map([\n ['MONTHLY', 1],\n ['YEARLY', 1],\n ['ONCE', 0],\n ['ONE TIME', 0],\n ['ONE_TIME', 0],\n ['WEEKLY', 0],\n ]),\n ],\n [\n 'ONE TIME',\n new Map([\n ['MONTHLY', 1],\n ['YEARLY', 1],\n ['ONCE', 0],\n ['ONE TIME', 0],\n ['ONE_TIME', 0],\n ['WEEKLY', 0],\n ]),\n ],\n [\n 'ONE_TIME',\n new Map([\n ['MONTHLY', 1],\n ['YEARLY', 1],\n ['ONCE', 0],\n ['ONE TIME', 0],\n ['ONE_TIME', 0],\n ['WEEKLY', 0],\n ]),\n ],\n [\n 'WEEKLY',\n new Map([\n ['MONTHLY', 1],\n ['YEARLY', 1],\n ['ONCE', 1],\n ['ONE TIME', 1],\n ['ONE_TIME', 1],\n ['WEEKLY', 0],\n ]),\n ],\n ]);\n\n if (priceFrequencyComparisonMap.get(priceA.frequency.toUpperCase()) === undefined) {\n return 0;\n }\n\n const compareVal = priceFrequencyComparisonMap\n .get(priceA.frequency.toUpperCase())\n .get(priceB.frequency.toUpperCase());\n return compareVal ? compareVal : 0;\n }\n\n getDefaultPriceString(price: Price, currencySymbol: string, currencyStr: string): string {\n const frequencyStr = price.frequency ? ' ' + formatBillingFrequency(price.frequency) : '';\n const roundedPrice = (price.price / 100.0).toFixed(2);\n const startingAtPrefix = price.is_starting_price ? 'Starting at ' : '';\n const priceStr = `${startingAtPrefix}${currencySymbol}${roundedPrice} ${currencyStr} ${frequencyStr}`;\n return priceStr.trim().replace(/\\s+/g, ' ');\n }\n\n getUnitedStatesPriceString(price: Price, currencySymbol: string, _currencyStr: string): string {\n const frequencyStr = price.frequency ? ' ' + formatBillingFrequency(price.frequency) : '';\n const roundedPrice = (price.price / 100.0).toFixed(2);\n const startingAtPrefix = price.is_starting_price ? 'Starting at ' : '';\n const priceStr = `${startingAtPrefix}${currencySymbol}${roundedPrice} ${frequencyStr}`;\n return priceStr.trim().replace(/\\s+/g, ' ');\n }\n\n getCzechPriceString(price: Price, currencySymbol: string, _currencyStr: string): string {\n const frequencyStr = price.frequency ? ' ' + formatBillingFrequency(price.frequency) : '';\n const roundedPrice = (price.price / 100.0).toFixed(2).replace('.00', '').replace('.', ',');\n const startingAtPrefix = price.is_starting_price ? 'Starting at ' : '';\n const priceStr = `${startingAtPrefix}${roundedPrice} ${currencySymbol} exc. VAT ${frequencyStr}`;\n return priceStr.trim().replace(/\\s+/g, ' ');\n }\n\n convertToStorePackage(): StorePackage {\n const pkg = new StorePackage();\n\n pkg.solution_id = this.solution_id;\n pkg.partner_id = this.partner_id;\n pkg.market_id = this.market_id;\n pkg.name = this.name;\n pkg.icon = this.icon;\n pkg.status = this.status;\n pkg.tagline = this.tagline;\n pkg.header_image_url = this.header_image_url;\n pkg.content = this.content;\n pkg.products = this.products;\n pkg.addon_keys = this.addon_keys;\n pkg.hide_product_icons_and_names = this.hide_product_icons_and_names;\n pkg.hide_product_details = this.hide_product_details;\n pkg.createdDate = this.createdDate;\n pkg.updatedDate = this.updatedDate;\n pkg.productOrder = this.product_order;\n pkg.pricing = this.pricing;\n return pkg;\n }\n}\n", "import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport {\n LineItem,\n LineItems,\n MarketAction,\n Package as ProtoPackage,\n PackageService as SDKPackageService,\n PricingDisplayOption,\n Status,\n StatusString,\n} from '@vendasta/marketplace-packages';\nimport { BehaviorSubject, combineLatest, Observable, throwError } from 'rxjs';\nimport { map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { MarketsService } from './markets/markets.service';\nimport { Package, ResellerItemId } from './package/package';\nimport { mergeUpdatedArrays } from './utils';\n\nexport declare interface PackagesMap {\n [marketId: string]: Package[];\n}\n@Injectable({ providedIn: 'root' })\nexport class PackageService {\n get packages(): Observable {\n return this.packagesSubject.asObservable();\n }\n\n constructor(\n @Inject('PARTNER_ID') private partnerId$: Observable,\n private sdkService: SDKPackageService,\n private marketService: MarketsService,\n ) {}\n private packagesSubject: BehaviorSubject = new BehaviorSubject({});\n public recommendedPackages$: Observable;\n\n private static convertLineItems(lineItems: LineItems): ResellerItemId[] {\n if (!lineItems || !lineItems.lineItems) {\n return [];\n }\n return lineItems.lineItems\n .filter((item) => item && item.id)\n .map((item) => {\n // TODO: unify the way we handle app and addon\n if (!item.parentId) {\n // app\n return {\n app_id: item.id,\n edition_id: item.editionId,\n quantity: item.quantity,\n };\n }\n // addon\n return {\n app_id: item.parentId,\n addon_id: item.id,\n edition_id: item.editionId,\n quantity: item.quantity,\n };\n });\n }\n\n static convertPriceFrequencyToLowercase(pkg: Package): Package {\n if (pkg.pricing.prices) {\n for (const price of pkg.pricing.prices) {\n if (price.frequency) {\n price.frequency = price.frequency.toLowerCase();\n }\n }\n }\n return pkg;\n }\n\n loadAll(marketId?: string, inStoreOrder?: boolean, order?: string[]): void {\n marketId = marketId || 'default';\n this.partnerId$\n .pipe(\n switchMap((partnerId) =>\n this.sdkService.loadAllPackages(\n partnerId,\n [Status.PUBLISHED, Status.DRAFT, Status.ARCHIVED],\n marketId,\n inStoreOrder,\n 1000,\n ),\n ),\n take(1),\n )\n .subscribe(\n (packagesData) => {\n if (packagesData.packages) {\n const packages = packagesData.packages.map((packageData) => {\n const storePackage = new Package(packageData);\n if (packageData.lineItems) {\n storePackage.line_items = storePackage.convertSDKLineItemsToProductListWithEdition(\n packageData.lineItems.lineItems,\n );\n } else {\n storePackage.line_items = [];\n }\n\n return storePackage;\n });\n\n if (order) {\n packages.sort(function (a, b): any {\n return order.indexOf(a.solution_id) - order.indexOf(b.solution_id);\n });\n }\n\n this.updatePackagesForMarket(marketId, packages);\n } else {\n this.updatePackagesForMarket(marketId, []);\n }\n },\n (err) => this.packagesSubject.error(err),\n );\n }\n\n loadRecommendedPackages(): void {\n this.recommendedPackages$ = this.sdkService.loadAllPackages('VCOR', [Status.PUBLISHED], 'mkplrecpkgs').pipe(\n map((packagesData) => {\n if (packagesData.packages) {\n return packagesData.packages\n .map((packageData) => new Package(packageData))\n .filter((pkg) => (pkg ? pkg.isPublished : false));\n } else {\n return [];\n }\n }),\n );\n }\n\n getPackagesForMarket$(marketId: string): Observable {\n return this.partnerId$.pipe(\n switchMap((partnerId) => this.sdkService.loadAllPackages(partnerId, [Status.PUBLISHED], marketId)),\n map((response) => response.packages),\n );\n }\n\n listRecommendedPackages$(): Observable {\n return this.sdkService.loadAllPackages('VCOR', [Status.PUBLISHED], 'mkplrecpkgs').pipe(\n map((packagesData) => {\n if (packagesData.packages) {\n return packagesData.packages\n .map((packageData) => new Package(packageData))\n .filter((pkg) => (pkg ? pkg.isPublished : false));\n } else {\n return [];\n }\n }),\n );\n }\n\n createPackage(pkg: Package, newEditor = false): Observable {\n return combineLatest([this.partnerId$, this.marketService.currentMarket$]).pipe(\n switchMap(([partnerId, market]) => {\n if (!partnerId) {\n return throwError('Partner id required.');\n }\n if (!market) {\n return throwError('Market id required.');\n }\n\n return this.sdkService.create(\n partnerId,\n market.market_id,\n pkg.name,\n pkg.tagline,\n pkg.icon,\n pkg.header_image_url,\n pkg.content,\n newEditor\n ? this.convertLineItemsToSDKLineItems(pkg)\n : pkg.convertProductOrderProductAndAddonKeyListToSDKLineItems(),\n pkg.convertPricingToSDKPricing(),\n pkg.hide_product_icons_and_names,\n pkg.hide_product_details,\n false,\n pkg.market_action.sdkMarketAction || new MarketAction({}),\n pkg.usesBillingPricing,\n pkg.pricingDisplayOption,\n );\n }),\n map((thisPkg) => new Package(thisPkg)),\n );\n }\n\n updatePackage(pkg: Package, newEditor = false): Observable {\n return this.sdkService\n .update(\n pkg.solution_id,\n pkg.name,\n pkg.tagline,\n pkg.icon,\n pkg.header_image_url,\n pkg.content,\n newEditor\n ? this.convertLineItemsToSDKLineItems(pkg)\n : pkg.convertProductOrderProductAndAddonKeyListToSDKLineItems(),\n pkg.convertPricingToSDKPricing(),\n pkg.hide_product_icons_and_names,\n pkg.hide_product_details,\n pkg.market_action.sdkMarketAction || new MarketAction({}),\n pkg.usesBillingPricing,\n pkg.pricingDisplayOption || PricingDisplayOption.PRICING_DISPLAY_OPTION_NOT_SPECIFIED,\n )\n .pipe(map((thisPkg) => new Package(thisPkg)));\n }\n\n private convertLineItemsToSDKLineItems(pkg: Package): LineItem[] {\n return pkg.line_items.map((li) => {\n const sdkLineItem = {\n id: li.addon_id || li.app_id,\n quantity: li.quantity,\n } as LineItem;\n\n if (li.addon_id) {\n sdkLineItem.parentId = li.app_id;\n } else {\n sdkLineItem.editionId = li.edition_id;\n }\n return sdkLineItem;\n });\n }\n\n publishPackage(packageId: string): Observable {\n return this.setStatus(packageId, Status.PUBLISHED);\n }\n\n unpublishPackage(packageId: string): Observable {\n return this.setStatus(packageId, Status.DRAFT);\n }\n\n deletePackage(packageId: string, marketId: string): Observable> {\n return this.sdkService\n .hideArchivedPackage(packageId)\n .pipe(tap(() => this.removePackageFromMap(packageId, marketId)));\n }\n\n archivePackage(packageId: string): Observable {\n return this.setStatus(packageId, Status.ARCHIVED);\n }\n\n restorePackage(packageId: string): Observable {\n return this.unpublishPackage(packageId);\n }\n\n setStatus(packageId: string, status: Status): Observable {\n return this.sdkService.setStatus(packageId, status).pipe(map((pkg) => new Package(pkg)));\n }\n\n getPackageById(packageId: string): Observable {\n return this.sdkService.getMulti([packageId]).pipe(\n map((pkgs) => {\n if (pkgs && pkgs.length) {\n const pkg = new Package(pkgs[0]);\n pkg.line_items = PackageService.convertLineItems(pkgs[0].lineItems);\n return pkg;\n }\n throw new HttpErrorResponse({\n status: 404,\n statusText: 'package with id ' + packageId + \" doesn't exist\",\n });\n }),\n shareReplay(1),\n );\n }\n\n copyPackage(\n packageId: string,\n partnerId: string,\n marketIds: string[],\n contactSales: boolean,\n name: string,\n status: string,\n currency?: string,\n price?: number,\n additionalPrice?: number,\n frequency?: string,\n additionalFrequency?: string,\n isStartingPrice?: boolean,\n isAdditionalStartingPrice?: boolean,\n ): Observable {\n return this.sdkService.copyPackage(\n packageId,\n partnerId,\n marketIds,\n contactSales,\n name,\n status as StatusString,\n currency,\n price,\n additionalPrice,\n frequency,\n additionalFrequency,\n isStartingPrice,\n isAdditionalStartingPrice,\n );\n }\n\n appendPackageToMap(newPkg: Package): void {\n const allPackages = this.packagesSubject.getValue();\n let existingPackages = allPackages[newPkg.market_id];\n if (existingPackages) {\n const pkgIndex = existingPackages.findIndex((pkg) => pkg.solution_id === newPkg.solution_id);\n if (pkgIndex === -1) {\n existingPackages.push(newPkg);\n }\n } else {\n existingPackages = [newPkg];\n }\n allPackages[newPkg.market_id] = existingPackages;\n this.packagesSubject.next(allPackages);\n }\n\n private updatePackagesForMarket(marketId: string, packages: Package[]): void {\n const allPackages = {\n [marketId]: packages,\n };\n this.packagesSubject.next(allPackages);\n }\n\n /**\n * Given two lists of packages, merge them into one, containing only the newest unique items from\n * each.\n */\n mergePackages(packages1: Package[], packages2: Package[]): Package[] {\n return mergeUpdatedArrays(packages2, packages1, 'solution_id');\n }\n\n removePackageFromMap(packageId: string, marketId: string): void {\n const pkgs = this.packagesSubject.getValue();\n if (pkgs && pkgs[marketId]) {\n const marketPkgs = pkgs[marketId] || [];\n const filteredPkgs = marketPkgs.filter((pkg) => pkg.solution_id !== packageId);\n pkgs[marketId] = filteredPkgs;\n this.packagesSubject.next(pkgs);\n }\n }\n}\n"], "mappings": "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", "names": ["MarketAction", "constructor", "data", "url", "sdkMarketAction", "SDKMarketAction", "default", "orderForm", "externalUrl", "contactForm", "Package", "solution_id", "packageId", "partner_id", "partnerId", "market_id", "marketId", "name", "icon", "status", "getStatus", "tagline", "header_image_url", "headerImageUrl", "pricing", "getPricing", "selling_price", "sellingPrice", "currency", "billing_frequency", "billingFrequency", "billing_frequency_other", "billingFrequencyOther", "content", "products", "hide_product_icons_and_names", "hideProductIconsAndNames", "hide_product_details", "hideProductDetails", "createdDate", "created", "Date", "updatedDate", "updated", "addon_keys", "addonKeys", "product_order", "productOrder", "line_items", "market_action", "marketAction", "market_action_url", "pricingDisplayOption", "pricing_display_option", "isDraft", "toUpperCase", "isPublished", "isArchived", "statusLabel", "formattedWholesalePrice", "priceString", "prices", "getPriceStrings", "price", "length", "frequency", "is_starting_price", "newPricing", "Currency", "map", "newPrice", "Frequency", "isStartingPrice", "push", "setup_fee", "Status", "getName", "convertPricingToSDKPricing", "sdkPricing", "SDKPricing", "SDKPrice", "setupFee", "convertProductOrderProductAndAddonKeyListToSDKLineItems", "allKeys", "productMap", "Map", "forEach", "product_id", "has", "set", "LineItem", "id", "quantity", "editionId", "product", "app_id", "edition_id", "addonKey", "addonId", "addon_id", "parentId", "appId", "concat", "lineItems", "get", "delete", "convertSDKLineItemsToProductListWithEdition", "reduce", "resellerItems", "lineItem", "currencySymbol", "formatFunc", "getDefaultPriceString", "sort", "sortPricesByFrequency", "getCzechPriceString", "getUnitedStatesPriceString", "anyContactSales", "isFree", "every", "undefined", "CONTACT_SALES", "priceA", "priceB", "priceFrequencyComparisonMap", "compareVal", "currencyStr", "frequencyStr", "formatBillingFrequency", "roundedPrice", "toFixed", "trim", "replace", "_currencyStr", "convertToStorePackage", "pkg", "StorePackage", "PackageService", "packages", "packagesSubject", "asObservable", "constructor", "partnerId$", "sdkService", "marketService", "BehaviorSubject", "convertLineItems", "lineItems", "filter", "item", "id", "map", "parentId", "app_id", "addon_id", "edition_id", "editionId", "quantity", "convertPriceFrequencyToLowercase", "pkg", "pricing", "prices", "price", "frequency", "toLowerCase", "loadAll", "marketId", "inStoreOrder", "order", "pipe", "switchMap", "partnerId", "loadAllPackages", "Status", "PUBLISHED", "DRAFT", "ARCHIVED", "take", "subscribe", "packagesData", "packageData", "storePackage", "Package", "line_items", "convertSDKLineItemsToProductListWithEdition", "sort", "a", "b", "indexOf", "solution_id", "updatePackagesForMarket", "err", "error", "loadRecommendedPackages", "recommendedPackages$", "isPublished", "getPackagesForMarket$", "response", "listRecommendedPackages$", "createPackage", "newEditor", "combineLatest", "currentMarket$", "market", "create", "market_id", "name", "tagline", "icon", "header_image_url", "content", "convertLineItemsToSDKLineItems", "convertProductOrderProductAndAddonKeyListToSDKLineItems", "convertPricingToSDKPricing", "hide_product_icons_and_names", "hide_product_details", "market_action", "sdkMarketAction", "MarketAction", "usesBillingPricing", "pricingDisplayOption", "throwError", "thisPkg", "updatePackage", "update", "PricingDisplayOption", "PRICING_DISPLAY_OPTION_NOT_SPECIFIED", "li", "sdkLineItem", "publishPackage", "packageId", "setStatus", "unpublishPackage", "deletePackage", "hideArchivedPackage", "tap", "removePackageFromMap", "archivePackage", "restorePackage", "status", "getPackageById", "getMulti", "pkgs", "length", "HttpErrorResponse", "statusText", "shareReplay", "copyPackage", "marketIds", "contactSales", "currency", "additionalPrice", "additionalFrequency", "isStartingPrice", "isAdditionalStartingPrice", "appendPackageToMap", "newPkg", "allPackages", "getValue", "existingPackages", "findIndex", "push", "next", "mergePackages", "packages1", "packages2", "mergeUpdatedArrays", "filteredPkgs", "\u0275\u0275inject", "MarketsService", "factory", "\u0275fac", "providedIn", "_PackageService"] }