{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../codebase/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack:///../codebase/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack:///../codebase/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/product/quickView.js","webpack:///../codebase/storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///../codebase/tkooples/cartridges/app_core_tkooples/cartridge/client/default/js/search.js","webpack:///../codebase/tkooples/cartridges/app_core_tkooples/cartridge/client/default/js/search/search.js","webpack:///../codebase/tkooples/cartridges/app_core_tkooples/cartridge/client/default/js/search/sizeColorPlp.js","webpack:///../codebase/tkooples/node_modules/lozad/dist/lozad.min.js"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClCa;AACb,kBAAkB,mBAAO,CAAC,yJAAqB;;AAE/C;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,qBAAqB;AACnC;;AAEA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,aAAa,sDAAsD;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2CAA2C;AAChE;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;;;;;;;;;;;;AC/0Ba;AACb,WAAW,mBAAO,CAAC,wIAAQ;AAC3B,kBAAkB,mBAAO,CAAC,yJAAqB;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,cAAc;AAC1B;AACA;AACA;;AAEA;AACA;;AAEA,YAAY;AACZ;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,kCAAkC,EAAE;;AAEhF;AACA,4CAA4C,uCAAuC,EAAE;;AAErF;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;ACxMa;;AAEb;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;;;;;;ACZa;;AAEb,qBAAqB,mBAAO,CAAC,mIAAW;;AAExC;AACA,mBAAmB,mBAAO,CAAC,uHAAiB;AAC5C,mBAAmB,mBAAO,CAAC,6JAAwB;AACnD,CAAC;;;;;;;;;;;;;ACPY;;AAEb,OAAO,eAAe,GAAG,mBAAO,CAAC,4HAAgB;;AAEjD,YAAY,mBAAO,CAAC,wEAAO;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,KAAK,E;AACL;;;AAGA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,KAAK,E;AACL;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA,KAAK,E;AACL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,wDAAwD;AACnG;AACA;AACA;AACA;AACA,iBAAiB;AACjB,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,iCAAiC;AACjC;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,wBAAwB;;AAExB;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,E;;AAEzB;;AAEA;;AAEA;;AAEA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,E;;AAEzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;;;AAID;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED,mBAAO,CAAC,4HAAgB;AACxB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8D;AACA,KAAK;;AAEL;AACA,mBAAmB,wBAAwB;AAC3C;AACA;;AAEA;AACA,uBAAuB,qCAAqC;AAC5D;AACA;;AAEA;AACA,0BAA0B,uCAAuC;AACjE;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB;AACzB,gDAAgD,4FAA4F;AAC5I;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;AAED;AACA;AACA,2BAA2B,YAAY;AACvC,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC,mCAAmC;AACnC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oCAAoC;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,cAAc,GAAG,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,EAAE,eAAe;AAC9I;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,qBAAqB;;;AAGrB;AACA;AACA,6CAA6C;AAC7C;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA,iCAAiC,cAAc,GAAG,iBAAiB,EAAE,eAAe,GAAG,cAAc,GAAG,eAAe,EAAE,eAAe;AACxI;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,uBAAuB,EAAE,K;AACnD;;AAEA;AACA;AACA,wDAAwD;AACxD;AACA;AACA,KAAK;AACL,iEAAiE;AACjE;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;;;;;;;;AC5qCa;;AAEb;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,iBAAiB;AACvE,2DAA2D,iBAAiB;AAC5E;;AAEA;AACA,yDAAyD,iBAAiB;AAC1E,8DAA8D,iBAAiB;AAC/E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,sCAAsC,kBAAkB;AACxD;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B,iDAAiD,E;AAC/E,SAAS;AACT,8BAA8B,gDAAgD,E;AAC9E,SAAS;AACT;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,C;;;;;;;;;;;AC7LA;AACA;AACA,mCAAmC;AACnC,eAAe,KAAoD,oBAAoB,SAA2D,CAAC,iBAAiB;AACpK;AACA;AACA,aAAa;AACb;AACA,kEAAkE,8CAA8C,yCAAyC,kCAAkC,qMAAqM,gFAAgF,kCAAkC,cAAc,oDAAoD,SAAS,6NAA6N,UAAU,+OAA+O,qDAAqD,oGAAoG;AAC5qC,6JAA6J,4CAA4C,sCAAsC,6FAA6F,sBAAsB,cAAc,iCAAiC,kBAAkB,6CAA6C,eAAe,sEAAsE,+EAA+E,kBAAkB,qIAAqI,mBAAmB,yEAAyE,4GAA4G,sBAAsB,sHAAsH,EAAE,GAAG,gCAAgC,GAAG,uBAAuB,WAAW,6HAA6H,OAAO,mBAAmB,qBAAqB,WAAW,2DAA2D,yBAAyB,uBAAuB,cAAc","file":"default/js/search.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"../codebase/tkooples/cartridges/app_core_tkooples/cartridge/client/default/js/search.js\");\n","'use strict';\n\nmodule.exports = {\n setTabNextFocus: function (focusParams) {\n var KEYCODE_TAB = 9;\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\n\n if (!isTabPressed) {\n return;\n }\n\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\n\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\n if ($('.product-quickview.product-set').length > 0) {\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\n lastFocusableEl = linkElements[linkElements.length - 1];\n }\n }\n\n if (focusParams.event.shiftKey) /* shift + tab */ {\n if ($(':focus').is(firstFocusableEl)) {\n lastFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n } else /* tab */ {\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\n firstFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n }\n }\n};\n","'use strict';\nvar focusHelper = require('../components/focus');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n var pid;\n\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\n } else if ($('.product-set-detail').length || $('.product-set').length) {\n pid = $($el).closest('.product-detail').find('.product-id').text();\n } else {\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n }\n\n return pid;\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nfunction getQuantitySelector($el) {\n var quantitySelected;\n if ($el && $('.set-items').length) {\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\n } else if ($el && $('.product-bundle').length) {\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\n if (quantitySelectedModal.val() === undefined) {\n quantitySelected = quantitySelectedPDP;\n } else {\n quantitySelected = quantitySelectedModal;\n }\n } else {\n quantitySelected = $('.quantity-select');\n }\n return quantitySelected;\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nfunction getQuantitySelected($el) {\n return getQuantitySelector($el).val();\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $attrValue.addClass('selected');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n } else {\n $attrValue.removeClass('selected');\n $attrValue.siblings('.selected-assistive-text').empty();\n }\n\n if (attrValue.url) {\n $swatchButton.attr('data-url', attrValue.url);\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n var $attr = '[data-attr=\"' + attr.id + '\"]';\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\n $defaultOption.attr('value', attr.resetUrl);\n\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue.attr('value', attrValue.url)\n .removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $attrValue.attr('disabled', true);\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object} attrs - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '
  • ' + message + '
  • ';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Generates html for product attributes section\n *\n * @param {array} attributes - list of attributes\n * @return {string} - Compiled HTML\n */\nfunction getAttributesHtml(attributes) {\n if (!attributes) {\n return '';\n }\n\n var html = '';\n\n attributes.forEach(function (attributeGroup) {\n if (attributeGroup.ID === 'mainAttributes') {\n attributeGroup.attributes.forEach(function (attribute) {\n html += '
    ' + attribute.label + ': '\n + attribute.value + '
    ';\n });\n }\n });\n\n return html;\n}\n\n/**\n * @typedef UpdatedOptionValue\n * @type Object\n * @property {string} id - Option value ID for look up\n * @property {string} url - Updated option value selection URL\n */\n\n/**\n * @typedef OptionSelectionResponse\n * @type Object\n * @property {string} priceHtml - Updated price HTML code\n * @property {Object} options - Updated Options\n * @property {string} options.id - Option ID\n * @property {UpdatedOptionValue[]} options.values - Option values\n */\n\n/**\n * Updates DOM using post-option selection Ajax response\n *\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction updateOptions(optionsHtml, $productContainer) {\n\t// Update options\n $productContainer.find('.product-options').empty().html(optionsHtml);\n}\n\n/**\n * Dynamically creates Bootstrap carousel from response containing images\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction createCarousel(imgs, $productContainer) {\n var carousel = $productContainer.find('.carousel');\n $(carousel).carousel('dispose');\n var carouselId = $(carousel).attr('id');\n $(carousel).empty().append('
      ' + $(carousel).data('prev') + '' + $(carousel).data('next') + '');\n for (var i = 0; i < imgs.length; i++) {\n $('
      \"'
      ').appendTo($(carousel).find('.carousel-inner'));\n $('
    1. ').appendTo($(carousel).find('.carousel-indicators'));\n }\n $($(carousel).find('.carousel-item')).first().addClass('active');\n $($(carousel).find('.carousel-indicators > li')).first().addClass('active');\n if (imgs.length === 1) {\n $($(carousel).find('.carousel-indicators, a[class^=\"carousel-control-\"]')).detach();\n }\n $(carousel).carousel();\n $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true);\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object[]} response.product.images - Product images\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {jQuery} $productContainer - DOM element for a given product.\n */\nfunction handleVariantResponse(response, $productContainer) {\n var isChoiceOfBonusProducts =\n $productContainer.parents('.choose-bonus-product-dialog').length > 0;\n var isVaraint;\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n isVaraint = response.product.productType === 'variant';\n if (isChoiceOfBonusProducts && isVaraint) {\n $productContainer.parent('.bonus-product-item')\n .data('pid', response.product.id);\n\n $productContainer.parent('.bonus-product-item')\n .data('ready-to-order', response.product.readyToOrder);\n }\n }\n\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n createCarousel(primaryImageUrls, $productContainer);\n\n // Update pricing\n if (!isChoiceOfBonusProducts) {\n var $priceSelector = $('.prices .price', $productContainer).length\n ? $('.prices .price', $productContainer)\n : $('.prices .price');\n $priceSelector.replaceWith(response.product.price.html);\n }\n\n // Update promotions\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\n\n updateAvailability(response, $productContainer);\n\n if (isChoiceOfBonusProducts) {\n var $selectButton = $productContainer.find('.select-bonus-product');\n $selectButton.trigger('bonusproduct:updateSelectButton', {\n product: response.product, $productContainer: $productContainer\n });\n } else {\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n }\n\n // Update attributes\n $productContainer.find('.main-attributes').empty()\n .html(getAttributesHtml(response.product.attributes));\n}\n\n/**\n * @typespec UpdatedQuantity\n * @type Object\n * @property {boolean} selected - Whether the quantity has been selected\n * @property {string} value - The number of products to purchase\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\n * etc.\n */\n\n/**\n * Updates the quantity DOM elements post Ajax call\n * @param {UpdatedQuantity[]} quantities -\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction updateQuantities(quantities, $productContainer) {\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\n var optionsHtml = quantities.map(function (quantity) {\n var selected = quantity.selected ? ' selected ' : '';\n return '';\n }).join('');\n getQuantitySelector($productContainer).empty().html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.optionsHtml, $productContainer);\n updateQuantities(data.product.quantities, $productContainer);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('
      ').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n $('.modal-body').spinner().start();\n\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = ''\n + '
      '\n + ''\n + '
      '\n + ''\n + '
      '\n + '
      '\n + ' ' + data.labels.selectprods + ''\n + ' '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      ';\n $('body').append(htmlString);\n $('.modal-body').spinner().start();\n\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n $('#chooseBonusProductModal').modal('show');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n // show add to cart toast\n if (response.newBonusDiscountLineItem\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n } else {\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '
      '\n );\n }\n\n $('.add-to-cart-messages').append(\n '
      '\n + response.message\n + '
      '\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 5000);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect($(e.currentTarget).find('option:selected').data('url'),\n $productContainer);\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this).find('.product-id').text(),\n qty: $(this).find('.quantity-select').val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n miniCartReportingUrl(data.reportingURL);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '
      '\n + '
      '\n + $choiceOfBonusProduct.find('.product-name').html()\n + '
      '\n + '
      '\n + '
      '\n ;\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content').spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content').spinner().stop();\n },\n error: function () {\n $('.modal-content').spinner().stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption =\n parseInt($(this)\n .data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.add-to-cart-messages').append(\n '
      '\n + data.errorMessage + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('
      ');\n }\n $('.minicart-quantity').html(data.totalQty);\n $('.add-to-cart-messages').append(\n '
      '\n + data.msgSuccess + '
      '\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl\n};\n","'use strict';\nvar base = require('./base');\nvar focusHelper = require('../components/focus');\n\n/**\n * Generates the modal window on the first call.\n *\n */\nfunction getModalHtmlElement() {\n if ($('#quickViewModal').length !== 0) {\n $('#quickViewModal').remove();\n }\n var htmlString = ''\n + '
      '\n + ''\n + '
      '\n + ''\n + '
      '\n + '
      '\n + ' '\n + ' '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      '\n + '
      ';\n $('body').append(htmlString);\n}\n\n/**\n * @typedef {Object} QuickViewHtml\n * @property {string} body - Main Quick View body\n * @property {string} footer - Quick View footer content\n */\n\n/**\n * Parse HTML code in Ajax response\n *\n * @param {string} html - Rendered HTML from quickview template\n * @return {QuickViewHtml} - QuickView content components\n */\nfunction parseHtml(html) {\n var $html = $('
      ').append($.parseHTML(html));\n\n var body = $html.find('.product-quickview');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * replaces the content in the modal window on for the selected product variation.\n * @param {string} selectedValueUrl - url to be used to retrieve a new product model\n */\nfunction fillModalElement(selectedValueUrl) {\n $('.modal-body').spinner().start();\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('.modal-body').empty();\n $('.modal-body').html(parsedHtml.body);\n $('.modal-footer').html(parsedHtml.footer);\n $('.full-pdp-link').text(data.quickViewFullDetailMsg);\n $('#quickViewModal .full-pdp-link').attr('href', data.productUrl);\n $('#quickViewModal .size-chart').attr('href', data.productUrl);\n $('#quickViewModal .modal-header .close .sr-only').text(data.closeButtonText);\n $('#quickViewModal .enter-message').text(data.enterDialogMessage);\n $('#quickViewModal').modal('show');\n $('body').trigger('quickview:ready');\n\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\nmodule.exports = {\n showQuickview: function () {\n $('body').on('click', '.quickview', function (e) {\n e.preventDefault();\n var selectedValueUrl = $(this).closest('a.quickview').attr('href');\n $(e.target).trigger('quickview:show');\n getModalHtmlElement();\n fillModalElement(selectedValueUrl);\n });\n },\n focusQuickview: function () {\n $('body').on('shown.bs.modal', '#quickViewModal', function () {\n $('#quickViewModal .close').focus();\n });\n },\n trapQuickviewFocus: function () {\n $('body').on('keydown', '#quickViewModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#quickViewModal',\n firstElementSelector: '.full-pdp-link',\n lastElementSelector: '.add-to-cart-global',\n nextToLastElementSelector: '.modal-footer .quantity-select'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n availability: base.availability,\n addToCart: base.addToCart,\n showSpinner: function () {\n $('body').on('product:beforeAddToCart', function (e, data) {\n $(data).closest('.modal-content').spinner().start();\n });\n },\n hideDialog: function () {\n $('body').on('product:afterAddToCart', function () {\n $('#quickViewModal').modal('hide');\n });\n },\n beforeUpdateAttribute: function () {\n $('body').on('product:beforeAttributeSelect', function () {\n $('.modal.show .modal-content').spinner().start();\n });\n },\n updateAttribute: function () {\n $('body').on('product:afterAttributeSelect', function (e, response) {\n if ($('.modal.show .product-quickview>.bundle-items').length) {\n $('.modal.show').find(response.container).data('pid', response.data.product.id);\n $('.modal.show').find(response.container)\n .find('.product-id').text(response.data.product.id);\n } else if ($('.set-items').length) {\n response.container.find('.product-id').text(response.data.product.id);\n } else {\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\n $('.modal.show .full-pdp-link')\n .attr('href', response.data.product.selectedProductUrl);\n }\n });\n },\n updateAddToCart: function () {\n $('body').on('product:updateAddToCart', function (e, response) {\n // update local add to cart (for sets)\n $('button.add-to-cart', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n\n // update global add to cart (single products, bundles)\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n $('.add-to-cart-global', dialog).attr('disabled',\n !$('.global-availability', dialog).data('ready-to-order')\n || !$('.global-availability', dialog).data('available')\n );\n });\n },\n updateAvailability: function () {\n $('body').on('product:updateAvailability', function (e, response) {\n // bundle individual products\n $('.product-availability', response.$productContainer)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n\n\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n if ($('.product-availability', dialog).length) {\n // bundle all products\n var allAvailable = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('available'); });\n\n var allReady = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('ready-to-order'); });\n\n $('.global-availability', dialog)\n .data('ready-to-order', allReady)\n .data('available', allAvailable);\n\n $('.global-availability .availability-msg', dialog).empty()\n .html(allReady ? response.message : response.resources.info_selectforstock);\n } else {\n // single product\n $('.global-availability', dialog)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n }\n });\n }\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","'use strict';\n\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n processInclude(require('./search/search'));\n processInclude(require('base/product/quickView'));\n});\n","'use strict';\n\nconst { sizeColorPlp } = require('./sizeColorPlp');\n\nvar lozad = require(\"lozad\");\n\nfunction initSlickSliderFilter() {\n $(\".js-plp-slider\").slick({\n lazyLoad: 'ondemand',\n slidesToShow: 1,\n slidesToScroll: 1,\n centerPadding: \"0\",\n infinite: true,\n speed: 500,\n });\n}\n\ninitSlickSliderFilter();\n\nfunction lazyLoad() {\n // Lazy Loading\n var lazyLoadingObserver = lozad(\".lozad\", {\n rootMargin: \"500px 0px\",\n loaded: function (el) {\n $(el).addClass(\"lazy-loaded\");\n },\n });\n lazyLoadingObserver.observe();\n}\n\nlazyLoad();\n\nfunction initSlickPlp() {\n $(\".js-plp-slider\").not(\".slick-initialized\").slick({\n lazyLoad: \"ondemand\",\n slidesToShow: 1,\n slidesToScroll: 1,\n centerPadding: \"0\",\n infinite: true,\n });\n lazyLoad();\n}\n\nfunction stockFilterCategoryAfterClick(blockFilter) {\n\n var selectedSizesFiltre = [];\n var filtreTitle = blockFilter;\n\n filtreTitle.each(function () {\n\n selectedSizesFiltre = [];\n\n var checkedButtons = $(this).find(\".skp-button-filtre.skp-checked\");\n \n if (checkedButtons.length > 0) {\n checkedButtons.each(function() {\n var size = $(this).text().trim();\n selectedSizesFiltre.push(size);\n });\n\n var deleteButton = $(this).parent('.refinement').find('.remove-filtre-button');\n deleteButton.show();\n\n var stockFiltre = $(this).parent('.refinement').find('.filtre-stock-value');\n stockFiltre.text(selectedSizesFiltre.join(\", \"));\n }\n }); \n}\n\n\nfunction stockFilterCategory() {\n\n var selectedSizesFiltre = [];\n var filtreTitle = $('.accordion-content');\n\n filtreTitle.each(function () {\n\n selectedSizesFiltre = [];\n\n var checkedButtons = $(this).find(\".skp-button-filtre.skp-checked\");\n \n if (checkedButtons.length > 0) {\n checkedButtons.each(function() {\n var size = $(this).text().trim();\n selectedSizesFiltre.push(size);\n });\n\n var deleteButton = $(this).parent('.refinement').find('.remove-filtre-button');\n deleteButton.show();\n\n var stockFiltre = $(this).parent('.refinement').find('.filtre-stock-value');\n stockFiltre.text(selectedSizesFiltre.join(\", \"));\n }\n }); \n}\n\nstockFilterCategory();\n\nfunction stockFilterColor() {\n var filtreTitle = $(\".accordion-content\");\n\n filtreTitle.each(function () {\n\n var checkedColors = $(this).find(\".swatch-circle.selected\");\n checkedColors.parents(\".skp-color\").addClass(\"color-selected\");\n checkedColors.parents(\".refinement\").find(\".filtre-stock-value\").addClass(\"color-stock\");\n checkedColors.parents(\".refinement\").addClass(\"color-category\");\n\n if (checkedColors.length > 0) {\n var $refinementBlock = $(\".color-category .values-space\").clone();\n\n $refinementBlock.find(\".skp-color\").not(\".color-selected\").remove();\n\n $(\".color-stock\").append($refinementBlock);\n\n\n var deleteButton = checkedColors.parents(\".refinement\").find(\".remove-filtre-button\");\n deleteButton.show();\n }\n });\n}\n\nstockFilterColor();\n\nfunction stockFilterPrice() {\n var selectedPriceFiltre = [];\n var filtreTitle = $('.accordion-content');\n\n filtreTitle.each(function () {\n selectedPriceFiltre = [];\n\n var checkedButtons = $(this).find(\".skp-prix-filtre.skp-checked\");\n \n if (checkedButtons.length > 0) {\n checkedButtons.each(function() {\n var price = $(this).siblings(\"span.stock-value\").text().trim();\n selectedPriceFiltre.push(price);\n });\n\n var deleteButton = $(this).siblings('.remove-filtre-button');\n deleteButton.show();\n\n var stockFiltre = $(this).siblings('.filtre-stock-value');\n stockFiltre.text(selectedPriceFiltre.join(\", \"));\n\n }\n }); \n}\n\nstockFilterPrice();\n\nfunction stockFilterTrier() {\n\n var filtreTitle = $('.trier-content');\n\n var checkedButtons = filtreTitle.find(\".trier-checked\");\n \n if (checkedButtons.length > 0) {\n checkedButtons.each(function() {\n var trier = $(this).find(\"span\").text().trim();\n var stockFiltre = filtreTitle.siblings('.filtre-stock-value');\n stockFiltre.text(trier);\n });\n }\n}\n\nstockFilterTrier();\n\n// Variable globale pour sauvegarder l'état des filtres\nvar filterState = {};\n\n// Fonction pour sauvegarder l'état des filtres\nfunction saveFilterState() {\n $('.card-header').each(function() {\n var tabId = $(this).attr('data-tab');\n filterState[tabId] = $(this).hasClass('filtre-arrow');\n });\n}\n\n// Fonction pour restaurer l'état des filtres\nfunction restoreFilterState() {\n $.each(filterState, function(tabId, isOpen) {\n var $accordionTitle = $('.card-header[data-tab=\"' + tabId + '\"]');\n if (isOpen) {\n $accordionTitle.addClass('filtre-arrow');\n $('#' + tabId).show();\n } else {\n $accordionTitle.removeClass('filtre-arrow');\n $('#' + tabId).hide();\n }\n });\n}\n\nfunction adjustHeaderFiltreHeight() {\n $('.refinement').each(function() {\n var refinementParent = $(this);\n var cardHeader = refinementParent.find('.card-header');\n\n if (!cardHeader.hasClass('filtre-arrow')) {\n var refinementParent = $(this);\n var parentHeight = refinementParent.outerHeight();\n refinementParent.find('.header-filtre').height(parentHeight);\n }\n });\n}\n\nadjustHeaderFiltreHeight();\n\n/**\n * Update DOM elements with Ajax results\n *\n * @param {Object} $results - jQuery DOM element\n * @param {string} selector - DOM element to look up in the $results\n * @return {undefined}\n */\nfunction updateDom($results, selector) {\n var $updates = $results.find(selector);\n $(selector).empty().html($updates.html());\n}\n\n/**\n * Keep refinement panes expanded/collapsed after Ajax refresh\n *\n * @param {Object} $results - jQuery DOM element\n * @return {undefined}\n */\nfunction handleRefinements($results) {\n $('.refinement.active').each(function () {\n $(this).removeClass('active');\n var activeDiv = $results.find('.' + $(this)[0].className.replace(/ /g, '.'));\n activeDiv.addClass('active');\n activeDiv.find('button.title').attr('aria-expanded', 'true');\n });\n\n updateDom($results, '.refinements');\n}\n\n/**\n * Parse Ajax results and updated select DOM elements\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction parseResults(response) {\n var $results = $(response);\n var specialHandlers = {\n '.refinements': handleRefinements\n };\n\n // Update DOM elements that do not require special handling\n [\n '.grid-header',\n '.header-bar',\n '.header.page-title',\n '.product-grid',\n '.show-more',\n '.filter-bar'\n ].forEach(function (selector) {\n updateDom($results, selector);\n });\n\n Object.keys(specialHandlers).forEach(function (selector) {\n specialHandlers[selector]($results);\n });\n}\n\n/**\n * This function retrieves another page of content to display in the content search grid\n * @param {JQuery} $element - the jquery element that has the click event attached\n * @param {JQuery} $target - the jquery element that will receive the response\n * @return {undefined}\n */\nfunction getContent($element, $target) {\n var showMoreUrl = $element.data('url');\n $.spinner().start();\n $.ajax({\n url: showMoreUrl,\n method: 'GET',\n success: function (response) {\n $target.append(response);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Update sort option URLs from Ajax response\n *\n * @param {string} response - Ajax response HTML code\n * @return {undefined}\n */\nfunction updateSortOptions(response) {\n var $tempDom = $('
      ').append($(response));\n var sortOptions = $tempDom.find('.grid-footer').data('sort-options').options;\n sortOptions.forEach(function (option) {\n $('input.' + option.id).val(option.url);\n });\n}\n\nmodule.exports = {\n filter: function () {\n // Display refinements bar when Menu icon clicked\n $('.container').on('click', 'button.filter-results', function () {\n $('.refinement-bar').addClass('show-refinement-bar');\n $('.SKP-show-result').addClass('show-refinement-result');\n $('.modal-background').show();\n $('.refinement-bar').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', true);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', true);\n $('body').addClass('menu-open-mobile');\n $('.refinement-bar .close').focus();\n function hauteurFilter(){\n var heightHeaderFilter = $('.filter-header').height();\n var HeightWindow = $(window).height() - 1;\n $('.refinement-body').css({ 'min-height' : HeightWindow - heightHeaderFilter +'px'})\n }\n hauteurFilter();\n $(window).on('resize', function(){\n hauteurFilter()\n });\n });\n },\n\n closeRefinements: function () {\n // Refinements close button\n $('.container').on('click', '.refinement-bar .show-result-filtre, .modal-background', function () {\n $('.refinement-bar').removeClass('show-refinement-bar');\n $('.SKP-show-result').removeClass('show-refinement-result');\n $('.modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n $('body').removeClass('menu-open-mobile');\n });\n },\n\n resize: function () {\n var isScrolling;\n\n function closeOnResize() {\n $('.refinement-bar').removeClass('show-refinement-bar');\n $('.SKP-show-result').removeClass('show-refinement-result');\n $('.modal-background').hide();\n $('.refinement-bar').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.row').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.tab-pane.active').siblings().attr('aria-hidden', false);\n $('.refinement-bar').closest('.container.search-results').siblings().attr('aria-hidden', false);\n }\n\n $(window).resize(function () {\n clearTimeout(isScrolling);\n\n isScrolling = setTimeout(function () {\n if (!isScrolling) {\n closeOnResize();\n }\n }, 200);\n });\n\n $(window).on('scroll', function () {\n clearTimeout(isScrolling);\n isScrolling = true;\n });\n },\n\n sort: function () {\n // Handle sort order menu selection\n $('.container').on('change', '[name=sort-order] input', function (e) {\n e.preventDefault();\n\n $.spinner().start();\n $(this).trigger('search:sort', this.value);\n $.ajax({\n url: this.value,\n data: { selectedUrl: this.value },\n method: 'GET',\n success: function (response) {\n $('.product-grid').empty().html(response);\n initSlickPlp();\n sizeColorPlp();\n $('.newGrid').children('.skp-product-tile').removeClass('col-6 col-md-4 p-0 oldTileGrid').addClass('newTileGrid');\n $('.newGrid').addClass('push-media-removed');\n $('.trier-header .header-filtre').click(function(e) {\n if ($(this).parents('.trier-header').hasClass('filtre-arrow')) {\n $(this).parents('.refinement').find('.filtre-stock-value').empty();\n } else {\n setTimeout(function () {\n stockFilterTrier();\n }, 300);\n }\n });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n showMore: function () {\n // Show more products\n var isLoading = false;\n $('.container').on('click', '.show-more button', function (e) {\n isLoading = true;\n e.stopPropagation();\n var showMoreUrl = $(this).data('url');\n var pageNumber = $('#next-page-href').data('page-number');\n var blockLoader = $('.plp-loader-block');\n e.preventDefault();\n blockLoader.height(130);\n blockLoader.spinner().start();\n $(this).trigger('search:showMore', e);\n $.ajax({\n url: showMoreUrl,\n data: {\n selectedUrl: showMoreUrl,\n pageNumber: pageNumber\n },\n method: 'GET',\n success: function (response) {\n isLoading = false;\n $('.grid-footer').replaceWith(response);\n initSlickPlp();\n sizeColorPlp();\n $('.newGrid').children('.skp-product-tile').removeClass('col-6 col-md-4 p-0 oldTileGrid').addClass('newTileGrid');\n if($('.newGrid').hasClass('push-media-removed')){\n $('.push-media').remove();\n }\n var pushMedia = $('.push-media-block');\n\n pushMedia.each(function () {\n var btnPushMedia = $(this).find('.push-media-footer .btn')\n if($(this).find('.push-media-content').hasClass('push-media-title-bottom')){\n $(this).find('.push-media-title').insertBefore(btnPushMedia);\n }\n });\n updateSortOptions(response);\n blockLoader.spinner().stop();\n blockLoader.height(0);\n var skpCountProduct = $('.skp-product-tile').length;\n $(\".skp-number-product .skp-load-more-p\").text(function (i, txt) {\n return txt.replace(/\\d+/, skpCountProduct);\n });\n },\n error: function () {\n blockLoader.spinner().stop();\n blockLoader.height(0);\n }\n });\n });\n \n if ($('.skp-seoBanner').length) {\n var footer = document.getElementById(\"skp-seoBanner-content\");\n } else {\n var footer = document.getElementById(\"footercontent\");\n }\n\n document.addEventListener(\"scroll\", function (e) {\n let isScrollToBottom = (this.oldScroll || 0) < window.pageYOffset\n\n if (isVisible(footer) && isScrollToBottom && !isLoading) {\n $('.show-more button').click();\n initSlickPlp();\n sizeColorPlp();\n $('.newGrid').children('.skp-product-tile').removeClass('col-6 col-md-4 p-0 oldTileGrid').addClass('newTileGrid');\n }\n this.oldScroll = window.pageYOffset;\n });\n var heightOfProduct = $('.skp-product-tile').outerHeight();\n var doubleHeightOfProduct = heightOfProduct * 2;\n\n function isVisible(elm) {\n var rect = elm.getBoundingClientRect();\n if ($('.newGrid').length) {\n var adjustment = parseInt(doubleHeightOfProduct, 10);\n } else {\n var adjustment = parseInt(heightOfProduct, 10);\n }\n var adjustedTop = rect.top - adjustment;\n var viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);\n return !(rect.bottom < 0 || adjustedTop - viewHeight >= 0);\n }\n },\n\n applyFilter: function () {\n // Handle refinement value selection and reset click\n $('.container').on(\n 'click',\n '.refinements ul button, .refinements li button, .refinement-bar button.reset, .filter-value button, .swatch-filter button',\n function (e) {\n e.preventDefault();\n e.stopPropagation();\n saveFilterState();\n $.spinner().start();\n $(this).trigger('search:filter', e);\n\n var isResetFilter = $(this).hasClass('skp-reset');\n\n $.ajax({\n url: $(this).data('href'),\n data: {\n page: $('.grid-footer').data('page-number'),\n selectedUrl: $(this).data('href')\n },\n method: 'GET',\n success: function (response) {\n parseResults(response);\n // Rappeler la fonction applyPriceFilter après l'appel AJAX\n var stockValue = $('.stock-value-price');\n if (stockValue.text().trim() !== \"\") {\n $('.stock-value-price').removeClass('d-none').addClass('d-block');\n }\n \n applyPriceFilter(); \n\n if (isResetFilter) {\n resetFilter();\n }\n\n var $refinements = $(\".refinements\");\n if ($refinements.is(':empty')) {\n $('.no-result-filter').removeClass('d-none');\n $('.no-result-filter .result-skp-product').removeClass('d-none');\n $('.result-filter').addClass('d-none');\n } else {\n $('.no-result-filter').addClass('d-none');\n $('.no-result-filter .result-skp-product').addClass('d-none');\n $('.result-filter').removeClass('d-none');\n }\n initSlickPlp();\n sizeColorPlp();\n \n $('.newGrid').children('.skp-product-tile').removeClass('col-6 col-md-4 p-0 oldTileGrid').addClass('newTileGrid');\n $('.newGrid').addClass('push-media-removed');\n \n $('.accordion-title-filtre .header-filtre').click(function(e) {\n var accordionitem = $(this).parents('.accordion-title-filtre').attr('data-tab');\n $(\"#\"+accordionitem).slideToggle();\n \n $(this).parents('.accordion-title-filtre').toggleClass('filtre-arrow');\n $(\"#\"+accordionitem).removeClass('filtre-arrow');\n\n if($(this).parents('.accordion-title-filtre').hasClass('filtre-arrow')){\n $(this).parent('.refinement').removeClass('stock-filtre-full');\n } else if($(this).parent('.refinement').find('.filtre-stock-value').text().trim() !== '') {\n $(this).parent('.refinement').addClass('stock-filtre-full');\n }\n });\n\n var parentRefinementPrice = $('.price-values').parents('.refinement');\n var stockValuePrice = parentRefinementPrice.find('.filtre-stock-value');\n\n $('.swatch-circle').parents('.refinement').find('.accordion-title-filtre').addClass('color-title');\n $('.skp-button-filtre').parents('.refinement').find('.accordion-title-filtre').addClass('category-title');\n parentRefinementPrice.find('.accordion-title-filtre').addClass('price-title');\n $('.stock-value-price').insertAfter(stockValuePrice);\n \n $('.accordion-title-filtre.color-title .header-filtre').click(function(e) {\n if ($('.swatch-circle').parents('.refinement').find('.accordion-title-filtre').hasClass('filtre-arrow')) {\n $('.color-stock').empty();\n } else {\n setTimeout(function () {\n stockFilterColor();\n adjustHeaderFiltreHeight();\n }, 300);\n }\n });\n\n $('.accordion-title-filtre.category-title .header-filtre').click(function(e) {\n var accordionContent = $(this).parents('.refinement').find('.accordion-content');\n if ($(this).parents('.accordion-title-filtre').hasClass('filtre-arrow')) {\n $(this).parents('.refinement').find('.filtre-stock-value').empty();\n } else {\n setTimeout(function () {\n stockFilterCategoryAfterClick(accordionContent);\n saveFilterState();\n adjustHeaderFiltreHeight();\n }, 300);\n }\n });\n\n $('.accordion-title-filtre.price-title .header-filtre').click(function(e) {\n if ($(this).parents('.accordion-title-filtre').hasClass('filtre-arrow')) {\n $(this).parents('.refinement').find('.filtre-stock-value').empty();\n $('.stock-value-price').removeClass('d-block').addClass('d-none');;\n } else {\n setTimeout(function () {\n stockFilterPrice();\n adjustHeaderFiltreHeight();\n if( $('.skp-price').hasClass('show-price')) {\n $('.stock-value-price').removeClass('d-none').addClass('d-block');\n }\n }, 300);\n }\n });\n\n stockFilterColor();\n stockFilterCategory();\n stockFilterPrice();\n applyTrier();\n adjustHeaderFiltreHeight();\n\n var filtreTitle = $('.accordion-content');\n\n filtreTitle.each(function () {\n \n var refinement = $(this).parent('.refinement');\n var stockFiltre = refinement.find('.filtre-stock-value');\n \n if (refinement.find('.accordion-title-filtre').hasClass('filtre-arrow')) {\n stockFiltre.empty();\n }\n }); \n\n restoreFilterState();\n\n $.spinner().stop();\n\n $('.refinement .values').each(function () {\n\n if ($(this).find('.skp-filtres').hasClass('skp-size')) {\n $(this).addClass('values-space');\n } else if ($(this).find('.skp-filtres').hasClass('skp-color')) {\n $(this).addClass('values-space');\n } else if ($(this).find('.skp-filtres').hasClass('skp-attr')) {\n $(this).addClass('values-space');\n };\n $('.detailed-size').parent('.values').addClass('detailed-size-block');\n $('.detailed-size').parents('.refinement').addClass('detailed-size-refinement');\n });\n\n $('.filtre-stock-value').each(function() {\n if ($(this).text().trim() !== '' && !$(this).parent('.category-title').hasClass('filtre-arrow')) {\n $(this).parents('.refinement').addClass('stock-filtre-full');\n }\n });\n\n var filtreTitle = $('.accordion-content');\n\n filtreTitle.each(function () {\n\n var refinement = $(this).parent('.refinement');\n var stockFiltre = refinement.find('.filtre-stock-value');\n\n if (refinement.find('.accordion-title-filtre').hasClass('filtre-arrow')) {\n stockFiltre.empty();\n }\n }); \n \n if ($('.swatch-circle').parents('.refinement').find('.accordion-title-filtre').hasClass('filtre-arrow')) {\n $('.color-stock').empty();\n } else {\n stockFilterColor();\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n showContentTab: function () {\n // Display content results from the search\n $('.container').on('click', '.content-search', function () {\n if ($('#content-search-results').html() === '') {\n getContent($(this), $('#content-search-results'));\n }\n });\n\n // Display the next page of content results from the search\n $('.container').on('click', '.show-more-content button', function () {\n getContent($(this), $('#content-search-results'));\n $('.show-more-content').remove();\n });\n }\n};\n$('.refinement .values').each(function () {\n\n if ($(this).find('.skp-filtres').hasClass('skp-size')) {\n $(this).addClass('values-space');\n } else if ($(this).find('.skp-filtres').hasClass('skp-color')) {\n $(this).addClass('values-space');\n } else if ($(this).find('.skp-filtres').hasClass('skp-attr')) {\n $(this).addClass('values-space');\n };\n $('.detailed-size').parent('.values').addClass('detailed-size-block');\n $('.detailed-size').parents('.refinement').addClass('detailed-size-refinement');\n});\n\n$('.show-result-filtre').on('click', function () {\n $('.skp-count-mobile .search-result-count').empty().html($('.result-count .search-result-count').html());\n});\n\nfunction PLPHeightImage() {\n var window_Width = $(window).width(),\n PLP_width = (1/3 * window_Width),\n PLP_width_New = (1/2 * window_Width);\n\n if (window_Width > 840) {\n var PLP_Height = (PLP_width * 1.24);\n $('.skp-product-tile .product-tile .image-container, .product-tile .skp-fullscreen-vimeo,.skp-product-tile .product-tile .slide-box,.skp-product-tile .product-tile .slick-list').css('height', PLP_Height);\n \n var PLP_Height_New_Grid_Desktop = (PLP_width_New * 1.24);\n $('.newGrid > :nth-child(22n + 7) .image-container, .newGrid > :nth-child(22n + 8) .image-container, .newGrid > :nth-child(22n + 21) .image-container, .newGrid > :nth-child(22n + 22) .image-container,.newGrid > :nth-child(22n + 7) .slick-list, .newGrid > :nth-child(22n + 8) .slick-list, .newGrid > :nth-child(22n + 21) .slick-list, .newGrid > :nth-child(22n + 22) .slick-list,.newGrid > :nth-child(22n + 7) .slide-box, .newGrid > :nth-child(22n + 8) .slide-box, .newGrid > :nth-child(22n + 21) .slide-box, .newGrid > :nth-child(22n + 22) .slide-box,.newGrid > :nth-child(22n + 7).push-media,.newGrid > :nth-child(22n + 8).push-media,.newGrid > :nth-child(22n + 29).push-media,.newGrid > :nth-child(22n + 30).push-media').each(function() {\n $(this).css({\n 'min-height': PLP_Height_New_Grid_Desktop + 'px'\n });\n });\n } else {\n var PLP_width = (1/2 * window_Width),\n PLP_Height = (PLP_width * 1.24);\n $('.skp-product-tile .product-tile .image-container, .product-tile .skp-fullscreen-vimeo,.skp-product-tile .product-tile .slide-box,.skp-product-tile .product-tile .slick-list').css('height', PLP_Height);\n\n var PLP_Height_New_Grid_Mobile = (window_Width * 1.24);\n $('.newGrid > :nth-child(22n + 7) .image-container, .newGrid > :nth-child(22n + 8) .image-container, .newGrid > :nth-child(22n + 21) .image-container, .newGrid > :nth-child(22n + 22) .image-container,.newGrid > :nth-child(22n + 7) .slick-list, .newGrid > :nth-child(22n + 8) .slick-list, .newGrid > :nth-child(22n + 21) .slick-list, .newGrid > :nth-child(22n + 22) .slick-list,.newGrid > :nth-child(22n + 7) .slide-box, .newGrid > :nth-child(22n + 8) .slide-box, .newGrid > :nth-child(22n + 21) .slide-box, .newGrid > :nth-child(22n + 22) .slide-box,.newGrid > :nth-child(22n + 7).push-media,.newGrid > :nth-child(22n + 8).push-media,.newGrid > :nth-child(22n + 29).push-media,.newGrid > :nth-child(22n + 30).push-media').each(function() {\n $(this).css({\n 'min-height': PLP_Height_New_Grid_Mobile + 'px'\n });\n });\n\n }\n}\n\n$(document).ready(function () {\n PLPHeightImage();\n});\n\n$(window).on('load resize scroll', function () {\n PLPHeightImage();\n});\n\n\n\nfunction breadcrumbPLP() {\n var bread_Width = $('.search-breadcrumb').width(),\n breadcrumb_UlWidth = $('.skp-breadcrumb').width(),\n window_Width = $(window).width();\n \n if (window_Width < 1368 && bread_Width < breadcrumb_UlWidth) {\n \n $('.breadcrumb-item:eq(0)').addClass('d-none');\n $('.breadcrumb-item:eq(1)').addClass('breadcrumb-none')\n $('.breadcrumb-item:eq(1) span').text('...');\n }\n }\n \n breadcrumbPLP();\n \n $(window).on('resize', function () {\n breadcrumbPLP();\n});\n\nrequire(\"./sizeColorPlp\");\nsizeColorPlp();\n\nvar widthRefinementBar = $('.refinement-bar').outerWidth();\n$('.refinement-bar').css('right' ,-widthRefinementBar);\n\nvar currentGroupIndex = 0;\nvar groupWidths = [];\nvar totalFastAccessLabelWidth = 0;\nvar fastAccessWidth = $('.fast-access').width();\n\nfunction calculateAccessWidths() {\n var slickSlides = $('.fast-access .slick-slide');\n totalFastAccessLabelWidth = 0;\n groupWidths = [];\n\n // Calculer la largeur totale de tous les éléments\n slickSlides.each(function() {\n totalFastAccessLabelWidth += $(this).outerWidth(true); \n });\n\n // Boucler par groupe de trois éléments\n for (var i = 0; i < slickSlides.length; i += 3) {\n var groupWidth = 0;\n var groupCount = Math.floor(i / 3) + 1;\n\n // Calculer la largeur du groupe de trois éléments\n for (var j = i; j < i + 3 && j < slickSlides.length; j++) {\n groupWidth += $(slickSlides[j]).outerWidth(true);\n }\n\n // Stocker la largeur du groupe dans le tableau\n groupWidths.push({ group: groupCount, width: groupWidth });\n }\n}\n\nfunction updateArrows(slick, currentSlide) {\n\n if (currentSlide === 0) {\n $('.fast-access .slick-prev').addClass('slick-disabled').attr('aria-disabled', 'true');\n } else {\n $('.fast-access .slick-prev').removeClass('slick-disabled').attr('aria-disabled', 'false');\n }\n\n if (totalFastAccessLabelWidth < fastAccessWidth) {\n $('.fast-access .slick-next').addClass('slick-disabled').attr('aria-disabled', 'true');\n } else {\n $('.fast-access .slick-next').removeClass('slick-disabled').attr('aria-disabled', 'false');\n }\n}\n\nvar $carousel = $('.fast-access');\n\n$carousel.on('init', function(event, slick){\n calculateAccessWidths();\n updateArrows(slick, slick.currentSlide);\n});\n\n$carousel.on('afterChange', function(event, slick, currentSlide){\n updateArrows(slick, currentSlide);\n});\n\n$carousel.slick({\n infinite: false,\n variableWidth: true,\n slidesToShow: 1,\n slidesToScroll: 3,\n arrows: true,\n responsive: [\n {\n breakpoint: 840, \n settings: {\n swipe: true\n }\n },\n {\n breakpoint: 9999,\n settings: {\n swipe: false\n }\n }\n ]\n});\n\n$('.fast-access .slick-next').on('click', function() {\n if (currentGroupIndex < groupWidths.length) {\n totalFastAccessLabelWidth -= groupWidths[currentGroupIndex].width;\n currentGroupIndex++;\n\n if (totalFastAccessLabelWidth < fastAccessWidth) {\n $(this).addClass('slick-disabled').attr('aria-disabled', 'true');\n }\n }\n});\n\n$('.fast-access .slick-prev').on('click', function() {\n if (currentGroupIndex > 0) {\n currentGroupIndex--;\n totalFastAccessLabelWidth += groupWidths[currentGroupIndex].width;\n if (totalFastAccessLabelWidth >= fastAccessWidth) {\n $('.fast-access .slick-next').removeClass('slick-disabled').attr('aria-disabled', 'false');\n }\n }\n});\n\n\n$(document).ready(function() {\n var windowWidth = $(window).width();\n\n var topBannerImage;\n if (windowWidth > 840) {\n topBannerImage = $('.top-banner-image.top-banner-Desktop');\n } else {\n topBannerImage = $('.top-banner-image.top-banner-Mobile');\n }\n\n if (topBannerImage.length) {\n var backgroundImage = topBannerImage.css('background-image');\n\n if (backgroundImage && backgroundImage !== 'none') {\n var match = backgroundImage.match(/url\\(\"?(.+?)\"?\\)/);\n var url = match ? match[1] : '';\n\n if (url) {\n var img = new Image();\n img.src = url;\n\n topBannerImage.css('min-height', '143px');\n\n img.onload = function() {\n var imgWidth = img.naturalWidth;\n var imgHeight = img.naturalHeight;\n\n var aspectRatio = imgHeight / imgWidth;\n var minHeight = 143;\n\n function adjustHeight() {\n var windowWidth = $(window).width();\n var newHeight = windowWidth * aspectRatio;\n\n if (newHeight < minHeight) {\n topBannerImage.css('min-height', '');\n } else {\n topBannerImage.css({'min-height': newHeight + 'px', 'background-size': 'cover','background-position' : 'center'});\n }\n }\n\n adjustHeight();\n\n $(window).resize(function() {\n adjustHeight();\n });\n };\n }\n }\n }\n});\n\nvar btn = $('.back-to-top');\n\n$(window).scroll(function() {\n if ($(window).scrollTop() > 300) {\n btn.addClass('show');\n } else {\n btn.removeClass('show');\n }\n});\n\nbtn.on('click', function(e) {\n e.preventDefault();\n $('html, body').animate({scrollTop:0}, '300');\n});\n\n\nvar pushMedia = $('.push-media-block');\n\npushMedia.each(function () {\n var btnPushMedia = $(this).find('.push-media-footer .btn')\n if($(this).find('.push-media-content').hasClass('push-media-title-bottom')){\n $(this).find('.push-media-title').insertBefore(btnPushMedia);\n }\n});\n\n$('.accordion-title-filtre .header-filtre').click(function(e) {\n if (!$(e.target).closest('.remove-filtre-selected').length) {\n var accordionitem = $(this).parents('.accordion-title-filtre').attr('data-tab');\n $(\"#\" + accordionitem).slideToggle();\n $(this).parents('.accordion-title-filtre').toggleClass('filtre-arrow');\n $(\"#\" + accordionitem).removeClass('filtre-arrow');\n }\n if($(this).parents('.accordion-title-filtre').hasClass('filtre-arrow')){\n $(this).parent('.refinement').removeClass('stock-filtre-full');\n } else if($(this).parent('.refinement').find('.filtre-stock-value').text().trim() !== '') {\n $(this).parent('.refinement').addClass('stock-filtre-full');\n }\n});\n\nfunction applyTrier() {\n $('.trier-header .header-filtre').click(function(e) {\n var accordionitem = $(this).parents('.trier-header').attr('data-tab');\n $(\"#\" + accordionitem).slideToggle();\n $(this).parents('.trier-header').toggleClass('filtre-arrow');\n $(\"#\" + accordionitem).removeClass('filtre-arrow');\n adjustHeaderFiltreHeight();\n });\n\n $('.skp-filtres.custom-radio').click(function(){\n $(this).find('input[type=radio]').prop('checked', true).trigger('change');\n });\n\n $(\"input[type=radio][name=sort-order]\").change(function(){\n $(\"input[type=radio][name=sort-order]\").each(function(){\n $(this).closest(\".custom-radio\").find(\"label\").removeClass(\"trier-checked\");\n });\n \n if ($(this).is(\":checked\")) {\n $(this).closest(\".custom-radio\").find(\"label\").addClass(\"trier-checked\");\n }\n });\n}\n\napplyTrier();\n\n$('.accordion-title-filtre.price-title .header-filtre').click(function(e) {\n if ($(this).parents('.accordion-title-filtre').hasClass('filtre-arrow')) {\n $('.stock-value-price').removeClass('d-block').addClass('d-none');\n } else {\n if( $('.skp-price').hasClass('show-price')) {\n $('.stock-value-price').removeClass('d-none').addClass('d-block');\n }\n }\n});\n\nvar $valueFrom = $('#valueFrom');\nvar $valueTo = $('#valueTo');\n\nvar valueFrom = parseInt($valueFrom.text());\nvar valueTo = parseInt($valueTo.text());\n\n$('.skp-reset').data('value-price-min' , valueFrom);\n$('.skp-reset').data('value-price-max' , valueTo);\n\n$('.skp-reset').attr('data-value-price-min' , valueFrom);\n$('.skp-reset').attr('data-value-price-max' , valueTo);\n\nvar resetMinValue = $('.skp-reset').data('value-price-min');\nvar resetMaxValue = $('.skp-reset').data('value-price-max');\n\n// Variables globales pour conserver les valeurs\nvar currentValueFrom = valueFrom;\nvar currentValueTo = valueTo;\n\nvar isResetButtonVisible = false;\nvar currentStockValueText = ''; // Variable globale pour stocker la valeur de stockValue\nvar initialValueFrom = $('#valueFrom'); // Valeur initiale pour le minimum\nvar initialValueTo = $('#valueTo'); // Valeur initiale pour le maximum\nvar isResetAction = false;\n\n// Fonction pour appliquer le filtre\nfunction applyPriceFilter() {\n var $valueFrom = $('#valueFrom');\n var $valueTo = $('#valueTo');\n\n var minvalueFrom = parseInt($valueFrom.text());\n var maxvalueTo = parseInt($valueTo.text());\n\n initialValueFrom = minvalueFrom; // Sauvegarder les valeurs initiales\n initialValueTo = maxvalueTo;\n\n // Utilisation des valeurs globales au lieu de lire les éléments DOM à chaque fois\n var valueFrom = currentValueFrom;\n var valueTo = currentValueTo;\n\n var resetButton = $('.skp-price').parents('.refinement').find('.remove-filtre-button');\n var stockValue = $('.stock-value-price');\n\n var labelMinPrice = stockValue.data('value-min');\n var labelMaxPrice = stockValue.data('value-max');\n var currencySymbol = stockValue.data('currency-symbol');\n\n // Restaurer l'état du bouton reset\n if (isResetButtonVisible) {\n resetButton.css('display', 'block');\n $('.skp-price').addClass('show-price');\n }\n // Restaurer l'état de stockValue si disponible\n if (currentStockValueText) {\n stockValue.text(currentStockValueText);\n }\n\n // Initialisation ou mise à jour du slider\n $(\"#slider-range\").slider({\n range: true,\n min: minvalueFrom,\n max: maxvalueTo,\n values: [valueFrom, valueTo],\n slide: function (event, ui) {\n // Vérifier que la différence est toujours d'au moins 1\n if (ui.values[1] - ui.values[0] < 1) {\n // Bloquer le mouvement selon la poignée utilisée\n if (ui.handleIndex === 0) {\n // Si la poignée gauche (min) est déplacée trop près de max\n return false;\n } else if (ui.handleIndex === 1) {\n // Si la poignée droite (max) est déplacée trop près de min\n return false;\n }\n }\n // Ici, on met à jour uniquement le slider, pas l'affichage\n $valueFrom.text(ui.values[0]);\n $valueTo.text(ui.values[1]);\n },\n change: function (event, ui) {\n\n resetButton.css('display', 'block');\n $('.skp-price').removeClass('show-price');\n isResetButtonVisible = true;\n\n currentValueFrom = ui.values[0];\n currentValueTo = ui.values[1];\n\n var newStockValue = `${labelMinPrice} ${currentValueFrom}${currencySymbol} ${labelMaxPrice} ${currentValueTo}${currencySymbol}`;\n stockValue.text(newStockValue);\n currentStockValueText = newStockValue;\n\n if (currentValueFrom === initialValueFrom && currentValueTo === initialValueTo) {\n resetButton.css('display', 'none');\n $('.skp-price').removeClass('show-price');\n isResetButtonVisible = false;\n } else {\n resetButton.css('display', 'block');\n $('.skp-price').addClass('show-price');\n isResetButtonVisible = true;\n }\n if (!isResetAction) { // Exécuter seulement si ce n'est pas une action de réinitialisation\n var $button = $('.skp-price button');\n var url = $button.data('href');\n var updatedUrl = updateUrlParams(url, {\n pmin: currentValueFrom,\n pmax: (currentValueTo + 1)\n });\n\n \n $button.data('href', updatedUrl);\n $button.attr('data-href', updatedUrl);\n $button.trigger('click'); // Mise à jour et action\n }\n }\n });\n\n // Mettre à jour les valeurs affichées au chargement sans toucher à l'affichage\n // Cette partie ne touche pas les valeurs textuelles, qui sont uniquement liées au slider.\n $valueFrom.text($(\"#slider-range\").slider(\"values\", 0));\n $valueTo.text($(\"#slider-range\").slider(\"values\", 1));\n\n // Ajouter un événement pour le bouton reset\n resetButton.off('click').on('click', resetFilter);\n\n}\n\n // Fonction pour réinitialiser le filtre\n function resetFilter() {\n\n var $valueFromMin = $('#valueFrom');\n var $valueToMax = $('#valueTo');\n\n // Réinitialiser les valeurs du slider\n isResetAction = true;\n var resetButton = $('.skp-price').parents('.refinement').find('.remove-filtre-button');\n var stockValue = $('.stock-value-price');\n\n var labelMinPrice = stockValue.data('value-min');\n var labelMaxPrice = stockValue.data('value-max');\n var currencySymbol = stockValue.data('currency-symbol');\n $(\"#slider-range\").slider('values', [resetMinValue, resetMaxValue]);\n\n\n // Réinitialiser les textes affichés\n $valueFromMin.text(resetMinValue);\n $valueToMax.text(resetMaxValue);\n\n // Réinitialiser le texte de stockValue\n var resetStockValue = `${labelMinPrice} ${currentValueFrom}${currencySymbol} ${labelMaxPrice} ${currentValueTo}${currencySymbol}`;\n stockValue.text(resetStockValue);\n currentStockValueText = resetStockValue;\n\n // Cacher le bouton reset\n resetButton.css('display', 'none');\n isResetButtonVisible = false;\n setTimeout(() => { isResetAction = false; }, 0); \n }\n\n// Fonction pour mettre à jour les paramètres de l'URL\nfunction updateUrlParams(url, params) {\n var urlObj = new URL((url), window.location.origin); // Utilise l'origine pour éviter les erreurs\n Object.keys(params).forEach(function (key) {\n urlObj.searchParams.set(key, params[key]);\n });\n return urlObj.toString().replace(window.location.origin, ''); // Supprime l'origine pour ne garder que le chemin relatif\n}\n\n// Appeler la fonction au chargement de la page\n$(document).ready(function () {\n applyPriceFilter();\n});\n\n\n/**\n * This function reply to TK specific scroll behavior\n */\nvar scrollRestoration = {\n init: function () {\n if(performance.getEntriesByType(\"navigation\")[0].type == \"back_forward\"){\n\n if (sessionStorage['scrollPosition_PLP']) {\n history.scrollRestoration = \"manual\";\n }\n $(document).ready(function () {\n scrollRestoration.restore();\n })\n }\n \n },\n restore: function () {\n var cat = window.location.href.split('?')[0].split('/').pop();\n if (sessionStorage['scrollPosition_PLP']) {\n var lastLocation = JSON.parse(sessionStorage['scrollPosition_PLP'])\n if(lastLocation.cat == cat){\n $(document).scrollTop(lastLocation.position);\n }else{\n sessionStorage.removeItem('scrollPosition_PLP');\n }\n \n }\n }\n}\n\nscrollRestoration.init();\n\n\n","\"use strict\";\n\nfunction showModalView() {\n let startY;\n let endY;\n let threshold = 50;\n\n function disableScroll() {\n window.addEventListener('scroll', preventScroll, { passive: false });\n document.addEventListener('touchmove', preventScroll, { passive: false });\n }\n\n function enableScroll() {\n window.removeEventListener('scroll', preventScroll, { passive: false });\n document.removeEventListener('touchmove', preventScroll, { passive: false });\n }\n\n function preventScroll(e) {\n e.preventDefault();\n }\n\n $(\"body\").on(\"click\", \".view-size-color\", function (e) {\n var $htmlInfoSizeColor = $(this).parents(\".product-tile\").find(\".tileVariationContent\").html();\n $(\"#modal-view .modal-body-view\").empty().html($htmlInfoSizeColor);\n\n var $modalContent = $(\"#modal-view .modal-body-view\");\n var $colorDiv = $modalContent.find(\".color-size-plp\").first();\n var $sizeDiv = $modalContent.find(\".color-size-plp\").last();\n\n if ($colorDiv.index() < $sizeDiv.index()) {\n $colorDiv.insertAfter($sizeDiv);\n }\n\n $(\"#modal-view\").addClass(\"modal-view-show\").removeClass(\"modal-view-close\");\n $(\".modal-content-view\").animate({ bottom: \"0%\" }, 200);\n $(\"body\").addClass(\"menu-open\");\n disableScroll();\n });\n\n $(\".close-view\").click(function () {\n closeModal();\n });\n\n $(window).click(function (event) {\n if ($(event.target).is(\"#modal-view\")) {\n closeModal();\n }\n });\n\n function closeModal() {\n $(\".modal-content-view\").animate({ bottom: \"-100%\" }, 200, function () {\n setTimeout(function () {\n $(\"#modal-view\").addClass(\"modal-view-close\").removeClass(\"modal-view-show\");\n }, 220);\n $(\"body\").removeClass(\"menu-open\");\n enableScroll();\n });\n }\n\n $(\".modal-content-view\").on(\"touchstart\", function (event) {\n startY = event.touches[0].clientY;\n });\n\n $(\".modal-content-view\").on(\"touchmove\", function (event) {\n endY = event.touches[0].clientY;\n });\n\n $(\".modal-content-view\").on(\"touchend\", function (event) {\n if (startY && endY && endY - startY > threshold) {\n closeModal();\n }\n startY = null;\n endY = null;\n });\n}\n\n\nshowModalView();\n\nfunction updateColorSwatches() {\n var viewportWidth = $(window).width();\n var $maxColors = 9;\n\n if (viewportWidth >= 360 && viewportWidth < 390) {\n $maxColors = 10;\n } else if (viewportWidth > 389 && viewportWidth <= 420) {\n $maxColors = 11;\n } else if (viewportWidth >= 421) {\n $maxColors = 12;\n }\n\n $('.modal-plp-size-color').each(function() {\n \n var $container = $(this);\n $container.find('.color-plp-Mobile').eq($maxColors - 1).nextAll('.color-plp-Mobile:not(.rest)').hide().addClass('color-hidden');\n\n var $hiddenElementsCount = $container.find('.color-plp-Mobile.color-hidden').length;\n var $hiddenElementsCount = $container.find('.color-plp-Mobile.color-hidden').length;\n \n var $restSpan = $container.find('.rest');\n if ($hiddenElementsCount !== 0) {\n $restSpan.text('+' + $hiddenElementsCount);\n } else {\n $restSpan.hide();\n }\n });\n}\n\nupdateColorSwatches();\n\n$(window).resize(function() {\n updateColorSwatches();\n});\n\nmodule.exports = {\n sizeColorPlp: function () {\n\n function updateContainerElements($container) {\n var $sizeElements = $container.find(\".size-plp span:not(.more-sizes)\");\n var $containerWidth = $container.width() - $container.find(\".size-plp span.more-sizes\").width();\n var $totalWidth = 0;\n var $visibleWidth = 0;\n \n var $visibleElements = $();\n \n $sizeElements.each(function () {\n var $element = $(this);\n var $elementWidth = $element.outerWidth(true);\n \n if ($visibleWidth + $elementWidth <= $containerWidth) {\n $visibleWidth += $elementWidth;\n $visibleElements = $visibleElements.add($element);\n }\n \n $totalWidth += $elementWidth;\n });\n \n if ($totalWidth <= $containerWidth) {\n $container.addClass(\"min-sizes\").removeClass(\"max-sizes\");\n $container.parents(\".tileVariation-Desktop\").find(\".more-sizes\").addClass(\"d-none\");\n } else {\n $container.addClass(\"max-sizes\").removeClass(\"min-sizes\");\n $container.parents(\".tileVariation-Desktop\").find(\".more-sizes\").removeClass(\"d-none\");\n \n $sizeElements.hide();\n \n $visibleElements.show();\n }\n }\n \n var $containers = $('.tileVariation-Desktop .color-size-plp[data-attr=\"size\"]');\n \n $containers.each(function () {\n updateContainerElements($(this));\n });\n \n $(window).resize(function () {\n $containers.each(function () {\n updateContainerElements($(this));\n });\n });\n \n $(\".search-results .product-tile\").each(function () {\n var tuileVariation = $(this).find(\".tileVariation-Desktop\");\n var windowWidth = $(window).width();\n \n if (windowWidth > 840) {\n \n $(this).mouseenter(function () {\n tuileVariation.css({'height': '100%' , 'padding' : '2px 8px 2px 4px'}); \n }).mouseleave(function () {\n tuileVariation.css({'height': '0px' , 'padding' : '0px 8px 0px 4px'}); \n });\n }\n });\n\n var $colorSwatch = $(\".swatch-circle\");\n $colorSwatch.each(function () {\n var $self = $(this),\n $colorValue = $self.data(\"attr-value\");\n\n if ($colorValue) {\n var $strColor = $colorValue.substring(0, 3);\n if ($strColor === \"WHI\") {\n $self.addClass(\"swatch-white\");\n }\n }\n });\n }\n}","/*! lozad.js - v1.16.0 - 2020-09-06\n* https://github.com/ApoorvSaxena/lozad.js\n* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.lozad=e()}(this,function(){\"use strict\";\n/**\n * Detect IE browser\n * @const {boolean}\n * @private\n */var g=\"undefined\"!=typeof document&&document.documentMode,f={rootMargin:\"0px\",threshold:0,load:function(t){if(\"picture\"===t.nodeName.toLowerCase()){var e=t.querySelector(\"img\"),r=!1;null===e&&(e=document.createElement(\"img\"),r=!0),g&&t.getAttribute(\"data-iesrc\")&&(e.src=t.getAttribute(\"data-iesrc\")),t.getAttribute(\"data-alt\")&&(e.alt=t.getAttribute(\"data-alt\")),r&&t.append(e)}if(\"video\"===t.nodeName.toLowerCase()&&!t.getAttribute(\"data-src\")&&t.children){for(var a=t.children,o=void 0,i=0;i<=a.length-1;i++)(o=a[i].getAttribute(\"data-src\"))&&(a[i].src=o);t.load()}t.getAttribute(\"data-poster\")&&(t.poster=t.getAttribute(\"data-poster\")),t.getAttribute(\"data-src\")&&(t.src=t.getAttribute(\"data-src\")),t.getAttribute(\"data-srcset\")&&t.setAttribute(\"srcset\",t.getAttribute(\"data-srcset\"));var n=\",\";if(t.getAttribute(\"data-background-delimiter\")&&(n=t.getAttribute(\"data-background-delimiter\")),t.getAttribute(\"data-background-image\"))t.style.backgroundImage=\"url('\"+t.getAttribute(\"data-background-image\").split(n).join(\"'),url('\")+\"')\";else if(t.getAttribute(\"data-background-image-set\")){var d=t.getAttribute(\"data-background-image-set\").split(n),u=d[0].substr(0,d[0].indexOf(\" \"))||d[0];// Substring before ... 1x\nu=-1===u.indexOf(\"url(\")?\"url(\"+u+\")\":u,1===d.length?t.style.backgroundImage=u:t.setAttribute(\"style\",(t.getAttribute(\"style\")||\"\")+\"background-image: \"+u+\"; background-image: -webkit-image-set(\"+d+\"); background-image: image-set(\"+d+\")\")}t.getAttribute(\"data-toggle-class\")&&t.classList.toggle(t.getAttribute(\"data-toggle-class\"))},loaded:function(){}};function A(t){t.setAttribute(\"data-loaded\",!0)}var m=function(t){return\"true\"===t.getAttribute(\"data-loaded\")},v=function(t){var e=1