UNPKG

306 kBSource Map (JSON)View Raw
1{"version":3,"file":"vendasta-store.js","sources":["ng://@vendasta/store/lib/pricing/pricing.component.ts","ng://@vendasta/store/lib/pricing/highlight-pricing/highlight-pricing.component.ts","ng://@vendasta/store/lib/pricing/table-pricing/table-pricing.component.ts","ng://@vendasta/store/lib/assets/i18n/en.ts","ng://@vendasta/store/lib/assets/i18n/cs.ts","ng://@vendasta/store/lib/pricing/pricing.module.ts","ng://@vendasta/store/lib/store-card.component.ts","ng://@vendasta/store/lib/store-card.module.ts","ng://@vendasta/store/lib/store.component.ts","ng://@vendasta/store/lib/order-form/dropdown-form-section/dropdown-form-section.component.ts","ng://@vendasta/store/lib/order-form/fields/field.component.ts","ng://@vendasta/store/lib/order-form/fields/field.service.ts","ng://@vendasta/store/lib/header-container/header-container.component.ts","ng://@vendasta/store/lib/header-container/header-container.module.ts","ng://@vendasta/store/lib/order-form/order-form-section/order-form-section-data.ts","ng://@vendasta/store/lib/order-form/order-form-section/order-form-section.component.ts","ng://@vendasta/store/lib/order-form/dropdown-form-section/dropdown-form-section-data.ts","ng://@vendasta/store/lib/order-form/order-form/interface.ts","ng://@vendasta/store/lib/order-form/order-form/order-form.service.ts","ng://@vendasta/store/lib/order-form/order-form/order-form.component.ts","ng://@vendasta/store/lib/order-form/fields/field-base.ts","ng://@vendasta/store/lib/order-form/fields/field-builder/field-builder.component.ts","ng://@vendasta/store/lib/order-form/order-item-list/order-item-list.service.ts","ng://@vendasta/store/lib/order-form/order-item-list/order-item-list.component.ts","ng://@vendasta/store/lib/shared/pricing-pipes.ts","ng://@vendasta/store/lib/order-form/order-form.module.ts","ng://@vendasta/store/lib/store.service.ts","ng://@vendasta/store/lib/files/shared/file.model.ts","ng://@vendasta/store/lib/pricing/pricing.ts","ng://@vendasta/store/lib/shared/sellable.ts","ng://@vendasta/store/lib/shared/case-transform.ts","ng://@vendasta/store/lib/shared/product.ts","ng://@vendasta/store/lib/addon-details/addon-details.component.ts","ng://@vendasta/store/lib/files/files.component.ts","ng://@vendasta/store/lib/files/files.module.ts","ng://@vendasta/store/lib/faqs/faqs.component.ts","ng://@vendasta/store/lib/faqs/faqs.module.ts","ng://@vendasta/store/lib/selling-info/selling-info.component.ts","ng://@vendasta/store/lib/selling-info/selling-info.module.ts","ng://@vendasta/store/lib/restrictions/country/supported-countries.component.ts","ng://@vendasta/store/lib/restrictions/restrictions.module.ts","ng://@vendasta/store/lib/addon-details/addon.module.ts","ng://@vendasta/store/lib/stencils/details-stencil.component.ts","ng://@vendasta/store/lib/stencils/card-stencil.component.ts","ng://@vendasta/store/lib/stencils/card-list-stencil.component.ts","ng://@vendasta/store/lib/stencils/search-bar-stencil.component.ts","ng://@vendasta/store/lib/stencils/list-stencil.component.ts","ng://@vendasta/store/lib/stencils/stencils.module.ts","ng://@vendasta/store/lib/addon-list/addon-list.component.ts","ng://@vendasta/store/lib/addon-list/addon-list.module.ts","ng://@vendasta/store/lib/heimdall-client-token.ts","ng://@vendasta/store/lib/storefront/storefront.component.ts","ng://@vendasta/store/lib/store.module.ts","ng://@vendasta/store/lib/lmi-categories.ts","ng://@vendasta/store/lib/salesperson-details/salesperson-details.component.ts","ng://@vendasta/store/lib/salesperson-details/salesperson-details.module.ts","ng://@vendasta/store/lib/package-details/package.ts","ng://@vendasta/store/lib/package-details/utils.ts","ng://@vendasta/store/lib/package-details/package-details.component.ts","ng://@vendasta/store/lib/products-nav/products-nav.component.ts","ng://@vendasta/store/lib/products-nav/products-nav-v2/products-nav-v2.component.ts","ng://@vendasta/store/lib/products-nav/products-nav.module.ts","ng://@vendasta/store/lib/package-details/package-details.module.ts","ng://@vendasta/store/lib/package-details-v2/package.ts","ng://@vendasta/store/lib/package-details-v2/package-details-v2.component.ts","ng://@vendasta/store/lib/package-details-v2/package-details-v2.module.ts","ng://@vendasta/store/lib/package-dropdown/sales-package.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown-item/package-dropdown-item.component.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown.component.ts","ng://@vendasta/store/lib/package-dropdown/package-dropdown.module.ts","ng://@vendasta/store/lib/product-details/product-details.component.ts","ng://@vendasta/store/lib/product-details/product-details.module.ts","ng://@vendasta/store/lib/shared/reseller-item.ts","ng://@vendasta/store/lib/order-form/fields/field-checkbox.ts","ng://@vendasta/store/lib/order-form/fields/field-dropdown.ts","ng://@vendasta/store/lib/order-form/fields/field-fileuploadgroup.ts","ng://@vendasta/store/lib/order-form/fields/field-textarea.ts","ng://@vendasta/store/lib/order-form/fields/field-textbox.ts","ng://@vendasta/store/lib/order-form/fields/field-vbcuser.ts"],"sourcesContent":["import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { BilledProduct, PricingTier } from '@vendasta/core/billing';\nimport { MarketplaceBillingFrequency, DisplayPriceService } from '@vendasta/core/shared';\nimport { Pricing, Price } from './pricing';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\nimport { map, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'va-pricing',\n templateUrl: './pricing.component.html',\n styleUrls: ['./pricing.component.scss']\n})\nexport class VaPricingComponent implements OnChanges {\n @Input() pricing: Pricing = null;\n @Input() billedProduct: BilledProduct;\n @Input() wrapFrequency = false;\n @Input() isAddon = false;\n @Input() hasVerifiedContract = false;\n @Input() highlightPrice = true;\n @Input() loaded = true;\n\n pricing$$ = new BehaviorSubject<Pricing>(null);\n billedProduct$$ = new BehaviorSubject<BilledProduct>(null);\n hasVerifiedContract$$ = new BehaviorSubject<boolean>(false);\n\n isFree$: Observable<boolean>;\n shouldContactSales$: Observable<boolean>;\n isFlatPrice$: Observable<boolean>;\n\n pricingTierData$: Observable<{\n isStartingPrice: boolean,\n pricingTierString: string,\n pricingTierForProduct: string,\n pricingTierForAddon: string,\n priceStringForTier: string,\n priceStringForTierWithoutFreq: string,\n }[]>;\n\n priceData$: Observable<{\n isStartingPrice: boolean,\n priceStringForPricingWithoutFrequency: string,\n priceStringForPricingWithFrequency: string,\n frequencyString: string,\n }[]>;\n\n commitmentMessage$: Observable<string>;\n\n get pricing$(): Observable<Pricing> {\n return this.pricing$$.asObservable();\n }\n\n get billedProduct$(): Observable<BilledProduct> {\n return this.billedProduct$$.asObservable();\n }\n\n get hasVerifiedContract$(): Observable<boolean> {\n return this.hasVerifiedContract$$.asObservable();\n }\n\n constructor(private translateService: TranslateService, private displayPriceService: DisplayPriceService) {\n this.isFree$ = combineLatest([this.pricing$, this.billedProduct$, this.hasVerifiedContract$]).pipe(\n map(([pricing, billedProduct, hasVerifiedContract]) => {\n const isFreeHelper = (prices: { price: number }[]): boolean => {\n return prices ? prices.some(p => p.price === 0 || p.price === undefined) : false;\n };\n\n if (hasVerifiedContract && billedProduct) {\n return billedProduct.pricingTiers.length === 1 ? isFreeHelper(billedProduct.pricingTiers) : false;\n }\n return !!pricing && isFreeHelper(pricing.prices);\n })\n );\n\n this.shouldContactSales$ = combineLatest([this.pricing$, this.billedProduct$, this.hasVerifiedContract$]).pipe(\n map(([pricing, billedProduct, hasVerifiedContract]) => {\n const nestedPricesIsContactSales = (prices: { price: number }[]) => {\n return prices && prices.length > 0 ? prices.some(p => p.price === null || p.price < 0) : true;\n };\n\n if (hasVerifiedContract && billedProduct) {\n return nestedPricesIsContactSales(billedProduct.pricingTiers);\n }\n if (!pricing) {\n return true;\n }\n return nestedPricesIsContactSales(pricing.prices);\n })\n );\n\n this.isFlatPrice$ = this.billedProduct$.pipe(map(billedProduct => billedProduct.pricingTiers.length === 1));\n this.pricingTierData$ = this.billedProduct$.pipe(\n switchMap(billedProduct => {\n const pricingTierObservables = billedProduct.pricingTiers.map(pricingTier => {\n return combineLatest(\n of(pricingTier.isStartingPrice),\n this.buildPricingTierString(pricingTier),\n this.buildPricingTierForProduct(pricingTier, billedProduct.billingFrequency),\n this.buildPricingTierForAddon(pricingTier),\n this.buildPriceStringForTier(pricingTier, billedProduct.billingFrequency, pricingTier.isStartingPrice),\n this.buildPriceStringForTier(pricingTier)\n ).pipe(\n map(([isStartingPrice, pricingTierString, pricingTierForProduct,\n pricingTierForAddon, priceStringForTier, priceStringForTierWithoutFreq]) => {\n return {\n isStartingPrice: isStartingPrice,\n pricingTierString: pricingTierString,\n pricingTierForProduct: pricingTierForProduct,\n pricingTierForAddon: pricingTierForAddon,\n priceStringForTier: priceStringForTier,\n priceStringForTierWithoutFreq: priceStringForTierWithoutFreq\n };\n })\n )\n });\n return combineLatest(...pricingTierObservables)\n })\n );\n\n this.priceData$ = this.pricing$.pipe(\n switchMap(pricing => {\n const priceObservables = pricing.prices.map(price => {\n return combineLatest(\n of(price.isStartingPrice),\n this.buildPriceStringForPricing(price, pricing.currency, true, false),\n this.buildPriceStringForPricing(price, pricing.currency, false, true),\n this.buildFrequencyString(price.frequency)\n ).pipe(\n map(([isStartingPrice, priceStringForPricingWithoutFrequency, priceStringForPricingWithFrequency, frequencyString]) => {\n return {\n isStartingPrice: isStartingPrice,\n priceStringForPricingWithoutFrequency: priceStringForPricingWithoutFrequency,\n priceStringForPricingWithFrequency: priceStringForPricingWithFrequency,\n frequencyString: frequencyString\n };\n })\n )\n });\n return combineLatest(...priceObservables);\n })\n );\n\n this.commitmentMessage$ = this.buildCommitmentMessage();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.hasOwnProperty('pricing')) {\n this.pricing$$.next(changes.pricing.currentValue);\n }\n if (changes.hasOwnProperty('billedProduct')) {\n this.billedProduct$$.next(changes.billedProduct.currentValue);\n }\n if (changes.hasOwnProperty('hasVerifiedContract')) {\n this.hasVerifiedContract$$.next(changes.hasVerifiedContract.currentValue);\n }\n }\n\n buildPricingTierString(tier: PricingTier): Observable<string> {\n let max = String(tier.rangeMax);\n if (tier.rangeMax === -1) {\n max = '∞';\n if (tier.rangeMin === 0 || tier.rangeMin === 1) {\n return of('');\n }\n }\n return this.translateService.stream('FRONTEND.STORE.MIN_TO_MAX', {minRange: String(tier.rangeMin), maxRange: max});\n }\n\n buildPricingTierForProduct(tier: PricingTier, frequency?: string): Observable<string> {\n return combineLatest(this.buildPricingTierString(tier), this.buildFrequencyString(frequency)).pipe(\n switchMap(([pricingTier, formattedFrequency]) => {\n if (pricingTier) {\n return this.translateService.stream('FRONTEND.STORE.PRODUCT_PRICING_WITH_FREQUENCY', {\n pricingTier: pricingTier,\n frequency: formattedFrequency\n });\n }\n return of(formattedFrequency);\n })\n );\n }\n\n buildPricingTierForAddon(tier: PricingTier): Observable<string> {\n return this.buildPricingTierString(tier).pipe(\n map(pricingRange => pricingRange ? pricingRange : '')\n );\n }\n\n buildPriceStringForPricing(price: Price, currency: string, excludeFrequency: boolean, canIncludeStartingAtPrefix: boolean):\n Observable<string> {\n return this.displayPriceService.formatDisplayPrice(\n price.price,\n currency,\n (excludeFrequency ? '' : price.frequency) as any,\n true,\n true,\n true,\n price.isStartingPrice && canIncludeStartingAtPrefix,\n )\n }\n\n buildPriceStringForTier(tier: PricingTier, frequency?: MarketplaceBillingFrequency, isStartingPrice?: boolean): Observable<string> {\n return this.displayPriceService.formatDisplayPrice(\n tier.price,\n this.billedProduct.currency,\n frequency as any,\n undefined,\n undefined,\n undefined,\n isStartingPrice);\n }\n\n buildFrequencyString(frequency?: string): Observable<string> {\n return this.displayPriceService.formatBillingFrequency(frequency);\n }\n\n buildCommitmentMessage(): Observable<string> {\n return combineLatest([\n this.translateService.stream('FRONTEND.STORE.PRICING_FREQUENCIES'),\n this.billedProduct$,\n this.pricing$,\n this.isFree$,\n this.shouldContactSales$\n ]).pipe(\n switchMap(([frequencyTranslations, billedProduct, pricing, isFree, shouldContactSales]) => {\n const frequency = billedProduct ? billedProduct.billingFrequency.toString().toLowerCase() :\n pricing && pricing.prices.length > 0 ? pricing.prices[0].frequency.toLowerCase() : '';\n let frequencyString = '';\n if (frequency === 'yearly') {\n frequencyString = frequencyTranslations.YEAR;\n } else if (frequency === 'monthly') {\n frequencyString = frequencyTranslations.MONTH;\n }\n if (!frequencyString || isFree || shouldContactSales) {\n return of('');\n }\n if (billedProduct && billedProduct.commitment) {\n const initial = billedProduct.commitment.initial;\n const recurring = billedProduct.commitment.recurring;\n return this.translateService.stream('FRONTEND.STORE.COMMITMENT_WITH_RENEWAL', {\n initial: initial,\n frequencyString: frequencyString,\n recurring: recurring,\n });\n }\n return of('');\n })\n )\n }\n}\n","import {Component} from '@angular/core';\nimport {VaPricingComponent} from '../pricing.component';\n\n@Component({\n selector: 'highlight-pricing',\n templateUrl: './highlight-pricing.component.html',\n styleUrls: ['./highlight-pricing.component.scss'],\n})\nexport class HighlightPricingComponent extends VaPricingComponent {\n}\n","import {Component} from '@angular/core';\nimport {VaPricingComponent} from '../pricing.component';\n\n@Component({\n selector: 'table-pricing',\n templateUrl: './table-pricing.component.html',\n styleUrls: ['./table-pricing.component.scss'],\n})\nexport class TablePricingComponent extends VaPricingComponent {\n}\n","/*tslint:disable*/\nexport class En {\n static readonly en = {\n \"FRONTEND.STORE\": {\n \"TOTAL\": \"Total\",\n \"CONTACT_SALES\": \"Contact Sales\",\n \"FREE\": \"Free\",\n \"STARTING_AT\": \"Starting at\",\n \"ENABLED_UPPER\": \"ENABLED\",\n \"ENABLE_UPPER\": \"ENABLE\",\n \"MIN_TO_MAX\": \"{{minRange}} to {{maxRange}}\",\n \"PRODUCT_PRICING_WITH_FREQUENCY\": \"{{pricingTier}} accounts {{frequency}}\",\n \"COMMITMENT_WITH_RENEWAL\": \"*{{initial}} {{frequencyString}} minimum, renews for {{recurring}} {{frequencyString}} periods\",\n \"COMMITMENT\": \"${{initial}} ${{frequencyString}} commitment\",\n \"PRICING_FREQUENCIES\": {\n \"MONTH\": \"month\",\n \"YEAR\": \"year\"\n },\n \"REQUIRES_DESCRIPTOR\": \"(Requires {{requirementName}})\",\n \"ADMINISTRATIVE_QUESTIONS\": \"Administrative Questions\",\n \"AUTO_TITLE_TEXT\": {\n \"SOME_FIELDS_INVALID\": \"* Some fields are invalid and/or required but empty\",\n \"OPTIONAL_FIELDS_UNANSWERED\": \"Optional fields unanswered\",\n \"COMPLETE\": \"Complete\"\n },\n \"REQUIRES\": \"Requires\",\n \"ENABLED_WITH_PREREQUISITE\": \"Enabled with {{prerequisite}}\",\n \"PRICE_APPLIES_PER_UNIT\": \"Price applies per unit within a range\",\n \"PRICE_APPLIES_TO_ALL_UNITS\": \"Price applies to all units once range is met\",\n \"PRICING\": \"Pricing\",\n \"FAQS\": \"FAQs\",\n \"GALLERY\": \"Gallery\",\n \"FILES\": \"Files\",\n \"GET_IT_NOW\": \"Get It Now\",\n \"CONTAINS_NUM_ITEMS\": \"Contains {{itemCount}} items\"\n }\n };\n}\n","/*tslint:disable*/\nexport class Cs {\n static readonly cs = {\n \"FRONTEND.STORE\": {\n \"TOTAL\": \"Celkem\",\n \"CONTACT_SALES\": \"Kontaktovat obchodního zástupce\",\n \"FREE\": \"Zdarma\",\n \"STARTING_AT\": \"Začíná na\",\n \"ENABLED_UPPER\": \"POVOLENO\",\n \"ENABLE_UPPER\": \"POVOLIT\",\n \"MIN_TO_MAX\": \"{{minRange}} až {{maxRange}}\",\n \"PRODUCT_PRICING_WITH_FREQUENCY\": \"{{pricingTier}} účtů za {{frequency}}\",\n \"COMMITMENT_WITH_RENEWAL\": \"*{{initial}} {{frequencyString}} minimum, obnovuje se na {{recurring}} {{frequencyString}}\",\n \"COMMITMENT\": \"Závazek {{initial}} {{frequencyString}}\",\n \"PRICING_FREQUENCIES\": {\n \"MONTH\": \"měsíč\",\n \"YEAR\": \"rok\"\n },\n \"REQUIRES_DESCRIPTOR\": \"(Vyžaduje {{requirementName}})\",\n \"ADMINISTRATIVE_QUESTIONS\": \"Administrativní otázky\",\n \"AUTO_TITLE_TEXT\": {\n \"SOME_FIELDS_INVALID\": \"* Některá pole jsou neplatná a/nebo povinná, ale prázdná\",\n \"OPTIONAL_FIELDS_UNANSWERED\": \"Volitelná pole nezodpovězena\",\n \"COMPLETE\": \"Kompletní\"\n },\n \"REQUIRES\": \"Vyžaduje\",\n \"ENABLED_WITH_PREREQUISITE\": \"Povoleno s {{prerequisite}}\",\n \"PRICE_APPLIES_PER_UNIT\": \"Cena platí za jednotku v rozsahu\",\n \"PRICE_APPLIES_TO_ALL_UNITS\": \"Cena se vztahuje na všechny jednotky, jakmile je dosaženo rozsahu\",\n \"PRICING\": \"Cena\",\n \"FAQS\": \"FAQ\",\n \"GALLERY\": \"Galerie\",\n \"FILES\": \"Soubory\",\n \"GET_IT_NOW\": \"Získat hned\",\n \"CONTAINS_NUM_ITEMS\": \"Obsahuje {{itemCount}} položek\"\n }\n };\n}\n","import {Inject, NgModule, Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaPricingComponent} from './pricing.component';\nimport {HighlightPricingComponent} from './highlight-pricing/highlight-pricing.component';\nimport {TablePricingComponent} from './table-pricing/table-pricing.component';\nimport {CoreSharedModule} from '@vendasta/core/shared';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n CoreSharedModule,\n TranslateModule.forChild()\n ],\n declarations: [VaPricingComponent, HighlightPricingComponent, TablePricingComponent],\n exports: [VaPricingComponent]\n})\nexport class VaPricingModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {StoreItem} from './store-item';\nimport {ImageTransformationService} from '@vendasta/core/image-transformation';\n\n@Component({\n selector: 'va-store-card',\n template: `\n<mat-card class=\"hover-card\" *ngIf=\"item\" (click)=\"cardClicked.emit(item)\">\n<div class=\"hover-area\">\n <div class=\"product-banner\" (click)=\"bannerClicked.emit(item)\"\n [style.background-color]=\"item.headerImageUrl ? '': getBannerColorForName()\">\n <img class=\"img-container\" *ngIf=\"item.headerImageUrl\"\n [src]=\"item.headerImageUrl\" [srcset]=\"getSrcsetHeaderUrls(item.headerImageUrl)\">\n </div>\n\n <div class=\"description\" (click)=\"descriptionClicked.emit(item)\">\n <mat-card-header>\n <va-icon mat-card-avatar [diameter]=\"40\" [name]=\"item.name\" [iconUrl]=\"item.iconUrl\"></va-icon>\n <mat-card-title>{{item.name}}</mat-card-title>\n <mat-card-subtitle>\n <ng-container *ngIf=\"item.pricing; else formatted\">\n <va-pricing [pricing]=\"item.pricing\"\n [highlightPrice]=\"false\"></va-pricing>\n </ng-container>\n <ng-template #formatted>{{item.formattedPrice}}</ng-template>\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content> {{ item.tagline }}\n </mat-card-content>\n </div>\n\n <button *ngIf=\"item.purchased !== undefined\"\n mat-button color=\"primary\" class=\"enabled-indicator\" (click)=\"purchasedClicked.emit(item)\" [disabled]=\"item.purchased\">\n <i *ngIf=\"!item.purchased\" class=\"material-icons\">add</i>\n <i *ngIf=\"item.purchased\" class=\"material-icons\" style=\"color: #39B74A\">check</i>\n <span>{{ (item.purchased ? 'FRONTEND.STORE.ENABLED_UPPER' : 'FRONTEND.STORE.ENABLE_UPPER') | translate }}</span>\n </button>\n </div>\n</mat-card>\n `,\n styleUrls: ['./store-card.component.scss']\n})\nexport class StoreCardComponent {\n @Input() item: StoreItem;\n @Output() purchasedClicked = new EventEmitter<StoreItem>();\n @Output() cardClicked = new EventEmitter<StoreItem>();\n @Output() descriptionClicked = new EventEmitter<StoreItem>();\n @Output() bannerClicked = new EventEmitter<StoreItem>();\n\n constructor(private imageTransformationService: ImageTransformationService) {}\n\n getBannerColorForName(): string {\n // determine an icon color for a product with no icon by using the product name\n const COLOR_CODES = [\n '#EF5350', '#42A5F5', '#66BB6A', '#FFA726', '#AB47BC', '#FFCA28', '#EC407A', '#26C6DA',\n '#FF7B57'\n ];\n let nameSum = 0;\n const defaultColor = '#808080';\n if (!this.item.name) {\n return defaultColor;\n }\n for (let i = 0; i < this.item.name.length; i++) {\n nameSum += this.item.name[i].charCodeAt(0);\n }\n const index = nameSum % COLOR_CODES.length;\n return COLOR_CODES[index];\n }\n\n getSrcsetHeaderUrls(imageUrl: string): string {\n return this.imageTransformationService.getSrcSetForImage(imageUrl, [680, 1360, 2720]);\n }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { MatButtonModule, MatCardModule, MatIconModule, MatMenuModule } from '@angular/material';\nimport { ImageTransformationModule } from '@vendasta/core/image-transformation';\nimport { VaIconModule } from '@vendasta/uikit';\nimport { VaPricingModule } from './pricing/pricing.module';\nimport { StoreCardComponent } from './store-card.component';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { En } from './assets/i18n/en';\nimport { Cs } from './assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n VaIconModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n MatMenuModule,\n ImageTransformationModule,\n VaPricingModule,\n TranslateModule.forChild()\n ],\n declarations: [StoreCardComponent],\n exports: [StoreCardComponent]\n})\nexport class StoreCardModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\n\nimport {StoreItem} from './store-item';\n\n@Component({\n selector: 'va-store',\n template: `\n <div class=\"toolbar\">\n <div *ngIf=\"searchable\" class=\"table-controls-row\">\n <va-search-box (update)=\"filterTerm = $event\"></va-search-box>\n </div>\n </div>\n <div class=\"row row-gutters\">\n <div *ngFor=\"let item of filteredItems\" class=\"col-flex\">\n <va-store-card [item]=\"item\" (cardClicked)=\"this.itemClicked.emit(item)\"></va-store-card>\n </div>\n </div>\n `,\n styleUrls: ['./store.component.scss']\n})\nexport class StoreComponent {\n @Input() items: StoreItem[] = [];\n @Input() searchable = true;\n @Output() itemClicked = new EventEmitter<StoreItem>();\n\n filterTerm: string;\n\n get filteredItems(): StoreItem[] {\n if (this.filterTerm) {\n return this.items.filter(pkg => pkg.name.toLowerCase().indexOf(this.filterTerm.toLowerCase()) !== -1);\n }\n return this.items;\n }\n}\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { FieldBase } from '../fields/field-base';\nimport { combineLatest, Subscription } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'va-dropdown-form-section',\n template: `\n <mat-expansion-panel *ngIf=\"expandable || expandable == undefined\" [expanded]=\"startOpen\">\n <mat-expansion-panel-header [collapsedHeight]=\"'*'\" [expandedHeight]=\"'*'\">\n <div class=\"dropdown-form-header\">\n <mat-icon\n [ngClass]=\"{invalid: iconName=='warning', valid: iconName=='check_circle', question: iconName=='help_outline'}\">\n {{ iconName }}\n </mat-icon>\n <mat-panel-title *ngIf=\"!displayAutoTitle\">\n {{ titleText }}\n </mat-panel-title>\n <mat-panel-title *ngIf=\"displayAutoTitle\"\n [ngClass]=\"{valid: iconName=='check_circle', invalid: iconName=='warning'}\">\n <div class=\"title\"> {{ titleText }}</div>\n <div *ngIf=\"titleText && autoTitleText\"> &nbsp;</div>\n <div><ng-container><i> {{autoTitleText}} </i></ng-container></div>\n </mat-panel-title>\n <mat-panel-description *ngIf=\"displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n {{ autoDescriptionText }}\n </mat-panel-description>\n <mat-panel-description *ngIf=\"!displayAutoDescription\" [ngClass]=\"{invalid: iconName=='warning'}\">\n <i> {{descriptionText}} </i>\n </mat-panel-description>\n </div>\n </mat-expansion-panel-header>\n <div class=\"expansion-panel-body\">\n <va-field *ngFor=\"let field of fields\" [field]=\"field\"\n [form]=\"parentForm.controls[titleText + uniqueIndex]\"\n ></va-field>\n <p *ngIf=\"editingHint != ''\" class=\"editing-hint\"><i>{{ editingHint }}</i></p>\n </div>\n </mat-expansion-panel>\n `,\n styleUrls: ['./dropdown-form-section.component.scss']\n})\nexport class DropDownFormSectionComponent implements OnInit, OnDestroy {\n @Input() prepopulatedData: {};\n @Input() startOpen = false;\n @Input() parentForm: FormGroup;\n @Input() displayAutoTitle = false;\n @Input() titleText = '';\n @Input() displayAutoDescription = true;\n @Input() descriptionText = '';\n @Input() fields: FieldBase<any>[];\n @Input() editingHint = '';\n @Input() expandable = true;\n autoDescriptionText = '';\n iconName = 'help_outline';\n subscriptions: Subscription[] = [];\n uniqueIndex = 1;\n autoTitleText = '';\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n const allFieldsHidden = this.fields.reduce((p, c, i, a) => p && c.hidden, true);\n if (allFieldsHidden) {\n this.expandable = false;\n }\n while (this.parentForm.controls.hasOwnProperty(this.titleText + this.uniqueIndex)) {\n this.uniqueIndex += 1;\n }\n this.parentForm.addControl(this.titleText + this.uniqueIndex, this.toFormGroup(this.fields));\n const form = this.parentForm.controls[this.titleText + this.uniqueIndex] as FormGroup;\n\n for (const key in form.controls) {\n if (form.controls.hasOwnProperty(key)) {\n if (this.prepopulatedData != null && this.prepopulatedData.hasOwnProperty(key)) {\n form.controls[key].setValue(this.prepopulatedData[key]);\n }\n }\n }\n this.subscriptions.push(\n combineLatest([\n form.statusChanges,\n this.translateService.stream('FRONTEND.STORE.AUTO_TITLE_TEXT')\n ]).subscribe(([change, autoTitleText]) => {\n let missingFields = false;\n for (const control in form.controls) {\n if (!form.controls[control].value || (form.controls[control].value.constructor === Array && !form.controls[control].value[0])) {\n this.iconName = 'help_outline';\n missingFields = true;\n if (change === 'INVALID') {\n this.autoTitleText = autoTitleText.SOME_FIELDS_INVALID;\n if (form.controls[control].dirty || form.controls[control].touched) {\n this.iconName = 'warning';\n break;\n }\n } else {\n this.autoTitleText = autoTitleText.OPTIONAL_FIELDS_UNANSWERED;\n }\n }\n }\n if (!missingFields) {\n this.iconName = 'check_circle';\n this.autoTitleText = autoTitleText.COMPLETE;\n }\n })\n );\n\n if (this.displayAutoDescription) {\n this.subscriptions.push(\n form.valueChanges.subscribe(changes => {\n let description = '';\n for (const key in changes) {\n if (changes.hasOwnProperty(key) && changes[key] != null && changes[key].length > 0) {\n if (changes[key][0].name) {\n for (const fileKey in changes[key]) {\n if (changes[key][fileKey] != null) {\n description += changes[key][fileKey].name;\n description += ', ';\n }\n }\n } else {\n description += changes[key];\n description += ', ';\n }\n }\n }\n this.autoDescriptionText = description.substring(0, description.length - 2);\n })\n );\n }\n form.updateValueAndValidity({ onlySelf: false, emitEvent: true });\n }\n\n toFormGroup(formFields: FieldBase<any>[]): FormGroup {\n const group: any = {};\n formFields.forEach(field => {\n let validations;\n if (!field.required || field.hidden) {\n validations = field.validator;\n } else if (field.controlType === 'checkbox') {\n validations = [Validators.requiredTrue, field.validator];\n } else {\n validations = [Validators.required, field.validator];\n }\n\n const formControl = new FormControl({value: field.value, disabled: field.disabled}, validations);\n group[field.id] = formControl;\n this.subscriptions.push(formControl.valueChanges.subscribe(value => (field.value = value)));\n });\n\n return new FormGroup(group);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n}\n","import {Input, Component} from '@angular/core';\nimport {FormGroup} from '@angular/forms';\n\n@Component({\n selector: 'va-field',\n styleUrls: ['./field.component.scss'],\n templateUrl: './field.component.html'\n})\nexport class FieldComponent {\n @Input() field: any; // avoid checking union type in template\n @Input() form: FormGroup;\n get isValid(): boolean {\n return this.form.controls[this.field.id].valid || this.form.controls[this.field.id].pristine;\n }\n\n showCheckboxError(field): boolean {\n return this.form.controls[field].errors && this.form.controls[field].errors.required && this.form.controls[field].touched;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FieldBase } from './field-base';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\n@Injectable()\nexport class FieldService {\n createFormControl(field: FieldBase<any>): FormControl {\n if (field.required) {\n return new FormControl(field.value, Validators.required);\n } else {\n return new FormControl(field.value);\n }\n }\n\n toFormGroup(formFields: FieldBase<any>[], subscriptions: Subscription[]): FormGroup {\n const group: any = {};\n formFields.forEach(field => {\n let formControl: FormControl;\n if (field.controlType === 'checkbox') {\n formControl = new FormControl(field.value);\n } else {\n formControl = this.createFormControl(field);\n }\n group[field.id] = formControl;\n if (subscriptions) {\n subscriptions.push(formControl.valueChanges.subscribe(value => (field.value = value)));\n }\n });\n return new FormGroup(group);\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Pricing} from '../pricing/pricing';\nimport {BilledProduct, BillingModel} from '@vendasta/core/billing';\nimport { Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'va-header-container',\n templateUrl: './header-container.component.html',\n styleUrls: ['./header-container.component.scss']\n})\n\nexport class VaHeaderContainerComponent {\n @Input() iconUrl: string;\n @Input() title: string;\n @Input() tagline: string;\n @Input() prerequisite: string;\n @Input() chipLabels: string[];\n @Input() pricing: Pricing;\n @Input() billedProduct: BilledProduct;\n @Input() loaded = true;\n @Input() hasVerifiedContract: boolean;\n @Input() pricingLabel: string;\n @Input() primaryPricingActionLabel: string;\n @Input() pricingActionLabel: string;\n @Input() pricingActionEnabled: boolean;\n @Input() actionEnabled: boolean;\n @Input() actionLabel: string;\n @Input() showAction: boolean;\n @Input() showPricing: boolean;\n @Input() showEnableAddon = false;\n @Input() prerequisiteLabel: string;\n @Output() prerequisiteSelected = new EventEmitter();\n @Output() actionSelected = new EventEmitter();\n @Output() primaryPricingActionSelected = new EventEmitter();\n @Output() pricingActionSelected = new EventEmitter();\n\n constructor(private translateService: TranslateService) {}\n\n onActionSelected(): void {\n this.actionSelected.emit();\n }\n\n onPrerequisiteSelected(): void {\n this.prerequisiteSelected.emit();\n }\n\n showPricingModel(billedProduct: BilledProduct): boolean {\n return billedProduct && [BillingModel.Tiered, BillingModel.Stairstep].includes(billedProduct.billingModel);\n }\n\n getPricingModelTooltips(billingModel: BillingModel): Observable<string> {\n switch (billingModel) {\n case BillingModel.Stairstep:\n return this.translateService.stream('FRONTEND.STORE.PRICE_APPLIES_PER_UNIT');\n case BillingModel.Tiered:\n return this.translateService.stream('FRONTEND.STORE.PRICE_APPLIES_TO_ALL_UNITS');\n default:\n return of('');\n }\n }\n}\n","import { Inject, NgModule, Optional } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaHeaderContainerComponent} from './header-container.component';\nimport {MatChipsModule, MatIconModule, MatButtonModule, MatTooltipModule} from '@angular/material';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaIconModule} from '@vendasta/uikit';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n VaPricingModule,\n VaIconModule,\n MatChipsModule,\n MatButtonModule,\n MatTooltipModule,\n TranslateModule.forChild()\n ],\n declarations: [VaHeaderContainerComponent],\n exports: [VaHeaderContainerComponent]\n})\nexport class VaHeaderContainerModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import {FormGroup} from '@angular/forms';\nimport {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nexport class OrderFormSectionData {\n parentForm: FormGroup;\n titleText: string;\n subtitleText: string;\n descriptionText: string;\n iconUrl: string;\n primarySection: DropDownFormSectionData;\n subsections: DropDownFormSectionData[];\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nimport {OrderFormSectionData} from './order-form-section-data';\n\n@Component({\n selector: 'va-order-form-section',\n templateUrl: 'order-form-section.component.html',\n styleUrls: ['./order-form-section.component.scss'],\n})\n\nexport class OrderFormSectionComponent implements OnInit {\n @Input() data: OrderFormSectionData;\n\n constructor() {}\n\n ngOnInit(): void {\n // The first section should always be expanded.\n const topSection = this.getTopSection();\n if (topSection) {\n topSection.startOpen = true;\n }\n }\n\n getTopSection(): DropDownFormSectionData {\n if (!this.data) {\n return null;\n }\n if (this.data.primarySection) {\n return this.data.primarySection;\n }\n if (this.data.subsections && this.data.subsections.length > 0) {\n return this.data.subsections[0];\n }\n return null;\n }\n}\n","import {FieldBase} from '../fields/field-base';\nimport {FormGroup} from '@angular/forms';\n\nexport class DropDownFormSectionData {\n prepopulatedData: any;\n startOpen: boolean;\n parentForm: FormGroup;\n displayAutoTitle: boolean;\n titleText: string;\n displayAutoDescription: boolean;\n descriptionText: string;\n fields: FieldBase<any>[];\n editingHint: string;\n /* tslint:disable */\n expandable? = true;\n /* tslint:enable */\n}\n","import {DropDownFormSectionData} from '../dropdown-form-section/dropdown-form-section-data';\nimport {OrderFormSectionData} from '../order-form-section/order-form-section-data';\nimport {FieldBase, FieldBaseOptions} from '../fields/field-base';\nimport {DropDownFieldOptions} from '../fields/field-dropdown';\nimport {FileUploadGroupFieldOptions} from '../fields/field-fileuploadgroup';\nimport {TextBoxFieldOptions} from '../fields/field-textbox';\nimport {VBCUserFieldOptions} from '../fields/field-vbcuser';\n\nexport interface OrderLabelsInterface {\n commonForm: {\n headerTitle: string;\n headerText: string;\n editingHint: string;\n businessSectionTitle?: string;\n salespersonSectionTitle?: string;\n contactSectionTitle?: string;\n businessName?: string;\n businessAddress?: string;\n businessPhoneNumber?: string;\n businessAccountGroupId?: string;\n businessWebsite?: string;\n salespersonName?: string;\n salespersonPhoneNumber?: string;\n salespersonEmail?: string;\n contactName?: string;\n contactPhoneNumber?: string;\n contactEmail?: string;\n };\n}\n\nexport type OrderFormFieldOptionsType = (FieldBaseOptions | DropDownFieldOptions | FileUploadGroupFieldOptions | TextBoxFieldOptions | VBCUserFieldOptions)\n\nexport interface OrderFormInterface {\n appId: string;\n addonId?: string;\n commonForm?: IncludedCommonFormFieldsInterface;\n commonFormRequiredFields?: IncludedCommonFormFieldsInterface;\n customFields?: OrderFormFieldOptionsType[];\n}\n\nexport interface IncludedCommonFormFieldsInterface {\n businessName?: boolean;\n businessAddress?: boolean;\n businessPhoneNumber?: boolean;\n businessAccountGroupId?: boolean;\n businessWebsite?: boolean;\n salespersonName?: boolean;\n salespersonPhoneNumber?: boolean;\n salespersonEmail?: boolean;\n contactName?: boolean;\n contactPhoneNumber?: boolean;\n contactEmail?: boolean;\n}\n\nexport interface CommonFormSectionInterface {\n fields: CommonFormFieldInterface[];\n sectionName?: string;\n populatedData?: CommonFormData;\n}\n\nexport interface AddonKeyInterface {\n addonId?: string;\n appId?: string;\n}\n\nexport interface CommonFormFieldInterface extends FieldBase<any> {\n productIds?: string[];\n addonKeys?: AddonKeyInterface[];\n}\n\nexport interface CommonFieldIdsInterface {\n fieldId: string;\n required: boolean;\n}\n\n// Keys are snake cased here because that is the format in which we submit this data to vendors\nexport interface CommonFormData {\n contact_email?: string;\n contact_name?: string;\n contact_phone_number?: string;\n business_account_group_id?: string;\n business_name?: string;\n business_address?: string;\n business_phone_number?: string;\n business_website?: string;\n salesperson_name?: string;\n salesperson_email?: string;\n salesperson_phone_number?: string;\n}\n\nexport class ProductOrderFormSectionData extends OrderFormSectionData {\n productId: string;\n subsections: AddonDropDownFormSectionData[];\n}\n\nexport class AddonDropDownFormSectionData extends DropDownFormSectionData {\n productId: string;\n addonId: string;\n}\n\nexport interface ProductInfoInterface {\n productId: string;\n name?: string;\n tagline?: string;\n icon?: string;\n addonInfo?: AddonInfoInterface[];\n}\n\nexport interface AddonInfoInterface {\n addonId: string;\n name?: string;\n}\n\nexport interface CustomFieldsAnswers {\n productID: string;\n addonKey?: AddonKeyInterface;\n customFieldsAnswers: CustomFieldsAnswer[];\n}\n\nexport interface CustomFieldsAnswer {\n fieldId: string;\n answer?: string;\n}\n\nexport interface OrderFormOptionsInterface {\n bypassRequiredQuestions?: boolean;\n readOnly?: boolean;\n showOfficeUseQuestions?: boolean;\n}\n","import { Injectable } from '@angular/core';\nimport { AddonKey, CommonField, CustomField, Field, FieldType } from '@vendasta/sales-orders';\nimport {\n AddonDropDownFormSectionData,\n CommonFieldIdsInterface,\n CommonFormData,\n CommonFormFieldInterface,\n CommonFormSectionInterface, CustomFieldsAnswer,\n CustomFieldsAnswers,\n OrderFormFieldOptionsType,\n OrderFormInterface,\n OrderLabelsInterface,\n ProductInfoInterface,\n ProductOrderFormSectionData\n} from './interface';\nimport {\n CheckboxField,\n DropdownField,\n FileUploadGroupField,\n FileUploadGroupFieldOptions,\n TextareaField,\n TextboxField,\n VBCUserField,\n VBCUserFieldOptions,\n FieldBase,\n User, DropDownFormSectionData, ControlType,\n} from '../..';\nimport { FormGroup } from '@angular/forms';\nimport uuid from 'uuid/v4';\nimport { OrderFormOptions } from './order-form.component';\n\n@Injectable()\nexport class OrderFormService {\n static camelToSnakeCaseMap = {\n 'contactName': 'contact_name',\n 'contactEmail': 'contact_email',\n 'contactPhoneNumber': 'contact_phone_number',\n 'businessAccountGroupId': 'business_account_group_id',\n 'businessName': 'business_name',\n 'businessAddress': 'business_address',\n 'businessPhoneNumber': 'business_phone_number',\n 'businessWebsite': 'business_website',\n 'salespersonName': 'salesperson_name',\n 'salespersonEmail': 'salesperson_email',\n 'salespersonPhoneNumber': 'salesperson_phone_number'\n };\n\n private static extractRequiredCommonFieldIds(orderForm: OrderFormInterface): string[] {\n if (!orderForm || !orderForm.commonFormRequiredFields) {\n return [];\n }\n return Object.keys(orderForm.commonFormRequiredFields).filter(k => orderForm.commonFormRequiredFields[k]);\n }\n\n private static buildCommonFieldIds(orderForms: OrderFormInterface[]): CommonFieldIdsInterface[] {\n const commonFieldIdsMap: Map<string, CommonFieldIdsInterface> = new Map<string, CommonFieldIdsInterface>();\n for (const key in OrderFormService.camelToSnakeCaseMap) {\n if (key) {\n commonFieldIdsMap.set(key,\n {\n fieldId: key,\n required: false,\n }\n )\n }\n }\n orderForms.map(orderForm => {\n const requiredCommonFieldIds = this.extractRequiredCommonFieldIds(orderForm);\n requiredCommonFieldIds.map(fieldId => {\n const commonFieldId = commonFieldIdsMap.get(fieldId);\n commonFieldId.required = true;\n commonFieldIdsMap.set(fieldId, commonFieldId);\n });\n });\n return Array.from(commonFieldIdsMap.values());\n }\n\n private static fillCommonFormSections(fieldIds: CommonFieldIdsInterface[], commonData: CommonFormData, labels: OrderLabelsInterface,\n options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const commonFormSections = OrderFormService.buildCommonOrderFormFields(fieldIds, labels, options);\n return commonFormSections.map(section => ({...section, populatedData: commonData}));\n }\n\n private static buildCommonOrderFormFields(fieldIds: CommonFieldIdsInterface[], labels: OrderLabelsInterface, options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const businessSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.businessSectionTitle || 'Business',\n fields: []\n };\n const salespersonSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.salespersonSectionTitle || 'Salesperson',\n fields: []\n };\n const contactSection: CommonFormSectionInterface = {\n sectionName: labels.commonForm.contactSectionTitle || 'Contact',\n fields: []\n };\n\n for (const field of fieldIds) {\n const fieldLabel = this.getLabelForFieldId(field.fieldId, labels);\n const commonFormField: CommonFormFieldInterface = new TextboxField({\n id: OrderFormService.camelToSnakeCaseMap[field.fieldId],\n label: fieldLabel,\n textboxType: 'text'\n });\n commonFormField.displayOnly = commonFormField.id === 'business_account_group_id';\n commonFormField.disabled = options.readOnly;\n if (!options.bypassRequiredQuestions) {\n commonFormField.required = field.required;\n }\n if (field.fieldId.startsWith('contact')) {\n contactSection.fields.push(commonFormField);\n }\n if (field.fieldId.startsWith('business')) {\n businessSection.fields.push(commonFormField);\n }\n if (field.fieldId.startsWith('salesperson')) {\n if (!options.showOfficeUseQuestions) {\n commonFormField.hidden = true;\n }\n salespersonSection.fields.push(commonFormField);\n }\n }\n return [businessSection, contactSection, salespersonSection].filter(section =>\n section.fields ? section.fields.length > 0 : false\n );\n }\n\n private static getLabelForFieldId(fieldId: string, labels: OrderLabelsInterface): string {\n return labels.commonForm[fieldId] || '';\n }\n\n private static buildOrderFormSectionData(parentForm: FormGroup): AddonDropDownFormSectionData {\n const section = new AddonDropDownFormSectionData();\n section.displayAutoTitle = true;\n section.descriptionText = '';\n section.displayAutoDescription = false;\n section.parentForm = parentForm;\n return section;\n }\n\n private static buildCustomOrderFormFields(customFields: OrderFormFieldOptionsType[], fileUploadUrl: string, users: User[],\n answers: CustomFieldsAnswer[], options: OrderFormOptions):\n FieldBase<any>[] {\n const fieldTypeMap = {\n text: TextboxField,\n textbox: TextboxField,\n dropdown: DropdownField,\n checkbox: CheckboxField,\n file: FileUploadGroupField,\n textarea: TextareaField,\n vbcuser: VBCUserField\n };\n return customFields\n .filter(field => {\n return fieldTypeMap[field.type];\n })\n .map(field => {\n const fieldClass = fieldTypeMap[field.type];\n const result = (function () {\n switch (fieldClass) {\n case VBCUserField:\n const fieldConfig = {\n description: field.description,\n id: field.id,\n required: field.required,\n type: field.type,\n label: field.label,\n forOfficeUseOnly: field.forOfficeUseOnly,\n hidden: field.hidden,\n users: users // TODO: Get users in this component\n } as VBCUserFieldOptions;\n return new VBCUserField(fieldConfig);\n case FileUploadGroupField:\n const uploadField = field as FileUploadGroupFieldOptions;\n uploadField.uploadUrl = fileUploadUrl;\n return new FileUploadGroupField(uploadField);\n default:\n return new fieldClass(field);\n }\n })();\n result.id = OrderFormService.encodeCustomFieldId(field.id);\n if (!options.showOfficeUseQuestions) {\n result.hidden = result.forOfficeUseOnly ? true : result.hidden;\n }\n result.required = options.bypassRequiredQuestions ? false : result.required;\n result.disabled = options.readOnly ? options.readOnly : result.disabled;\n if (answers) {\n const ca = answers.find(a => a.fieldId === field.id);\n if (ca) {\n try {\n result.value = JSON.parse(ca.answer);\n } catch (error) {\n result.value = ca.answer;\n }\n }\n }\n return result\n });\n }\n\n // Different products can have order form fields with the same fieldID, which will cause problem.\n // Please refer to https://github.com/vendasta/business-center-client/pull/1002\n // We will prefix the fieldID with uuid, and take it off before we same the order form into session storage\n private static encodeCustomFieldId(fieldId: string): string {\n const id = uuid();\n return `${id}#${fieldId}`;\n }\n\n private static decodeCustomFieldId(fieldId: string): string {\n return fieldId.replace(new RegExp('(.*#)'), '');\n }\n\n private static mapFieldType(fieldType: ControlType): FieldType {\n switch (fieldType) {\n case 'textbox':\n return FieldType.TEXT;\n case 'textarea':\n return FieldType.TEXTAREA;\n case 'checkbox':\n return FieldType.CHECKBOX;\n case 'dropdown':\n return FieldType.DROPDOWN;\n case 'file':\n return FieldType.FILE;\n case 'vbcuser':\n return FieldType.VBCUSER;\n default:\n return FieldType.NOT_SPECIFIED;\n }\n }\n\n private static orderFieldToSalesOrderField(fieldBase: FieldBase<any>): Field {\n return new Field({\n fieldId: OrderFormService.decodeCustomFieldId(fieldBase.id),\n fieldType: OrderFormService.mapFieldType(fieldBase.controlType),\n label: fieldBase.label,\n description: fieldBase.description || '',\n prefix: fieldBase.prefix || '',\n suffix: fieldBase.suffix || '',\n regexValidator: fieldBase.regexValidator || '',\n regexErrorMessage: fieldBase.regexErrorMessage || '',\n answer: fieldBase.value ? JSON.stringify(fieldBase.value) : 'null'\n });\n }\n\n private static productOrderFormToCustomFields(orderFormData: ProductOrderFormSectionData): CustomField[] {\n const primaryCustomField = new CustomField();\n primaryCustomField.productId = orderFormData.productId;\n primaryCustomField.fields = orderFormData.primarySection\n ? orderFormData.primarySection.fields.map(field => this.orderFieldToSalesOrderField(field))\n : [];\n const secondaryCustomFields = orderFormData.subsections.map(subsection => {\n const customField = new CustomField();\n if (subsection.addonId) {\n customField.addonKey = new AddonKey({\n appId: subsection.productId,\n addonId: subsection.addonId\n });\n } else {\n customField.productId = orderFormData.productId;\n }\n customField.fields = subsection.fields.map(field => this.orderFieldToSalesOrderField(field));\n return customField;\n });\n return [].concat(primaryCustomField, secondaryCustomFields);\n }\n\n public static getCommonFormSections(orderForms: OrderFormInterface[], commonData: CommonFormData, labels: OrderLabelsInterface,\n options: OrderFormOptions):\n CommonFormSectionInterface[] {\n const fieldIds = OrderFormService.buildCommonFieldIds(orderForms);\n return OrderFormService.fillCommonFormSections(fieldIds, commonData, labels, options);\n }\n\n public static getCustomFormSections(orderForms: OrderFormInterface[], products: ProductInfoInterface[], parentForm: FormGroup,\n fileUploadUrl: string, users: User[], answers: CustomFieldsAnswers[], options: OrderFormOptions)\n : ProductOrderFormSectionData[] {\n const formSections = products.map(product => {\n const subsections: AddonDropDownFormSectionData[] = [];\n (product.addonInfo || []).map(addon => {\n const addonOrderForms = orderForms.filter(o => o.addonId === addon.addonId);\n const addonAnswers: CustomFieldsAnswers[] = (answers || []).filter(a => a.addonKey &&\n a.addonKey.appId === product.productId && a.addonKey.addonId === addon.addonId && a.productID === product.productId);\n addonOrderForms.map((addonOrderForm, index) => {\n if (addonOrderForm && addonOrderForm.customFields && addonOrderForm.customFields.length > 0) {\n const addonSection = OrderFormService.buildOrderFormSectionData(parentForm);\n const addonAnswersForThisSpecificFormIndex = (addonAnswers.length > index) ? addonAnswers[index].customFieldsAnswers : [];\n const formFields = OrderFormService.buildCustomOrderFormFields(addonOrderForm.customFields, fileUploadUrl, users,\n addonAnswersForThisSpecificFormIndex, options);\n addonSection.expandable = true;\n addonSection.titleText = addon.name;\n addonSection.fields = formFields;\n addonSection.productId = product.productId;\n addonSection.addonId = addon.addonId;\n subsections.push(addonSection);\n }\n });\n });\n\n const foundOrderForms = orderForms.reduce((orderFormsFound, o) => {\n if (o.appId === product.productId && !o.addonId) {\n orderFormsFound.push(o);\n }\n return orderFormsFound;\n }, []);\n const [primaryOrder, ...otherOrdersForSameProduct] = foundOrderForms;\n\n const productHasOrderForm = primaryOrder && primaryOrder.customFields && primaryOrder.customFields.length > 0;\n if (subsections.length > 0 || productHasOrderForm) {\n const sectionData = new ProductOrderFormSectionData();\n sectionData.productId = product.productId;\n sectionData.parentForm = parentForm;\n sectionData.titleText = product.name;\n sectionData.subtitleText = product.tagline;\n sectionData.descriptionText = ''; // TODO: build the description string to show which common data this form uses\n sectionData.iconUrl = product.icon;\n\n if (productHasOrderForm) {\n const section = OrderFormService.buildOrderFormSectionData(parentForm);\n section.titleText = product.name;\n let productAnswers: CustomFieldsAnswers[] = [];\n if (answers) {\n productAnswers = answers.filter(a => !a.addonKey && a.productID === product.productId);\n }\n const [ firstProductAnswers, ...otherProductAnswers] = productAnswers;\n section.fields = OrderFormService.buildCustomOrderFormFields(primaryOrder.customFields, fileUploadUrl, users,\n firstProductAnswers ? firstProductAnswers.customFieldsAnswers : [], options);\n sectionData.primarySection = section;\n\n otherOrdersForSameProduct.forEach((_, index) => {\n /**\n * Clone the same section to avoid child component from modifying all as if these are all the top section.\n * All sections need to be re-created or else they will have the same id and send repeated data as well.\n */\n const dupeSection = { ...section };\n const answersForSpecificForm = (otherProductAnswers.length > index) ? otherProductAnswers[index].customFieldsAnswers : [];\n dupeSection.fields = OrderFormService.buildCustomOrderFormFields(primaryOrder.customFields, fileUploadUrl, users,\n answersForSpecificForm, options);\n\n subsections.unshift(dupeSection);\n });\n }\n\n sectionData.subsections = subsections;\n return sectionData;\n }\n return null;\n }).filter(s => !!s);\n return formSections;\n }\n\n public static getExtraFieldsSection(extraFields: OrderFormFieldOptionsType[], parentForm: FormGroup, fileUploadUrl: string, users: User[],\n answers: CustomFieldsAnswer[], options: OrderFormOptions): DropDownFormSectionData {\n if (!extraFields || extraFields.length < 1) {\n return null\n }\n const section = OrderFormService.buildOrderFormSectionData(parentForm);\n section.fields = OrderFormService.buildCustomOrderFormFields(extraFields, fileUploadUrl, users, answers, options);\n return section\n }\n\n public static getCustomFieldsData(customFormSections: ProductOrderFormSectionData[]): CustomField[] {\n const customFormData = customFormSections.reduce((acc, orderFormData) => {\n acc = acc.concat(OrderFormService.productOrderFormToCustomFields(orderFormData));\n return acc;\n }, []);\n return customFormData;\n }\n\n public static getCommonFieldsData(commonFormSections: CommonFormSectionInterface[]): CommonField[] {\n let commonFields: CommonField[] = [];\n if (commonFormSections) {\n commonFields = commonFormSections.reduce((acc, group) => {\n const fields = group.fields.map(singleField => {\n const field = OrderFormService.orderFieldToSalesOrderField(singleField);\n if (field.fieldId) {\n return new CommonField({\n field: field,\n productIds: singleField.productIds,\n addonKeys: singleField.addonKeys\n });\n }\n });\n return acc.concat(fields);\n }, [])\n }\n return commonFields;\n }\n\n public static getExtraFieldsData(extraFieldsSection: DropDownFormSectionData): Field[] {\n let extraFieldsData: Field[] = [];\n if (!!extraFieldsSection) {\n extraFieldsData = extraFieldsSection.fields.map(field => OrderFormService.orderFieldToSalesOrderField(field));\n }\n return extraFieldsData;\n }\n\n constructor() {\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport {\n CommonFormData,\n CommonFormSectionInterface, CustomFieldsAnswer,\n CustomFieldsAnswers, OrderFormFieldOptionsType,\n OrderFormInterface, OrderFormOptionsInterface,\n OrderLabelsInterface,\n ProductInfoInterface,\n ProductOrderFormSectionData\n} from './interface';\nimport { OrderFormService } from './order-form.service';\nimport { DropDownFormSectionData, User } from '../..';\nimport { CommonField, CustomField, Field } from '@vendasta/sales-orders';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n styleUrls: ['order-form.component.scss'],\n templateUrl: 'order-form.component.html',\n providers: [],\n selector: 'va-order-form'\n})\nexport class OrderFormComponent implements OnInit {\n @Input() commonData: CommonFormData;\n @Input() answers: CustomFieldsAnswers[];\n @Input() parentForm: FormGroup;\n @Input() fileUploadUrl: string; // TODO: One standard fileuploadurl in this component\n @Input() orderForms: OrderFormInterface[]; // TODO: Get orderForms in this component\n @Input() productInfo: ProductInfoInterface[]; // TODO: Get productInfo in this component\n @Input() labels: OrderLabelsInterface; // TODO: Handle common field labels with translations in this component\n @Input() users: User[]; // TODO: Get users in this component\n @Input() extraFields: OrderFormFieldOptionsType[]; // TODO: Get this into the component\n @Input() extraFieldsAnswers: CustomFieldsAnswer[]; // TODO: Get this into the component\n @Input() orderFormOptions: OrderFormOptionsInterface;\n\n commonFormSections: CommonFormSectionInterface[];\n customFormSections: ProductOrderFormSectionData[];\n extraFieldsSection: DropDownFormSectionData;\n\n dropdownOpen$$ = new BehaviorSubject<boolean>(false);\n dropdownOpen$ = this.dropdownOpen$$.asObservable();\n\n ngOnInit(): void {\n const options = new OrderFormOptions(this.orderFormOptions || {});\n\n this.commonFormSections = OrderFormService.getCommonFormSections(this.orderForms, this.commonData, this.labels, options);\n this.customFormSections = OrderFormService.getCustomFormSections(this.orderForms, this.productInfo, this.parentForm,\n this.fileUploadUrl, this.users, this.answers, options);\n // TODO: Handle MyCorporation OrderForm (handled in a separate component right now)\n this.extraFieldsSection = OrderFormService.getExtraFieldsSection(this.extraFields, this.parentForm, this.fileUploadUrl,\n this.users, this.extraFieldsAnswers, options);\n\n }\n\n /**\n * returns the data from common form fields in a format that is usable by sales orders\n */\n public getCommonFormData(): CommonField[] {\n return OrderFormService.getCommonFieldsData(this.commonFormSections);\n }\n\n /**\n * returns the data from custom forms in a format that is usable by sales orders\n */\n public getCustomFormData(): CustomField[] {\n return OrderFormService.getCustomFieldsData(this.customFormSections);\n }\n\n /**\n * returns the data from extra fields in a format that is usable by sales orders\n */\n public getExtraFieldsData(): Field[] {\n return OrderFormService.getExtraFieldsData(this.extraFieldsSection);\n }\n\n /**\n * changes the read only state of the sales order form\n */\n public changeReadOnly(readOnly: boolean): void {\n this.orderFormOptions.readOnly = readOnly;\n readOnly ? this.parentForm.disable() : this.parentForm.enable();\n }\n\n public openDropdown(): void {\n this.dropdownOpen$$.next(true);\n }\n}\n\nexport class OrderFormOptions implements OrderFormOptionsInterface {\n bypassRequiredQuestions: boolean;\n readOnly: boolean;\n showOfficeUseQuestions: boolean;\n\n constructor(i: OrderFormOptionsInterface) {\n this.bypassRequiredQuestions = !!i.bypassRequiredQuestions;\n this.readOnly = !!i.readOnly;\n this.showOfficeUseQuestions = !!i.showOfficeUseQuestions;\n }\n\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport const FILES = 'file';\nexport const DROP_DOWN = 'dropdown';\nexport const CHECK_BOX = 'checkbox';\nexport const TEXT_AREA = 'textarea';\nexport const TEXT_BOX = 'textbox';\nexport const BUSINESS_USER = 'vbcuser';\n\nexport type ControlType = 'checkbox' | 'dropdown' | 'file' | 'textbox' | 'textarea' | 'vbcuser';\n\nexport interface FieldBaseOptions {\n // TODO This and marketplace-apps OrderFormFieldInterface should share a common base\n id: string;\n label: string;\n required?: boolean;\n description?: string;\n type?: string;\n prefix?: string;\n suffix?: string;\n regexValidator?: string;\n regexErrorMessage?: string;\n disabled?: boolean;\n forOfficeUseOnly?: boolean;\n hidden?: boolean;\n displayOnly?: boolean;\n}\n\nexport abstract class FieldBase<T> implements FieldBaseOptions {\n value: T;\n id: string;\n label: string;\n required: boolean;\n order: number;\n description: string;\n controlType: ControlType;\n prefix: string;\n suffix: string;\n regexValidator: string;\n regexErrorMessage: string;\n disabled: boolean;\n validator: ValidatorFn;\n forOfficeUseOnly: boolean;\n hidden: boolean;\n displayOnly: boolean;\n\n constructor(options: FieldBaseOptions) {\n this.id = options.id;\n this.label = options.label;\n this.required = !!options.required;\n this.description = options.description || null;\n options.type = options.type === 'text' ? 'textbox' : options.type;\n this.controlType = options.type as ControlType;\n this.prefix = options.prefix;\n this.suffix = options.suffix;\n this.regexValidator = options.regexValidator;\n this.regexErrorMessage = options.regexErrorMessage;\n this.disabled = options.disabled || false;\n this.validator = this.validatorBuilder();\n this.forOfficeUseOnly = !!options.forOfficeUseOnly;\n this.hidden = options.hidden;\n this.displayOnly = options.displayOnly;\n }\n\n getLabel(): string {\n let fieldLabel = this.label;\n if (this.required) {\n fieldLabel += ' *';\n }\n return fieldLabel;\n }\n\n protected validatorBuilder(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n return null\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { OrderFormFieldInterface, OrderFormFieldOptionInterface } from '@vendasta/core/marketplace-apps';\nimport { BUSINESS_USER, CHECK_BOX, ControlType, DROP_DOWN, FILES, TEXT_AREA, TEXT_BOX } from '../field-base';\n\n@Component({\n selector: 'va-field-builder',\n templateUrl: './field-builder.component.html',\n styleUrls: ['./field-builder.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FieldBuilderComponent implements OnInit {\n @Input() orderFormFieldGroup: FormGroup;\n @Input() supportedFieldTypes: FormFieldInterface[];\n @Output() removeField: EventEmitter<string> = new EventEmitter(null);\n\n showValidators: boolean;\n showSuffixes: boolean;\n\n static createDropDownOption(option: OrderFormFieldOptionInterface, required: boolean): FormGroup {\n return new FormGroup({\n label: new FormControl(option.label || option.value, required ? [Validators.required] : []),\n value: new FormControl(option.value),\n useValue: new FormControl(!!option.value)\n });\n }\n\n static createDropDownOptions(options: OrderFormFieldOptionInterface[]): FormArray {\n if (options === null || options === undefined) {\n options = [];\n }\n const orderFormFieldsGroupArray: FormGroup[] =\n options.map(option => FieldBuilderComponent.createDropDownOption(option, false));\n return new FormArray(orderFormFieldsGroupArray);\n }\n\n static createOrderFormFieldGroup(orderFormField: OrderFormFieldInterface): FormGroup {\n const orderFormFieldGroup = new FormGroup({\n descriptionControl: new FormControl(orderFormField.description, []),\n labelControl: new FormControl(orderFormField.label, [Validators.required]),\n idControl: new FormControl(orderFormField.id, [Validators.required]),\n requiredControl: new FormControl(orderFormField.required || false, []),\n uploadUrlControl: new FormControl(orderFormField.uploadUrl, []),\n prefixControl: new FormControl(orderFormField.prefix, []),\n suffixControl: new FormControl(orderFormField.suffix, []),\n regexValidatorControl: new FormControl(orderFormField.regexValidator, regexValidator()),\n regexErrorMessageControl: new FormControl(orderFormField.regexErrorMessage, []),\n typeControl: new FormControl(getFieldInterface(orderFormField.type), [Validators.required]),\n allowMultiples: new FormControl(orderFormField.allowMultiples || false, []),\n allowDuplicates: new FormControl(orderFormField.allowDuplicates || false, []),\n maxChoices: new FormControl(orderFormField.maxChoices ? orderFormField.maxChoices : 1, [Validators.min(1), numberValidator()]),\n forOfficeUseOnly : new FormControl(orderFormField.forOfficeUseOnly || false, [])\n });\n if (orderFormField.optionsWithLabels) {\n const optionsArray = FieldBuilderComponent.createDropDownOptions(orderFormField.optionsWithLabels);\n orderFormFieldGroup.addControl('optionsFormArray', optionsArray);\n } else if (orderFormField.options) {\n const optionsArray = FieldBuilderComponent.createDropDownOptions(orderFormField.options.map(option => ({label: option})));\n orderFormFieldGroup.addControl('optionsFormArray', optionsArray);\n } else {\n orderFormFieldGroup.addControl('optionsFormArray', new FormArray([]));\n }\n\n return orderFormFieldGroup;\n }\n\n ngOnInit(): void {\n if (!this.supportedFieldTypes || this.supportedFieldTypes.length < 1) {\n this.supportedFieldTypes = FORM_FIELDS;\n }\n this.initForm();\n }\n\n initForm(): void {\n // Check to see if form has been initiated\n if (!this.orderFormFieldGroup.get('labelControl')) {\n this.orderFormFieldGroup =\n FieldBuilderComponent.createOrderFormFieldGroup({});\n }\n }\n\n getOptionsArray(): FormArray {\n return this.orderFormFieldGroup.get('optionsFormArray') as FormArray;\n }\n\n getCurrentFieldInterface(): string {\n const formFieldTypeInterface =\n (this.orderFormFieldGroup.get('typeControl').value as FormFieldInterface);\n return formFieldTypeInterface ? formFieldTypeInterface.id : null;\n }\n\n removeOption(index: number): void {\n const formArray = this.getOptionsArray();\n formArray.removeAt(index);\n }\n\n addOption(): void {\n const fieldArray = this.getOptionsArray();\n fieldArray.push(FieldBuilderComponent.createDropDownOption({label: ''}, true));\n }\n\n getFormValues(): OrderFormFieldInterface {\n const obj: OrderFormFieldInterface = {};\n obj.label = this.orderFormFieldGroup.get('labelControl').value;\n obj.id = this.orderFormFieldGroup.get('idControl').value;\n\n const formFieldType =\n (this.orderFormFieldGroup.get('typeControl').value as\n FormFieldInterface); // use the id instead of the whole object\n obj.type = formFieldType ? formFieldType.id : null;\n\n // Options will be nested under their own form control in the larger Orderformfield array\n const optionsArray = (this.orderFormFieldGroup.get('optionsFormArray') as FormArray);\n if (optionsArray && optionsArray.value) {\n obj.options = optionsArray.value.map(option => option.value || option.label);\n obj.optionsWithLabels = optionsArray.value.map(option => ({label: option.label, value: option.value}));\n }\n\n obj.description = this.orderFormFieldGroup.get('descriptionControl').value;\n obj.required = this.orderFormFieldGroup.get('requiredControl').value || false;\n obj.uploadUrl = this.orderFormFieldGroup.get('uploadUrlControl').value;\n obj.prefix = this.orderFormFieldGroup.get('prefixControl').value;\n obj.suffix = this.orderFormFieldGroup.get('suffixControl').value;\n obj.regexValidator = this.orderFormFieldGroup.get('regexValidatorControl').value;\n obj.regexErrorMessage = this.orderFormFieldGroup.get('regexErrorMessageControl').value;\n obj.allowMultiples = this.orderFormFieldGroup.get('allowMultiples').value || false;\n obj.allowDuplicates = this.orderFormFieldGroup.get('allowDuplicates').value || false;\n obj.maxChoices = this.orderFormFieldGroup.get('maxChoices').value || 1;\n obj.forOfficeUseOnly = this.orderFormFieldGroup.get('forOfficeUseOnly').value || false;\n return obj;\n }\n}\n\n// Validation to ensure supplied regex is valid\nexport function regexValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n try {\n const _ = new RegExp(control.value || '');\n } catch (e) {\n return {'regex': true};\n }\n return null;\n };\n}\n\nexport function numberValidator(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n const isNumber = /^\\d+$/;\n if (isNumber.test(control.value)) {\n return null\n }\n return {'number': true};\n };\n}\n\nexport interface FormFieldInterface {\n id: ControlType;\n name: string;\n}\n\nexport const FORM_FIELDS: FormFieldInterface[] = [\n {id: FILES, name: 'Files'}, {id: DROP_DOWN, name: 'Drop Down'},\n {id: CHECK_BOX, name: 'Check Box'}, {id: TEXT_AREA, name: 'Text Area'},\n {id: TEXT_BOX, name: 'Text Box'}, {id: BUSINESS_USER, name: 'End User'}\n];\n\nexport function getFieldInterface(formFieldId: string): FormFieldInterface {\n return getFormFieldInterfaceFromId((formFieldId as ControlType));\n}\n\nexport function getFormFieldInterfaceFromId(id: ControlType): FormFieldInterface {\n return FORM_FIELDS.find((obj: FormFieldInterface) => obj.id === id);\n}\n","import { OrderConfirmationItem, Pricing } from './interface';\n\nexport class OrderItemListService {\n static getPriceSummary(items: OrderConfirmationItem[]): { items: Pricing[]; includesUndefinedPricing: boolean } {\n if (!items) {\n return { items: [], includesUndefinedPricing: false };\n }\n let includesUndefinedPricing = false;\n const summaryItems = items.reduce((currentArray, item) => {\n if (item.pricing.prices.length <= 0) {\n includesUndefinedPricing = true;\n return currentArray;\n }\n\n item.pricing.prices.map(price => {\n if (!price || price.price < 0) {\n includesUndefinedPricing = true;\n return;\n }\n\n const freq = price.billingFrequency;\n const cur = item.pricing.currency;\n\n const existingCurIndex = currentArray.findIndex(summaryItem => summaryItem.currency === cur);\n let pricing: Pricing = {\n currency: cur,\n prices: []\n };\n if (existingCurIndex > -1) {\n pricing = currentArray[existingCurIndex];\n }\n\n const existingFreqIndex = pricing.prices.findIndex(\n summaryItem => summaryItem.billingFrequency === freq\n );\n const quantifiedPrice = price.price !== null ? price.price * item.quantity : null;\n const quantifiedDiscount = (price.discountAmount || 0) * item.quantity;\n if (existingFreqIndex > -1) {\n pricing.prices[existingFreqIndex] = {\n price: pricing.prices[existingFreqIndex].price + quantifiedPrice,\n billingFrequency: freq,\n discountAmount:\n pricing.prices[existingFreqIndex].discountAmount + quantifiedDiscount\n };\n } else {\n pricing.prices.push({\n price: quantifiedPrice,\n billingFrequency: freq,\n discountAmount: quantifiedDiscount\n });\n }\n if (existingCurIndex > -1) {\n currentArray[existingCurIndex] = pricing;\n } else {\n currentArray.push(pricing);\n }\n });\n return currentArray;\n }, []);\n return { items: summaryItems, includesUndefinedPricing: includesUndefinedPricing };\n }\n}\n","import { Component, Input } from '@angular/core';\nimport {\n OrderConfirmationItem,\n Pricing,\n TaxOption,\n RetailPrice,\n } from './interface';\nimport { OrderItemListService } from './order-item-list.service';\n\n@Component({\n selector: 'va-order-item-list',\n templateUrl: './order-item-list.component.html',\n styleUrls: ['./order-item-list.component.scss']\n})\nexport class OrderItemListComponent {\n items: OrderConfirmationItem[];\n summaryItems: Pricing[];\n includesUndefinedPricing = false;\n\n @Input() taxOptions: TaxOption[];\n @Input() hidePricing: boolean;\n\n @Input()\n set orderItems(items: OrderConfirmationItem[]) {\n this.items = items || [];\n const summary = OrderItemListService.getPriceSummary(items);\n this.summaryItems = summary.items;\n this.includesUndefinedPricing = summary.includesUndefinedPricing;\n }\n\n public calculateTotalPrice(price: RetailPrice): number {\n if (price.price === null) {\n return null;\n }\n\n const totalPrice = price.price - price.discountAmount;\n\n if (!this.taxOptions) {\n return totalPrice;\n }\n\n const taxTotal = this.taxOptions.reduce(\n (all, tax) => all + (tax.percentage * totalPrice),\n 0\n );\n\n return totalPrice + taxTotal;\n }\n\n public buildTaxLabel(tax: TaxOption): string {\n const taxPercentage = Number(tax.percentage * 100).toFixed(2);\n\n return `${tax.label} (${taxPercentage}%)`;\n }\n\n public isFree(): boolean {\n const summaryTotal = this.summaryItems.reduce(\n (all, item) => {\n const totalPrices = item.prices.reduce((acc, price) => acc + price.price, 0);\n\n return all + totalPrices;\n }\n , 0);\n\n return summaryTotal === 0;\n }\n}\n","import { BillingFrequency, Currency, formatBillingFrequency, formatDisplayPrice } from '@vendasta/core/shared';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'price' })\nexport class PricePipe implements PipeTransform {\n transform(\n value: any,\n currency: Currency,\n billingFrequency?: BillingFrequency,\n isCents: boolean = true,\n translateZero: boolean = true,\n displaySymbol: boolean = true\n ): any {\n return formatDisplayPrice(value, currency, billingFrequency, isCents, translateZero, displaySymbol);\n }\n}\n\n@Pipe({ name: 'formatBillingFrequency' })\nexport class FormatBillingFrequencyPipe implements PipeTransform {\n transform(value: string): string {\n return formatBillingFrequency(value);\n }\n}\n","import { Inject, NgModule, Optional } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n MatButtonModule, MatCheckboxModule, MatExpansionModule, MatIconModule, MatInputModule, MatOptionModule,\n MatProgressSpinnerModule, MatSelectModule, MatCardModule, MatTooltipModule\n} from '@angular/material';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\n\nimport { MatListModule } from '@angular/material/list'\nimport {VaFormsModule} from '@vendasta/forms';\nimport {VaIconModule, VaBadgeModule } from '@vendasta/uikit';\n\nimport {DropDownFormSectionComponent} from './dropdown-form-section/dropdown-form-section.component';\nimport {FieldComponent} from './fields/field.component';\nimport {FieldService} from './fields/field.service';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {OrderFormSectionComponent} from './order-form-section/order-form-section.component';\nimport {OrderFormComponent} from './order-form/order-form.component';\nimport {OrderFormService} from './order-form/order-form.service';\nimport {FieldBuilderComponent} from './fields/field-builder/field-builder.component';\nimport { OrderItemListComponent } from './order-item-list/order-item-list.component';\nimport { OrderItemListService } from './order-item-list/order-item-list.service';\n\nimport { PricePipe, FormatBillingFrequencyPipe } from './../shared/pricing-pipes';\nimport { Observable } from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatCheckboxModule,\n MatExpansionModule,\n MatIconModule,\n MatInputModule,\n MatOptionModule,\n MatProgressSpinnerModule,\n MatSelectModule,\n MatCardModule,\n MatTooltipModule,\n ReactiveFormsModule,\n VaFormsModule,\n VaHeaderContainerModule,\n VaIconModule,\n VaFormsModule,\n VaBadgeModule,\n MatListModule,\n TranslateModule.forChild(),\n ],\n declarations: [\n DropDownFormSectionComponent,\n FieldComponent,\n OrderFormSectionComponent,\n OrderFormComponent,\n FieldBuilderComponent,\n OrderItemListComponent,\n PricePipe,\n FormatBillingFrequencyPipe,\n ],\n exports: [\n DropDownFormSectionComponent,\n FieldComponent,\n OrderFormSectionComponent,\n OrderFormComponent,\n FieldBuilderComponent,\n OrderItemListComponent,\n ],\n providers: [\n FieldService,\n OrderFormService,\n OrderItemListService,\n ]\n})\nexport class VaOrderFormModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Injectable()\nexport class StoreService {\n\n markFormsAsTouched(formGroup: FormGroup) {\n for (const key in formGroup.controls) {\n if (formGroup.controls[key] instanceof FormGroup) {\n this.markFormsAsTouched(formGroup.controls[key] as FormGroup);\n } else {\n (formGroup.controls[key] as FormControl).markAsTouched();\n (formGroup.controls[key] as FormControl).updateValueAndValidity();\n }\n }\n }\n}\n","export class File {\n\n constructor(public url: string) {\n this.url = url;\n }\n\n get name(): string {\n return this.url ? this.url.substring(this.url.lastIndexOf('/') + 1, this.url.lastIndexOf('.')) : null;\n }\n\n get icon(): string {\n const ext = this.url ? this.url.substring(this.url.lastIndexOf('.') + 1) : null;\n switch (ext) {\n case 'pdf':\n return 'icon-pdf';\n case 'ppt':\n return 'icon-ppt';\n default:\n return 'icon-docs';\n }\n }\n}\n","export interface Pricing {\n currency: string;\n prices: Price[];\n}\n\nexport interface Price {\n price: number;\n frequency: string;\n isStartingPrice?: boolean;\n}\n\nexport const CONTACT_SALES = -1;\n","import { CONTACT_SALES, Pricing } from '../pricing/pricing';\n\nexport class Sellable {\n pricing: Pricing;\n\n get isFree(): boolean {\n return this.pricing && this.pricing.prices ? this.pricing.prices.some(p => p.price === 0 || p.price === undefined) : false;\n }\n\n get shouldContactSales(): boolean {\n return this.pricing && this.pricing.prices ?\n this.pricing.prices.some(p => p.price === null || p.price === CONTACT_SALES) ||\n this.pricing.prices.length === 0 : true;\n }\n\n static getCapitalizeFirstLetter(inputString: string): string {\n return inputString ? inputString.charAt(0).toUpperCase() + inputString.slice(1) : null;\n }\n\n get formattedPricingList(): string[] {\n if (this.pricing && this.pricing.prices && this.pricing.prices.length) {\n const hasCurrencyAndIsNotUSD = this.pricing.currency && this.pricing.currency !== 'USD';\n const currencyStr = hasCurrencyAndIsNotUSD ? this.pricing.currency : '';\n const currencySymbol = Sellable.getCurrencySymbol(this.pricing.currency);\n\n return this.pricing.prices.map(price => {\n const frequencyStr = price.frequency ? '/ ' + Sellable.getCapitalizeFirstLetter(price.frequency) : '';\n const roundedPrice = ((price.price || 0) / 100.0).toFixed(2);\n const startingAtPrefix = price.isStartingPrice ? 'Starting at ' : '';\n const priceStr = `${startingAtPrefix}${currencySymbol}${roundedPrice} ${currencyStr} ${frequencyStr}`;\n return (priceStr.trim().replace(/\\s+/g, ' '));\n });\n } else {\n return ['Contact Sales'];\n }\n }\n\n get priceStrings(): string[] {\n if (this.shouldContactSales) {\n return ['Contact Sales'];\n }\n\n if (this.isFree) {\n return ['Free'];\n }\n\n return this.formattedPricingList;\n }\n\n get formattedWholesalePrice(): string {\n return this.priceStrings.join(' + ');\n }\n\n static getCurrencySymbol(currency: string): string {\n let currencySymbol = '$';\n switch (currency) {\n case 'EUR': currencySymbol = '\\u20AC'; break;\n case 'GBP': currencySymbol = '\\u00A3'; break;\n case 'CHF': currencySymbol = 'Fr'; break;\n case 'CNY': currencySymbol = '\\u00A5'; break;\n case 'JPY': currencySymbol = '\\u00A5'; break;\n case 'CZK': currencySymbol = 'K\\u010d'; break;\n case 'INR': currencySymbol = '\\u20B9'; break;\n case 'KHR': currencySymbol = '\\u17DB'; break;\n case 'KRW': currencySymbol = '\\u20A9'; break;\n case 'NOK': currencySymbol = 'kr'; break;\n case 'SEK': currencySymbol = 'kr'; break;\n case 'RUB': currencySymbol = '\\u20BD'; break;\n case 'TRY': currencySymbol = '\\u20BA'; break;\n case 'ZAR': currencySymbol = 'R'; break;\n default: currencySymbol = '$'; break;\n }\n return currencySymbol;\n }\n\n}\n","// @dynamic\nexport class CaseTransform {\n static snakeToCamelCase(value: string): string {\n return value ? value.replace(new RegExp(/_/g), ' ').replace(/\\b\\w/g, l => l.toUpperCase())\n .replace(/\\b\\w/, l => l.toLowerCase()).replace(/\\s/g, '') : value;\n }\n\n static lowerToTitleCase(value: string): string {\n // Code taken from https://github.com/gouch/to-title-case to support the proper spec.\n const smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i;\n\n return value ? value.replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length &&\n match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' &&\n (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') &&\n title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n }) : value;\n };\n}\n","import {File} from '../files/shared/file.model';\nimport {Faq} from '../faqs/shared/faqs.model';\nimport {Sellable} from './sellable';\nimport {CaseTransform} from './case-transform';\nimport {Addon} from '@vendasta/core/shared';\nimport {Restrictions} from '../restrictions/shared/restrictions.model';\n\nconst COLOR_CODES = [\n '#EF5350', '#42A5F5', '#66BB6A', '#FFA726', '#AB47BC', '#FFCA28', '#EC407A', '#26C6DA',\n '#FF7B57'\n];\n\nconst DEFAULT_COLOR = '#808080';\n\nexport class Product extends Sellable {\n productId: string;\n editionId: string;\n editionName: string;\n name: string;\n description: string;\n tagline: string;\n iconUrl: string;\n entryUrl: string;\n screenshotUrls: string[];\n pdfUploadUrls: string[];\n lmiCategories: string[];\n keySellingPoints: string[];\n faqs: Faq[];\n wholesalePrice: number;\n currency: string;\n billingFrequency: string;\n billingId: string;\n isArchived: boolean;\n addons: Addon[] = [];\n files: File[];\n restrictions: Restrictions;\n trialConfiguration: TrialConfigurationInterface;\n\n static fromApi(data: any): Product {\n const newProduct = {};\n data = data || {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const newKey = CaseTransform.snakeToCamelCase(key);\n newProduct[newKey] = data[key];\n }\n }\n return new Product(newProduct);\n }\n constructor(data?: any) {\n super();\n data = data || {};\n this.pricing = data.pricing;\n this.productId = data.productId;\n this.editionId = data.editionId;\n this.editionName = data.editionName;\n this.name = data.name;\n this.description = data.description;\n this.tagline = data.tagline;\n this.iconUrl = data.iconUrl;\n this.entryUrl = data.entryUrl;\n this.screenshotUrls = data.screenshotUrls;\n this.pdfUploadUrls = data.pdfUploadUrls;\n this.lmiCategories = data.lmiCategories;\n this.keySellingPoints = data.keySellingPoints;\n this.faqs = data.faqs;\n this.wholesalePrice = data.wholesalePrice;\n this.currency = data.currency;\n this.billingFrequency = data.billingFrequency;\n this.isArchived = data.isArchived;\n this.addons = data.addons;\n this.restrictions = data.restrictions;\n this.billingId = data.billingId;\n if (data.hasOwnProperty('pdfUploadUrls')) {\n this.files = this.pdfUploadUrls ? this.pdfUploadUrls.map(url => new File(url)) : null;\n }\n }\n get iconStyle(): string {\n return this.iconUrl ? `url(\"${this.iconUrl}\") no-repeat center / 100% 100%` : null;\n }\n\n get iconColor(): string {\n // determine an icon color for a product with no icon by using the product name\n if (!this.name) {\n return DEFAULT_COLOR;\n }\n\n let nameSum = 0;\n for (let i = 0; i < this.name.length; i++) {\n nameSum += this.name[i].charCodeAt(0);\n }\n\n const index = nameSum % COLOR_CODES.length;\n return COLOR_CODES[index];\n }\n\n getLmiCategoryNames(): string[] {\n const lmiCategories = this.lmiCategories || [];\n return lmiCategories.map(lmiCategory => CaseTransform.lowerToTitleCase(lmiCategory.toLowerCase().replace(/_/g, ' ')));\n }\n}\n\nexport class ProductWithParent extends Product {\n parentId: string;\n parentName: string;\n parentIconUrl: string;\n multipleActivations: boolean;\n\n static fromApi(data: any): ProductWithParent {\n const newProduct = {};\n data = data || {};\n for (const key in data) {\n if (data.hasOwnProperty(key)) {\n const newKey = CaseTransform.snakeToCamelCase(key);\n newProduct[newKey] = data[key];\n }\n }\n return new ProductWithParent(newProduct);\n }\n constructor(data?: any) {\n super(data);\n this.parentId = data.parentId;\n this.parentName = data.parentName;\n this.parentIconUrl = data.parentIconUrl;\n this.multipleActivations = data.multipleActivations || false;\n }\n}\n\nexport interface TrialConfigurationInterface {\n trialEnabled: boolean;\n trialDuration: number;\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { Product } from '../shared/product';\nimport { Addon } from '@vendasta/core/shared';\nimport { Pricing } from '../pricing/pricing';\nimport { BilledProduct } from '@vendasta/core/billing';\n\n@Component({\n selector: 'addon-details',\n templateUrl: 'addon-details.component.html',\n styleUrls: ['./addon-details.component.scss']\n})\nexport class AddonDetailsComponent {\n @Input() product: Product;\n @Input() addon: Addon;\n @Input() reseller: true;\n @Input() billedProduct: BilledProduct;\n @Input() hasVerifiedContract = false;\n @Input() loaded = true;\n @Input() showPricing = true;\n @Input() showEnableAddon = false;\n @Input() actionEnabled = false;\n @Output() prerequisiteSelected = new EventEmitter();\n @Output() actionSelected = new EventEmitter();\n\n onPrerequisiteSelected(): void {\n this.prerequisiteSelected.emit();\n }\n onActionSelected(): void {\n this.actionSelected.emit();\n }\n\n getPricing(product: Product, addon: Addon): Pricing {\n return {\n currency: product.currency,\n prices: [\n {\n price: addon.price,\n frequency: addon.billingFrequency ? addon.billingFrequency : 'Monthly'\n }\n ]\n };\n }\n\n get pricingLabel(): string {\n return this.reseller ? 'Wholesale Pricing' : 'Pricing';\n }\n}\n","import {Component, Input} from '@angular/core';\nimport {File} from './shared/file.model';\n\n@Component({\n selector: 'va-files',\n template: `\n <div class=\"va-files file-list-container\" *ngFor=\"let file of files\">\n <mat-icon class=\"file-icon\">insert_drive_file</mat-icon>\n <a [href]=\"file.url\" target=\"_blank\">{{ file.name }}</a>\n </div>`,\n styleUrls: ['./files.component.scss']\n})\n\nexport class VaFilesComponent {\n @Input() files: File[];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaFilesComponent} from './files.component';\nimport {MatIconModule} from '@angular/material';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule\n ],\n declarations: [VaFilesComponent],\n exports: [VaFilesComponent]\n})\nexport class VaFilesModule {\n}\n","import {Component, Input} from '@angular/core';\nimport {Faq} from './shared/faqs.model';\n\n@Component({\n selector: 'va-faqs',\n template: `\n <div class=\"va-faq\" *ngFor=\"let faq of faqs; let i = index;\">\n <div class=\"question\" (click)=\"toggleFaq(i)\">\n <span>{{ faq.question }}</span>\n <mat-icon>{{ faqIcon(i) }}</mat-icon>\n </div>\n <span class=\"answer\" [ngClass]=\"{'show': isFaqOpen(i) }\" [innerHtml]=\"faq.answer | vaSanitize\"></span>\n </div>`,\n styleUrls: ['./faqs.component.scss']\n})\n\nexport class VaFaqsComponent {\n @Input() faqs: Faq[];\n openFaqs: number[] = [];\n\n toggleFaq(index: number): void {\n if (this.openFaqs.indexOf(index) >= 0) {\n this.openFaqs.splice(this.openFaqs.indexOf(index), 1); // Remove\n } else {\n this.openFaqs.push(index); // Insert\n }\n }\n\n isFaqOpen(index: number): boolean {\n return this.openFaqs.indexOf(index) >= 0;\n }\n\n faqIcon(index: number): string {\n return this.isFaqOpen(index) ? 'keyboard_arrow_up' : 'keyboard_arrow_down';\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaFaqsComponent} from './faqs.component';\nimport {MatIconModule} from '@angular/material';\nimport {VaSafeHtmlModule} from '@vendasta/uikit';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, VaSafeHtmlModule],\n declarations: [VaFaqsComponent],\n exports: [VaFaqsComponent]\n})\nexport class VaFaqsModule {}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'va-selling-info',\n template: `\n <section *ngIf=\"description\" class=\"resize\" [innerHtml]=\"filterDescription | vaSafeHtml\"></section>\n <section *ngIf=\"keySellingPoints && keySellingPoints.length > 0\" class=\"key-selling-points\">\n <div *ngFor=\"let ksp of keySellingPoints\" class=\"key-selling-point\">\n <mat-icon>check_circle</mat-icon>\n {{ ksp }}\n </div>\n </section>\n `,\n styleUrls: ['./selling-info.component.scss']\n})\n\nexport class VaSellingInfoComponent {\n @Input() description: String;\n @Input() keySellingPoints: String[];\n\n get filterDescription() {\n const desc = this.description.replace(/max-width:\\d*[^\\\"]/i, 'max-width:100%');\n if ((desc.indexOf('\"max-width:100%\"') === -1) && (desc.indexOf('<iframe ') !== -1)) {\n const index = desc.indexOf('<iframe ') + 7;\n return desc.substr(0, index) + ' style=\"max-width:100%\"' + desc.substr(index);\n }\n return String(desc);\n }\n}\n\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaSellingInfoComponent} from './selling-info.component';\nimport {MatIconModule} from '@angular/material';\nimport {VaSafeHtmlModule} from '@vendasta/uikit';\n\n@NgModule({\n imports: [CommonModule, MatIconModule, VaSafeHtmlModule],\n declarations: [VaSellingInfoComponent],\n exports: [VaSellingInfoComponent]\n})\nexport class VaSellingInfoModule {}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'supported-countries',\n template: `\n <span class=\"supported-text\"> Supported Countries: </span>\n <div class=\"flags\">\n <span *ngFor=\"let countryCode of countryCodes\" matTooltip=\"{{countryCode}}\" matTooltipPosition=\"below\"\n class=\"flag-icon flag-icon-{{countryCode.toLowerCase()}}\">\n </span>\n </div>\n `,\n styleUrls: ['./supported-countries.component.scss']\n})\n\nexport class SupportedCountriesComponent {\n @Input() countryCodes: string[];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {SupportedCountriesComponent} from './country/supported-countries.component';\nimport {MatTooltipModule} from '@angular/material';\n\n@NgModule({\n imports: [CommonModule, MatTooltipModule],\n declarations: [SupportedCountriesComponent],\n exports: [SupportedCountriesComponent]\n})\nexport class RestrictionsModule {}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {VaBreadcrumbsModule, VaIconModule, VaImageGalleryModule, VaListModule, VaSafeHtmlModule} from '@vendasta/uikit';\nimport {AddonDetailsComponent} from './addon-details.component';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {RestrictionsModule} from '../restrictions/restrictions.module';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n VaListModule,\n VaImageGalleryModule,\n VaIconModule,\n VaPricingModule,\n VaFilesModule,\n VaFaqsModule,\n VaSellingInfoModule,\n VaHeaderContainerModule,\n VaSafeHtmlModule,\n MatProgressSpinnerModule,\n VaBreadcrumbsModule,\n RestrictionsModule\n ],\n exports: [AddonDetailsComponent],\n declarations: [AddonDetailsComponent],\n providers: [],\n entryComponents: []\n})\nexport class AddonModule {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'details-stencil',\n template: `\n <div class=\"details\">\n\n <mat-card class=\"details-header\">\n <div class=\"details-column-0\">\n <div class=\"details-column-0-1\">\n <div class=\"details-icon stencil-shimmer\"></div>\n </div>\n <div class=\"details-column-0-2\">\n <div class=\"details-title stencil-shimmer\"></div>\n <div class=\"details-title stencil-shimmer\"></div>\n </div>\n </div>\n <div class=\"details-column-1\">\n <div class=\"details-column-1-0 stencil-shimmer\"></div>\n <div class=\"details-column-1-1 stencil-shimmer\"></div>\n </div>\n </mat-card>\n\n <mat-card>\n <div class=\"details-box-large stencil-shimmer\"></div>\n </mat-card>\n\n <mat-card class=\"details-body\">\n <div class=\"details-body-column-0\" >\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n <div class=\"details-icon-small stencil-shimmer\"></div>\n </div>\n <div class=\"details-body-column-1\">\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n <div class=\"details-line stencil-shimmer\"></div>\n </div>\n <div class=\"details-body-column-2\">\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n <div class=\"details-box stencil-shimmer\"></div>\n </div>\n </mat-card>\n\n </div>\n `,\n styleUrls: ['./details-stencil.component.scss']\n})\n\nexport class DetailsStencilComponent {\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'card-stencil',\n template: `\n <div class=\"card-stencil-container\">\n <mat-card class=\"card-stencil\">\n <div class=\"card-stencil-header stencil-shimmer\"></div>\n <div class=\"card-stencil-footer\">\n <div class=\"card-stencil-circle stencil-shimmer\"></div>\n <div>\n <div class=\"card-stencil-line-large stencil-shimmer\"></div>\n <div class=\"card-stencil-line-medium stencil-shimmer\"></div>\n </div>\n </div>\n </mat-card>\n </div>\n `,\n styleUrls: ['card-stencil.component.scss']\n})\n\nexport class CardStencilComponent {\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'card-stencil-list',\n template: `\n <div class=\"row row-gutters\">\n <div *ngFor=\"let _ of cards\" class=\"col-flex\">\n <card-stencil></card-stencil>\n </div>\n </div>\n `,\n styles: [`\n .row {\n display: flex;\n flex-wrap: wrap;\n }\n\n .row + .row-gutters {\n margin-top: 0;\n }\n\n .row-gutters {\n margin-top: -20px;\n margin-left: -20px;\n }\n\n .row-gutters > .col-flex {\n padding-top: 20px;\n padding-left: 20px;\n }\n\n .col-flex {\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n flex: 0 0 auto;\n width: 100%;\n }\n\n @media screen and (min-width: 480px) {\n .col-flex {\n width: 50%;\n }\n }\n\n @media screen and (min-width: 1200px) {\n\n .col-flex {\n width: 33.333333%;\n }\n }\n\n `]\n})\n\nexport class CardListStencilComponent implements OnInit {\n\n @Input() numCards = 3;\n cards: number[] = [];\n\n ngOnInit() {\n for (let n = 0; n < this.numCards; n++) {\n this.cards.push(n);\n }\n }\n}\n","import {Component} from '@angular/core';\n\n@Component({\n selector: 'search-bar-stencil',\n template: `\n <div class=\"search-bar-stencil-container\">\n <div class=\"search-bar-stencil-line stencil-shimmer\">\n <div class=\"search-bar-stencil-icon\"></div>\n </div>\n </div>\n `,\n styles: [`\n .search-bar-stencil-container {\n height: 52px;\n display: flex;\n align-content: center;\n background-color: white;\n border-radius: 2px;\n }\n .search-bar-stencil-line {\n height: 30px;\n width: 350px;\n margin: auto 10px;\n display: flex;\n justify-content: flex-end;\n }\n .search-bar-stencil-icon {\n background-color: white;\n width: 20px;\n height: 20px;\n margin: auto 5px;\n }\n `]\n})\n\nexport class SearchBarStencilComponent {\n}\n","import {Component, Input, OnInit} from '@angular/core';\n\n@Component({\n selector: 'list-stencil',\n template: `\n <mat-card class=\"list-container\">\n <div *ngIf=\"showHeader\" class=\"list-header stencil-shimmer\" style=\"\"></div>\n <div *ngFor=\"let _ of rows\">\n <div class=\"list-item-row\" [ngStyle]=\"listItemRowStyles\">\n <div class=\"stencil-shimmer\" style=\"margin: 0; padding: 0; width: 100%; height: 80%;\"></div>\n </div>\n </div>\n </mat-card>\n `,\n styles: [`\n .list-container { padding: 0; }\n .list-header { height: 40px; }\n .list-item-row { height: 50px; display: flex; justify-content: space-between; align-items: center; }\n `]\n})\n\nexport class ListStencilComponent implements OnInit {\n\n @Input() showHeader = true;\n @Input() numRows = 3;\n @Input() rowHeight = '51px'; // defaults to height of partner center business tab height (95px for marketplace)\n @Input() sidePadding = '17px'; // defaults to padding on partner center business padding (38px for marketplace)\n\n rows: number[] = []; // this is to turn the number of rows into an arbitrary list so we can loop through them\n listItemRowStyles: any;\n\n ngOnInit() {\n for (let n = 0; n < this.numRows; n++) {\n this.rows.push(n);\n }\n\n // if you think this is gross i agree\n // if you think this is gross and actually have a solution hit me up otherwise just enjoy the magic.\n // determine the height of each row for the table\n\n this.listItemRowStyles = {\n 'height': `${this.rowHeight}`,\n 'padding': `0 ${this.sidePadding}`\n }\n\n }\n}\n","import {NgModule} from '@angular/core';\nimport {\n MatCardModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatExpansionModule,\n MatCheckboxModule} from '@angular/material';\nimport {CommonModule} from '@angular/common';\n\nimport {DetailsStencilComponent} from './details-stencil.component';\nimport {CardStencilComponent} from './card-stencil.component';\nimport {CardListStencilComponent} from './card-list-stencil.component';\nimport {SearchBarStencilComponent} from './search-bar-stencil.component';\nimport {ListStencilComponent} from './list-stencil.component';\n\n@NgModule({\n imports: [CommonModule, MatCardModule, MatIconModule, MatInputModule, MatSelectModule, MatExpansionModule, MatCheckboxModule],\n declarations: [DetailsStencilComponent, CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent],\n exports: [DetailsStencilComponent, CardStencilComponent, CardListStencilComponent, SearchBarStencilComponent, ListStencilComponent]\n})\nexport class StencilsModule {}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ChangeDetectorRef } from '@angular/core';\nimport { Addon } from '@vendasta/core/shared';\nimport { Subscription } from 'rxjs';\nimport { Pricing } from '../pricing/pricing';\nimport { isNullOrUndefined } from 'util';\nimport { BillingService, BilledProduct, buildBilledProductFromProductPricingAndAddon } from '@vendasta/core/billing';\n\n@Component({\n selector: 'va-addon-list',\n templateUrl: './addon-list.component.html',\n styleUrls: ['./addon-list.component.scss']\n})\nexport class VaAddonListComponent implements OnDestroy, OnInit {\n _addons: Addon[];\n @Input('addons')\n set addons(addons: Addon[]) {\n this._addons = addons;\n this.populateBilledProduct();\n }\n @Input() showPricing = true;\n @Input() partnerID: string;\n\n _hasVerifiedContract: boolean = null;\n @Input('hasVerifiedContract')\n set hasVerifiedContract(value: boolean) {\n this._hasVerifiedContract = value;\n this.populateBilledProduct();\n }\n _canAccessContractPricing: boolean = null;\n @Input('canAccessContractPricing')\n set canAccessContractPricing(value: boolean) {\n this._canAccessContractPricing = value;\n this.populateBilledProduct();\n }\n\n @Output() addonSelected = new EventEmitter<String>();\n\n billedProductsMap: Map<string, BilledProduct> = new Map();\n private billedProductLoaded: Map<string, boolean> = new Map();\n private subscriptions: Subscription[] = [];\n\n constructor(private billingService: BillingService, private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.populateBilledProduct();\n }\n\n populateBilledProduct() {\n if (this.displayContractPricing()) {\n const billingIDs = this._addons.map(a => {\n this.billedProductsMap.set(a.addonId, null);\n this.billedProductLoaded.set(a.addonId, false);\n return a.billingId;\n });\n this.subscriptions.push(\n this.billingService.getMultiProductPricing(this.partnerID, billingIDs).subscribe(pricing => {\n this._addons.forEach(addon => {\n const addonPricing = pricing[addon.billingId];\n if (!addonPricing) {\n return;\n }\n const billedProduct = buildBilledProductFromProductPricingAndAddon(addon, addonPricing);\n this.billedProductsMap.set(addon.addonId, billedProduct);\n this.billedProductLoaded.set(addon.addonId, true);\n });\n this.cdr.detectChanges();\n })\n )\n }\n }\n\n onClick(addonId: String): void {\n this.addonSelected.emit(addonId);\n }\n\n public instanceOfPricing(object: any) {\n if (typeof object === 'number') {\n return false;\n }\n return object.currency !== undefined && object.prices !== undefined;\n }\n\n getDisplayPricing(addon: Addon): Pricing {\n const price: any = addon.price;\n if (price && this.instanceOfPricing(price)) {\n return price;\n }\n return {\n currency: addon.currency,\n prices: [\n {\n price: addon.price,\n frequency: addon.billingFrequency ? addon.billingFrequency : 'Monthly'\n }\n ]\n };\n }\n\n noData(): boolean {\n return isNullOrUndefined(this._hasVerifiedContract) || isNullOrUndefined(this._canAccessContractPricing);\n }\n\n displayContractPricing(): boolean {\n return this._canAccessContractPricing && this._hasVerifiedContract;\n }\n\n isBilledProductLoaded(addon: Addon): boolean {\n\n if (this.noData()) {\n return false;\n }\n if (this.displayContractPricing()) {\n const value = this.billedProductLoaded.get(addon.addonId);\n return value ? value : false;\n }\n return true;\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaAddonListComponent} from './addon-list.component';\nimport {MatDividerModule, MatIconModule, MatListModule} from '@angular/material';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {BillingModule} from '@vendasta/core/billing';\n\n@NgModule({\n imports: [\n BillingModule,\n CommonModule,\n MatIconModule,\n MatListModule,\n MatDividerModule,\n VaPricingModule\n ],\n declarations: [VaAddonListComponent],\n exports: [VaAddonListComponent]\n})\nexport class VaAddonListModule {\n}\n","import { Inject, Injectable, InjectionToken, NgModule } from '@angular/core';\n\nexport interface HeimdallServiceTokenInterface {\n track(category: string, action: string, label: string, value?: number, dimensions?: {[key: string]: string}): void;\n}\n\nexport const HeimdallServiceToken: InjectionToken<HeimdallServiceTokenInterface> = new InjectionToken<\n HeimdallServiceTokenInterface\n >('HeimdallService');\n\n@Injectable()\nexport class HeimdallClient {\n constructor(@Inject(HeimdallServiceToken) private userEvents: HeimdallServiceTokenInterface) {}\n\n track(category: string, action: string, label: string, value?: number, dimensions?: {[key: string]: string}): void {\n this.userEvents.track(category, action, label, value, dimensions);\n }\n}\n\n@NgModule({\n providers: [HeimdallClient]\n})\nexport class HeimdallClientModule {}\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, filter, take } from 'rxjs/operators';\n\nimport { Filters, FilterSection, TabbedFilterField, CheckboxFilterField, FilterService, FilterField } from '@vendasta/uikit';\nimport { StoreItem, CategoryToItemListMap } from '../store-item';\nimport { HeimdallServiceToken, HeimdallServiceTokenInterface } from '../heimdall-client-token';\nimport { LMI_CATEGORIES } from '../';\nimport { Categories } from '@vendasta/core/marketplace-packages';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\nexport const STOREFRONT_FILTER_NAME = 'Store Filters';\n\nexport interface StorefrontCategory {\n id: string,\n name: string,\n packageIds: string[],\n}\n\n@Component({\n selector: 'va-storefront',\n templateUrl: './storefront.component.html',\n styleUrls: ['./storefront.component.scss']\n})\nexport class StorefrontComponent implements OnInit, OnDestroy {\n @Input()\n set categories(value: StorefrontCategory[]) {\n this.categories$$.next(value || []);\n }\n @Input()\n set categoryIdToStoreItemListMap(value: CategoryToItemListMap) {\n this.packagesMap$$.next(value || new Map<string, StoreItem[]>());\n }\n @Input() useCustomCase = false;\n @Output() categorySelected = new EventEmitter<StorefrontCategory>();\n @Output() packageIdSelected = new EventEmitter<string>();\n @Output() getDataForCategory = new EventEmitter<StorefrontCategory>();\n\n private categories$$: BehaviorSubject<StorefrontCategory[]> = new BehaviorSubject<StorefrontCategory[]>([]);\n private packagesMap$$: BehaviorSubject<CategoryToItemListMap> =\n new BehaviorSubject<CategoryToItemListMap>(new Map<string, StoreItem[]>());\n private searchTerm$$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private selectedCateoryId$$: BehaviorSubject<string> = new BehaviorSubject<string>('');\n private lmiCategoryFilter: Filters;\n filters$: Observable<Filters>;\n filteredItems$: Observable<StoreItem[]>;\n searchTermSubscription: Subscription;\n showLMIFilter$: Observable<boolean>;\n\n constructor(\n @Inject(HeimdallServiceToken) private userEvents: HeimdallServiceTokenInterface,\n private filterService: FilterService,\n private translateService: TranslateService\n ) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n }\n\n ngOnInit(): void {\n const lmiCategoryCheckboxList = LMI_CATEGORIES.map((category) => {\n return new CheckboxFilterField({\n name: category.name,\n id: category.categoryId,\n value: false,\n condition: (item: {lmiCategories: string[]}): boolean => {\n let lmiCategories: string[] = [];\n if (item.lmiCategories) {\n lmiCategories = item.lmiCategories.map((cat) => {\n return Categories[cat].toLowerCase();\n });\n }\n return lmiCategories.indexOf(category.categoryId) > -1;\n }\n });\n });\n\n const lmiCategoryFilterSection = new FilterSection({\n title: 'LMI Category',\n type: 'or',\n fields: lmiCategoryCheckboxList\n });\n\n this.lmiCategoryFilter = new Filters(STOREFRONT_FILTER_NAME, [\n lmiCategoryFilterSection\n ]);\n\n this.filters$ = this.categories$$.pipe(\n map(categories => {\n const tabbedFilterField = new TabbedFilterField({\n name: '',\n value: null,\n id: 'categorytab',\n options: categories\n });\n\n const filters = new Filters(STOREFRONT_FILTER_NAME, [\n new FilterSection({\n title: 'Categories',\n type: 'or',\n fields: [tabbedFilterField]\n }),\n lmiCategoryFilterSection\n ]);\n\n return filters;\n })\n );\n\n this.filterService.setFilters(this.lmiCategoryFilter);\n\n this.searchTermSubscription = this.searchTerm$$.asObservable().pipe(\n debounceTime(300),\n distinctUntilChanged()).subscribe(\n searchTerm => this.userEvents.track('store', 'search-input', '', 1, {'searchTerm': searchTerm})\n );\n\n const selectedLMIFilters$ = this.filterService.filters.fieldValuesObservable.pipe(\n startWith([]),\n map(() => {\n return this.lmiCategoryFilter.fields.filter((item: CheckboxFilterField) => item.value);\n })\n );\n\n this.showLMIFilter$ = selectedLMIFilters$.pipe(\n filter(selectedLMIFilters => !!selectedLMIFilters),\n take(1),\n map(selectedLMIFilters => selectedLMIFilters.length > 0)\n );\n\n this.filteredItems$ = combineLatest(this.packagesMap$$, this.searchTerm$$, this.selectedCateoryId$$, selectedLMIFilters$).pipe(\n map(([packages, searchTerm, selectedCategoryId, selectedLMIFilters]) => {\n let storeItems: StoreItem[] = [];\n if (packages.size) {\n storeItems = (selectedCategoryId ? packages.get(selectedCategoryId) : packages.get(Array.from(packages.keys())[0]));\n }\n storeItems = storeItems ? this.lmiCategoryFilter.applyFilters(storeItems) : [];\n\n return searchTerm ? storeItems.filter(item => item.name.toLowerCase().indexOf(searchTerm.toLowerCase()) !== -1) : storeItems;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.searchTermSubscription.unsubscribe();\n }\n\n public onSearchTermChanged(term: string): void {\n this.searchTerm$$.next(term);\n }\n\n public onFieldValueChanged(filterField: FilterField<any>): void {\n if (!(filterField instanceof TabbedFilterField)) {\n return;\n }\n\n this.selectedCateoryId$$.next(filterField.value.id);\n this.categorySelected.emit(filterField.value as StorefrontCategory);\n\n const currentStoreItemsForSelectCategory = this.packagesMap$$.getValue().get(filterField.value.id);\n if (!(currentStoreItemsForSelectCategory && currentStoreItemsForSelectCategory.length)) {\n this.getDataForCategory.emit(filterField.value as StorefrontCategory);\n }\n}\n\n public storeItemClicked(item: StoreItem): void {\n this.packageIdSelected.emit(item.id);\n }\n\n}\n","import { Inject, NgModule, Optional } from '@angular/core';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {\n MatCardModule,\n MatIconModule,\n MatInputModule,\n MatSelectModule,\n MatExpansionModule,\n MatCheckboxModule} from '@angular/material';\nimport {CommonModule} from '@angular/common';\n\nimport {UIKitModule, FilterService} from '@vendasta/uikit';\n\nimport {StoreCardModule} from './store-card.module';\nimport {StoreComponent} from './store.component';\nimport {VaOrderFormModule} from './order-form/order-form.module';\nimport {StoreService} from './store.service';\nimport {AddonModule} from './addon-details/addon.module';\nimport {StencilsModule} from './stencils/stencils.module';\nimport {VaPricingModule} from './pricing/pricing.module';\nimport {VaAddonListModule} from './addon-list/addon-list.module';\nimport {StorefrontComponent} from './storefront/storefront.component';\nimport {HeimdallClientModule} from './heimdall-client-token';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { En } from './assets/i18n/en';\nimport { Cs } from './assets/i18n/cs';\n\n@NgModule({\n imports: [CommonModule, UIKitModule, MatCardModule, MatIconModule, MatInputModule, FormsModule, ReactiveFormsModule,\n MatSelectModule, MatExpansionModule, MatCheckboxModule, StoreCardModule, VaOrderFormModule, AddonModule, StencilsModule,\n VaPricingModule, VaAddonListModule, HeimdallClientModule, TranslateModule.forChild()],\n declarations: [StoreComponent, StorefrontComponent],\n providers: [StoreService, FilterService],\n exports: [StoreComponent, StoreCardModule, VaOrderFormModule, StencilsModule, StorefrontComponent]\n})\nexport class StoreModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","export interface LmiCategory {\n name: string;\n categoryId: string;\n}\n\nexport const LMI_CATEGORIES: LmiCategory[] = [\n { name: 'Listings', categoryId: 'listings' },\n { name: 'Social', categoryId: 'social' },\n { name: 'Reputation', categoryId: 'reputation' },\n { name: 'SEO', categoryId: 'seo' },\n { name: 'Website', categoryId: 'website' },\n { name: 'Advertising', categoryId: 'advertising' },\n { name: 'Content & Experience', categoryId: 'content_and_experience' }\n];\n\nexport const LMI_CATEGORY_MAP = LMI_CATEGORIES.reduce((previous, current) => {\n previous[current.categoryId] = current;\n return previous;\n}, {});\n\nexport const LMI_CATEGORIES_BY_NAME = LMI_CATEGORIES.reduce((previous, current) => {\n previous[current.name] = current;\n return previous;\n}, {});\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\nimport {Pricing} from '../pricing/pricing';\nimport {Salesperson} from './salesperson';\n\n\n@Component({\n selector: 'va-salesperson-details',\n templateUrl: './salesperson-details.component.html',\n styleUrls: ['./salesperson-details.component.scss']\n})\nexport class VaSalespersonDetailsComponent {\n @Input() salesperson: Salesperson;\n @Input() packagePricing: Pricing;\n @Input() brandName: string;\n @Input() showGetItNow = true;\n @Output() getItNow = new EventEmitter();\n\n onGetItNowSelected(): void {\n this.getItNow.emit(this.salesperson);\n }\n\n get iconUrl(): string {\n return this.salesperson && this.salesperson.photoUrlSecure ?\n this.salesperson.photoUrlSecure :\n 'https://vbc-frontend.storage-download.googleapis.com/salesperson-details/default_sales_person.jpg';\n }\n\n get name(): string {\n return this.salesperson && this.salesperson.formattedName ?\n this.salesperson.formattedName : '';\n }\n\n get title(): string {\n return this.salesperson && this.salesperson.jobTitle ?\n this.salesperson.jobTitle : '';\n }\n\n get email(): string {\n return this.salesperson && this.salesperson.email ?\n this.salesperson.email : '';\n }\n\n get cityAndState(): string {\n return this.salesperson && this.salesperson.city && this.salesperson.state ?\n this.salesperson.city + ', ' + this.salesperson.state : '';\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatButtonModule, MatIconModule} from '@angular/material';\nimport {VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\n\nimport {VaSalespersonDetailsComponent} from './salesperson-details.component';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatIconModule,\n VaIconModule,\n VaPricingModule,\n ],\n declarations: [\n VaSalespersonDetailsComponent\n ],\n exports: [\n VaSalespersonDetailsComponent\n ],\n entryComponents: [\n VaSalespersonDetailsComponent\n ]\n})\nexport class VaSalespersonDetailsModule {\n}\n","import { Sellable } from '../shared/sellable';\nimport { AddonKey } from '@vendasta/core/marketplace-packages';\n\nexport class Package extends Sellable {\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 content: string;\n products: string[];\n addon_keys: AddonKey[];\n hide_product_icons_and_names: boolean;\n hide_product_details: boolean;\n createdDate: Date;\n updatedDate: Date;\n productOrder: string[]; // the order the product / addons in the package\n\n static fromApi(data: any): Package {\n const newPackage = new Package();\n if (!data.pricing && data.selling_price) {\n data.pricing = {\n currency: data.currency,\n prices: [{\n price: data.selling_price * 100,\n frequency: data.billingFrequency,\n isStartingPrice: false,\n }]\n };\n }\n Object.assign(newPackage, data);\n if (!newPackage.name) {\n newPackage.name = 'Untitled';\n }\n if (data.created) {\n newPackage.createdDate = new Date(data.created);\n }\n if (data.updated) {\n newPackage.updatedDate = new Date(data.updated);\n }\n return newPackage;\n }\n\n get isPackageFree(): boolean {\n return this.isFree;\n }\n}\n","import { Addon } from '@vendasta/core/shared';\nimport { Product } from '../shared/product';\n\nexport function orderProductsAndAddons(combined: (Product | Addon)[], order: string[]): (Product | Addon)[] {\n if (!order || order.length === 0) {\n return combined || [];\n }\n if (!combined || combined.length === 0) {\n return [];\n }\n\n const itemMap = (combined || []).reduce((m, curr) => {\n m.set(getUniqueProductAddonId(curr), curr);\n return m;\n }, new Map<string, (Product | Addon)>());\n\n const combinedIdList = combined.map(getUniqueProductAddonId);\n const finalOrderedIds = combineProductOrderWithContainedProducts(order, combinedIdList);\n\n const orderedList = finalOrderedIds.reduce((items, id) => {\n items.push(itemMap.get(id));\n return items;\n }, []) as (Product | Addon)[];\n\n return orderedList.filter(filterUniqueAndDefined);\n}\n\nfunction filterUniqueAndDefined(elem, pos, arr) {\n return elem && arr.indexOf(elem) === pos;\n}\n\nexport function combineProductOrderWithContainedProducts(productOrder: string[], itemIds: string[]): string[] {\n if (itemIds == null || itemIds.length === 0) {\n return []\n }\n if (!productOrder || productOrder.length === 0) {\n return itemIds.filter(filterUniqueAndDefined);\n }\n return productOrder\n .filter(elem => itemIds.indexOf(elem) >= 0)\n .concat(itemIds)\n .filter(filterUniqueAndDefined);\n}\n\nexport function getUniqueProductAddonId(thing: any): string {\n return thing['addonId'] || thing['productId'];\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest, merge as observableMerge } from 'rxjs';\nimport { Package } from './package';\nimport { Addon } from '@vendasta/core/shared';\nimport { Product } from '../shared/product';\nimport { skipWhile, shareReplay, map, take } from 'rxjs/operators';\nimport { orderProductsAndAddons } from './utils';\n\n@Component({\n selector: 'va-package-details',\n templateUrl: 'package-details.component.html',\n styleUrls: ['./package-details.component.scss']\n})\nexport class VaPackageDetailsComponent {\n @Input() showActionButton = true;\n @Input() showPricing = true;\n @Input() actionLabel = 'Get It Now';\n\n @Output() getItNow = new EventEmitter();\n\n standAloneProducts$$: BehaviorSubject<Product[]> = new BehaviorSubject<Product[]>([]);\n products$: BehaviorSubject<Product[]> = new BehaviorSubject<Product[]>([]);\n addons$: BehaviorSubject<Addon[]> = new BehaviorSubject<Addon[]>([]);\n pkg$: ReplaySubject<Package> = new ReplaySubject<Package>(1);\n itemSelectedEvent$: ReplaySubject<number> = new ReplaySubject<number>(1);\n\n selectedItem$: Observable<Product | Addon>;\n combinedItemsList$: Observable<(Product | Addon)[]>;\n orderedItemsList$: Observable<(Product | Addon)[]>;\n lmiCategories$: Observable<Set<string>>;\n productNameForSingleAddon$: Observable<string>;\n displayTagName$: Observable<string>;\n\n @Input()\n set standAloneProducts(standAloneProducts: Product[]) {\n this.standAloneProducts$$.next(standAloneProducts);\n }\n\n @Input()\n set products(products: Product[]) {\n this.products$.next(products);\n }\n\n @Input()\n set addons(addons: Addon[]) {\n this.addons$.next(addons);\n }\n\n @Input()\n set pkg(pkg: Package) {\n this.pkg$.next(pkg);\n }\n\n static getLmiCategories(products: Product[]): Set<string> {\n let lmiCategories: string[] = [];\n if (products) {\n products.forEach(product => {\n lmiCategories = lmiCategories.concat(product.getLmiCategoryNames());\n });\n }\n return new Set(lmiCategories);\n }\n\n static getDisplayTagline(pkg: Package, items: (Product | Addon)[]): string {\n if (pkg && pkg.tagline) {\n return pkg.tagline;\n } else if (items && items.length === 1) {\n // Single product / addon package.\n return items[0].tagline || '';\n }\n return '';\n }\n\n static getProductNameForSingleAddon(items: (Product | Addon)[]): string {\n if (items && items.length === 1 && items[0] instanceof Addon) {\n const addon = items[0] as Addon;\n return addon.productName;\n }\n }\n\n constructor() {\n this.combinedItemsList$ = combineLatest(this.products$, this.addons$, (products: Product[], addons: Addon[]) => {\n return [].concat(products || []).concat(addons || []) as (Product | Addon)[];\n });\n\n this.orderedItemsList$ = combineLatest(this.combinedItemsList$, this.pkg$, (combined: (Product | Addon)[], pkg: Package) => {\n return orderProductsAndAddons(combined, pkg ? pkg.productOrder || [] : [])\n });\n\n const nonEmptyCombinedItemsList = this.combinedItemsList$.pipe(\n skipWhile(items => !items || items.length === 0),\n shareReplay(1)\n );\n\n // Need to map to an index because that's how product selection works.\n const initialSelectedItem$ = nonEmptyCombinedItemsList.pipe(\n map((_: any) => 0),\n take(1)\n );\n\n const mergedSelection = observableMerge(initialSelectedItem$, this.itemSelectedEvent$);\n\n this.selectedItem$ = combineLatest(mergedSelection, this.orderedItemsList$).pipe(\n map(([index, items]) => {\n return items[index];\n })\n );\n\n this.lmiCategories$ = this.products$.pipe(\n skipWhile(products => !products || products.length === 0),\n map(products => {\n return VaPackageDetailsComponent.getLmiCategories(products);\n })\n );\n\n this.productNameForSingleAddon$ = nonEmptyCombinedItemsList.pipe(\n map(items => {\n return VaPackageDetailsComponent.getProductNameForSingleAddon(items);\n })\n );\n\n this.displayTagName$ = combineLatest(this.pkg$, this.combinedItemsList$).pipe(\n map(([pkg, items]) => {\n return VaPackageDetailsComponent.getDisplayTagline(pkg, items);\n })\n );\n }\n\n selectItem(i: number): void {\n this.itemSelectedEvent$.next(i);\n }\n\n emitGetItNow(): void {\n this.getItNow.emit();\n }\n}\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {Addon} from '@vendasta/core/shared';\nimport {Product} from '../shared/product';\n\n@Component({\n selector: 'va-products-nav',\n templateUrl: './products-nav.component.html',\n styleUrls: ['./products-nav.component.scss']\n})\n\nexport class VaProductsNavComponent {\n @Input() items: (Addon | Product) [];\n @Input() hideItemsNav: boolean;\n @Output() itemSelected = new EventEmitter();\n\n selectedIndex = 0;\n pageMarker = 0;\n\n onItemSelected(index: any): void {\n this.selectedIndex = index;\n this.itemSelected.emit(index);\n }\n\n moveSlides(slides: HTMLBodyElement): void {\n const sliderWidth = Math.round(slides.offsetWidth / slides.children[0].clientWidth);\n const numSlides = Math.ceil(slides.children.length / sliderWidth);\n if (numSlides === 0) {\n return;\n }\n const pageWidth = slides.offsetWidth;\n let move = 0;\n\n if (this.pageMarker === -1) {\n this.pageMarker = numSlides - 1; // go to end\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n } else if (this.pageMarker >= numSlides) {\n slides.style.left = '0px';\n this.pageMarker = 0; // reset\n } else {\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n }\n }\n\n pageNext(slides: HTMLBodyElement): void {\n this.pageMarker++;\n this.moveSlides(slides);\n }\n\n pagePrev(slides: HTMLBodyElement): void {\n this.pageMarker--;\n this.moveSlides(slides);\n }\n}\n","import {Component, Input, Output, EventEmitter} from '@angular/core';\nimport {StoreLineItem} from '../../package-details-v2/interface';\n\n@Component({\n selector: 'va-products-nav-v2',\n templateUrl: './products-nav-v2.component.html',\n styleUrls: ['./products-nav-v2.component.scss']\n})\n\nexport class ProductsNavV2Component {\n @Input() items: StoreLineItem[];\n @Input() hideItemsNav: boolean;\n @Output() itemSelected = new EventEmitter<string>();\n\n selected_id = '';\n pageMarker = 0;\n\n onItemSelected(id: string): void {\n this.selected_id = id;\n this.itemSelected.emit(id);\n }\n\n moveSlides(slides: HTMLBodyElement): void {\n const sliderWidth = Math.round(slides.offsetWidth / slides.children[0].clientWidth);\n const numSlides = Math.ceil(slides.children.length / sliderWidth);\n if (numSlides === 0) {\n return;\n }\n const pageWidth = slides.offsetWidth;\n let move = 0;\n\n if (this.pageMarker === -1) {\n this.pageMarker = numSlides - 1; // go to end\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n } else if (this.pageMarker >= numSlides) {\n slides.style.left = '0px';\n this.pageMarker = 0; // reset\n } else {\n move = pageWidth * this.pageMarker;\n slides.style.left = `-${move}px`;\n }\n }\n\n pageNext(slides: HTMLBodyElement): void {\n this.pageMarker++;\n this.moveSlides(slides);\n }\n\n pagePrev(slides: HTMLBodyElement): void {\n this.pageMarker--;\n this.moveSlides(slides);\n }\n}\n","import { Inject, NgModule, Optional } from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule} from '@angular/material';\nimport {VaProductsNavComponent} from './products-nav.component';\nimport {VaIconModule, VaBadgeModule} from '@vendasta/uikit';\nimport {ProductsNavV2Component} from './products-nav-v2/products-nav-v2.component';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n CommonModule,\n MatIconModule,\n VaIconModule,\n VaBadgeModule,\n TranslateModule.forChild()\n ],\n declarations: [VaProductsNavComponent, ProductsNavV2Component],\n exports: [VaProductsNavComponent, ProductsNavV2Component]\n})\n\nexport class VaProductsNavModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule, MatButtonModule} from '@angular/material';\nimport {VaImageGalleryModule, VaSafeHtmlModule, VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaPackageDetailsComponent} from './package-details.component';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {VaProductsNavModule} from '../products-nav/products-nav.module';\n\n@NgModule({\n imports: [\n VaImageGalleryModule, CommonModule, MatIconModule, VaSafeHtmlModule, VaIconModule,\n VaPricingModule, MatButtonModule, VaFilesModule, VaFaqsModule, VaSellingInfoModule,\n VaHeaderContainerModule, VaAddonListModule, VaProductsNavModule],\n declarations: [VaPackageDetailsComponent],\n exports: [VaPackageDetailsComponent],\n entryComponents: [VaPackageDetailsComponent]\n})\nexport class VaPackageDetailsModule {}\n","import {Price, Pricing, File} from '..';\nimport {StoreLineItem} from './interface';\nimport {\n LineItem as ProtoLineItem,\n ProductInterface,\n LineItems as ProtoLineItems,\n Package as ProtoPackage,\n Pricing as ProtoPricing,\n Currency as ProtoCurrency,\n MarketAction,\n} from '@vendasta/core/marketplace-packages';\n\nexport class PackageDetails {\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 content: string;\n hide_product_icons_and_names: boolean;\n hide_product_details: boolean;\n createdDate: Date;\n updatedDate: Date;\n pricing: Pricing;\n line_items: StoreLineItem[];\n market_action: MarketAction;\n\n get isPackageFree(): boolean {\n const isFreeHelper = (prices: Price[]): boolean => {\n return prices ? prices.some(p => p.price === 0 || p.price === undefined) : false;\n };\n return this.pricing && isFreeHelper(this.pricing.prices);\n }\n}\n\nexport function convertToPackageDetails(data: ProtoPackage, products: ProductInterface[]): PackageDetails {\n if (!data) {\n return undefined;\n }\n\n const newPackage = new PackageDetails();\n if (!data.pricing) {\n data.pricing = ProtoPricing.fromProto({\n currency: undefined,\n prices: [{\n price: 0,\n frequency: undefined,\n isStartingPrice: false,\n }]\n });\n }\n\n Object.assign(newPackage, data);\n\n if (!newPackage.name) {\n newPackage.name = 'Untitled';\n }\n if (data.created) {\n newPackage.createdDate = new Date(data.created);\n }\n if (data.updated) {\n newPackage.updatedDate = new Date(data.updated);\n }\n if (data.lineItems) {\n newPackage.line_items = convertProtoLineItemsToStoreLineItems(data.lineItems, products);\n }\n if (typeof data.pricing.currency === 'number') {\n newPackage.pricing.currency = ProtoCurrency[data.pricing.currency];\n }\n\n return newPackage;\n}\n\nexport function convertProtoLineItemsToStoreLineItems(protoLineItems: ProtoLineItems, products: ProductInterface[]): StoreLineItem[] {\n if (!protoLineItems || !protoLineItems.lineItems || protoLineItems.lineItems.length === 0 || !products || products.length === 0) {\n return [];\n }\n return protoLineItems.lineItems.map(lineItem => {\n const product = products.find(p => p.productId === lineItem.id);\n let parent;\n if (!!lineItem.parentId) {\n parent = products.find(p => p.productId === lineItem.parentId);\n }\n return convertProtoLineItemToStoreLineItem(lineItem, product, parent);\n });\n}\n\nfunction convertProtoLineItemToStoreLineItem(\n protoLineItem: ProtoLineItem,\n product: ProductInterface,\n parentProduct?: ProductInterface\n): StoreLineItem {\n if (!product || !protoLineItem) {\n return undefined;\n }\n\n let files = [];\n if (product.pdfUploadUrls && product.pdfUploadUrls.length > 0) {\n files = product.pdfUploadUrls.map(url => new File(url));\n }\n\n const lineItem = {\n item: {\n id: protoLineItem.id,\n editionId: protoLineItem.editionId,\n icon: product.iconUrl,\n name: product.name,\n editionName: '',\n description: product.description,\n keySellingPoints: product.keySellingPoints,\n faqs: product.faqs,\n files: files,\n screenshotUrls: product.screenshotUrls,\n lmiCategories: [],\n\n },\n quantity: protoLineItem.quantity,\n parent: {}\n } as StoreLineItem;\n\n if (protoLineItem.parentId && parentProduct) {\n lineItem.parent = {\n id: protoLineItem.parentId,\n editionId: '',\n icon: parentProduct.iconUrl,\n name: parentProduct.name,\n editionName: '',\n }\n }\n return lineItem;\n}\n","import { Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';\nimport {Observable, combineLatest, BehaviorSubject, ReplaySubject} from 'rxjs';\nimport {PackageDetails} from './package';\nimport {map, take, tap, filter, shareReplay} from 'rxjs/operators';\nimport {StoreLineItem} from './interface';\nimport { TranslateService } from '@ngx-translate/core';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@Component({\n selector: 'va-package-details-v2',\n templateUrl: 'package-details-v2.component.html',\n styleUrls: ['./package-details-v2.component.scss']\n})\nexport class VaPackageDetailsV2Component {\n @Input() showActionButton = true;\n @Input() showPricing = true;\n @Input() actionLabel = 'FRONTEND.STORE.GET_IT_NOW';\n @Input() set pkg(pkg: PackageDetails) {\n this.pkg$$.next(pkg);\n }\n @Output() getItNow = new EventEmitter();\n\n pkg$$ = new ReplaySubject<PackageDetails>(1);\n itemSelectedEvent$$ = new BehaviorSubject<string>('');\n selectedItem$: Observable<StoreLineItem>;\n orderedLineItems$: Observable<StoreLineItem[]>;\n productNameForSingleAddon$: Observable<string>;\n lmiCategories$: Observable<string[]>;\n\n constructor(private translateService: TranslateService, @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => this.translateService.use(currentLang)); }\n\n this.orderedLineItems$ = this.pkg$$.pipe(\n map(pkg => pkg.line_items),\n filter(items => !!items || items.length === 0),\n shareReplay(1),\n );\n\n this.productNameForSingleAddon$ = this.orderedLineItems$.pipe(\n map(items => this.getParentsNameForItem(items))\n );\n\n this.selectedItem$ = combineLatest([this.itemSelectedEvent$$, this.orderedLineItems$]).pipe(\n map(([id, lineItems]) => lineItems.find(lineItem => lineItem.item.id === id)),\n );\n\n this.lmiCategories$ = this.orderedLineItems$.pipe(map((lis) => {\n const lmiMap = (lis || []).reduce((prev, li) => {\n if (li && li.item) {\n (li.item.lmiCategories || []).forEach(lmi => prev.set(lmi, lmi))\n }\n return prev;\n }, new Map<string, string>());\n\n const lmiCats = [];\n lmiMap.forEach((v, k) => {\n lmiCats.push(k);\n });\n return lmiCats;\n }));\n\n // Set the initial selected Item\n this.orderedLineItems$.pipe(\n map(lineItems => lineItems[0]),\n tap(lineItem => this.selectItem(lineItem && lineItem.item ? lineItem.item.id : '')),\n take(1)\n ).subscribe();\n }\n\n selectItem(id: string): void {\n this.itemSelectedEvent$$.next(id);\n }\n\n emitGetItNow(): void {\n this.getItNow.emit();\n }\n\n getParentsNameForItem(items: StoreLineItem[]): string {\n if (items && items.length === 1 && items[0]) {\n return items[0].parent.name;\n }\n }\n}\n","import {Inject, NgModule, Optional} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatIconModule, MatButtonModule} from '@angular/material';\nimport {VaImageGalleryModule, VaSafeHtmlModule, VaIconModule} from '@vendasta/uikit';\n\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaPackageDetailsV2Component} from './package-details-v2.component';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {VaProductsNavModule} from '../products-nav/products-nav.module';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {Observable} from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n@NgModule({\n imports: [\n VaImageGalleryModule,\n CommonModule,\n MatIconModule,\n VaSafeHtmlModule,\n VaIconModule,\n VaPricingModule,\n MatButtonModule,\n VaFilesModule,\n VaFaqsModule,\n VaSellingInfoModule,\n VaHeaderContainerModule,\n VaAddonListModule,\n VaProductsNavModule,\n TranslateModule.forChild()\n ],\n declarations: [VaPackageDetailsV2Component],\n exports: [VaPackageDetailsV2Component],\n entryComponents: [VaPackageDetailsV2Component]\n})\nexport class VaPackageDetailsV2Module {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import { Product, Package, ProductWithParent } from '../';\nimport { Addon, AddonKey } from '@vendasta/core/marketplace-packages';\n\nexport interface SalesPackage {\n formattedPrices: string;\n packageId: string;\n name: string;\n icon: string;\n productIds: string[];\n products: SalesProduct[];\n addonsWithNoParent: SalesAddon[];\n totalAddons: number;\n activationStatus?: StatusNotificationItem;\n}\n\nexport interface SalesProduct {\n formattedPrices: string;\n productId: string;\n name: string;\n icon: string;\n tagline: string;\n activationStatus?: StatusNotificationItem;\n editionId?: string;\n editionName?: string;\n addons: SalesAddon[];\n parentInfo?: ProductParentInfo;\n}\n\nexport interface ProductParentInfo {\n parentId: string;\n parentName: string;\n parentIconUrl: string;\n multipleActivations: boolean;\n}\n\nexport interface SalesAddon {\n parentId: string;\n addonId: string;\n name: string;\n icon: string;\n tagline: string;\n parentName: string;\n parentIcon: string;\n multipleActivations: boolean;\n activationStatus?: StatusNotificationItem;\n}\n\nexport interface PackageItemActivationStatus {\n packageItemId: string;\n status: ActivationStatus;\n}\n\nexport enum ActivationStatus {\n SUCCESS = 0,\n WARNING = 1,\n ERROR = 2\n}\n\nexport interface StatusNotificationItem {\n icon: string,\n text: string,\n status: ActivationStatus\n}\n\nexport function buildSalesPackages(packages: Package[], products: Product[], addons: Addon[]): SalesPackage[] {\n if (!packages || packages.length < 1) {\n return [];\n }\n return packages.map(pkg => buildSalesPackageFromPackage(pkg, products, addons));\n}\n\nfunction buildSalesPackageFromPackage(pkg: Package, products: Product[], addons: Addon[]): SalesPackage {\n if (!pkg) {\n return null;\n }\n\n const salesProducts = buildSalesProducts(pkg, products, addons);\n // Addons can be in a package even if the parent product is not, this will create salesAddons with no parent\n const addonsWithNoParent: SalesAddon[] = buildSalesAddonsWithNoParent(pkg, products, addons);\n\n return createSalesPackage(pkg, salesProducts, addonsWithNoParent);\n}\n\nexport function buildSalesProducts(pkg: Package, products: Product[], addons: Addon[]): SalesProduct[] {\n if (!(products && products.length && pkg.products && pkg.products.length)) {\n return [];\n }\n const productMap: Map<string, Product> = new Map<string, Product>();\n products.forEach(product => productMap.set(product.productId, product));\n return pkg.products\n .map(productId => {\n const productMatch: Product = productMap.get(productId);\n const addonsInPackage = coerceAddonsForAddonKeys(addons, pkg.addon_keys);\n return productMatch ? buildSalesProductFromProduct(productMatch, addonsInPackage) : null;\n })\n .filter(productItem => productItem);\n}\n\nexport function coerceAddonsForAddonKeys(addons: Addon[], addonKeys: AddonKey[]): Addon[] {\n if (!addons || addons.length === 0 || !addonKeys || addonKeys.length === 0) {\n return [];\n }\n\n return addons.reduce((addonsArray, addon) => {\n const key = addonKeys.find(k => k.addonId === addon.addonId);\n if (key) {\n const quantity = key.quantity || 1;\n for (let i = 0; i < quantity; i++) {\n addonsArray.push(addon)\n }\n }\n return addonsArray;\n }, []);\n}\n\nexport function buildSalesAddonsWithNoParent(pkg: Package, products: Product[], addons: Addon[]): SalesAddon[] {\n if (!addons || addons.length < 1 || !pkg.addon_keys) {\n return [];\n }\n const productMap: Map<string, Product> = new Map<string, Product>();\n products.forEach(product => productMap.set(product.productId, product));\n const addonsMap: Map<string, Addon> = new Map<string, Addon>();\n addons.forEach(addon => addonsMap.set(addon.addonId, addon));\n\n const addonsWithNoParent = pkg.addon_keys.reduce<SalesAddon[]>((addonArray: SalesAddon[], addonKey: AddonKey): SalesAddon[] => {\n if (pkg.products && pkg.products.some(productId => productId === addonKey.appId)) {\n return addonArray || [];\n }\n const parentProduct = productMap.get(addonKey.appId);\n const parentName = parentProduct ? parentProduct.name : null;\n const parentIcon = parentProduct ? parentProduct.iconUrl : null;\n const quantity = addonKey.quantity || 1;\n const addon: Addon = addonsMap.get(addonKey.addonId); // could be undefined\n for (let i = 0; i < quantity; i++) {\n addonArray.push(createSalesAddon(addon, parentName, parentIcon));\n }\n return addonArray;\n }, []);\n return addonsWithNoParent;\n}\n\nexport function buildSalesProductFromProduct(product: Product | ProductWithParent, addons: Addon[]): SalesProduct {\n if (!product) {\n return null;\n }\n if (!addons || addons.length < 1) {\n return createSalesProduct(product, null);\n }\n\n const productAddons = addons.filter(addon => addon.appId === product.productId);\n const salesAddons = createSalesAddons(productAddons);\n return createSalesProduct(product, salesAddons);\n}\n\nfunction createSalesPackage(pkg: Package, salesProducts: SalesProduct[], addonsWithNoParent: SalesAddon[]): SalesPackage {\n let totalAddons = 0;\n for (const key of pkg.addon_keys || []) {\n totalAddons += key.quantity || 1;\n }\n\n return {\n formattedPrices: pkg.priceStrings.join(', '),\n packageId: pkg.solution_id,\n name: pkg.name,\n icon: pkg.icon,\n productIds: pkg.products,\n products: salesProducts || [],\n addonsWithNoParent: addonsWithNoParent || [],\n totalAddons: totalAddons\n }\n}\n\nfunction createSalesProduct(product: Product | ProductWithParent, salesAddons: SalesAddon[]): SalesProduct {\n let parentInfo: ProductParentInfo;\n if (product instanceof ProductWithParent) {\n parentInfo = {\n parentId: product.parentId,\n parentName: product.parentName,\n parentIconUrl: product.parentIconUrl,\n multipleActivations: product.multipleActivations || false,\n }\n }\n return {\n formattedPrices: product.priceStrings.join(', '),\n productId: product.productId,\n name: product.name,\n tagline: product.tagline || '',\n icon: product.iconUrl,\n addons: salesAddons || [],\n editionId: product.editionId,\n editionName: product.editionName,\n parentInfo: parentInfo,\n }\n}\n\nfunction createSalesAddons(addons: Addon[]): SalesAddon[] {\n return addons.map(addon => createSalesAddon(addon));\n}\n\nfunction createSalesAddon(addon: Addon, parentName?: string, parentIcon?: string): SalesAddon {\n return {\n parentId: addon.appId,\n addonId: addon.addonId,\n name: addon.title,\n tagline: addon.tagline || '',\n icon: addon.icon || '',\n multipleActivations: addon.multipleActivations,\n parentIcon: parentIcon || '',\n parentName: parentName || ''\n }\n}\n\nfunction createSalesPackageWithStatus(pkg: SalesPackage, products: SalesProduct[], addons: SalesAddon[],\n activationStatus: StatusNotificationItem): SalesPackage {\n\n return {\n formattedPrices: pkg.formattedPrices,\n packageId: pkg.packageId,\n name: pkg.name,\n icon: pkg.icon,\n productIds: pkg.productIds,\n products: products || [],\n addonsWithNoParent: addons || [],\n activationStatus: activationStatus || null,\n totalAddons: pkg.totalAddons\n }\n}\n\nfunction createSalesProductWithStatus(product: SalesProduct, addons: SalesAddon[], activationStatus: StatusNotificationItem): SalesProduct {\n return {\n formattedPrices: product.formattedPrices,\n productId: product.productId,\n name: product.name,\n editionId: product.editionId,\n editionName: product.editionName,\n tagline: product.tagline,\n icon: product.icon,\n addons: addons || [],\n activationStatus: activationStatus || null,\n parentInfo: product.parentInfo || null,\n };\n}\n\nfunction createSalesAddonWithStatus(addon: SalesAddon, activationStatus: StatusNotificationItem): SalesAddon {\n return {\n parentId: addon.parentId,\n addonId: addon.addonId,\n name: addon.name,\n tagline: addon.tagline,\n icon: addon.icon,\n parentIcon: addon.parentIcon,\n parentName: addon.parentName,\n multipleActivations: addon.multipleActivations,\n activationStatus: activationStatus || null\n }\n}\n\nexport function addStatusesToSalesPackages(salesPackages: SalesPackage[], statuses: PackageItemActivationStatus[]): SalesPackage[] {\n if (!statuses || statuses.length === 0) {\n return salesPackages;\n }\n\n return salesPackages.map(salesPackage => {\n const newProducts = salesPackage.products.map(product => addStatusesToSalesProduct(product, statuses));\n\n const newAddonsWithNoParent = salesPackage.addonsWithNoParent.map(addon => {\n const status = findStatus(statuses, addon.addonId);\n return addStatusesToSalesAddon(addon, status)\n });\n\n const productStatuses = newProducts\n .map(product => product.activationStatus.status);\n const addonStatuses = newProducts\n .map(product => product.addons ? product.addons.map(addon => addon.activationStatus.status) : [])\n .reduce((statusList, reducedList) => reducedList.concat(statusList), []);\n const addonsWithNoParentStatuses = newAddonsWithNoParent\n .map(addon => addon.activationStatus ? addon.activationStatus.status : null);\n const allStatuses = [...productStatuses, ...addonStatuses, ...addonsWithNoParentStatuses];\n\n const packageStatus = convertNumberToActivationStatus(Math.max(...allStatuses));\n const statusNotification = createStatusNotificationItemForPackage(packageStatus);\n\n return createSalesPackageWithStatus(salesPackage, newProducts, newAddonsWithNoParent, statusNotification);\n });\n}\n\nexport function addStatusesToSalesProduct(product: SalesProduct, statuses: PackageItemActivationStatus[]): SalesProduct {\n if (!statuses || statuses.length === 0) {\n return product;\n }\n const productStatus = findStatus(statuses, product.productId);\n const statusNotification = createStatusNotificationItemForPackageItem(productStatus);\n if (!product.addons) {\n return createSalesProductWithStatus(product, null, statusNotification)\n }\n\n const newSalesAddons = product.addons.map(addon => {\n const addonStatus = findStatus(statuses, addon.addonId);\n return addStatusesToSalesAddon(addon, addonStatus)\n });\n\n return createSalesProductWithStatus(product, newSalesAddons, statusNotification);\n}\n\nfunction addStatusesToSalesAddon(addon: SalesAddon, status: ActivationStatus): SalesAddon {\n const addonStatusNotification = createStatusNotificationItemForPackageItem(status);\n return createSalesAddonWithStatus(addon, addonStatusNotification);\n}\n\nfunction findStatus(statuses: PackageItemActivationStatus[], id: string): ActivationStatus {\n if (!statuses || statuses.length <= 0) {\n return null\n }\n const statusIndex = statuses.findIndex(s => {\n return s.packageItemId === id;\n });\n if (statusIndex < 0) {\n return null;\n }\n const status = statuses[statusIndex].status;\n statuses.splice(statusIndex, 1);\n return status;\n}\n\nfunction createStatusNotificationItemForPackageItem(status: ActivationStatus): StatusNotificationItem {\n switch (status) {\n case ActivationStatus.SUCCESS:\n return {icon: 'check_circle', status: status, text: 'Activated'};\n case ActivationStatus.WARNING:\n return {icon: 'warning', status: status, text: 'Already Activated'};\n default:\n return {icon: 'error', status: status, text: 'Activation Errors'};\n }\n}\n\nfunction createStatusNotificationItemForPackage(status: ActivationStatus): StatusNotificationItem {\n switch (status) {\n case ActivationStatus.SUCCESS:\n return {icon: 'check_circle', status: status, text: 'Activated'};\n case ActivationStatus.WARNING:\n return {icon: 'warning', status: status, text: 'Activation Warnings'};\n default:\n return {icon: 'error', status: status, text: 'Activation Errors Occured'};\n }\n}\n\nfunction convertNumberToActivationStatus(number: Number): ActivationStatus {\n switch (number) {\n case 0:\n return ActivationStatus.SUCCESS;\n case 1:\n return ActivationStatus.WARNING;\n default:\n return ActivationStatus.ERROR;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { ActivationStatus, StatusNotificationItem } from '../sales-package';\n\nexport enum ListIndent {\n INDENT_ZERO = 'indent-zero',\n INDENT_ONE = 'indent-one',\n INDENT_TWO = 'indent-two',\n}\n\n@Component({\n selector: 'va-package-dropdown-item',\n templateUrl: './package-dropdown-item.component.html',\n styleUrls: ['./package-dropdown-item.component.scss', '../package-dropdown.component.scss']\n})\nexport class VaPackageDropdownItemComponent implements OnInit {\n @Input() title: string;\n @Input() titleBadge: string;\n @Input() titleDescriptor: string;\n @Input() iconUrl: string;\n @Input() secondaryIconUrl: string;\n @Input() secondaryIconName: string;\n @Input() subtitle: string;\n @Input() statusItem: StatusNotificationItem;\n @Input() enableDropdown = false;\n @Input() indent = ListIndent.INDENT_ZERO;\n @Input() toggleValue: boolean;\n @Input() description: string;\n @Output() itemToggled: EventEmitter<null> = new EventEmitter<null>();\n\n ngOnInit() {\n }\n\n toggleItem(): void {\n this.itemToggled.emit(null);\n }\n\n isActivatedStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.SUCCESS;\n }\n isWarningStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.WARNING;\n }\n isErrorStatus(status: ActivationStatus): boolean {\n return status === ActivationStatus.ERROR\n }\n\n}\n","import {Component, Input, OnInit} from '@angular/core';\nimport { trigger, transition, animate, style, state } from '@angular/animations';\nimport { Observable, BehaviorSubject, ReplaySubject, combineLatest, zip } from 'rxjs';\nimport {filter, map, startWith, tap} from 'rxjs/operators';\n\nimport { Addon } from '@vendasta/core/marketplace-packages';\nimport {\n SalesPackage,\n SalesProduct,\n buildSalesPackages,\n buildSalesProductFromProduct,\n addStatusesToSalesPackages,\n addStatusesToSalesProduct,\n PackageItemActivationStatus,\n} from './sales-package';\nimport { Product, ProductWithParent } from '../shared/product';\nimport { Package } from '../package-details/package';\nimport { ListIndent } from './package-dropdown-item/package-dropdown-item.component';\n\ninterface OrderLengthsForToggling {\n packages: number;\n products: number;\n}\n\n@Component({\n selector: 'va-package-dropdown',\n animations: [\n trigger('listAnimationStart', [\n state('void', style({ height: '0px' })),\n state('*', style({ height: '*' })),\n transition('void => *', [animate('0.25s ease')]),\n transition('* => void', [animate('0.25s ease')])\n ])\n ],\n templateUrl: 'package-dropdown.component.html',\n styleUrls: ['./package-dropdown.component.scss']\n})\nexport class VaPackageDropdownComponent implements OnInit {\n // packages in dropdown\n @Input()\n set packages(packages: Package[]) {\n this.packages$$.next(packages);\n }\n\n // products within given packages\n @Input()\n set products(products: Product[]) {\n this.products$$.next(products);\n }\n\n // products not associated with a package\n @Input()\n set standAloneProducts(standAloneProducts: Product[]) {\n this.standAloneProducts$$.next(standAloneProducts);\n }\n\n // statuses for all products and addons\n @Input()\n set statuses(statuses: PackageItemActivationStatus[]) {\n this.statuses$$.next(statuses);\n }\n\n // addons within given packages\n @Input()\n set addons(addons: Addon[]) {\n this.addons$$.next(addons);\n }\n\n // controls whether only one dropdown can be expanded at a time\n @Input() singularDropdown = false;\n\n // hides pricing\n @Input() hidePricing = false;\n\n packageProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithoutProductIndent = ListIndent.INDENT_ONE;\n packageAddonWithProductIndent = ListIndent.INDENT_TWO;\n productAddonIndent = ListIndent.INDENT_ONE;\n\n packages$$: ReplaySubject<Package[]> = new ReplaySubject(1);\n products$$: ReplaySubject<Product[]> = new ReplaySubject(1);\n standAloneProducts$$: ReplaySubject<(Product | ProductWithParent) []> = new ReplaySubject(1);\n statuses$$: BehaviorSubject<PackageItemActivationStatus[]> = new BehaviorSubject([]);\n addons$$: ReplaySubject<Addon[]> = new ReplaySubject(1);\n\n orderItemLengths$$ = new BehaviorSubject<OrderLengthsForToggling> (\n <OrderLengthsForToggling> {\n packages: 0,\n products: 0\n }\n );\n\n templateData$: Observable<{ packages: SalesPackage[]; products: SalesProduct[] }>;\n salesPackages$: Observable<SalesPackage[]>;\n salesProducts$: Observable<SalesProduct[]>;\n packageToggles: boolean[] = [];\n productToggles: boolean[] = [];\n\n ngOnInit(): void {\n const packages$: Observable<Package[]> = this.packages$$.pipe(filter(packages => packages !== null));\n const products$: Observable<Product[]> = this.products$$.pipe(filter(products => products !== null));\n const addons$: Observable<Addon[]> = this.addons$$.pipe(filter(addons => addons !== null));\n\n const salesPackage$ = zip(packages$, products$, addons$).pipe(\n tap(([packages, products, _]) => {\n this.orderItemLengths$$.next(\n <OrderLengthsForToggling> {\n packages: packages.length,\n products: products.length\n });\n }),\n map(([packages, products, addons]) => buildSalesPackages(packages, products, addons)),\n );\n\n this.salesPackages$ = combineLatest(salesPackage$, this.statuses$$).pipe(\n map(([salesPackages, statuses]) => addStatusesToSalesPackages(salesPackages, statuses)),\n startWith([]),\n );\n\n this.salesProducts$ = combineLatest(this.standAloneProducts$$, this.statuses$$).pipe(\n filter(([products, _]) => products !== null),\n map(([products, statuses]: [(Product | ProductWithParent)[], PackageItemActivationStatus[]]): SalesProduct[] => {\n return products.map(p => {\n const addons = p.addons || null;\n const salesProducts = buildSalesProductFromProduct(p, addons);\n return addStatusesToSalesProduct(salesProducts, statuses);\n });\n }),\n startWith([]),\n );\n this.templateData$ = combineLatest(this.salesPackages$, this.salesProducts$).pipe(\n map(([packages, products]) => ({packages: packages, products: products}))\n )\n }\n\n public openAllDropdowns() {\n for (let x = 0; x < this.orderItemLengths$$.getValue().packages; x++) {\n this.packageToggles[x] = true;\n }\n for (let x = 0; x < this.orderItemLengths$$.getValue().products; x++) {\n this.productToggles[x] = true;\n }\n }\n\n public togglePackage(indexToToggle: number): void {\n if (this.singularDropdown) {\n const openedIndex = this.packageToggles.findIndex(value => value === true);\n if (openedIndex !== indexToToggle) {\n this.packageToggles[openedIndex] = false;\n }\n const productOpenedIndex = this.productToggles.findIndex(value => value === true);\n if (productOpenedIndex > -1) {\n this.productToggles[productOpenedIndex] = false;\n }\n }\n this.packageToggles[indexToToggle] = !this.packageToggles[indexToToggle];\n }\n\n public toggleProduct(indexToToggle: number): void {\n if (this.singularDropdown) {\n const openedIndex = this.productToggles.findIndex(value => value === true);\n if (openedIndex !== indexToToggle) {\n this.productToggles[openedIndex] = false;\n }\n const packageOpenedIndex = this.packageToggles.findIndex(value => value === true);\n if (packageOpenedIndex > -1) {\n this.packageToggles[packageOpenedIndex] = false;\n }\n }\n this.productToggles[indexToToggle] = !this.productToggles[indexToToggle];\n }\n\n public standAloneProductDescription(product: SalesProduct): string {\n if (product.addons && product.addons.length > 0) {\n let description = `Contains ${product.addons.length}`;\n description = product.addons.length === 1 ? `${description} Addon` : `${description} Addons`;\n return description;\n }\n return '';\n }\n\n public standAloneProductWithParentDescription(product: SalesProduct): string {\n if (!product.parentInfo) {\n return '';\n }\n\n return `(Requires ${product.parentInfo.parentName})`\n }\n\n public packageDescription(pkg: SalesPackage): string {\n const hasProducts = pkg.products && pkg.products.length > 0;\n if (!hasProducts && pkg.totalAddons === 0) {\n return 'No Items in Package';\n }\n\n let description = '';\n const hasOneProduct = pkg.products && pkg.products.length === 1;\n if (hasProducts || pkg.totalAddons > 0) {\n description = 'Contains ';\n }\n if (hasProducts) {\n description = `${description} ${pkg.products.length}`;\n description = hasOneProduct ? `${description} Product` : `${description} Products`;\n }\n if (hasProducts && pkg.totalAddons > 0) {\n description = `${description} & ${pkg.totalAddons}`;\n description = pkg.totalAddons === 1 ? `${description} Addon` : `${description} Addons`;\n }\n return description;\n }\n}\n","import { Inject, NgModule, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule, MatButtonModule, MatListModule, MatIconModule } from '@angular/material';\n\nimport { VaIconModule, VaBadgeModule } from '@vendasta/uikit';\nimport { VaPackageDropdownComponent } from './package-dropdown.component';\nimport { VaPackageDropdownItemComponent } from './package-dropdown-item/package-dropdown-item.component';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { En } from '../assets/i18n/en';\nimport { Cs } from '../assets/i18n/cs';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatListModule,\n MatIconModule,\n VaIconModule,\n VaBadgeModule,\n TranslateModule.forChild()\n ],\n declarations: [VaPackageDropdownComponent, VaPackageDropdownItemComponent],\n exports: [VaPackageDropdownComponent],\n entryComponents: [VaPackageDropdownComponent]\n})\nexport class VaPackageDropdownModule {\n constructor(private translateService: TranslateService,\n @Optional() @Inject('CURRENT_LANG') currentLang$: Observable<string>,\n @Optional() @Inject('DEFAULT_LANG') defaultLang$: Observable<string>) {\n if (!this.translateService.translations.hasOwnProperty('en')) {\n this.translateService.reloadLang('en');\n }\n if (!this.translateService.translations.hasOwnProperty('cs')) {\n this.translateService.reloadLang('cs');\n }\n this.translateService.setTranslation('en', En.en, true);\n this.translateService.setTranslation('cs', Cs.cs, true);\n if (currentLang$) { currentLang$.subscribe(currentLang => translateService.use(currentLang)); }\n if (defaultLang$) { defaultLang$.subscribe(defaultLang => translateService.setDefaultLang(defaultLang)); }\n }\n}\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {Product} from '../shared/product';\nimport {Price, CONTACT_SALES} from '../pricing/pricing';\nimport {Addon} from '@vendasta/core/shared';\nimport {BilledProduct} from '@vendasta/core/billing';\n\n@Component({\n selector: 'va-product-details',\n templateUrl: 'product-details.component.html',\n styleUrls: ['./product-details.component.scss']\n})\n\nexport class VaProductDetailsComponent {\n @Input() product: Product;\n @Input() billedProduct: BilledProduct;\n @Input() hasVerifiedContract = false;\n @Input() canAccessContractPricing = false;\n @Input() showActionButton = false;\n @Input() showPricing = false;\n @Input() primaryPricingActionLabel: string;\n @Input() pricingActionLabel: string;\n @Input() showPricingAction = false;\n @Input() loaded = true;\n @Input() partnerID: string;\n\n @Output() enableClicked = new EventEmitter();\n @Output() addonSelected = new EventEmitter<string>();\n @Output() primaryPricingActionSelected = new EventEmitter();\n @Output() pricingActionSelected = new EventEmitter();\n private _addons: Addon[];\n\n getAddons(): Addon[] {\n if (!this._addons) {\n this._addons = this.product.addons.map((addon) => Addon.fromApi(addon))\n }\n return this._addons;\n }\n\n getActionLabel(): string {\n if (this.product.isArchived) {\n return 'Enable';\n }\n return 'Enabled';\n }\n\n get price() {\n // NOTE: wholesalePrice = 0 means free, wholesalePrice = null || -1 means \"contact sales\"\n let prices: Price[] = [];\n if (this.product.wholesalePrice !== CONTACT_SALES && this.product.wholesalePrice != null) {\n prices = [{\n price: this.product.wholesalePrice,\n frequency: this.product.billingFrequency\n }]\n }\n return {\n currency: this.product.currency,\n prices: prices\n }\n }\n\n onAddonSelected(addonId: string): void {\n this.addonSelected.emit(addonId);\n }\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {VaImageGalleryModule, VaIconModule, VaSafeHtmlModule} from '@vendasta/uikit';\nimport {VaPricingModule} from '../pricing/pricing.module';\nimport {VaFilesModule} from '../files/files.module';\nimport {VaFaqsModule} from '../faqs/faqs.module';\nimport {VaSellingInfoModule} from '../selling-info/selling-info.module';\nimport {VaProductDetailsComponent} from './product-details.component';\nimport {VaHeaderContainerModule} from '../header-container/header-container.module';\nimport {VaAddonListModule} from '../addon-list/addon-list.module';\nimport {RestrictionsModule} from '../restrictions/restrictions.module';\n\n@NgModule({\n imports: [\n VaImageGalleryModule,\n CommonModule,\n VaIconModule,\n VaPricingModule, VaFilesModule, VaFaqsModule, VaSellingInfoModule,\n VaHeaderContainerModule, VaSafeHtmlModule, VaAddonListModule, RestrictionsModule],\n declarations: [VaProductDetailsComponent],\n exports: [VaProductDetailsComponent],\n entryComponents: [VaProductDetailsComponent]\n})\nexport class VaProductDetailsModule {}\n","import { OrderForm, Restrictions, TrialConfiguration, Integration } from '@vendasta/core/marketplace-apps';\n\nexport class ResellerItem {\n appId?: string;\n addonId?: string;\n name?: string;\n icon?: string;\n tagline?: string;\n headerImage?: string;\n currency?: string;\n price?: number;\n billingFrequency?: string;\n lmiCategories?: string[];\n enabled: boolean;\n isCustom: boolean;\n orderForm?: OrderForm;\n quantity = 1;\n allowMultipleActivations: boolean;\n usesCustomizationForm: boolean;\n usesActivationSpecificEntryUrl: boolean;\n entryUrl: string;\n restrictions?: Restrictions;\n activationRequiresApproval?: boolean;\n billingId?: string;\n usesEditions: boolean;\n editionIds: string[];\n suggestedRetailPrice: number; // price is in cents\n editionId?: string;\n trialConfiguration?: TrialConfiguration;\n integration?: Integration;\n\n constructor(data?: any) {\n data = data || {};\n Object.assign(this, data);\n }\n}\n","import {ControlType, FieldBase} from './field-base';\n\nexport class CheckboxField extends FieldBase<boolean> {\n readonly controlType: ControlType = 'checkbox';\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\nimport {Option as InputOption} from '@vendasta/forms'\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport interface Option {\n value: string,\n label: string,\n disabled?: boolean\n}\n\nexport interface DropDownFieldOptions extends FieldBaseOptions {\n options: Option[] | InputOption[] | string[];\n allowMultiples?: boolean;\n allowDuplicates?: boolean;\n maxChoices?: number;\n}\n\nexport class DropdownField extends FieldBase<string | string[]> {\n readonly controlType: ControlType = 'dropdown';\n options: Option[] | InputOption[];\n allowMultiples: boolean;\n allowDuplicates: boolean;\n maxChoices: number;\n\n constructor(options: DropDownFieldOptions) {\n super(options);\n this.options = [];\n if (!!options.options && options.options.length > 0) {\n // Because this typeof guard is on the element and not the array as a whole typescript doesn't recognize it as a valid type assertion\n // The ts-ignore's are required because of this\n if (typeof options.options[0] === 'string') {\n if (options.allowMultiples) {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o, name: o}));\n } else {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o, label: o}));\n }\n } else {\n if (options.allowMultiples) {\n // @ts-ignore\n this.options = options.options.map((o: string) => ({value: o.value, name: o.label}));\n } else {\n // @ts-ignore\n this.options = options.options;\n }\n }\n }\n\n this.allowMultiples = !!options.allowMultiples;\n this.allowDuplicates = !!options.allowDuplicates;\n this.maxChoices = options.maxChoices ? options.maxChoices : 1;\n\n this.validator = this.validatorBuilder();\n }\n\n protected validatorBuilder(): ValidatorFn {\n const maxChoices = this.maxChoices;\n return (control: AbstractControl): { [key: string]: any } => {\n if (Array.isArray(control.value) && maxChoices && control.value.length > maxChoices) {\n return {overMaxChoices: true}\n }\n }\n }\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\nconst DEFAULT_NUM_FILES = 5;\n\nexport type FileType = 'image';\n\nexport interface FileUploadGroupFieldOptions extends FieldBaseOptions {\n fileType: FileType;\n uploadUrl: string;\n numFiles: number;\n}\n\nexport class FileUploadGroupField extends FieldBase<string[]> {\n readonly controlType: ControlType = 'file';\n fileType: FileType;\n uploadUrl: string;\n numFiles: number;\n\n constructor(options: FileUploadGroupFieldOptions) {\n super(options);\n if (!options.uploadUrl) {\n throw new Error('uploadUrl is required.');\n }\n this.fileType = options.fileType || 'image';\n this.numFiles = options.numFiles || DEFAULT_NUM_FILES;\n this.uploadUrl = options.uploadUrl;\n this.value = [];\n }\n}\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\n\nexport class TextareaField extends FieldBase<string> { controlType: ControlType = 'textarea'; }\n","import {ControlType, FieldBase, FieldBaseOptions} from './field-base';\n\nexport type TextboxType = 'text';\n\nexport interface TextBoxFieldOptions extends FieldBaseOptions {\n textboxType: TextboxType;\n prefix?: string;\n suffix?: string;\n displayOnly?: boolean;\n}\n\nexport class TextboxField extends FieldBase<string> {\n readonly controlType: ControlType = 'textbox';\n textboxType: TextboxType;\n prefix: string;\n suffix: string;\n regexValidator: string;\n regexErrorMessage: string;\n displayOnly: boolean;\n\n constructor(options: TextBoxFieldOptions) {\n super(options);\n this.textboxType = options.textboxType || 'text';\n this.prefix = options.prefix || '';\n this.suffix = options.suffix || '';\n this.regexValidator = options.regexValidator || '';\n this.regexErrorMessage = options.regexErrorMessage || '';\n this.displayOnly = options.displayOnly || false;\n }\n}\n","import {ControlType, FieldBaseOptions} from './field-base';\nimport {DropdownField, Option} from './field-dropdown';\n\nexport interface User {\n userId: string,\n email: string,\n firstName?: string,\n lastName?: string,\n}\n\nexport interface VBCUserFieldOptions extends FieldBaseOptions { users: User[]; }\n\nexport class VBCUserField extends DropdownField {\n readonly controlType: ControlType = 'vbcuser';\n\n constructor(options: VBCUserFieldOptions) {\n super({\n id: options.id,\n label: options.label,\n required: options.required,\n description: options.description,\n options: getOptions(options.users),\n disabled: options.disabled,\n forOfficeUseOnly: options.forOfficeUseOnly\n });\n }\n}\n\nfunction getOptions(vbcUsers: User[]): Option[] {\n if (vbcUsers && vbcUsers.length > 0) {\n vbcUsers.sort(compareUsersByEmail);\n return vbcUsers.map(user => {\n const labelString = createLabelString(user.firstName, user.lastName, user.email);\n\n if (user.userId && user.email && user.firstName && user.lastName) {\n return {\n label: labelString,\n value: JSON.stringify({firstName: user.firstName, lastName: user.lastName, email: user.email, id: user.userId})\n };\n }\n return {label: labelString, value: '', disabled: true};\n });\n }\n return [{label: 'No Users — Please add one to this account', value: '', disabled: true}];\n}\n\nfunction compareUsersByEmail(a: User, b: User): number {\n if (a == null) {\n return -1;\n }\n if (b == null) {\n return 1;\n }\n return a.email.localeCompare(b.email);\n}\n\nfunction createLabelString(firstName: string, lastName: string, email: string): string {\n let returnString = '';\n returnString += firstName ? firstName + ' ' : '';\n returnString += lastName ? lastName + ' ' : '';\n returnString += email ? `(${email})` : '';\n return returnString;\n}\n"],"names":["tslib_1.__extends","tslib_1.__values","MatProgressSpinnerModule","MatListModule","observableMerge","ProtoPricing","ProtoCurrency"],"mappings":"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"}
\No newline at end of file