UNPKG

183 kBJavaScriptView Raw
1!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/common"),require("@angular/core"),require("@angular/material"),require("@vendasta/core/image-transformation"),require("@vendasta/uikit"),require("@vendasta/core/shared"),require("rxjs"),require("@ngx-translate/core"),require("rxjs/operators"),require("@angular/forms"),require("@angular/material/list"),require("@vendasta/forms"),require("@vendasta/core/billing"),require("@vendasta/sales-orders"),require("uuid/v4"),require("@angular/material/progress-spinner"),require("util"),require("@vendasta/core/marketplace-packages"),require("@angular/animations")):"function"==typeof define&&define.amd?define("@vendasta/store",["exports","@angular/common","@angular/core","@angular/material","@vendasta/core/image-transformation","@vendasta/uikit","@vendasta/core/shared","rxjs","@ngx-translate/core","rxjs/operators","@angular/forms","@angular/material/list","@vendasta/forms","@vendasta/core/billing","@vendasta/sales-orders","uuid/v4","@angular/material/progress-spinner","util","@vendasta/core/marketplace-packages","@angular/animations"],t):t(((e=e||self).vendasta=e.vendasta||{},e.vendasta.store={}),e.ng.common,e.ng.core,e.ng.material,e.imageTransformation,e.vendasta.uikit,e.shared,e.rxjs,e.core$1,e.rxjs.operators,e.ng.forms,e.ng.material.list,e.vendasta.forms,e.billing,e.salesOrders,e.uuid,e.ng.material["progress-spinner"],e.util,e.marketplacePackages,e.ng.animations)}(this,(function(e,t,n,i,r,o,a,s,l,c,d,p,u,m,g,f,h,b,v,y){"use strict";f=f&&f.hasOwnProperty("default")?f.default:f;
2/*! *****************************************************************************
3 Copyright (c) Microsoft Corporation. All rights reserved.
4 Licensed under the Apache License, Version 2.0 (the "License"); you may not use
5 this file except in compliance with the License. You may obtain a copy of the
6 License at http://www.apache.org/licenses/LICENSE-2.0
7
8 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
9 KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
10 WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
11 MERCHANTABLITY OR NON-INFRINGEMENT.
12
13 See the Apache Version 2.0 License for specific language governing permissions
14 and limitations under the License.
15 ***************************************************************************** */
16var x=function(e,t){return(x=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function w(e,t){function n(){this.constructor=e}x(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var I=function(){return(I=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function k(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function S(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)a.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return a}function C(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(S(arguments[t]));return e}var F=function(){function e(e,t){var n=this;this.translateService=e,this.displayPriceService=t,this.pricing=null,this.wrapFrequency=!1,this.isAddon=!1,this.hasVerifiedContract=!1,this.highlightPrice=!0,this.loaded=!0,this.pricing$$=new s.BehaviorSubject(null),this.billedProduct$$=new s.BehaviorSubject(null),this.hasVerifiedContract$$=new s.BehaviorSubject(!1),this.isFree$=s.combineLatest([this.pricing$,this.billedProduct$,this.hasVerifiedContract$]).pipe(c.map((function(e){var t=S(e,3),n=t[0],i=t[1],r=function(e){return!!e&&e.some((function(e){return 0===e.price||void 0===e.price}))};return t[2]&&i?1===i.pricingTiers.length&&r(i.pricingTiers):!!n&&r(n.prices)}))),this.shouldContactSales$=s.combineLatest([this.pricing$,this.billedProduct$,this.hasVerifiedContract$]).pipe(c.map((function(e){var t=S(e,3),n=t[0],i=t[1],r=function(e){return!(e&&e.length>0)||e.some((function(e){return null===e.price||e.price<0}))};return t[2]&&i?r(i.pricingTiers):!n||r(n.prices)}))),this.isFlatPrice$=this.billedProduct$.pipe(c.map((function(e){return 1===e.pricingTiers.length}))),this.pricingTierData$=this.billedProduct$.pipe(c.switchMap((function(e){var t=e.pricingTiers.map((function(t){return s.combineLatest(s.of(t.isStartingPrice),n.buildPricingTierString(t),n.buildPricingTierForProduct(t,e.billingFrequency),n.buildPricingTierForAddon(t),n.buildPriceStringForTier(t,e.billingFrequency,t.isStartingPrice),n.buildPriceStringForTier(t)).pipe(c.map((function(e){var t=S(e,6);return{isStartingPrice:t[0],pricingTierString:t[1],pricingTierForProduct:t[2],pricingTierForAddon:t[3],priceStringForTier:t[4],priceStringForTierWithoutFreq:t[5]}})))}));return s.combineLatest.apply(void 0,C(t))}))),this.priceData$=this.pricing$.pipe(c.switchMap((function(e){var t=e.prices.map((function(t){return s.combineLatest(s.of(t.isStartingPrice),n.buildPriceStringForPricing(t,e.currency,!0,!1),n.buildPriceStringForPricing(t,e.currency,!1,!0),n.buildFrequencyString(t.frequency)).pipe(c.map((function(e){var t=S(e,4);return{isStartingPrice:t[0],priceStringForPricingWithoutFrequency:t[1],priceStringForPricingWithFrequency:t[2],frequencyString:t[3]}})))}));return s.combineLatest.apply(void 0,C(t))}))),this.commitmentMessage$=this.buildCommitmentMessage()}return Object.defineProperty(e.prototype,"pricing$",{get:function(){return this.pricing$$.asObservable()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"billedProduct$",{get:function(){return this.billedProduct$$.asObservable()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasVerifiedContract$",{get:function(){return this.hasVerifiedContract$$.asObservable()},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(e){e.hasOwnProperty("pricing")&&this.pricing$$.next(e.pricing.currentValue),e.hasOwnProperty("billedProduct")&&this.billedProduct$$.next(e.billedProduct.currentValue),e.hasOwnProperty("hasVerifiedContract")&&this.hasVerifiedContract$$.next(e.hasVerifiedContract.currentValue)},e.prototype.buildPricingTierString=function(e){var t=String(e.rangeMax);return-1===e.rangeMax&&(t="∞",0===e.rangeMin||1===e.rangeMin)?s.of(""):this.translateService.stream("FRONTEND.STORE.MIN_TO_MAX",{minRange:String(e.rangeMin),maxRange:t})},e.prototype.buildPricingTierForProduct=function(e,t){var n=this;return s.combineLatest(this.buildPricingTierString(e),this.buildFrequencyString(t)).pipe(c.switchMap((function(e){var t=S(e,2),i=t[0],r=t[1];return i?n.translateService.stream("FRONTEND.STORE.PRODUCT_PRICING_WITH_FREQUENCY",{pricingTier:i,frequency:r}):s.of(r)})))},e.prototype.buildPricingTierForAddon=function(e){return this.buildPricingTierString(e).pipe(c.map((function(e){return e||""})))},e.prototype.buildPriceStringForPricing=function(e,t,n,i){return this.displayPriceService.formatDisplayPrice(e.price,t,n?"":e.frequency,!0,!0,!0,e.isStartingPrice&&i)},e.prototype.buildPriceStringForTier=function(e,t,n){return this.displayPriceService.formatDisplayPrice(e.price,this.billedProduct.currency,t,void 0,void 0,void 0,n)},e.prototype.buildFrequencyString=function(e){return this.displayPriceService.formatBillingFrequency(e)},e.prototype.buildCommitmentMessage=function(){var e=this;return s.combineLatest([this.translateService.stream("FRONTEND.STORE.PRICING_FREQUENCIES"),this.billedProduct$,this.pricing$,this.isFree$,this.shouldContactSales$]).pipe(c.switchMap((function(t){var n=S(t,5),i=n[0],r=n[1],o=n[2],a=n[3],l=n[4],c=r?r.billingFrequency.toString().toLowerCase():o&&o.prices.length>0?o.prices[0].frequency.toLowerCase():"",d="";if("yearly"===c?d=i.YEAR:"monthly"===c&&(d=i.MONTH),!d||a||l)return s.of("");if(r&&r.commitment){var p=r.commitment.initial,u=r.commitment.recurring;return e.translateService.stream("FRONTEND.STORE.COMMITMENT_WITH_RENEWAL",{initial:p,frequencyString:d,recurring:u})}return s.of("")})))},e.decorators=[{type:n.Component,args:[{selector:"va-pricing",template:'<ng-container *ngIf="highlightPrice">\n <highlight-pricing [pricing]="pricing"\n [billedProduct]="billedProduct"\n [highlightPrice]="highlightPrice"\n [isAddon]="isAddon"\n [hasVerifiedContract]="hasVerifiedContract"\n [wrapFrequency]="wrapFrequency"\n [loaded]="loaded">\n </highlight-pricing>\n</ng-container>\n<ng-container *ngIf="!highlightPrice">\n <table-pricing [pricing]="pricing"\n [highlightPrice]="highlightPrice"\n [billedProduct]="billedProduct"\n [hasVerifiedContract]="hasVerifiedContract"\n [loaded]="loaded">\n </table-pricing>\n</ng-container>\n',styles:[""]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:a.DisplayPriceService}]},e.propDecorators={pricing:[{type:n.Input}],billedProduct:[{type:n.Input}],wrapFrequency:[{type:n.Input}],isAddon:[{type:n.Input}],hasVerifiedContract:[{type:n.Input}],highlightPrice:[{type:n.Input}],loaded:[{type:n.Input}]},e}();var P=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t.decorators=[{type:n.Component,args:[{selector:"highlight-pricing",template:'<ng-container *ngIf="loaded; else loading">\n <div class="no-price" *ngIf="shouldContactSales$ | async; else dontContactSales">\n {{ \'FRONTEND.STORE.CONTACT_SALES\' | translate }}\n </div>\n <ng-template #dontContactSales>\n <div class="no-price" *ngIf="isFree$ | async; else notFree">\n <b>{{ \'FRONTEND.STORE.FREE\' | translate }}</b>\n </div>\n <ng-template #notFree>\n <ng-container *ngIf="!isAddon">\n <ng-container *ngIf="hasVerifiedContract && billedProduct; else usePricing">\n <div *ngFor="let tier of pricingTierData$ | async" class="price-box">\n <span>\n <span *ngIf="tier.isStartingPrice" class="starting-at">{{ \'FRONTEND.STORE.STARTING_AT\' | translate }}</span>\n <b class="price-number">{{ tier.priceStringForTierWithoutFreq }}</b>\n </span>\n <span class="tier-billing-freq" [ngClass]="{\'va-wrap\': wrapFrequency}">\n {{ tier.pricingTierForProduct }}\n </span>\n </div>\n </ng-container>\n <ng-template #usePricing>\n <ng-container *ngIf="pricing?.prices">\n <div *ngFor="let price of priceData$ | async; let i = index" class="price-box">\n <span>\n <span *ngIf="price.isStartingPrice" class="starting-at">{{ \'FRONTEND.STORE.STARTING_AT\' | translate }}</span>\n <b class="price-number">\n <ng-container *ngIf="i == 1">+</ng-container>\n {{ price.priceStringForPricingWithoutFrequency }}\n </b>\n </span>\n <span *ngIf="price.frequencyString" class="billing-freq" [ngClass]="{\'va-wrap\': wrapFrequency}">\n {{ price.frequencyString }}\n </span>\n </div>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-container *ngIf="isAddon">\n <div *ngIf="hasVerifiedContract && billedProduct; else useAddonPricing">\n <div *ngFor="let tier of pricingTierData$ | async" class="price-box">\n <span class="addon-billing-freq">\n {{ tier.pricingTierForAddon }}\n </span>\n <span>\n <span *ngIf="tier.isStartingPrice" class="starting-at">{{ \'FRONTEND.STORE.STARTING_AT\' | translate }}</span>\n <b class="price-number">\n {{ tier.priceStringForTier }}\n </b>\n </span>\n </div>\n </div>\n <ng-template #useAddonPricing>\n <div class="price-box">\n <span *ngIf="pricing?.prices[0].frequency" class="addon-billing-freq">\n {{ (priceData$ | async)[0]?.frequencyString }}\n </span>\n <span>\n <span *ngIf="pricing?.prices[0]?.isStartingPrice" class="starting-at">\n {{ \'FRONTEND.STORE.STARTING_AT\' | translate }}\n </span>\n <b class="price-number">\n {{ (priceData$ | async)[0]?.priceStringForPricingWithoutFrequency }}\n </b>\n </span>\n </div>\n </ng-template>\n </ng-container>\n <div class="commitment" *ngIf="billedProduct && billedProduct.commitment && billedProduct.commitment.initial > 1">\n {{ commitmentMessage$ | async }}\n </div>\n </ng-template>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class="stencil-pricing stencil-shimmer"></div>\n</ng-template>\n',styles:[":host{color:#9e9e9e}.starting-at{margin-right:5px}.price-box{display:-webkit-box;display:flex;-webkit-box-align:baseline;align-items:baseline;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;flex-direction:row-reverse}.no-price{text-align:center}b{color:#212121;font-size:20px}@media screen and (max-width:600px){.no-price,.price-box,b{font-size:16px}}.billing-freq{text-transform:capitalize;-webkit-box-flex:1;flex:1}.tier-billing-freq{-webkit-box-flex:1;flex:1}.addon-billing-freq{padding-left:5px}.va-wrap{display:block}.stencil-pricing{height:1em}.commitment{color:#9e9e9e;font-size:12px;font-style:italic}"]}]}],t}(F),T=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t.decorators=[{type:n.Component,args:[{selector:"table-pricing",template:'<ng-container *ngIf="loaded; else loading">\n <div *ngIf="hasVerifiedContract && billedProduct; else usePricing">\n <div class="price-container" *ngIf="isFlatPrice$ | async; else notFlatPrice">\n <div class="price">\n {{ (pricingTierData$ | async)[0]?.priceStringForTier }}\n </div>\n </div>\n <ng-template #notFlatPrice>\n <div class="price-container--tiered" *ngIf="!(isFlatPrice$ | async)">\n <div class="pricing-tier" *ngFor="let tier of pricingTierData$ | async">\n <div class="pricing-tier__range">{{ tier.pricingTierString }}</div>\n <div class="pricing-tier__price">\n {{ tier.priceStringForTier }}\n </div>\n </div>\n </div>\n </ng-template>\n <div class="commitment" *ngIf="billedProduct && billedProduct.commitment && billedProduct.commitment.initial > 1">\n {{ commitmentMessage$ | async }}\n </div>\n </div>\n <ng-template #usePricing>\n <div class="gray-font">\n <ng-container *ngIf="shouldContactSales$ | async; else dontContactSales">\n {{ \'FRONTEND.STORE.CONTACT_SALES\' | translate }}\n </ng-container>\n <ng-template #dontContactSales>\n <ng-container *ngIf="isFree$ | async; else notFree">\n {{ \'FRONTEND.STORE.FREE\' | translate }}\n </ng-container>\n <ng-template #notFree>\n {{ (priceData$ | async)[0].priceStringForPricingWithFrequency }}\n <div class="commitment" *ngIf="billedProduct && billedProduct.commitment && billedProduct.commitment.initial > 1">\n {{ commitmentMessage$ | async }}\n </div>\n </ng-template>\n </ng-template>\n </div>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class="stencil-pricing stencil-shimmer"></div>\n</ng-template>\n',styles:[":host{color:#616161}.price-container--tiered{font-size:12px;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;display:-webkit-box;display:flex;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.price-container--tiered .pricing-tier{border-bottom:1px solid #e0e0e0;padding:5px 0;display:-webkit-box;display:flex}.price-container--tiered .pricing-tier:first-child{padding-top:0}.price-container--tiered .pricing-tier:last-child{padding-bottom:0;border-bottom:none}.price-container--tiered .pricing-tier .pricing-tier__range{padding-right:20px;-webkit-box-flex:1;flex:1}.stencil-pricing{height:1em}.commitment{color:#9e9e9e;font-size:12px;font-style:italic}"]}]}],t}(F),O=function(){function e(){}return e.en={"FRONTEND.STORE":{TOTAL:"Total",CONTACT_SALES:"Contact Sales",FREE:"Free",STARTING_AT:"Starting at",ENABLED_UPPER:"ENABLED",ENABLE_UPPER:"ENABLE",MIN_TO_MAX:"{{minRange}} to {{maxRange}}",PRODUCT_PRICING_WITH_FREQUENCY:"{{pricingTier}} accounts {{frequency}}",COMMITMENT_WITH_RENEWAL:"*{{initial}} {{frequencyString}} minimum, renews for {{recurring}} {{frequencyString}} periods",COMMITMENT:"${{initial}} ${{frequencyString}} commitment",PRICING_FREQUENCIES:{MONTH:"month",YEAR:"year"},REQUIRES_DESCRIPTOR:"(Requires {{requirementName}})",ADMINISTRATIVE_QUESTIONS:"Administrative Questions",AUTO_TITLE_TEXT:{SOME_FIELDS_INVALID:"* Some fields are invalid and/or required but empty",OPTIONAL_FIELDS_UNANSWERED:"Optional fields unanswered",COMPLETE:"Complete"},REQUIRES:"Requires",ENABLED_WITH_PREREQUISITE:"Enabled with {{prerequisite}}",PRICE_APPLIES_PER_UNIT:"Price applies per unit within a range",PRICE_APPLIES_TO_ALL_UNITS:"Price applies to all units once range is met",PRICING:"Pricing",FAQS:"FAQs",GALLERY:"Gallery",FILES:"Files",GET_IT_NOW:"Get It Now",CONTAINS_NUM_ITEMS:"Contains {{itemCount}} items"}},e}();var E=function(){function e(){}return e.cs={"FRONTEND.STORE":{TOTAL:"Celkem",CONTACT_SALES:"Kontaktovat obchodního zástupce",FREE:"Zdarma",STARTING_AT:"Začíná na",ENABLED_UPPER:"POVOLENO",ENABLE_UPPER:"POVOLIT",MIN_TO_MAX:"{{minRange}} až {{maxRange}}",PRODUCT_PRICING_WITH_FREQUENCY:"{{pricingTier}} účtů za {{frequency}}",COMMITMENT_WITH_RENEWAL:"*{{initial}} {{frequencyString}} minimum, obnovuje se na {{recurring}} {{frequencyString}}",COMMITMENT:"Závazek {{initial}} {{frequencyString}}",PRICING_FREQUENCIES:{MONTH:"měsíč",YEAR:"rok"},REQUIRES_DESCRIPTOR:"(Vyžaduje {{requirementName}})",ADMINISTRATIVE_QUESTIONS:"Administrativní otázky",AUTO_TITLE_TEXT:{SOME_FIELDS_INVALID:"* Některá pole jsou neplatná a/nebo povinná, ale prázdná",OPTIONAL_FIELDS_UNANSWERED:"Volitelná pole nezodpovězena",COMPLETE:"Kompletní"},REQUIRES:"Vyžaduje",ENABLED_WITH_PREREQUISITE:"Povoleno s {{prerequisite}}",PRICE_APPLIES_PER_UNIT:"Cena platí za jednotku v rozsahu",PRICE_APPLIES_TO_ALL_UNITS:"Cena se vztahuje na všechny jednotky, jakmile je dosaženo rozsahu",PRICING:"Cena",FAQS:"FAQ",GALLERY:"Galerie",FILES:"Soubory",GET_IT_NOW:"Získat hned",CONTAINS_NUM_ITEMS:"Obsahuje {{itemCount}} položek"}},e}();var N=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,a.CoreSharedModule,l.TranslateModule.forChild()],declarations:[F,P,T],exports:[F]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var A=function(){function e(e){this.imageTransformationService=e,this.purchasedClicked=new n.EventEmitter,this.cardClicked=new n.EventEmitter,this.descriptionClicked=new n.EventEmitter,this.bannerClicked=new n.EventEmitter}return e.prototype.getBannerColorForName=function(){var e=["#EF5350","#42A5F5","#66BB6A","#FFA726","#AB47BC","#FFCA28","#EC407A","#26C6DA","#FF7B57"],t=0;if(!this.item.name)return"#808080";for(var n=0;n<this.item.name.length;n++)t+=this.item.name[n].charCodeAt(0);return e[t%e.length]},e.prototype.getSrcsetHeaderUrls=function(e){return this.imageTransformationService.getSrcSetForImage(e,[680,1360,2720])},e.decorators=[{type:n.Component,args:[{selector:"va-store-card",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 ',styles:[":host{position:relative}::ng-deep .mat-card-header-text{width:100%}mat-card.hover-card{overflow:hidden;padding:0;margin-bottom:0}mat-card.hover-card mat-card-subtitle,mat-card.hover-card mat-card-title{margin:0 80px 0 0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}mat-card.hover-card mat-card-subtitle{font-size:12px;margin-top:4px}.hover-area{position:relative;cursor:pointer}.product-banner{max-height:133px;overflow:hidden;display:-webkit-box;display:flex;width:100%;height:100px;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center}.product-banner img{max-width:100%}@media screen and (min-width:480px){.hover-area{padding-top:55%}.hover-area:hover .description{top:0}.hover-area:hover .enabled-indicator span{width:70px}.product-banner{max-height:none;position:absolute;height:60%;top:0}}.description{box-sizing:border-box;padding:10px 16px 0;overflow:hidden;background:#fff;color:#212121;-webkit-transition:.3s;transition:.3s}.description:after{content:'';display:block;width:100%;height:40%;position:absolute;bottom:0;left:0;background:-webkit-gradient(linear,left top,left bottom,color-stop(40%,rgba(255,255,255,0)),color-stop(70%,#fff));background:linear-gradient(rgba(255,255,255,0) 40%,#fff 70%)}mat-card-header{box-sizing:border-box;padding-bottom:16px;margin:0;height:40%;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}mat-card-content{min-height:40px;max-height:80px;padding:16px;margin:0 -16px;border-top:1px solid #e0e0e0;font-size:12px}.enabled-indicator{position:absolute;right:8px;bottom:8px}.enabled-indicator span{display:inline-block;width:70px;overflow:hidden;-webkit-transition:.3s;transition:.3s}@media screen and (min-width:480px){.description{position:absolute;top:60%;width:100%;height:100%}.description:after{height:70%}mat-card-content{min-height:0;max-height:none}.enabled-indicator span{width:0}}button[mat-button]{padding:0 8px;min-width:0}mat-card-actions{position:relative;padding:8px!important;margin:0!important;text-align:right;border-top:1px solid #e0e0e0;background-color:#fff;color:#212121}.status{font-size:14px}.img-container{height:100%;width:100%}"]}]}],e.ctorParameters=function(){return[{type:r.ImageTransformationService}]},e.propDecorators={item:[{type:n.Input}],purchasedClicked:[{type:n.Output}],cardClicked:[{type:n.Output}],descriptionClicked:[{type:n.Output}],bannerClicked:[{type:n.Output}]},e}();var M=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,o.VaIconModule,i.MatCardModule,i.MatButtonModule,i.MatIconModule,i.MatMenuModule,r.ImageTransformationModule,N,l.TranslateModule.forChild()],declarations:[A],exports:[A]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var _=function(){function e(){this.items=[],this.searchable=!0,this.itemClicked=new n.EventEmitter}return Object.defineProperty(e.prototype,"filteredItems",{get:function(){var e=this;return this.filterTerm?this.items.filter((function(t){return-1!==t.name.toLowerCase().indexOf(e.filterTerm.toLowerCase())})):this.items},enumerable:!0,configurable:!0}),e.decorators=[{type:n.Component,args:[{selector:"va-store",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 ',styles:[".flex-row{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.toolbar{padding:0;background-color:#fff;color:#616161}.toolbar .disabled{cursor:default}.toolbar .disabled mat-icon{cursor:default;color:#9e9e9e}.toolbar va-search-box{margin-right:10px;width:350px}.toolbar .table-controls-row{padding:0 10px 10px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.toolbar .table-controls-row:first-of-type{padding-top:10px}.top-border{border-top:1px solid #fff}.selected{background-color:#fff}.row{display:-webkit-box;display:flex;flex-wrap:wrap}.row+.row-gutters{margin-top:0}.row-gutters{margin-top:-20px;margin-left:-20px}.row-gutters>.col-flex{padding-top:20px;padding-left:20px}.col-flex{position:relative;max-width:100%;box-sizing:border-box;-webkit-box-flex:0;flex:0 0 auto;width:100%}@media screen and (min-width:480px){.col-flex{width:50%}}@media screen and (min-width:1200px){.col-flex{width:33.333333%}}"]}]}],e.propDecorators={items:[{type:n.Input}],searchable:[{type:n.Input}],itemClicked:[{type:n.Output}]},e}();var D=function(){function e(e){this.translateService=e,this.startOpen=!1,this.displayAutoTitle=!1,this.titleText="",this.displayAutoDescription=!0,this.descriptionText="",this.editingHint="",this.expandable=!0,this.autoDescriptionText="",this.iconName="help_outline",this.subscriptions=[],this.uniqueIndex=1,this.autoTitleText=""}return e.prototype.ngOnInit=function(){var e=this;for(this.fields.reduce((function(e,t,n,i){return e&&t.hidden}),!0)&&(this.expandable=!1);this.parentForm.controls.hasOwnProperty(this.titleText+this.uniqueIndex);)this.uniqueIndex+=1;this.parentForm.addControl(this.titleText+this.uniqueIndex,this.toFormGroup(this.fields));var t=this.parentForm.controls[this.titleText+this.uniqueIndex];for(var n in t.controls)t.controls.hasOwnProperty(n)&&null!=this.prepopulatedData&&this.prepopulatedData.hasOwnProperty(n)&&t.controls[n].setValue(this.prepopulatedData[n]);this.subscriptions.push(s.combineLatest([t.statusChanges,this.translateService.stream("FRONTEND.STORE.AUTO_TITLE_TEXT")]).subscribe((function(n){var i=S(n,2),r=i[0],o=i[1],a=!1;for(var s in t.controls)if(!t.controls[s].value||t.controls[s].value.constructor===Array&&!t.controls[s].value[0])if(e.iconName="help_outline",a=!0,"INVALID"===r){if(e.autoTitleText=o.SOME_FIELDS_INVALID,t.controls[s].dirty||t.controls[s].touched){e.iconName="warning";break}}else e.autoTitleText=o.OPTIONAL_FIELDS_UNANSWERED;a||(e.iconName="check_circle",e.autoTitleText=o.COMPLETE)}))),this.displayAutoDescription&&this.subscriptions.push(t.valueChanges.subscribe((function(t){var n="";for(var i in t)if(t.hasOwnProperty(i)&&null!=t[i]&&t[i].length>0)if(t[i][0].name)for(var r in t[i])null!=t[i][r]&&(n+=t[i][r].name,n+=", ");else n+=t[i],n+=", ";e.autoDescriptionText=n.substring(0,n.length-2)}))),t.updateValueAndValidity({onlySelf:!1,emitEvent:!0})},e.prototype.toFormGroup=function(e){var t=this,n={};return e.forEach((function(e){var i;i=!e.required||e.hidden?e.validator:"checkbox"===e.controlType?[d.Validators.requiredTrue,e.validator]:[d.Validators.required,e.validator];var r=new d.FormControl({value:e.value,disabled:e.disabled},i);n[e.id]=r,t.subscriptions.push(r.valueChanges.subscribe((function(t){return e.value=t})))})),new d.FormGroup(n)},e.prototype.ngOnDestroy=function(){this.subscriptions.forEach((function(e){return e.unsubscribe()}))},e.decorators=[{type:n.Component,args:[{selector:"va-dropdown-form-section",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 ',styles:[":host-context(va-dropdown-form-section){font-size:14px}:host-context(va-dropdown-form-section) .expansion-panel-body{margin-top:-10px;display:block}@media screen and (min-width:600px){:host-context(va-dropdown-form-section) .expansion-panel-body{width:60%}}.mat-expanded,.mat-expansion-panel{-webkit-transition:margin .4s;transition:margin .4s}mat-expansion-panel-header{min-height:48px;padding:12px 24px}.dropdown-form-header{width:90%;display:-webkit-box;display:flex}mat-panel-description{align-self:center;-webkit-box-flex:inherit;flex:inherit;display:initial;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}mat-panel-description.invalid{color:#c62828}mat-icon{margin-right:7px;-ms-grid-row-align:center;align-self:center}mat-icon.valid{color:#4caf50}mat-icon.invalid{color:#c62828}mat-icon.question{color:#9e9e9e}mat-panel-title{align-self:center;-webkit-box-flex:0;flex:none;margin-right:20px;display:-webkit-box;display:flex;max-width:100%}mat-panel-title div{display:-webkit-box;display:flex}mat-panel-title.valid{color:#4caf50}mat-panel-title.invalid{color:#c62828}.editing-hint{color:#9e9e9e}.title{color:#212121}.not-expandable-card{background:#fff;cursor:default;font-size:15px;display:-webkit-box;display:flex;height:48px;-webkit-box-align:center;align-items:center;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.not-expandable-card .not-expandable-icon{margin-left:24px}.not-expandable-card .not-expandable-header{display:-webkit-box;display:flex}.not-expandable-card .not-expandable-description{margin-left:22px}.not-expandable-card .valid{color:#4caf50}"]}]}],e.ctorParameters=function(){return[{type:l.TranslateService}]},e.propDecorators={prepopulatedData:[{type:n.Input}],startOpen:[{type:n.Input}],parentForm:[{type:n.Input}],displayAutoTitle:[{type:n.Input}],titleText:[{type:n.Input}],displayAutoDescription:[{type:n.Input}],descriptionText:[{type:n.Input}],fields:[{type:n.Input}],editingHint:[{type:n.Input}],expandable:[{type:n.Input}]},e}();var L=function(){function e(){}return Object.defineProperty(e.prototype,"isValid",{get:function(){return this.form.controls[this.field.id].valid||this.form.controls[this.field.id].pristine},enumerable:!0,configurable:!0}),e.prototype.showCheckboxError=function(e){return this.form.controls[e].errors&&this.form.controls[e].errors.required&&this.form.controls[e].touched},e.decorators=[{type:n.Component,args:[{selector:"va-field",template:'<ng-container [ngSwitch]="field.controlType" [formGroup]="form">\n <div *ngIf="!field.hidden" [ngClass]="{\'for-office-use-only\': field.forOfficeUseOnly}">\n <span *ngIf="field.forOfficeUseOnly" class="office-text">*For Office Use Only</span>\n\n <ng-container *ngSwitchCase="\'dropdown\'">\n <ng-container *ngIf="!field.allowMultiples">\n <mat-form-field class="form-field-container">\n <mat-select matInput [formControlName]="field.id" [id]="field.id" [placeholder]="field.getLabel()">\n <mat-option *ngFor="let option of field.options" [value]="option.value">{{ option.label }}</mat-option>\n </mat-select>\n <mat-hint *ngIf="field.description"> {{ field.description }} </mat-hint>\n </mat-form-field>\n </ng-container>\n <ng-container *ngIf="field.allowMultiples">\n <va-input-tags class="form-field-container" [id]="field.id" [formControlName]="field.id"\n [placeholder]="field.getLabel()"\n [tooltip]="field.description"\n [required]="field.required"\n [options]="field.options"\n [allowDuplicates]="field.allowDuplicates"\n [maxFields]="field.maxChoices">\n </va-input-tags>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase="\'textbox\'">\n <mat-form-field class="form-field-container">\n <span matPrefix *ngIf="field.prefix"> {{ field.prefix}} &nbsp;</span>\n <input matInput [type]="field.textboxType" [id]="field.id" [formControlName]="field.id" [placeholder]="field.getLabel()" [pattern]="field.regexValidator || \'\'"\n [readonly]="field.displayOnly" [ngClass]="{\'display-only\': field.displayOnly}">\n <span matSuffix *ngIf="field.suffix"> &nbsp;{{ field.suffix }} </span>\n <mat-hint *ngIf="field.description"> {{ field.description }} </mat-hint>\n <mat-error *ngIf="form.controls[field.id].hasError(\'pattern\')"> {{field.regexErrorMessage}} </mat-error>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngSwitchCase="\'checkbox\'">\n <div class="form-field-container checkbox">\n <mat-checkbox [formControlName]="field.id" [id]="field.id" ngControlDefault></mat-checkbox>\n <div class="checkbox-placeholder"> {{field.label}}</div>\n <mat-error *ngIf="showCheckboxError(field.id)" class="checkboxError"> *Required </mat-error>\n </div>\n <div class="checkbox-description" *ngIf="field.description">{{ field.description }}</div>\n </ng-container>\n\n <ng-container *ngSwitchCase="\'textarea\'">\n <mat-form-field class="form-field-container">\n <textarea matInput [formControlName]="field.id" [placeholder]="field.getLabel()" [id]="field.id"></textarea>\n <mat-hint *ngIf="field.description"> {{ field.description }} </mat-hint>\n </mat-form-field>\n </ng-container>\n\n <ng-container *ngSwitchCase="\'file\'">\n <div class="form-field-container">\n <file-group-uploader [uploadUrl]="field.uploadUrl" [label]="field.getLabel()" [description]="field.description" [formGroup]="form" [formControlName]="field.id"\n [numFiles]="field.numFiles" class="form-field-container"></file-group-uploader>\n </div>\n </ng-container>\n\n <ng-container *ngSwitchCase="\'vbcuser\'">\n <mat-form-field class="form-field-container">\n <mat-select matInput [formControlName]="field.id" [id]="field.id" [placeholder]="field.getLabel()">\n <mat-option *ngFor="let option of field.options" [value]="option.value" [disabled]="option.disabled">{{ option.label }}</mat-option>\n </mat-select>\n <mat-hint *ngIf="field.description"> {{ field.description }} </mat-hint>\n </mat-form-field>\n </ng-container>\n </div>\n</ng-container>\n',styles:[".form-field-container{font-size:16px;width:100%;margin:10px 0}.checkbox{display:-webkit-box;display:flex;padding:5px 0;color:rgba(0,0,0,.54);margin-top:24px}.checkbox .checkbox-placeholder{margin-left:10px}.checkbox-description{margin-top:-14px;margin-left:32px;color:rgba(0,0,0,.54);font-size:12px}.for-office-use-only{position:relative}.office-text{font-size:8px;position:absolute;right:5px}.display-only{color:rgba(0,0,0,.38)}.checkboxError{padding-left:16px}"]}]}],e.propDecorators={field:[{type:n.Input}],form:[{type:n.Input}]},e}();var q=function(){function e(){}return e.prototype.createFormControl=function(e){return e.required?new d.FormControl(e.value,d.Validators.required):new d.FormControl(e.value)},e.prototype.toFormGroup=function(e,t){var n=this,i={};return e.forEach((function(e){var r;r="checkbox"===e.controlType?new d.FormControl(e.value):n.createFormControl(e),i[e.id]=r,t&&t.push(r.valueChanges.subscribe((function(t){return e.value=t})))})),new d.FormGroup(i)},e.decorators=[{type:n.Injectable}],e}(),R=function(){function e(e){this.translateService=e,this.loaded=!0,this.showEnableAddon=!1,this.prerequisiteSelected=new n.EventEmitter,this.actionSelected=new n.EventEmitter,this.primaryPricingActionSelected=new n.EventEmitter,this.pricingActionSelected=new n.EventEmitter}return e.prototype.onActionSelected=function(){this.actionSelected.emit()},e.prototype.onPrerequisiteSelected=function(){this.prerequisiteSelected.emit()},e.prototype.showPricingModel=function(e){return e&&[m.BillingModel.Tiered,m.BillingModel.Stairstep].includes(e.billingModel)},e.prototype.getPricingModelTooltips=function(e){switch(e){case m.BillingModel.Stairstep:return this.translateService.stream("FRONTEND.STORE.PRICE_APPLIES_PER_UNIT");case m.BillingModel.Tiered:return this.translateService.stream("FRONTEND.STORE.PRICE_APPLIES_TO_ALL_UNITS");default:return s.of("")}},e.decorators=[{type:n.Component,args:[{selector:"va-header-container",template:'<div class="header-container">\n <div class="product-overview">\n <div class="product-id">\n\n <va-icon [iconUrl]="iconUrl" [name]="title" [diameter]="120"></va-icon>\n\n <div class="product-id-text">\n\n <h1 [ngClass]="{\'stencil-title stencil-shimmer\': !title, \'product-title\': title}">\n {{ title }}\n </h1>\n\n <span [ngClass]="{\'stencil-tagline stencil-shimmer\': !title && !tagline, \'tagline\': tagline}">\n {{ tagline }}\n </span>\n\n <div *ngIf="prerequisite" class="prerequisite">\n <span class="requires-text">{{ \'FRONTEND.STORE.REQUIRES\' | translate }}</span>\n <span>{{ prerequisite }}</span>\n </div>\n\n <mat-chip-list>\n <mat-chip *ngFor="let chip of chipLabels">{{ chip }}</mat-chip>\n </mat-chip-list>\n\n </div>\n </div>\n\n <div class="pricing">\n\n <button *ngIf="showAction && !showEnableAddon" mat-raised-button class="app-enable-button" [disabled]="!actionEnabled" (click)="onActionSelected()">\n {{ actionLabel }}\n </button>\n\n <button *ngIf="showEnableAddon && !showAction" mat-raised-button class="app-enable-button" [disabled]="!showEnableAddon" (click)="onActionSelected()">\n {{ actionLabel }}\n </button>\n\n <div *ngIf="prerequisiteLabel && !showEnableAddon" class="addon-enable" (click)="onPrerequisiteSelected()">\n {{ \'FRONTEND.STORE.ENABLED_WITH_PREREQUISITE\' | translate: {prerequisite: prerequisiteLabel } }}\n </div>\n\n <div *ngIf="showPricing" class="price-box">\n <div *ngIf="pricing?.prices?.length" class="wholesale-price">{{ pricingLabel }}\n <div *ngIf="showPricingModel(billedProduct) && hasVerifiedContract"\n class="pricing-model"\n [matTooltip]="getPricingModelTooltips(billedProduct.billingModel) | async">({{ billedProduct.billingModel }})\n </div>\n </div>\n <va-pricing [pricing]="pricing"\n [billedProduct]="billedProduct"\n [hasVerifiedContract]="hasVerifiedContract"\n [loaded]="loaded"></va-pricing>\n </div>\n\n <p *ngIf="pricingActionEnabled" class="pricing-action-container">\n <a (click)="primaryPricingActionSelected.emit()">{{ primaryPricingActionLabel }}</a>\n <a (click)="pricingActionSelected.emit()">{{ pricingActionLabel }}</a>\n </p>\n\n </div>\n\n </div>\n</div>\n',styles:[":host{font-size:16px}.product-title{font-size:24px}.product-overview{display:-webkit-box;display:flex;flex-wrap:wrap;border-bottom:1px solid #e0e0e0}.product-overview h1{margin:0;font-weight:400;line-height:1.2}.product-overview mat-chip{margin-bottom:3px}.product-id{display:-webkit-box;display:flex;width:100%;padding:24px;-webkit-box-flex:1;flex-grow:1}.product-id va-icon{margin-right:20px}@media screen and (max-width:600px){.product-id va-icon ::ng-deep .va-icon-container{width:40px!important;height:40px!important}.product-id va-icon ::ng-deep .va-icon-container span{line-height:40px!important;font-size:15px!important}}.product-id .product-id-text{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center}.product-id span{overflow:hidden}.product-id .tagline{color:#616161;margin:.5em 0 1em;font-size:16px}@media screen and (min-width:600px){.product-title{font-size:32px}.product-id .tagline{font-size:20px}.product-id{width:66%;padding-right:20px}}.product-id .prerequisite{margin:.5em 0 1em;font-size:14px}.product-id .requires-text{color:#9e9e9e}.inline-link{display:-webkit-inline-box!important;display:inline-flex!important;color:#1e88e5;cursor:pointer;padding-top:5px}.pricing{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;width:100%;padding:0 24px 24px;color:#616161}@media screen and (min-width:600px){.pricing{width:34%;padding-top:24px;padding-left:20px}}.pricing span{display:block}.pricing span:nth-child(2){margin:.5em 0 1em}.pricing .price{font-size:24px;font-weight:700;line-height:1;color:#4caf50}.pricing .price-box{padding-top:10px}.pricing .pricing-action-container{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;margin:8px 0}.pricing .pricing-action-container mat-icon{vertical-align:middle;margin-right:6px}.pricing .pricing-action-container a{cursor:pointer;margin:5px 0}.pricing .pricing-model{display:inline-block;font-size:.8rem;color:#9e9e9e;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.app-enable-button{height:inherit;color:#fff;background-color:#4caf50;font-size:20px;padding:14px 16px;line-height:1}.addon-enable{height:inherit;background-color:#e0e0e0;font-size:14px;padding:14px 16px;line-height:1;color:#1e88e5;cursor:pointer;text-align:center}.wholesale-price{margin-top:0;padding-bottom:8px;margin-bottom:4px;border-bottom:1px solid #e0e0e0}.stencil-title{height:32px;width:200px;margin-bottom:5px!important}.stencil-tagline{height:32px;width:250px}"]}]}],e.ctorParameters=function(){return[{type:l.TranslateService}]},e.propDecorators={iconUrl:[{type:n.Input}],title:[{type:n.Input}],tagline:[{type:n.Input}],prerequisite:[{type:n.Input}],chipLabels:[{type:n.Input}],pricing:[{type:n.Input}],billedProduct:[{type:n.Input}],loaded:[{type:n.Input}],hasVerifiedContract:[{type:n.Input}],pricingLabel:[{type:n.Input}],primaryPricingActionLabel:[{type:n.Input}],pricingActionLabel:[{type:n.Input}],pricingActionEnabled:[{type:n.Input}],actionEnabled:[{type:n.Input}],actionLabel:[{type:n.Input}],showAction:[{type:n.Input}],showPricing:[{type:n.Input}],showEnableAddon:[{type:n.Input}],prerequisiteLabel:[{type:n.Input}],prerequisiteSelected:[{type:n.Output}],actionSelected:[{type:n.Output}],primaryPricingActionSelected:[{type:n.Output}],pricingActionSelected:[{type:n.Output}]},e}();var U=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatIconModule,N,o.VaIconModule,i.MatChipsModule,i.MatButtonModule,i.MatTooltipModule,l.TranslateModule.forChild()],declarations:[R],exports:[R]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var $=function(){};var V=function(){function e(){}return e.prototype.ngOnInit=function(){var e=this.getTopSection();e&&(e.startOpen=!0)},e.prototype.getTopSection=function(){return this.data?this.data.primarySection?this.data.primarySection:this.data.subsections&&this.data.subsections.length>0?this.data.subsections[0]:null:null},e.decorators=[{type:n.Component,args:[{selector:"va-order-form-section",template:'<div>\n <mat-card class="va-order-form-section-header mat-card">\n <div class="product-overview">\n <div class="product-id">\n <va-icon [iconUrl]="data.iconUrl" [name]="data.titleText" [diameter]="45"></va-icon>\n <div class="product-id-text">\n <h1 class="product-title">{{ data.titleText }}</h1>\n <span *ngIf="data.subtitleText" class="tagline">{{ data.subtitleText }}</span>\n </div>\n </div>\n <div class="description" *ngIf="data.descriptionText">\n <span>{{ data.descriptionText }}</span>\n </div>\n </div>\n </mat-card>\n <va-dropdown-form-section class="va-primary-form-section" *ngIf="data.primarySection"\n [titleText]="data.primarySection.titleText"\n [editingHint]="data.primarySection.editingHint"\n [displayAutoDescription]="data.primarySection.displayAutoDescription"\n [descriptionText]="data.primarySection.descriptionText"\n [displayAutoTitle]="data.primarySection.displayAutoTitle"\n [prepopulatedData]="data.primarySection.prepopulatedData"\n [parentForm]="data.parentForm"\n [fields]="data.primarySection.fields"\n [startOpen]="data.primarySection.startOpen"\n [expandable]="data.primarySection.expandable">\n </va-dropdown-form-section>\n <ng-container *ngIf="data.subsections?.length > 0">\n <va-dropdown-form-section class="va-secondary-form-section" *ngFor="let addon of data.subsections"\n [titleText]="addon.titleText"\n [editingHint]="addon.editingHint"\n [displayAutoDescription]="addon.displayAutoDescription"\n [descriptionText]="addon.descriptionText"\n [displayAutoTitle]="addon.displayAutoTitle"\n [prepopulatedData]="addon.prepopulatedData"\n [parentForm]="data.parentForm"\n [fields]="addon.fields"\n [startOpen]="addon.startOpen"\n [expandable]="addon.expandable">\n </va-dropdown-form-section>\n </ng-container>\n <ng-container *ngIf="!data.primarySection && !(data.subsections?.length > 0)">\n <mat-card class="not-expandable-card">\n <ng-content></ng-content>\n </mat-card>\n </ng-container>\n</div>\n',styles:[":host{font-size:16px}mat-card.va-order-form-section-header{margin-bottom:0;border-bottom-color:#e0e0e0;border-bottom-width:1px;box-shadow:0 0 1px -2px rgba(0,0,0,.2),0 0 2px 0 rgba(0,0,0,.14),0 0 5px 0 rgba(0,0,0,.12)}.product-title{font-size:16px}va-mat-card{margin-bottom:24px}.product-overview{display:-webkit-box;display:flex;flex-wrap:wrap}.product-overview h1{margin:0;font-weight:700}.product-id{display:-webkit-box;display:flex;width:100%;-webkit-box-flex:1;flex-grow:1}.product-id va-icon{margin-right:20px}@media screen and (max-width:600px){.product-id va-icon ::ng-deep .va-icon-container{width:40px!important;height:40px!important}}.product-id .product-id-text{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center}.product-id span{display:block;overflow:hidden}.product-id .tagline{color:#616161;margin-top:8px;font-size:16px}@media screen and (min-width:600px){.product-id{width:66%;padding-right:16px}}.description{padding-top:16px;width:100%;color:#616161}"]}]}],e.ctorParameters=function(){return[]},e.propDecorators={data:[{type:n.Input}]},e}();var j=function(){this.expandable=!0};var z=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t}($);var G=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t}(j);var B=function(){function e(){}return e.extractRequiredCommonFieldIds=function(e){return e&&e.commonFormRequiredFields?Object.keys(e.commonFormRequiredFields).filter((function(t){return e.commonFormRequiredFields[t]})):[]},e.buildCommonFieldIds=function(t){var n=this,i=new Map;for(var r in e.camelToSnakeCaseMap)r&&i.set(r,{fieldId:r,required:!1});return t.map((function(e){n.extractRequiredCommonFieldIds(e).map((function(e){var t=i.get(e);t.required=!0,i.set(e,t)}))})),Array.from(i.values())},e.fillCommonFormSections=function(t,n,i,r){return e.buildCommonOrderFormFields(t,i,r).map((function(e){return I({},e,{populatedData:n})}))},e.buildCommonOrderFormFields=function(t,n,i){var r,o,a={sectionName:n.commonForm.businessSectionTitle||"Business",fields:[]},s={sectionName:n.commonForm.salespersonSectionTitle||"Salesperson",fields:[]},l={sectionName:n.commonForm.contactSectionTitle||"Contact",fields:[]};try{for(var c=k(t),d=c.next();!d.done;d=c.next()){var p=d.value,u=this.getLabelForFieldId(p.fieldId,n),m=new yt({id:e.camelToSnakeCaseMap[p.fieldId],label:u,textboxType:"text"});m.displayOnly="business_account_group_id"===m.id,m.disabled=i.readOnly,i.bypassRequiredQuestions||(m.required=p.required),p.fieldId.startsWith("contact")&&l.fields.push(m),p.fieldId.startsWith("business")&&a.fields.push(m),p.fieldId.startsWith("salesperson")&&(i.showOfficeUseQuestions||(m.hidden=!0),s.fields.push(m))}}catch(e){r={error:e}}finally{try{d&&!d.done&&(o=c.return)&&o.call(c)}finally{if(r)throw r.error}}return[a,l,s].filter((function(e){return!!e.fields&&e.fields.length>0}))},e.getLabelForFieldId=function(e,t){return t.commonForm[e]||""},e.buildOrderFormSectionData=function(e){var t=new G;return t.displayAutoTitle=!0,t.descriptionText="",t.displayAutoDescription=!1,t.parentForm=e,t},e.buildCustomOrderFormFields=function(t,n,i,r,o){var a={text:yt,textbox:yt,dropdown:ft,checkbox:gt,file:bt,textarea:vt,vbcuser:xt};return t.filter((function(e){return a[e.type]})).map((function(t){var s=a[t.type],l=function(){switch(s){case xt:var e={description:t.description,id:t.id,required:t.required,type:t.type,label:t.label,forOfficeUseOnly:t.forOfficeUseOnly,hidden:t.hidden,users:i};return new xt(e);case bt:var r=t;return r.uploadUrl=n,new bt(r);default:return new s(t)}}();if(l.id=e.encodeCustomFieldId(t.id),o.showOfficeUseQuestions||(l.hidden=!!l.forOfficeUseOnly||l.hidden),l.required=!o.bypassRequiredQuestions&&l.required,l.disabled=o.readOnly?o.readOnly:l.disabled,r){var c=r.find((function(e){return e.fieldId===t.id}));if(c)try{l.value=JSON.parse(c.answer)}catch(e){l.value=c.answer}}return l}))},e.encodeCustomFieldId=function(e){return f()+"#"+e},e.decodeCustomFieldId=function(e){return e.replace(new RegExp("(.*#)"),"")},e.mapFieldType=function(e){switch(e){case"textbox":return g.FieldType.TEXT;case"textarea":return g.FieldType.TEXTAREA;case"checkbox":return g.FieldType.CHECKBOX;case"dropdown":return g.FieldType.DROPDOWN;case"file":return g.FieldType.FILE;case"vbcuser":return g.FieldType.VBCUSER;default:return g.FieldType.NOT_SPECIFIED}},e.orderFieldToSalesOrderField=function(t){return new g.Field({fieldId:e.decodeCustomFieldId(t.id),fieldType:e.mapFieldType(t.controlType),label:t.label,description:t.description||"",prefix:t.prefix||"",suffix:t.suffix||"",regexValidator:t.regexValidator||"",regexErrorMessage:t.regexErrorMessage||"",answer:t.value?JSON.stringify(t.value):"null"})},e.productOrderFormToCustomFields=function(e){var t=this,n=new g.CustomField;n.productId=e.productId,n.fields=e.primarySection?e.primarySection.fields.map((function(e){return t.orderFieldToSalesOrderField(e)})):[];var i=e.subsections.map((function(n){var i=new g.CustomField;return n.addonId?i.addonKey=new g.AddonKey({appId:n.productId,addonId:n.addonId}):i.productId=e.productId,i.fields=n.fields.map((function(e){return t.orderFieldToSalesOrderField(e)})),i}));return[].concat(n,i)},e.getCommonFormSections=function(t,n,i,r){var o=e.buildCommonFieldIds(t);return e.fillCommonFormSections(o,n,i,r)},e.getCustomFormSections=function(t,n,i,r,o,a,s){return n.map((function(n){var l=[];(n.addonInfo||[]).map((function(c){var d=t.filter((function(e){return e.addonId===c.addonId})),p=(a||[]).filter((function(e){return e.addonKey&&e.addonKey.appId===n.productId&&e.addonKey.addonId===c.addonId&&e.productID===n.productId}));d.map((function(t,a){if(t&&t.customFields&&t.customFields.length>0){var d=e.buildOrderFormSectionData(i),u=p.length>a?p[a].customFieldsAnswers:[],m=e.buildCustomOrderFormFields(t.customFields,r,o,u,s);d.expandable=!0,d.titleText=c.name,d.fields=m,d.productId=n.productId,d.addonId=c.addonId,l.push(d)}}))}));var c=S(t.reduce((function(e,t){return t.appId!==n.productId||t.addonId||e.push(t),e}),[])),d=c[0],p=c.slice(1),u=d&&d.customFields&&d.customFields.length>0;if(l.length>0||u){var m=new z;if(m.productId=n.productId,m.parentForm=i,m.titleText=n.name,m.subtitleText=n.tagline,m.descriptionText="",m.iconUrl=n.icon,u){var g=e.buildOrderFormSectionData(i);g.titleText=n.name;var f=[];a&&(f=a.filter((function(e){return!e.addonKey&&e.productID===n.productId})));var h=S(f),b=h[0],v=h.slice(1);g.fields=e.buildCustomOrderFormFields(d.customFields,r,o,b?b.customFieldsAnswers:[],s),m.primarySection=g,p.forEach((function(t,n){var i=I({},g),a=v.length>n?v[n].customFieldsAnswers:[];i.fields=e.buildCustomOrderFormFields(d.customFields,r,o,a,s),l.unshift(i)}))}return m.subsections=l,m}return null})).filter((function(e){return!!e}))},e.getExtraFieldsSection=function(t,n,i,r,o,a){if(!t||t.length<1)return null;var s=e.buildOrderFormSectionData(n);return s.fields=e.buildCustomOrderFormFields(t,i,r,o,a),s},e.getCustomFieldsData=function(t){return t.reduce((function(t,n){return t=t.concat(e.productOrderFormToCustomFields(n))}),[])},e.getCommonFieldsData=function(t){var n=[];return t&&(n=t.reduce((function(t,n){var i=n.fields.map((function(t){var n=e.orderFieldToSalesOrderField(t);if(n.fieldId)return new g.CommonField({field:n,productIds:t.productIds,addonKeys:t.addonKeys})}));return t.concat(i)}),[])),n},e.getExtraFieldsData=function(t){var n=[];return t&&(n=t.fields.map((function(t){return e.orderFieldToSalesOrderField(t)}))),n},e.camelToSnakeCaseMap={contactName:"contact_name",contactEmail:"contact_email",contactPhoneNumber:"contact_phone_number",businessAccountGroupId:"business_account_group_id",businessName:"business_name",businessAddress:"business_address",businessPhoneNumber:"business_phone_number",businessWebsite:"business_website",salespersonName:"salesperson_name",salespersonEmail:"salesperson_email",salespersonPhoneNumber:"salesperson_phone_number"},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[]},e}();var W=function(){function e(){this.dropdownOpen$$=new s.BehaviorSubject(!1),this.dropdownOpen$=this.dropdownOpen$$.asObservable()}return e.prototype.ngOnInit=function(){var e=new H(this.orderFormOptions||{});this.commonFormSections=B.getCommonFormSections(this.orderForms,this.commonData,this.labels,e),this.customFormSections=B.getCustomFormSections(this.orderForms,this.productInfo,this.parentForm,this.fileUploadUrl,this.users,this.answers,e),this.extraFieldsSection=B.getExtraFieldsSection(this.extraFields,this.parentForm,this.fileUploadUrl,this.users,this.extraFieldsAnswers,e)},e.prototype.getCommonFormData=function(){return B.getCommonFieldsData(this.commonFormSections)},e.prototype.getCustomFormData=function(){return B.getCustomFieldsData(this.customFormSections)},e.prototype.getExtraFieldsData=function(){return B.getExtraFieldsData(this.extraFieldsSection)},e.prototype.changeReadOnly=function(e){this.orderFormOptions.readOnly=e,e?this.parentForm.disable():this.parentForm.enable()},e.prototype.openDropdown=function(){this.dropdownOpen$$.next(!0)},e.decorators=[{type:n.Component,args:[{template:'<form [formGroup]="parentForm">\n \x3c!-- Common Fields --\x3e\n <div *ngIf="commonFormSections?.length > 0" class="common-form-container">\n <mat-card class="common-form-header">\n <mat-card-title class="common-form-header-title">{{ labels.commonForm.headerTitle }}</mat-card-title>\n <div class="common-form-header-text">{{ labels.commonForm.headerText }}</div>\n </mat-card>\n <va-dropdown-form-section\n *ngFor="let formSection of commonFormSections"\n [parentForm]="parentForm"\n [prepopulatedData]="formSection.populatedData"\n [fields]="formSection.fields"\n [titleText]="formSection.sectionName"\n [startOpen]="dropdownOpen$ | async"\n editingHint="{{ labels.commonForm.editingHint }}"\n >\n </va-dropdown-form-section>\n <ng-container *ngIf="extraFieldsSection">\n <va-dropdown-form-section\n [parentForm]="parentForm"\n [prepopulatedData]="extraFieldsSection.prepopulatedData"\n [fields]="extraFieldsSection.fields"\n [displayAutoDescription]=false\n [startOpen]="true"\n [titleText]="\'FRONTEND.STORE.ADMINISTRATIVE_QUESTIONS\' | translate"\n >\n </va-dropdown-form-section>\n </ng-container>\n </div>\n\n \x3c!--Custom Fields--\x3e\n <div *ngIf="customFormSections?.length > 0" class="custom-form-container">\n <va-order-form-section *ngFor="let sectionData of customFormSections" [data]="sectionData"></va-order-form-section>\n </div>\n</form>\n',providers:[],selector:"va-order-form",styles:[".common-form-container{margin-bottom:16px}mat-card.common-form-header{margin-bottom:0;border-bottom-color:#fafafa;border-bottom-width:1px;box-shadow:0 0 1px -2px rgba(0,0,0,.2),0 0 2px 0 rgba(0,0,0,.14),0 0 5px 0 rgba(0,0,0,.12)}.common-form-header-text{font-size:15px;color:#9e9e9e}.common-form-header-title{margin-bottom:0;padding-bottom:15px}va-order-form-section{display:block;margin-bottom:16px}"]}]}],e.propDecorators={commonData:[{type:n.Input}],answers:[{type:n.Input}],parentForm:[{type:n.Input}],fileUploadUrl:[{type:n.Input}],orderForms:[{type:n.Input}],productInfo:[{type:n.Input}],labels:[{type:n.Input}],users:[{type:n.Input}],extraFields:[{type:n.Input}],extraFieldsAnswers:[{type:n.Input}],orderFormOptions:[{type:n.Input}]},e}();var H=function(e){this.bypassRequiredQuestions=!!e.bypassRequiredQuestions,this.readOnly=!!e.readOnly,this.showOfficeUseQuestions=!!e.showOfficeUseQuestions};var Q=function(){function e(e){this.id=e.id,this.label=e.label,this.required=!!e.required,this.description=e.description||null,e.type="text"===e.type?"textbox":e.type,this.controlType=e.type,this.prefix=e.prefix,this.suffix=e.suffix,this.regexValidator=e.regexValidator,this.regexErrorMessage=e.regexErrorMessage,this.disabled=e.disabled||!1,this.validator=this.validatorBuilder(),this.forOfficeUseOnly=!!e.forOfficeUseOnly,this.hidden=e.hidden,this.displayOnly=e.displayOnly}return e.prototype.getLabel=function(){var e=this.label;return this.required&&(e+=" *"),e},e.prototype.validatorBuilder=function(){return function(e){return null}},e}();var K=function(){function e(){this.removeField=new n.EventEmitter(null)}return e.createDropDownOption=function(e,t){return new d.FormGroup({label:new d.FormControl(e.label||e.value,t?[d.Validators.required]:[]),value:new d.FormControl(e.value),useValue:new d.FormControl(!!e.value)})},e.createDropDownOptions=function(t){null==t&&(t=[]);var n=t.map((function(t){return e.createDropDownOption(t,!1)}));return new d.FormArray(n)},e.createOrderFormFieldGroup=function(t){var n,i,r=new d.FormGroup({descriptionControl:new d.FormControl(t.description,[]),labelControl:new d.FormControl(t.label,[d.Validators.required]),idControl:new d.FormControl(t.id,[d.Validators.required]),requiredControl:new d.FormControl(t.required||!1,[]),uploadUrlControl:new d.FormControl(t.uploadUrl,[]),prefixControl:new d.FormControl(t.prefix,[]),suffixControl:new d.FormControl(t.suffix,[]),regexValidatorControl:new d.FormControl(t.regexValidator,(function(e){try{new RegExp(e.value||"")}catch(e){return{regex:!0}}return null})),regexErrorMessageControl:new d.FormControl(t.regexErrorMessage,[]),typeControl:new d.FormControl((i=t.type,n=i,Y.find((function(e){return e.id===n}))),[d.Validators.required]),allowMultiples:new d.FormControl(t.allowMultiples||!1,[]),allowDuplicates:new d.FormControl(t.allowDuplicates||!1,[]),maxChoices:new d.FormControl(t.maxChoices?t.maxChoices:1,[d.Validators.min(1),function(e){if(/^\d+$/.test(e.value))return null;return{number:!0}}]),forOfficeUseOnly:new d.FormControl(t.forOfficeUseOnly||!1,[])});if(t.optionsWithLabels){var o=e.createDropDownOptions(t.optionsWithLabels);r.addControl("optionsFormArray",o)}else if(t.options){o=e.createDropDownOptions(t.options.map((function(e){return{label:e}})));r.addControl("optionsFormArray",o)}else r.addControl("optionsFormArray",new d.FormArray([]));return r},e.prototype.ngOnInit=function(){(!this.supportedFieldTypes||this.supportedFieldTypes.length<1)&&(this.supportedFieldTypes=Y),this.initForm()},e.prototype.initForm=function(){this.orderFormFieldGroup.get("labelControl")||(this.orderFormFieldGroup=e.createOrderFormFieldGroup({}))},e.prototype.getOptionsArray=function(){return this.orderFormFieldGroup.get("optionsFormArray")},e.prototype.getCurrentFieldInterface=function(){var e=this.orderFormFieldGroup.get("typeControl").value;return e?e.id:null},e.prototype.removeOption=function(e){this.getOptionsArray().removeAt(e)},e.prototype.addOption=function(){this.getOptionsArray().push(e.createDropDownOption({label:""},!0))},e.prototype.getFormValues=function(){var e={};e.label=this.orderFormFieldGroup.get("labelControl").value,e.id=this.orderFormFieldGroup.get("idControl").value;var t=this.orderFormFieldGroup.get("typeControl").value;e.type=t?t.id:null;var n=this.orderFormFieldGroup.get("optionsFormArray");return n&&n.value&&(e.options=n.value.map((function(e){return e.value||e.label})),e.optionsWithLabels=n.value.map((function(e){return{label:e.label,value:e.value}}))),e.description=this.orderFormFieldGroup.get("descriptionControl").value,e.required=this.orderFormFieldGroup.get("requiredControl").value||!1,e.uploadUrl=this.orderFormFieldGroup.get("uploadUrlControl").value,e.prefix=this.orderFormFieldGroup.get("prefixControl").value,e.suffix=this.orderFormFieldGroup.get("suffixControl").value,e.regexValidator=this.orderFormFieldGroup.get("regexValidatorControl").value,e.regexErrorMessage=this.orderFormFieldGroup.get("regexErrorMessageControl").value,e.allowMultiples=this.orderFormFieldGroup.get("allowMultiples").value||!1,e.allowDuplicates=this.orderFormFieldGroup.get("allowDuplicates").value||!1,e.maxChoices=this.orderFormFieldGroup.get("maxChoices").value||1,e.forOfficeUseOnly=this.orderFormFieldGroup.get("forOfficeUseOnly").value||!1,e},e.decorators=[{type:n.Component,args:[{selector:"va-field-builder",template:'<div class="color-primary grab-mask order-form-field-form-container" [formGroup]="orderFormFieldGroup">\n <mat-form-field class="order-form-mat-form-field">\n <mat-select matInput formControlName="typeControl" placeholder="Type" required novalidate>\n <mat-option *ngFor="let field of supportedFieldTypes" [value]="field">\n {{ field.name }}\n </mat-option>\n </mat-select>\n <mat-error *ngIf="\'typeControl.invalid\'">Form Field type is Required</mat-error>\n </mat-form-field>\n <span class="options">\n <mat-checkbox color="primary" [formControlName]="\'requiredControl\'"> Required</mat-checkbox>\n <mat-checkbox color="primary" [formControlName]="\'forOfficeUseOnly\'" class="underlined" matTooltip="This question will not be shown to end users"> For Office Use Only</mat-checkbox>\n </span>\n \x3c!-- Options if drop down type is selected --\x3e\n <ng-container *ngIf="getCurrentFieldInterface() && getCurrentFieldInterface() === \'dropdown\'">\n <div formArrayName="optionsFormArray" *ngFor="let option of getOptionsArray().controls; let i = index;">\n <div class="removable-form-field dropdown-option">\n <mat-form-field class="dropdown-option-label">\n <input matInput [formControl]="option.get(\'label\')" placeholder="Option">\n </mat-form-field>\n <mat-form-field class="dropdown-option-value" *ngIf="option.get(\'useValue\').value">\n <input matInput [formControl]="option.get(\'value\')" placeholder="Value">\n </mat-form-field>\n <a class="dropdown-option-value" (click)="option.get(\'useValue\').setValue(true)" *ngIf="!option.get(\'useValue\').value">+ Assign Value</a>\n <button mat-icon-button type="button" color="primary" (click)="removeOption(i)">\n <mat-icon aria-label="Clear Button">clear</mat-icon>\n </button>\n </div>\n </div>\n <div class="order-form-mat-form-field">\n <a (click)="addOption()">+ Option</a>\n </div>\n <div class="dropdown-config">\n <mat-checkbox color="primary" [formControlName]="\'allowMultiples\'"> Allow Multiples</mat-checkbox>\n <ng-container *ngIf="orderFormFieldGroup.controls.allowMultiples.value">\n <mat-checkbox class="required-checkbox" color="primary" [formControlName]="\'allowDuplicates\'"> Allow Duplicates</mat-checkbox>\n <div>\n <mat-form-field class="order-form-mat-form-field">\n <input matInput formControlName="maxChoices" placeholder="Maximum Number of Choices" required type="number">\n <mat-hint>Must be greater than 0</mat-hint>\n <mat-error *ngIf="\'maxChoices.invalid\'">Max Choices must be a number larger than 0</mat-error>\n </mat-form-field>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div>\n <mat-form-field class="order-form-mat-form-field">\n <input matInput formControlName="labelControl" placeholder="Label" required novalidate>\n <mat-hint>Keep it short. Recommended: Max 140 characters</mat-hint>\n <mat-error *ngIf="\'idControl.invalid\'">Label is Required</mat-error>\n </mat-form-field>\n </div>\n \x3c!-- Prefix/suffix if textbox type is selected --\x3e\n <ng-container *ngIf="getCurrentFieldInterface() && getCurrentFieldInterface() === \'textbox\'">\n <ng-container *ngIf="showSuffixes">\n <mat-form-field>\n <input matInput formControlName="prefixControl" placeholder="Prefix">\n </mat-form-field>\n <mat-form-field>\n <input matInput formControlName="suffixControl" placeholder="Suffix">\n </mat-form-field>\n <div class="show-hide-text-button"><a (click)="showSuffixes = !showSuffixes">Hide Prefix/Suffix</a></div>\n </ng-container>\n <div *ngIf="!showSuffixes" class="show-hide-text-button">\n <a (click)="showSuffixes = !showSuffixes">+ Prefix/Suffix</a>\n <div class="hidden-note">- Values will apply even though currently hidden </div>\n </div>\n </ng-container>\n\n <div>\n <mat-form-field class="order-form-mat-form-field">\n <input matInput formControlName="idControl" placeholder="ID" required>\n <mat-error *ngIf="\'idControl.invalid\'">Id is Required</mat-error>\n <mat-hint>ID must be unique</mat-hint>\n </mat-form-field>\n </div>\n\n\n \x3c!-- Upload url if file type is selected --\x3e\n <ng-container *ngIf="getCurrentFieldInterface() && getCurrentFieldInterface() === \'file\'">\n <mat-form-field>\n <input matInput formControlName="uploadUrlControl" placeholder="Upload URL">\n </mat-form-field>\n </ng-container>\n\n\n \x3c!-- Prefix/suffix if textbox type is selected --\x3e\n <ng-container *ngIf="getCurrentFieldInterface() && getCurrentFieldInterface() === \'textbox\'">\n\n \x3c!-- RegexValidator/RegexErrorMessage if textbox type is selected --\x3e\n <ng-container *ngIf="showValidators">\n <mat-form-field>\n <input matInput formControlName="regexValidatorControl" placeholder="Regex Validator">\n <mat-error *ngIf="\'regexValidatorControl.invalid\'"> Must be a valid regular expression </mat-error>\n </mat-form-field>\n <mat-form-field>\n <input matInput formControlName="regexErrorMessageControl" placeholder="Regex Error Message">\n <mat-hint> Error displayed to the user when the regular expression is not matched </mat-hint>\n </mat-form-field>\n <div class="show-hide-text-button">\n <a (click)="showValidators = !showValidators">Hide Validation</a>\n </div>\n </ng-container>\n <div *ngIf="!showValidators" class="show-hide-text-button">\n <a (click)="showValidators = !showValidators">+ Validation</a>\n <div class="hidden-note"> - Values will apply even though currently hidden </div>\n </div>\n </ng-container>\n\n \x3c!-- Optional description --\x3e\n <div class="removable-form-field">\n <mat-form-field>\n <input matInput formControlName="descriptionControl" placeholder="Hint text">\n <mat-hint>A short sentence to show below the field if you absolutely need extra instruction</mat-hint>\n </mat-form-field>\n </div>\n\n <div class="delete-field-section">\n <button mat-icon-button type="button" color="primary" (click)="removeField.emit()">\n Delete field\n \x3c!-- <mat-icon aria-label="Clear Button">clear</mat-icon> --\x3e\n </button>\n </div>\n</div>\n',changeDetection:n.ChangeDetectionStrategy.OnPush,styles:[".show-hide-text-button{margin-bottom:2em;display:-webkit-box;display:flex}.show-hide-text-button .hidden-note{font-size:10px;margin-left:7px;color:#9e9e9e;-ms-grid-row-align:center;align-self:center}.options{padding-left:15px;width:15%;display:inline-block}.dropdown-option,mat-form-field{width:85%}.delete-field-section{text-align:right}.mat-icon-button{width:auto;color:rgba(0,0,0,.54)!important}.mat-icon-button:hover{color:#c62828!important}.dropdown-config{margin-top:17px}.dropdown-config mat-checkbox{margin-right:16px}.dropdown-option{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.dropdown-option-label{-webkit-box-flex:1;flex:1 1 auto;margin-right:16px}.dropdown-option-value{-webkit-box-flex:0;flex:0 1 33%}.underlined{border-bottom:1px dotted}"]}]}],e.propDecorators={orderFormFieldGroup:[{type:n.Input}],supportedFieldTypes:[{type:n.Input}],removeField:[{type:n.Output}]},e}();var Y=[{id:"file",name:"Files"},{id:"dropdown",name:"Drop Down"},{id:"checkbox",name:"Check Box"},{id:"textarea",name:"Text Area"},{id:"textbox",name:"Text Box"},{id:"vbcuser",name:"End User"}];var X=function(){function e(){}return e.getPriceSummary=function(e){if(!e)return{items:[],includesUndefinedPricing:!1};var t=!1;return{items:e.reduce((function(e,n){return n.pricing.prices.length<=0?(t=!0,e):(n.pricing.prices.map((function(i){if(!i||i.price<0)t=!0;else{var r=i.billingFrequency,o=n.pricing.currency,a=e.findIndex((function(e){return e.currency===o})),s={currency:o,prices:[]};a>-1&&(s=e[a]);var l=s.prices.findIndex((function(e){return e.billingFrequency===r})),c=null!==i.price?i.price*n.quantity:null,d=(i.discountAmount||0)*n.quantity;l>-1?s.prices[l]={price:s.prices[l].price+c,billingFrequency:r,discountAmount:s.prices[l].discountAmount+d}:s.prices.push({price:c,billingFrequency:r,discountAmount:d}),a>-1?e[a]=s:e.push(s)}})),e)}),[]),includesUndefinedPricing:t}},e}(),Z=function(){function e(){this.includesUndefinedPricing=!1}return Object.defineProperty(e.prototype,"orderItems",{set:function(e){this.items=e||[];var t=X.getPriceSummary(e);this.summaryItems=t.items,this.includesUndefinedPricing=t.includesUndefinedPricing},enumerable:!0,configurable:!0}),e.prototype.calculateTotalPrice=function(e){if(null===e.price)return null;var t=e.price-e.discountAmount;if(!this.taxOptions)return t;var n=this.taxOptions.reduce((function(e,n){return e+n.percentage*t}),0);return t+n},e.prototype.buildTaxLabel=function(e){var t=Number(100*e.percentage).toFixed(2);return e.label+" ("+t+"%)"},e.prototype.isFree=function(){return 0===this.summaryItems.reduce((function(e,t){return e+t.prices.reduce((function(e,t){return e+t.price}),0)}),0)},e.decorators=[{type:n.Component,args:[{selector:"va-order-item-list",template:'<div class="va-order-item-list">\n <mat-list class="product-list" *ngIf="items; else loading">\n <ng-container *ngFor="let item of items">\n <mat-list-item>\n <div class="list-item">\n <div class="left-section">\n <div class="icon-and-name">\n <div class="icon-container">\n <va-icon [diameter]="32" [iconUrl]="item.icon" [name]="item.name"></va-icon>\n </div>\n <div>\n <div>\n {{ item.name }}\n <va-badge color="blue-solid" *ngIf="item.editionName">\n <span> {{ item.editionName }} </span>\n </va-badge>\n <span *ngIf="item.quantity > 1"> ({{ item.quantity }})</span>\n </div>\n </div>\n </div>\n </div>\n <div class="right-section" *ngIf="!hidePricing && item.pricing">\n <ng-container *ngIf="item.pricing.prices?.length > 0">\n <ng-container *ngFor="let price of item.pricing.prices">\n <div matLine>\n <strong *ngIf="!price.discountAmount">{{ price.price | price: item.pricing.currency }}</strong>\n <ng-container *ngIf="price.price && price.discountAmount > 0">\n <span matTooltipPosition="left" class="item-price-before-discount"\n [matTooltip]="price.discountAmount | price: item.pricing.currency">\n {{ price.price | price: item.pricing.currency }}\n </span>\n <strong>{{ price.price - price.discountAmount | price: item.pricing.currency }}</strong>\n </ng-container>\n </div>\n <div matLine class="tertiary-font-color" *ngIf="price.price > 0">\n {{ price.billingFrequency | formatBillingFrequency }}\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf="item.pricing.prices?.length <= 0">\n <mat-list-item class="summary-list-item">\n <div matLine>\n <strong>{{ null | price: \'CAD\' }}</strong>\n </div>\n </mat-list-item>\n </ng-container>\n </div>\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n </ng-container>\n </mat-list>\n\n <div *ngIf="!hidePricing">\n <div *ngIf="items; else loading">\n <div class="total-header">\n {{ \'FRONTEND.STORE.TOTAL\' | translate }}\n </div>\n <mat-list class="summary-list">\n <ng-container *ngIf="includesUndefinedPricing; else totalIsDefined">\n <mat-list-item class="summary-list-item">\n <div matLine>\n <strong>{{ null | price: \'CAD\' }}</strong>\n </div>\n </mat-list-item>\n </ng-container>\n\n <ng-template #totalIsDefined>\n <ng-container *ngIf="isFree(); else totalNotFree">\n <div class="summary-item-group">\n <mat-list-item class="summary-list-item">\n <div matLine>\n <strong>{{ 0 | price: \'USD\' }}</strong>\n </div>\n </mat-list-item>\n </div>\n </ng-container>\n\n <ng-template #totalNotFree>\n <ng-container *ngFor="let item of summaryItems">\n <div class="summary-item-group" *ngFor="let price of item.prices">\n <ng-container *ngIf="price.price > 0">\n <div class="tax-calculation">\n <mat-list-item class="summary-list-item tax-item">\n <div matLine *ngIf="taxOptions">\n <strong>{{ price.price - price.discountAmount | price: item.currency }}</strong>\n </div>\n </mat-list-item>\n <ng-container *ngFor="let tax of taxOptions">\n <mat-list-item class="summary-list-item tax-item">\n <div matLine class="tax-label">\n <span>\n {{ buildTaxLabel(tax) }}\n </span>\n <strong>\n +{{ (price.price - price.discountAmount) * tax.percentage | price: item.currency }}\n </strong>\n </div>\n </mat-list-item>\n </ng-container>\n </div>\n\n <mat-list-item class="summary-list-item" [ngClass]="{ \'result-item\': (price.price > 0 && taxOptions) }">\n <div matLine>\n <strong>{{ calculateTotalPrice(price) | price: item.currency }}</strong>\n </div>\n </mat-list-item>\n\n <mat-list-item class="summary-list-item">\n <div matLine class="tertiary-font-color">\n {{ price.billingFrequency | formatBillingFrequency }}\n </div>\n </mat-list-item>\n </ng-container>\n </div>\n </ng-container>\n\n </ng-template>\n </ng-template>\n </mat-list>\n </div>\n </div>\n\n <ng-template #loading>\n <div class="stencil-shimmer"></div>\n </ng-template>\n\n</div>\n',styles:["::ng-deep .va-order-item-list .mat-list-item{height:auto!important}::ng-deep .va-order-item-list .mat-list .mat-list-item-content{padding:10px 0!important}::ng-deep .va-order-item-list .mat-list .summary-list-item .mat-list-item-content{padding:0!important}.product-list{padding:0;position:relative}.product-list .list-item{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-pack:justify;justify-content:space-between;width:100%}.product-list .list-item .left-section .icon-and-name{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center}.product-list .list-item .left-section .icon-and-name .icon-container{margin-right:16px}.product-list .list-item .right-section{margin-left:1em;text-align:right;align-self:flex-start}.total-header{background-color:#616161;color:#fff;line-height:2;height:2em;font-weight:700;padding-right:14px;text-align:right}.summary-list{padding:8px 0;background-color:#f5f5f5}.summary-list .summary-list-item{padding-right:14px;text-align:right}.summary-list .summary-item-group{padding:10px 0}.summary-list .summary-list-item.tax-item{color:#9e9e9e;font-size:14px}.summary-list .summary-list-item.result-item{text-decoration:overline;padding-top:5px}.summary-list .tax-label{font-size:12px}.tertiary-font-color{color:#212121;font-size:14px!important}.stencil-shimmer{width:100%;min-height:20px;margin-bottom:4px}.item-price-before-discount{font-size:14px;margin-right:8px;color:#9e9e9e;text-decoration:line-through;border-bottom:1px dotted #9e9e9e}"]}]}],e.propDecorators={taxOptions:[{type:n.Input}],hidePricing:[{type:n.Input}],orderItems:[{type:n.Input}]},e}();var J=function(){function e(){}return e.prototype.transform=function(e,t,n,i,r,o){return void 0===i&&(i=!0),void 0===r&&(r=!0),void 0===o&&(o=!0),a.formatDisplayPrice(e,t,n,i,r,o)},e.decorators=[{type:n.Pipe,args:[{name:"price"}]}],e}(),ee=function(){function e(){}return e.prototype.transform=function(e){return a.formatBillingFrequency(e)},e.decorators=[{type:n.Pipe,args:[{name:"formatBillingFrequency"}]}],e}(),te=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,d.FormsModule,i.MatButtonModule,i.MatCheckboxModule,i.MatExpansionModule,i.MatIconModule,i.MatInputModule,i.MatOptionModule,i.MatProgressSpinnerModule,i.MatSelectModule,i.MatCardModule,i.MatTooltipModule,d.ReactiveFormsModule,u.VaFormsModule,U,o.VaIconModule,u.VaFormsModule,o.VaBadgeModule,p.MatListModule,l.TranslateModule.forChild()],declarations:[D,L,V,W,K,Z,J,ee],exports:[D,L,V,W,K,Z],providers:[q,B,X]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var ne=function(){function e(){}return e.prototype.markFormsAsTouched=function(e){for(var t in e.controls)e.controls[t]instanceof d.FormGroup?this.markFormsAsTouched(e.controls[t]):(e.controls[t].markAsTouched(),e.controls[t].updateValueAndValidity())},e.decorators=[{type:n.Injectable}],e}(),ie=function(){function e(e){this.url=e,this.url=e}return Object.defineProperty(e.prototype,"name",{get:function(){return this.url?this.url.substring(this.url.lastIndexOf("/")+1,this.url.lastIndexOf(".")):null},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"icon",{get:function(){switch(this.url?this.url.substring(this.url.lastIndexOf(".")+1):null){case"pdf":return"icon-pdf";case"ppt":return"icon-ppt";default:return"icon-docs"}},enumerable:!0,configurable:!0}),e}();var re=function(){function e(){}return Object.defineProperty(e.prototype,"isFree",{get:function(){return!(!this.pricing||!this.pricing.prices)&&this.pricing.prices.some((function(e){return 0===e.price||void 0===e.price}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"shouldContactSales",{get:function(){return!this.pricing||!this.pricing.prices||(this.pricing.prices.some((function(e){return null===e.price||-1===e.price}))||0===this.pricing.prices.length)},enumerable:!0,configurable:!0}),e.getCapitalizeFirstLetter=function(e){return e?e.charAt(0).toUpperCase()+e.slice(1):null},Object.defineProperty(e.prototype,"formattedPricingList",{get:function(){if(this.pricing&&this.pricing.prices&&this.pricing.prices.length){var t=this.pricing.currency&&"USD"!==this.pricing.currency?this.pricing.currency:"",n=e.getCurrencySymbol(this.pricing.currency);return this.pricing.prices.map((function(i){var r=i.frequency?"/ "+e.getCapitalizeFirstLetter(i.frequency):"",o=((i.price||0)/100).toFixed(2);return(""+(i.isStartingPrice?"Starting at ":"")+n+o+" "+t+" "+r).trim().replace(/\s+/g," ")}))}return["Contact Sales"]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"priceStrings",{get:function(){return this.shouldContactSales?["Contact Sales"]:this.isFree?["Free"]:this.formattedPricingList},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"formattedWholesalePrice",{get:function(){return this.priceStrings.join(" + ")},enumerable:!0,configurable:!0}),e.getCurrencySymbol=function(e){var t="$";switch(e){case"EUR":t="€";break;case"GBP":t="£";break;case"CHF":t="Fr";break;case"CNY":case"JPY":t="¥";break;case"CZK":t="Kč";break;case"INR":t="₹";break;case"KHR":t="៛";break;case"KRW":t="₩";break;case"NOK":case"SEK":t="kr";break;case"RUB":t="₽";break;case"TRY":t="₺";break;case"ZAR":t="R";break;default:t="$"}return t},e}();var oe=function(){function e(){}return e.snakeToCamelCase=function(e){return e?e.replace(new RegExp(/_/g)," ").replace(/\b\w/g,(function(e){return e.toUpperCase()})).replace(/\b\w/,(function(e){return e.toLowerCase()})).replace(/\s/g,""):e},e.lowerToTitleCase=function(e){var t=/^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;return e?e.replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g,(function(e,n,i){return n>0&&n+e.length!==i.length&&e.search(t)>-1&&":"!==i.charAt(n-2)&&("-"!==i.charAt(n+e.length)||"-"===i.charAt(n-1))&&i.charAt(n-1).search(/[^\s-]/)<0?e.toLowerCase():e.substr(1).search(/[A-Z]|\../)>-1?e:e.charAt(0).toUpperCase()+e.substr(1)})):e},e}(),ae=["#EF5350","#42A5F5","#66BB6A","#FFA726","#AB47BC","#FFCA28","#EC407A","#26C6DA","#FF7B57"],se=function(e){function t(t){var n=e.call(this)||this;return n.addons=[],t=t||{},n.pricing=t.pricing,n.productId=t.productId,n.editionId=t.editionId,n.editionName=t.editionName,n.name=t.name,n.description=t.description,n.tagline=t.tagline,n.iconUrl=t.iconUrl,n.entryUrl=t.entryUrl,n.screenshotUrls=t.screenshotUrls,n.pdfUploadUrls=t.pdfUploadUrls,n.lmiCategories=t.lmiCategories,n.keySellingPoints=t.keySellingPoints,n.faqs=t.faqs,n.wholesalePrice=t.wholesalePrice,n.currency=t.currency,n.billingFrequency=t.billingFrequency,n.isArchived=t.isArchived,n.addons=t.addons,n.restrictions=t.restrictions,n.billingId=t.billingId,t.hasOwnProperty("pdfUploadUrls")&&(n.files=n.pdfUploadUrls?n.pdfUploadUrls.map((function(e){return new ie(e)})):null),n}return w(t,e),t.fromApi=function(e){var n={};for(var i in e=e||{}){if(e.hasOwnProperty(i))n[oe.snakeToCamelCase(i)]=e[i]}return new t(n)},Object.defineProperty(t.prototype,"iconStyle",{get:function(){return this.iconUrl?'url("'+this.iconUrl+'") no-repeat center / 100% 100%':null},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"iconColor",{get:function(){if(!this.name)return"#808080";for(var e=0,t=0;t<this.name.length;t++)e+=this.name[t].charCodeAt(0);return ae[e%ae.length]},enumerable:!0,configurable:!0}),t.prototype.getLmiCategoryNames=function(){return(this.lmiCategories||[]).map((function(e){return oe.lowerToTitleCase(e.toLowerCase().replace(/_/g," "))}))},t}(re);var le=function(e){function t(t){var n=e.call(this,t)||this;return n.parentId=t.parentId,n.parentName=t.parentName,n.parentIconUrl=t.parentIconUrl,n.multipleActivations=t.multipleActivations||!1,n}return w(t,e),t.fromApi=function(e){var n={};for(var i in e=e||{}){if(e.hasOwnProperty(i))n[oe.snakeToCamelCase(i)]=e[i]}return new t(n)},t}(se);var ce=function(){function e(){this.hasVerifiedContract=!1,this.loaded=!0,this.showPricing=!0,this.showEnableAddon=!1,this.actionEnabled=!1,this.prerequisiteSelected=new n.EventEmitter,this.actionSelected=new n.EventEmitter}return e.prototype.onPrerequisiteSelected=function(){this.prerequisiteSelected.emit()},e.prototype.onActionSelected=function(){this.actionSelected.emit()},e.prototype.getPricing=function(e,t){return{currency:e.currency,prices:[{price:t.price,frequency:t.billingFrequency?t.billingFrequency:"Monthly"}]}},Object.defineProperty(e.prototype,"pricingLabel",{get:function(){return this.reseller?"Wholesale Pricing":"Pricing"},enumerable:!0,configurable:!0}),e.decorators=[{type:n.Component,args:[{selector:"addon-details",template:'<div class="addon-page">\n <va-header-container [iconUrl]="addon.icon"\n [title]="addon.title"\n [tagline]="addon.tagline"\n [chipLabels]="product.getLmiCategoryNames()"\n [pricing]="getPricing(product, addon)"\n [pricingLabel]="pricingLabel"\n [prerequisiteLabel]="product.name"\n [billedProduct]="billedProduct"\n [hasVerifiedContract]="hasVerifiedContract"\n [loaded]="loaded"\n [showPricing]="showPricing"\n [actionLabel]="\'Enable Add-on\'"\n [showEnableAddon]="showEnableAddon"\n (actionSelected)="onActionSelected()"\n (prerequisiteSelected)="onPrerequisiteSelected()">\n </va-header-container>\n\n <div class="addon-details addon-content">\n <ng-container *ngIf="reseller">\n <div class="left-column">\n <div *ngIf="addon.resellerMarketing?.description || addon.resellerMarketing?.keySellingPoints">\n <va-selling-info [description]="addon.resellerMarketing?.description"\n [keySellingPoints]="addon.resellerMarketing?.keySellingPoints"></va-selling-info>\n </div>\n <section *ngIf="addon.resellerMarketing?.faqs?.length > 0 && addon.resellerMarketing?.faqs[0].question">\n <h2 class="va-addon-title">FAQs</h2>\n <va-faqs [faqs]="addon.resellerMarketing?.faqs"></va-faqs>\n </section>\n </div>\n <div class="right-column">\n <section *ngIf="addon.restrictions?.country?.whitelist">\n <supported-countries [countryCodes]="addon.restrictions.country.whitelist"></supported-countries>\n </section>\n <section *ngIf="addon.screenshots?.length > 0">\n <h2 class="va-addon-title">Gallery</h2>\n <va-image-gallery [imageUrls]="addon.screenshots"></va-image-gallery>\n </section>\n <section *ngIf="addon.resellerMarketing?.files?.length > 0">\n <h2 class="va-addon-title">Files</h2>\n <va-files [files]="addon.resellerMarketingFiles"></va-files>\n </section>\n </div>\n </ng-container>\n\n <ng-container *ngIf="!reseller">\n <div class="left-column">\n <div *ngIf="addon.endUserMarketing?.description || addon.endUserMarketing?.keySellingPoints">\n <va-selling-info [description]="addon.endUserMarketing?.description"\n [keySellingPoints]="addon.endUserMarketing?.keySellingPoints"></va-selling-info>\n </div>\n <section *ngIf="addon.endUserMarketing?.faqs?.length > 0 && addon.endUserMarketing?.faqs[0].question">\n <h2 class="va-addon-title">FAQs</h2>\n <va-faqs [faqs]="addon.endUserMarketing?.faqs"></va-faqs>\n </section>\n </div>\n\n <div class="right-column">\n <section *ngIf="addon.restrictions?.country?.whitelist?.length > 0">\n <supported-countries [countryCodes]="addon.restrictions.country.whitelist"></supported-countries>\n </section>\n <section *ngIf="addon.screenshots?.length > 0">\n <h2 class="va-addon-title">Gallery</h2>\n <va-image-gallery [imageUrls]="addon.screenshots"></va-image-gallery>\n </section>\n <section *ngIf="addon.endUserMarketing?.files?.length > 0">\n <h2 class="va-addon-title">Files</h2>\n <va-files [files]="addon.endUserMarketingFiles"></va-files>\n </section>\n </div>\n </ng-container>\n </div>\n\n</div>\n',styles:[":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-addon-title{font-size:32px;font-weight:300;margin-top:0;color:#212121}@media screen and (min-width:600px){.va-addon-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.addon-page{position:relative;margin:0 auto 20px;background:#fff;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px;color:#212121}.addon-page .item-amount{color:#999;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width:600px){.left-column{width:100%}}.right-column{width:34%}.addon-content{display:-webkit-box;display:flex}@media screen and (max-width:600px){.right-column{width:100%}.addon-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}"]}]}],e.propDecorators={product:[{type:n.Input}],addon:[{type:n.Input}],reseller:[{type:n.Input}],billedProduct:[{type:n.Input}],hasVerifiedContract:[{type:n.Input}],loaded:[{type:n.Input}],showPricing:[{type:n.Input}],showEnableAddon:[{type:n.Input}],actionEnabled:[{type:n.Input}],prerequisiteSelected:[{type:n.Output}],actionSelected:[{type:n.Output}]},e}();var de=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"va-files",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>',styles:[".va-files{display:-webkit-inline-box;display:inline-flex;margin-bottom:16px}.va-files a{color:#212121;font-size:16px;font-weight:700;-ms-grid-row-align:center;align-self:center;padding-left:8px;text-decoration:none}.va-files .file-icon{vertical-align:middle}.va-files .file-list-container{display:-webkit-box;display:flex}"]}]}],e.propDecorators={files:[{type:n.Input}]},e}();var pe=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatIconModule],declarations:[de],exports:[de]}]}],e}(),ue=function(){function e(){this.openFaqs=[]}return e.prototype.toggleFaq=function(e){this.openFaqs.indexOf(e)>=0?this.openFaqs.splice(this.openFaqs.indexOf(e),1):this.openFaqs.push(e)},e.prototype.isFaqOpen=function(e){return this.openFaqs.indexOf(e)>=0},e.prototype.faqIcon=function(e){return this.isFaqOpen(e)?"keyboard_arrow_up":"keyboard_arrow_down"},e.decorators=[{type:n.Component,args:[{selector:"va-faqs",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>',styles:[".va-faq{font-size:16px;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:start;justify-content:flex-start;padding:12px 0;border-bottom:1px solid #e0e0e0}.va-faq:first-of-type{border-top:1px solid #e0e0e0}.va-faq .question{display:-webkit-box;display:flex;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:center;align-items:center;color:#212121;cursor:pointer}.va-faq .answer{color:#616161;height:0;overflow:hidden}.va-faq .show{padding-top:12px;height:inherit}"]}]}],e.propDecorators={faqs:[{type:n.Input}]},e}();var me=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatIconModule,o.VaSafeHtmlModule],declarations:[ue],exports:[ue]}]}],e}(),ge=function(){function e(){}return Object.defineProperty(e.prototype,"filterDescription",{get:function(){var e=this.description.replace(/max-width:\d*[^\"]/i,"max-width:100%");if(-1===e.indexOf('"max-width:100%"')&&-1!==e.indexOf("<iframe ")){var t=e.indexOf("<iframe ")+7;return e.substr(0,t)+' style="max-width:100%"'+e.substr(t)}return String(e)},enumerable:!0,configurable:!0}),e.decorators=[{type:n.Component,args:[{selector:"va-selling-info",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 ',styles:["section{padding:24px}section ::ng-deep>:first-child{margin-top:0;padding-top:0}#description *{max-width:100%!important}.key-selling-point{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding-bottom:24px;font-size:16px}@media screen and (max-width:600px){.resize{font-size:16px}.key-selling-point{-webkit-box-align:start;align-items:flex-start}}.key-selling-point:last-of-type{padding-bottom:0}.key-selling-point mat-icon{color:#4caf50;font-size:32px;width:32px;height:32px;margin-right:20px}"]}]}],e.propDecorators={description:[{type:n.Input}],keySellingPoints:[{type:n.Input}]},e}();var fe=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatIconModule,o.VaSafeHtmlModule],declarations:[ge],exports:[ge]}]}],e}(),he=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"supported-countries",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 ',styles:[".flag-icon{margin-right:10px}.supported-text{margin-right:3px}.flags{display:inline-block}"]}]}],e.propDecorators={countryCodes:[{type:n.Input}]},e}();var be=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatTooltipModule],declarations:[he],exports:[he]}]}],e}(),ve=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,o.VaListModule,o.VaImageGalleryModule,o.VaIconModule,N,pe,me,fe,U,o.VaSafeHtmlModule,h.MatProgressSpinnerModule,o.VaBreadcrumbsModule,be],exports:[ce],declarations:[ce],providers:[],entryComponents:[]}]}],e}(),ye=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"details-stencil",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 ',styles:[".details{position:relative;margin:0 auto 20px;background:#fff;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px}.details-header{display:-webkit-box;display:flex;height:180px}.details-column-0{display:-webkit-box;display:flex;width:66%}@media screen and (max-width:600px){.details-column-0{width:100%}}.details-column-0-1{display:-webkit-box;display:flex;width:25%;min-width:120px}@media screen and (max-width:600px){.details-column-0-1{width:50%}}.details-icon{height:120px;width:120px;border-radius:50%}.details-title{margin:20px 0 20px 20px;height:32px;width:250px}@media screen and (max-width:600px){.details-title{width:120px}}.details-column-1{width:34%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}@media screen and (max-width:1100px){.details-column-1{width:0}}.details-column-1-0{height:32px;margin:10px 0}.details-column-1-1{height:70px}@media screen and (max-width:600px){.details-column-1-0{width:0;margin:0}.details-column-1-1{height:0}}.details-box-large{display:-webkit-box;display:flex;width:650px;height:150px}@media screen and (max-width:1100px){.details-box-large{width:100%}}.details-body{display:-webkit-box;display:flex;height:500px;width:100%}.details-body-column-0{width:10%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}@media screen and (max-width:600px){.details-body-column-0{width:0%}}.details-body-column-1{width:56%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}@media screen and (max-width:600px){.details-body-column-1{width:100%}}.details-icon-small{margin-bottom:24px;display:-webkit-box;display:flex;height:32px;width:32px;border-radius:50%}.details-line{margin-bottom:24px;height:32px;width:400px}@media screen and (max-width:600px){.details-line{width:100%;margin-right:10px}}.details-body-column-2{width:34%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}@media screen and (max-width:1100px){.details-body-column-2{width:0}}.details-box{height:70px;margin-bottom:10px}@media screen and (max-width:600px){.details-box{width:0;margin:0}}"]}]}],e}(),xe=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"card-stencil",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 ',styles:[".card-stencil-container{position:relative;width:100%;padding-bottom:100%;margin-bottom:-45%}.card-stencil{position:absolute;width:100%;height:55%;padding:0;margin-bottom:0}.card-stencil-header{display:-webkit-box;display:flex;height:60%}.card-stencil-footer{display:-webkit-box;display:flex;height:40%;-webkit-box-align:center;align-items:center}.card-stencil-circle{margin:0 16px;height:60px;width:60px;border-radius:50%}@media screen and (max-width:650px){.card-stencil-circle{width:45px;height:45px}}.card-stencil-line-large{height:20px;width:200px;margin-bottom:10px}@media screen and (max-width:650px){.card-stencil-line-large{width:100px;height:10px}}.card-stencil-line-medium{height:20px;width:160px}@media screen and (max-width:650px){.card-stencil-line-medium{width:80px;height:10px}}"]}]}],e}(),we=function(){function e(){this.numCards=3,this.cards=[]}return e.prototype.ngOnInit=function(){for(var e=0;e<this.numCards;e++)this.cards.push(e)},e.decorators=[{type:n.Component,args:[{selector:"card-stencil-list",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 ',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 "]}]}],e.propDecorators={numCards:[{type:n.Input}]},e}();var Ie=function(){function e(){}return e.decorators=[{type:n.Component,args:[{selector:"search-bar-stencil",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 ',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 "]}]}],e}(),ke=function(){function e(){this.showHeader=!0,this.numRows=3,this.rowHeight="51px",this.sidePadding="17px",this.rows=[]}return e.prototype.ngOnInit=function(){for(var e=0;e<this.numRows;e++)this.rows.push(e);this.listItemRowStyles={height:""+this.rowHeight,padding:"0 "+this.sidePadding}},e.decorators=[{type:n.Component,args:[{selector:"list-stencil",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 ',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 "]}]}],e.propDecorators={showHeader:[{type:n.Input}],numRows:[{type:n.Input}],rowHeight:[{type:n.Input}],sidePadding:[{type:n.Input}]},e}();var Se=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatCardModule,i.MatIconModule,i.MatInputModule,i.MatSelectModule,i.MatExpansionModule,i.MatCheckboxModule],declarations:[ye,xe,we,Ie,ke],exports:[ye,xe,we,Ie,ke]}]}],e}(),Ce=function(){function e(e,t){this.billingService=e,this.cdr=t,this.showPricing=!0,this._hasVerifiedContract=null,this._canAccessContractPricing=null,this.addonSelected=new n.EventEmitter,this.billedProductsMap=new Map,this.billedProductLoaded=new Map,this.subscriptions=[]}return Object.defineProperty(e.prototype,"addons",{set:function(e){this._addons=e,this.populateBilledProduct()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hasVerifiedContract",{set:function(e){this._hasVerifiedContract=e,this.populateBilledProduct()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"canAccessContractPricing",{set:function(e){this._canAccessContractPricing=e,this.populateBilledProduct()},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){this.populateBilledProduct()},e.prototype.populateBilledProduct=function(){var e=this;if(this.displayContractPricing()){var t=this._addons.map((function(t){return e.billedProductsMap.set(t.addonId,null),e.billedProductLoaded.set(t.addonId,!1),t.billingId}));this.subscriptions.push(this.billingService.getMultiProductPricing(this.partnerID,t).subscribe((function(t){e._addons.forEach((function(n){var i=t[n.billingId];if(i){var r=m.buildBilledProductFromProductPricingAndAddon(n,i);e.billedProductsMap.set(n.addonId,r),e.billedProductLoaded.set(n.addonId,!0)}})),e.cdr.detectChanges()})))}},e.prototype.onClick=function(e){this.addonSelected.emit(e)},e.prototype.instanceOfPricing=function(e){return"number"!=typeof e&&(void 0!==e.currency&&void 0!==e.prices)},e.prototype.getDisplayPricing=function(e){var t=e.price;return t&&this.instanceOfPricing(t)?t:{currency:e.currency,prices:[{price:e.price,frequency:e.billingFrequency?e.billingFrequency:"Monthly"}]}},e.prototype.noData=function(){return b.isNullOrUndefined(this._hasVerifiedContract)||b.isNullOrUndefined(this._canAccessContractPricing)},e.prototype.displayContractPricing=function(){return this._canAccessContractPricing&&this._hasVerifiedContract},e.prototype.isBilledProductLoaded=function(e){if(this.noData())return!1;if(this.displayContractPricing()){var t=this.billedProductLoaded.get(e.addonId);return t||!1}return!0},e.prototype.ngOnDestroy=function(){this.subscriptions.forEach((function(e){return e.unsubscribe()}))},e.decorators=[{type:n.Component,args:[{selector:"va-addon-list",template:'<mat-list *ngIf="_addons" class="addon-list">\n <mat-divider></mat-divider>\n <ng-container *ngFor="let addon of _addons">\n <mat-list-item (click)="onClick(addon.addonId)">\n <div class="addon-icon-title">\n <img *ngIf="addon.icon;else noIcon" class="addon-icon" [src]="addon.icon" mat-list-avatar/>\n <ng-template #noIcon>\n <mat-icon class="addon-default-icon" mat-list-icon>add_circle</mat-icon>\n </ng-template>\n <div class="addon-title-tagline">\n <p class="addon-title" matLine>{{ addon.title }} </p>\n <p class="addon-tagline" matLine>{{ addon.tagline }}</p>\n </div>\n </div>\n <div *ngIf="showPricing" class="price-section">\n <va-pricing\n [pricing]="getDisplayPricing(addon)"\n [highlightPrice]="false"\n [hasVerifiedContract]="_hasVerifiedContract"\n [billedProduct]="billedProductsMap.get(addon.addonId)"\n [loaded]="isBilledProductLoaded(addon)">\n </va-pricing>\n </div>\n </mat-list-item>\n <mat-divider></mat-divider>\n </ng-container>\n</mat-list>\n',styles:[":host{display:block}h2+:host{margin:-8px 0}:host ::ng-deep .mat-list-item.mat-2-line{height:auto!important}:host ::ng-deep .mat-list .mat-list-item .mat-list-item-content{padding:8px;-webkit-box-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}@media screen and (min-width:800px){:host ::ng-deep .mat-list .mat-list-item .mat-list-item-content{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}}.addon-list{position:relative}.addon-default-icon{margin:0 5px;color:#4caf50}.addon-icon{width:32px;height:32px}.addon-icon-title{-webkit-box-flex:1;flex-grow:1;display:-webkit-box;display:flex;width:100%}@media screen and (min-width:800px){.addon-icon-title{width:auto}}.addon-title-tagline{padding:0 16px 10px 8px;-webkit-box-flex:1;flex-grow:1}.addon-title-tagline .addon-title{color:#212121;font-size:16px;line-height:1.2;margin:6px 0;white-space:normal}.addon-title-tagline .addon-tagline{color:#616161;font-size:14px;margin:0;white-space:normal}.price-section{min-width:10em;margin-top:6px;flex-shrink:0}mat-list-item:hover{background-color:#fafafa!important;cursor:pointer!important}"]}]}],e.ctorParameters=function(){return[{type:m.BillingService},{type:n.ChangeDetectorRef}]},e.propDecorators={addons:[{type:n.Input,args:["addons"]}],showPricing:[{type:n.Input}],partnerID:[{type:n.Input}],hasVerifiedContract:[{type:n.Input,args:["hasVerifiedContract"]}],canAccessContractPricing:[{type:n.Input,args:["canAccessContractPricing"]}],addonSelected:[{type:n.Output}]},e}();var Fe=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[m.BillingModule,t.CommonModule,i.MatIconModule,i.MatListModule,i.MatDividerModule,N],declarations:[Ce],exports:[Ce]}]}],e}();var Pe=new n.InjectionToken("HeimdallService"),Te=function(){function e(e){this.userEvents=e}return e.prototype.track=function(e,t,n,i,r){this.userEvents.track(e,t,n,i,r)},e.decorators=[{type:n.Injectable}],e.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Inject,args:[Pe]}]}]},e}();var Oe=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{providers:[Te]}]}],e}();var Ee=function(){function e(e,t,i){this.userEvents=e,this.filterService=t,this.translateService=i,this.useCustomCase=!1,this.categorySelected=new n.EventEmitter,this.packageIdSelected=new n.EventEmitter,this.getDataForCategory=new n.EventEmitter,this.categories$$=new s.BehaviorSubject([]),this.packagesMap$$=new s.BehaviorSubject(new Map),this.searchTerm$$=new s.BehaviorSubject(""),this.selectedCateoryId$$=new s.BehaviorSubject(""),this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0)}return Object.defineProperty(e.prototype,"categories",{set:function(e){this.categories$$.next(e||[])},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryIdToStoreItemListMap",{set:function(e){this.packagesMap$$.next(e||new Map)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this,t=Ae.map((function(e){return new o.CheckboxFilterField({name:e.name,id:e.categoryId,value:!1,condition:function(t){var n=[];return t.lmiCategories&&(n=t.lmiCategories.map((function(e){return v.Categories[e].toLowerCase()}))),n.indexOf(e.categoryId)>-1}})})),n=new o.FilterSection({title:"LMI Category",type:"or",fields:t});this.lmiCategoryFilter=new o.Filters("Store Filters",[n]),this.filters$=this.categories$$.pipe(c.map((function(e){var t=new o.TabbedFilterField({name:"",value:null,id:"categorytab",options:e});return new o.Filters("Store Filters",[new o.FilterSection({title:"Categories",type:"or",fields:[t]}),n])}))),this.filterService.setFilters(this.lmiCategoryFilter),this.searchTermSubscription=this.searchTerm$$.asObservable().pipe(c.debounceTime(300),c.distinctUntilChanged()).subscribe((function(t){return e.userEvents.track("store","search-input","",1,{searchTerm:t})}));var i=this.filterService.filters.fieldValuesObservable.pipe(c.startWith([]),c.map((function(){return e.lmiCategoryFilter.fields.filter((function(e){return e.value}))})));this.showLMIFilter$=i.pipe(c.filter((function(e){return!!e})),c.take(1),c.map((function(e){return e.length>0}))),this.filteredItems$=s.combineLatest(this.packagesMap$$,this.searchTerm$$,this.selectedCateoryId$$,i).pipe(c.map((function(t){var n=S(t,4),i=n[0],r=n[1],o=n[2],a=(n[3],[]);return i.size&&(a=o?i.get(o):i.get(Array.from(i.keys())[0])),a=a?e.lmiCategoryFilter.applyFilters(a):[],r?a.filter((function(e){return-1!==e.name.toLowerCase().indexOf(r.toLowerCase())})):a})))},e.prototype.ngOnDestroy=function(){this.searchTermSubscription.unsubscribe()},e.prototype.onSearchTermChanged=function(e){this.searchTerm$$.next(e)},e.prototype.onFieldValueChanged=function(e){if(e instanceof o.TabbedFilterField){this.selectedCateoryId$$.next(e.value.id),this.categorySelected.emit(e.value);var t=this.packagesMap$$.getValue().get(e.value.id);t&&t.length||this.getDataForCategory.emit(e.value)}},e.prototype.storeItemClicked=function(e){this.packageIdSelected.emit(e.id)},e.decorators=[{type:n.Component,args:[{selector:"va-storefront",template:'<va-filter-container\n [filters]="filters$ | async"\n (searchTermChanged)="onSearchTermChanged($event)"\n (fieldValueChanged)="onFieldValueChanged($event)"\n [theme]="\'plain\'"\n [filterIsOpen]="showLMIFilter$ | async"\n [useCustomCase]="useCustomCase"\n >\n <va-store\n [items]="filteredItems$ | async"\n [searchable]="false"\n (itemClicked)="storeItemClicked($event)"\n content>\n </va-store>\n</va-filter-container>\n',styles:[".public-store-container{padding:20px}va-store{margin-top:20px;display:block}@media only screen and (device-width:375px) and (-webkit-device-pixel-ratio:2){::ng-deep va-filter-tabbed{width:280px}::ng-deep .filter-container .toolbar.toolbar{background:0 0}}@media only screen and (device-width:414px) and (-webkit-device-pixel-ratio:3){::ng-deep va-filter-tabbed{width:280px}::ng-deep .filter-container .toolbar.toolbar{background:0 0}}"]}]}],e.ctorParameters=function(){return[{type:void 0,decorators:[{type:n.Inject,args:[Pe]}]},{type:o.FilterService},{type:l.TranslateService}]},e.propDecorators={categories:[{type:n.Input}],categoryIdToStoreItemListMap:[{type:n.Input}],useCustomCase:[{type:n.Input}],categorySelected:[{type:n.Output}],packageIdSelected:[{type:n.Output}],getDataForCategory:[{type:n.Output}]},e}();var Ne=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,o.UIKitModule,i.MatCardModule,i.MatIconModule,i.MatInputModule,d.FormsModule,d.ReactiveFormsModule,i.MatSelectModule,i.MatExpansionModule,i.MatCheckboxModule,M,te,ve,Se,N,Fe,Oe,l.TranslateModule.forChild()],declarations:[_,Ee],providers:[ne,o.FilterService],exports:[_,M,te,Se,Ee]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var Ae=[{name:"Listings",categoryId:"listings"},{name:"Social",categoryId:"social"},{name:"Reputation",categoryId:"reputation"},{name:"SEO",categoryId:"seo"},{name:"Website",categoryId:"website"},{name:"Advertising",categoryId:"advertising"},{name:"Content & Experience",categoryId:"content_and_experience"}],Me=Ae.reduce((function(e,t){return e[t.categoryId]=t,e}),{}),_e=Ae.reduce((function(e,t){return e[t.name]=t,e}),{}),De=function(){function e(){this.showGetItNow=!0,this.getItNow=new n.EventEmitter}return e.prototype.onGetItNowSelected=function(){this.getItNow.emit(this.salesperson)},Object.defineProperty(e.prototype,"iconUrl",{get:function(){return this.salesperson&&this.salesperson.photoUrlSecure?this.salesperson.photoUrlSecure:"https://vbc-frontend.storage-download.googleapis.com/salesperson-details/default_sales_person.jpg"},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.salesperson&&this.salesperson.formattedName?this.salesperson.formattedName:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"title",{get:function(){return this.salesperson&&this.salesperson.jobTitle?this.salesperson.jobTitle:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"email",{get:function(){return this.salesperson&&this.salesperson.email?this.salesperson.email:""},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cityAndState",{get:function(){return this.salesperson&&this.salesperson.city&&this.salesperson.state?this.salesperson.city+", "+this.salesperson.state:""},enumerable:!0,configurable:!0}),e.decorators=[{type:n.Component,args:[{selector:"va-salesperson-details",template:'<div class="container">\n <div class="salesperson-contact-info">\n\n <div class="salesperson-image" *ngIf="salesperson">\n <va-icon [iconUrl]="iconUrl" [diameter]="60"></va-icon>\n </div>\n\n <div>\n <div class="salesperson-name">{{ name }}</div>\n <div>{{ title }}</div>\n <div>{{ cityAndState }}</div>\n <div><a href="mailto:{{ email }}">{{ email }}</a></div>\n </div>\n\n <div *ngIf="!salesperson" class="generic-contact">\n Contact {{ brandName ? "your " + brandName : "a" }} representative today!\n </div>\n\n <div class="pricing">\n <va-pricing [pricing]="packagePricing" wrapFrequency="true"></va-pricing>\n <div class="cta get-it-now-bottom-button">\n <button mat-button *ngIf="salesperson && showGetItNow" (click)="onGetItNowSelected()" class="now-button">\n Get it Now\n </button>\n </div>\n </div>\n </div>\n</div>\n',styles:["a{color:#1e88e5;text-decoration:none}.container{width:100%;margin:0 auto;background-color:#fff;box-shadow:1px 1px 1px 0 rgba(0,0,0,.2)}.salesperson-image{margin-right:20px}.salesperson-contact-info{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;padding:24px;font-size:14px;color:#9e9e9e}@media screen and (max-width:600px){.salesperson-contact-info{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;display:inline-block}}.salesperson-name{font-size:20px;font-weight:700;color:#212121}.generic-contact{margin-left:20px}.pricing{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-flex:1;flex-grow:1;-webkit-box-pack:end;justify-content:flex-end}.pricing ::ng-deep .price-box{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row}.pricing ::ng-deep .price-number{margin-right:4px}@media screen and (min-width:600px){.pricing{padding-left:16px}}.pricing va-pricing{margin-right:20px}.now-button{font-size:14px;color:#fff;background-color:#4caf50}"]}]}],e.propDecorators={salesperson:[{type:n.Input}],packagePricing:[{type:n.Input}],brandName:[{type:n.Input}],showGetItNow:[{type:n.Input}],getItNow:[{type:n.Output}]},e}();var Le=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatButtonModule,i.MatIconModule,o.VaIconModule,N],declarations:[De],exports:[De],entryComponents:[De]}]}],e}(),qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return w(t,e),t.fromApi=function(e){var n=new t;return!e.pricing&&e.selling_price&&(e.pricing={currency:e.currency,prices:[{price:100*e.selling_price,frequency:e.billingFrequency,isStartingPrice:!1}]}),Object.assign(n,e),n.name||(n.name="Untitled"),e.created&&(n.createdDate=new Date(e.created)),e.updated&&(n.updatedDate=new Date(e.updated)),n},Object.defineProperty(t.prototype,"isPackageFree",{get:function(){return this.isFree},enumerable:!0,configurable:!0}),t}(re);function Re(e,t){if(!t||0===t.length)return e||[];if(!e||0===e.length)return[];var n=(e||[]).reduce((function(e,t){return e.set(Ve(t),t),e}),new Map);return $e(t,e.map(Ve)).reduce((function(e,t){return e.push(n.get(t)),e}),[]).filter(Ue)}function Ue(e,t,n){return e&&n.indexOf(e)===t}function $e(e,t){return null==t||0===t.length?[]:e&&0!==e.length?e.filter((function(e){return t.indexOf(e)>=0})).concat(t).filter(Ue):t.filter(Ue)}function Ve(e){return e.addonId||e.productId}var je=function(){function e(){this.showActionButton=!0,this.showPricing=!0,this.actionLabel="Get It Now",this.getItNow=new n.EventEmitter,this.standAloneProducts$$=new s.BehaviorSubject([]),this.products$=new s.BehaviorSubject([]),this.addons$=new s.BehaviorSubject([]),this.pkg$=new s.ReplaySubject(1),this.itemSelectedEvent$=new s.ReplaySubject(1),this.combinedItemsList$=s.combineLatest(this.products$,this.addons$,(function(e,t){return[].concat(e||[]).concat(t||[])})),this.orderedItemsList$=s.combineLatest(this.combinedItemsList$,this.pkg$,(function(e,t){return Re(e,t&&t.productOrder||[])}));var t=this.combinedItemsList$.pipe(c.skipWhile((function(e){return!e||0===e.length})),c.shareReplay(1)),i=t.pipe(c.map((function(e){return 0})),c.take(1)),r=s.merge(i,this.itemSelectedEvent$);this.selectedItem$=s.combineLatest(r,this.orderedItemsList$).pipe(c.map((function(e){var t=S(e,2),n=t[0];return t[1][n]}))),this.lmiCategories$=this.products$.pipe(c.skipWhile((function(e){return!e||0===e.length})),c.map((function(t){return e.getLmiCategories(t)}))),this.productNameForSingleAddon$=t.pipe(c.map((function(t){return e.getProductNameForSingleAddon(t)}))),this.displayTagName$=s.combineLatest(this.pkg$,this.combinedItemsList$).pipe(c.map((function(t){var n=S(t,2),i=n[0],r=n[1];return e.getDisplayTagline(i,r)})))}return Object.defineProperty(e.prototype,"standAloneProducts",{set:function(e){this.standAloneProducts$$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"products",{set:function(e){this.products$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"addons",{set:function(e){this.addons$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pkg",{set:function(e){this.pkg$.next(e)},enumerable:!0,configurable:!0}),e.getLmiCategories=function(e){var t=[];return e&&e.forEach((function(e){t=t.concat(e.getLmiCategoryNames())})),new Set(t)},e.getDisplayTagline=function(e,t){return e&&e.tagline?e.tagline:t&&1===t.length&&t[0].tagline||""},e.getProductNameForSingleAddon=function(e){if(e&&1===e.length&&e[0]instanceof a.Addon)return e[0].productName},e.prototype.selectItem=function(e){this.itemSelectedEvent$.next(e)},e.prototype.emitGetItNow=function(){this.getItNow.emit()},e.decorators=[{type:n.Component,args:[{selector:"va-package-details",template:'<div *ngIf="pkg$ | async as pkg" class="page">\n <va-header-container [iconUrl]="pkg.icon"\n [title]="pkg.name"\n [tagline]="displayTagName$ | async"\n [prerequisite]="productNameForSingleAddon$ | async"\n [chipLabels]="lmiCategories$ | async"\n [pricing]="pkg.pricing"\n [pricingLabel]="\'Pricing\'"\n [showAction]="showActionButton"\n [showPricing]="showPricing"\n [actionLabel]="actionLabel"\n [actionEnabled]=true\n (actionSelected)="emitGetItNow()"\n ></va-header-container>\n <ng-container *ngIf="pkg?.content">\n <va-selling-info [description]="pkg.content"></va-selling-info>\n </ng-container>\n\n <va-products-nav [items]="orderedItemsList$ | async"\n [hideItemsNav]="pkg?.hide_product_icons_and_names"\n (itemSelected)="selectItem($event)"></va-products-nav>\n\n <ng-container *ngIf="selectedItem$ | async as selectedItem">\n <div *ngIf="!pkg?.hide_product_details" class="package-content">\n <div class="left-column">\n <section\n *ngIf="(selectedItem.endUserMarketing?.description || selectedItem.endUserMarketing?.keySellingPoints) ||\n (selectedItem.description || selectedItem.keySellingPoints)">\n <va-selling-info [description]="selectedItem.endUserMarketing?.description || selectedItem.description"\n [keySellingPoints]="selectedItem.endUserMarketing?.keySellingPoints || selectedItem.keySellingPoints"></va-selling-info>\n </section>\n\n <section *ngIf="(selectedItem.endUserMarketing?.faqs?.length > 0\n && selectedItem.endUserMarketing?.faqs[0].question) || selectedItem.faqs?.length > 0">\n <h2 class="va-component-title">FAQs</h2>\n <va-faqs [faqs]="selectedItem.endUserMarketing?.faqs || selectedItem.faqs"></va-faqs>\n </section>\n </div>\n\n <div class="right-column">\n <section *ngIf="selectedItem.screenshotUrls?.length > 0 || selectedItem.screenshots?.length > 0">\n <h2 class="va-component-title">Gallery</h2>\n <va-image-gallery [imageUrls]="selectedItem.screenshotUrls || selectedItem.screenshots"></va-image-gallery>\n </section>\n\n <section *ngIf="selectedItem.endUserMarketing?.files?.length > 0 || selectedItem.files?.length > 0">\n <h2 class="va-component-title">Files</h2>\n <va-files [files]="selectedItem.endUserMarketingFiles || selectedItem.files"></va-files>\n </section>\n </div>\n </div>\n </ng-container>\n</div>\n',styles:[":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-component-title{font-size:24px;font-weight:300;margin-top:0}@media screen and (min-width:600px){.va-component-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.page{position:relative;margin:0 auto 20px;background:#fff;color:#212121;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px}.page .item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width:600px){.left-column{width:100%}}.right-column{width:34%}.package-content{display:-webkit-box;display:flex}@media screen and (max-width:600px){.right-column{width:100%}.package-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}"]}]}],e.ctorParameters=function(){return[]},e.propDecorators={showActionButton:[{type:n.Input}],showPricing:[{type:n.Input}],actionLabel:[{type:n.Input}],getItNow:[{type:n.Output}],standAloneProducts:[{type:n.Input}],products:[{type:n.Input}],addons:[{type:n.Input}],pkg:[{type:n.Input}]},e}();var ze=function(){function e(){this.itemSelected=new n.EventEmitter,this.selectedIndex=0,this.pageMarker=0}return e.prototype.onItemSelected=function(e){this.selectedIndex=e,this.itemSelected.emit(e)},e.prototype.moveSlides=function(e){var t=Math.round(e.offsetWidth/e.children[0].clientWidth),n=Math.ceil(e.children.length/t);if(0!==n){var i=e.offsetWidth,r=0;-1===this.pageMarker?(this.pageMarker=n-1,r=i*this.pageMarker,e.style.left="-"+r+"px"):this.pageMarker>=n?(e.style.left="0px",this.pageMarker=0):(r=i*this.pageMarker,e.style.left="-"+r+"px")}},e.prototype.pageNext=function(e){this.pageMarker++,this.moveSlides(e)},e.prototype.pagePrev=function(e){this.pageMarker--,this.moveSlides(e)},e.decorators=[{type:n.Component,args:[{selector:"va-products-nav",template:'<p *ngIf="items?.length > 1" class="item-amount">{{ \'FRONTEND.STORE.CONTAINS_NUM_ITEMS\' | translate: {itemCount: items.length} }}</p>\n<div class="wrapper">\n <nav *ngIf="items && !hideItemsNav" (swipeleft)="pageNext(slides)" (swiperight)="pagePrev(slides)">\n <div [ngClass]="{\'hide-arrows\': items && items.length < 5}">\n <span class="prev" (click)="pagePrev(slides)"><mat-icon>keyboard_arrow_left</mat-icon></span>\n <span class="next" (click)="pageNext(slides)"><mat-icon>keyboard_arrow_right</mat-icon></span>\n </div>\n <ul class="slides" #slides>\n <li *ngFor="let item of items; index as i;" (click)="onItemSelected(i)">\n <a [ngClass]="{\'active\': i === selectedIndex}">\n <span class="icon-area">\n <va-icon [iconUrl]="item.icon || item.iconUrl" [name]="item.name || item.title" [diameter]="80"></va-icon>\n <va-icon *ngIf="item.addonId" class="addon-indicator" [iconUrl]="item.productIcon" [name]="item.productName" [diameter]="24"></va-icon>\n </span>\n <p>{{ item.name || item.title }}</p>\n <div *ngIf="item.addonId">\n <span class="requires-text">{{ \'FRONTEND.STORE.REQUIRES\' | translate }}</span>\n <span>{{item.productName}}</span>\n </div>\n </a>\n </li>\n </ul>\n </nav>\n</div>\n',styles:["nav{position:relative;width:350px;margin:0 auto;background:#fff;border:1px solid #e0e0e0;border-width:1px 0;overflow:hidden}nav ul{display:-webkit-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0 50px;padding:0;position:relative;left:0;-webkit-transition:left .3s;transition:left .3s;word-break:break-word}nav li{min-width:100%;-webkit-box-flex:1;flex:1 0 25%;text-align:center;font-size:14px}nav li:first-child a{border-right:1px solid #e0e0e0}nav a{position:relative;display:block;height:100%;padding:20px;text-decoration:none;color:#212121;-webkit-transition:background .3s;transition:background .3s;-webkit-box-align:center;align-items:center;border-right:1px solid #e0e0e0;cursor:pointer}nav a:hover{background-color:rgba(255,255,255,.6)}nav a.active{background-color:#fff}nav a.active:after{content:'';display:block;position:absolute;bottom:-1px;left:0;width:100%;height:1px;background-color:#fff}nav p{margin-bottom:0}nav .icon img{width:80px;min-width:80px;height:80px}nav .next,nav .prev{position:absolute;height:100%;width:50px;top:0;background:rgba(33,33,33,.1);cursor:pointer;text-align:center;opacity:1;-webkit-transition:opacity .3s;transition:opacity .3s;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;z-index:1}nav .next:not(.disabled):hover,nav .prev:not(.disabled):hover{background:rgba(33,33,33,.3)}nav .prev{left:0}nav .next{right:0}nav .disabled{cursor:default;opacity:0}@media screen and (min-width:600px){nav{width:auto;overflow:initial}nav li{min-width:0;width:25%;-webkit-box-flex:0;flex-grow:0}nav .hide-arrows{display:none}nav .hide-arrows+.slides{margin:0}}va-icon{display:inline-block}.item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}.wrapper{overflow:hidden}.requires-text{color:#9e9e9e}.icon-area{position:relative;display:inline-block}.addon-indicator{position:absolute;border:2px solid #fff;border-radius:50%;bottom:-2px;right:-2px}"]}]}],e.propDecorators={items:[{type:n.Input}],hideItemsNav:[{type:n.Input}],itemSelected:[{type:n.Output}]},e}();var Ge=function(){function e(){this.itemSelected=new n.EventEmitter,this.selected_id="",this.pageMarker=0}return e.prototype.onItemSelected=function(e){this.selected_id=e,this.itemSelected.emit(e)},e.prototype.moveSlides=function(e){var t=Math.round(e.offsetWidth/e.children[0].clientWidth),n=Math.ceil(e.children.length/t);if(0!==n){var i=e.offsetWidth,r=0;-1===this.pageMarker?(this.pageMarker=n-1,r=i*this.pageMarker,e.style.left="-"+r+"px"):this.pageMarker>=n?(e.style.left="0px",this.pageMarker=0):(r=i*this.pageMarker,e.style.left="-"+r+"px")}},e.prototype.pageNext=function(e){this.pageMarker++,this.moveSlides(e)},e.prototype.pagePrev=function(e){this.pageMarker--,this.moveSlides(e)},e.decorators=[{type:n.Component,args:[{selector:"va-products-nav-v2",template:'<p *ngIf="items?.length > 1" class="item-amount">{{ \'FRONTEND.STORE.CONTAINS_NUM_ITEMS\' | translate: {itemCount: items.length} }}</p>\n<div class="wrapper">\n <nav *ngIf="items && !hideItemsNav" (swipeleft)="pageNext(slides)" (swiperight)="pagePrev(slides)">\n <div [ngClass]="{\'hide-arrows\': items && items.length < 5}">\n <span class="prev" (click)="pagePrev(slides)"><mat-icon>keyboard_arrow_left</mat-icon></span>\n <span class="next" (click)="pageNext(slides)"><mat-icon>keyboard_arrow_right</mat-icon></span>\n </div>\n <ul class="slides" #slides>\n <li *ngFor="let lineItem of items;" (click)="onItemSelected(lineItem?.item?.id)">\n <a [ngClass]="{\'active\': lineItem?.item?.id === selected_id}">\n <span class="icon-area">\n <va-icon [iconUrl]="lineItem?.item?.icon" [name]="lineItem?.item?.name" [diameter]="80"></va-icon>\n <va-icon *ngIf="lineItem?.parent?.id" class="addon-indicator" [iconUrl]="lineItem?.parent?.icon" [name]="lineItem?.parent?.name"\n [diameter]="24"></va-icon>\n </span>\n <div class="name-container">\n <div>{{ lineItem?.item?.name }}</div>\n <div *ngIf="lineItem?.item?.editionName" class="edition-name">{{ lineItem.item.editionName }}</div>\n </div>\n <div *ngIf="lineItem?.parent?.id">\n <span class="requires-text">{{ \'FRONTEND.STORE.REQUIRES\' | translate }} </span>\n <span>{{lineItem?.parent.name}}</span>\n </div>\n </a>\n </li>\n </ul>\n </nav>\n</div>\n',styles:[".name-container{display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.name-container va-badge{margin-top:12px;margin-left:6px}nav{position:relative;width:350px;margin:0 auto;background:#fff;border:1px solid #e0e0e0;border-width:1px 0;overflow:hidden}nav ul{display:-webkit-box;display:flex;flex-wrap:nowrap;list-style:none;margin:0 50px;padding:0;position:relative;left:0;-webkit-transition:left .3s;transition:left .3s;word-break:break-word}nav li{min-width:100%;-webkit-box-flex:1;flex:1 0 25%;text-align:center;font-size:14px}nav li:first-child a{border-right:1px solid #e0e0e0}nav a{position:relative;display:block;height:100%;padding:20px;text-decoration:none;color:#212121;-webkit-transition:background .3s;transition:background .3s;-webkit-box-align:center;align-items:center;border-right:1px solid #e0e0e0;cursor:pointer}nav a:hover{background-color:rgba(255,255,255,.6)}nav a.active{background-color:#fff}nav a.active:after{content:'';display:block;position:absolute;bottom:-1px;left:0;width:100%;height:1px;background-color:#fff}nav p{margin-bottom:0}nav .icon img{width:80px;min-width:80px;height:80px}nav .next,nav .prev{position:absolute;height:100%;width:50px;top:0;background:rgba(33,33,33,.1);cursor:pointer;text-align:center;opacity:1;-webkit-transition:opacity .3s;transition:opacity .3s;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;z-index:1}nav .next:not(.disabled):hover,nav .prev:not(.disabled):hover{background:rgba(33,33,33,.3)}nav .prev{left:0}nav .next{right:0}nav .disabled{cursor:default;opacity:0}@media screen and (min-width:600px){nav{width:auto;overflow:initial}nav li{min-width:0;width:25%;-webkit-box-flex:0;flex-grow:0}nav .hide-arrows{display:none}nav .hide-arrows+.slides{margin:0}}va-icon{display:inline-block}.item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}.wrapper{overflow:hidden}.requires-text{color:#9e9e9e}.icon-area{position:relative;display:inline-block}.addon-indicator{position:absolute;border:2px solid #fff;border-radius:50%;bottom:-2px;right:-2px}.edition-name{color:#9e9e9e;font-style:italic;text-align:center;width:100%;font-size:16px;margin-bottom:4px}"]}]}],e.propDecorators={items:[{type:n.Input}],hideItemsNav:[{type:n.Input}],itemSelected:[{type:n.Output}]},e}();var Be=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatIconModule,o.VaIconModule,o.VaBadgeModule,l.TranslateModule.forChild()],declarations:[ze,Ge],exports:[ze,Ge]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var We=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[o.VaImageGalleryModule,t.CommonModule,i.MatIconModule,o.VaSafeHtmlModule,o.VaIconModule,N,i.MatButtonModule,pe,me,fe,U,Fe,Be],declarations:[je],exports:[je],entryComponents:[je]}]}],e}(),He=function(){function e(){}return Object.defineProperty(e.prototype,"isPackageFree",{get:function(){var e;return this.pricing&&(!!(e=this.pricing.prices)&&e.some((function(e){return 0===e.price||void 0===e.price})))},enumerable:!0,configurable:!0}),e}();var Qe=function(){function e(e,t){var i=this;this.translateService=e,this.showActionButton=!0,this.showPricing=!0,this.actionLabel="FRONTEND.STORE.GET_IT_NOW",this.getItNow=new n.EventEmitter,this.pkg$$=new s.ReplaySubject(1),this.itemSelectedEvent$$=new s.BehaviorSubject(""),this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(e){return i.translateService.use(e)})),this.orderedLineItems$=this.pkg$$.pipe(c.map((function(e){return e.line_items})),c.filter((function(e){return!!e||0===e.length})),c.shareReplay(1)),this.productNameForSingleAddon$=this.orderedLineItems$.pipe(c.map((function(e){return i.getParentsNameForItem(e)}))),this.selectedItem$=s.combineLatest([this.itemSelectedEvent$$,this.orderedLineItems$]).pipe(c.map((function(e){var t=S(e,2),n=t[0];return t[1].find((function(e){return e.item.id===n}))}))),this.lmiCategories$=this.orderedLineItems$.pipe(c.map((function(e){var t=(e||[]).reduce((function(e,t){return t&&t.item&&(t.item.lmiCategories||[]).forEach((function(t){return e.set(t,t)})),e}),new Map),n=[];return t.forEach((function(e,t){n.push(t)})),n}))),this.orderedLineItems$.pipe(c.map((function(e){return e[0]})),c.tap((function(e){return i.selectItem(e&&e.item?e.item.id:"")})),c.take(1)).subscribe()}return Object.defineProperty(e.prototype,"pkg",{set:function(e){this.pkg$$.next(e)},enumerable:!0,configurable:!0}),e.prototype.selectItem=function(e){this.itemSelectedEvent$$.next(e)},e.prototype.emitGetItNow=function(){this.getItNow.emit()},e.prototype.getParentsNameForItem=function(e){if(e&&1===e.length&&e[0])return e[0].parent.name},e.decorators=[{type:n.Component,args:[{selector:"va-package-details-v2",template:'<div *ngIf="pkg$$ | async as pkg" class="page">\n <va-header-container [iconUrl]="pkg.icon"\n [title]="pkg.name"\n [tagline]="pkg.tagline"\n [prerequisite]="productNameForSingleAddon$ | async"\n [chipLabels]="lmiCategories$ | async"\n [pricing]="pkg.pricing"\n [pricingLabel]="\'FRONTEND.STORE.PRICING\' | translate"\n [showAction]="showActionButton"\n [showPricing]="showPricing"\n [actionLabel]="actionLabel | translate"\n [actionEnabled]=true\n (actionSelected)="emitGetItNow()"\n ></va-header-container>\n\n <ng-container *ngIf="pkg?.content">\n <va-selling-info [description]="pkg.content"></va-selling-info>\n </ng-container>\n\n <va-products-nav-v2 [items]="orderedLineItems$ | async"\n [hideItemsNav]="pkg?.hide_product_icons_and_names"\n (itemSelected)="selectItem($event)"></va-products-nav-v2>\n\n <ng-container *ngIf="selectedItem$ | async as selectedItem">\n <div *ngIf="!pkg?.hide_product_details" class="package-content">\n <div class="left-column">\n <section *ngIf="selectedItem?.item?.description || selectedItem?.item?.keySellingPoints">\n <va-selling-info [description]="selectedItem?.item?.description"\n [keySellingPoints]="selectedItem?.item?.keySellingPoints"></va-selling-info>\n </section>\n\n <section *ngIf="selectedItem?.item?.faqs?.length > 0 && selectedItem?.item?.faqs[0].question">\n <h2 class="va-component-title">{{ \'FRONTEND.STORE.FAQS\' | translate }}</h2>\n <va-faqs [faqs]="selectedItem.item.faqs"></va-faqs>\n </section>\n </div>\n\n <div class="right-column">\n <section *ngIf="selectedItem?.item?.screenshotUrls?.length > 0">\n <h2 class="va-component-title">{{ \'FRONTEND.STORE.GALLERY\' | translate }}</h2>\n <va-image-gallery [imageUrls]="selectedItem.item.screenshotUrls"></va-image-gallery>\n </section>\n\n <section *ngIf="selectedItem?.item?.files?.length > 0">\n <h2 class="va-component-title">{{ \'FRONTEND.STORE.FILES\' | translate }}</h2>\n <va-files [files]="selectedItem.item.files"></va-files>\n </section>\n </div>\n </div>\n </ng-container>\n</div>\n',styles:[":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-component-title{font-size:24px;font-weight:300;margin-top:0}@media screen and (min-width:600px){.va-component-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.page{position:relative;margin:0 auto 20px;background:#fff;color:#212121;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px}.page .item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width:600px){.left-column{width:100%}}.right-column{width:34%}.package-content{display:-webkit-box;display:flex}@media screen and (max-width:600px){.right-column{width:100%}.package-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}"]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]}]},e.propDecorators={showActionButton:[{type:n.Input}],showPricing:[{type:n.Input}],actionLabel:[{type:n.Input}],pkg:[{type:n.Input}],getItNow:[{type:n.Output}]},e}();var Ke=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[o.VaImageGalleryModule,t.CommonModule,i.MatIconModule,o.VaSafeHtmlModule,o.VaIconModule,N,i.MatButtonModule,pe,me,fe,U,Fe,Be,l.TranslateModule.forChild()],declarations:[Qe],exports:[Qe],entryComponents:[Qe]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var Ye={SUCCESS:0,WARNING:1,ERROR:2};function Xe(e,t,n){return!e||e.length<1?[]:e.map((function(e){return function(e,t,n){if(!e)return null;var i=function(e,t,n){if(!(t&&t.length&&e.products&&e.products.length))return[];var i=new Map;return t.forEach((function(e){return i.set(e.productId,e)})),e.products.map((function(t){var r=i.get(t),o=function(e,t){if(!e||0===e.length||!t||0===t.length)return[];return e.reduce((function(e,n){var i=t.find((function(e){return e.addonId===n.addonId}));if(i)for(var r=i.quantity||1,o=0;o<r;o++)e.push(n);return e}),[])}(n,e.addon_keys);return r?Ze(r,o):null})).filter((function(e){return e}))}(e,t,n),r=function(e,t,n){if(!n||n.length<1||!e.addon_keys)return[];var i=new Map;t.forEach((function(e){return i.set(e.productId,e)}));var r=new Map;return n.forEach((function(e){return r.set(e.addonId,e)})),e.addon_keys.reduce((function(t,n){if(e.products&&e.products.some((function(e){return e===n.appId})))return t||[];for(var o=i.get(n.appId),a=o?o.name:null,s=o?o.iconUrl:null,l=n.quantity||1,c=r.get(n.addonId),d=0;d<l;d++)t.push(et(c,a,s));return t}),[])}(e,t,n);return function(e,t,n){var i,r,o=0;try{for(var a=k(e.addon_keys||[]),s=a.next();!s.done;s=a.next()){var l=s.value;o+=l.quantity||1}}catch(e){i={error:e}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return{formattedPrices:e.priceStrings.join(", "),packageId:e.solution_id,name:e.name,icon:e.icon,productIds:e.products,products:t||[],addonsWithNoParent:n||[],totalAddons:o}}(e,i,r)}(e,t,n)}))}function Ze(e,t){if(!e)return null;if(!t||t.length<1)return Je(e,null);var n=function(e){return e.map((function(e){return et(e)}))}(t.filter((function(t){return t.appId===e.productId})));return Je(e,n)}function Je(e,t){var n;return e instanceof le&&(n={parentId:e.parentId,parentName:e.parentName,parentIconUrl:e.parentIconUrl,multipleActivations:e.multipleActivations||!1}),{formattedPrices:e.priceStrings.join(", "),productId:e.productId,name:e.name,tagline:e.tagline||"",icon:e.iconUrl,addons:t||[],editionId:e.editionId,editionName:e.editionName,parentInfo:n}}function et(e,t,n){return{parentId:e.appId,addonId:e.addonId,name:e.title,tagline:e.tagline||"",icon:e.icon||"",multipleActivations:e.multipleActivations,parentIcon:n||"",parentName:t||""}}function tt(e,t,n){return{formattedPrices:e.formattedPrices,productId:e.productId,name:e.name,editionId:e.editionId,editionName:e.editionName,tagline:e.tagline,icon:e.icon,addons:t||[],activationStatus:n||null,parentInfo:e.parentInfo||null}}function nt(e,t){return t&&0!==t.length?e.map((function(e){var n,i,r,o,a=e.products.map((function(e){return it(e,t)})),s=e.addonsWithNoParent.map((function(e){return rt(e,ot(t,e.addonId))})),l=C(a.map((function(e){return e.activationStatus.status})),a.map((function(e){return e.addons?e.addons.map((function(e){return e.activationStatus.status})):[]})).reduce((function(e,t){return t.concat(e)}),[]),s.map((function(e){return e.activationStatus?e.activationStatus.status:null}))),c=function(e){switch(e){case Ye.SUCCESS:return{icon:"check_circle",status:e,text:"Activated"};case Ye.WARNING:return{icon:"warning",status:e,text:"Activation Warnings"};default:return{icon:"error",status:e,text:"Activation Errors Occured"}}}(function(e){switch(e){case 0:return Ye.SUCCESS;case 1:return Ye.WARNING;default:return Ye.ERROR}}(Math.max.apply(Math,C(l))));return i=a,r=s,o=c,{formattedPrices:(n=e).formattedPrices,packageId:n.packageId,name:n.name,icon:n.icon,productIds:n.productIds,products:i||[],addonsWithNoParent:r||[],activationStatus:o||null,totalAddons:n.totalAddons}})):e}function it(e,t){if(!t||0===t.length)return e;var n=at(ot(t,e.productId));if(!e.addons)return tt(e,null,n);var i=e.addons.map((function(e){return rt(e,ot(t,e.addonId))}));return tt(e,i,n)}function rt(e,t){return function(e,t){return{parentId:e.parentId,addonId:e.addonId,name:e.name,tagline:e.tagline,icon:e.icon,parentIcon:e.parentIcon,parentName:e.parentName,multipleActivations:e.multipleActivations,activationStatus:t||null}}(e,at(t))}function ot(e,t){if(!e||e.length<=0)return null;var n=e.findIndex((function(e){return e.packageItemId===t}));if(n<0)return null;var i=e[n].status;return e.splice(n,1),i}function at(e){switch(e){case Ye.SUCCESS:return{icon:"check_circle",status:e,text:"Activated"};case Ye.WARNING:return{icon:"warning",status:e,text:"Already Activated"};default:return{icon:"error",status:e,text:"Activation Errors"}}}Ye[Ye.SUCCESS]="SUCCESS",Ye[Ye.WARNING]="WARNING",Ye[Ye.ERROR]="ERROR";var st={INDENT_ZERO:"indent-zero",INDENT_ONE:"indent-one",INDENT_TWO:"indent-two"},lt=function(){function e(){this.enableDropdown=!1,this.indent=st.INDENT_ZERO,this.itemToggled=new n.EventEmitter}return e.prototype.ngOnInit=function(){},e.prototype.toggleItem=function(){this.itemToggled.emit(null)},e.prototype.isActivatedStatus=function(e){return e===Ye.SUCCESS},e.prototype.isWarningStatus=function(e){return e===Ye.WARNING},e.prototype.isErrorStatus=function(e){return e===Ye.ERROR},e.decorators=[{type:n.Component,args:[{selector:"va-package-dropdown-item",template:'<mat-list-item [ngClass]="indent" class="va-dropdown-list-item">\n <va-icon *ngIf="!secondaryIconUrl && !secondaryIconName; else dualIcon" mat-list-avatar [name]="title" [iconUrl]="iconUrl" [diameter]="40"></va-icon>\n <h3 mat-line class="va-dropdown-list-item__title">{{ title }}\n <va-badge *ngIf="titleBadge" small color="blue-solid" class="va-dropdown-list-item__title-badge">{{ titleBadge }}</va-badge>\n <span *ngIf="titleDescriptor" class="va-dropdown-list-item__title-descriptor">{{ titleDescriptor }}</span>\n </h3>\n <p class="package-dropdown-font" mat-line>{{subtitle}}</p>\n\n <span *ngIf="!statusItem" class="va-dropdown-list-item__layout">\n <p class="va-dropdown-list-item__layout va-dropdown-list-item__notice">{{ description }}</p>\n <ng-container *ngIf="enableDropdown; then dropdownButton"></ng-container>\n </span>\n\n <span *ngIf="statusItem" class="va-dropdown-list-item__layout va-dropdown-list-item__status">\n <div [ngClass]="{\n \'activated\': isActivatedStatus(statusItem.status),\n \'warning\': isWarningStatus(statusItem.status),\n \'error\': isErrorStatus(statusItem.status)}">\n <mat-icon>{{statusItem.icon}}</mat-icon>\n </div>\n <p class="va-dropdown-list-item__notice"\n [ngClass]="{\n \'activated\': isActivatedStatus(statusItem.status),\n \'warning\': isWarningStatus(statusItem.status),\n \'error\': isErrorStatus(statusItem.status)}">\n {{ statusItem.text }}\n </p>\n <ng-container *ngIf="enableDropdown; then dropdownButton"></ng-container>\n </span>\n</mat-list-item>\n\n\n<ng-template #dropdownButton>\n <button *ngIf="enableDropdown" mat-icon-button type="button" (click)="toggleItem()">\n <mat-icon mat-list-icon\n class="dropdown-icon"\n [ngClass]="{\'dropdown-icon-rotate-up\': !toggleValue, \'dropdown-icon-rotate-down\': toggleValue}">\n keyboard_arrow_down\n </mat-icon>\n </button>\n</ng-template>\n\n<ng-template #dualIcon>\n <div class="dual-icon">\n <va-icon mat-list-avatar [iconUrl]="iconUrl" [name]="title" [diameter]="40"></va-icon>\n <va-icon mat-list-avatar class="secondary-icon" [iconUrl]="secondaryIconUrl" [diameter]="20" [name]="secondaryIconName"></va-icon>\n </div>\n</ng-template>\n',styles:[".va-dropdown-list-item{border-bottom:1px solid rgba(0,0,0,.12)}mat-list-item .va-dropdown-list-item__title{font-weight:700}.va-dropdown-list-item__title-badge{padding-bottom:4px}.indent-one{padding-left:30px}.va-dropdown-list-item__title-descriptor{font-size:11px;font-weight:700;font-style:italic}.indent-two{padding-left:30px}.indent-two .mat-list-avatar{margin-left:40px}.dual-icon{position:relative;display:inline-block;-webkit-box-ordinal-group:0;order:-1;margin-right:16px}.dual-icon .secondary-icon{position:absolute;border-radius:50%;bottom:-24px;right:-24px}.va-dropdown-list-item__layout{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.va-dropdown-list-item__layout .va-dropdown-list-item__notice{width:-webkit-max-content;width:-moz-max-content;width:max-content;font-style:italic}@media screen and (max-width:500px){.va-dropdown-list-item__layout p{display:none}}.va-dropdown-list-item__layout mat-icon{padding:0}.va-dropdown-list-item__layout button{padding:0;min-width:0}.va-dropdown-list-item__layout button .dropdown-icon{color:rgba(0,0,0,.54)}.va-dropdown-list-item__layout button .dropdown-icon-rotate-down{-webkit-transform:rotate(180deg);transform:rotate(180deg);-webkit-transition:.4s;transition:.4s;pointer-events:none}.va-dropdown-list-item__layout button .dropdown-icon-rotate-up{-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:.4s;transition:.4s;pointer-events:none}.va-dropdown-list-item__status{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-align:center;align-items:center}.va-dropdown-list-item__status p{padding-left:6px;font-size:14px;white-space:nowrap}.va-dropdown-list-item__status .activated{color:#4caf50}.va-dropdown-list-item__status .warning{color:#ffa000}.va-dropdown-list-item__status .error{color:#c62828}",".package-dropdown-font,.product-dropdown-font{color:rgba(0,0,0,.54);font-size:14px;font-weight:400}.package-list-container{border-top:1px solid rgba(0,0,0,.12);padding:0}.package-list-container mat-list{padding:0}.package-dropdown-stencil-display{display:-webkit-box;display:flex;width:100%;-webkit-box-flex:1;flex-grow:1}.package-dropdown-stencil-display va-icon{margin-right:20px}.package-dropdown-stencil-display .stencil-text{width:inherit;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center}.package-dropdown-stencil-display .stencil-text .stencil-title{height:32px;width:40%;margin-bottom:5px!important;margin-top:0!important}.package-dropdown-stencil-display .stencil-text .stencil-tagline{height:32px;width:inherit}.product-or-addon-list{background-color:rgba(0,0,0,.04);overflow:hidden}"]}]}],e.propDecorators={title:[{type:n.Input}],titleBadge:[{type:n.Input}],titleDescriptor:[{type:n.Input}],iconUrl:[{type:n.Input}],secondaryIconUrl:[{type:n.Input}],secondaryIconName:[{type:n.Input}],subtitle:[{type:n.Input}],statusItem:[{type:n.Input}],enableDropdown:[{type:n.Input}],indent:[{type:n.Input}],toggleValue:[{type:n.Input}],description:[{type:n.Input}],itemToggled:[{type:n.Output}]},e}();var ct=function(){function e(){this.singularDropdown=!1,this.hidePricing=!1,this.packageProductIndent=st.INDENT_ONE,this.packageAddonWithoutProductIndent=st.INDENT_ONE,this.packageAddonWithProductIndent=st.INDENT_TWO,this.productAddonIndent=st.INDENT_ONE,this.packages$$=new s.ReplaySubject(1),this.products$$=new s.ReplaySubject(1),this.standAloneProducts$$=new s.ReplaySubject(1),this.statuses$$=new s.BehaviorSubject([]),this.addons$$=new s.ReplaySubject(1),this.orderItemLengths$$=new s.BehaviorSubject({packages:0,products:0}),this.packageToggles=[],this.productToggles=[]}return Object.defineProperty(e.prototype,"packages",{set:function(e){this.packages$$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"products",{set:function(e){this.products$$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"standAloneProducts",{set:function(e){this.standAloneProducts$$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"statuses",{set:function(e){this.statuses$$.next(e)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"addons",{set:function(e){this.addons$$.next(e)},enumerable:!0,configurable:!0}),e.prototype.ngOnInit=function(){var e=this,t=this.packages$$.pipe(c.filter((function(e){return null!==e}))),n=this.products$$.pipe(c.filter((function(e){return null!==e}))),i=this.addons$$.pipe(c.filter((function(e){return null!==e}))),r=s.zip(t,n,i).pipe(c.tap((function(t){var n=S(t,3),i=n[0],r=n[1];n[2];e.orderItemLengths$$.next({packages:i.length,products:r.length})})),c.map((function(e){var t=S(e,3);return Xe(t[0],t[1],t[2])})));this.salesPackages$=s.combineLatest(r,this.statuses$$).pipe(c.map((function(e){var t=S(e,2);return nt(t[0],t[1])})),c.startWith([])),this.salesProducts$=s.combineLatest(this.standAloneProducts$$,this.statuses$$).pipe(c.filter((function(e){var t=S(e,2),n=t[0];t[1];return null!==n})),c.map((function(e){var t=S(e,2),n=t[0],i=t[1];return n.map((function(e){return it(Ze(e,e.addons||null),i)}))})),c.startWith([])),this.templateData$=s.combineLatest(this.salesPackages$,this.salesProducts$).pipe(c.map((function(e){var t=S(e,2);return{packages:t[0],products:t[1]}})))},e.prototype.openAllDropdowns=function(){for(var e=0;e<this.orderItemLengths$$.getValue().packages;e++)this.packageToggles[e]=!0;for(e=0;e<this.orderItemLengths$$.getValue().products;e++)this.productToggles[e]=!0},e.prototype.togglePackage=function(e){if(this.singularDropdown){var t=this.packageToggles.findIndex((function(e){return!0===e}));t!==e&&(this.packageToggles[t]=!1);var n=this.productToggles.findIndex((function(e){return!0===e}));n>-1&&(this.productToggles[n]=!1)}this.packageToggles[e]=!this.packageToggles[e]},e.prototype.toggleProduct=function(e){if(this.singularDropdown){var t=this.productToggles.findIndex((function(e){return!0===e}));t!==e&&(this.productToggles[t]=!1);var n=this.packageToggles.findIndex((function(e){return!0===e}));n>-1&&(this.packageToggles[n]=!1)}this.productToggles[e]=!this.productToggles[e]},e.prototype.standAloneProductDescription=function(e){if(e.addons&&e.addons.length>0){var t="Contains "+e.addons.length;return t=1===e.addons.length?t+" Addon":t+" Addons"}return""},e.prototype.standAloneProductWithParentDescription=function(e){return e.parentInfo?"(Requires "+e.parentInfo.parentName+")":""},e.prototype.packageDescription=function(e){var t=e.products&&e.products.length>0;if(!t&&0===e.totalAddons)return"No Items in Package";var n="",i=e.products&&1===e.products.length;return(t||e.totalAddons>0)&&(n="Contains "),t&&(n=n+" "+e.products.length,n=i?n+" Product":n+" Products"),t&&e.totalAddons>0&&(n=n+" & "+e.totalAddons,n=1===e.totalAddons?n+" Addon":n+" Addons"),n},e.decorators=[{type:n.Component,args:[{selector:"va-package-dropdown",animations:[y.trigger("listAnimationStart",[y.state("void",y.style({height:"0px"})),y.state("*",y.style({height:"*"})),y.transition("void => *",[y.animate("0.25s ease")]),y.transition("* => void",[y.animate("0.25s ease")])])],template:'<ng-container *ngIf="templateData$ | async as data">\n <mat-card class="package-list-container" *ngIf="data.products?.length > 0 || data.packages?.length > 0 else loading">\n <mat-list>\n <div class="package-list" *ngFor="let package of data.packages; let packageIndex = index">\n\n <va-package-dropdown-item\n [title]="package.name"\n [iconUrl]="package.icon"\n [subtitle]="hidePricing ? \'\' : package.formattedPrices"\n [statusItem]="package.activationStatus"\n [description]="packageDescription(package)"\n [enableDropdown]="package.products?.length > 0 || package.addonsWithNoParent?.length > 0"\n [toggleValue]="packageToggles[packageIndex]"\n (itemToggled)="togglePackage(packageIndex)"\n ></va-package-dropdown-item>\n\n <mat-list class="product-or-addon-list package-dropdown-font" *ngIf="packageToggles[packageIndex]"\n [@listAnimationStart]>\n <div *ngFor="let product of package.products">\n <va-package-dropdown-item\n [title]="product.name"\n [subtitle]="product.tagline"\n [titleBadge]="product.editionName"\n [iconUrl]="product.icon"\n [statusItem]="product.activationStatus"\n [indent]="packageProductIndent"\n ></va-package-dropdown-item>\n\n <va-package-dropdown-item\n *ngFor="let addon of product.addons"\n [title]="addon.name"\n [subtitle]="addon.tagline"\n [iconUrl]="addon.icon"\n [statusItem]="addon.activationStatus"\n [indent]="packageAddonWithProductIndent"\n ></va-package-dropdown-item>\n </div>\n\n <va-package-dropdown-item\n *ngFor="let addon of package.addonsWithNoParent"\n [title]="addon.name"\n [titleDescriptor]="\'FRONTEND.STORE.REQUIRES_DESCRIPTOR\' | translate: {requirementName: addon.parentName}"\n [subtitle]="addon.tagline"\n [iconUrl]="addon.icon"\n [secondaryIconUrl]="addon.parentIcon"\n [secondaryIconName]="addon.parentName"\n [statusItem]="addon.activationStatus"\n [indent]="packageAddonWithoutProductIndent"\n ></va-package-dropdown-item>\n </mat-list>\n </div>\n\n <div class="product-list" *ngFor="let product of data.products; let productIndex = index">\n <va-package-dropdown-item\n [title]="product.name"\n [titleBadge]="product.editionName"\n [titleDescriptor]="standAloneProductWithParentDescription(product)"\n [iconUrl]="product.icon"\n [subtitle]="hidePricing ? \'\' : product.formattedPrices"\n [secondaryIconUrl]="product.parentInfo?.parentIconUrl"\n [secondaryIconName]="product.parentInfo?.parentName"\n [statusItem]="product.activationStatus"\n [description]="standAloneProductDescription(product)"\n [enableDropdown]="product.addons?.length > 0"\n [toggleValue]="productToggles[productIndex]"\n (itemToggled)="toggleProduct(productIndex)"\n ></va-package-dropdown-item>\n\n <mat-list class="product-or-addon-list product-dropdown-font" *ngIf="productToggles[productIndex]"\n [@listAnimationStart]>\n <va-package-dropdown-item\n *ngFor="let addon of product.addons"\n [title]="addon.name"\n [subtitle]="addon.tagline"\n [iconUrl]="addon.icon"\n [statusItem]="addon.activationStatus"\n [indent]="productAddonIndent"\n ></va-package-dropdown-item>\n </mat-list>\n </div>\n\n </mat-list>\n </mat-card>\n</ng-container>\n\n<ng-template #loading>\n <mat-card>\n <div class="package-dropdown-stencil-display">\n <va-icon [iconUrl]=""></va-icon>\n <div class="stencil-text">\n <h1 class="stencil-title stencil-shimmer"></h1>\n <span class="stencil-tagline stencil-shimmer"></span>\n </div>\n </div>\n </mat-card>\n</ng-template>\n',styles:[".package-dropdown-font,.product-dropdown-font{color:rgba(0,0,0,.54);font-size:14px;font-weight:400}.package-list-container{border-top:1px solid rgba(0,0,0,.12);padding:0}.package-list-container mat-list{padding:0}.package-dropdown-stencil-display{display:-webkit-box;display:flex;width:100%;-webkit-box-flex:1;flex-grow:1}.package-dropdown-stencil-display va-icon{margin-right:20px}.package-dropdown-stencil-display .stencil-text{width:inherit;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-pack:center;justify-content:center}.package-dropdown-stencil-display .stencil-text .stencil-title{height:32px;width:40%;margin-bottom:5px!important;margin-top:0!important}.package-dropdown-stencil-display .stencil-text .stencil-tagline{height:32px;width:inherit}.product-or-addon-list{background-color:rgba(0,0,0,.04);overflow:hidden}"]}]}],e.propDecorators={packages:[{type:n.Input}],products:[{type:n.Input}],standAloneProducts:[{type:n.Input}],statuses:[{type:n.Input}],addons:[{type:n.Input}],singularDropdown:[{type:n.Input}],hidePricing:[{type:n.Input}]},e}();var dt=function(){function e(e,t,n){this.translateService=e,this.translateService.translations.hasOwnProperty("en")||this.translateService.reloadLang("en"),this.translateService.translations.hasOwnProperty("cs")||this.translateService.reloadLang("cs"),this.translateService.setTranslation("en",O.en,!0),this.translateService.setTranslation("cs",E.cs,!0),t&&t.subscribe((function(t){return e.use(t)})),n&&n.subscribe((function(t){return e.setDefaultLang(t)}))}return e.decorators=[{type:n.NgModule,args:[{imports:[t.CommonModule,i.MatButtonModule,i.MatCardModule,i.MatListModule,i.MatIconModule,o.VaIconModule,o.VaBadgeModule,l.TranslateModule.forChild()],declarations:[ct,lt],exports:[ct],entryComponents:[ct]}]}],e.ctorParameters=function(){return[{type:l.TranslateService},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["CURRENT_LANG"]}]},{type:s.Observable,decorators:[{type:n.Optional},{type:n.Inject,args:["DEFAULT_LANG"]}]}]},e}();var pt=function(){function e(){this.hasVerifiedContract=!1,this.canAccessContractPricing=!1,this.showActionButton=!1,this.showPricing=!1,this.showPricingAction=!1,this.loaded=!0,this.enableClicked=new n.EventEmitter,this.addonSelected=new n.EventEmitter,this.primaryPricingActionSelected=new n.EventEmitter,this.pricingActionSelected=new n.EventEmitter}return e.prototype.getAddons=function(){return this._addons||(this._addons=this.product.addons.map((function(e){return a.Addon.fromApi(e)}))),this._addons},e.prototype.getActionLabel=function(){return this.product.isArchived?"Enable":"Enabled"},Object.defineProperty(e.prototype,"price",{get:function(){var e=[];return-1!==this.product.wholesalePrice&&null!=this.product.wholesalePrice&&(e=[{price:this.product.wholesalePrice,frequency:this.product.billingFrequency}]),{currency:this.product.currency,prices:e}},enumerable:!0,configurable:!0}),e.prototype.onAddonSelected=function(e){this.addonSelected.emit(e)},e.decorators=[{type:n.Component,args:[{selector:"va-product-details",template:'<div class="page">\n <va-header-container [iconUrl]="product.iconUrl"\n [title]="product.name"\n [tagline]="product.tagline"\n [chipLabels]="product.getLmiCategoryNames()"\n [pricing]="price"\n [pricingLabel]="\'Wholesale Price\'"\n [primaryPricingActionLabel]="primaryPricingActionLabel"\n [pricingActionLabel]="pricingActionLabel"\n [pricingActionEnabled]="showPricingAction"\n [actionLabel]="getActionLabel()"\n [actionEnabled]="product.isArchived"\n [showAction]="showActionButton"\n [showPricing]="showPricing"\n [billedProduct]="billedProduct"\n [hasVerifiedContract]="hasVerifiedContract"\n [loaded]="loaded"\n (primaryPricingActionSelected)="primaryPricingActionSelected.emit()"\n (pricingActionSelected)="pricingActionSelected.emit()"\n (actionSelected)="enableClicked.emit()">\n </va-header-container>\n <div class="product-details product-content">\n <div class="left-column">\n <ng-container *ngIf="product.description || product.keySellingPoints">\n <va-selling-info [description]="product.description"\n [keySellingPoints]="product.keySellingPoints"></va-selling-info>\n </ng-container>\n <section *ngIf="product.addons?.length > 0">\n <h2 class="va-component-title">Add-Ons</h2>\n <va-addon-list (addonSelected)="onAddonSelected($event)"\n [addons]="getAddons()"\n [showPricing]="showPricing"\n [hasVerifiedContract]="hasVerifiedContract"\n [canAccessContractPricing]="canAccessContractPricing"\n [partnerID]="partnerID">\n </va-addon-list>\n </section>\n\n <section *ngIf="product.faqs?.length > 0">\n <h2 class="va-component-title">FAQs</h2>\n <va-faqs [faqs]="product.faqs"></va-faqs>\n </section>\n </div>\n\n <div class="right-column">\n <section *ngIf="product.restrictions?.country?.whitelist?.length > 0">\n <supported-countries [countryCodes]="product.restrictions.country.whitelist"></supported-countries>\n </section>\n\n <section *ngIf="product.screenshotUrls?.length > 0">\n <h2 class="va-component-title">Gallery</h2>\n <va-image-gallery [imageUrls]="product.screenshotUrls"></va-image-gallery>\n </section>\n\n <section *ngIf="product.files?.length > 0">\n <h2 class="va-component-title">Files</h2>\n <va-files [files]="product.files"></va-files>\n </section>\n </div>\n </div>\n</div>\n',styles:[":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-component-title{font-size:24px;font-weight:300;margin-top:0}@media screen and (min-width:600px){.va-component-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.sales-person-details{max-height:430px;overflow:hidden}.page{position:relative;margin:0 auto 20px;background:#fff;color:#212121;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px}.page .item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width:600px){.left-column{width:100%}}.right-column{width:34%}.product-content{display:-webkit-box;display:flex}@media screen and (max-width:600px){.right-column{width:100%}.product-content{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}}"]}]}],e.propDecorators={product:[{type:n.Input}],billedProduct:[{type:n.Input}],hasVerifiedContract:[{type:n.Input}],canAccessContractPricing:[{type:n.Input}],showActionButton:[{type:n.Input}],showPricing:[{type:n.Input}],primaryPricingActionLabel:[{type:n.Input}],pricingActionLabel:[{type:n.Input}],showPricingAction:[{type:n.Input}],loaded:[{type:n.Input}],partnerID:[{type:n.Input}],enableClicked:[{type:n.Output}],addonSelected:[{type:n.Output}],primaryPricingActionSelected:[{type:n.Output}],pricingActionSelected:[{type:n.Output}]},e}();var ut=function(){function e(){}return e.decorators=[{type:n.NgModule,args:[{imports:[o.VaImageGalleryModule,t.CommonModule,o.VaIconModule,N,pe,me,fe,U,o.VaSafeHtmlModule,Fe,be],declarations:[pt],exports:[pt],entryComponents:[pt]}]}],e}(),mt=function(e){this.quantity=1,e=e||{},Object.assign(this,e)};var gt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.controlType="checkbox",t}return w(t,e),t}(Q);var ft=function(e){function t(t){var n=e.call(this,t)||this;return n.controlType="dropdown",n.options=[],t.options&&t.options.length>0&&("string"==typeof t.options[0]?t.allowMultiples?n.options=t.options.map((function(e){return{value:e,name:e}})):n.options=t.options.map((function(e){return{value:e,label:e}})):t.allowMultiples?n.options=t.options.map((function(e){return{value:e.value,name:e.label}})):n.options=t.options),n.allowMultiples=!!t.allowMultiples,n.allowDuplicates=!!t.allowDuplicates,n.maxChoices=t.maxChoices?t.maxChoices:1,n.validator=n.validatorBuilder(),n}return w(t,e),t.prototype.validatorBuilder=function(){var e=this.maxChoices;return(function(t){if(Array.isArray(t.value)&&e&&t.value.length>e)return{overMaxChoices:!0}})},t}(Q);var ht=5;var bt=function(e){function t(t){var n=e.call(this,t)||this;if(n.controlType="file",!t.uploadUrl)throw new Error("uploadUrl is required.");return n.fileType=t.fileType||"image",n.numFiles=t.numFiles||ht,n.uploadUrl=t.uploadUrl,n.value=[],n}return w(t,e),t}(Q);var vt=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.controlType="textarea",t}return w(t,e),t}(Q);var yt=function(e){function t(t){var n=e.call(this,t)||this;return n.controlType="textbox",n.textboxType=t.textboxType||"text",n.prefix=t.prefix||"",n.suffix=t.suffix||"",n.regexValidator=t.regexValidator||"",n.regexErrorMessage=t.regexErrorMessage||"",n.displayOnly=t.displayOnly||!1,n}return w(t,e),t}(Q);var xt=function(e){function t(t){var n=e.call(this,{id:t.id,label:t.label,required:t.required,description:t.description,options:wt(t.users),disabled:t.disabled,forOfficeUseOnly:t.forOfficeUseOnly})||this;return n.controlType="vbcuser",n}return w(t,e),t}(ft);function wt(e){return e&&e.length>0?(e.sort(It),e.map((function(e){var t,n,i,r,o=(t=e.firstName,n=e.lastName,i=e.email,r="",r+=t?t+" ":"",r+=n?n+" ":"",r+=i?"("+i+")":"");return e.userId&&e.email&&e.firstName&&e.lastName?{label:o,value:JSON.stringify({firstName:e.firstName,lastName:e.lastName,email:e.email,id:e.userId})}:{label:o,value:"",disabled:!0}}))):[{label:"No Users — Please add one to this account",value:"",disabled:!0}]}function It(e,t){return null==e?-1:null==t?1:e.email.localeCompare(t.email)}e.ActivationStatus=Ye,e.AddonDetailsComponent=ce,e.AddonDropDownFormSectionData=G,e.AddonModule=ve,e.BUSINESS_USER="vbcuser",e.CHECK_BOX="checkbox",e.CONTACT_SALES=-1,e.CardListStencilComponent=we,e.CardStencilComponent=xe,e.CaseTransform=oe,e.CheckboxField=gt,e.DROP_DOWN="dropdown",e.DetailsStencilComponent=ye,e.DropDownFormSectionComponent=D,e.DropDownFormSectionData=j,e.DropdownField=ft,e.FILES="file",e.FORM_FIELDS=Y,e.FieldBase=Q,e.FieldBuilderComponent=K,e.FieldComponent=L,e.FieldService=q,e.File=ie,e.FileUploadGroupField=bt,e.HeimdallServiceToken=Pe,e.LMI_CATEGORIES=Ae,e.LMI_CATEGORIES_BY_NAME=_e,e.LMI_CATEGORY_MAP=Me,e.ListStencilComponent=ke,e.OrderFormComponent=W,e.OrderFormSectionComponent=V,e.OrderFormSectionData=$,e.Package=qe,e.PackageDetails=He,e.Product=se,e.ProductOrderFormSectionData=z,e.ProductWithParent=le,e.ProductsNavV2Component=Ge,e.ResellerItem=mt,e.RestrictionsModule=be,e.STOREFRONT_FILTER_NAME="Store Filters",e.SearchBarStencilComponent=Ie,e.StencilsModule=Se,e.StoreCardComponent=A,e.StoreCardModule=M,e.StoreComponent=_,e.StoreModule=Ne,e.StoreService=ne,e.StorefrontComponent=Ee,e.TEXT_AREA="textarea",e.TEXT_BOX="textbox",e.TextareaField=vt,e.TextboxField=yt,e.VBCUserField=xt,e.VaAddonListComponent=Ce,e.VaAddonListModule=Fe,e.VaFaqsComponent=ue,e.VaFaqsModule=me,e.VaFilesComponent=de,e.VaFilesModule=pe,e.VaHeaderContainerComponent=R,e.VaHeaderContainerModule=U,e.VaOrderFormModule=te,e.VaPackageDetailsComponent=je,e.VaPackageDetailsModule=We,e.VaPackageDetailsV2Component=Qe,e.VaPackageDetailsV2Module=Ke,e.VaPackageDropdownComponent=ct,e.VaPackageDropdownModule=dt,e.VaPricingComponent=F,e.VaPricingModule=N,e.VaProductDetailsComponent=pt,e.VaProductDetailsModule=ut,e.VaProductsNavComponent=ze,e.VaProductsNavModule=Be,e.VaSalespersonDetailsComponent=De,e.VaSalespersonDetailsModule=Le,e.VaSellingInfoComponent=ge,e.VaSellingInfoModule=fe,e.combineProductOrderWithContainedProducts=$e,e.convertToPackageDetails=function(e,t){if(e){var n=new He;return e.pricing||(e.pricing=v.Pricing.fromProto({currency:void 0,prices:[{price:0,frequency:void 0,isStartingPrice:!1}]})),Object.assign(n,e),n.name||(n.name="Untitled"),e.created&&(n.createdDate=new Date(e.created)),e.updated&&(n.updatedDate=new Date(e.updated)),e.lineItems&&(n.line_items=function(e,t){if(!e||!e.lineItems||0===e.lineItems.length||!t||0===t.length)return[];return e.lineItems.map((function(e){var n,i=t.find((function(t){return t.productId===e.id}));return e.parentId&&(n=t.find((function(t){return t.productId===e.parentId}))),function(e,t,n){if(!t||!e)return;var i=[];t.pdfUploadUrls&&t.pdfUploadUrls.length>0&&(i=t.pdfUploadUrls.map((function(e){return new ie(e)})));var r={item:{id:e.id,editionId:e.editionId,icon:t.iconUrl,name:t.name,editionName:"",description:t.description,keySellingPoints:t.keySellingPoints,faqs:t.faqs,files:i,screenshotUrls:t.screenshotUrls,lmiCategories:[]},quantity:e.quantity,parent:{}};e.parentId&&n&&(r.parent={id:e.parentId,editionId:"",icon:n.iconUrl,name:n.name,editionName:""});return r}(e,i,n)}))}(e.lineItems,t)),"number"==typeof e.pricing.currency&&(n.pricing.currency=v.Currency[e.pricing.currency]),n}},e.getUniqueProductAddonId=Ve,e.orderProductsAndAddons=Re,e.ɵb=Te,e.ɵc=Oe,e.ɵd=P,e.ɵe=T,e.ɵf=Z,e.ɵg=J,e.ɵh=ee,e.ɵi=B,e.ɵj=X,e.ɵk=he,e.ɵl=Qe,e.ɵm=re,e.ɵn=lt,Object.defineProperty(e,"__esModule",{value:!0})}));
17//# sourceMappingURL=vendasta-store.umd.min.js.map
\No newline at end of file