{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/components/common.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/components/templates/picturetag.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/config/carouselConfig.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/product/base.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/product/quickView.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/search.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/search/search.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/thirdParty/pinchZoom/pinch-zoom.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/utils/lazyLoad.js","webpack:///./cartridges/app_custom_core/cartridge/client/default/js/utils/utils.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack:///./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseTrim.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_trimmedEndIndex.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack:///(webpack)/buildin/global.js"],"names":["window","PinchZoom","require","utils","config","pinchZoom","draggableUnzoomed","minZoom","maxZoom","setOffsetsOnce","selectors","carousel","modal","module","exports","slickInit","$","slick","recommendationsStart","document","on","onModalHide","e","thatModal","delegateTarget","innerCarousel","find","length","onModalShow","hasClass","productTile","$image","data","attr","globalEventHandlers","ajaxError","event","jqxhr","pushGAEvent","responseJSON","dataLayerViewData","dataLayerData","isTouchDevice","smartResize","each","_","item","$parent","parent","height","initPinchZoom","pinchZoomElements","querySelectorAll","forEach","parentElement","classList","contains","default","template","pdict","lazyload","lazyload_carousel","image","srcset","mobile","tablet","desktop","classname","altname","alt","titlename","title","itemprop","breakpoints","slider","slidesToShow","slidesToScroll","infinite","autoplay","autoplaySpeed","rows","fade","dots","arrows","prevArrow","nextArrow","lazyLoad","sliderdotless","contentcarousel","centerMode","responsive","breakpoint","ls","settings","md","minicartcarousel","instagramcarousel","recommendations","useTransform","speed","tricarousel","categorycarousel","productcarousel","productcarousel3","productcarousel4","focusHelper","carouselConfig","picturetag","common","getPidValue","$el","pid","closest","getQuantitySelector","quantitySelected","quantitySelectedModal","quantitySelectedPDP","val","undefined","getQuantitySelected","processSwatchValues","$productContainer","msgs","values","attrValue","$attrValue","id","value","$swatchButton","selected","addClass","siblings","text","assistiveSelectedText","removeClass","empty","url","removeAttr","selectable","processNonSwatchValues","$attr","$defaultOption","resetUrl","updateAttrs","attrs","attrsWithSwatches","indexOf","updateAvailability","response","availabilityValue","availabilityMessages","product","availability","messages","readyToOrder","resources","info_selectforstock","message","trigger","updateFabrics","materialSelected","variationAttributes","attributeId","color","material","selectedFabricButton","materialId","replace","fadeTo","getAttributesHtml","attributes","html","attributeGroup","ID","attribute","label","updateOptions","optionsHtml","createVideoTile","videoId","imageUrl","updateImages","imgs","productCarouselContainer","productCarouselNav","append","productCarousel","large","i","active","navImage","carouselImage","appendTo","grid","videoTileGrid","imageHTML","parseInt","index","updateProductSetItemImage","$productItemImageContainer","replaceWith","updateProductSetItemLink","$productItemLink","selectedProductUrl","updateProductSetDescription","$productItemSubtitle","productSetSubtitle","createSlick","imgsArray","$carouselContainer","videoTileCarousel","$this","videoStatus","JSON","stringify","desktopZoomModal","zoom","getProductType","$productQuickview","displaySelectedColorValue","productType","$selectedColorElement","handleVariantResponse","isChoiceOfBonusProducts","parents","isVaraint","primaryImageUrls","images","youtubevideoid","input","prop","show","update","$priceSelector","priceHTML","parseHTML","price","isMapPrice","priceMain","priceContainer","promotionsHtml","isFinalSale","finalSaleMessage","$selectButton","updateQuantities","quantities","map","quantity","join","attributeSelect","selectedValueUrl","container","ajax","method","success","calculateProductSetPrice","spinner","stop","error","getAddToCartUrl","getTempBasketCalculationUrl","parseHtml","$html","body","footer","children","chooseBonusProducts","start","remove","bonusUrl","bonusChoiceRuleBased","showProductsUrlRuleBased","showProductsUrlListBased","htmlString","maxBonusItems","uuid","pliUUID","addToCartUrl","pageSize","labels","selectprods","dataType","parsedHtml","renderedTemplate","enterDialogMessage","closeButtonText","handlePostCartAdd","messageType","newBonusDiscountLineItem","Object","keys","setTimeout","location","reload","getChildProducts","childProducts","push","getOptions","options","$elOption","urlValue","selectedValueId","optionId","toArray","miniCartReportingUrl","ltkUpdateCartData","renderSCA","ltkAppendSCAScript","script","createElement","type","defer","src","ltkScriptSrc","setAttribute","SCA","ltkDataUrl","getScript","updateCartAfterAddToCard","form","reportingURL","updateProductSetPrice","resObj","productlineItems","productPrice","productID","renderedPrice","pidsObj","setPids","allSetPids","is","qty","tempBasketCalculationUrl","methods","editBonusProducts","focusChooseBonusProductModal","focus","onClosingChooseBonusProductModal","trapChooseBonusProductModalFocus","focusParams","containerSelector","firstElementSelector","lastElementSelector","setTabNextFocus","colorAttribute","preventDefault","selectAttribute","currentTarget","selectCheckbox","hide","inputStatusArr","every","available","addToCart","selectBonusProduct","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","optionID","valueId","selectedBonusProductHtml","removeBonusProduct","$selected","count","enableBonusProductSelection","showMoreBonusProducts","addBonusProductsToCart","$readyToOrderBonusProducts","queryString","pidsObject","bonusProducts","qtyOption","option","productId","errorMessage","msgSuccess","changeAttrButtons","targetUrl","initVideo","$videoPosition","insertAfter","openVideo","$videoContainer","$videoModal","openImage","imageIndex","$imageModal","one","Number","base","displaySelectedColorValueQuickView","getModalHtmlElement","fillModalElement","quickViewFullDetailMsg","productUrl","not","showQuickview","target","onModalShown","trapQuickviewFocus","nextToLastElementSelector","showSpinner","hideDialog","beforeUpdateAttribute","updateAttribute","updateAddToCart","dialog","$checkTypeDiv","allAvailable","allReady","processInclude","ready","bodyScrollLock","debounce","updateAddressBar","query","includes","substring","historyUrl","pathname","history","pushState","updateDom","$results","selector","$updates","handleRefinements","activeDiv","className","handleGridHeader","$goHomeButton","handleTopCustomFilter","parseResults","specialHandlers","cache","$refinementBar","$gridHeader","$isLoadProductsContinously","getContent","$element","$target","showMoreUrl","updateSortOptions","$tempDom","sortOptions","swatchScroll","productSwatches","totalSwatches","totalDisplay","reviewsHide","review","numReviews","css","getPage","selectedUrl","truncatePageLinks","currentPage","fromPage","pageDisplay","paginationBar","totalProducts","pageCount","Math","ceil","pageLinks","limitDisplay","limitStartDisplay","endPages","previousPage","nextPage","currentLink","pageNumber","link","nextLink","next","prevLink","prev","lastAvailableLink","last","nextLinkURL","nextLinkPageNumber","pageLinkNext","firstAvailableLink","first","preLinkURL","prevLinkPageNumber","pageLinkPrev","prepend","totalPages","createPagination","gridFooter","showMoreURL","productStart","URL","searchParams","set","pageLink","urlParams","URLSearchParams","search","get","pageURL","filter","getCurrentLayout","getBoundingClientRect","bottom","disableBodyScroll","clearAllBodyScrollLocks","toggleClass","closeRefinements","resize","sort","paginate","stopPropagation","animate","scrollTop","replaceState","buttonClass","showMore","loadProductsContinously","applyFilter","handleGAEvent","preferenceNumber","entries","key","colorParamValue","isLowerCase","str","toLowerCase","page","refinementBody","showContentTab","swatchView","swatch","tile","productURL","tileImage","tileLink","tileFinalSale","imageURL","medium","htmlImage","newImage","swatchScrollInit","direction","colorSwatches","swatchViewport","swatchDisplayCount","currentPosition","newPosition","endPosition","totalSwatchCount","swatches","reviewsHideInit","assign","defineProperty","varArgs","TypeError","to","arguments","nextSource","nextKey","prototype","hasOwnProperty","call","writable","configurable","Array","from","object","slice","buildElement","tmp","implementation","createHTMLDocument","innerHTML","triggerEvent","el","name","createEvent","initEvent","dispatchEvent","definePinchZoom","zoomFactor","lastScale","offset","x","y","initialOffset","defaults","setupMarkup","bindEvents","isImageLoaded","updateAspectRatio","setupOffsets","enable","sum","a","b","isCloseTo","expected","tapZoomFactor","zoomOutFactor","animationDuration","lockDragAxis","use2d","zoomStartEventName","zoomUpdateEventName","zoomEndEventName","dragStartEventName","dragUpdateEventName","dragEndEventName","doubleTapEventName","verticalPadding","horizontalPadding","onZoomStart","onZoomEnd","onZoomUpdate","onDragStart","onDragEnd","onDragUpdate","onDoubleTap","handleDragStart","stopAnimation","lastDragPosition","hasInteraction","handleDrag","touch","getTouches","drag","sanitizeOffset","handleDragEnd","end","handleZoomStart","nthZoom","lastZoomCenter","handleZoom","newScale","touchCenter","getTouchCenter","scale","handleZoomEnd","handleDoubleTap","center","startZoomFactor","updateProgress","progress","scaleTo","bind","isDoubleTap","getCurrentZoomCenter","swing","computeInitialOffset","abs","offsetWidth","getInitialZoomFactor","offsetHeight","resetOffset","nodeName","complete","naturalHeight","_isOffsetsSet","elWidth","elHeight","maxX","getContainerX","maxY","getContainerY","maxOffsetX","max","maxOffsetY","minOffsetX","min","minOffsetY","scaleZoomFactor","addOffset","originalZoomFactor","canDrag","lastCenter","touches","getVectorAvg","vectors","v","reduce","sanitize","zoomOutAnimation","isInsaneOffset","sanitizeOffsetAnimation","sanitizedOffset","targetOffset","startOffset","unsetContainerY","setContainerY","getAspectRatio","xZoomFactor","yZoomFactor","offsetLeft","centerX","offsetTop","centerY","rect","documentElement","scrollLeft","posTop","top","posLeft","left","pageX","pageY","duration","framefn","timefn","callback","startTime","Date","getTime","renderFrame","inAnimation","frameTime","requestAnimationFrame","p","cos","PI","style","parentNode","insertBefore","appendChild","overflow","position","webkitTransformOrigin","mozTransformOrigin","msTransformOrigin","oTransformOrigin","transformOrigin","self","detectGestures","resizeHandler","addEventListener","imgEl","updatePlanned","offsetX","offsetY","transform3d","transform2d","removeClone","clone","removeChild","is3d","webkitTransform","mozTransform","msTransform","oTransform","transform","cloneNode","pointerEvents","enabled","disable","destroy","removeEventListener","interaction","fingers","lastTouchStart","startTouches","setInteraction","newInteraction","updateInteraction","targetTouches","getDistance","sqrt","calculateScale","endTouches","startDistance","endDistance","cancelEvent","detectDoubleTap","time","firstMove","passive","LazyLoad","inst","callback_error","img","$img","$pictureSources","srcsetUrls","staticFolder","mediaBreakpoints","$cache","getViewports","size","bps","viewport","console","Error","mediaBreakpointUp","mediaQuery","matchMedia","matches","getCurrentViewport","w","innerWidth","viewports","isDesktop","isCurrentPage","timeout","clearTimeout","navigator","maxTouchPoints","msMaxTouchPoints","getBreakpoints","scrollBrowser","xLocation","scrollDuration","scrollY","stickyHeaderData","add","round","KEYCODE_TAB","isTabPressed","keyCode","firstFocusableEl","lastFocusableEl","linkElements","shiftKey","include","_toConsumableArray","arr","isArray","arr2","hasPassiveEvents","passiveTestOptions","isIosDevice","platform","test","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPosition","previousBodyPaddingRight","allowTouchMove","some","lock","rawEvent","setOverflowHidden","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","clientWidth","computedBodyPaddingRight","getComputedStyle","getPropertyValue","paddingRight","restoreOverflowSetting","setPositionFixed","_window","scrollX","innerHeight","bottomBarHeight","restorePositionSetting","scrollTo","isTargetElementTotallyScrolled","targetElement","scrollHeight","clientHeight","handleScroll","clientY","concat","ontouchstart","ontouchmove","enableBodyScroll","root","Symbol","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","baseGetTag","trimmedEndIndex","reTrimStart","baseTrim","string","freeGlobal","global","objectProto","nativeObjectToString","toString","isOwn","tag","unmasked","result","freeSelf","Function","reWhitespace","charAt","isObject","now","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","args","thisArg","apply","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isObjectLike","symbolTag","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","n","t","define","userAgent","o","devicePixelRatio","r","elements_selector","threshold","thresholds","data_src","data_srcset","data_sizes","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","class_applied","class_loading","class_loaded","class_error","class_entered","class_exited","unobserve_completed","unobserve_entered","cancel_on_exit","callback_enter","callback_exit","callback_applied","callback_loading","callback_loaded","callback_finish","callback_cancel","use_native","restore_on_error","c","l","CustomEvent","detail","instance","initCustomEvent","u","s","d","f","g","m","h","E","I","getAttribute","k","removeAttribute","A","L","O","C","N","M","RegExp","z","llTempImage","T","_observer","unobserve","R","loadingCount","G","toLoadCount","j","tagName","D","H","V","F","B","J","P","S","U","q","K","Q","W","X","Y","IMG","IFRAME","VIDEO","load","OBJECT","Z","nn","tn","llEvLisnrs","en","an","rn","cn","ln","backgroundImage","split","un","sn","dn","fn","_n","gn","HTMLImageElement","vn","isIntersecting","intersectionRatio","bn","mn","pn","hn","En","_settings","IntersectionObserver","rootMargin","_onlineHandler","disconnect","observe","loadAll","restoreAll","resetStatus","lazyLoadOptions"],"mappings":"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","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 = \"./cartridges/app_custom_core/cartridge/client/default/js/search.js\");\n","'use strict';\r\n\r\nwindow.PinchZoom = require('core/thirdParty/pinchZoom/pinch-zoom.js');\r\nvar utils = require('../utils/utils');\r\n\r\nconst config = {\r\n pinchZoom: {\r\n draggableUnzoomed: false,\r\n minZoom: 1,\r\n maxZoom: 2.5,\r\n setOffsetsOnce: true\r\n }\r\n};\r\n\r\nconst selectors = {\r\n carousel: '.js-carousel',\r\n modal: '.js-modal, .modal'\r\n};\r\n\r\n/**\r\n * Handles very specific small functionalities\r\n */\r\n\r\nmodule.exports = {\r\n // Global slick init, the configuration parameters are passed in the data-slick attribute in isml\r\n slickInit: () => { $(selectors.carousel).slick(); },\r\n recommendationsStart: () => {\r\n $(document).on('recommendations:start', () => {\r\n $(`${selectors.carousel}:not(.slick-initialized)`).slick();\r\n });\r\n },\r\n onModalHide: () => {\r\n $(selectors.modal).on('hidden.bs.modal', (e) => {\r\n const thatModal = e.delegateTarget;\r\n\r\n // Unslick slider if it has one\r\n const innerCarousel = $(thatModal).find(selectors.carousel);\r\n\r\n if (innerCarousel.length) {\r\n innerCarousel.slick('unslick');\r\n }\r\n });\r\n },\r\n\r\n onModalShow: () => {\r\n $(selectors.modal).on('shown.bs.modal', (e) => {\r\n const thatModal = e.delegateTarget;\r\n\r\n // Init slider if it has one\r\n const innerCarousel = $(thatModal).find(selectors.carousel);\r\n\r\n if (innerCarousel.length && !innerCarousel.hasClass('slick-initialized')) {\r\n innerCarousel.slick();\r\n }\r\n });\r\n },\r\n\r\n productTile: () => {\r\n $('.main').on('mouseenter', '.js-tile-image', function () {\r\n let $image = $(this);\r\n if ($image.data('alt-src') && !$image.hasClass('error')) {\r\n $image.data('primary-src', $image.attr('src'));\r\n $image.attr('src', $image.data('alt-src'));\r\n }\r\n }).on('mouseleave', '.js-tile-image', function () {\r\n let $image = $(this);\r\n if ($image.data('primary-src') && ($image.attr('src') !== $image.data('primary-src'))) {\r\n $image.attr('src', $image.data('primary-src'));\r\n }\r\n });\r\n },\r\n\r\n globalEventHandlers: () => {\r\n // events that should be run only once\r\n\r\n // Trigger error event on all ajax calls.\r\n $(document).ajaxError(function (event, jqxhr) {\r\n if (window.pushGAEvent && jqxhr.responseJSON && jqxhr.responseJSON.dataLayerViewData) {\r\n window.pushGAEvent(\r\n jqxhr.responseJSON.dataLayerViewData.event,\r\n jqxhr.responseJSON.dataLayerViewData.dataLayerData\r\n );\r\n }\r\n });\r\n\r\n if (utils.isTouchDevice()) {\r\n utils.smartResize(() => {\r\n // fix resize bug\r\n $('.js-pinch-zoom').each((_, item) => {\r\n let $parent = $(item).parent();\r\n if ($parent.hasClass('pinch-zoom-container')) {\r\n $parent.height($(item).height());\r\n }\r\n });\r\n });\r\n }\r\n },\r\n\r\n initPinchZoom: () => {\r\n if (utils.isTouchDevice()) {\r\n const pinchZoomElements = document.querySelectorAll('.js-pinch-zoom');\r\n\r\n pinchZoomElements.forEach((item) => {\r\n if (!item.parentElement.classList.contains('pinch-zoom-container')) {\r\n // eslint-disable-next-line\r\n new window.PinchZoom.default(item, config.pinchZoom);\r\n }\r\n });\r\n }\r\n }\r\n};\r\n","'use strict';\r\n\r\n/**\r\n * Renders picturetag.isml template\r\n * @param {Object} pdict - data object to generate HTML\r\n * @returns {string} HTML markup as string\r\n */\r\nconst template = (pdict) => `\r\n \r\n \r\n `;\r\n\r\nmodule.exports = template;\r\n","/* eslint-disable */\r\n\r\n// eslint disabled for this file, since this file, potentially can be reusable both for isml and client js\r\n\r\nvar breakpoints = require('./mediaBreakpoints.json');\r\n\r\n/**\r\n * Returns slider carousel config (banners slider)\r\n * @return {Config} carousel config\r\n */\r\nfunction slider() {\r\n return {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplay: true,\r\n autoplaySpeed: 6000,\r\n rows: 0,\r\n fade: true,\r\n dots: true,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand'\r\n };\r\n}\r\n\r\n/**\r\n * Returns dotless slider carousel config (banners slider)\r\n * @return {Config} carousel config\r\n */\r\nfunction sliderdotless() {\r\n return {\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplay: true,\r\n autoplaySpeed: 4000,\r\n rows: 0,\r\n fade: true,\r\n dots: false,\r\n arrows: false,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand'\r\n };\r\n}\r\n\r\n/**\r\n * Returns content carousel config (image with text carousel)\r\n * @return {Config} carousel config\r\n */\r\nfunction contentcarousel() {\r\n return {\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n centerMode: true,\r\n infinite: true,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns content carousel config (image with text carousel)\r\n * @return {Config} carousel config\r\n */\r\n function minicartcarousel() {\r\n return {\r\n slidesToShow: 2,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: ''\r\n };\r\n}\r\n\r\n/**\r\n * Returns Instagram carousel config\r\n * @return {Config} carousel config\r\n */\r\n function instagramcarousel() {\r\n return {\r\n slidesToShow: 5,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns recommendations carousel config (product tiles carousel)\r\n * @return {Config} carousel config\r\n */\r\nfunction recommendations() {\r\n return {\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n infinite: true,\r\n useTransform: false,\r\n speed: 300,\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 3\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 2\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns tri carousel config\r\n * @return {Config} carousel config\r\n */\r\nfunction tricarousel() {\r\n return {\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n centerMode: true,\r\n rows: 0,\r\n dots: false,\r\n arrows: false,\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 1,\r\n autoplay: false,\r\n autoplaySpeed: 5000\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n/**\r\n * Returns Instagram carousel config\r\n * @return {Config} carousel config\r\n */\r\nfunction categorycarousel() {\r\n return {\r\n slidesToShow: 6,\r\n slidesToScroll: 1,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n autoplay: false,\r\n infinite: false,\r\n lazyLoad: 'progressive', \r\n prevArrow: '',\r\n nextArrow: '',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 4, \r\n centerMode: false,\r\n }\r\n },\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns product feature carousel config\r\n * @return {Config} carousel config\r\n */\r\nfunction productcarousel() {\r\n return {\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n centerMode: false,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 1.5,\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n centerMode: false,\r\n autoplaySpeed: 5000\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns product feature carousel config\r\n * @return {Config} carousel config\r\n */\r\nfunction productcarousel3() {\r\n return {\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n centerMode: false,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 2.5,\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n centerMode: false,\r\n autoplaySpeed: 5000\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 2.5,\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n centerMode: false,\r\n autoplaySpeed: 5000\r\n }\r\n }\r\n ]\r\n };\r\n}\r\n\r\n/**\r\n * Returns product feature carousel config\r\n * @return {Config} carousel config\r\n */\r\nfunction productcarousel4() {\r\n return {\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n centerMode: false,\r\n rows: 0,\r\n dots: false,\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand',\r\n responsive: [\r\n {\r\n breakpoint: breakpoints.ls,\r\n settings: {\r\n slidesToShow: 2.5,\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n centerMode: false,\r\n autoplaySpeed: 5000\r\n }\r\n },\r\n {\r\n breakpoint: breakpoints.md,\r\n settings: {\r\n slidesToShow: 2.5,\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n centerMode: false,\r\n autoplaySpeed: 5000\r\n }\r\n }\r\n ]\r\n };\r\n}\r\nmodule.exports = {\r\n slider: slider,\r\n sliderdotless: sliderdotless,\r\n contentcarousel: contentcarousel,\r\n instagramcarousel: instagramcarousel,\r\n minicartcarousel: minicartcarousel,\r\n recommendations: recommendations,\r\n tricarousel: tricarousel,\r\n categorycarousel: categorycarousel,\r\n productcarousel: productcarousel,\r\n productcarousel3: productcarousel3,\r\n productcarousel4: productcarousel4\r\n};\r\n","'use strict';\r\n\r\nconst focusHelper = require('base/components/focus');\r\nconst carouselConfig = require('../config/carouselConfig.js');\r\nconst picturetag = require('../components/templates/picturetag');\r\nconst lazyLoad = require('../utils/lazyLoad');\r\nvar common = require('../components/common');\r\n\r\n/**\r\n * Retrieves the relevant pid value\r\n * @param {jquery} $el - DOM container for a given add to cart button\r\n * @return {string} - value to be used when adding product to cart\r\n */\r\nfunction getPidValue($el) {\r\n var pid;\r\n\r\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\r\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\r\n } else if ($('.product-set-detail').length || $('.product-set').length) {\r\n pid = $($el).closest('.product-detail').data('pid');\r\n } else {\r\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\r\n }\r\n\r\n return pid;\r\n}\r\n\r\n/**\r\n * Retrieve contextual quantity selector\r\n * @param {jquery} $el - DOM container for the relevant quantity\r\n * @return {jquery} - quantity selector DOM container\r\n */\r\nfunction getQuantitySelector($el) {\r\n var quantitySelected;\r\n if ($el && $('.set-items').length) {\r\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\r\n } else if ($el && $('.product-bundle').length) {\r\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\r\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\r\n if (quantitySelectedModal.val() === undefined) {\r\n quantitySelected = quantitySelectedPDP;\r\n } else {\r\n quantitySelected = quantitySelectedModal;\r\n }\r\n } else if ($el && ($el.hasClass('product-quickview') || $el.closest('.product-quickview').length)) {\r\n quantitySelected = $('.product-quickview').find('.quantity-select');\r\n } else {\r\n quantitySelected = $('.quantity-select');\r\n }\r\n return quantitySelected;\r\n}\r\n\r\n/**\r\n * Retrieves the value associated with the Quantity pull-down menu\r\n * @param {jquery} $el - DOM container for the relevant quantity\r\n * @return {string} - value found in the quantity input\r\n */\r\nfunction getQuantitySelected($el) {\r\n return getQuantitySelector($el).val();\r\n}\r\n\r\n/**\r\n * Process the attribute values for an attribute that has image swatches\r\n *\r\n * @param {Object} attr - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {Object[]} attr.values - Array of attribute value objects\r\n * @param {string} attr.values.value - Attribute coded value\r\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\r\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\r\n * selected. If there is no variant that corresponds to a specific combination of attribute\r\n * values, an attribute may be disabled in the Product Detail Page\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n * @param {Object} msgs - object containing resource messages\r\n */\r\nfunction processSwatchValues(attr, $productContainer, msgs) {\r\n attr.values.forEach(function (attrValue) {\r\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' + attrValue.value + '\"]');\r\n var $swatchButton = $attrValue.parent();\r\n\r\n if (attrValue.selected) {\r\n $attrValue.addClass('selected');\r\n $swatchButton.addClass('selected active');\r\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\r\n } else {\r\n $attrValue.removeClass('selected');\r\n $swatchButton.removeClass('selected active');\r\n $attrValue.siblings('.selected-assistive-text').empty();\r\n }\r\n\r\n if (attrValue.url) {\r\n $swatchButton.attr('data-url', attrValue.url);\r\n $swatchButton.addClass('selectable');\r\n $swatchButton.attr('disabled', false);\r\n } else {\r\n $swatchButton.removeAttr('data-url');\r\n $swatchButton.attr('disabled', true);\r\n }\r\n\r\n // Disable if not selectable\r\n $attrValue.removeClass('selectable unselectable');\r\n\r\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\r\n });\r\n}\r\n\r\n/**\r\n * Process attribute values associated with an attribute that does not have image swatches\r\n *\r\n * @param {Object} attr - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {Object[]} attr.values - Array of attribute value objects\r\n * @param {string} attr.values.value - Attribute coded value\r\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\r\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\r\n * selected. If there is no variant that corresponds to a specific combination of attribute\r\n * values, an attribute may be disabled in the Product Detail Page\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n */\r\nfunction processNonSwatchValues(attr, $productContainer) {\r\n var $attr = '[data-attr=\"' + attr.id + '\"]';\r\n\r\n // for select (1st select value)\r\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\r\n $defaultOption.attr('value', attr.resetUrl);\r\n\r\n attr.values.forEach(function (attrValue) {\r\n var $attrValue = $productContainer.find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\r\n\r\n $attrValue.attr('value', attrValue.url).removeAttr('disabled').removeClass('disabled');\r\n\r\n if (!attrValue.selectable) {\r\n $attrValue.attr('disabled', true);\r\n }\r\n if (!attrValue.selected) {\r\n $attrValue.removeClass('active');\r\n }\r\n\r\n $attrValue.data('selected', attrValue.selected);\r\n });\r\n}\r\n\r\n/**\r\n * Routes the handling of attribute processing depending on whether the attribute has image\r\n * swatches or not\r\n *\r\n * @param {Object} attrs - Attribute\r\n * @param {string} attr.id - Attribute ID\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n * @param {Object} msgs - object containing resource messages\r\n */\r\nfunction updateAttrs(attrs, $productContainer, msgs) {\r\n // Currently, the only attribute type that has image swatches is Color.\r\n var attrsWithSwatches = ['color'];\r\n\r\n attrs.forEach(function (attr) {\r\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\r\n processSwatchValues(attr, $productContainer, msgs);\r\n } else {\r\n processNonSwatchValues(attr, $productContainer);\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the availability status in the Product Detail Page\r\n *\r\n * @param {Object} response - Ajax response object after an\r\n * attribute value has been [de]selected\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n */\r\nfunction updateAvailability(response, $productContainer) {\r\n var availabilityValue = '';\r\n var availabilityMessages = response.product.availability.messages;\r\n if (!response.product.readyToOrder) {\r\n availabilityValue = '
  • ' + response.resources.info_selectforstock + '
  • ';\r\n } else {\r\n availabilityMessages.forEach(function (message) {\r\n availabilityValue += '
  • ' + message + '
  • ';\r\n });\r\n }\r\n\r\n $($productContainer).trigger('product:updateAvailability', {\r\n product: response.product,\r\n $productContainer: $productContainer,\r\n message: availabilityValue,\r\n resources: response.resources\r\n });\r\n}\r\n\r\nfunction updateFabrics(response) {\r\n var materialSelected;\r\n response.product.variationAttributes.forEach(function(attr){\r\n if(attr.attributeId === 'color'){\r\n attr.values.forEach(function(color){\r\n if(color.selected == true){\r\n materialSelected = color.material;\r\n }\r\n });\r\n }\r\n });\r\n\r\n var selectedFabricButton = $('.fabric-button.selected').attr('data-material-id');\r\n if(materialSelected){\r\n var materialId = materialSelected.replace(/\\s/g, '');\r\n if(materialId != selectedFabricButton){\r\n $('#showStyleMessage').removeClass('show');\r\n $('.fabricDetail').removeClass('show');\r\n $('.js-color-value-option').each(function(){\r\n var color = $(this);\r\n color.fadeTo(150, 1);\r\n });\r\n $('.fabric-button').addClass('disabled').removeClass('selected');\r\n $('#fabric-button-'+materialId).removeClass('disabled');\r\n } else {\r\n $('.fabric-button').addClass('disabled').removeClass('selected');\r\n $('#fabric-button-'+materialId).removeClass('disabled').addClass('selected');\r\n } \r\n }\r\n}\r\n\r\n/**\r\n * Generates html for product attributes section\r\n *\r\n * @param {array} attributes - list of attributes\r\n * @return {string} - Compiled HTML\r\n */\r\nfunction getAttributesHtml(attributes) {\r\n if (!attributes) {\r\n return '';\r\n }\r\n\r\n var html = '';\r\n\r\n attributes.forEach(function (attributeGroup) {\r\n if (attributeGroup.ID === 'mainAttributes') {\r\n attributeGroup.attributes.forEach(function (attribute) {\r\n html += '
    ' + attribute.label + ': '\r\n + attribute.value + '
    ';\r\n });\r\n }\r\n });\r\n\r\n return html;\r\n}\r\n\r\n/**\r\n * @typedef UpdatedOptionValue\r\n * @type Object\r\n * @property {string} id - Option value ID for look up\r\n * @property {string} url - Updated option value selection URL\r\n */\r\n\r\n/**\r\n * @typedef OptionSelectionResponse\r\n * @type Object\r\n * @property {string} priceHtml - Updated price HTML code\r\n * @property {Object} options - Updated Options\r\n * @property {string} options.id - Option ID\r\n * @property {UpdatedOptionValue[]} options.values - Option values\r\n */\r\n\r\n/**\r\n * Updates DOM using post-option selection Ajax response\r\n *\r\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n */\r\nfunction updateOptions(optionsHtml, $productContainer) {\r\n // Update options\r\n $productContainer.find('.product-options').empty().html(optionsHtml);\r\n}\r\n\r\n/**\r\n * Generate video tile for grid\\slider\r\n * @param {string} videoId - id of youtube video\r\n * @return {string} - Compiled HTML\r\n */\r\nfunction createVideoTile(videoId) {\r\n // TODO: Crop image or use thumbnain from BM\r\n let imageUrl = `https://i3.ytimg.com/vi/${videoId}/maxresdefault.jpg`;\r\n\r\n return `\r\n \r\n \"\"\r\n \r\n `;\r\n}\r\n\r\n/**\r\n * Dynamically change images in grid\r\n * @param {Object[]} imgs - Array of large product images,along with related information\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n * @param {string} videoId - id of youtube video\r\n *\r\n */\r\nfunction updateImages(imgs, $productContainer, videoId) {\r\n //if carousel layout\r\n let productCarouselContainer = $productContainer.find('.js-desktop-carousel-container');\r\n if(productCarouselContainer.length){\r\n\r\n var productCarouselNav = $('.js-desktop-carousel-nav');\r\n productCarouselNav.empty();\r\n\r\n productCarouselContainer.empty().append(\"\");\r\n var productCarousel = $('.js-desktop-carousel');\r\n\r\n if (imgs.large.length) {\r\n for (var i = 0; i < imgs.large.length; i++) {\r\n const image = imgs.large[i];\r\n var active = i == 0? 'active' : '';\r\n var navImage = \"\";\r\n var carouselImage = \"\";\r\n $(carouselImage).appendTo(productCarousel);\r\n $(navImage).appendTo(productCarouselNav);\r\n }\r\n }\r\n\r\n $('.js-desktop-carousel').slick({\r\n arrows: true,\r\n prevArrow: '',\r\n nextArrow: '',\r\n lazyLoad: 'ondemand'\r\n });\r\n }\r\n\r\n //if grid layout\r\n let grid = $productContainer.find('.js-primary-images-grid');\r\n if (grid.length) {\r\n grid.empty();\r\n\r\n let videoTileGrid = `
    ${createVideoTile(videoId)}
    `;\r\n\r\n if (imgs.large.length) {\r\n for (var i = 0; i < imgs.large.length; i++) {\r\n const image = imgs.large[i];\r\n const imageHTML = picturetag({\r\n image,\r\n classname: 'img-fluid',\r\n alt: image.alt + ' image number ' + parseInt(image.index, 10),\r\n lazyload: i !== 0\r\n });\r\n\r\n $(`
    \r\n \r\n ${imageHTML}\r\n \r\n
    `).appendTo(grid);\r\n\r\n if (videoId) {\r\n // if youtube video id and youtube video thumb exist in BM for this product\r\n if ((imgs.large.length >= 3 && i === 1) || (imgs.large.length < 3 && i === imgs.large.length - 1)) {\r\n // if the images array contains >= 3 images then show the video after 2nd position\r\n // if the images array contains < 3 images then show the video at the last position\r\n $(videoTileGrid).appendTo(grid);\r\n }\r\n }\r\n }\r\n } else if (videoId) {\r\n $(videoTileGrid).appendTo(grid);\r\n }\r\n }\r\n}\r\n\r\nfunction updateProductSetItemImage(imgs, $productContainer, videoId) {\r\n let $productItemImageContainer = $productContainer.find('.js-productSetItemImage picture');\r\n if ($productItemImageContainer.length) {\r\n if (imgs.large.length) {\r\n const image = imgs.large[0];\r\n const imageHTML = picturetag({\r\n image,\r\n classname: '',\r\n alt: image.alt + ' image number ' + parseInt(image.index, 10),\r\n lazyload: true\r\n });\r\n $productItemImageContainer.replaceWith(imageHTML);\r\n }\r\n }\r\n}\r\n\r\nfunction updateProductSetItemLink(product, $productContainer) {\r\n let $productItemLink = $productContainer.find('.js-productSetItem-name a');\r\n if ($productItemLink.length) {\r\n $productItemLink.attr('href', product.selectedProductUrl);\r\n }\r\n}\r\n\r\nfunction updateProductSetDescription(product, $productContainer) {\r\n let $productItemSubtitle = $productContainer.find('.js-productSetSubtitle');\r\n if ($productItemSubtitle.length && product.productSetSubtitle) {\r\n $productItemSubtitle.text(product.productSetSubtitle);\r\n }\r\n}\r\n\r\n/**\r\n * Dynamically creates Slick carousel from response containing images\r\n * @param {Object[]} imgsArray - Array of large product images,along with related information\r\n * @param {jQuery} $productContainer - DOM element for a given product\r\n * @param {string} videoId - id of youtube video\r\n */\r\nfunction createSlick(imgsArray, $productContainer, videoId) {\r\n const $carouselContainer = $productContainer.find('.js-slick-carousel');\r\n\r\n let videoTileCarousel = `
    ${createVideoTile(videoId)}
    `;\r\n\r\n // there can be several carousels on a page, so we use 'each'\r\n $carouselContainer.each(function () {\r\n const $this = $(this);\r\n const videoStatus = $this.data('video');\r\n\r\n // Append container\r\n $this.empty().append(`
    `);\r\n\r\n let carousel = $this.find('.js-carousel');\r\n\r\n // Detect parent container type\r\n let desktopZoomModal = $this.closest('.modal-primary-images').length;\r\n let imgs = desktopZoomModal ? imgsArray.zoom : imgsArray.large;\r\n\r\n // Append items\r\n if (imgs.length) {\r\n for (var i = 0; i < imgs.length; i++) {\r\n const image = imgs[i];\r\n const imageHTML = picturetag({\r\n image,\r\n classname: 'slick-img',\r\n alt: image.alt + ' image number ' + parseInt(image.index, 10),\r\n lazyload: i !== 0\r\n });\r\n\r\n if (desktopZoomModal) {\r\n $(imageHTML).appendTo(carousel);\r\n } else $(`
    ${imageHTML}
    `).appendTo(carousel);\r\n\r\n if (videoStatus === true && videoId) {\r\n // if youtube video id and youtube video thumb exist in BM for this product\r\n if ((imgs.length >= 3 && i === 1) || (imgs.length < 3 && i === imgs.length - 1)) {\r\n // if the images array contains >= 3 images then show the video after 2nd position\r\n // if the images array contains < 3 images then show the video at the last position\r\n $(videoTileCarousel).appendTo(carousel);\r\n }\r\n }\r\n }\r\n } else if (videoStatus === true && videoId) {\r\n $(videoTileCarousel).appendTo(carousel);\r\n }\r\n $this.find('.js-carousel').slick();\r\n });\r\n common.initPinchZoom();\r\n}\r\n\r\nfunction getProductType() {\r\n var $productQuickview = $('.product-quickview');\r\n return $productQuickview.length ? $productQuickview.find('.js-product').data('product-type') : $('.js-product').data('product-type');\r\n}\r\n\r\n/**\r\n * Displays selected color value\r\n */\r\nfunction displaySelectedColorValue($productContainer) {\r\n const productType = getProductType();\r\n\r\n if ($productContainer) {\r\n var $selectedColorElement = $('.js-attribute-color .js-swatch-value.selected', $productContainer);\r\n $('.js-selected-color-value', $productContainer).text($selectedColorElement.length ? $selectedColorElement.data('attrDisplayValue') : '');\r\n } else if (productType === 'productSet') {\r\n $('.set-items')\r\n .find('.js-product')\r\n .each(function () {\r\n var $selectedColorElement = $('.js-attribute-color .js-swatch-value.selected', $(this));\r\n $('.js-selected-color-value', $(this)).text($selectedColorElement.length ? $selectedColorElement.data('attrDisplayValue') : '');\r\n });\r\n } else {\r\n var $selectedColorElement = $('.js-attribute-color .js-swatch-value.selected');\r\n $('.js-selected-color-value').text($selectedColorElement.length ? $selectedColorElement.data('attrDisplayValue') : '');\r\n }\r\n}\r\n\r\n/**\r\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\r\n * @param {Object} response - response from Ajax call\r\n * @param {Object} response.product - Product object\r\n * @param {string} response.product.id - Product ID\r\n * @param {Object[]} response.product.variationAttributes - Product attributes\r\n * @param {Object[]} response.product.images - Product images\r\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\r\n * attributes have been selected. Used partially to\r\n * determine whether the Add to Cart button can be enabled\r\n * @param {jQuery} $productContainer - DOM element for a given product.\r\n */\r\nfunction handleVariantResponse(response, $productContainer) {\r\n const productType = getProductType();\r\n\r\n var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;\r\n var isVaraint;\r\n if (response.product.variationAttributes) {\r\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\r\n isVaraint = response.product.productType === 'variant';\r\n if (isChoiceOfBonusProducts && isVaraint) {\r\n $productContainer.parent('.bonus-product-item').data('pid', response.product.id);\r\n\r\n $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder);\r\n }\r\n }\r\n\r\n // Update primary images and video\r\n var primaryImageUrls = response.product.images;\r\n let videoId = response.product.youtubevideoid;\r\n\r\n if (productType === 'productSet') {\r\n updateProductSetItemImage(primaryImageUrls, $productContainer); // update item image\r\n updateProductSetItemLink(response.product, $productContainer); // update item link\r\n updateProductSetDescription(response.product, $productContainer); // update item Description\r\n\r\n var input = $productContainer.find('#productItem');\r\n input.prop('checked', true);\r\n $productContainer.find('.js-checkbox-selector-checked').show();\r\n $productContainer.addClass('select-productSet-item');\r\n $productContainer.data('pid', response.product.id);\r\n $productContainer.attr('data-pid', response.product.id)\r\n $productContainer.attr('data-ready-to-order', response.product.readyToOrder);\r\n } else {\r\n updateImages(primaryImageUrls, $productContainer, videoId); // update desktop primary image grid\r\n createSlick(primaryImageUrls, $productContainer, videoId); // update mobile primary image Slick + desktop Zoom slick\r\n }\r\n lazyLoad.update();\r\n\r\n // Update pricing\r\n if (!isChoiceOfBonusProducts) {\r\n var $priceSelector = $('.prices .price', $productContainer).length\r\n ? $('.prices .price', $productContainer)\r\n : $('.prices .price');\r\n var priceHTML = $.parseHTML(response.product.price.html);\r\n var isMapPrice = response.product.isMapPrice;\r\n if(isMapPrice){\r\n var priceMain = $(priceHTML).find('.price__main');\r\n priceMain.addClass('isMapPrice');\r\n }\r\n //check if master, display \"select available size\" messaging\r\n if(response.product.productType == \"master\"){\r\n var priceContainer = $(priceHTML).find('span');\r\n priceContainer.html('Please select available size');\r\n }\r\n $priceSelector.replaceWith(priceHTML);\r\n }\r\n\r\n // Update promotions\r\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\r\n\r\n //Update Availability\r\n updateAvailability(response, $productContainer);\r\n\r\n //Update fabrics\r\n updateFabrics(response);\r\n\r\n //Update final sale\r\n $('.finalSaleContainer').empty();\r\n if (response.product.isFinalSale) {\r\n var finalSaleMessage = $('
    Final Sale, No Returns Accepted
    ');\r\n $('.finalSaleContainer').append(finalSaleMessage);\r\n }\r\n\r\n if (isChoiceOfBonusProducts) {\r\n var $selectButton = $productContainer.find('.select-bonus-product');\r\n $selectButton.trigger('bonusproduct:updateSelectButton', {\r\n product: response.product,\r\n $productContainer: $productContainer\r\n });\r\n } else {\r\n // Enable \"Add to Cart\" button if all required attributes have been selected\r\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global')\r\n .trigger('product:updateAddToCart', {\r\n product: response.product,\r\n $productContainer: $productContainer\r\n })\r\n .trigger('product:statusUpdate', response.product);\r\n }\r\n\r\n // Update attributes\r\n $productContainer.find('.main-attributes').empty().html(getAttributesHtml(response.product.attributes));\r\n\r\n displaySelectedColorValue($productContainer);\r\n}\r\n\r\n/**\r\n * @typespec UpdatedQuantity\r\n * @type Object\r\n * @property {boolean} selected - Whether the quantity has been selected\r\n * @property {string} value - The number of products to purchase\r\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\r\n * etc.\r\n */\r\n\r\n/**\r\n * Updates the quantity DOM elements post Ajax call\r\n * @param {UpdatedQuantity[]} quantities -\r\n * @param {jQuery} $productContainer - DOM container for a given product\r\n */\r\nfunction updateQuantities(quantities, $productContainer) {\r\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\r\n var optionsHtml = quantities.map(function (quantity) {\r\n var selected = quantity.selected ? ' selected ' : '';\r\n return '';\r\n }).join('');\r\n getQuantitySelector($productContainer).empty().html(optionsHtml);\r\n }\r\n}\r\n\r\n/**\r\n * updates the product view when a product attribute is selected or deselected or when\r\n * changing quantity\r\n * @param {string} selectedValueUrl - the Url for the selected variation value\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n */\r\nfunction attributeSelect(selectedValueUrl, $productContainer) {\r\n if (selectedValueUrl) {\r\n $('body').trigger('product:beforeAttributeSelect', { url: selectedValueUrl, container: $productContainer });\r\n\r\n $.ajax({\r\n url: selectedValueUrl,\r\n method: 'GET',\r\n success: function (data) {\r\n handleVariantResponse(data, $productContainer);\r\n updateOptions(data.product.optionsHtml, $productContainer);\r\n updateQuantities(data.product.quantities, $productContainer);\r\n $('body').trigger('product:afterAttributeSelect', { data: data, container: $productContainer });\r\n calculateProductSetPrice();\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Retrieves url to use when adding a product to the cart\r\n *\r\n * @return {string} - The provided URL to use when adding a product to the cart\r\n */\r\nfunction getAddToCartUrl() {\r\n return $('.add-to-cart-url').val();\r\n}\r\n\r\n/**\r\n * Retrieves url to use when adding a product to the cart\r\n *\r\n * @return {string} - The provided URL to use when adding a product to the cart\r\n */\r\nfunction getTempBasketCalculationUrl() {\r\n return $('.product-set-detail').data('temp-basket-calculation-url');\r\n}\r\n\r\n/**\r\n * Parses the html for a modal window\r\n * @param {string} html - representing the body and footer of the modal window\r\n *\r\n * @return {Object} - Object with properties body and footer.\r\n */\r\nfunction parseHtml(html) {\r\n var $html = $('
    ').append($.parseHTML(html));\r\n\r\n var body = $html.find('.choice-of-bonus-product');\r\n var footer = $html.find('.modal-footer').children();\r\n\r\n return { body: body, footer: footer };\r\n}\r\n\r\n/**\r\n * Retrieves url to use when adding a product to the cart\r\n *\r\n * @param {Object} data - data object used to fill in dynamic portions of the html\r\n */\r\nfunction chooseBonusProducts(data) {\r\n $('.modal-body').spinner().start();\r\n\r\n if ($('#chooseBonusProductModal').length !== 0) {\r\n $('#chooseBonusProductModal').remove();\r\n }\r\n var bonusUrl;\r\n if (data.bonusChoiceRuleBased) {\r\n bonusUrl = data.showProductsUrlRuleBased;\r\n } else {\r\n bonusUrl = data.showProductsUrlListBased;\r\n }\r\n\r\n var htmlString = ''\r\n + '
    '\r\n + ''\r\n + '
    '\r\n + ''\r\n + '
    '\r\n + '
    '\r\n + ' ' + data.labels.selectprods + ''\r\n + ' '\r\n + '
    '\r\n + '
    '\r\n + '
    '\r\n + '
    '\r\n + '
    '\r\n + '
    ';\r\n $('body').append(htmlString);\r\n $('.modal-body').spinner().start();\r\n\r\n $.ajax({\r\n url: bonusUrl,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function (response) {\r\n var parsedHtml = parseHtml(response.renderedTemplate);\r\n $('#chooseBonusProductModal .modal-body').empty();\r\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\r\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\r\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\r\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\r\n $('#chooseBonusProductModal').modal('show');\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\r\n * @param {string} response - ajax response from clicking the add to cart button\r\n * @param {Object} event - \"event\" of the button you clicked on\r\n */\r\nfunction handlePostCartAdd(response, event) {\r\n $('.minicart').trigger('count:update', response);\r\n\r\n var messageType = response.error ? 'alert-danger' : 'alert-success';\r\n\r\n // show add to cart toast\r\n if (response.newBonusDiscountLineItem && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\r\n chooseBonusProducts(response.newBonusDiscountLineItem);\r\n } else if (response.error) {\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append(\r\n '
    '\r\n );\r\n }\r\n\r\n $('.add-to-cart-messages').append(\r\n '
    '\r\n + response.message\r\n + '
    '\r\n );\r\n\r\n $('.add-to-cart').attr('disabled', true);\r\n\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n }, 5000);\r\n } else if ($('.cart-page').length) {\r\n // eslint-disable-next-line no-restricted-globals\r\n location.reload();\r\n } else {\r\n const url = $('.js-minicart').data('action-url');\r\n\r\n $('body').trigger('minicart:open', { url, event });\r\n\r\n /*\r\n const autoCloseModal = setTimeout(function () {\r\n $('#miniCartModal').modal('hide');\r\n }, 5000);\r\n\r\n $('#miniCartModal').one('hidden.bs.modal', function () {\r\n clearTimeout(autoCloseModal);\r\n });\r\n */\r\n }\r\n}\r\n\r\n/**\r\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\r\n * items with their selected variants\r\n *\r\n * @return {string[]} - List of selected bundle product item ID's\r\n */\r\nfunction getChildProducts() {\r\n var childProducts = [];\r\n $('.bundle-item').each(function () {\r\n childProducts.push({\r\n pid: $(this).find('.product-id').text(),\r\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\r\n });\r\n });\r\n\r\n return childProducts.length ? JSON.stringify(childProducts) : [];\r\n}\r\n\r\n/**\r\n * Retrieve product options\r\n *\r\n * @param {jQuery} $productContainer - DOM element for current product\r\n * @return {string} - Product options and their selected values\r\n */\r\nfunction getOptions($productContainer) {\r\n var options = $productContainer\r\n .find('.product-option')\r\n .map(function () {\r\n var $elOption = $(this).find('.options-select');\r\n var urlValue = $elOption.val();\r\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\r\n .data('value-id');\r\n return {\r\n optionId: $(this).data('option-id'),\r\n selectedValueId: selectedValueId\r\n };\r\n }).toArray();\r\n\r\n return JSON.stringify(options);\r\n}\r\n\r\n/**\r\n * Makes a call to the server to report the event of adding an item to the cart\r\n *\r\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\r\n */\r\nfunction miniCartReportingUrl(url) {\r\n if (url) {\r\n $.ajax({\r\n url: url,\r\n method: 'GET',\r\n success: function () {\r\n // reporting urls hit on the server\r\n },\r\n error: function () {\r\n // no reporting urls hit on the server\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Update Listrak cart data.\r\n *\r\n * @param {string} data - updated data\r\n */\r\nfunction ltkUpdateCartData(data) {\r\n $('script[src*=\"ltkSendSCA.js\"]').attr('ltk-data-sca', data);\r\n\r\n if (typeof renderSCA !== 'undefined') {\r\n renderSCA(); //eslint-disable-line\r\n }\r\n}\r\n\r\n/**\r\n * Add Listrak SCA script.\r\n *\r\n * @param {Object} data - updated data\r\n */\r\nfunction ltkAppendSCAScript(data) {\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.defer = true;\r\n script.src = data.ltkScriptSrc;\r\n script.setAttribute('ltk-data-sca', data.SCA);\r\n script.setAttribute('ltk-data-url', data.ltkDataUrl);\r\n $('head').append(script);\r\n $.getScript(data.ltkScriptSrc, function () {\r\n ltkUpdateCartData(data.SCA);\r\n });\r\n}\r\n\r\n/**\r\n * Update cart after the event of adding an item to the cart\r\n *\r\n * @param {string} addToCartUrl - URL string for ajax request from clicking the add to bag button\r\n * @param {Object} form - data for ajax request from clicking the add to bag button\r\n * @param {Object} event - \"event\" of the button you clicked on\r\n */\r\nfunction updateCartAfterAddToCard(addToCartUrl, form, event) {\r\n $.ajax({\r\n url: addToCartUrl,\r\n method: 'POST',\r\n data: form,\r\n success: function (data) {\r\n handlePostCartAdd(data, event);\r\n $('body').trigger('product:afterAddToCart', data);\r\n $.spinner().stop();\r\n miniCartReportingUrl(data.reportingURL);\r\n\r\n // Trigger Listrak data update.\r\n if (data.SCA) {\r\n if (!$('script[src*=\"ltkSendSCA.js\"]').length) {\r\n ltkAppendSCAScript(data);\r\n } else {\r\n ltkUpdateCartData(data.SCA);\r\n }\r\n }\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\nfunction updateProductSetPrice(resObj) {\r\n\r\n if (resObj.data) {\r\n resObj.data.productlineItems.forEach((productPrice) => {\r\n $('.set-item[data-pid=\"' + productPrice.productID + '\"] .prices')\r\n .html(productPrice.renderedPrice);\r\n });\r\n\r\n $('.product-set-detail .prices-add-to-cart-actions .prices').html(resObj.data.renderedPrice);\r\n }\r\n}\r\n\r\nfunction calculateProductSetPrice() {\r\n var pid;\r\n var pidsObj;\r\n var setPids;\r\n var allSetPids;\r\n if ($('.set-items').length) {\r\n setPids = [];\r\n allSetPids = [];\r\n\r\n const productType = getProductType();\r\n $('.product-detail').each(function () {\r\n if ($(this).hasClass('set-item') && productType === 'productSet' && $(this).find('#productItem').is(':checked')) {\r\n if ( $(this).attr('data-ready-to-order') === 'true') {\r\n setPids.push({\r\n pid: $(this).data('pid'),\r\n qty: $(this).find('.quantity-select').val(),\r\n options: getOptions($(this))\r\n });\r\n \r\n if ($(this).hasClass('set-item') && productType === 'productSet' && $(this).find('#productItem')) {\r\n allSetPids.push($(this).data('pid'));\r\n }\r\n }\r\n }\r\n });\r\n pidsObj = JSON.stringify(setPids);\r\n allSetPids = JSON.stringify(allSetPids);\r\n }\r\n\r\n pid = getPidValue($('.product-set-detail'));\r\n var tempBasketCalculationUrl = getTempBasketCalculationUrl();\r\n var form = {\r\n pid: pid,\r\n pidsObj: pidsObj,\r\n allSetPids: allSetPids,\r\n childProducts: getChildProducts(),\r\n quantity: getQuantitySelected($(this))\r\n };\r\n $.spinner().start();\r\n $.ajax({\r\n url: tempBasketCalculationUrl,\r\n method: 'POST',\r\n data: form,\r\n success: function (data) {\r\n updateProductSetPrice(data);\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n attributeSelect: attributeSelect,\r\n methods: {\r\n editBonusProducts: function (data) {\r\n chooseBonusProducts(data);\r\n }\r\n },\r\n\r\n focusChooseBonusProductModal: function () {\r\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\r\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\r\n $('#chooseBonusProductModal .close').focus();\r\n });\r\n },\r\n\r\n onClosingChooseBonusProductModal: function () {\r\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\r\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\r\n });\r\n },\r\n\r\n trapChooseBonusProductModalFocus: function () {\r\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\r\n var focusParams = {\r\n event: e,\r\n containerSelector: '#chooseBonusProductModal',\r\n firstElementSelector: '.close',\r\n lastElementSelector: '.add-bonus-products'\r\n };\r\n focusHelper.setTabNextFocus(focusParams);\r\n });\r\n },\r\n\r\n colorAttribute: function () {\r\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\r\n e.preventDefault();\r\n const $this = $(this);\r\n\r\n if ($this.attr('disabled') || $this.hasClass('selected')) {\r\n return;\r\n }\r\n\r\n var $productContainer = $this.closest('.set-item');\r\n if (!$productContainer.length) {\r\n $productContainer = $this.closest('.product-detail');\r\n }\r\n\r\n attributeSelect($this.attr('data-url'), $productContainer);\r\n });\r\n },\r\n\r\n selectAttribute: function () {\r\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\r\n e.preventDefault();\r\n\r\n var $productContainer = $(this).closest('.set-item');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.product-detail');\r\n }\r\n\r\n attributeSelect(e.currentTarget.value, $productContainer);\r\n });\r\n },\r\n\r\n availability: function () {\r\n $(document).on('change', '.quantity-select', function (e) {\r\n e.preventDefault();\r\n\r\n var $productContainer = $(this).closest('.product-detail');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\r\n }\r\n\r\n if ($('.bundle-items', $productContainer).length === 0) {\r\n attributeSelect($(e.currentTarget).find('option:selected').data('url'), $productContainer);\r\n }\r\n });\r\n },\r\n\r\n selectCheckbox: function () {\r\n $(document).on('click', 'button.js-checkbox-btn', function (e) {\r\n var input = $(this).closest('.checkbox-container').find('#productItem');\r\n let readyToOrder = true;\r\n\r\n if (input.is(':checked')) {\r\n input.prop('checked', false);\r\n $(this).find('.js-checkbox-selector-checked').hide();\r\n $(this).closest('.product-detail').removeClass('select-productSet-item');\r\n // readyToOrder = false\r\n } else {\r\n input.prop('checked', true);\r\n $(this).find('.js-checkbox-selector-checked').show();\r\n $(this).closest('.product-detail').addClass('select-productSet-item');\r\n // readyToOrder = true\r\n }\r\n\r\n const inputStatusArr = [];\r\n $('.checkbox-productItem-input').each(function () {\r\n inputStatusArr.push($(this).is(':checked'));\r\n });\r\n\r\n if (inputStatusArr.every((item) => item === false)) {\r\n readyToOrder = false;\r\n }\r\n\r\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\r\n product: { readyToOrder: readyToOrder, available: true },\r\n $productContainer: $('.product-detail[data-product-type=\"productSet\"]')\r\n });\r\n\r\n calculateProductSetPrice();\r\n });\r\n },\r\n\r\n addToCart: function () {\r\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function (event) {\r\n var addToCartUrl;\r\n var pid;\r\n var pidsObj;\r\n var setPids;\r\n\r\n $('body').trigger('product:beforeAddToCart', this);\r\n\r\n if ($('.set-items').length ) {\r\n setPids = [];\r\n\r\n const productType = getProductType();\r\n $('.product-detail').each(function () {\r\n if (!$(this).hasClass('product-set-detail') && productType === 'productSet' && $(this).find('#productItem').is(':checked')) { \r\n setPids.push({\r\n pid: $(this).data('pid'),\r\n qty: $(this).find('.quantity-select').val(),\r\n options: getOptions($(this))\r\n });\r\n }\r\n });\r\n pidsObj = JSON.stringify(setPids);\r\n }\r\n\r\n pid = getPidValue($(this));\r\n\r\n var $productContainer = $(this).closest('.product-detail');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\r\n }\r\n\r\n addToCartUrl = getAddToCartUrl();\r\n\r\n var form = {\r\n pid: pid,\r\n pidsObj: pidsObj,\r\n childProducts: getChildProducts(),\r\n quantity: getQuantitySelected($(this))\r\n };\r\n\r\n if (!$('.bundle-item').length) {\r\n form.options = getOptions($productContainer);\r\n }\r\n\r\n $(this).trigger('updateAddToCartFormData', form);\r\n if (addToCartUrl) {\r\n updateCartAfterAddToCard(addToCartUrl, form, event);\r\n }\r\n });\r\n },\r\n selectBonusProduct: function () {\r\n $(document).on('click', '.select-bonus-product', function () {\r\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\r\n var pid = $(this).data('pid');\r\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\r\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\r\n var totalQty = 0;\r\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\r\n totalQty += $(this).data('qty');\r\n });\r\n totalQty += submittedQty;\r\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\r\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\r\n if (totalQty <= maxPids) {\r\n var selectedBonusProductHtml = ''\r\n + '
    '\r\n + '
    '\r\n + $choiceOfBonusProduct.find('.product-name').html()\r\n + '
    '\r\n + '
    '\r\n + '
    ';\r\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\r\n $('.pre-cart-products').html(totalQty);\r\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\r\n } else {\r\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\r\n }\r\n });\r\n },\r\n removeBonusProduct: function () {\r\n $(document).on('click', '.selected-pid', function () {\r\n $(this).remove();\r\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\r\n var count = 0;\r\n if ($selected.length) {\r\n $selected.each(function () {\r\n count += parseInt($(this).data('qty'), 10);\r\n });\r\n }\r\n\r\n $('.pre-cart-products').html(count);\r\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\r\n });\r\n },\r\n enableBonusProductSelection: function () {\r\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\r\n $('button.select-bonus-product', response.$productContainer).attr('disabled',\r\n (!response.product.readyToOrder || !response.product.available));\r\n var pid = response.product.id;\r\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\r\n });\r\n },\r\n showMoreBonusProducts: function () {\r\n $(document).on('click', '.show-more-bonus-products', function () {\r\n var url = $(this).data('url');\r\n $('.modal-content').spinner().start();\r\n $.ajax({\r\n url: url,\r\n method: 'GET',\r\n success: function (html) {\r\n var parsedHtml = parseHtml(html);\r\n $('.modal-body').append(parsedHtml.body);\r\n $('.show-more-bonus-products:first').remove();\r\n $('.modal-content').spinner().stop();\r\n },\r\n error: function () {\r\n $('.modal-content').spinner().stop();\r\n }\r\n });\r\n });\r\n },\r\n addBonusProductsToCart: function () {\r\n $(document).on('click', '.add-bonus-products', function () {\r\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\r\n var queryString = '?pids=';\r\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\r\n var pidsObject = {\r\n bonusProducts: []\r\n };\r\n\r\n $.each($readyToOrderBonusProducts, function () {\r\n var qtyOption = parseInt($(this).data('qty'), 10);\r\n\r\n var option = null;\r\n if (qtyOption > 0) {\r\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\r\n option = {};\r\n option.optionId = $(this).data('optionid');\r\n option.productId = $(this).data('pid');\r\n option.selectedValueId = $(this).data('option-selected-value');\r\n }\r\n pidsObject.bonusProducts.push({\r\n pid: $(this).data('pid'),\r\n qty: qtyOption,\r\n options: [option]\r\n });\r\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\r\n }\r\n });\r\n queryString += JSON.stringify(pidsObject);\r\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\r\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\r\n $.spinner().start();\r\n $.ajax({\r\n url: url + queryString,\r\n method: 'POST',\r\n success: function (data) {\r\n $.spinner().stop();\r\n if (data.error) {\r\n $('#chooseBonusProductModal').modal('hide');\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append('
    ');\r\n }\r\n $('.add-to-cart-messages').append(\r\n '
    '\r\n + data.errorMessage + '
    '\r\n );\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n }, 3000);\r\n } else {\r\n $('.configure-bonus-product-attributes').html(data);\r\n $('.bonus-products-step2').removeClass('hidden-xl-down');\r\n $('#chooseBonusProductModal').modal('hide');\r\n\r\n if ($('.add-to-cart-messages').length === 0) {\r\n $('body').append('
    ');\r\n }\r\n $('.minicart-quantity').html(data.totalQty);\r\n $('.add-to-cart-messages').append(\r\n '
    '\r\n + data.msgSuccess + '
    '\r\n );\r\n setTimeout(function () {\r\n $('.add-to-basket-alert').remove();\r\n if ($('.cart-page').length) {\r\n // eslint-disable-next-line no-restricted-globals\r\n location.reload();\r\n }\r\n }, 1500);\r\n }\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n });\r\n },\r\n changeAttrButtons: function () {\r\n $(document).on('click', '.js-btn-attribute', function (e) {\r\n e.preventDefault();\r\n\r\n var $productContainer = $(this).closest('.set-item');\r\n if (!$productContainer.length) {\r\n $productContainer = $(this).closest('.product-detail');\r\n }\r\n\r\n if (!$productContainer.length) {\r\n return;\r\n }\r\n\r\n var targetUrl = $(this).attr('value') ? $(this).attr('value') : $(this).data('url');\r\n\r\n if (!$(this).hasClass('active')) {\r\n $(this).parents('.js-attribute__list').find('.js-btn-attribute').removeClass('active');\r\n $(this).addClass('active');\r\n attributeSelect(targetUrl, $productContainer);\r\n }\r\n });\r\n },\r\n initVideo: function () {\r\n let $videoPosition = $('.js-video-init-position');\r\n\r\n if ($videoPosition.length) {\r\n let videoId = $videoPosition.data('id');\r\n\r\n $(createVideoTile(videoId)).insertAfter($videoPosition);\r\n $videoPosition.remove();\r\n }\r\n },\r\n openVideo: function () {\r\n $(document).on('click', '.js-product-video-modal-open', function (e) {\r\n e.preventDefault();\r\n\r\n let videoId = $(this).data('id');\r\n let $videoContainer = $('.js-youtube-video-container');\r\n let $videoModal = $('#youtubeVideoModal');\r\n\r\n $(`\r\n \r\n `).appendTo($videoContainer);\r\n\r\n $videoModal.modal('show');\r\n\r\n $videoModal.on('hidden.bs.modal', function () {\r\n $videoContainer.empty();\r\n });\r\n });\r\n },\r\n openImage: function () {\r\n $(document).on('click', '.js-primary-images-modal-open', function (e) {\r\n e.preventDefault();\r\n\r\n let imageIndex = $(this).data('count');\r\n let $imageModal = $('#primaryImagesModal');\r\n\r\n $imageModal.modal('show');\r\n\r\n $imageModal.one('shown.bs.modal', function () {\r\n // TODO: Some preload ?\r\n $imageModal.find('.js-carousel').slick('slickGoTo', Number(imageIndex), true).slick('refresh');\r\n });\r\n });\r\n },\r\n\r\n getPidValue: getPidValue,\r\n getQuantitySelected: getQuantitySelected,\r\n displaySelectedColorValue: displaySelectedColorValue,\r\n miniCartReportingUrl: miniCartReportingUrl,\r\n updateCartAfterAddToCard: updateCartAfterAddToCard,\r\n ltkUpdateCartData: ltkUpdateCartData,\r\n ltkAppendSCAScript: ltkAppendSCAScript\r\n};\r\n","'use strict';\r\n\r\nvar base = require('./base');\r\nvar focusHelper = require('base/components/focus');\r\nvar lazyLoad = require('../utils/lazyLoad');\r\n\r\n// TODO: Separate this file from the base. We need to make it independent to work in PDP and recomendations block.\r\n// FOR NOW: recommendation blocks work without quickView.\r\n\r\nfunction getProductType() {\r\n var $productQuickview = $('.product-quickview');\r\n return $productQuickview.length ? $productQuickview.find('.js-product').data('product-type') : $('.js-product').data('product-type');\r\n}\r\n\r\n/**\r\n * Displays selected color value\r\n */\r\nfunction displaySelectedColorValueQuickView() {\r\n\r\n const productType = getProductType();\r\n if (productType === 'productSet') {\r\n $('.set-items').find('.js-product').each(function () {\r\n var $selectedColorElement = $('.js-attribute-color .js-swatch-value.selected', $(this));\r\n $('.js-selected-color-value', $(this)).text($selectedColorElement.length ? $selectedColorElement.data('attrDisplayValue') : '');\r\n })\r\n } else {\r\n var $selectedColorElement = $('.product-quickview .js-attribute-color .js-swatch-value.selected');\r\n $('.product-quickview .js-selected-color-value').text($selectedColorElement.length ? $selectedColorElement.data('attrDisplayValue') : '');\r\n }\r\n}\r\n\r\n/**\r\n * Generates the modal window on the first call.\r\n *\r\n */\r\nfunction getModalHtmlElement() {\r\n if ($('#quickViewModal').length !== 0) {\r\n $('#quickViewModal').remove();\r\n }\r\n\r\n var htmlString = ''\r\n + '
    '\r\n + ''\r\n + '
    '\r\n + ''\r\n + '
    '\r\n + '
    '\r\n + ' '\r\n + ' '\r\n + '
    '\r\n + '
    '\r\n + '
    '\r\n + '
    '\r\n + '
    ';\r\n $('body').append(htmlString);\r\n}\r\n\r\n/**\r\n * @typedef {Object} QuickViewHtml\r\n * @property {string} body - Main Quick View body\r\n * @property {string} footer - Quick View footer content\r\n */\r\n\r\n/**\r\n * Parse HTML code in Ajax response\r\n *\r\n * @param {string} html - Rendered HTML from quickview template\r\n * @return {QuickViewHtml} - QuickView content components\r\n */\r\nfunction parseHtml(html) {\r\n var $html = $('
    ').append($.parseHTML(html));\r\n\r\n var body = $html.find('.product-quickview');\r\n\r\n return { body: body };\r\n}\r\n\r\n/**\r\n * replaces the content in the modal window on for the selected product variation.\r\n * @param {string} selectedValueUrl - url to be used to retrieve a new product model\r\n */\r\nfunction fillModalElement(selectedValueUrl) {\r\n $('.modal-body').spinner().start();\r\n $.ajax({\r\n url: selectedValueUrl,\r\n method: 'GET',\r\n dataType: 'json',\r\n success: function (data) {\r\n var parsedHtml = parseHtml(data.renderedTemplate);\r\n\r\n $('#quickViewModal .modal-body').empty();\r\n $('#quickViewModal .modal-body').html(parsedHtml.body);\r\n $('.full-pdp-link').text(data.quickViewFullDetailMsg);\r\n $('#quickViewModal .full-pdp-link').attr('href', data.productUrl);\r\n $('#quickViewModal .size-chart').attr('href', data.productUrl);\r\n $('#quickViewModal .modal-header .close .sr-only').text(data.closeButtonText);\r\n $('#quickViewModal .enter-message').text(data.enterDialogMessage);\r\n $('#quickViewModal').modal('show');\r\n $('body').trigger('quickview:ready');\r\n\r\n $('#quickViewModal .js-carousel').not('.slick-initialized').slick();\r\n lazyLoad.update();\r\n\r\n $.spinner().stop();\r\n displaySelectedColorValueQuickView();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\nmodule.exports = {\r\n showQuickview: function () {\r\n $('body').on('click', '.quickview', function (e) {\r\n e.preventDefault();\r\n var selectedValueUrl = $(this).closest('a.quickview').attr('href');\r\n $(e.target).trigger('quickview:show');\r\n getModalHtmlElement();\r\n fillModalElement(selectedValueUrl);\r\n });\r\n },\r\n onModalShown: function () {\r\n $('body').on('shown.bs.modal', '#quickViewModal', function () {\r\n $('#quickViewModal .js-carousel').slick('refresh');\r\n base.initVideo();\r\n });\r\n },\r\n trapQuickviewFocus: function () {\r\n $('body').on('keydown', '#quickViewModal', function (e) {\r\n var focusParams = {\r\n event: e,\r\n containerSelector: '#quickViewModal',\r\n firstElementSelector: '.full-pdp-link',\r\n lastElementSelector: '.add-to-cart-global',\r\n nextToLastElementSelector: '.quantity-select'\r\n };\r\n focusHelper.setTabNextFocus(focusParams);\r\n });\r\n },\r\n availability: base.availability,\r\n addToCart: base.addToCart,\r\n selectCheckbox: base.selectCheckbox,\r\n showSpinner: function () {\r\n $('body').on('product:beforeAddToCart', function (e, data) {\r\n $(data).closest('.modal-content').spinner().start();\r\n });\r\n },\r\n hideDialog: function () {\r\n $('body').on('product:afterAddToCart', function () {\r\n $('#quickViewModal').modal('hide');\r\n });\r\n },\r\n beforeUpdateAttribute: function () {\r\n $('body').on('product:beforeAttributeSelect', function () {\r\n $('.modal.show .modal-content').spinner().start();\r\n });\r\n },\r\n updateAttribute: function () {\r\n $('body').on('product:afterAttributeSelect', function (e, response) {\r\n if ($('.modal.show .product-quickview>.bundle-items').length) {\r\n $('.modal.show').find(response.container).data('pid', response.data.product.id);\r\n $('.modal.show').find(response.container)\r\n .find('.product-id').text(response.data.product.id);\r\n } else if ($('.set-items').length) {\r\n response.container.find('.product-id').text(response.data.product.id);\r\n } else {\r\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\r\n $('.modal.show .full-pdp-link')\r\n .attr('href', response.data.product.selectedProductUrl);\r\n }\r\n displaySelectedColorValueQuickView();\r\n });\r\n },\r\n updateAddToCart: function () {\r\n $('body').on('product:updateAddToCart', function (e, response) {\r\n // update local add to cart (for sets)\r\n $('button.add-to-cart', response.$productContainer).attr('disabled',\r\n (!response.product.readyToOrder || !response.product.available));\r\n\r\n // update global add to cart (single products, bundles)\r\n var dialog = $(response.$productContainer).closest('.quick-view-dialog');\r\n\r\n $('.add-to-cart-global', dialog).attr('disabled',\r\n !$('.global-availability', dialog).data('ready-to-order')\r\n || !$('.global-availability', dialog).data('available'));\r\n \r\n $('.add-to-cart-global', dialog).attr('disabled', !response.product.readyToOrder);\r\n });\r\n },\r\n updateAvailability: function () {\r\n $('body').on('product:updateAvailability', function (e, response) {\r\n // bundle individual products\r\n $('.product-availability', response.$productContainer)\r\n .data('ready-to-order', response.product.readyToOrder)\r\n .data('available', response.product.available)\r\n .find('.availability-msg')\r\n .empty()\r\n .html(response.message);\r\n\r\n var dialog = $(response.$productContainer)\r\n .closest('.quick-view-dialog');\r\n\r\n const $checkTypeDiv = $('.js-availability-type-check');\r\n\r\n if ($checkTypeDiv.length) {\r\n if (response.product.availability.type === 'InStock') {\r\n $checkTypeDiv.hide();\r\n } else {\r\n $checkTypeDiv.show();\r\n }\r\n }\r\n\r\n if ($('.product-availability', dialog).length) {\r\n // bundle all products\r\n var allAvailable = $('.product-availability', dialog).toArray()\r\n .every(function (item) { return $(item).data('available'); });\r\n\r\n var allReady = $('.product-availability', dialog).toArray()\r\n .every(function (item) { return $(item).data('ready-to-order'); });\r\n\r\n $('.global-availability', dialog)\r\n .data('ready-to-order', allReady)\r\n .data('available', allAvailable);\r\n\r\n $('.global-availability .availability-msg', dialog).empty()\r\n .html(allReady ? response.message : response.resources.info_selectforstock);\r\n } else {\r\n // single product\r\n $('.global-availability', dialog)\r\n .data('ready-to-order', response.product.readyToOrder)\r\n .data('available', response.product.available)\r\n .find('.availability-msg')\r\n .empty()\r\n .html(response.message);\r\n }\r\n });\r\n },\r\n displaySelectedColorValueQuickView: displaySelectedColorValueQuickView\r\n};\r\n","'use strict';\r\n\r\nvar processInclude = require('base/util');\r\n\r\n$(document).ready(function () {\r\n processInclude(require('./search/search'));\r\n processInclude(require('./product/quickView'));\r\n});\r\n","'use strict';\r\n\r\nvar utils = require('../utils/utils');\r\nvar lazyLoad = require('../utils/lazyLoad');\r\nvar bodyScrollLock = require('body-scroll-lock');\r\nvar debounce = require('lodash/debounce');\r\n\r\n/**\r\n * Update address bar with filters or sorting rules\r\n *\r\n * @param {string} url - current url\r\n * @param {Object} data - additional data\r\n */\r\nfunction updateAddressBar(url, data) {\r\n var query = '';\r\n\r\n if (url.includes('?')) {\r\n query = url.substring(url.indexOf('?'));\r\n }\r\n\r\n var historyUrl = window.location.pathname + query;\r\n var title = $('title').text();\r\n window.history.pushState(data, title, historyUrl);\r\n}\r\n\r\n/**\r\n * Update DOM elements with Ajax results\r\n *\r\n * @param {Object} $results - jQuery DOM element\r\n * @param {string} selector - DOM element to look up in the $results\r\n * @return {undefined}\r\n */\r\nfunction updateDom($results, selector) {\r\n var $updates = $results.find(selector);\r\n $(selector).empty().html($updates.html());\r\n}\r\n\r\n/**\r\n * Keep refinement panes expanded/collapsed after Ajax refresh\r\n *\r\n * @param {Object} $results - jQuery DOM element\r\n * @return {undefined}\r\n */\r\nfunction handleRefinements($results) {\r\n $('.refinement.active').each(function () {\r\n $(this).removeClass('active');\r\n var activeDiv = $results.find('.' + $(this)[0].className.replace(/ /g, '.'));\r\n activeDiv.addClass('active');\r\n activeDiv.find('button.title').attr('aria-expanded', 'true');\r\n });\r\n\r\n updateDom($results, '.js-refinements');\r\n}\r\n\r\n/**\r\n * Hide filter when no result page is showed\r\n *\r\n * @param {Object} $results - jQuery DOM element\r\n * @return {undefined}\r\n */\r\nfunction handleGridHeader($results) {\r\n let $updates = $results.find('.js-refinements');\r\n let $goHomeButton = $('.js-go-home');\r\n\r\n if (!$updates.length) {\r\n updateDom($results, '.js-grid-header');\r\n $goHomeButton.removeClass('d-none');\r\n } else {\r\n $goHomeButton.addClass('d-none');\r\n }\r\n}\r\n\r\n/**\r\n * Updates top custom filter\r\n * @param {Object} $results - jQuery DOM element\r\n */\r\nfunction handleTopCustomFilter($results) {\r\n var $updates = $results.find('.js-family-filter-wrapper');\r\n\r\n if (!$updates.length) {\r\n updateDom($results, '.js-family-filter-wrapper');\r\n }\r\n}\r\n\r\n/**\r\n * Parse Ajax results and updated select DOM elements\r\n *\r\n * @param {string} response - Ajax response HTML code\r\n * @return {undefined}\r\n */\r\nfunction parseResults(response) {\r\n var $results = $(response);\r\n var specialHandlers = {\r\n '.js-refinements': handleRefinements,\r\n '.js-grid-header': handleGridHeader,\r\n '.js-top-custom-filter': handleTopCustomFilter\r\n };\r\n\r\n // Update DOM elements that do not require special handling\r\n [\r\n '.grid-header__result-count',\r\n '.js-sort-dropdown',\r\n '.grid-header__page-title',\r\n '.js-product-grid',\r\n '.js-grid-header .sort-order',\r\n '.show-more',\r\n '.filter-bar'\r\n ].forEach(function (selector) {\r\n updateDom($results, selector);\r\n });\r\n\r\n Object.keys(specialHandlers).forEach(function (selector) {\r\n specialHandlers[selector]($results);\r\n });\r\n}\r\n\r\nvar cache = {\r\n $refinementBar: $('.js-refinement-bar'),\r\n $gridHeader: $('.js-grid-header'),\r\n $isLoadProductsContinously: $('.show-more').length > 0\r\n};\r\n\r\n/**\r\n * This function retrieves another page of content to display in the content search grid\r\n * @param {JQuery} $element - the jquery element that has the click event attached\r\n * @param {JQuery} $target - the jquery element that will receive the response\r\n * @return {undefined}\r\n */\r\nfunction getContent($element, $target) {\r\n var showMoreUrl = $element.data('url');\r\n $.spinner().start();\r\n $.ajax({\r\n url: showMoreUrl,\r\n method: 'GET',\r\n success: function (response) {\r\n $target.append(response);\r\n $.spinner().stop();\r\n $('body').trigger('wishlist:updateHearts');\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Update sort option URLs from Ajax response\r\n *\r\n * @param {string} response - Ajax response HTML code\r\n * @return {undefined}\r\n */\r\nfunction updateSortOptions(response) {\r\n var $tempDom = $('
    ').append($(response));\r\n var sortOptions = $tempDom.find('.js-grid-footer').data('sort-options').options;\r\n sortOptions.forEach(function (option) {\r\n // update hidden hidden select option\r\n $('option.' + option.id).val(option.url);\r\n // update visible dropdown selector option\r\n $('a.' + option.id).data('value', option.url);\r\n });\r\n}\r\n\r\nfunction swatchScroll(){\r\n $('.js-color-swatches').each(function(){\r\n var productSwatches = $(this);\r\n var totalSwatches = productSwatches.find('.js-swatch').length;\r\n var totalDisplay = parseInt($(this).find('.swatch-viewport').attr('data-swatch-display-count'));\r\n if(totalSwatches > totalDisplay){\r\n productSwatches.find('.swatch-slide.next').addClass('show');\r\n };\r\n });\r\n}\r\n\r\nfunction reviewsHide(){\r\n setTimeout(function(){\r\n $('.product-tile').each(function(){\r\n var product = $(this);\r\n var review = product.find('div[data-bv-show=\"inline_rating\"]');\r\n var numReviews = review.find('.bv_numReviews_component_container .bv_text').text();\r\n if(numReviews != \"(0)\"){\r\n review.css('display', 'inline-block');\r\n }\r\n });\r\n }, 300);\r\n}\r\n\r\nfunction getPage(url) {\r\n $.spinner().start();\r\n $.ajax({\r\n url: url,\r\n data: {selectedUrl: url},\r\n method: 'GET',\r\n success: function (response) {\r\n $('.js-product-grid').empty().html(response);\r\n lazyLoad.update();\r\n swatchScroll();\r\n reviewsHide();\r\n $('body').trigger('wishlist:updateHearts');\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n}\r\n\r\nfunction truncatePageLinks(currentPage, fromPage){\r\n if(currentPage == 'all'){\r\n currentPage = 1;\r\n };\r\n $('.paginationBar').each(function(){\r\n var pageDisplay = 10;\r\n\r\n var paginationBar = $(this);\r\n var totalProducts = parseInt(paginationBar.attr('data-total-products'));\r\n var pageSize = parseInt(paginationBar.attr('data-page-size'));\r\n var pageCount = totalProducts > pageSize ? Math.ceil(totalProducts/pageSize) : null;\r\n \r\n if(pageCount > pageDisplay){\r\n var pageLinks = paginationBar.find('.pageLink');\r\n var limitDisplay = pageDisplay;\r\n if(currentPage > 1){\r\n limitDisplay = parseInt(currentPage) + parseInt((pageDisplay - 2));\r\n }\r\n var limitStartDisplay = parseInt(currentPage) - 8;\r\n if(currentPage <= pageDisplay){\r\n limitStartDisplay = pageDisplay;\r\n }\r\n var endPages = parseInt(pageCount) - parseInt(pageDisplay - 1);\r\n var previousPage = parseInt(currentPage) - 1;\r\n\r\n var nextPage = currentPage;\r\n if(currentPage > pageDisplay){\r\n nextPage = parseInt(currentPage) + 1;\r\n }\r\n\r\n var currentLink;\r\n pageLinks.each(function(pageNumber, link){\r\n pageNumber = pageNumber + 1;\r\n $(link).addClass('hide');\r\n if(pageNumber == currentPage){\r\n currentLink = $(link);\r\n }\r\n if(!fromPage || fromPage < currentPage){\r\n //incrementing\r\n if(pageNumber <= limitDisplay && pageNumber >= currentPage){\r\n $(this).removeClass('hide');\r\n }\r\n if(pageNumber <= limitDisplay && pageNumber >= endPages){\r\n $(this).removeClass('hide');\r\n }\r\n if(pageNumber == previousPage){\r\n $(this).removeClass('hide');\r\n }\r\n }\r\n if(fromPage && fromPage > currentPage){\r\n //decrementing\r\n if(pageNumber == currentPage) {\r\n $(this).removeClass('hide');\r\n }\r\n if(currentPage > pageDisplay && pageNumber == nextPage){\r\n $(this).removeClass('hide');\r\n }\r\n if(pageNumber >= limitStartDisplay && pageNumber < currentPage){\r\n $(this).removeClass('hide');\r\n }\r\n if(currentPage <= pageDisplay && pageNumber <= pageDisplay){\r\n $(this).removeClass('hide');\r\n }\r\n }\r\n \r\n });\r\n\r\n var nextLink = currentLink.next();\r\n var prevLink = currentLink.prev();\r\n\r\n $('.pageLinkNav').remove();\r\n var lastAvailableLink = paginationBar.find('.pageLink:not(.hide)').last().attr('data-page-number');\r\n if(lastAvailableLink < pageCount){\r\n var nextLinkURL = nextLink.data('url');\r\n var nextLinkPageNumber = nextLink.data('page-number');\r\n var pageLinkNext = $('');\r\n $('.paginationPages').append(pageLinkNext);\r\n }\r\n\r\n var firstAvailableLink = paginationBar.find('.pageLink:not(.hide)').first().attr('data-page-number');\r\n if(firstAvailableLink >= 2){\r\n var preLinkURL = prevLink.data('url');\r\n var prevLinkPageNumber = prevLink.data('page-number');\r\n var pageLinkPrev = $('');\r\n $('.paginationPages').prepend(pageLinkPrev);\r\n }\r\n\r\n //show current page in search results\r\n $('.totalPages').remove();\r\n var totalPages = $('Page '+currentPage+' of '+pageCount+'');\r\n paginationBar.append(totalPages);\r\n }\r\n });\r\n}\r\n\r\nfunction createPagination(response){\r\n var paginationBar = $('.paginationBar');\r\n\r\n if(response){\r\n //updating pagination from filters\r\n $('.paginationPages').empty();\r\n var gridFooter = $('.js-grid-footer');\r\n paginationBar.attr('data-total-products', parseInt(gridFooter.data('count')));\r\n paginationBar.attr('data-page-size', parseInt(gridFooter.data('page-size')));\r\n paginationBar.attr('data-show-more-url', gridFooter.find('.show-more button').data('url'));\r\n }\r\n \r\n var totalProducts = parseInt(paginationBar.attr('data-total-products'));\r\n var pageSize = parseInt(paginationBar.attr('data-page-size'));\r\n var showMoreURL = paginationBar.attr('data-show-more-url');\r\n\r\n //create page links\r\n var pageCount;\r\n if(totalProducts > pageSize){\r\n pageCount = Math.ceil(totalProducts/pageSize);\r\n var productStart = 0;\r\n var url = new URL(showMoreURL);\r\n\r\n //create page links\r\n for(var i=1; i<=pageCount; i++){\r\n if(i != 1){\r\n productStart = productStart + pageSize;\r\n }\r\n url.searchParams.set('start', productStart);\r\n var pageLink = $('');\r\n $('.paginationPages').append(pageLink);\r\n }\r\n\r\n //create view all link\r\n /*\r\n url.searchParams.set('start', 0);\r\n url.searchParams.set('sz', totalProducts);\r\n $('.pageAll').remove();\r\n var viewAll = $('');\r\n $('.paginationBar').append(viewAll);\r\n */\r\n\r\n //set current page if params exists\r\n var urlParams = new URLSearchParams(window.location.search);\r\n var currentPage = urlParams.get('page');\r\n $('.pageLink, .pageAll').removeClass('active');\r\n if(currentPage == 'all'){\r\n var pageURL = $('.pageAll').data('url');\r\n $('.pageAll').addClass('active').attr('disabled', 'disabled');\r\n truncatePageLinks(1);\r\n getPage(pageURL);\r\n return false;\r\n }\r\n if(currentPage && currentPage <= pageCount && currentPage != 1) {\r\n var pageURL = $('.pageLink-'+currentPage+'').data('url');\r\n getPage(pageURL);\r\n } else {\r\n currentPage = 1;\r\n }\r\n $('.pageLink-'+currentPage+'').addClass('active').attr('disabled', 'disabled');\r\n\r\n truncatePageLinks(currentPage);\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n filter: function () {\r\n // Display refinements bar when Menu icon clicked\r\n $('.container').on('click', '.js-btn-filter-results', function () {\r\n $('.refinement-bar .js-btn-close').trigger('focus');\r\n });\r\n\r\n $('.grid-header__refinements').on('show.bs.dropdown', function () {\r\n if (utils.getCurrentLayout() === 'mobile') {\r\n cache.$gridHeader.css('--flyout-offset-top', cache.$gridHeader[0].getBoundingClientRect().bottom - 1 + 'px');\r\n bodyScrollLock.disableBodyScroll($('.js-refinements')[0]);\r\n } else cache.$gridHeader.css('--flyout-offset-top', ''); // clear top value\r\n }).on('hidden.bs.dropdown', function () {\r\n bodyScrollLock.clearAllBodyScrollLocks();\r\n });\r\n\r\n /*\r\n $('.js-refinement-bar').on('click', '.js-showmore-cta', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(this).siblings('.collapse').first().collapse('toggle');\r\n });\r\n */\r\n\r\n //Collapsible filters\r\n $('#refine-sidebar').on('click', '.refinement__header', function(){\r\n $(this).toggleClass('show');\r\n $(this).siblings('.refinement__body').first().toggleClass('open');\r\n });\r\n },\r\n\r\n closeRefinements: function () {\r\n // Refinements close button\r\n $('.container').on('click', '.refinement-bar .js-btn-close, .modal-background', function () {\r\n // $('.refinement-bar, .modal-background').hide();\r\n $('.js-btn-filter-results').trigger('focus');\r\n });\r\n },\r\n\r\n resize: function () {\r\n // Close refinement bar and hide modal background if user resizes browser\r\n $(window).resize(function () {\r\n // $('.refinement-bar, .modal-background').hide();\r\n });\r\n },\r\n\r\n sort: function () {\r\n // Handle sort order menu selection\r\n $('.container').on('change', '[name=sort-order]', function (e) {\r\n e.preventDefault();\r\n\r\n $.spinner().start();\r\n $(this).trigger('search:sort', this.value);\r\n\r\n var url = this.value;\r\n var data = {\r\n selectedUrl: { selectedUrl: this.value }\r\n };\r\n\r\n $.ajax({\r\n url: url,\r\n data: data,\r\n method: 'GET',\r\n success: function (response) {\r\n $('.js-product-grid').empty().html(response);\r\n updateAddressBar(url, data);\r\n createPagination(response);\r\n lazyLoad.update();\r\n $.spinner().stop();\r\n $('body').trigger('wishlist:updateHearts');\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n }).on('click', '.js-sort-dropdown a', function (e) {\r\n // set actual (but hidden) sort select value, close dropdown and set selected class on dropdown item\r\n e.preventDefault();\r\n let $this = $(this);\r\n $('[name=sort-order]').val($this.data('value')).trigger('change');\r\n $this.parent().addClass('is-selected').siblings().removeClass('is-selected');\r\n });\r\n },\r\n\r\n paginate: function(){\r\n createPagination();\r\n \r\n //pageLink click event\r\n $('.container').on('click', '.pageLink, .pageAll, .pageLinkNav', function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n var pageURL = $(this).data('url');\r\n var urlParams = new URLSearchParams(window.location.search);\r\n var currentPage = urlParams.get('page');\r\n var pageNumber = $(this).data('page-number');\r\n $('html, body').animate({scrollTop:(0)}, 300);\r\n\r\n urlParams.set('page', pageNumber);\r\n window.history.replaceState({}, '', '?'+urlParams);\r\n\r\n var buttonClass = $(this).hasClass('pageAll')? '.pageAll' : '.pageLink-'+pageNumber;\r\n $('.pageLink, .pageAll').removeClass('active').removeAttr('disabled');\r\n $(buttonClass).addClass('active').attr('disabled', 'disabled');\r\n\r\n truncatePageLinks(pageNumber, currentPage);\r\n getPage(pageURL);\r\n });\r\n \r\n },\r\n\r\n showMore: function () {\r\n // Show more products\r\n $('.container').on('click', '.show-more button', function (e) {\r\n e.stopPropagation();\r\n var showMoreUrl = $(this).data('url');\r\n e.preventDefault();\r\n\r\n $.spinner().start();\r\n $(this).trigger('search:showMore', e);\r\n $.ajax({\r\n url: showMoreUrl,\r\n data: { selectedUrl: showMoreUrl },\r\n method: 'GET',\r\n success: function (response) {\r\n $('.js-grid-footer').replaceWith(response);\r\n updateSortOptions(response);\r\n lazyLoad.update();\r\n $.spinner().stop();\r\n swatchScroll();\r\n reviewsHide();\r\n $('body').trigger('wishlist:updateHearts');\r\n cache.$isLoadProductsContinously = $('.show-more').length > 0;\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n });\r\n },\r\n\r\n loadProductsContinously: function () {\r\n /*\r\n $(window).on('scroll', debounce(function () {\r\n if (cache.$isLoadProductsContinously) {\r\n var lastTile = $('.product-grid__tile .js-product').last();\r\n if (lastTile && lastTile.length > 0) {\r\n var result = lastTile.offset().top - $(document).scrollTop();\r\n if (result < lastTile.height()) {\r\n cache.$isLoadProductsContinously = false;\r\n $('.show-more button.more').trigger('click');\r\n }\r\n }\r\n }\r\n }, 200));\r\n */\r\n },\r\n\r\n applyFilter: function () {\r\n // Handle refinement value selection and reset click\r\n $('.container').on(\r\n 'click',\r\n '.js-refinements li button, .js-family-category, .refinement-bar .js-btn-reset, .js-sidebarReset, .filter-value button, .swatch-filter button',\r\n function (e) {\r\n e.preventDefault();\r\n\r\n if (window.handleGAEvent) {\r\n window.handleGAEvent(e);\r\n }\r\n if (!$(this).hasClass('js-btn-reset')) e.stopPropagation(); // do not skip flyout auto-closing on js-btn-reset click\r\n\r\n var url = $(this).data('href');\r\n\r\n if($(this).hasClass('color-attribute')){\r\n var color = $(this).data('color');\r\n var urlParams = new URLSearchParams(url);\r\n var preferenceNumber;\r\n for (var [key, value] of urlParams.entries()){\r\n if(value == \"refinementColor\"){\r\n preferenceNumber = key;\r\n }\r\n }\r\n if(preferenceNumber){\r\n preferenceNumber = preferenceNumber.replace('prefn', '');\r\n var colorParamValue = urlParams.get('prefv'+preferenceNumber);\r\n const isLowerCase = str => str === str.toLowerCase();\r\n if(isLowerCase(colorParamValue)){\r\n color = color.toLowerCase();\r\n }\r\n colorParamValue = colorParamValue.replace('|', '%7c');\r\n url = url.replace('prefv'+preferenceNumber+'='+colorParamValue, 'prefv'+preferenceNumber+'='+color);\r\n }\r\n }\r\n\r\n var data = {\r\n page: $('.js-grid-footer').data('page-number'),\r\n selectedUrl: url\r\n };\r\n\r\n $.spinner().start();\r\n $(this).trigger('search:filter', e);\r\n $.ajax({\r\n url: url,\r\n data: data,\r\n method: 'GET',\r\n success: function (response) {\r\n parseResults(response);\r\n lazyLoad.update();\r\n var refinementBody = $('#refine-dropdown').find('.refinement__body');\r\n //refinementBody.removeClass('collapse');\r\n updateAddressBar(url, data);\r\n //update pageLink URL params\r\n cache.$isLoadProductsContinously = $('.show-more').length > 0;\r\n createPagination(response);\r\n $.spinner().stop();\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n }\r\n );\r\n },\r\n\r\n showContentTab: function () {\r\n // Display content results from the search\r\n $('.container').on('click', '.content-search', function () {\r\n if ($('#content-search-results').html() === '') {\r\n getContent($(this), $('#content-search-results'));\r\n }\r\n });\r\n\r\n // Display the next page of content results from the search\r\n $('.container').on('click', '.show-more-content button', function () {\r\n getContent($(this), $('#content-search-results'));\r\n $('.show-more-content').remove();\r\n });\r\n },\r\n\r\n swatchView: function(){\r\n $('.container').on('click', '.js-swatch', function(){\r\n var swatch = $(this);\r\n var tile = swatch.closest('.product-tile');\r\n var productURL = swatch.attr('href');\r\n var tileImage = tile.find('.tile-image-wrapper');\r\n var tileLink = tile.find('.pdp-link').find('.link');\r\n var tileFinalSale = tile.find('.finalSaleContainer');\r\n var imageURL = swatch.data('swatch-image-url');\r\n \r\n if(imageURL) {\r\n $.spinner().start();\r\n $.ajax({\r\n url: imageURL,\r\n method: 'GET',\r\n success: function (data) {\r\n tileImage.empty();\r\n tileImage.attr('href', productURL);\r\n tileLink.attr('href', productURL);\r\n var images = data.product.images;\r\n\r\n tileFinalSale.empty();\r\n if(data.product.isFinalSale){\r\n var finalSaleMessage = $('
    Final Sale, No Returns Accepted
    ');\r\n $(tileFinalSale).append(finalSaleMessage);\r\n }\r\n\r\n if(images){\r\n var image = images.medium[0];\r\n var htmlImage = \"\"+image.alt+\"\";\r\n $(htmlImage).appendTo(tileImage);\r\n var newImage = tileImage.find('.tile-image');\r\n newImage.on('load', function(){\r\n $(tile).find('.price').replaceWith(data.product.renderedPrice);\r\n $(this).addClass('loaded');\r\n $.spinner().stop();\r\n });\r\n }\r\n\r\n },\r\n error: function () {\r\n $.spinner().stop();\r\n }\r\n });\r\n return false;\r\n }\r\n }); \r\n },\r\n\r\n swatchScrollInit: function(){\r\n swatchScroll();\r\n $('.container').on('click', '.swatch-slide.next, .swatch-slide.prev', function(){\r\n var direction = $(this).hasClass('next')? 'next' : 'prev';\r\n \r\n var colorSwatches = $(this).parent('.js-color-swatches');\r\n var swatchViewport = colorSwatches.find('.swatch-viewport');\r\n var swatchDisplayCount = parseInt(swatchViewport.attr('data-swatch-display-count'));\r\n var currentPosition = parseInt(swatchViewport.attr('data-slide-position'));\r\n var newPosition;\r\n if(direction == 'next'){ newPosition = currentPosition + swatchDisplayCount;}\r\n if(direction == 'prev') { newPosition = currentPosition - swatchDisplayCount; }\r\n var endPosition = (newPosition + swatchDisplayCount) - 1;\r\n var totalSwatchCount = swatchViewport.find('.js-swatch').length;\r\n swatchViewport.attr('data-slide-position', newPosition);\r\n \r\n //hide all swatches\r\n var swatches = swatchViewport.find('.js-swatch');\r\n swatches.addClass('hide');\r\n\r\n if(direction == 'next'){\r\n //show prev button\r\n colorSwatches.find('.swatch-slide.prev').addClass('show');\r\n if(endPosition >= totalSwatchCount){\r\n //hide next button if end of slide\r\n colorSwatches.find('.swatch-slide.next').removeClass('show');\r\n }\r\n }\r\n\r\n if(direction == 'prev') {\r\n if(newPosition == 1){\r\n //hide prev button\r\n colorSwatches.find('.swatch-slide.prev').removeClass('show');\r\n }\r\n if(endPosition <= totalSwatchCount){\r\n //show next button\r\n colorSwatches.find('.swatch-slide.next').addClass('show');\r\n }\r\n }\r\n\r\n //show all swatches between \"newPosition\" and \"endPosition\"\r\n swatches.each(function(i){\r\n i = i+1;\r\n if(i >= newPosition && i <= endPosition){\r\n $(this).removeClass('hide');\r\n }\r\n });\r\n \r\n });\r\n },\r\n\r\n reviewsHideInit: function(){\r\n reviewsHide();\r\n }\r\n};\r\n","/* eslint-disable */\r\n/*\r\n\r\n PinchZoom.js\r\n Copyright (c) Manuel Stofer 2013 - today\r\n\r\n Author: Manuel Stofer (mst@rtp.ch)\r\n Version: 2.3.5\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n\r\n*/\r\n\r\n// polyfills\r\nif (typeof Object.assign != 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, \"assign\", {\r\n value: function assign(target, varArgs) { // .length of function is 2\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n var to = Object(target);\r\n\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n}\r\n\r\nif (typeof Array.from != 'function') {\r\n Array.from = function (object) {\r\n return [].slice.call(object);\r\n };\r\n}\r\n\r\n// utils\r\nvar buildElement = function(str) {\r\n // empty string as title argument required by IE and Edge\r\n var tmp = document.implementation.createHTMLDocument('');\r\n tmp.body.innerHTML = str;\r\n return Array.from(tmp.body.children)[0];\r\n};\r\n\r\nvar triggerEvent = function(el, name) {\r\n var event = document.createEvent('HTMLEvents');\r\n event.initEvent(name, true, false);\r\n el.dispatchEvent(event);\r\n};\r\n\r\nvar definePinchZoom = function () {\r\n\r\n /**\r\n * Pinch zoom\r\n * @param el\r\n * @param options\r\n * @constructor\r\n */\r\n var PinchZoom = function (el, options) {\r\n this.el = el;\r\n this.zoomFactor = 1;\r\n this.lastScale = 1;\r\n this.offset = {\r\n x: 0,\r\n y: 0\r\n };\r\n this.initialOffset = {\r\n x: 0,\r\n y: 0,\r\n };\r\n this.options = Object.assign({}, this.defaults, options);\r\n this.setupMarkup();\r\n this.bindEvents();\r\n this.update();\r\n\r\n // The image may already be loaded when PinchZoom is initialized,\r\n // and then the load event (which trigger update) will never fire.\r\n if (this.isImageLoaded(this.el)) {\r\n this.updateAspectRatio();\r\n this.setupOffsets();\r\n }\r\n\r\n this.enable();\r\n\r\n },\r\n sum = function (a, b) {\r\n return a + b;\r\n },\r\n isCloseTo = function (value, expected) {\r\n return value > expected - 0.01 && value < expected + 0.01;\r\n };\r\n\r\n PinchZoom.prototype = {\r\n\r\n defaults: {\r\n tapZoomFactor: 2,\r\n zoomOutFactor: 1.3,\r\n animationDuration: 300,\r\n maxZoom: 4,\r\n minZoom: 0.5,\r\n draggableUnzoomed: true,\r\n lockDragAxis: false,\r\n setOffsetsOnce: false,\r\n use2d: true,\r\n zoomStartEventName: 'pz_zoomstart',\r\n zoomUpdateEventName: 'pz_zoomupdate',\r\n zoomEndEventName: 'pz_zoomend',\r\n dragStartEventName: 'pz_dragstart',\r\n dragUpdateEventName: 'pz_dragupdate',\r\n dragEndEventName: 'pz_dragend',\r\n doubleTapEventName: 'pz_doubletap',\r\n verticalPadding: 0,\r\n horizontalPadding: 0,\r\n onZoomStart: null,\r\n onZoomEnd: null,\r\n onZoomUpdate: null,\r\n onDragStart: null,\r\n onDragEnd: null,\r\n onDragUpdate: null,\r\n onDoubleTap: null\r\n },\r\n\r\n /**\r\n * Event handler for 'dragstart'\r\n * @param event\r\n */\r\n handleDragStart: function (event) {\r\n triggerEvent(this.el, this.options.dragStartEventName);\r\n if(typeof this.options.onDragStart == \"function\"){\r\n this.options.onDragStart(this, event)\r\n }\r\n this.stopAnimation();\r\n this.lastDragPosition = false;\r\n this.hasInteraction = true;\r\n this.handleDrag(event);\r\n },\r\n\r\n /**\r\n * Event handler for 'drag'\r\n * @param event\r\n */\r\n handleDrag: function (event) {\r\n var touch = this.getTouches(event)[0];\r\n this.drag(touch, this.lastDragPosition);\r\n this.offset = this.sanitizeOffset(this.offset);\r\n this.lastDragPosition = touch;\r\n },\r\n\r\n handleDragEnd: function () {\r\n triggerEvent(this.el, this.options.dragEndEventName);\r\n if(typeof this.options.onDragEnd == \"function\"){\r\n this.options.onDragEnd(this, event)\r\n }\r\n this.end();\r\n },\r\n\r\n /**\r\n * Event handler for 'zoomstart'\r\n * @param event\r\n */\r\n handleZoomStart: function (event) {\r\n triggerEvent(this.el, this.options.zoomStartEventName);\r\n if(typeof this.options.onZoomStart == \"function\"){\r\n this.options.onZoomStart(this, event)\r\n }\r\n this.stopAnimation();\r\n this.lastScale = 1;\r\n this.nthZoom = 0;\r\n this.lastZoomCenter = false;\r\n this.hasInteraction = true;\r\n },\r\n\r\n /**\r\n * Event handler for 'zoom'\r\n * @param event\r\n */\r\n handleZoom: function (event, newScale) {\r\n // a relative scale factor is used\r\n var touchCenter = this.getTouchCenter(this.getTouches(event)),\r\n scale = newScale / this.lastScale;\r\n this.lastScale = newScale;\r\n\r\n // the first touch events are thrown away since they are not precise\r\n this.nthZoom += 1;\r\n if (this.nthZoom > 3) {\r\n\r\n this.scale(scale, touchCenter);\r\n this.drag(touchCenter, this.lastZoomCenter);\r\n }\r\n this.lastZoomCenter = touchCenter;\r\n },\r\n\r\n handleZoomEnd: function () {\r\n triggerEvent(this.el, this.options.zoomEndEventName);\r\n if(typeof this.options.onZoomEnd == \"function\"){\r\n this.options.onZoomEnd(this, event)\r\n }\r\n this.end();\r\n },\r\n\r\n /**\r\n * Event handler for 'doubletap'\r\n * @param event\r\n */\r\n handleDoubleTap: function (event) {\r\n var center = this.getTouches(event)[0],\r\n zoomFactor = this.zoomFactor > 1 ? 1 : this.options.tapZoomFactor,\r\n startZoomFactor = this.zoomFactor,\r\n updateProgress = (function (progress) {\r\n this.scaleTo(startZoomFactor + progress * (zoomFactor - startZoomFactor), center);\r\n }).bind(this);\r\n\r\n if (this.hasInteraction) {\r\n return;\r\n }\r\n\r\n this.isDoubleTap = true;\r\n\r\n if (startZoomFactor > zoomFactor) {\r\n center = this.getCurrentZoomCenter();\r\n }\r\n\r\n this.animate(this.options.animationDuration, updateProgress, this.swing);\r\n triggerEvent(this.el, this.options.doubleTapEventName);\r\n if(typeof this.options.onDoubleTap == \"function\"){\r\n this.options.onDoubleTap(this, event)\r\n }\r\n },\r\n\r\n /**\r\n * Compute the initial offset\r\n *\r\n * the element should be centered in the container upon initialization\r\n */\r\n computeInitialOffset: function () {\r\n this.initialOffset = {\r\n x: -Math.abs(this.el.offsetWidth * this.getInitialZoomFactor() - this.container.offsetWidth) / 2,\r\n y: -Math.abs(this.el.offsetHeight * this.getInitialZoomFactor() - this.container.offsetHeight) / 2,\r\n };\r\n },\r\n\r\n /**\r\n * Reset current image offset to that of the initial offset\r\n */\r\n resetOffset: function() {\r\n this.offset.x = this.initialOffset.x;\r\n this.offset.y = this.initialOffset.y;\r\n },\r\n\r\n /**\r\n * Determine if image is loaded\r\n */\r\n isImageLoaded: function (el) {\r\n if (el.nodeName === 'IMG') {\r\n return el.complete && el.naturalHeight !== 0;\r\n } else {\r\n return Array.from(el.querySelectorAll('img')).every(this.isImageLoaded);\r\n }\r\n },\r\n\r\n setupOffsets: function() {\r\n if (this.options.setOffsetsOnce && this._isOffsetsSet) {\r\n return;\r\n }\r\n\r\n this._isOffsetsSet = true;\r\n\r\n this.computeInitialOffset();\r\n this.resetOffset();\r\n },\r\n\r\n /**\r\n * Max / min values for the offset\r\n * @param offset\r\n * @return {Object} the sanitized offset\r\n */\r\n sanitizeOffset: function (offset) {\r\n var elWidth = this.el.offsetWidth * this.getInitialZoomFactor() * this.zoomFactor;\r\n var elHeight = this.el.offsetHeight * this.getInitialZoomFactor() * this.zoomFactor;\r\n var maxX = elWidth - this.getContainerX() + this.options.horizontalPadding,\r\n maxY = elHeight - this.getContainerY() + this.options.verticalPadding,\r\n maxOffsetX = Math.max(maxX, 0),\r\n maxOffsetY = Math.max(maxY, 0),\r\n minOffsetX = Math.min(maxX, 0) - this.options.horizontalPadding,\r\n minOffsetY = Math.min(maxY, 0) - this.options.verticalPadding;\r\n\r\n return {\r\n x: Math.min(Math.max(offset.x, minOffsetX), maxOffsetX),\r\n y: Math.min(Math.max(offset.y, minOffsetY), maxOffsetY)\r\n };\r\n },\r\n\r\n /**\r\n * Scale to a specific zoom factor (not relative)\r\n * @param zoomFactor\r\n * @param center\r\n */\r\n scaleTo: function (zoomFactor, center) {\r\n this.scale(zoomFactor / this.zoomFactor, center);\r\n },\r\n\r\n /**\r\n * Scales the element from specified center\r\n * @param scale\r\n * @param center\r\n */\r\n scale: function (scale, center) {\r\n scale = this.scaleZoomFactor(scale);\r\n this.addOffset({\r\n x: (scale - 1) * (center.x + this.offset.x),\r\n y: (scale - 1) * (center.y + this.offset.y)\r\n });\r\n triggerEvent(this.el, this.options.zoomUpdateEventName);\r\n if(typeof this.options.onZoomUpdate == \"function\"){\r\n this.options.onZoomUpdate(this, event)\r\n }\r\n },\r\n\r\n /**\r\n * Scales the zoom factor relative to current state\r\n * @param scale\r\n * @return the actual scale (can differ because of max min zoom factor)\r\n */\r\n scaleZoomFactor: function (scale) {\r\n var originalZoomFactor = this.zoomFactor;\r\n this.zoomFactor *= scale;\r\n this.zoomFactor = Math.min(this.options.maxZoom, Math.max(this.zoomFactor, this.options.minZoom));\r\n return this.zoomFactor / originalZoomFactor;\r\n },\r\n\r\n /**\r\n * Determine if the image is in a draggable state\r\n *\r\n * When the image can be dragged, the drag event is acted upon and cancelled.\r\n * When not draggable, the drag event bubbles through this component.\r\n *\r\n * @return {Boolean}\r\n */\r\n canDrag: function () {\r\n return this.options.draggableUnzoomed || !isCloseTo(this.zoomFactor, 1);\r\n },\r\n\r\n /**\r\n * Drags the element\r\n * @param center\r\n * @param lastCenter\r\n */\r\n drag: function (center, lastCenter) {\r\n if (lastCenter) {\r\n if(this.options.lockDragAxis) {\r\n // lock scroll to position that was changed the most\r\n if(Math.abs(center.x - lastCenter.x) > Math.abs(center.y - lastCenter.y)) {\r\n this.addOffset({\r\n x: -(center.x - lastCenter.x),\r\n y: 0\r\n });\r\n }\r\n else {\r\n this.addOffset({\r\n y: -(center.y - lastCenter.y),\r\n x: 0\r\n });\r\n }\r\n }\r\n else {\r\n this.addOffset({\r\n y: -(center.y - lastCenter.y),\r\n x: -(center.x - lastCenter.x)\r\n });\r\n }\r\n triggerEvent(this.el, this.options.dragUpdateEventName);\r\n if(typeof this.options.onDragUpdate == \"function\"){\r\n this.options.onDragUpdate(this, event)\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Calculates the touch center of multiple touches\r\n * @param touches\r\n * @return {Object}\r\n */\r\n getTouchCenter: function (touches) {\r\n return this.getVectorAvg(touches);\r\n },\r\n\r\n /**\r\n * Calculates the average of multiple vectors (x, y values)\r\n */\r\n getVectorAvg: function (vectors) {\r\n return {\r\n x: vectors.map(function (v) { return v.x; }).reduce(sum) / vectors.length,\r\n y: vectors.map(function (v) { return v.y; }).reduce(sum) / vectors.length\r\n };\r\n },\r\n\r\n /**\r\n * Adds an offset\r\n * @param offset the offset to add\r\n * @return return true when the offset change was accepted\r\n */\r\n addOffset: function (offset) {\r\n this.offset = {\r\n x: this.offset.x + offset.x,\r\n y: this.offset.y + offset.y\r\n };\r\n },\r\n\r\n sanitize: function () {\r\n if (this.zoomFactor < this.options.zoomOutFactor) {\r\n this.zoomOutAnimation();\r\n } else if (this.isInsaneOffset(this.offset)) {\r\n this.sanitizeOffsetAnimation();\r\n }\r\n },\r\n\r\n /**\r\n * Checks if the offset is ok with the current zoom factor\r\n * @param offset\r\n * @return {Boolean}\r\n */\r\n isInsaneOffset: function (offset) {\r\n var sanitizedOffset = this.sanitizeOffset(offset);\r\n return sanitizedOffset.x !== offset.x ||\r\n sanitizedOffset.y !== offset.y;\r\n },\r\n\r\n /**\r\n * Creates an animation moving to a sane offset\r\n */\r\n sanitizeOffsetAnimation: function () {\r\n var targetOffset = this.sanitizeOffset(this.offset),\r\n startOffset = {\r\n x: this.offset.x,\r\n y: this.offset.y\r\n },\r\n updateProgress = (function (progress) {\r\n this.offset.x = startOffset.x + progress * (targetOffset.x - startOffset.x);\r\n this.offset.y = startOffset.y + progress * (targetOffset.y - startOffset.y);\r\n this.update();\r\n }).bind(this);\r\n\r\n this.animate(\r\n this.options.animationDuration,\r\n updateProgress,\r\n this.swing\r\n );\r\n },\r\n\r\n /**\r\n * Zooms back to the original position,\r\n * (no offset and zoom factor 1)\r\n */\r\n zoomOutAnimation: function () {\r\n if (this.zoomFactor === 1) {\r\n return;\r\n }\r\n\r\n var startZoomFactor = this.zoomFactor,\r\n zoomFactor = 1,\r\n center = this.getCurrentZoomCenter(),\r\n updateProgress = (function (progress) {\r\n this.scaleTo(startZoomFactor + progress * (zoomFactor - startZoomFactor), center);\r\n }).bind(this);\r\n\r\n this.animate(\r\n this.options.animationDuration,\r\n updateProgress,\r\n this.swing\r\n );\r\n },\r\n\r\n /**\r\n * Updates the container aspect ratio\r\n *\r\n * Any previous container height must be cleared before re-measuring the\r\n * parent height, since it depends implicitly on the height of any of its children\r\n */\r\n updateAspectRatio: function () {\r\n this.unsetContainerY();\r\n this.setContainerY(this.getContainerX() / this.getAspectRatio());\r\n },\r\n\r\n /**\r\n * Calculates the initial zoom factor (for the element to fit into the container)\r\n * @return {number} the initial zoom factor\r\n */\r\n getInitialZoomFactor: function () {\r\n var xZoomFactor = this.container.offsetWidth / this.el.offsetWidth;\r\n var yZoomFactor = this.container.offsetHeight / this.el.offsetHeight;\r\n\r\n return Math.min(xZoomFactor, yZoomFactor);\r\n },\r\n\r\n /**\r\n * Calculates the aspect ratio of the element\r\n * @return the aspect ratio\r\n */\r\n getAspectRatio: function () {\r\n return this.el.offsetWidth / this.el.offsetHeight;\r\n },\r\n\r\n /**\r\n * Calculates the virtual zoom center for the current offset and zoom factor\r\n * (used for reverse zoom)\r\n * @return {Object} the current zoom center\r\n */\r\n getCurrentZoomCenter: function () {\r\n var offsetLeft = this.offset.x - this.initialOffset.x;\r\n var centerX = -1 * this.offset.x - offsetLeft / (1 / this.zoomFactor - 1);\r\n\r\n var offsetTop = this.offset.y - this.initialOffset.y;\r\n var centerY = -1 * this.offset.y - offsetTop / (1 / this.zoomFactor - 1);\r\n\r\n return {\r\n x: centerX,\r\n y: centerY\r\n };\r\n },\r\n\r\n /**\r\n * Returns the touches of an event relative to the container offset\r\n * @param event\r\n * @return array touches\r\n */\r\n getTouches: function (event) {\r\n var rect = this.container.getBoundingClientRect();\r\n var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\r\n var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\r\n var posTop = rect.top + scrollTop;\r\n var posLeft = rect.left + scrollLeft;\r\n\r\n return Array.prototype.slice.call(event.touches).map(function (touch) {\r\n return {\r\n x: touch.pageX - posLeft,\r\n y: touch.pageY - posTop,\r\n };\r\n });\r\n },\r\n\r\n /**\r\n * Animation loop\r\n * does not support simultaneous animations\r\n * @param duration\r\n * @param framefn\r\n * @param timefn\r\n * @param callback\r\n */\r\n animate: function (duration, framefn, timefn, callback) {\r\n var startTime = new Date().getTime(),\r\n renderFrame = (function () {\r\n if (!this.inAnimation) { return; }\r\n var frameTime = new Date().getTime() - startTime,\r\n progress = frameTime / duration;\r\n if (frameTime >= duration) {\r\n framefn(1);\r\n if (callback) {\r\n callback();\r\n }\r\n this.update();\r\n this.stopAnimation();\r\n this.update();\r\n } else {\r\n if (timefn) {\r\n progress = timefn(progress);\r\n }\r\n framefn(progress);\r\n this.update();\r\n requestAnimationFrame(renderFrame);\r\n }\r\n }).bind(this);\r\n this.inAnimation = true;\r\n requestAnimationFrame(renderFrame);\r\n },\r\n\r\n /**\r\n * Stops the animation\r\n */\r\n stopAnimation: function () {\r\n this.inAnimation = false;\r\n },\r\n\r\n /**\r\n * Swing timing function for animations\r\n * @param p\r\n * @return {Number}\r\n */\r\n swing: function (p) {\r\n return -Math.cos(p * Math.PI) / 2 + 0.5;\r\n },\r\n\r\n getContainerX: function () {\r\n return this.container.offsetWidth;\r\n },\r\n\r\n getContainerY: function () {\r\n return this.container.offsetHeight;\r\n },\r\n\r\n setContainerY: function (y) {\r\n return this.container.style.height = y + 'px';\r\n },\r\n\r\n unsetContainerY: function () {\r\n this.container.style.height = null;\r\n },\r\n\r\n /**\r\n * Creates the expected html structure\r\n */\r\n setupMarkup: function () {\r\n this.container = buildElement('
    ');\r\n this.el.parentNode.insertBefore(this.container, this.el);\r\n this.container.appendChild(this.el);\r\n\r\n this.container.style.overflow = 'hidden';\r\n this.container.style.position = 'relative';\r\n\r\n this.el.style.webkitTransformOrigin = '0% 0%';\r\n this.el.style.mozTransformOrigin = '0% 0%';\r\n this.el.style.msTransformOrigin = '0% 0%';\r\n this.el.style.oTransformOrigin = '0% 0%';\r\n this.el.style.transformOrigin = '0% 0%';\r\n\r\n this.el.style.position = 'absolute';\r\n },\r\n\r\n end: function () {\r\n this.hasInteraction = false;\r\n this.sanitize();\r\n this.update();\r\n },\r\n\r\n /**\r\n * Binds all required event listeners\r\n */\r\n bindEvents: function () {\r\n var self = this;\r\n detectGestures(this.container, this);\r\n\r\n this.resizeHandler = this.update.bind(this)\r\n window.addEventListener('resize', this.resizeHandler);\r\n Array.from(this.el.querySelectorAll('img')).forEach(function(imgEl) {\r\n imgEl.addEventListener('load', self.update.bind(self));\r\n });\r\n\r\n if (this.el.nodeName === 'IMG') {\r\n this.el.addEventListener('load', this.update.bind(this));\r\n }\r\n },\r\n\r\n /**\r\n * Updates the css values according to the current zoom factor and offset\r\n */\r\n update: function (event) {\r\n if (event && event.type === 'resize') {\r\n this.updateAspectRatio();\r\n this.setupOffsets();\r\n }\r\n\r\n if (event && event.type === 'load') {\r\n this.updateAspectRatio();\r\n this.setupOffsets();\r\n }\r\n\r\n if (this.updatePlanned) {\r\n return;\r\n }\r\n this.updatePlanned = true;\r\n\r\n window.setTimeout((function () {\r\n this.updatePlanned = false;\r\n\r\n var zoomFactor = this.getInitialZoomFactor() * this.zoomFactor,\r\n offsetX = -this.offset.x / zoomFactor,\r\n offsetY = -this.offset.y / zoomFactor,\r\n transform3d = 'scale3d(' + zoomFactor + ', ' + zoomFactor + ',1) ' +\r\n 'translate3d(' + offsetX + 'px,' + offsetY + 'px,0px)',\r\n transform2d = 'scale(' + zoomFactor + ', ' + zoomFactor + ') ' +\r\n 'translate(' + offsetX + 'px,' + offsetY + 'px)',\r\n removeClone = (function () {\r\n if (this.clone) {\r\n this.clone.parentNode.removeChild(this.clone);\r\n delete this.clone;\r\n }\r\n }).bind(this);\r\n\r\n // Scale 3d and translate3d are faster (at least on ios)\r\n // but they also reduce the quality.\r\n // PinchZoom uses the 3d transformations during interactions\r\n // after interactions it falls back to 2d transformations\r\n if (!this.options.use2d || this.hasInteraction || this.inAnimation) {\r\n this.is3d = true;\r\n removeClone();\r\n\r\n this.el.style.webkitTransform = transform3d;\r\n this.el.style.mozTransform = transform2d;\r\n this.el.style.msTransform = transform2d;\r\n this.el.style.oTransform = transform2d;\r\n this.el.style.transform = transform3d;\r\n } else {\r\n // When changing from 3d to 2d transform webkit has some glitches.\r\n // To avoid this, a copy of the 3d transformed element is displayed in the\r\n // foreground while the element is converted from 3d to 2d transform\r\n if (this.is3d) {\r\n this.clone = this.el.cloneNode(true);\r\n this.clone.style.pointerEvents = 'none';\r\n this.container.appendChild(this.clone);\r\n window.setTimeout(removeClone, 200);\r\n }\r\n\r\n this.el.style.webkitTransform = transform2d;\r\n this.el.style.mozTransform = transform2d;\r\n this.el.style.msTransform = transform2d;\r\n this.el.style.oTransform = transform2d;\r\n this.el.style.transform = transform2d;\r\n\r\n this.is3d = false;\r\n }\r\n }).bind(this), 0);\r\n },\r\n\r\n /**\r\n * Enables event handling for gestures\r\n */\r\n enable: function() {\r\n this.enabled = true;\r\n },\r\n\r\n /**\r\n * Disables event handling for gestures\r\n */\r\n disable: function() {\r\n this.enabled = false;\r\n },\r\n\r\n /**\r\n * Unmounts the zooming container and global event listeners\r\n */\r\n destroy: function () {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n\r\n if (this.container) {\r\n this.container.remove();\r\n this.container = null;\r\n }\r\n }\r\n\r\n };\r\n\r\n var detectGestures = function (el, target) {\r\n var interaction = null,\r\n fingers = 0,\r\n lastTouchStart = null,\r\n startTouches = null,\r\n\r\n setInteraction = function (newInteraction, event) {\r\n if (interaction !== newInteraction) {\r\n\r\n if (interaction && !newInteraction) {\r\n switch (interaction) {\r\n case \"zoom\":\r\n target.handleZoomEnd(event);\r\n break;\r\n case 'drag':\r\n target.handleDragEnd(event);\r\n break;\r\n }\r\n }\r\n\r\n switch (newInteraction) {\r\n case 'zoom':\r\n target.handleZoomStart(event);\r\n break;\r\n case 'drag':\r\n target.handleDragStart(event);\r\n break;\r\n }\r\n }\r\n interaction = newInteraction;\r\n },\r\n\r\n updateInteraction = function (event) {\r\n if (fingers === 2) {\r\n setInteraction('zoom');\r\n } else if (fingers === 1 && target.canDrag()) {\r\n setInteraction('drag', event);\r\n } else {\r\n setInteraction(null, event);\r\n }\r\n },\r\n\r\n targetTouches = function (touches) {\r\n return Array.from(touches).map(function (touch) {\r\n return {\r\n x: touch.pageX,\r\n y: touch.pageY\r\n };\r\n });\r\n },\r\n\r\n getDistance = function (a, b) {\r\n var x, y;\r\n x = a.x - b.x;\r\n y = a.y - b.y;\r\n return Math.sqrt(x * x + y * y);\r\n },\r\n\r\n calculateScale = function (startTouches, endTouches) {\r\n var startDistance = getDistance(startTouches[0], startTouches[1]),\r\n endDistance = getDistance(endTouches[0], endTouches[1]);\r\n return endDistance / startDistance;\r\n },\r\n\r\n cancelEvent = function (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n },\r\n\r\n detectDoubleTap = function (event) {\r\n var time = (new Date()).getTime();\r\n\r\n if (fingers > 1) {\r\n lastTouchStart = null;\r\n }\r\n\r\n if (time - lastTouchStart < 300) {\r\n cancelEvent(event);\r\n\r\n target.handleDoubleTap(event);\r\n switch (interaction) {\r\n case \"zoom\":\r\n target.handleZoomEnd(event);\r\n break;\r\n case 'drag':\r\n target.handleDragEnd(event);\r\n break;\r\n }\r\n } else {\r\n target.isDoubleTap = false;\r\n }\r\n\r\n if (fingers === 1) {\r\n lastTouchStart = time;\r\n }\r\n },\r\n firstMove = true;\r\n\r\n el.addEventListener('touchstart', function (event) {\r\n if(target.enabled) {\r\n firstMove = true;\r\n fingers = event.touches.length;\r\n detectDoubleTap(event);\r\n }\r\n }, { passive: false });\r\n\r\n el.addEventListener('touchmove', function (event) {\r\n if(target.enabled && !target.isDoubleTap) {\r\n if (firstMove) {\r\n updateInteraction(event);\r\n if (interaction) {\r\n cancelEvent(event);\r\n }\r\n startTouches = targetTouches(event.touches);\r\n } else {\r\n switch (interaction) {\r\n case 'zoom':\r\n if (startTouches.length == 2 && event.touches.length == 2) {\r\n target.handleZoom(event, calculateScale(startTouches, targetTouches(event.touches)));\r\n }\r\n break;\r\n case 'drag':\r\n target.handleDrag(event);\r\n break;\r\n }\r\n if (interaction) {\r\n cancelEvent(event);\r\n target.update();\r\n }\r\n }\r\n\r\n firstMove = false;\r\n }\r\n }, { passive: false });\r\n\r\n el.addEventListener('touchend', function (event) {\r\n if(target.enabled) {\r\n fingers = event.touches.length;\r\n updateInteraction(event);\r\n }\r\n });\r\n };\r\n\r\n return PinchZoom;\r\n};\r\n\r\nvar PinchZoom = definePinchZoom();\r\n\r\nexport default PinchZoom;\r\n","'use strict';\r\n\r\nvar LazyLoad = require('vanilla-lazyload');\r\n\r\nvar inst = new LazyLoad({\r\n callback_error: (img) => {\r\n var $img = $(img);\r\n var $pictureSources = $(img).siblings('source');\r\n var srcsetUrls = `${window.staticFolder}images/noimagemedium.png 1x, ${window.staticFolder}images/noimagelarge.png 2x`;\r\n // skip if element has something other than 'data-src' attribute (i.e. data-bg error will be handled via styles)\r\n if ($img.attr('data-srcset')) $img.attr('srcset', srcsetUrls);\r\n if ($img.attr('data-src')) $img.attr('src', `${window.staticFolder}images/noimagemedium.png`);\r\n\r\n if ($pictureSources.length) $pictureSources.attr('srcset', srcsetUrls);\r\n }\r\n});\r\n\r\nmodule.exports = {\r\n inst: inst,\r\n update: () => inst.update()\r\n};\r\n","'use strict';\r\n\r\nvar mediaBreakpoints = require('../config/mediaBreakpoints.json');\r\nvar $cache = {\r\n body: $('body')\r\n};\r\n\r\nvar utils = {\r\n /**\r\n * @desc Media breakpoints that are used throughout the Javascript\r\n */\r\n breakpoints: mediaBreakpoints,\r\n\r\n /**\r\n * @function\r\n * @description Returns either an object with all of the available breakpoints or a specific viewport based on the given size\r\n * @param {string=} size The viewport to return\r\n * @param {Object=} breakpoints A custom breakpoints object\r\n * @returns {Object|string} - breakpoints or specific viewport\r\n */\r\n getViewports: function (size, breakpoints) {\r\n var bps = breakpoints || this.breakpoints;\r\n\r\n if (size) {\r\n var viewport = bps[size];\r\n\r\n if (viewport) {\r\n return viewport;\r\n }\r\n\r\n window.console.error('Unexpected viewport size given in util.getViewports');\r\n throw new Error('Unexpected viewport size given in util.getViewports');\r\n } else {\r\n return bps;\r\n }\r\n },\r\n\r\n /**\r\n * @function\r\n * @desc Generates a min-width matchMedia media query based on the given params\r\n * @param {string} size - Breakpoint to use for the media query\r\n * @param {Object} breakpoints - Override of the util breakpoints (optional)\r\n * @returns {boolean} - Wether or not the given media query matches\r\n */\r\n mediaBreakpointUp: function (size, breakpoints) {\r\n var breakpoint = this.getViewports(size, breakpoints);\r\n var mediaQuery = window.matchMedia('(min-width: ' + breakpoint + 'px)');\r\n return mediaQuery.matches;\r\n },\r\n\r\n /**\r\n * @function\r\n * @description Returns the current viewport name (ex: 'medium') or 'max' if the current window is larger than any defined viewport width\r\n * @returns {string} - current viewport name\r\n */\r\n getCurrentViewport: function () {\r\n var w = window.innerWidth;\r\n var viewports = utils.getViewports();\r\n var viewport = 'max';\r\n // Traverse the object from small up to desktop, and return the first match\r\n for (let name in viewports) {\r\n if (w <= viewports[name]) {\r\n viewport = name;\r\n break;\r\n }\r\n }\r\n return viewport;\r\n },\r\n\r\n /**\r\n * @function\r\n * @description Returns the current viewport mode: mobile (includes tablet portrait) OR desktop (usually >=1024px)\r\n * @returns {string} - current viewport name\r\n */\r\n getCurrentLayout: function () {\r\n var isDesktop = window.innerWidth >= this.breakpoints.ls; // normally >=1024\r\n return isDesktop ? 'desktop' : 'mobile';\r\n },\r\n\r\n isCurrentPage: function (name) {\r\n return $cache.body.attr('data-page-id') === name;\r\n },\r\n\r\n /**\r\n * @function\r\n * @description Executes a callback function when the user has stopped resizing the screen.\r\n * @param {function} callback - Callback function for the resize event\r\n * @return {function} - Callback function for the resize event\r\n */\r\n smartResize: function (callback) {\r\n var timeout;\r\n\r\n $(window).on('resize', function () {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(callback, 200);\r\n });\r\n\r\n return callback;\r\n },\r\n\r\n /**\r\n * @function\r\n * @description Checks if device has touch features.\r\n * @return {boolean} - result\r\n */\r\n isTouchDevice: function () {\r\n return (('ontouchstart' in window)\r\n || (navigator.maxTouchPoints > 0)\r\n || (navigator.msMaxTouchPoints > 0));\r\n },\r\n\r\n /**\r\n * @function\r\n * @desc Retrieves the util breakpoints object\r\n * @returns {Object} - All of the breakpoints\r\n */\r\n getBreakpoints: function () {\r\n return this.breakpoints;\r\n },\r\n\r\n scrollBrowser: function (xLocation, scrollDuration) {\r\n var duration = typeof scrollDuration === 'number' ? scrollDuration : 500;\r\n var scrollY = xLocation;\r\n\r\n if (window.stickyHeaderData && window.stickyHeaderData.enabled) {\r\n scrollY = xLocation - window.stickyHeaderData.height;\r\n }\r\n\r\n $('html, body').animate({ scrollTop: scrollY }, duration);\r\n },\r\n\r\n add: function (a, b) {\r\n return Math.round((a + b) * 100) / 100;\r\n }\r\n};\r\n\r\nmodule.exports = utils;\r\n","'use strict';\r\n\r\nmodule.exports = {\r\n setTabNextFocus: function (focusParams) {\r\n var KEYCODE_TAB = 9;\r\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\r\n\r\n if (!isTabPressed) {\r\n return;\r\n }\r\n\r\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\r\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\r\n\r\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\r\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\r\n if ($('.product-quickview.product-set').length > 0) {\r\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\r\n lastFocusableEl = linkElements[linkElements.length - 1];\r\n }\r\n }\r\n\r\n if (focusParams.event.shiftKey) /* shift + tab */ {\r\n if ($(':focus').is(firstFocusableEl)) {\r\n lastFocusableEl.focus();\r\n focusParams.event.preventDefault();\r\n }\r\n } else /* tab */ {\r\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\r\n firstFocusableEl.focus();\r\n focusParams.event.preventDefault();\r\n }\r\n }\r\n }\r\n};\r\n","'use strict';\r\n\r\nmodule.exports = function (include) {\r\n if (typeof include === 'function') {\r\n include();\r\n } else if (typeof include === 'object') {\r\n Object.keys(include).forEach(function (key) {\r\n if (typeof include[key] === 'function') {\r\n include[key]();\r\n }\r\n });\r\n }\r\n};\r\n","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPosition = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n"],"sourceRoot":""}