@ppg_pl/pallete 2.0.23 → 2.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +12 -5
  2. package/dist/cjs/{index-53e78fc8.js → index-d74cbc0d.js} +33 -2
  3. package/dist/cjs/index-d74cbc0d.js.map +1 -0
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/loader.cjs.js.map +1 -1
  6. package/dist/cjs/my-backdrop_8.cjs.entry.js +1651 -1286
  7. package/dist/cjs/my-backdrop_8.cjs.entry.js.map +1 -1
  8. package/dist/cjs/pallete.cjs.js +2 -2
  9. package/dist/cjs/pallete.cjs.js.map +1 -1
  10. package/dist/collection/components/my-backdrop/my-backdrop.css +7 -0
  11. package/dist/collection/components/my-colorbox/my-colorbox.css +7 -0
  12. package/dist/collection/components/my-colorinfo/assets/Shape.svg +4 -0
  13. package/dist/collection/components/my-colorinfo/assets/close.png +0 -0
  14. package/dist/collection/components/my-colorinfo/assets/shape.png +0 -0
  15. package/dist/collection/components/my-colorinfo/my-colorinfo.css +350 -0
  16. package/dist/collection/components/my-colorinfo/my-colorinfo.js +135 -1
  17. package/dist/collection/components/my-colorinfo/my-colorinfo.js.map +1 -1
  18. package/dist/collection/components/my-component/my-component.js +68 -1
  19. package/dist/collection/components/my-component/my-component.js.map +1 -1
  20. package/dist/collection/components/my-modal/my-modal.css +8 -239
  21. package/dist/collection/components/my-modal/my-modal.js +42 -2
  22. package/dist/collection/components/my-modal/my-modal.js.map +1 -1
  23. package/dist/collection/components/my-search/my-search.css +7 -0
  24. package/dist/collection/components/my-slider/index.js +9 -6
  25. package/dist/collection/components/my-slider/index.js.map +1 -1
  26. package/dist/collection/components/my-slider/my-slider.css +12 -3
  27. package/dist/collection/types.js.map +1 -1
  28. package/dist/components/index3.js +10 -7
  29. package/dist/components/index3.js.map +1 -1
  30. package/dist/components/my-backdrop2.js +1 -1
  31. package/dist/components/my-backdrop2.js.map +1 -1
  32. package/dist/components/my-colorbox2.js +1 -1
  33. package/dist/components/my-colorbox2.js.map +1 -1
  34. package/dist/components/my-colorinfo2.js +46 -3
  35. package/dist/components/my-colorinfo2.js.map +1 -1
  36. package/dist/components/my-component.js +15 -3
  37. package/dist/components/my-component.js.map +1 -1
  38. package/dist/components/my-modal2.js +1589 -1274
  39. package/dist/components/my-modal2.js.map +1 -1
  40. package/dist/components/my-search2.js +1 -1
  41. package/dist/components/my-search2.js.map +1 -1
  42. package/dist/esm/{index-b0145abf.js → index-45a30349.js} +33 -2
  43. package/dist/esm/index-45a30349.js.map +1 -0
  44. package/dist/esm/loader.js +3 -3
  45. package/dist/esm/loader.js.map +1 -1
  46. package/dist/esm/my-backdrop_8.entry.js +1651 -1286
  47. package/dist/esm/my-backdrop_8.entry.js.map +1 -1
  48. package/dist/esm/pallete.js +3 -3
  49. package/dist/esm/pallete.js.map +1 -1
  50. package/dist/pallete/assets/Shape.svg +4 -0
  51. package/dist/pallete/assets/shape.png +0 -0
  52. package/dist/pallete/p-2394bcec.entry.js +2 -0
  53. package/dist/pallete/p-2394bcec.entry.js.map +1 -0
  54. package/dist/pallete/p-a3449132.js +3 -0
  55. package/dist/pallete/p-a3449132.js.map +1 -0
  56. package/dist/pallete/pallete.css +1 -1
  57. package/dist/pallete/pallete.esm.js +1 -1
  58. package/dist/pallete/pallete.esm.js.map +1 -1
  59. package/dist/types/components/my-colorinfo/my-colorinfo.d.ts +11 -1
  60. package/dist/types/components/my-component/my-component.d.ts +9 -0
  61. package/dist/types/components/my-modal/my-modal.d.ts +3 -1
  62. package/dist/types/components.d.ts +24 -2
  63. package/dist/types/types.d.ts +4 -0
  64. package/package.json +5 -4
  65. package/www/build/assets/Shape.svg +4 -0
  66. package/www/build/assets/shape.png +0 -0
  67. package/www/build/p-2394bcec.entry.js +2 -0
  68. package/www/build/p-2394bcec.entry.js.map +1 -0
  69. package/www/build/p-a3449132.js +3 -0
  70. package/www/build/p-a3449132.js.map +1 -0
  71. package/www/build/p-c5910eb7.js +2 -0
  72. package/www/build/p-f8a0208d.css +1 -0
  73. package/www/build/pallete.css +1 -1
  74. package/www/build/pallete.esm.js +1 -1
  75. package/www/build/pallete.esm.js.map +1 -1
  76. package/www/index.html +62 -10
  77. package/dist/cjs/index-53e78fc8.js.map +0 -1
  78. package/dist/esm/index-b0145abf.js.map +0 -1
  79. package/dist/pallete/p-bdb05818.entry.js +0 -2
  80. package/dist/pallete/p-bdb05818.entry.js.map +0 -1
  81. package/dist/pallete/p-c6a049a2.js +0 -3
  82. package/dist/pallete/p-c6a049a2.js.map +0 -1
  83. package/www/build/p-bdb05818.entry.js +0 -2
  84. package/www/build/p-bdb05818.entry.js.map +0 -1
  85. package/www/build/p-c6a049a2.js +0 -3
  86. package/www/build/p-c6a049a2.js.map +0 -1
  87. /package/www/{build/assets → assets}/fonts/Galatea-Regular.eot +0 -0
  88. /package/www/{build/assets → assets}/fonts/Galatea-Regular.ttf +0 -0
  89. /package/www/{build/assets → assets}/fonts/Galatea-Regular.woff +0 -0
  90. /package/www/{build/assets → assets}/fonts/Galatea-Regular.woff2 +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["myBackdropCss","MyBackdrop","render","setDataLayer","obj","window","dataLayer","push","APIURL","accessToken","API","async","ep","request","fetch","method","headers","Authorization","response","json","error","console","ApiService","myColorboxCss","MyColorBox","this","colorCheck","checkTimeout","setTimeout","event","shop","product","color","name","colorUnCheck","clearTimeout","undefined","darkenColor","red","parseInt","green","blue","h","onMouseEnter","onMouseLeave","class","isActive","isCategoryActive","style","backgroundSize","_a","isImageInsteadHex","backgroundImage","_b","bigImage","background","_c","border","MyColorInfo","goToProduct","currentColor","closeInfoBox","emit","onCloseButtonClick","renderSliderOrImage","imageInsteadHex","src","alt","slides","data","images","getHref","baselink","links","find","link","path","_d","capitalizeFirstLetter","string","charAt","toUpperCase","slice","toLocaleLowerCase","textWhite","hex","maxWidth","infoBoxWidth","isMobile","onClick","getAssetPath","closeImage","number","href","buttonInverse","isObject","val","Array","isArray","hasAttributes","vattrs","requiredAttrs","every","hasOwnProperty","bind","isTextNode","vtext","isElement","nodeType","ownerDocument","isElementArray","createElement","vtag","vchildren","utils","document","createTextNode","element","key","setAttribute","forEach","child","appendChild","shouldApplyToHead","length","applyToHead","head","replaceChild","hasChildren","node","getFirstChild","firstChild","c","i","title","querySelector","meta","namePropKey","property","namePropValue","existingElement","_head","script","base","template","noscript","types","headExists","validTagNames","Object","keys","RenderTypes","isValidNode","indexOf","renderNode","Helmet","_props","children","rendered","n","filter","myComponentCss","MyModalBundle","show","setReadyToCloseHandler","value","readyToClose","detail","observable","closeModalHandler","content","selectedcolor","colorname","height","width","display","visibility","myLoaderCss","MyLoader","esErrors","Error","_eval","EvalError","range","RangeError","ref","ReferenceError","syntax","SyntaxError","type","TypeError","uri","URIError","shams","hasSymbols","Symbol","getOwnPropertySymbols","iterator","sym","symObj","prototype","toString","call","symVal","getOwnPropertyNames","syms","propertyIsEnumerable","getOwnPropertyDescriptor","descriptor","enumerable","origSymbol","hasSymbols$1","hasNativeSymbols","hasSymbolSham","test","__proto__","foo","$Object","hasProto$1","hasProto","ERROR_MESSAGE","toStr","max","Math","funcType","concatty","a","b","arr","j","slicy","arrLike","offset","joiny","joiner","str","implementation","that","target","apply","args","arguments","bound","binder","result","boundLength","boundArgs","Function","Empty","functionBind","$hasOwn","hasown","$Function","getEvalledConstructor","expressionSyntax","e","$gOPD","throwTypeError","$TypeError","ThrowTypeError","calleeThrows","get","gOPDthrows","require$$0","require$$1","getProto","getPrototypeOf","x","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","$Error","eval","$EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","Promise","Proxy","$RangeError","$ReferenceError","Reflect","RegExp","Set","SharedArrayBuffer","String","$SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","$URIError","WeakMap","WeakRef","WeakSet","doEval","fn","gen","LEGACY_ALIASES","$concat","concat","$spliceApply","splice","$replace","replace","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","first","last","match","quote","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","hasOwn","getIntrinsic","GetIntrinsic","parts","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","desc","$defineProperty","esDefineProperty","gopd","defineDataProperty","nonEnumerable","nonWritable","nonConfigurable","loose","configurable","writable","hasPropertyDescriptors","hasArrayLengthDefineBug","hasPropertyDescriptors_1","hasDescriptors","$floor","setFunctionLength","functionLengthIsConfigurable","functionLengthIsWritable","gOPD","define","$apply","$call","$reflectApply","$max","module","exports","callBind","originalFunction","func","applyBind","$indexOf","callBound","callBoundIntrinsic","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","hasWeakMap","weakMapHas","has","hasWeakSet","weakSetHas","hasWeakRef","weakRefDeref","deref","booleanValueOf","valueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","toLowerCase","$test","$join","join","$arrSlice","floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","objectInspect","inspect_","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","getIndent","inspect","from","noIndent","newOpts","isRegExp","nameOf","arrObjKeys","symString","markBoxed","s","nodeName","attrs","attributes","wrapQuotes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","global","isDate","ys","isPlainObject","constructor","protoTag","stringTag","constructorTag","tag","defaultStyle","quoteChar","f","m","l","HTMLElement","getAttribute","remaining","trailer","lowbyte","charCodeAt","size","entries","joinedEntries","baseIndent","prev","lineJoiner","isArr","symMap","k","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","curr","next","listGet","objects","listSet","listHas","sideChannel","getSideChannel","$wm","$m","$o","channel","assert","set","percentTwenties","Format","RFC1738","RFC3986","formats","default","formatters","hexTable","array","compactQueue","queue","item","pop","prop","compacted","arrayToObject","source","plainObjects","create","merge","allowPrototypes","mergeTarget","targetItem","reduce","acc","assign","assignSingleSource","decode","decoder","charset","strWithoutPlus","unescape","limit","encode","defaultEncoder","kind","format","escape","$0","out","segment","compact","o","refs","isBuffer","combine","maybeMap","mapped","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","allowEmptyArrays","arrayFormat","charsetSentinel","delimiter","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","isNonNullishPrimitive","v","sentinel","stringify","object","generateArrayPrefix","commaRoundTrip","sort","tmpSc","step","findFlag","pos","keyValue","values","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","stringify_1","joined","allowSparse","arrayLimit","decodeDotInKeys","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","fromCharCode","parseArrayValue","split","isoSentinel","parseValues","parseQueryStringValues","cleanStr","skipIndex","bracketEqualsPos","encodedVal","existing","parseObject","chain","valuesParsed","leaf","root","cleanRoot","decodedRoot","index","parseKeys","parseQueryStringKeys","givenKey","parent","normalizeParseOptions","parse","tempObj","newObj","lib","fetchProductColorsQuery","id","page","qs","fields","products","Product_id","_eq","fetchCategoryColorsQuery","Category","Category_id","fetchColorByName","colorName","_icontains","debounce","wait","timeout","executedFunction","later","myModalCss","MyModal","hostRef","boxDesktopWidth","boxMobileWidth","desktopPadding","mobilePadding","mediumBreakpoint","clearInterval","colorTimerInterval","colorTimer","setInterval","timer","chunks","y","chunksNum","calculateBoxCount","modalWidth","modalEl","clientWidth","padding","boxWidth","calc","boxesCount","preloader","displayForMobile","innerWidth","fetchProductData","shopResponse","getData","Shop","Shop_id","fetchProductColors","loading","colors","map","pagination","fetchCategoryColors","handleCategoryClick","selectedCategory","showRange","clearSearchText","onPage","currentIndex","debouncedSearchColorsHandler","searchColor","setInfoBoxWidth","newValue","watchPropHandler","close","handleReadyToClose","readyToCLose","closeInfoBoxHandler","handleResize","searchColorsHandler","openSeletedColor","colorIsSelected","innerArray","arrayIndex","foundColor","trim","componentWillLoad","componentWillRender","modalLogo","modalDescription","shopname","productname","filter_count","ceil","_","preventDefault","mySearchCss","MySearch","fetchColorsByName","text","searchColors","debouncedInputChangeValue","searchText","onInputChangeValue","fetchColorsByNameHandle","search_term","clearSearchTextHandler","placeholder","onInput","searchIcon","extend","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","querySelectorAll","getElementById","createEvent","initEvent","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","screen","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","getWindow","win","makeReactive","proto","defineProperty","Dom7","items","super","arrayFlat","res","el","arrayFilter","arrayUnique","uniqueArray","qsa","selector","context","$","html","toCreate","tempParent","innerHTML","addClass","classes","classNames","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","contains","attr","attrName","removeAttr","removeAttribute","transform","transition","duration","transitionDuration","on","eventType","targetSelector","listener","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7Listeners","proxyListener","dom7LiveListeners","off","handlers","handler","dom7proxy","trigger","evt","bubbles","cancelable","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","outerHeight","offsetHeight","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","css","props","each","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","prepend","insertBefore","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parentNode","closest","foundElements","found","removeChild","Methods","methodName","deleteProps","nextTick","delay","now","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","to","noExtend","nextSource","keysArray","nextIndex","len","nextKey","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","swiper","targetPosition","side","startPosition","translate","startTime","time","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","support","calcSupport","smoothScroll","documentElement","touch","DocumentTouch","passiveListener","checkPassiveListener","supportsPassive","gestures","checkGestures","getSupport","deviceCached","calcDevice","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","iPadScreens","os","getDevice","overrides","browser","calcBrowser","isSafari","isWebView","getBrowser","Resize","observer","animationFrame","resizeHandler","destroyed","initialized","createObserver","ResizeObserver","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","observe","removeObserver","unobserve","orientationChangeHandler","resizeObserver","Observer","extendParams","observers","attach","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","init","observeParents","containerParents","$el","observeSlideChildren","$wrapperEl","destroy","disconnect","eventsEmitter","priority","self","eventsListeners","once","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","updateSize","clientHeight","isHorizontal","isVertical","updateSlides","getDirectionLabel","marginRight","getDirectionPropertyValue","label","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","initSlides","slideSize","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","setTransition","getSlideByIndex","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","activeSlide","loop","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","virtualTranslate","currentTranslate","setTranslate","byController","z","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","transitionStart","slideTo","initial","indexAsNumber","isValidNumber","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","nextSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","loopedSlidesLimit","prependSlides","appendSlides","cloneNode","snapTranslate","diff","slideChanged","loopDestroy","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","__closestFrom","assignedSlot","getRootNode","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","isNavButtonTarget","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","running","paused","run","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","start","move","end","passiveListeners","passive","cancel","updateOnWindowResize","attachEvents","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","prepareClasses","resultClasses","addClasses","suffixes","autoheight","centered","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","preloadImages","imagesToLoad","imagesLoaded","updateOnImagesReady","currentSrc","wasLocked","lastSlideIndex","lastSlideRightEdge","checkOverflow$1","initialSlide","createElements","url","uniqueNavElements","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","updates","view","exact","spv","breakLoop","slideInView","translateValue","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","static","newDefaults","installModule","prototypeGroup","protoMethod","use","createElementIfNotDefined","checkProps","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","clickable","isHidden","Controller","controller","control","inverse","by","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","x2","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","mySliderCss","JcSwiper","colorInteraction","initSwiper","thumbs","swiper2","componentDidLoad","directus_files_id"],"sources":["./src/components/my-backdrop/my-backdrop.scss?tag=my-backdrop","./src/components/my-backdrop/my-backdrop.tsx","./src/gtmUtils.ts","./src/components/api/index.ts","./src/components/my-colorbox/my-colorbox.scss?tag=my-colorbox","./src/components/my-colorbox/my-colorbox.tsx","./src/components/my-colorinfo/my-colorinfo.tsx","./node_modules/@stencil/helmet/dist/util.js","./node_modules/@stencil/helmet/dist/dom.js","./node_modules/@stencil/helmet/dist/render.js","./node_modules/@stencil/helmet/dist/stencil-helmet.js","./src/components/my-component/my-component.scss?tag=my-component&encapsulation=scoped","./src/components/my-component/my-component.tsx","./src/components/my-loader/my-loader.scss?tag=my-loader&encapsulation=scoped","./src/components/my-loader/my-loader.tsx","./node_modules/es-errors/index.js","./node_modules/es-errors/eval.js","./node_modules/es-errors/range.js","./node_modules/es-errors/ref.js","./node_modules/es-errors/syntax.js","./node_modules/es-errors/type.js","./node_modules/es-errors/uri.js","./node_modules/has-symbols/shams.js","./node_modules/has-symbols/index.js","./node_modules/has-proto/index.js","./node_modules/function-bind/implementation.js","./node_modules/function-bind/index.js","./node_modules/hasown/index.js","./node_modules/get-intrinsic/index.js","./node_modules/es-define-property/index.js","./node_modules/gopd/index.js","./node_modules/define-data-property/index.js","./node_modules/has-property-descriptors/index.js","./node_modules/set-function-length/index.js","./node_modules/call-bind/index.js","./node_modules/call-bind/callBound.js","./node_modules/object-inspect/index.js","./node_modules/side-channel/index.js","./node_modules/qs/lib/formats.js","./node_modules/qs/lib/utils.js","./node_modules/qs/lib/stringify.js","./node_modules/qs/lib/parse.js","./node_modules/qs/lib/index.js","./src/components/api/services.ts","./src/utils/index.ts","./src/components/my-modal/my-modal.scss?tag=my-modal","./src/components/my-modal/my-modal.tsx","./src/components/my-search/my-search.scss?tag=my-search&encapsulation=scoped","./src/components/my-search/my-search.tsx","./node_modules/ssr-window/ssr-window.esm.js","./node_modules/dom7/dom7.esm.js","./node_modules/swiper/shared/dom.js","./node_modules/swiper/shared/utils.js","./node_modules/swiper/shared/get-support.js","./node_modules/swiper/shared/get-device.js","./node_modules/swiper/shared/get-browser.js","./node_modules/swiper/core/modules/resize/resize.js","./node_modules/swiper/core/modules/observer/observer.js","./node_modules/swiper/core/events-emitter.js","./node_modules/swiper/core/update/updateSize.js","./node_modules/swiper/core/update/updateSlides.js","./node_modules/swiper/core/update/updateAutoHeight.js","./node_modules/swiper/core/update/updateSlidesOffset.js","./node_modules/swiper/core/update/updateSlidesProgress.js","./node_modules/swiper/core/update/updateProgress.js","./node_modules/swiper/core/update/updateSlidesClasses.js","./node_modules/swiper/core/update/updateActiveIndex.js","./node_modules/swiper/core/update/updateClickedSlide.js","./node_modules/swiper/core/update/index.js","./node_modules/swiper/core/translate/getTranslate.js","./node_modules/swiper/core/translate/setTranslate.js","./node_modules/swiper/core/translate/minTranslate.js","./node_modules/swiper/core/translate/maxTranslate.js","./node_modules/swiper/core/translate/translateTo.js","./node_modules/swiper/core/translate/index.js","./node_modules/swiper/core/transition/setTransition.js","./node_modules/swiper/core/transition/transitionEmit.js","./node_modules/swiper/core/transition/transitionStart.js","./node_modules/swiper/core/transition/transitionEnd.js","./node_modules/swiper/core/transition/index.js","./node_modules/swiper/core/slide/slideTo.js","./node_modules/swiper/core/slide/slideToLoop.js","./node_modules/swiper/core/slide/slideNext.js","./node_modules/swiper/core/slide/slidePrev.js","./node_modules/swiper/core/slide/slideReset.js","./node_modules/swiper/core/slide/slideToClosest.js","./node_modules/swiper/core/slide/slideToClickedSlide.js","./node_modules/swiper/core/slide/index.js","./node_modules/swiper/core/loop/loopCreate.js","./node_modules/swiper/core/loop/loopFix.js","./node_modules/swiper/core/loop/loopDestroy.js","./node_modules/swiper/core/loop/index.js","./node_modules/swiper/core/grab-cursor/setGrabCursor.js","./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","./node_modules/swiper/core/grab-cursor/index.js","./node_modules/swiper/core/events/onTouchStart.js","./node_modules/swiper/core/events/onTouchMove.js","./node_modules/swiper/core/events/onTouchEnd.js","./node_modules/swiper/core/events/onResize.js","./node_modules/swiper/core/events/onClick.js","./node_modules/swiper/core/events/onScroll.js","./node_modules/swiper/core/events/index.js","./node_modules/swiper/core/breakpoints/setBreakpoint.js","./node_modules/swiper/core/breakpoints/getBreakpoint.js","./node_modules/swiper/core/breakpoints/index.js","./node_modules/swiper/core/classes/addClasses.js","./node_modules/swiper/core/classes/removeClasses.js","./node_modules/swiper/core/classes/index.js","./node_modules/swiper/core/images/loadImage.js","./node_modules/swiper/core/images/preloadImages.js","./node_modules/swiper/core/images/index.js","./node_modules/swiper/core/check-overflow/index.js","./node_modules/swiper/core/defaults.js","./node_modules/swiper/core/moduleExtendParams.js","./node_modules/swiper/core/core.js","./node_modules/swiper/shared/create-element-if-not-defined.js","./node_modules/swiper/modules/navigation/navigation.js","./node_modules/swiper/modules/controller/controller.js","./src/components/my-slider/my-slider.scss?tag=my-slider","./src/components/my-slider/index.tsx"],"sourcesContent":["@import '../../global/app.scss';\n\nmy-backdrop {\n width: 100%;\n height: 100%;\n background-color: $backdrop_black;\n position: fixed;\n z-index: 100;\n left: 0;\n top: 0;\n}\n","import { Component } from '@stencil/core';\n\n@Component({\n tag: 'my-backdrop',\n styleUrl: 'my-backdrop.scss',\n})\nexport class MyBackdrop {\n render() {\n return null;\n }\n}\n","export const setDataLayer = (obj: Record<string, string>) => {\n return window.dataLayer.push(obj);\n};\n","// DEV/\n// export const APIURL = 'http://localhost:8055';\n// export const accessToken = 'iGAWx696CkipbZDOESC8CBn3BF7xPaei';\n\n// PROD\n\nexport const APIURL = 'https://color-selector.pl'; //'https://pallete-colors-backend.herokuapp.com';\nexport const accessToken = '8uZQSXi0wCxiY0UR8wp_Pe2gY86wVErp'; //'_baZ127gfvFIFmZ5umrrTBUUm6D7ve6p'\n\nclass API {\n async getData(ep: string) {\n try {\n const request = await fetch(`${APIURL}/${ep}`, {\n method: 'GET',\n\n headers: {\n 'Authorization': `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n },\n // mode: 'no-cors',\n });\n\n const response = await request.json();\n\n return response;\n } catch (error) {\n console.error(error);\n }\n }\n}\n\nexport const ApiService = new API();\n","@import '../../global/app.scss';\n\n.my-color-box {\n width: 125px;\n height: 125px;\n display: block;\n margin-bottom: 5px;\n cursor: pointer;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n position: relative;\n\n @media (max-width: $medium) {\n width: 65px;\n height: 65px;\n }\n .color-name {\n width: 100%;\n background-color: $white;\n padding: 15px 0px 10px;\n border-top-left-radius: 15px;\n border-top-right-radius: 15px;\n opacity: 0;\n transition: 0.3s opacity ease-in-out;\n font-size: 10px;\n color: $black;\n text-transform: lowercase;\n }\n &.active {\n .color-name {\n opacity: 1;\n }\n }\n\n &.categoryactive {\n width: 120px;\n height: 115px;\n .color-name {\n opacity: 1;\n }\n\n @media (max-width: $medium) {\n width: 72px;\n height: 72px;\n }\n }\n &:hover {\n .color-name {\n opacity: 1;\n }\n }\n}\n","import { Component, Prop, h } from '@stencil/core';\nimport { setDataLayer } from '../../gtmUtils';\nimport { ColorBoxyIsImageInsteadHex } from '../../types';\nimport { APIURL, accessToken } from '../api';\n\n@Component({\n tag: 'my-colorbox',\n styleUrl: 'my-colorbox.scss',\n})\nexport class MyColorBox {\n private checkTimeout: ReturnType<typeof setTimeout> | undefined;\n\n @Prop() color: string;\n @Prop() name: string;\n @Prop() shop: string;\n @Prop() product: string;\n @Prop() isActive?: boolean;\n @Prop() isCategoryActive?: boolean;\n @Prop() isImageInsteadHex?: ColorBoxyIsImageInsteadHex;\n\n colorCheck = () => {\n this.checkTimeout = setTimeout(() => {\n setDataLayer({\n event: 'ColorCheck',\n shop: this.shop,\n product: this.product,\n color: this.name,\n });\n }, 2000);\n };\n\n colorUnCheck = () => {\n if (this.checkTimeout) clearTimeout(this.checkTimeout);\n this.checkTimeout = undefined;\n };\n\n darkenColor = (color: string) => {\n const red = parseInt(color[1] + color[2], 16) - 20;\n const green = parseInt(color[3] + color[4], 16) - 20;\n const blue = parseInt(color[5] + color[6], 16) - 20;\n return `rgb(${red},${green},${blue})`;\n };\n\n render() {\n return (\n <div\n onMouseEnter={() => this.colorCheck()}\n onMouseLeave={() => this.colorUnCheck()}\n class={`my-color-box ${this.isActive ? 'active' : ''} ${this.isCategoryActive ? 'categoryactive' : ''}`}\n style={{\n backgroundSize: this.isImageInsteadHex?.isImageInsteadHex ? 'cover' : '',\n backgroundImage: this.isImageInsteadHex?.isImageInsteadHex ? `url(${APIURL}/assets/${this.isImageInsteadHex.bigImage}?access_token=${accessToken})` : '',\n background: this.isImageInsteadHex?.isImageInsteadHex ? this.isImageInsteadHex.bigImage : this.color,\n border: this.isCategoryActive ? `5px solid ${this.darkenColor(this.color)}` : '',\n }}\n >\n <div class=\"color-name\">{this.name}</div>\n </div>\n );\n }\n}\n","import { Component, Prop, h, getAssetPath, Event, EventEmitter } from '@stencil/core';\nimport { setDataLayer } from '../../gtmUtils';\nimport { Color, Link, Product } from '../../types';\nimport { APIURL, accessToken } from '../api';\n\n@Component({\n tag: 'my-colorinfo',\n})\nexport class MyColorInfo {\n @Prop() currentColor: Color;\n @Prop() shop: string;\n @Prop() product: string;\n @Prop() baselink: string;\n @Prop() data: Product | null = null;\n @Prop() isMobile: boolean = false;\n @Prop() infoBoxWidth: number | null;\n @Prop() closeImage = 'close.png';\n\n @Event() closeInfoBox: EventEmitter;\n\n goToProduct = () => {\n this.currentColor &&\n setDataLayer({\n event: 'GoToProduct',\n shop: this.shop,\n product: this.product,\n color: this.currentColor?.name,\n });\n this.closeInfoBox.emit();\n };\n\n onCloseButtonClick = () => {\n this.closeInfoBox.emit();\n };\n\n renderSliderOrImage = () => {\n if (this.currentColor.imageInsteadHex) {\n return <img class={'color-big-image'} src={`${APIURL}/assets/${this.currentColor.bigImage}?access_token=${accessToken}`} alt=\"color-image\" />;\n } else {\n return <my-slider color={this.currentColor.name} shop={this.shop} product={this.product} slides={this.data?.images}></my-slider>;\n }\n };\n\n getHref = () => {\n if (this.baselink) {\n return `${this.baselink}/${this?.currentColor.links?.find((link: Link) => link?.shop === this.shop)?.path}`;\n } else {\n return this?.currentColor.links?.find((link: Link) => link?.shop === this.shop)?.path;\n }\n };\n\n capitalizeFirstLetter = (string: string) => {\n return string.charAt(0).toUpperCase() + string.slice(1).toLocaleLowerCase();\n };\n\n render() {\n return (\n <div\n class={`boxes__box-content ${this.currentColor.textWhite ? 'boxes__box-content__white' : ''}`}\n style={{\n background: this.currentColor.imageInsteadHex ? 'white' : this.currentColor.hex,\n maxWidth: `${this.infoBoxWidth && this.infoBoxWidth - 4}px`,\n }}\n >\n {this.isMobile && <img class={'closebtn'} onClick={this.onCloseButtonClick} src={getAssetPath(`./assets/${this.closeImage}`)} alt=\"closebtn\" />}\n <div\n class=\"boxes__box-content__info\"\n style={{\n maxWidth: this.isMobile ? `${this.infoBoxWidth && this.infoBoxWidth - 35}px` : ``,\n }}\n >\n {!this.isMobile && <img class={'closebtn'} onClick={this.onCloseButtonClick} src={getAssetPath(`./assets/${this.closeImage}`)} alt=\"closebtn\" />}\n <h2>{this.capitalizeFirstLetter(this.currentColor.name)}</h2>\n {!this.isMobile && <h4>{this.currentColor.number}</h4>}\n\n <div class=\"boxes__box-content__info__value\">\n {/* <div class=\"boxes__box-content__info__value-image\">\n {this.currentColor?.image! && <img src={`${APIURL}/assets/${this.currentColor.image}?access_token=${accessToken}`} alt=\"color-image\" />}\n </div> */}\n <div class=\"boxes__box-content__info__value-product\">\n {/* <div>\n {!this.isMobile && <p>Produkt:</p>}\n {this.isMobile && <h2>{this.currentColor?.name}</h2>} <p>{this.product}</p>\n </div> */}\n\n {this.isMobile && <div class={'divider'}></div>}\n {this.currentColor && this.currentColor.links?.find((link: Link) => link?.shop === this.shop) && (\n <a\n onClick={this.goToProduct}\n href={this.getHref()}\n class={`button ${this.currentColor.imageInsteadHex ? 'brown' : this.currentColor.buttonInverse ? 'inverse' : ''}`}\n >\n wybierz kolor\n </a>\n )}\n </div>\n </div>\n </div>\n <div class=\"boxes__box-content__slider\">{this.renderSliderOrImage()}</div>\n </div>\n );\n }\n}\n","const isObject = (val) => !Array.isArray(val) && val !== null && typeof val === 'object';\nexport const hasAttributes = ({ vattrs }, requiredAttrs = []) => isObject(vattrs) && requiredAttrs.every(vattrs.hasOwnProperty.bind(vattrs));\nexport const isTextNode = ({ vtext }) => typeof vtext === 'string';\n// Can't use instanceof HTMLElement because MockHTMLElement during pre-rendering isn't\nexport const isElement = (val) => typeof val === 'object' && val.nodeType === 1 && typeof val.ownerDocument === 'object';\nexport const isElementArray = (val) => Array.isArray(val) && val.every(isElement);\n","import { isElement, isElementArray } from './util';\nexport const createElement = ({ vtag, vattrs, vchildren, vtext }, utils) => {\n if (vtext != null) {\n return document.createTextNode(vtext);\n }\n const element = document.createElement(vtag);\n if (vattrs != null) {\n for (const key in vattrs) {\n element.setAttribute(key, vattrs[key]);\n }\n }\n if (vchildren != null) {\n utils.forEach(vchildren, (child) => {\n element.appendChild(createElement(child, utils));\n });\n }\n return element;\n};\nexport const shouldApplyToHead = (val) => isElement(val) || (isElementArray(val) && val.length === 2);\nexport const applyToHead = (element) => {\n if (Array.isArray(element)) {\n return document.head.replaceChild(element[0], element[1]);\n }\n return document.head.appendChild(element);\n};\n","import { hasAttributes, isTextNode } from './util';\nimport { createElement } from './dom';\nconst hasChildren = (node) => Array.isArray(node.vchildren);\nconst getFirstChild = (vchildren, utils) => {\n let firstChild = null;\n utils.forEach(vchildren || [], (c, i) => {\n if (i === 0) {\n firstChild = c;\n return;\n }\n });\n return firstChild;\n};\nfunction title(node, head, utils) {\n const firstChild = getFirstChild(node.vchildren || [], utils);\n if (firstChild && isTextNode(firstChild)) {\n return [createElement(node, utils), head.querySelector('title')];\n }\n}\nfunction meta(node, head, utils) {\n var _a, _b, _c;\n const namePropKey = ((_a = node.vattrs) === null || _a === void 0 ? void 0 : _a.property) ? 'property' : 'name';\n const namePropValue = ((_b = node.vattrs) === null || _b === void 0 ? void 0 : _b.property) || ((_c = node.vattrs) === null || _c === void 0 ? void 0 : _c.name);\n const existingElement = head.querySelector(`meta[${namePropKey}=\"${namePropValue}\"]`);\n if (existingElement !== null) {\n return [createElement(node, utils), existingElement];\n }\n else {\n return createElement(node, utils);\n }\n}\nfunction link(node, _head, utils) {\n if (!hasChildren(node)) {\n return createElement(node, utils);\n }\n}\nfunction style(node, _head, utils) {\n const firstChild = getFirstChild(node.vchildren || [], utils);\n if (firstChild && isTextNode(firstChild)) {\n return createElement(node, utils);\n }\n}\nfunction script(node, _head, utils) {\n if (hasChildren(node) || hasAttributes(node)) {\n return createElement(node, utils);\n }\n}\nfunction base(node, _head, utils) {\n if (!hasChildren(node) && hasAttributes(node)) {\n return createElement(node, utils);\n }\n}\nconst template = createElement;\nconst noscript = createElement; // SSR only\nconst types = {\n title,\n meta,\n link,\n style,\n script,\n base,\n template,\n noscript,\n};\nexport default types;\n","import RenderTypes from './render';\nimport { shouldApplyToHead, applyToHead } from './dom';\nconst headExists = document && document.head;\nconst validTagNames = Object.keys(RenderTypes);\nconst isValidNode = (node) => validTagNames.indexOf(node.vtag) > -1;\nconst renderNode = (node, utils) => RenderTypes[node.vtag](node, document.head, utils);\nexport const Helmet = (_props, children, utils) => {\n if (!headExists) {\n return null;\n }\n const rendered = [];\n const validChildren = [];\n utils.forEach(children, (n) => {\n if (isValidNode(n)) {\n validChildren.push(n);\n rendered.push(renderNode(n, utils));\n }\n });\n // Build an HTMLElement for each provided virtual child\n rendered\n .filter(shouldApplyToHead)\n .forEach(applyToHead);\n return null;\n};\nexport default Helmet;\n",".pallete-wrapper {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n","import Helmet from '@stencil/helmet';\nimport { Component, Prop, Method, Element, State, Listen, h } from '@stencil/core';\n\n@Component({\n tag: 'my-component',\n styleUrl: 'my-component.scss',\n scoped: true,\n})\nexport class MyModalBundle {\n @Element() modalEl: HTMLElement;\n\n @Prop() shop: string;\n @Prop() product: string;\n @Prop() baselink: string;\n @Prop() colorname: string | null;\n\n @State() show = false;\n @State() readyToClose = false;\n\n @Method()\n async open() {\n this.show = true;\n }\n\n @Method()\n async close() {\n this.show = false;\n }\n\n @Listen('readyToCLose')\n setReadyToCloseHandler(value: CustomEvent) {\n this.readyToClose = value.detail.observable;\n }\n\n @Listen('close')\n closeModalHandler() {\n this.show = false;\n this.readyToClose = false;\n }\n\n render() {\n let content = null;\n if (this.show) {\n content = [<my-backdrop></my-backdrop>, <my-modal shop={this.shop} product={this.product} baselink={this.baselink} selectedcolor={this.colorname}></my-modal>];\n }\n return (\n <div\n onClick={() => {\n if (this.readyToClose) {\n this.closeModalHandler();\n }\n }}\n >\n <Helmet>\n <script>\n {`(function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({ 'gtm.start': new Date().getTime(), 'event': 'gtm.js' });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != 'dataLayer' ? '&l=' + l : '';\n j.async = true;\n j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\n f.parentNode.insertBefore(j, f);\n })(window, document, 'script', 'dataLayer', 'GTM-PMTKHDX');`}\n </script>\n </Helmet>\n <div class=\"pallete-wrapper\">{content}</div>\n <noscript>\n <iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-PMTKHDX\" height=\"0\" width=\"0\" style={{ display: 'none', visibility: 'hidden' }}></iframe>\n </noscript>\n </div>\n );\n }\n}\n","$color: #b8cf40, #ee4b5e, #ea0f47, #d42840, #8b2850;\n\n@mixin anim($i) {\n $y: ($i + 5) * 3;\n\n @keyframes right-#{$i} {\n 0% {\n transform: translateY(#{-$y}px);\n }\n 100% {\n transform: translateY(#{$y}px);\n }\n }\n}\n\n.container {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 190px;\n overflow: hidden;\n}\n\n.item {\n width: 20px;\n height: 20px;\n margin: 3px;\n list-style-type: none;\n transition: 0.5s all ease;\n}\n\n@for $i from 1 through 5 {\n .item:nth-child(#{$i}) {\n @include anim($i);\n animation: right-#{$i} 1s infinite alternate;\n background-color: nth($color, $i);\n animation-delay: 20ms * $i;\n }\n}\n","import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'my-loader',\n styleUrl: 'my-loader.scss',\n scoped: true,\n})\nexport class MyLoader {\n render() {\n return (\n <div class=\"container\">\n <div class=\"item\"></div>\n <div class=\"item\"></div>\n <div class=\"item\"></div>\n <div class=\"item\"></div>\n <div class=\"item\"></div>\n </div>\n );\n }\n}\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\nvar test = {\n\t__proto__: null,\n\tfoo: {}\n};\n\nvar $Object = Object;\n\n/** @type {import('.')} */\nmodule.exports = function hasProto() {\n\t// @ts-expect-error: TS errors on an inherited property for some reason\n\treturn { __proto__: test }.foo === test.foo\n\t\t&& !(test instanceof $Object);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\nvar hasProto = require('has-proto')();\n\nvar getProto = Object.getPrototypeOf || (\n\thasProto\n\t\t? function (x) { return x.__proto__; } // eslint-disable-line no-proto\n\t\t: null\n);\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\n/** @type {import('.')} */\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true) || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\nvar setFunctionLength = require('set-function-length');\n\nvar $TypeError = require('es-errors/type');\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $defineProperty = require('es-define-property');\nvar $max = GetIntrinsic('%Math.max%');\n\nmodule.exports = function callBind(originalFunction) {\n\tif (typeof originalFunction !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\tvar func = $reflectApply(bind, $call, arguments);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + $max(0, originalFunction.length - (arguments.length - 1)),\n\t\ttrue\n\t);\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap<object, unknown>} */ var $wm;\n\t/** @type {Map<object, unknown>} */ var $m;\n\t/** @type {import('.').RootNode<unknown>} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && leaf === '' ? [] : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","import qs from 'qs';\n\nexport const limit = 100;\n\nexport const fetchProductColorsQuery = (id: string, page?: number) =>\n qs.stringify(\n {\n fields: ['*', 'products.*'].join(','),\n filter: {\n products: {\n Product_id: {\n _eq: id,\n },\n },\n },\n\n meta: '*',\n page: page || 1,\n limit,\n },\n {\n encodeValuesOnly: true,\n },\n );\n\nexport const fetchCategoryColorsQuery = (id: number, page?: number) =>\n qs.stringify(\n {\n fields: ['*', 'Category.*', 'products.*'].join(','),\n filter: {\n Category: {\n Category_id: {\n _eq: id,\n },\n },\n },\n meta: '*',\n page: page || 1,\n limit,\n },\n {\n encodeValuesOnly: true,\n },\n );\n\nexport const fetchColorByNumber = (id: number, colorNumber: string) =>\n qs.stringify(\n {\n fields: ['*', 'Category.*'].join(','),\n filter: {\n Category: {\n Category_id: {\n _eq: id,\n },\n },\n number: {\n _contains: colorNumber,\n },\n },\n meta: '*',\n },\n\n {\n encodeValuesOnly: true,\n },\n );\n\nexport const fetchColorByName = (id: string, colorName: string) =>\n qs.stringify(\n {\n fields: ['*'].join(','),\n filter: {\n products: {\n Product_id: {\n _eq: id,\n },\n },\n name: {\n _icontains: colorName,\n },\n },\n meta: '*',\n limit: 100,\n },\n\n {\n encodeValuesOnly: true,\n },\n );\n","export function debounce(func: (...args: any[]) => void, wait: number) {\n let timeout: ReturnType<typeof setTimeout>;\n\n return function executedFunction(...args: any[]) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n","@import '../../global/app.scss';\n\n.my-modal {\n box-shadow: 1px 1px 1px $white_shadow;\n background-color: $white;\n position: fixed;\n top: 20px; /* Change this to 0 or a suitable value for spacing from the top */\n left: 50%;\n transform: translateX(-50%); /* Only translate horizontally */\n max-width: 1555px;\n width: 90%;\n z-index: 1000;\n text-align: center;\n padding: 35px 40px;\n max-height: calc(100vh - 100px);\n overflow-y: auto;\n min-height: 50vh;\n\n @media (max-width: $medium) {\n padding: 40px 20px 20px;\n }\n &::-webkit-scrollbar {\n display: none;\n }\n\n .loader {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 300px;\n }\n\n &__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n align-items: flex-end;\n margin-bottom: 16px;\n @media (max-width: $medium) {\n flex-direction: column;\n margin-bottom: 12px;\n align-items: center;\n display: block;\n }\n .image-wrapper {\n @media (max-width: $small) {\n margin-bottom: 12px;\n }\n > img {\n max-width: 300px;\n object-fit: cover;\n @media (max-width: $small) {\n max-width: 200px;\n }\n }\n }\n .search-wrapper {\n display: flex;\n gap: 55px;\n align-items: flex-start;\n @media (max-width: $medium) {\n justify-content: center;\n width: 92%;\n }\n .sc-my-search-h {\n @media (max-width: $medium) {\n width: 100%;\n margin: 0 auto;\n }\n }\n .my-modal__close {\n background: transparent;\n border: none;\n margin-top: -20px;\n\n > img {\n width: 45px;\n height: 45px;\n object-fit: cover;\n cursor: pointer;\n }\n @media (max-width: $medium) {\n margin-top: 0px;\n position: absolute;\n right: 10px;\n top: 10px;\n }\n }\n }\n }\n\n &__see-more {\n font-size: 16px;\n\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 300;\n color: #575757;\n margin-top: 12px;\n margin-bottom: 0px;\n @media (max-width: $medium) {\n font-size: 18px;\n }\n img {\n width: 45px;\n height: 45px;\n @media (max-width: $medium) {\n display: none;\n }\n }\n }\n\n &__wrapper {\n display: flex;\n flex-direction: column;\n position: relative;\n\n .boxes {\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n\n &__list {\n display: flex;\n flex-wrap: wrap;\n gap: 5px 5px;\n @media (max-width: $medium) {\n justify-content: center;\n }\n }\n\n &__box-content {\n width: 100%;\n margin-bottom: 5px;\n height: 500px;\n text-align: left;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n position: relative;\n .closebtn {\n position: absolute;\n right: 10px;\n top: 10px;\n width: 53px;\n height: 53px;\n cursor: pointer;\n object-fit: cover;\n z-index: 9999;\n }\n @media (max-width: $medium) {\n flex-direction: column-reverse;\n height: auto;\n }\n @media (max-width: $small) {\n margin: 0 auto;\n }\n &__info {\n width: 40%;\n padding: 50px 40px;\n position: relative;\n @media (max-width: $medium) {\n width: 100%;\n padding: 15px;\n min-height: 100px;\n }\n\n @media (max-width: $small) {\n min-height: auto;\n }\n\n h2 {\n font-size: 35px;\n font-weight: normal;\n\n margin-bottom: 30px;\n color: $black;\n\n @media (max-width: $small) {\n font-size: 16px;\n text-align: center;\n margin-bottom: 15px;\n margin-top: 5px;\n }\n }\n h4 {\n margin-top: 0px;\n margin-bottom: 15px;\n font-size: 16px;\n color: $grey;\n }\n .divider {\n border: 1px solid $grey;\n opacity: 0.2;\n margin-bottom: 20px;\n @media (max-width: $small) {\n margin: 10px 0px;\n display: none;\n }\n }\n\n &__value {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n @media (max-width: $medium) {\n justify-content: flex-start;\n }\n\n @media (max-width: $small) {\n flex-direction: column;\n }\n\n &-image {\n @media (max-width: $small) {\n margin: 0 auto;\n margin-bottom: 10px;\n }\n img {\n width: 114px;\n object-fit: cover;\n @media (max-width: $medium) {\n width: 75px;\n }\n }\n }\n\n &-product {\n color: $black;\n margin-left: 10px;\n h2 {\n @media (max-width: $medium) {\n font-size: 26px;\n margin: 0;\n margin-right: 10px;\n }\n @media (max-width: $small) {\n font-size: 16px;\n }\n }\n p {\n font-size: 20px;\n margin-top: 0px;\n margin-bottom: 0px;\n &:last-of-type {\n margin-bottom: 20px;\n @media (max-width: $medium) {\n margin-bottom: 0;\n }\n }\n @media (max-width: $small) {\n font-size: 10px;\n }\n }\n\n > div {\n @media (max-width: $medium) {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n }\n @media (max-width: $small) {\n flex-direction: column;\n }\n }\n }\n }\n }\n &__slider {\n width: 60%;\n min-width: 60%;\n max-width: 60%;\n position: relative;\n @media (max-width: $medium) {\n width: 100%;\n display: block;\n min-width: 100%;\n max-width: 100%;\n }\n .color-big-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n @media (max-width: $medium) {\n height: 300px;\n }\n }\n }\n &__white {\n * {\n color: $white;\n }\n h2 {\n color: $white;\n }\n }\n }\n }\n\n .pagination {\n margin: 10px 0px;\n font-size: 16px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n > span {\n margin: 0 3px;\n cursor: pointer;\n min-width: 20px;\n padding: 5px;\n box-shadow: 1px 1px 1px #ccc;\n }\n .current {\n background-color: wheat;\n }\n }\n }\n .categories {\n padding-bottom: 20px;\n margin-bottom: 20px;\n border-bottom: 1px solid #dfdfdf;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n\n &__container {\n display: flex;\n flex-wrap: nowrap;\n gap: 5px 5px;\n overflow-x: auto;\n width: 100%;\n\n @media (max-width: $medium) {\n padding-bottom: 5px;\n }\n }\n &__slide-information {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n span {\n color: $grey;\n font-size: 16px;\n font-weight: normal;\n\n &:first-of-type {\n margin-left: 7px;\n }\n &:last-of-type {\n margin-right: 7px;\n }\n }\n }\n }\n .button,\n a {\n background-color: $white;\n font-size: 16px;\n box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.1);\n\n border-radius: 22px;\n padding: 10px 35px;\n color: $black;\n text-decoration: none;\n display: block;\n text-align: center;\n transition: all 0.7s ease-in-out;\n border: none;\n cursor: pointer;\n\n &:hover {\n color: $white;\n background-color: $black;\n }\n &.brown {\n background-color: $brown;\n color: $white;\n &:hover {\n color: $white;\n background-color: $black;\n }\n }\n &.inverse {\n background-color: $black;\n color: $white;\n &:hover {\n color: $black;\n background-color: $white;\n }\n }\n @media (max-width: $medium) {\n max-width: 150px;\n font-size: 13px;\n padding: 12px 25px;\n }\n @media (max-width: $small) {\n margin: 0 auto;\n }\n }\n > .button {\n margin: 10px auto;\n }\n}\n","import { Component, Method, Element, Prop, Event, EventEmitter, h, State, getAssetPath, Listen, Watch } from '@stencil/core';\nimport { APIURL, ApiService, accessToken } from '../api';\nimport { setDataLayer } from '../../gtmUtils';\nimport { Color, PaginationData, Product, ProductShopRelation } from '../../types';\nimport { fetchCategoryColorsQuery, fetchColorByName, fetchProductColorsQuery, limit } from '../api/services';\nimport { debounce } from '../../utils';\n\ndeclare global {\n interface Window {\n dataLayer: Record<string, any>[];\n }\n}\n\n@Component({\n tag: 'my-modal',\n styleUrl: 'my-modal.scss',\n assetsDirs: ['assets'],\n})\nexport class MyModal {\n private boxDesktopWidth = 130;\n private boxMobileWidth = 70;\n private desktopPadding = 75;\n private mobilePadding = 35;\n private mediumBreakpoint = 1024;\n private colorTimerInterval: ReturnType<typeof setInterval> | undefined;\n\n @Event({ bubbles: true, composed: true }) clearSearchText: EventEmitter;\n @Element() modalEl: HTMLElement;\n\n @Prop() shop: string;\n @Prop() product: string;\n @Prop() baselink: string;\n @Prop() selectedcolor: string | null;\n @Prop() closeImage = 'close.png';\n @Prop() arrowDown = 'arrow_down.png';\n\n @State() chunksNum = 12;\n @State() data: Product | null = null;\n @State() preloader = false;\n @State() loading = false;\n @State() colors: PaginationData<Color> | null = null;\n @State() currentColor: Color | null = null;\n @State() currentIndex: number | null = null;\n @State() infoBoxWidth: number | null = null;\n @State() boxWidth: number = this.boxDesktopWidth; // box width with gap\n @State() padding: number = this.desktopPadding;\n @State() isMobile: boolean = false;\n @State() showRange: boolean = false;\n @State() colorCategories: string[] | null = null;\n @State() selectedCategory: any = null;\n @State() page = 1;\n @State() colorIsSelected = false;\n debouncedSearchColorsHandler: (event: CustomEvent) => void;\n\n constructor() {\n this.debouncedSearchColorsHandler = debounce(this.searchColor.bind(this), 300);\n }\n\n @Watch('chunksNum')\n setInfoBoxWidth(newValue: number) {\n this.infoBoxWidth = newValue * this.boxWidth;\n }\n\n @Watch('data')\n watchPropHandler(newValue: Product) {\n if (newValue.Category.length > 0) {\n this.showRange = true;\n this.handleCategoryClick(newValue.Category[0].Category_id.id);\n } else {\n this.fetchProductColors(String(newValue.id));\n }\n }\n\n private clearInterval = () => {\n this.colorTimerInterval && clearInterval(this.colorTimerInterval);\n this.colorTimerInterval = undefined;\n };\n\n private colorTimer = () => {\n if (this.currentColor && this.currentColor.id) {\n this.colorTimerInterval = setInterval(() => {\n this.currentColor?.name &&\n setDataLayer({\n event: 'ColorTimer',\n shop: this.shop,\n product: this.product,\n color: this.currentColor?.name,\n timer: '10',\n });\n }, 10000);\n } else {\n this.clearInterval();\n }\n };\n\n @Method()\n async open() {\n this.modalEl.style.display = 'block';\n }\n @Event() close: EventEmitter;\n closeModalHandler() {\n this.close.emit();\n }\n\n @Event() readyToCLose: EventEmitter;\n handleReadyToClose(value: boolean) {\n this.readyToCLose.emit({ observable: value });\n }\n\n @Listen('closeInfoBox')\n closeInfoBoxHandler() {\n this.currentColor = null;\n this.currentIndex = null;\n }\n\n private chunks = (xs: Color[], y: Color[][] = []): Color[][] => {\n return xs.length === 0 ? y : this.chunks(xs.slice(this.chunksNum), y.concat([xs.slice(0, this.chunksNum)]));\n };\n\n private calculateBoxCount = () => {\n const modalWidth = this.modalEl.children && this.modalEl.children[0] && this.modalEl.children[0]?.clientWidth - this.padding;\n const boxWidth = this.boxWidth;\n\n const calc = Math.floor(modalWidth / boxWidth);\n\n const boxesCount = calc;\n\n if (!this.preloader) this.chunksNum = boxesCount;\n };\n\n private displayForMobile = () => {\n if (window.innerWidth < this.mediumBreakpoint) {\n this.boxWidth = this.boxMobileWidth;\n this.padding = this.mobilePadding;\n this.isMobile = true;\n } else {\n this.isMobile = false;\n this.boxWidth = this.boxDesktopWidth;\n this.padding = this.desktopPadding;\n }\n };\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n this.calculateBoxCount();\n this.displayForMobile();\n }\n\n private fetchProductData = async () => {\n try {\n const shopResponse = await ApiService.getData(`items/Shop?filter[name][_eq]=${this.shop}`);\n const shop = shopResponse?.data[0];\n if (shop.id) {\n const response = await ApiService.getData(`items/Product?filter[name][_eq]=${this.product}&fields=*,images.*,Shop.*,Category.*.*.*.*`);\n const product = response?.data[0];\n\n if (product) {\n if (product.Shop.find((s: ProductShopRelation) => s.Shop_id === shop.id)) {\n this.data = {\n ...response.data[0],\n id: response.data[0].id,\n };\n } else {\n return null;\n }\n }\n }\n } catch (error) {\n console.error(error);\n } finally {\n this.preloader = false;\n }\n };\n\n private fetchProductColors = async (id: string, page?: number) => {\n this.loading = true;\n\n try {\n const response = await ApiService.getData(`items/Color?${fetchProductColorsQuery(id, page)}`);\n\n if (response) {\n this.colors = {\n list:\n response &&\n response.data &&\n response.data.map((item: Color) => ({\n ...item,\n })),\n pagination: response.meta,\n };\n }\n } catch (error) {\n console.error(error);\n } finally {\n this.loading = false;\n }\n };\n\n private fetchCategoryColors = async (id: number, page?: number) => {\n this.loading = true;\n\n try {\n const response = await ApiService.getData(`items/Color?${fetchCategoryColorsQuery(id, page)}`);\n\n if (response) {\n this.colors = {\n list:\n response &&\n response.data &&\n response.data.map((item: Color) => ({\n ...item,\n })),\n pagination: response.meta,\n };\n }\n } catch (error) {\n console.error(error);\n } finally {\n this.loading = false;\n }\n };\n\n async searchColor(event: CustomEvent) {\n if (event.detail === '') {\n this.fetchProductData();\n this.loading = true;\n } else {\n if (!this.data?.id) {\n return;\n }\n try {\n const response = await ApiService.getData(`items/Color?${fetchColorByName(this.data?.id, event.detail)}`);\n\n if (response) {\n this.colors = {\n list:\n response &&\n response.data &&\n response.data.map((item: Color) => ({\n ...item,\n })),\n pagination: response.meta,\n };\n }\n } catch (error) {\n console.error(error);\n } finally {\n this.loading = false;\n }\n }\n }\n\n @Listen('searchColors')\n searchColorsHandler(event: CustomEvent) {\n this.loading = true;\n this.currentColor = null;\n this.debouncedSearchColorsHandler(event);\n }\n\n private handleCategoryClick = (color?: number) => {\n if (this.selectedCategory && color && this.selectedCategory === color && !this.showRange) {\n this.data && this.fetchProductColors(String(this.data.id));\n this.selectedCategory = null;\n } else {\n color && this.fetchCategoryColors(color);\n this.selectedCategory = color;\n }\n this.currentColor = null;\n this.clearSearchText.emit();\n };\n\n // async searchColorsHandler(event: CustomEvent) {\n // this.loading = true;\n // this.currentColor = null;\n\n // // if search is empty set to first category to not showing whole product colors\n // if (event.detail === '') {\n // this.handleCategoryClick(this.selectedCategory);\n // this.loading = true;\n // }\n\n // try {\n // if (this.data && this.data.id && event.detail !== '') {\n // const response = await ApiService.getData(`items/Color?${fetchColorByNumber(Number(this.selectedCategory), event.detail)}`);\n // if (response) {\n // this.colors = {\n // list:\n // (response &&\n // response.data &&\n // response.data.map((item: Color) => ({\n // ...item,\n // }))) ||\n // [],\n // pagination: response.meta,\n // };\n // }\n // }\n // } catch (error) {\n // console.error(error);\n // } finally {\n // this.loading = false;\n // }\n // }\n private onPage = (page: number) => {\n if (this.data) {\n if (this.selectedCategory) {\n this.fetchCategoryColors(this.selectedCategory, page);\n } else {\n this.fetchProductColors(String(this.data.id), page);\n }\n }\n\n this.page = page;\n this.currentColor = null;\n this.currentIndex = null;\n };\n\n private openSeletedColor() {\n if (!this.colors?.list || !this.selectedcolor) return;\n\n if (!this.colorIsSelected) {\n const result = this.chunks(this.colors.list)\n .map((innerArray, arrayIndex) => {\n const foundColor = innerArray.find(color => color.name.trim()?.toUpperCase() === this.selectedcolor?.trim()?.toUpperCase());\n\n return foundColor ? { color: foundColor, index: arrayIndex } : null;\n })\n .filter(item => item !== null);\n\n this.currentColor = result[0]?.color as any;\n this.currentIndex = result[0]?.index as any;\n this.colorIsSelected = true;\n }\n }\n\n componentWillLoad() {\n this.preloader = true;\n this.fetchProductData();\n setDataLayer({\n shop: this.shop,\n product: this.product,\n });\n }\n\n componentWillRender() {\n this.displayForMobile();\n this.calculateBoxCount();\n this.colorTimer();\n this.openSeletedColor();\n }\n\n render() {\n return (\n <div class={`my-modal`} onMouseEnter={() => this.handleReadyToClose(false)} onMouseLeave={() => this.handleReadyToClose(true)}>\n {this.preloader && (\n <div class={'loader'}>\n <my-loader></my-loader>\n </div>\n )}\n {!this.preloader && this.data && (\n <div class={`my-modal__header`}>\n <div class=\"image-wrapper\">\n <img src={`${APIURL}/assets/${this.data?.modalLogo}?access_token=${accessToken}`} alt=\"modal-logo\" />\n {!this.preloader && this.data && (\n <p class=\"my-modal__see-more\">\n {this.data?.modalDescription}\n {/* <img src={getAssetPath(`./assets/${this.arrowDown}`)} alt=\"arrow_down\" /> */}\n </p>\n )}\n </div>\n <div class=\"search-wrapper\">\n {!this.preloader && <my-search shopname={this.shop} productname={this.data.name} isMobile={this.isMobile}></my-search>}\n {!this.preloader && (\n <button class=\"my-modal__close\" onClick={() => this.closeModalHandler()}>\n <img src={getAssetPath(`./assets/${this.closeImage}`)} alt=\"closebtn\" />\n </button>\n )}\n </div>\n </div>\n )}\n\n {/* {this.showRange && (\n <div class={'categories'}>\n {this.data && <my-search productId={Number(this.data?.id)} isMobile={this.isMobile}></my-search>}\n\n <div class={'categories__container'} style={{ maxWidth: `${this.infoBoxWidth}px` }}>\n {this.data?.Category.map((c: ProductCategoryRelation) => (\n <my-colorbox\n key={c.id}\n onClick={() => this.handleCategoryClick(c.Category_id.id)}\n color={c.Category_id.hex}\n name={c.Category_id.category_name}\n shop={this.shop}\n product={this.product}\n isCategoryActive={this.selectedCategory === c.Category_id.id}\n isImageInsteadHex={{\n isImageInsteadHex: c?.imageInsteadHex || false,\n bigImage: c?.bigImage || '',\n }}\n ></my-colorbox>\n ))}\n </div>\n {this.isMobile && (\n <div class={'categories__slide-information'} style={{ width: `${this.infoBoxWidth}px` }}>\n <span>Przewiń w lewo</span>\n <span>Przewiń w prawo</span>\n </div>\n )}\n </div>\n )} */}\n <div class={'my-modal__wrapper'}>\n {this.loading && <my-loader></my-loader>}\n {!this.loading && this.colors && (\n <div class={'container_boxes'}>\n {this.colors.list.length > 0 ? (\n this.chunks(this.colors.list).map((color: Color[], index: number) => {\n return (\n <div key={index} class=\"boxes\">\n <div class=\"boxes__list\">\n {color.map((c: Color) => (\n <my-colorbox\n key={c.id}\n onClick={() => [\n this.currentColor?.id ? (this.currentColor?.id === c.id ? (this.currentColor = null) : (this.currentColor = c)) : (this.currentColor = c),\n (this.currentIndex = index),\n setDataLayer({\n event: 'ColorClick',\n shop: this.shop,\n product: this.product,\n color: c.name,\n }),\n this.currentColor?.id && this.clearInterval(),\n ]}\n color={c.hex}\n name={c.name}\n isActive={this.currentColor?.id === c.id}\n shop={this.shop}\n product={this.product}\n isImageInsteadHex={{\n isImageInsteadHex: c.imageInsteadHex,\n bigImage: c.bigImage,\n }}\n ></my-colorbox>\n ))}\n </div>\n\n {this.currentColor?.id && index === this.currentIndex && (\n <my-colorinfo\n currentColor={this.currentColor}\n shop={this.shop}\n product={this.product}\n data={this.data}\n isMobile={this.isMobile}\n infoBoxWidth={this.infoBoxWidth}\n baselink={this.baselink}\n ></my-colorinfo>\n )}\n </div>\n );\n })\n ) : (\n <p>Brak wyników</p>\n )}\n {this.colors.pagination.filter_count > limit && (\n <div class={'pagination'}>\n {Array.from({ length: Math.ceil(this.colors.pagination.filter_count / limit) }).map((_, i) => (\n <span\n class={i + 1 === this.page ? 'current' : ''}\n onClick={e => {\n e.preventDefault();\n this.onPage(i + 1);\n }}\n key={`#${i + 1}`}\n >\n {i + 1}\n </span>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n {!this.preloader && this.isMobile && (\n <button class=\"button\" onClick={() => this.closeModalHandler()}>\n Zamknij\n </button>\n )}\n </div>\n );\n }\n}\n","@import '../../global/app.scss';\n\n.search {\n position: relative;\n width: 400px;\n @media (max-width: $small) {\n width: 100%;\n }\n input {\n font-size: 16px;\n padding: 19px;\n border-radius: 27.35px;\n border: 1px solid #dfdfdf;\n width: 100%;\n color: #4c4c4c;\n }\n\n button {\n position: absolute;\n border: none;\n background-color: transparent;\n right: 10px;\n top: 0;\n width: 50px;\n height: calc(100%);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n}\n","import { Component, Prop, h, State, Listen, getAssetPath, EventEmitter, Event, Watch } from '@stencil/core';\nimport { setDataLayer } from '../../gtmUtils';\n\nfunction debounce(func: Function, wait: number) {\n let timeout: ReturnType<typeof setTimeout>;\n return function executedFunction(...args: any[]) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n\n@Component({\n tag: 'my-search',\n styleUrl: 'my-search.scss',\n assetsDirs: ['assets'],\n scoped: true,\n})\nexport class MySearch {\n @Prop() productname: string;\n @Prop() shopname: string;\n @Prop() isMobile: boolean;\n @Prop() searchIcon = 'search.svg';\n @State() searchText: string | null = null;\n @Event() searchColors: EventEmitter;\n\n fetchColorsByName = (text: string) => {\n this.searchColors.emit(text);\n };\n\n private debouncedInputChangeValue = debounce((value: string) => {\n this.fetchColorsByName(value);\n this.searchText = value;\n }, 500);\n\n private onInputChangeValue(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.debouncedInputChangeValue(value);\n }\n\n @Watch('searchText')\n fetchColorsByNameHandle(newValue: string) {\n if (newValue.length >= 3) {\n setDataLayer({\n event: 'ColorSearch',\n shop: this.shopname,\n product: this.productname,\n search_term: newValue,\n });\n }\n\n this.fetchColorsByName(newValue);\n }\n\n @Listen('clearSearchText', { target: 'document' })\n clearSearchTextHandler() {\n this.searchText = null;\n }\n\n render() {\n return (\n <div class={'search'}>\n <input placeholder={this.isMobile ? 'Wyszukaj kolor' : 'Wyszukaj kolor po nazwie'} value={this.searchText || ''} type=\"text\" onInput={this.onInputChangeValue.bind(this)} />\n\n <button\n onClick={() => {\n this.searchText && this.fetchColorsByName(this.searchText);\n\n this.searchText = '';\n }}\n >\n <img src={getAssetPath(`./assets/${this.searchIcon}`)} alt=\"arrow_down\" />\n </button>\n </div>\n );\n }\n}\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf('<li') === 0) toCreate = 'ul';\n if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n if (html.indexOf('<tbody') === 0) toCreate = 'table';\n if (html.indexOf('<option') === 0) toCreate = 'select';\n const tempParent = document.createElement(toCreate);\n tempParent.innerHTML = html;\n\n for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n arr.push(tempParent.childNodes[i]);\n }\n } else {\n arr = qsa(selector.trim(), context || document);\n } // arr = qsa(selector, document);\n\n } else if (selector.nodeType || selector === window || selector === document) {\n arr.push(selector);\n } else if (Array.isArray(selector)) {\n if (selector instanceof Dom7) return selector;\n arr = selector;\n }\n\n return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionStart(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionstart', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionstart', fireCallBack);\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, transitionStart, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","@import '../../../node_modules/swiper/swiper-bundle.min.css';\n@import '../../global/app.scss';\n\n.slider-wrapper {\n width: 100%;\n position: relative;\n height: 100%;\n display: flex;\n max-width: 1100px;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n @media (max-width: $medium) {\n height: 220px;\n }\n\n .swiper {\n margin: 0;\n }\n .swiper-slide img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n .mySwiper2 {\n height: 100%;\n width: 80%;\n position: relative;\n @media (max-width: $medium) {\n width: 100%;\n }\n .swiper-button-prev,\n .swiper-button-next {\n z-index: 20;\n position: absolute;\n bottom: 15px;\n width: 23px;\n top: inherit;\n height: 23px;\n background-color: $white;\n &::after {\n font-size: 11px;\n color: $black;\n font-weight: bold;\n }\n }\n\n .swiper-button-prev {\n right: 40px;\n left: initial;\n }\n }\n .mySwiper {\n width: 20%;\n height: 100%;\n box-sizing: border-box;\n @media (max-width: $medium) {\n display: none;\n }\n .swiper-slide {\n height: 100%;\n cursor: pointer;\n }\n .swiper-slide-thumb-active {\n opacity: 1;\n }\n }\n}\n","import { Component, Prop, Element, h } from '@stencil/core';\nimport Swiper, { Navigation, Controller } from 'swiper';\nimport { setDataLayer } from '../../gtmUtils';\nimport { Image } from '../../types';\nimport { APIURL, accessToken } from '../api';\n\n@Component({\n tag: 'my-slider',\n styleUrl: 'my-slider.scss',\n})\nexport class JcSwiper {\n @Element() modalEl: HTMLElement;\n @Prop() slides: Image[];\n @Prop() shop: string;\n @Prop() product: string;\n @Prop() color: string;\n\n private thumbs: any;\n private swiper2: any;\n\n initSwiper() {\n this.thumbs = new Swiper('.mySwiper', {\n modules: [Navigation, Controller],\n slideToClickedSlide: true,\n loop: true,\n freeMode: true,\n spaceBetween: 5,\n slidesPerView: 3,\n direction: 'vertical',\n touchRatio: 0.2,\n });\n\n this.swiper2 = new Swiper('.mySwiper2', {\n modules: [Navigation, Controller],\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n },\n loop: true,\n loopedSlides: 3,\n });\n\n this.swiper2.controller.control = this.thumbs;\n this.thumbs.controller.control = this.swiper2;\n }\n\n componentDidLoad() {\n this.initSwiper();\n }\n\n update() {\n this.thumbs.update();\n this.swiper2.update();\n }\n\n colorInteraction = () => {\n setDataLayer({\n event: 'ColorInteraction',\n shop: this.shop,\n product: this.product,\n color: this.color,\n });\n };\n\n render() {\n return (\n <div class=\"slider-wrapper\">\n <div class=\"swiper mySwiper2\">\n <div class=\"swiper-wrapper\">\n {this.slides &&\n this.slides.length > 0 &&\n this.slides.map((slide: Image) => (\n <div key={slide.id} class=\"swiper-slide\">\n <img src={`${APIURL}/assets/${slide.directus_files_id}?access_token=${accessToken}`} alt=\"room_image\" />\n </div>\n ))}\n </div>\n {this.slides && this.slides.length >= 2 && (\n <div>\n <div onClick={this.colorInteraction} class=\"swiper-button-next\"></div>\n <div onClick={this.colorInteraction} class=\"swiper-button-prev\"></div>\n </div>\n )}\n </div>\n <div class=\"swiper mySwiper\">\n <div class=\"swiper-wrapper\">\n {this.slides &&\n this.slides.length > 0 &&\n this.slides.map((slide: Image) => (\n <div key={slide.id} class=\"swiper-slide\">\n <img src={`${APIURL}/assets/${slide.directus_files_id}?access_token=${accessToken}`} alt=\"room_image\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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"}