1import{Ea as be,Fa as De,Ga as Pe,H as $,M as ye,N as Me,f as Ce,m as Se,ua as xe,ub as Ve,va as Ie,wb as Oe}from"./chunk-JCOTUPE5.js";import{B as w,Bc as ge,Ea as ue,Fd as fe,Ja as k,Nd as ve,Wd as he,Xd as _e,aa as se,da as le,ga as de,gb as A,hb as pe,j as oe,kd as S,l as re,m as ae,oe as L,s as ce,zc as me}from"./chunk-TXT3R3MF.js";import{Ea as f,Ec as c,Fa as v,Fc as g,Fd as _,Gc as d,Hc as K,Ja as r,L as p,Lc as O,Mc as T,Md as C,Nb as l,Nd as D,Od as ie,Rc as F,Rd as ne,Sa as I,Ta as b,W as P,Wc as N,Yc as a,aa as H,fc as G,gc as h,gd as Y,kc as m,ld as z,nd as J,p as M,qa as Q,rd as X,sd as Z,td as ee,ua as W,vc as V,x,xa as q,xd as te}from"./chunk-PWAHSUDZ.js";import{a as B,b as R}from"./chunk-2BAXZMGZ.js";var ke=(()=>{class t{constructor(){this.config=r(ue)}getVariantOptionImage(e,i){let n=this.config.multiDimensional?.imageFormat,o=e.find(j=>j.image?.format===n),s=o?.image?.altText??i;return o?{altText:s,url:this.getBaseUrl()+o?.image?.url}:void 0}getBaseUrl(){return this.config.backend?.media?.baseUrl??this.config.backend?.occ?.baseUrl??""}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Te=(()=>{class t{constructor(){this.imagesService=r(ke)}getVariants(e){let i=e.variantMatrix??[],n=e.categories??[],o=e.code??"",s=[];return n.forEach(j=>{let U=this.createVariantCategoryGroup(i);i.forEach(y=>{let Ne=this.createVariantOptionCategory(y);U.variantOptions.push(Ne),y.variantOption?.code===o&&y.elements?.length&&(i=y.elements)}),s.push(U)}),this.checkIfEveryOptionHasImages(s)}checkIfEveryOptionHasImages(e){return e.map(i=>{let n=i.variantOptions,o=i.hasImages&&n.every(s=>!!s.image);return R(B({},i),{variantOptions:n,hasImages:o})})}createVariantOptionCategory(e){let i=e.variantValueCategory?.name??"",n=e.variantOption?.variantOptionQualifiers??[];return{image:this.imagesService.getVariantOptionImage(n,i),value:i,code:e.variantOption?.code??""}}createVariantCategoryGroup(e){let i=e.length?e[0]?.parentVariantCategory:void 0;return{name:i?.name??"",variantOptions:[],hasImages:!!i?.hasImage}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ae=t=>({active:t}),Le=t=>({key:t}),$e=t=>({category:t}),Ee=t=>({ariaLabel:t});function je(t,u){if(t&1){let e=F();g(0,"div",7)(1,"button",8),C(2,"async"),N("click",function(){let n=I(e).$implicit,o=a(4);return b(o.changeVariant(n.code))}),K(3,"cx-media",9),d()()}if(t&2){let e=u.$implicit,i=a(2).$implicit,n=a().ngIf,o=a();l(),c("ngClass",_(6,Ae,(e==null?null:e.code)===n.code))("cxFocus",_(8,Le,e.code)),V("aria-label",D(2,4,o.onAriaLabel(e,i.name))),l(2),c("container",e.image)}}function Ue(t,u){if(t&1&&(g(0,"div",5),m(1,je,4,10,"div",6),d()),t&2){let e=a().$implicit;V("aria-label",e.name),l(),c("ngForOf",e.variantOptions)}}function Be(t,u){if(t&1){let e=F();g(0,"div",10)(1,"ng-select",11),C(2,"cxTranslate"),C(3,"cxTranslate"),ee("ngModelChange",function(n){I(e);let o=a(3);return Z(o.selectedProductCode,n)||(o.selectedProductCode=n),b(n)}),N("change",function(n){I(e);let o=a(3);return b(o.changeVariant(n.code))}),d()()}if(t&2){let e=a().$implicit,i=a(2);l(),c("ariaLabelDropdown",te(D(2,7,"common.ngSelectDropdownOptionsList")))("clearable",!1)("searchable",!1)("items",e.variantOptions),X("ngModel",i.selectedProductCode),c("cxNgSelectA11y",_(14,Ee,ie(3,9,"multiDimensionalSelector.variantThumbnailTitle",_(12,$e,e.name))))}}function Re(t,u){if(t&1&&(O(0),g(1,"label")(2,"span"),z(3),d(),m(4,Ue,2,2,"div",4),d(),m(5,Be,4,16,"ng-template",null,0,ne),T()),t&2){let e=u.$implicit,i=Y(6),n=a(2);l(3),J(" ",n.getCategoryName(e)," "),l(),c("ngIf",e.hasImages)("ngIfElse",i)}}function He(t,u){if(t&1&&(O(0),g(1,"div",2),m(2,Re,7,3,"ng-container",3),d(),T()),t&2){let e=a();l(2),c("ngForOf",e.categories)}}var Qe=(()=>{class t{constructor(){this.productService=r(L),this.semanticPathService=r(me),this.router=r(le)}canActivate(e){let i=e.params?.productCode;return i?this.productService.get(i,S.MULTI_DIMENSIONAL_AVAILABILITY).pipe(p(A),W(n=>!n.purchasable&&!!n.variantOptions?.length?this.findValidProductCodeAndReturnUrlTree(n):M(!!n.purchasable))):M(!!e.queryParams?.cmsTicketId)}findValidProductCodeAndReturnUrlTree(e){let i=this.getValidVariantCode(e),n=this.getFallbackProductCode(e),o=i??n;return o?this.productService.get(o,S.LIST).pipe(p(A),P(1),x(s=>this.router.createUrlTree(this.semanticPathService.transform({cxRoute:"product",params:s})))):M(!1)}getValidVariantCode(e){return e.variantOptions?.find(i=>i.stock&&i.stock.stockLevel)?.code}getFallbackProductCode(e){return e.variantOptions?.length?e.variantOptions[0]?.code:""}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=f({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Fe=(()=>{class t{constructor(){this.multiDimensionalService=r(Te),this.productService=r(L),this.routingService=r(ge),this.route=r(se),this.currentProductService=r(be),this.translationService=r(fe),this.categories=[],this.product$=this.currentProductService.getProduct(S.MULTI_DIMENSIONAL).pipe(p(pe),p(e=>!!e.multidimensional),H(),Q(1),q(e=>{this.categories=this.getVariants(e),this.selectedProductCode=e.code??""}))}changeVariant(e){e&&this.productService.get(e,S.LIST).pipe(p(Boolean),P(1)).subscribe(i=>{this.routingService.go({cxRoute:"product",params:i})})}getSelectedValue(e){let i=this.categories.find(n=>n.name===e);if(i&&this.selectedProductCode){let n=i.variantOptions.find(o=>o.code===this.selectedProductCode);return n?n.value:""}return""}onAriaLabel(e,i){return this.isSelected(e.code)?this.translationService.translate("multiDimensionalSelector.selectedVariant").pipe(x(o=>`${o}, ${e.value} ${i}`)):this.translationService.translate("multiDimensionalSelector.variantThumbnailTitle",{value:e.value,category:i}).pipe(x(o=>`${o}`))}getCategoryName(e){let i=`${e.name}: `;if(e.hasImages){let n=this.getSelectedValue(e.name);return`${i}${n??""}`}return i}isSelected(e){return e===this.selectedProductCode}getVariants(e){return this.multiDimensionalService.getVariants(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=G({type:t,selectors:[["cx-product-multi-dimensional-selector"]],decls:2,vars:3,consts:[["noImages",""],[4,"ngIf"],[1,"variant-generic-selector"],[4,"ngFor","ngForOf"],["role","list","class","image-variant-container",4,"ngIf","ngIfElse"],["role","list",1,"image-variant-container"],["role","listitem",4,"ngFor","ngForOf"],["role","listitem"],["type","button",1,"image-variant",3,"click","ngClass","cxFocus"],["role","img",3,"container"],[1,"select-variant-container"],["bindValue","code","bindLabel","value",3,"ngModelChange","change","clearable","searchable","items","ngModel","ariaLabelDropdown","cxNgSelectA11y"]],template:function(i,n){i&1&&(m(0,He,3,1,"ng-container",1),C(1,"async")),i&2&&c("ngIf",D(1,1,n.product$))},dependencies:[ae,re,oe,xe,De,ye,$,Ce,Se,Ve,ce,he],encapsulation:2,changeDetection:0})}}return t})(),We=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=h({type:t})}static{this.\u0275inj=v({providers:[k({cmsComponents:{ProductMultiDimensionalSelectorComponent:{component:Fe,guards:[Qe]}}})],imports:[w,de,ve,Pe,Ie,Me,$,Oe,_e,Fe]})}}return t})(),qe=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=h({type:t})}static{this.\u0275inj=v({imports:[We]})}}return t})(),E="variantOption(code,variantOptionQualifiers(image(url,format))),variantValueCategory(name),parentVariantCategory(hasImage,name)",Ge=`variantMatrix(${E},elements(${E},elements(${E},elements)))`,Ke={backend:{occ:{endpoints:{product:{multi_dimensional:"products/${productC
1ode}?fields=multidimensional,categories,"+Ge,multi_dimensional_availability:"products/${productCode}?fields=variantOptions(stock(stockLevel),code),purchasable"}}}}},Ye=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=h({type:t})}static{this.\u0275inj=v({providers:[k(Ke)],imports:[w]})}}return t})(),vt=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=h({type:t})}static{this.\u0275inj=v({imports:[Ye,qe]})}}return t})();export{vt as ProductMultiDimensionalSelectorModule};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.