{"version":3,"sources":["archive/product/variant-selector-provider/dropdown-variant-selector-v3.ts"],"names":["arraysAreEqual","html","repeat","DropDownVariantSelectorBaseWithLitHtmlRendering","ProductApi","$","window","jQuery","DropDownVariantSelectorV3","constructor","name","super","this","_isOneTypeVariant","_productApi","_valuesToFill","Array","template","variantSelectorData","id","variants","length","labels","select","variantTypeName","_sortedVariants","variant","initialize","selectorContainerElement","product","variantTypeId","translations","showPricesInclVat","self","_variantTypeToCurrentValueMap","Map","variantTypes","map","variantType","document","on","VARIANT_CHANGED_EVENT","_onVariantChanged","bind","getVariantsShortInfo","productId","then","response","_variantsShortInfo","_fillVariantsInfo","_checkValuesToFill","getDataBeforeRender","sortVariants","Date","valueOf","toLowerCase","get","changeSelection","evt","newVariantValue","isSelectedOptionAvailable","otherVariantTypeToValueMap","has","set","entries","filter","x","values","every","variantValue","otherSelectedValues","option","querySelector","options","selectedVariantValue","parseInt","value","selectedVariantValues","push","variantName","variantShortInfo","variantShortInfoList","find","variantValues","getAttribute","text","priceString","discountPercent","isOutlet","forEach","valuesToFill"],"mappings":"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","file":"dropdown-variant-selector-v3.js","sourcesContent":["import { arraysAreEqual } from \"../../../../components-shared/utils/array-utils.js\";\nimport { html } from '../../../node_modules/lit-html/lit-html.js';\nimport { repeat } from '../../../node_modules/lit-html/directives/repeat.js';\nimport { IVariantProduct, IVariantType } from './variant-selector-base.js';\nimport { DropDownVariantSelectorBaseWithLitHtmlRendering } from \"./dropdown-variant-selector-base.js\";\nimport { ProductApi } from \"../../../api/archive/product/product-api.js\"\nimport { IVariantShortInfoResponse } from '../../../api/archive/product/interfaces/i-variant-short-info-response.js';\n\nconst $ = window.jQuery;\n\nexport class DropDownVariantSelectorV3 extends DropDownVariantSelectorBaseWithLitHtmlRendering {\n private _sortedVariants: Array;\n private _variantTypeToCurrentValueMap: Map;\n private _isOneTypeVariant: boolean = false;\n private _productApi: ProductApi = new ProductApi();\n private _variantsShortInfo: IVariantShortInfoResponse;\n private _valuesToFill: Array> = new Array>();;\n\n constructor(name: string) {\n super(name, 1);\n }\n\n public initialize(selectorContainerElement: HTMLElement, product: any, variantTypeId: number, translations: Map, showPricesInclVat: boolean): void {\n super.initialize(selectorContainerElement, product, variantTypeId, translations, showPricesInclVat);\n const self = this;\n\n this._variantTypeToCurrentValueMap = new Map(this.product.variantTypes.map((variantType) => [variantType.id, 0]));\n this._isOneTypeVariant = this.product.variantTypes.length <= 1;\n\n $(document).on(this.VARIANT_CHANGED_EVENT, this._onVariantChanged.bind(this));\n\n this._productApi.getVariantsShortInfo(product.productId, null, null, this.showPricesInclVat).then(response => {\n self._variantsShortInfo = response;\n if(self._isOneTypeVariant){\n self._fillVariantsInfo();\n } else {\n self._checkValuesToFill();\n }\n });\n }\n\n protected template = () => html`\n
\n \n
\n
\n \n
`;\n\n protected getDataBeforeRender() {\n this._sortedVariants = this.sortVariants(this.selectorContainerElement, this.variantType.variants, this.product);\n return {\n id: new Date().valueOf() + '_vt' + this.variantType.id,\n variantTypeName: this.variantType.name.toLowerCase(),\n variants: this._sortedVariants,\n labels: { select: this.translations.get('selectVariantPrefix'), changeSelection: this.translations.get('changeSelectionVariantPrefix') }\n };\n }\n\n private _onVariantChanged(evt: CustomEvent, variantType: IVariantType, newVariantValue: number, isSelectedOptionAvailable: boolean, productId: number){\n if(this.product.productId !== productId || this._isOneTypeVariant || !this._variantTypeToCurrentValueMap.has(variantType.id)){\n return;\n }\n\n this._variantTypeToCurrentValueMap.set(variantType.id, newVariantValue);\n const otherVariantTypeToValueMap = new Map([...this._variantTypeToCurrentValueMap.entries()].filter(x => x[0] !== this.variantType.id));\n const allOtherValuesSelected = [...otherVariantTypeToValueMap.values()].every(variantValue => variantValue > 0);\n\n if(allOtherValuesSelected){\n this._fillVariantsInfo([...otherVariantTypeToValueMap.values()]);\n }\n }\n\n private _fillVariantsInfo(otherSelectedValues: Array = null): void {\n if(!this._variantsShortInfo){\n this._valuesToFill.push(otherSelectedValues);\n return;\n }\n\n const select = this.selectorContainerElement.querySelector('select') as HTMLSelectElement;\n for (var option of select.options) {\n const selectedVariantValue = parseInt(option.value);\n if(!selectedVariantValue){\n continue;\n }\n\n const selectedVariantValues = [selectedVariantValue];\n if(otherSelectedValues !== null) {\n selectedVariantValues.push(...otherSelectedValues);\n }\n\n const variantShortInfo = this._variantsShortInfo.variantShortInfoList.find(variantShortInfo => arraysAreEqual(variantShortInfo.variantValues, selectedVariantValues));\n if(variantShortInfo){\n const variantName = option.getAttribute('data-name');\n option.text = `${variantName} ${variantShortInfo.priceString} ${variantShortInfo.discountPercent}%${variantShortInfo.isOutlet ? ' outlet' : ''}`;\n }\n }\n }\n\n private _checkValuesToFill(){\n const self = this;\n this._valuesToFill.forEach((valuesToFill: Array) => {\n self._fillVariantsInfo(valuesToFill);\n })\n this._valuesToFill = null;\n }\n}\n"]}