@ppg_pl/tinting 0.0.0 → 0.0.1
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.
- package/README.md +0 -8
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{modal-header_10.cjs.entry.js → modal-header_9.cjs.entry.js} +9 -22
- package/dist/cjs/modal-header_9.cjs.entry.js.map +1 -0
- package/dist/cjs/tinting.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +0 -1
- package/dist/components/index10.js +3921 -9
- package/dist/components/index10.js.map +1 -1
- package/dist/components/my-component.js +9 -15
- package/dist/components/my-component.js.map +1 -1
- package/dist/components/my-modal.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{modal-header_10.entry.js → modal-header_9.entry.js} +10 -22
- package/dist/esm/modal-header_9.entry.js.map +1 -0
- package/dist/esm/tinting.js +1 -1
- package/dist/tinting/{p-06cd865b.entry.js → p-fa35b3ef.entry.js} +3 -3
- package/dist/tinting/p-fa35b3ef.entry.js.map +1 -0
- package/dist/tinting/tinting.esm.js +1 -1
- package/dist/tinting/tinting.esm.js.map +1 -1
- package/dist/types/components.d.ts +0 -13
- package/package.json +1 -1
- package/www/build/{p-06cd865b.entry.js → p-fa35b3ef.entry.js} +3 -3
- package/www/build/p-fa35b3ef.entry.js.map +1 -0
- package/www/build/tinting.esm.js +1 -1
- package/www/build/tinting.esm.js.map +1 -1
- package/www/index.html +1 -1
- package/dist/cjs/modal-header_10.cjs.entry.js.map +0 -1
- package/dist/collection/components/loader/index.css +0 -85
- package/dist/collection/components/loader/index.js +0 -19
- package/dist/collection/components/loader/index.js.map +0 -1
- package/dist/components/index11.js +0 -3949
- package/dist/components/index11.js.map +0 -1
- package/dist/components/my-loader.d.ts +0 -11
- package/dist/components/my-loader.js +0 -8
- package/dist/components/my-loader.js.map +0 -1
- package/dist/esm/modal-header_10.entry.js.map +0 -1
- package/dist/tinting/p-06cd865b.entry.js.map +0 -1
- package/dist/types/components/loader/index.d.ts +0 -3
- package/www/build/p-06cd865b.entry.js.map +0 -1
- package/www/build/p-a4907f5e.css +0 -4
- package/www/build/p-e2322b6c.js +0 -163
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["type$1","TypeError","hasMap","Map","prototype","mapSizeDescriptor","Object","getOwnPropertyDescriptor","mapSize","get","mapForEach","forEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","hasWeakMap","WeakMap","weakMapHas","has","hasWeakSet","WeakSet","weakSetHas","hasWeakRef","WeakRef","weakRefDeref","deref","booleanValueOf","Boolean","valueOf","objectToString","toString","functionToString","Function","$match","String","match","$slice","slice","$replace","replace","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","RegExp","test","$concat","Array","concat","$join","join","$arrSlice","$floor","Math","floor","bigIntValueOf","BigInt","gOPS","getOwnPropertySymbols","symToString","Symbol","iterator","hasShammedSymbols","toStringTag","isEnumerable","propertyIsEnumerable","gPO","Reflect","getPrototypeOf","__proto__","O","addNumericSeparator","num","str","Infinity","call","sepRegex","int","intStr","dec","length","inspectCustom","utilInspect","custom","inspectSymbol","isSymbol","quotes","double","single","quoteREs","objectInspect","inspect_","obj","options","depth","seen","opts","quoteStyle","maxStringLength","customInspect","indent","parseInt","numericSeparator","inspectString","bigIntStr","maxDepth","isArray","getIndent","indexOf","inspect","value","from","noIndent","push","newOpts","isRegExp","name","nameOf","keys","arrObjKeys","symString","markBoxed","isElement","s","nodeName","attrs","attributes","i","wrapQuotes","quote","childNodes","xs","singleLineValues","indentedJoin","isError","parts","Error","cause","isMap","mapParts","key","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","Number","isBigInt","isBoolean","isString","window","globalThis","global","isDate","ys","isPlainObject","constructor","protoTag","stringTag","toStr","constructorTag","tag","defaultStyle","style","quoteChar","canTrustToString","e","hasOwn","hasOwnProperty","this","f","m","x","l","HTMLElement","getAttribute","remaining","trailer","quoteRE","lastIndex","lowbyte","c","n","charCodeAt","type","size","entries","joinedEntries","baseIndent","base","prev","lineJoiner","isArr","syms","symMap","k","j","listGetNode","list","isDelete","curr","next","listGet","objects","undefined","node","listSet","listHas","listDelete","sideChannelList","getSideChannelList","$o","channel","assert","$TypeError","delete","root","deletedNode","set","esObjectAtoms","esErrors","_eval","EvalError","range","RangeError","ref","ReferenceError","syntax","SyntaxError","uri","URIError","abs$2","abs","floor$4","max$6","max","min$5","min","pow$7","pow","round$6","round","_isNaN","isNaN","a","sign","number","$isNaN","gOPD","$gOPD","require$$0","gopd","$defineProperty","defineProperty","esDefineProperty","shams","hasSymbols","sym","symObj","symVal","_","getOwnPropertyNames","descriptor","enumerable","origSymbol","hasSymbols$1","hasNativeSymbols","hasSymbolSham","Reflect_getPrototypeOf","Object_getPrototypeOf","$Object","ERROR_MESSAGE","funcType","concatty","b","arr","slicy","arrLike","offset","joiny","joiner","implementation","bind","that","target","apply","args","arguments","bound","binder","result","boundLength","boundArgs","Empty","functionBind","functionCall","functionApply","reflectApply","actualApply","$reflectApply","$call","$apply","callBindApplyHelpers","callBindBasic","$actualApply","hasProtoAccessor","code","desc","$getPrototypeOf","callBind","getDunder","getProto","reflectGetProto","originalGetProto","getDunderProto","$hasOwn","hasown","$Function","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt64Array","BigUint64Array","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","$Error","eval","$EvalError","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","JSON","parseFloat","Promise","Proxy","$RangeError","$ReferenceError","SharedArrayBuffer","$SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","$URIError","$ObjectGPO","$ReflectGPO","doEval","fn","gen","LEGACY_ALIASES","$spliceApply","splice","$strSlice","$exec","exec","rePropName","reEscapeChar","stringToPath","string","first","last","subString","getBaseIntrinsic","allowMissing","intrinsicName","alias","getIntrinsic","GetIntrinsic","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","part","$indexOf","callBound","callBoundIntrinsic","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","sideChannelMap","getSideChannelMap","$m","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","sideChannelWeakmap","getSideChannelWeakMap","$wm","makeChannel","sideChannel","getSideChannel","$channelData","percentTwenties","Format","RFC1738","RFC3986","formats","default","formatters","hexTable","array","compactQueue","queue","item","pop","prop","compacted","arrayToObject","source","plainObjects","merge","allowPrototypes","mergeTarget","targetItem","reduce","acc","assign","assignSingleSource","decode","defaultDecoder","charset","strWithoutPlus","unescape","limit","encode","defaultEncoder","kind","format","escape","$0","out","segment","charAt","compact","o","refs","val","isBuffer","combine","maybeMap","mapped","utils","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","addQueryPrefix","allowDots","allowEmptyArrays","arrayFormat","charsetSentinel","commaRoundTrip","delimiter","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","strictNullHandling","isNonNullishPrimitive","v","sentinel","stringify","object","generateArrayPrefix","sort","tmpSc","step","findFlag","pos","keyValue","values","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","stringify_1","joined","allowSparse","arrayLimit","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","strictDepth","throwOnLimitExceeded","numberStr","fromCharCode","parseArrayValue","currentArrayLength","split","isoSentinel","parseValues","parseQueryStringValues","cleanStr","skipIndex","bracketEqualsPos","encodedVal","existing","parseObject","chain","valuesParsed","parentKey","leaf","cleanRoot","decodedRoot","index","parseKeys","parseQueryStringKeys","givenKey","child","parent","normalizeParseOptions","parse","tempObj","newObj","lib","APIURL","accessToken","API","async","ep","request","fetch","method","headers","Authorization","response","json","error","console","ApiService","fetchColorsQuery","filters","sortByHex","restFilters","__rest","qs","fields","_and","id","Products","Product_id","_eq","sampleId","Samples","Sample_id","colorNumber","_contains","colorName","_icontains","colorFamily","meta","page","fetchColors","query","getData","data","fetchSamplesColors","fetchProductData","shopResponse","shopName","shop","_a","productName","product","_b","productSamples","Shop","some","Shop_id","fetchColorFamilies","_c","choices","updateFilters","newFilter","indexCss","ModalHeader","handleClose","closeModal","emit","handleLogoClick","onLogoClick","handleReset","onResetCategory","handleSampleSelect","event","sampleSelected","detail","sortColorFamiliesByHex","families","hexToRgb","hex","r","substring","g","color","colorFamilies","adjustBrightness","percent","getGradientFromHex","lighter","darker","selectColorFamily","selectedColorFamily","colorFamilySelected","componentWillLoad","render","h","class","modalLogo","onClick","src","alt","modalName","modalDescription","map","family","backgroundImage","text","shopname","productname","isMobile","onOnReset","onSelectValue","placeholder","getAssetPath","closeImage","MyBackdrop","setDataLayer","dataLayer","MyColorBox","colorCheck","checkTimeout","setTimeout","colorUnCheck","clearTimeout","darkenColor","red","green","blue","onMouseEnter","onMouseLeave","isActive","isCategoryActive","backgroundSize","isImageInsteadHex","bigImage","background","border","MyColorInfo","goToProduct","onCurrentColor","currentColor","closeInfoBox","onCloseButtonClick","renderSliderOrImage","imageInsteadHex","slides","images","capitalizeFirstLetter","toLocaleLowerCase","textWhite","maxWidth","infoBoxWidth","buttonInverse","isObject","hasAttributes","vattrs","requiredAttrs","every","isTextNode","vtext","nodeType","ownerDocument","isElementArray","createElement","vtag","vchildren","document","createTextNode","element","setAttribute","appendChild","shouldApplyToHead","applyToHead","head","replaceChild","hasChildren","getFirstChild","firstChild","title","querySelector","namePropKey","property","namePropValue","existingElement","link","_head","script","template","noscript","types","headExists","validTagNames","RenderTypes","isValidNode","renderNode","Helmet","_props","children","rendered","MyModalBundle","show","setReadyToCloseHandler","readyToClose","observable","closeModalHandler","handleSelectedColor","onSelectedColor","content","baselink","selectedcolor","colorname","height","width","display","visibility","debounce","func","wait","timeout","executedFunction","later","low","high","clip_rgb","rgb","_clipped","_unclipped","classToType","unpack","keyOrder","PI","rnd2","rnd3","TWOPI","PITHIRD","DEG2RAD","RAD2DEG","reverse3","reverse","input","autodetect","Color","me","mode","_input","sorted","p","chk","_rgb","version","chroma","w3cx11","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","laserlemon","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrod","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","maroon2","maroon3","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","purple2","purple3","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RE_HEX","RE_HEXA","hex2rgb","substr","u","rgb2hex","hxa","named","rest","alpha","mutate","clipped","labConstants","Kn","labWhitePoint","Xn","Yn","Zn","t0","t1","t2","t3","kE","kKE","kK","RefWhiteRGB","X","Y","Z","MtxRGB2XYZ","m00","m01","m02","m10","m11","m12","m20","m21","m22","MtxXYZ2RGB","As","Bs","Cs","MtxAdaptMa","MtxAdaptMaI","ILLUMINANTS","setLabWhitePoint","ill","getLabWhitePoint","lab2rgb","L","y","z","lab2xyz","b_","xyz2rgb","LAB_CONSTANTS","fy","fx","fz","fx3","fz3","xr","yr","zr","compand","linear","Ad","Bd","Cd","X1","Y1","Z1","X2","Y2","Z2","rgb2lab","rgb2xyz","xyz2lab","gammaAdjustSRGB","companded","lab","darken","amount","brighten","brighter","mc","EPS","MAX_ITER","luminance","lum","cur_lum","max_iter","mid","interpolate","lm","rgb2luminance","luminance_x","index$1","mix","col1","col2","interpolator","premultiply","sin","cos","lch2lab","lch2rgb","hcl2rgb","hcl","sqrt","atan2","lab2lch","NaN","rgb2lch","lch","saturate","desaturate","tint","shade","xyz0","xyz1","lrgb","x1","y1","z1","x2","y2","z2","interpolate_hsx","hsl","hsv","hcg","hsi","oklch","hue0","hue1","sat0","sat1","lbv0","lbv1","sat","hue","lbv","dh","num2rgb","rgb2num","c1","c2","hcg2rgb","_g","q","t","rgb2hcg","minRgb","maxRgb","delta","hsi2rgb","acos","rgb2hsi","min_","hsl2rgb","h_","rgb2hsl","hsv2rgb","max_","rgb2hsv","multiplyMatrices","A","B","B_cols","row","col","oklab2rgb","OKLab_to_XYZ","OKLab","LMStoXYZ","OKLabtoLMS","LMSnl","rgb2oklab","xyz","oklab","XYZ_to_OKLab","XYZ","XYZtoLMS","LMStoOKLab","LMS","cbrt","average","colors","weights","w","_average_lrgb","shift","cnt","dx","dy","ci","xyz2","scale","_mode","_nacol","_spread","_domain","_pos","_padding","_classes","_colors","_out","_min","_max","_correctLightness","_colorCache","_useCache","_gamma","setColors","brewer","resetCache","getClass","tMapLightness","tMapDomain","getColor","bypassMap","classes","d","analyze","limits","domain","tOut","tBreaks","_m","_o","spread","correctLightness","L0","L1","pol","L_actual","L_ideal","L_diff","padding","numColors","dm","dd","__range__","samples","end","asc","cache","gamma","nodata","left","right","inclusive","ascending","binom_row","newrow","bezier","I","lab0","lab1","lab2","lab3","labs","sum","el","bezier$1","rnd","rgba","blend","bottom","top","blend_f","c0","each","normal","multiply","lighten","screen","overlay","burn","dodge","cubehelix","start","rotations","lightness","dl","fract","amp","cos_a","sin_a","digits","random","random$1","log","MAX_VALUE","count","min_log","LOG10E","max_log","pb","pr","cluster","assignments","clusterSizes","nb_iters","centroids","mindist","best","dist","newCentroids","kClusters","tmpKMeansBreaks","contrast","l1","l2","W_offset","P_in","P_out","R_scale","B_threshold","B_exp","contrastAPCA","bg","l_text","l_bg","Y_text","Y_bg","S_norm","S_rev","C","S_apc","exp","deltaE","Kl","Kc","Kh","rad2deg","rad","deg2rad","deg","a1","b1","L2","a2","b2","avgL","C1","C2","avgC","G","a1p","a2p","C1p","C2p","avgCp","arctan1","arctan2","h1p","h2p","avgHp","T","deltaHp","deltaL","deltaCp","sl","sc","sh","deltaTheta","Rc","Rt","distance","sum_sq","valid","scales","cool","hot","colorbrewer","OrRd","PuBu","BuPu","Oranges","BuGn","YlOrBr","YlGn","Reds","RdPu","Greens","YlGnBu","Purples","GnBu","Greys","YlOrRd","PuRd","Blues","PuBuGn","Viridis","Spectral","RdYlGn","RdBu","PiYG","PRGn","RdYlBu","BrBG","RdGy","PuOr","Set2","Accent","Set1","Set3","Dark2","Paired","Pastel2","Pastel1","colorbrewerTypes","typeMap","colorbrewerProxy","lower","cmyk2rgb","rgb2cmyk","cmyk","hsl2css","hsla","lab2css","laba","lch2css","lcha","oklab2css","rgb2oklch","oklch2css","rgb2css","prevWhitePoint","cssColor","oklch2rgb","INT_OR_PCT","FLOAT_OR_PCT","PCT","RE_S","SEP","COMMA","ANLGE","ALPHA","RE_RGB","RE_RGB_LEGACY","RE_RGBA_LEGACY","RE_HSL","RE_HSL_LEGACY","RE_HSLA_LEGACY","RE_LAB","RE_LCH","RE_OKLAB","RE_OKLCH","roundRGB","percentToAbsolute","pct","signed","endsWith","noneToValue","noneValue","css2rgb","css","trim","wp","gl","temperature2rgb","kelvin","temp","rgb2temperature","minTemp","maxTemp","eps","temperature","Modal","hostRef","boxDesktopWidth","boxMobileWidth","desktopPadding","mobilePadding","mediumBreakpoint","clearInterval","colorTimerInterval","colorTimer","setInterval","timer","chunks","chunksNum","calculateBoxCount","modalWidth","modalEl","clientWidth","boxWidth","calc","boxesCount","preloader","displayForMobile","innerWidth","selectedSample","selectedCategory","updateFilterAndFetch","productId","debouncedSearchColorsHandler","searchColor","setInfoBoxWidth","newValue","watchPropHandler","fetchColorsData","close","handleReadyToClose","readyToCLose","closeInfoBoxHandler","currentIndex","handleEmitColor","onSelectedColorEmit","handleResize","sortColorsBySimilarity","sortedColors","remainingColors","lastColor","mostSimilarIndex","minDistance","getColorHueGroup","saturation","sortColorsByHueAndSimilarity","colorGroups","other","group","sortedGroups","groupOrder","groupName","flat","reset","loading","colorsList","hasMore","newFilters","finally","handleColorFamilySelected","searchColorsHandler","handleScroll","_event","modalContent","scrollTop","scrollHeight","clientHeight","loadMoreColors","openSeletedColor","colorIsSelected","innerArray","arrayIndex","foundColor","find","loadProductData","componentWillRender","addEventListener","resetColors","resetAllFilters","clearSearchText","resetSelectedCategory","onCloseModal","onSampleSelected","onOnLogoClick","onOnResetCategory","MySearch","fetchColorsByName","searchColors","debouncedInputChangeValue","searchText","onInputChangeValue","fetchColorsByNameHandle","search_term","clearSearchTextHandler","onInput","searchIcon","MySelect","defaultOption","debouncedSearch","optionsWithDefault","filteredOptions","option","includes","inputValueChange","handleClickOutside","contains","showDropdown","onReset","componentDidLoad","disconnectedCallback","removeEventListener","handleInput","selectOption","selectedValue","selectValue","toggleDropdown","updateOptions","newOptions","onFocus","extend","ssrDocument","body","activeElement","blur","querySelectorAll","getElementById","createEvent","initEvent","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","getWindow","win","makeReactive","proto","Dom7","items","super","arrayFlat","res","arrayFilter","arrayUnique","uniqueArray","qsa","selector","context","$","html","toCreate","tempParent","innerHTML","addClass","classNames","classList","add","removeClass","remove","toggleClass","className","toggle","hasClass","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","scrollY","scrollLeft","scrollX","props","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","writable","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","easeProgress","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","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","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","ceil","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","previousTranslate","newProgress","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","transitionStart","slideTo","initial","indexAsNumber","isValidNumber","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","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","path","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","touchAngle","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","move","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","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","module","installModule","prototypeGroup","protoMethod","use","createElementIfNotDefined","checkProps","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","$nextEl","$prevEl","getEl","toggleEl","disabled","tagName","onPrevClick","onNextClick","_s","targetEl","pagination","clickable","isHidden","Controller","controller","control","inverse","by","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","JcSwiper","colorInteraction","initSwiper","thumbs","swiper2","directus_files_id"],"sources":["./node_modules/es-errors/type.js","./node_modules/object-inspect/index.js","./node_modules/side-channel-list/index.js","./node_modules/es-object-atoms/index.js","./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/uri.js","./node_modules/math-intrinsics/abs.js","./node_modules/math-intrinsics/floor.js","./node_modules/math-intrinsics/max.js","./node_modules/math-intrinsics/min.js","./node_modules/math-intrinsics/pow.js","./node_modules/math-intrinsics/round.js","./node_modules/math-intrinsics/isNaN.js","./node_modules/math-intrinsics/sign.js","./node_modules/gopd/gOPD.js","./node_modules/gopd/index.js","./node_modules/es-define-property/index.js","./node_modules/has-symbols/shams.js","./node_modules/has-symbols/index.js","./node_modules/get-proto/Reflect.getPrototypeOf.js","./node_modules/get-proto/Object.getPrototypeOf.js","./node_modules/function-bind/implementation.js","./node_modules/function-bind/index.js","./node_modules/call-bind-apply-helpers/functionCall.js","./node_modules/call-bind-apply-helpers/functionApply.js","./node_modules/call-bind-apply-helpers/reflectApply.js","./node_modules/call-bind-apply-helpers/actualApply.js","./node_modules/call-bind-apply-helpers/index.js","./node_modules/dunder-proto/get.js","./node_modules/get-proto/index.js","./node_modules/hasown/index.js","./node_modules/get-intrinsic/index.js","./node_modules/call-bound/index.js","./node_modules/side-channel-map/index.js","./node_modules/side-channel-weakmap/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/index.ts","./src/components/api/services.ts","./src/components/header/index.scss?tag=modal-header","./src/components/header/index.tsx","./src/components/backdrop/index.scss?tag=my-backdrop","./src/components/backdrop/index.tsx","./src/gtmUtils.ts","./src/components/colorbox/index.scss?tag=my-colorbox","./src/components/colorbox/index.tsx","./src/components/colorinfo/index.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/component/index.scss?tag=my-component&encapsulation=scoped","./src/components/component/index.tsx","./src/utils/index.ts","./node_modules/chroma-js/src/utils/limit.js","./node_modules/chroma-js/src/utils/clip_rgb.js","./node_modules/chroma-js/src/utils/type.js","./node_modules/chroma-js/src/utils/unpack.js","./node_modules/chroma-js/src/utils/last.js","./node_modules/chroma-js/src/utils/index.js","./node_modules/chroma-js/src/io/input.js","./node_modules/chroma-js/src/Color.js","./node_modules/chroma-js/src/version.js","./node_modules/chroma-js/src/chroma.js","./node_modules/chroma-js/src/colors/w3cx11.js","./node_modules/chroma-js/src/io/hex/hex2rgb.js","./node_modules/chroma-js/src/io/hex/rgb2hex.js","./node_modules/chroma-js/src/io/named/index.js","./node_modules/chroma-js/src/ops/alpha.js","./node_modules/chroma-js/src/ops/clipped.js","./node_modules/chroma-js/src/io/lab/lab-constants.js","./node_modules/chroma-js/src/io/lab/lab2rgb.js","./node_modules/chroma-js/src/io/lab/rgb2lab.js","./node_modules/chroma-js/src/io/lab/index.js","./node_modules/chroma-js/src/ops/darken.js","./node_modules/chroma-js/src/ops/get.js","./node_modules/chroma-js/src/ops/luminance.js","./node_modules/chroma-js/src/interpolator/index.js","./node_modules/chroma-js/src/generator/mix.js","./node_modules/chroma-js/src/ops/mix.js","./node_modules/chroma-js/src/ops/premultiply.js","./node_modules/chroma-js/src/io/lch/lch2lab.js","./node_modules/chroma-js/src/io/lch/lch2rgb.js","./node_modules/chroma-js/src/io/lch/hcl2rgb.js","./node_modules/chroma-js/src/io/lch/lab2lch.js","./node_modules/chroma-js/src/io/lch/rgb2lch.js","./node_modules/chroma-js/src/io/lch/index.js","./node_modules/chroma-js/src/ops/saturate.js","./node_modules/chroma-js/src/ops/set.js","./node_modules/chroma-js/src/ops/shade.js","./node_modules/chroma-js/src/interpolator/rgb.js","./node_modules/chroma-js/src/interpolator/lrgb.js","./node_modules/chroma-js/src/interpolator/lab.js","./node_modules/chroma-js/src/interpolator/_hsx.js","./node_modules/chroma-js/src/interpolator/lch.js","./node_modules/chroma-js/src/io/num/num2rgb.js","./node_modules/chroma-js/src/io/num/rgb2num.js","./node_modules/chroma-js/src/io/num/index.js","./node_modules/chroma-js/src/interpolator/num.js","./node_modules/chroma-js/src/io/hcg/hcg2rgb.js","./node_modules/chroma-js/src/io/hcg/rgb2hcg.js","./node_modules/chroma-js/src/io/hcg/index.js","./node_modules/chroma-js/src/interpolator/hcg.js","./node_modules/chroma-js/src/io/hsi/hsi2rgb.js","./node_modules/chroma-js/src/io/hsi/rgb2hsi.js","./node_modules/chroma-js/src/io/hsi/index.js","./node_modules/chroma-js/src/interpolator/hsi.js","./node_modules/chroma-js/src/io/hsl/hsl2rgb.js","./node_modules/chroma-js/src/io/hsl/rgb2hsl.js","./node_modules/chroma-js/src/io/hsl/index.js","./node_modules/chroma-js/src/interpolator/hsl.js","./node_modules/chroma-js/src/io/hsv/hsv2rgb.js","./node_modules/chroma-js/src/io/hsv/rgb2hsv.js","./node_modules/chroma-js/src/io/hsv/index.js","./node_modules/chroma-js/src/interpolator/hsv.js","./node_modules/chroma-js/src/utils/multiply-matrices.js","./node_modules/chroma-js/src/io/oklab/oklab2rgb.js","./node_modules/chroma-js/src/io/oklab/rgb2oklab.js","./node_modules/chroma-js/src/io/oklab/index.js","./node_modules/chroma-js/src/interpolator/oklab.js","./node_modules/chroma-js/src/interpolator/oklch.js","./node_modules/chroma-js/src/generator/average.js","./node_modules/chroma-js/src/generator/scale.js","./node_modules/chroma-js/src/generator/bezier.js","./node_modules/chroma-js/src/io/rgb/index.js","./node_modules/chroma-js/src/generator/blend.js","./node_modules/chroma-js/src/generator/cubehelix.js","./node_modules/chroma-js/src/generator/random.js","./node_modules/chroma-js/src/utils/analyze.js","./node_modules/chroma-js/src/utils/contrast.js","./node_modules/chroma-js/src/utils/contrastAPCA.js","./node_modules/chroma-js/src/utils/delta-e.js","./node_modules/chroma-js/src/utils/distance.js","./node_modules/chroma-js/src/utils/valid.js","./node_modules/chroma-js/src/utils/scales.js","./node_modules/chroma-js/src/colors/colorbrewer.js","./node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js","./node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js","./node_modules/chroma-js/src/io/cmyk/index.js","./node_modules/chroma-js/src/io/css/hsl2css.js","./node_modules/chroma-js/src/io/css/lab2css.js","./node_modules/chroma-js/src/io/css/lch2css.js","./node_modules/chroma-js/src/io/css/oklab2css.js","./node_modules/chroma-js/src/io/oklch/rgb2oklch.js","./node_modules/chroma-js/src/io/css/oklch2css.js","./node_modules/chroma-js/src/io/css/rgb2css.js","./node_modules/chroma-js/src/io/oklch/oklch2rgb.js","./node_modules/chroma-js/src/io/css/css2rgb.js","./node_modules/chroma-js/src/io/css/index.js","./node_modules/chroma-js/src/io/gl/index.js","./node_modules/chroma-js/src/io/hex/index.js","./node_modules/chroma-js/src/io/temp/temperature2rgb.js","./node_modules/chroma-js/src/io/temp/rgb2temperature.js","./node_modules/chroma-js/src/io/temp/index.js","./node_modules/chroma-js/src/io/oklch/index.js","./node_modules/chroma-js/index.js","./src/components/modal/index.scss?tag=my-modal","./src/components/modal/index.tsx","./src/components/search/index.scss?tag=my-search&encapsulation=scoped","./src/components/search/index.tsx","./src/components/select/index.scss?tag=my-select&encapsulation=scoped","./src/components/select/index.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/slider/index.scss?tag=my-slider","./src/components/slider/index.tsx"],"sourcesContent":["'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\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\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\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 (\n (typeof globalThis !== 'undefined' && obj === globalThis)\n || (typeof global !== 'undefined' && obj === global)\n ) {\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 style = opts.quoteStyle || defaultStyle;\n var quoteChar = quotes[style];\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(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 var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n quoteRE.lastIndex = 0;\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, quoteRE, '\\\\$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 inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\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.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').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('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // 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('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {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\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\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$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\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('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\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\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || 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\n/** @type {import('./shams')} */\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\t/** @type {{ [k in symbol]?: unknown }} */\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 (var _ 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\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (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\n/** @type {import('.')} */\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\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\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\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\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 $Object = require('es-object-atoms');\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 abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\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 = require('gopd');\nvar $defineProperty = require('es-define-property');\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')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\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'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\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'%Object.getOwnPropertyDescriptor%': $gOPD,\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\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\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($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($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\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t// eslint-disable-next-line no-extra-parens\n\tvar intrinsic = /** @type {Parameters<typeof callBindBasic>[0][0]} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic([intrinsic]);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {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\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {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\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\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 ? { __proto__: 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' && typeof source !== 'function') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if (\n (options && (options.plainObjects || options.allowPrototypes))\n || !has.call(Object.prototype, source)\n ) {\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, defaultDecoder, 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 commaRoundTrip: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n filter: void undefined,\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 ? String(prefix).replace(/\\./g, '%2E') : String(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' && key && typeof key.value !== 'undefined'\n ? key.value\n : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(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 var value = obj[key];\n\n if (options.skipNulls && value === null) {\n continue;\n }\n pushToArray(keys, stringify(\n value,\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('✓'), 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 strictDepth: false,\n strictNullHandling: false,\n throwOnLimitExceeded: 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, currentArrayLength) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\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('✓')\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 cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(\n options.delimiter,\n options.throwOnLimitExceeded ? limit + 1 : limit\n );\n\n if (options.throwOnLimitExceeded && parts.length > limit) {\n throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n }\n\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;\n var 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\n val = utils.maybeMap(\n parseArrayValue(\n part.slice(pos + 1),\n options,\n isArray(obj[key]) ? obj[key].length : 0\n ),\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(String(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 currentArrayLength = 0;\n if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n var parentKey = chain.slice(0, -1).join('');\n currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n }\n\n var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\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 === '' || (options.strictNullHandling && leaf === null))\n ? []\n : utils.combine([], leaf);\n } else {\n obj = options.plainObjects ? { __proto__: 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, check strictDepth option for throw, else just add whatever is left\n\n if (segment) {\n if (options.strictDepth === true) {\n throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n }\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\n if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n }\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 strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\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 ? { __proto__: null } : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? { __proto__: 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","export const APIURL = 'https://color-selector.pl/tinting'; // 'https://color-selector.pl/tinting'; // 'http://localhost:8056'; //'https://pallete-colors-backend.herokuapp.com';\nexport const accessToken = 'f3_Pwse3EwxFKucDNtPBq-6iBB30L6Gv'; //'jVle5YFcJQmyVhYPVBg_V7gg1qS920Pu'; // 'f3_Pwse3EwxFKucDNtPBq-6iBB30L6Gv';\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 qs from 'qs';\nimport { ApiService } from '.';\nimport { ProductShopRelation } from '../../types';\n\nexport const limit = 200;\n\nexport const fetchColorsQuery = (filters: Record<string, any>) => {\n const { sortByHex, ...restFilters } = filters;\n\n return qs.stringify(\n {\n fields: ['*', 'Products.*', 'Samples.*'].join(','),\n filter: {\n _and: [\n ...(restFilters.id ? [{ Products: { Product_id: { _eq: restFilters.id } } }] : []),\n ...(restFilters.sampleId ? [{ Samples: { Sample_id: { _eq: restFilters.sampleId } } }] : []),\n ...(restFilters.colorNumber ? [{ number: { _contains: restFilters.colorNumber } }] : []),\n ...(restFilters.colorName ? [{ name: { _icontains: restFilters.colorName } }] : []),\n ...(restFilters.colorFamily ? [{ colorFamily: { _eq: restFilters.colorFamily } }] : []),\n ],\n },\n sort: sortByHex === 'desc' ? '-hex' : sortByHex === 'asc' ? 'hex' : undefined,\n meta: '*',\n page: restFilters.page !== undefined ? restFilters.page : 1,\n limit: restFilters.colorName ? 200 : limit,\n },\n { encodeValuesOnly: true },\n );\n};\n\nexport const fetchColors = async (filters: Record<string, any>) => {\n try {\n const query = fetchColorsQuery({ ...filters, sortByHex: 'desc' });\n const response = await ApiService.getData(`items/Color?${query}`);\n return response?.data || [];\n } catch (error) {\n console.error('Error fetching colors:', error);\n return [];\n }\n};\n\nexport const fetchSamplesColors = async (filters: Record<string, any>) => {\n try {\n const response = await ApiService.getData(`items/Sample?${fetchColorsQuery({ ...filters })}`);\n return response?.data || [];\n } catch (error) {\n console.error('Error fetching samples colors:', error);\n return [];\n }\n};\n\nexport const fetchProductData = async (filters: Record<string, any>) => {\n try {\n // Fetch shop details\n const shopResponse = await ApiService.getData(`items/Shop?filter[name][_eq]=${filters.shopName}`);\n const shop = shopResponse?.data?.[0];\n\n if (!shop?.id) {\n console.error('Shop not found');\n return null;\n }\n\n // Fetch product details\n const response = await ApiService.getData(`items/Product?filter[name][_eq]=${filters.productName}&fields=*,images.*,Shop.*,Category.*.*.*.*`);\n const product = response?.data?.[0];\n\n // fetch product samples\n const productSamples = await fetchSamplesColors({ id: product.id, page: 0 });\n\n if (product && product.Shop.some((s: ProductShopRelation) => s.Shop_id === shop.id)) {\n return { ...product, id: product.id, productSamples };\n }\n\n console.error('Product not found or does not belong to the shop');\n return null;\n } catch (error) {\n console.error('Error fetching product data:', error);\n return null;\n }\n};\n\nexport const fetchColorFamilies = async () => {\n try {\n const response = await ApiService.getData(`fields/Color/colorFamily`);\n\n return response?.data?.meta?.options?.choices || [];\n } catch (error) {\n console.error('Error fetching color families:', error);\n return [];\n }\n};\n\nexport const updateFilters = (filters: Record<string, any>, newFilter: Record<string, any>) => {\n return { ...filters, ...newFilter };\n};\n","@import '../../global/app.scss';\n\n.my-modal__header {\n display: flex;\n justify-content: flex-start;\n flex-direction: column;\n\n margin-bottom: 16px;\n @media (max-width: 905px) {\n overflow-x: auto;\n }\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 display: flex;\n margin-bottom: 17px;\n\n @media (max-width: $small) {\n margin-bottom: 12px;\n }\n .modal-header__logo {\n max-width: 400px;\n position: relative;\n max-height: 130px;\n cursor: pointer;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n @media (max-width: $small) {\n max-width: 200px;\n }\n }\n }\n .my-modal__see-more {\n margin-bottom: 16px;\n text-align: left;\n }\n .search-wrapper {\n display: flex;\n align-items: center;\n justify-content: space-between;\n align-items: flex-end;\n gap: 55px;\n align-items: center;\n\n @media (max-width: $medium) {\n justify-content: center;\n width: 92%;\n margin: 0 auto;\n gap: 21px;\n }\n\n @media (max-width: $small) {\n flex-wrap: wrap;\n }\n .color-families {\n display: flex;\n gap: 5px;\n flex-wrap: wrap;\n max-width: 100%;\n overflow-x: auto; // fallback scroll\n padding-bottom: 5px; // spacing for scrollbar if it shows\n scrollbar-width: thin;\n scrollbar-color: #aaa transparent;\n flex-wrap: wrap;\n\n // Optional: hide scrollbar in Webkit\n &::-webkit-scrollbar {\n height: 6px;\n }\n &::-webkit-scrollbar-thumb {\n background-color: #aaa;\n border-radius: 3px;\n }\n\n @media (max-width: $medium) {\n flex-wrap: nowrap;\n }\n\n .color-family {\n flex: 0 0 auto;\n width: 125px;\n height: 125px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n position: relative;\n cursor: pointer;\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n\n &:hover {\n transform: scale(0.93);\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15), 0 4px 8px rgba(0, 0, 0, 0.1);\n }\n\n &.active {\n transform: scale(0.93);\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15), 0 4px 8px rgba(0, 0, 0, 0.1);\n }\n\n @media (max-width: $medium) {\n width: 90px;\n height: 90px;\n font-size: 12px;\n }\n div {\n width: 100%;\n height: 100%;\n cursor: pointer;\n font-size: 15px;\n z-index: -1;\n opacity: 65%;\n position: absolute;\n }\n }\n }\n .search-container {\n display: flex;\n align-items: baseline;\n\n .filters {\n display: flex;\n flex-direction: column;\n gap: 10px;\n @media (max-width: $medium) {\n width: 100%;\n }\n }\n\n @media (max-width: $medium) {\n width: 100%;\n }\n }\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 position: absolute;\n top: 50px;\n right: 20px;\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","import { Component, Prop, Event, EventEmitter, h, getAssetPath, State } from '@stencil/core';\nimport { fetchColorFamilies } from '../api/services';\n\n@Component({\n tag: 'modal-header',\n styleUrl: 'index.scss',\n shadow: false,\n assetsDirs: ['assets'],\n})\nexport class ModalHeader {\n @Prop() modalName: string | null;\n @Prop() modalLogo: string | null;\n @Prop() modalDescription: string;\n @Prop() selectedColorFamily: string | null;\n @Prop() shop: string;\n @Prop() productName: string;\n @Prop() isMobile: boolean;\n @Event() sampleSelected: EventEmitter<number>;\n @Event() colorFamilySelected: EventEmitter<string>;\n @Prop() closeImage = 'close.png';\n @Prop() productSamples: any[] = [];\n @Event() closeModal: EventEmitter;\n @Event() onLogoClick: EventEmitter<void>;\n @Event() onResetCategory: EventEmitter<void>;\n @State() colorFamilies: any[] = [];\n\n handleClose = () => {\n this.closeModal.emit();\n };\n\n handleLogoClick = () => {\n this.onLogoClick.emit();\n };\n\n handleReset = () => {\n this.onResetCategory.emit();\n };\n\n private handleSampleSelect(event: CustomEvent) {\n this.sampleSelected.emit(event.detail);\n }\n\n private sortColorFamiliesByHex(families: any[]) {\n return [...families].sort((a, b) => {\n // Convert hex to RGB for proper color sorting\n const hexToRgb = (hex: string) => {\n const r = parseInt(hex.substring(1, 3), 16);\n const g = parseInt(hex.substring(3, 5), 16);\n const b = parseInt(hex.substring(5, 7), 16);\n return r * 0.299 + g * 0.587 + b * 0.114; // Convert to grayscale for sorting\n };\n return hexToRgb(a.color) - hexToRgb(b.color);\n });\n }\n\n private async fetchColorFamilies() {\n try {\n const request = await fetchColorFamilies();\n this.colorFamilies = this.sortColorFamiliesByHex(request);\n } catch (error: any) {\n console.error('Error fetching color families:', error as any);\n this.colorFamilies = [];\n }\n }\n\n /**\n * Adjusts the brightness of a hexadecimal color\n * @param hex The hexadecimal color code\n * @param percent The percentage to adjust brightness by\n * @returns RGB color string\n */\n private adjustBrightness(hex: string, percent: number): string {\n let r: number = parseInt(hex.substring(1, 3), 16);\n let g: number = parseInt(hex.substring(3, 5), 16);\n let b: number = parseInt(hex.substring(5, 7), 16);\n\n r = Math.min(255, Math.max(0, r + r * percent));\n g = Math.min(255, Math.max(0, g + g * percent));\n b = Math.min(255, Math.max(0, b + b * percent));\n\n return `rgb(${Math.round(r)}, ${Math.round(g)}, ${Math.round(b)})`;\n }\n\n private getGradientFromHex(hex: string) {\n const lighter = this.adjustBrightness(hex, 0.6); // 30% lighter\n const darker = this.adjustBrightness(hex, -0.6); // 30% darker\n\n return `linear-gradient(270deg, ${lighter} 0%, ${darker} 100%)`;\n }\n\n private selectColorFamily(colorFamily: string) {\n // Toggle selection: if clicking the same color family, deselect it\n this.selectedColorFamily = this.selectedColorFamily === colorFamily ? null : colorFamily;\n this.colorFamilySelected.emit(colorFamily);\n }\n\n componentWillLoad() {\n this.fetchColorFamilies();\n }\n\n render() {\n return (\n <div class=\"my-modal__header\">\n <div class=\"image-wrapper\">\n {this.modalLogo && (\n <div class=\"modal-header__logo\" onClick={this.handleLogoClick}>\n <img src={this.modalLogo} alt=\"modal-logo\" />\n </div>\n )}\n </div>\n {this.modalName && <p class=\"my-modal__see-more big\">{this.modalName}</p>}\n {this.modalDescription && <p class=\"my-modal__see-more\">{this.modalDescription}</p>}\n <div class=\"search-wrapper\">\n <div class=\"color-families\">\n {this.colorFamilies.map(family => (\n <div class={`color-family ${this.selectedColorFamily === family.value ? 'active' : ''}`} onClick={() => this.selectColorFamily(family.value)}>\n <div style={{ backgroundImage: this.getGradientFromHex(family.color) }} />\n {family.text}\n </div>\n ))}\n </div>\n <div class=\"search-container\">\n <div class=\"filters\">\n <my-search shopname={this.shop} productname={this.productName} isMobile={this.isMobile}></my-search>\n <my-select\n onOnReset={() => this.handleReset()}\n onSelectValue={event => this.handleSampleSelect(event)}\n options={this.productSamples}\n placeholder=\"Wybierz wzornik\"\n ></my-select>{' '}\n </div>\n <button class=\"my-modal__close\" onClick={this.handleClose}>\n <img src={getAssetPath(`./assets/${this.closeImage}`)} alt=\"closebtn\" />\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n","@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: 'index.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","@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: 'index.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, 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 @Event({ bubbles: true, composed: true }) onCurrentColor: EventEmitter<Color>;\n\n @Event() closeInfoBox: EventEmitter;\n\n goToProduct = () => {\n this.onCurrentColor.emit(this.currentColor);\n this.currentColor &&\n setDataLayer({\n event: 'GoToProduct',\n shop: this.shop,\n product: this.product,\n color: this.currentColor?.name,\n });\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 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.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 && (\n <button onClick={this.goToProduct} class={`button ${this.currentColor.imageInsteadHex ? 'brown' : this.currentColor.buttonInverse ? 'inverse' : ''}`}>\n wybierz kolor\n </button>\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",".tinting-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, Event, EventEmitter } from '@stencil/core';\nimport { Color } from '../../types';\n\n@Component({\n tag: 'my-component',\n styleUrl: 'index.scss',\n scoped: true,\n})\nexport class MyModalBundle {\n @Element() modalEl: HTMLElement;\n @Event({ bubbles: true, composed: true }) onSelectedColor: EventEmitter<Color>;\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 @Listen('onSelectedColorEmit')\n handleSelectedColor(event: CustomEvent<Color>) {\n this.onSelectedColor.emit(event.detail);\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-537BV9VT');`}\n </script>\n </Helmet>\n <div class=\"tinting-wrapper\">{content}</div>\n <noscript>\n <iframe src=\"https://www.googletagmanager.com/ns.html?id=GTM-537BV9VT\" height=\"0\" width=\"0\" style={{ display: 'none', visibility: 'hidden' }}></iframe>\n </noscript>\n </div>\n );\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","const { min, max } = Math;\n\nexport default (x, low = 0, high = 1) => {\n return min(max(low, x), high);\n};\n","import limit from './limit.js';\n\nexport default (rgb) => {\n rgb._clipped = false;\n rgb._unclipped = rgb.slice(0);\n for (let i = 0; i <= 3; i++) {\n if (i < 3) {\n if (rgb[i] < 0 || rgb[i] > 255) rgb._clipped = true;\n rgb[i] = limit(rgb[i], 0, 255);\n } else if (i === 3) {\n rgb[i] = limit(rgb[i], 0, 1);\n }\n }\n return rgb;\n};\n","// ported from jQuery's $.type\nconst classToType = {};\nfor (let name of [\n 'Boolean',\n 'Number',\n 'String',\n 'Function',\n 'Array',\n 'Date',\n 'RegExp',\n 'Undefined',\n 'Null'\n]) {\n classToType[`[object ${name}]`] = name.toLowerCase();\n}\nexport default function (obj) {\n return classToType[Object.prototype.toString.call(obj)] || 'object';\n}\n","import type from './type.js';\n\nexport default (args, keyOrder = null) => {\n // if called with more than 3 arguments, we return the arguments\n if (args.length >= 3) return Array.prototype.slice.call(args);\n // with less than 3 args we check if first arg is object\n // and use the keyOrder string to extract and sort properties\n if (type(args[0]) == 'object' && keyOrder) {\n return keyOrder\n .split('')\n .filter((k) => args[0][k] !== undefined)\n .map((k) => args[0][k]);\n }\n // otherwise we just return the first argument\n // (which we suppose is an array of args)\n return args[0].slice(0);\n};\n","import type from './type.js';\n\nexport default (args) => {\n if (args.length < 2) return null;\n const l = args.length - 1;\n if (type(args[l]) == 'string') return args[l].toLowerCase();\n return null;\n};\n","const { PI, min, max } = Math;\n\nconst rnd2 = (a) => Math.round(a * 100) / 100;\nconst rnd3 = (a) => Math.round(a * 100) / 100;\n\nexport { default as clip_rgb } from './clip_rgb.js';\nexport { default as limit } from './limit.js';\nexport { default as type } from './type.js';\nexport { default as unpack } from './unpack.js';\nexport { default as last } from './last.js';\n\nconst TWOPI = PI * 2;\nconst PITHIRD = PI / 3;\nconst DEG2RAD = PI / 180;\nconst RAD2DEG = 180 / PI;\n\n/**\n * Reverse the first three elements of an array\n *\n * @param {any[]} arr\n * @returns {any[]}\n */\nfunction reverse3(arr) {\n return [...arr.slice(0, 3).reverse(), ...arr.slice(3)];\n}\n\nexport { PI, TWOPI, PITHIRD, DEG2RAD, RAD2DEG, min, max, rnd2, rnd3, reverse3 };\n","export default {\n format: {},\n autodetect: []\n};\n","import { last, clip_rgb, type } from './utils/index.js';\nimport _input from './io/input.js';\n\nclass Color {\n constructor(...args) {\n const me = this;\n if (\n type(args[0]) === 'object' &&\n args[0].constructor &&\n args[0].constructor === this.constructor\n ) {\n // the argument is already a Color instance\n return args[0];\n }\n // last argument could be the mode\n let mode = last(args);\n let autodetect = false;\n if (!mode) {\n autodetect = true;\n\n if (!_input.sorted) {\n _input.autodetect = _input.autodetect.sort((a, b) => b.p - a.p);\n _input.sorted = true;\n }\n\n // auto-detect format\n for (let chk of _input.autodetect) {\n mode = chk.test(...args);\n if (mode) break;\n }\n }\n if (_input.format[mode]) {\n const rgb = _input.format[mode].apply(\n null,\n autodetect ? args : args.slice(0, -1)\n );\n me._rgb = clip_rgb(rgb);\n } else {\n throw new Error('unknown format: ' + args);\n }\n // add alpha channel\n if (me._rgb.length === 3) me._rgb.push(1);\n }\n toString() {\n if (type(this.hex) == 'function') return this.hex();\n return `[${this._rgb.join(',')}]`;\n }\n}\nexport default Color;\n","// this gets updated automatically\nexport const version = '3.1.2';\n","import Color from './Color.js';\nimport { version } from './version.js';\n\nconst chroma = (...args) => {\n return new Color(...args);\n};\n\nchroma.version = version;\n\nexport default chroma;\n","/**\n\tX11 color names\n\n\thttp://www.w3.org/TR/css3-color/#svg-color\n*/\n\nconst w3cx11 = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n laserlemon: '#ffff54',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrod: '#fafad2',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n maroon2: '#7f0000',\n maroon3: '#b03060',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n purple2: '#7f007f',\n purple3: '#a020f0',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32'\n};\n\nexport default w3cx11;\n","const RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\nconst RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/;\n\nconst hex2rgb = (hex) => {\n if (hex.match(RE_HEX)) {\n // remove optional leading #\n if (hex.length === 4 || hex.length === 7) {\n hex = hex.substr(1);\n }\n // expand short-notation to full six-digit\n if (hex.length === 3) {\n hex = hex.split('');\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n const u = parseInt(hex, 16);\n const r = u >> 16;\n const g = (u >> 8) & 0xff;\n const b = u & 0xff;\n return [r, g, b, 1];\n }\n\n // match rgba hex format, eg #FF000077\n if (hex.match(RE_HEXA)) {\n if (hex.length === 5 || hex.length === 9) {\n // remove optional leading #\n hex = hex.substr(1);\n }\n // expand short-notation to full eight-digit\n if (hex.length === 4) {\n hex = hex.split('');\n hex =\n hex[0] +\n hex[0] +\n hex[1] +\n hex[1] +\n hex[2] +\n hex[2] +\n hex[3] +\n hex[3];\n }\n const u = parseInt(hex, 16);\n const r = (u >> 24) & 0xff;\n const g = (u >> 16) & 0xff;\n const b = (u >> 8) & 0xff;\n const a = Math.round(((u & 0xff) / 0xff) * 100) / 100;\n return [r, g, b, a];\n }\n\n // we used to check for css colors here\n // if _input.css? and rgb = _input.css hex\n // return rgb\n\n throw new Error(`unknown hex color: ${hex}`);\n};\n\nexport default hex2rgb;\n","import { unpack, last } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2hex = (...args) => {\n let [r, g, b, a] = unpack(args, 'rgba');\n let mode = last(args) || 'auto';\n if (a === undefined) a = 1;\n if (mode === 'auto') {\n mode = a < 1 ? 'rgba' : 'rgb';\n }\n r = round(r);\n g = round(g);\n b = round(b);\n const u = (r << 16) | (g << 8) | b;\n let str = '000000' + u.toString(16); //#.toUpperCase();\n str = str.substr(str.length - 6);\n let hxa = '0' + round(a * 255).toString(16);\n hxa = hxa.substr(hxa.length - 2);\n switch (mode.toLowerCase()) {\n case 'rgba':\n return `#${str}${hxa}`;\n case 'argb':\n return `#${hxa}${str}`;\n default:\n return `#${str}`;\n }\n};\n\nexport default rgb2hex;\n","import Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport w3cx11 from '../../colors/w3cx11.js';\nimport hex2rgb from '../hex/hex2rgb.js';\nimport rgb2hex from '../hex/rgb2hex.js';\n\nColor.prototype.name = function () {\n const hex = rgb2hex(this._rgb, 'rgb');\n for (let n of Object.keys(w3cx11)) {\n if (w3cx11[n] === hex) return n.toLowerCase();\n }\n return hex;\n};\n\ninput.format.named = (name) => {\n name = name.toLowerCase();\n if (w3cx11[name]) return hex2rgb(w3cx11[name]);\n throw new Error('unknown color name: ' + name);\n};\n\ninput.autodetect.push({\n p: 5,\n test: (h, ...rest) => {\n if (!rest.length && type(h) === 'string' && w3cx11[h.toLowerCase()]) {\n return 'named';\n }\n }\n});\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.alpha = function (a, mutate = false) {\n if (a !== undefined && type(a) === 'number') {\n if (mutate) {\n this._rgb[3] = a;\n return this;\n }\n return new Color([this._rgb[0], this._rgb[1], this._rgb[2], a], 'rgb');\n }\n return this._rgb[3];\n};\n","import Color from '../Color.js';\n\nColor.prototype.clipped = function () {\n return this._rgb._clipped || false;\n};\n","const labConstants = {\n // Corresponds roughly to RGB brighter/darker\n Kn: 18,\n\n // D65 standard referent\n labWhitePoint: 'd65',\n Xn: 0.95047,\n Yn: 1,\n Zn: 1.08883,\n\n t0: 0.137931034, // 4 / 29\n t1: 0.206896552, // 6 / 29\n t2: 0.12841855, // 3 * t1 * t1\n t3: 0.008856452, // t1 * t1 * t1,\n\n kE: 216.0 / 24389.0,\n kKE: 8.0,\n kK: 24389.0 / 27.0,\n\n RefWhiteRGB: {\n // sRGB\n X: 0.95047,\n Y: 1,\n Z: 1.08883\n },\n\n MtxRGB2XYZ: {\n m00: 0.4124564390896922,\n m01: 0.21267285140562253,\n m02: 0.0193338955823293,\n m10: 0.357576077643909,\n m11: 0.715152155287818,\n m12: 0.11919202588130297,\n m20: 0.18043748326639894,\n m21: 0.07217499330655958,\n m22: 0.9503040785363679\n },\n\n MtxXYZ2RGB: {\n m00: 3.2404541621141045,\n m01: -0.9692660305051868,\n m02: 0.055643430959114726,\n m10: -1.5371385127977166,\n m11: 1.8760108454466942,\n m12: -0.2040259135167538,\n m20: -0.498531409556016,\n m21: 0.041556017530349834,\n m22: 1.0572251882231791\n },\n\n // used in rgb2xyz\n As: 0.9414285350000001,\n Bs: 1.040417467,\n Cs: 1.089532651,\n\n MtxAdaptMa: {\n m00: 0.8951,\n m01: -0.7502,\n m02: 0.0389,\n m10: 0.2664,\n m11: 1.7135,\n m12: -0.0685,\n m20: -0.1614,\n m21: 0.0367,\n m22: 1.0296\n },\n\n MtxAdaptMaI: {\n m00: 0.9869929054667123,\n m01: 0.43230526972339456,\n m02: -0.008528664575177328,\n m10: -0.14705425642099013,\n m11: 0.5183602715367776,\n m12: 0.04004282165408487,\n m20: 0.15996265166373125,\n m21: 0.0492912282128556,\n m22: 0.9684866957875502\n }\n};\n\nexport default labConstants;\n\n// taken from https://de.mathworks.com/help/images/ref/whitepoint.html\nconst ILLUMINANTS = new Map([\n // ASTM E308-01\n ['a', [1.0985, 0.35585]],\n // Wyszecki & Stiles, p. 769\n ['b', [1.0985, 0.35585]],\n // C ASTM E308-01\n ['c', [0.98074, 1.18232]],\n // D50 (ASTM E308-01)\n ['d50', [0.96422, 0.82521]],\n // D55 (ASTM E308-01)\n ['d55', [0.95682, 0.92149]],\n // D65 (ASTM E308-01)\n ['d65', [0.95047, 1.08883]],\n // E (ASTM E308-01)\n ['e', [1, 1, 1]],\n // F2 (ASTM E308-01)\n ['f2', [0.99186, 0.67393]],\n // F7 (ASTM E308-01)\n ['f7', [0.95041, 1.08747]],\n // F11 (ASTM E308-01)\n ['f11', [1.00962, 0.6435]],\n ['icc', [0.96422, 0.82521]]\n]);\n\nexport function setLabWhitePoint(name) {\n const ill = ILLUMINANTS.get(String(name).toLowerCase());\n if (!ill) {\n throw new Error('unknown Lab illuminant ' + name);\n }\n labConstants.labWhitePoint = name;\n labConstants.Xn = ill[0];\n labConstants.Zn = ill[1];\n}\n\nexport function getLabWhitePoint() {\n return labConstants.labWhitePoint;\n}\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\n\n/*\n * L* [0..100]\n * a [-100..100]\n * b [-100..100]\n */\nconst lab2rgb = (...args) => {\n args = unpack(args, 'lab');\n const [L, a, b] = args;\n const [x, y, z] = lab2xyz(L, a, b);\n const [r, g, b_] = xyz2rgb(x, y, z);\n return [r, g, b_, args.length > 3 ? args[3] : 1];\n};\n\nconst lab2xyz = (L, a, b) => {\n const { kE, kK, kKE, Xn, Yn, Zn } = LAB_CONSTANTS;\n\n const fy = (L + 16.0) / 116.0;\n const fx = 0.002 * a + fy;\n const fz = fy - 0.005 * b;\n\n const fx3 = fx * fx * fx;\n const fz3 = fz * fz * fz;\n\n const xr = fx3 > kE ? fx3 : (116.0 * fx - 16.0) / kK;\n const yr = L > kKE ? Math.pow((L + 16.0) / 116.0, 3.0) : L / kK;\n const zr = fz3 > kE ? fz3 : (116.0 * fz - 16.0) / kK;\n\n const x = xr * Xn;\n const y = yr * Yn;\n const z = zr * Zn;\n\n return [x, y, z];\n};\n\nconst compand = (linear) => {\n /* sRGB */\n const sign = Math.sign(linear);\n linear = Math.abs(linear);\n return (\n (linear <= 0.0031308\n ? linear * 12.92\n : 1.055 * Math.pow(linear, 1.0 / 2.4) - 0.055) * sign\n );\n};\n\nconst xyz2rgb = (x, y, z) => {\n const { MtxAdaptMa, MtxAdaptMaI, MtxXYZ2RGB, RefWhiteRGB, Xn, Yn, Zn } =\n LAB_CONSTANTS;\n\n const As = Xn * MtxAdaptMa.m00 + Yn * MtxAdaptMa.m10 + Zn * MtxAdaptMa.m20;\n const Bs = Xn * MtxAdaptMa.m01 + Yn * MtxAdaptMa.m11 + Zn * MtxAdaptMa.m21;\n const Cs = Xn * MtxAdaptMa.m02 + Yn * MtxAdaptMa.m12 + Zn * MtxAdaptMa.m22;\n\n const Ad =\n RefWhiteRGB.X * MtxAdaptMa.m00 +\n RefWhiteRGB.Y * MtxAdaptMa.m10 +\n RefWhiteRGB.Z * MtxAdaptMa.m20;\n const Bd =\n RefWhiteRGB.X * MtxAdaptMa.m01 +\n RefWhiteRGB.Y * MtxAdaptMa.m11 +\n RefWhiteRGB.Z * MtxAdaptMa.m21;\n const Cd =\n RefWhiteRGB.X * MtxAdaptMa.m02 +\n RefWhiteRGB.Y * MtxAdaptMa.m12 +\n RefWhiteRGB.Z * MtxAdaptMa.m22;\n\n const X1 =\n (x * MtxAdaptMa.m00 + y * MtxAdaptMa.m10 + z * MtxAdaptMa.m20) *\n (Ad / As);\n const Y1 =\n (x * MtxAdaptMa.m01 + y * MtxAdaptMa.m11 + z * MtxAdaptMa.m21) *\n (Bd / Bs);\n const Z1 =\n (x * MtxAdaptMa.m02 + y * MtxAdaptMa.m12 + z * MtxAdaptMa.m22) *\n (Cd / Cs);\n\n const X2 =\n X1 * MtxAdaptMaI.m00 + Y1 * MtxAdaptMaI.m10 + Z1 * MtxAdaptMaI.m20;\n const Y2 =\n X1 * MtxAdaptMaI.m01 + Y1 * MtxAdaptMaI.m11 + Z1 * MtxAdaptMaI.m21;\n const Z2 =\n X1 * MtxAdaptMaI.m02 + Y1 * MtxAdaptMaI.m12 + Z1 * MtxAdaptMaI.m22;\n\n const r = compand(\n X2 * MtxXYZ2RGB.m00 + Y2 * MtxXYZ2RGB.m10 + Z2 * MtxXYZ2RGB.m20\n );\n const g = compand(\n X2 * MtxXYZ2RGB.m01 + Y2 * MtxXYZ2RGB.m11 + Z2 * MtxXYZ2RGB.m21\n );\n const b = compand(\n X2 * MtxXYZ2RGB.m02 + Y2 * MtxXYZ2RGB.m12 + Z2 * MtxXYZ2RGB.m22\n );\n\n return [r * 255, g * 255, b * 255];\n};\n\nexport default lab2rgb;\nexport { xyz2rgb };\n","import LAB_CONSTANTS from './lab-constants.js';\nimport { unpack } from '../../utils/index.js';\n\nconst rgb2lab = (...args) => {\n const [r, g, b, ...rest] = unpack(args, 'rgb');\n const [x, y, z] = rgb2xyz(r, g, b);\n const [L, a, b_] = xyz2lab(x, y, z);\n return [L, a, b_, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nfunction xyz2lab(x, y, z) {\n const { Xn, Yn, Zn, kE, kK } = LAB_CONSTANTS;\n const xr = x / Xn;\n const yr = y / Yn;\n const zr = z / Zn;\n\n const fx = xr > kE ? Math.pow(xr, 1.0 / 3.0) : (kK * xr + 16.0) / 116.0;\n const fy = yr > kE ? Math.pow(yr, 1.0 / 3.0) : (kK * yr + 16.0) / 116.0;\n const fz = zr > kE ? Math.pow(zr, 1.0 / 3.0) : (kK * zr + 16.0) / 116.0;\n\n return [116.0 * fy - 16.0, 500.0 * (fx - fy), 200.0 * (fy - fz)];\n}\n\nfunction gammaAdjustSRGB(companded) {\n const sign = Math.sign(companded);\n companded = Math.abs(companded);\n const linear =\n companded <= 0.04045\n ? companded / 12.92\n : Math.pow((companded + 0.055) / 1.055, 2.4);\n return linear * sign;\n}\n\nconst rgb2xyz = (r, g, b) => {\n // normalize and gamma adjust\n r = gammaAdjustSRGB(r / 255);\n g = gammaAdjustSRGB(g / 255);\n b = gammaAdjustSRGB(b / 255);\n\n const { MtxRGB2XYZ, MtxAdaptMa, MtxAdaptMaI, Xn, Yn, Zn, As, Bs, Cs } =\n LAB_CONSTANTS;\n\n let x = r * MtxRGB2XYZ.m00 + g * MtxRGB2XYZ.m10 + b * MtxRGB2XYZ.m20;\n let y = r * MtxRGB2XYZ.m01 + g * MtxRGB2XYZ.m11 + b * MtxRGB2XYZ.m21;\n let z = r * MtxRGB2XYZ.m02 + g * MtxRGB2XYZ.m12 + b * MtxRGB2XYZ.m22;\n\n const Ad = Xn * MtxAdaptMa.m00 + Yn * MtxAdaptMa.m10 + Zn * MtxAdaptMa.m20;\n const Bd = Xn * MtxAdaptMa.m01 + Yn * MtxAdaptMa.m11 + Zn * MtxAdaptMa.m21;\n const Cd = Xn * MtxAdaptMa.m02 + Yn * MtxAdaptMa.m12 + Zn * MtxAdaptMa.m22;\n\n let X = x * MtxAdaptMa.m00 + y * MtxAdaptMa.m10 + z * MtxAdaptMa.m20;\n let Y = x * MtxAdaptMa.m01 + y * MtxAdaptMa.m11 + z * MtxAdaptMa.m21;\n let Z = x * MtxAdaptMa.m02 + y * MtxAdaptMa.m12 + z * MtxAdaptMa.m22;\n\n X *= Ad / As;\n Y *= Bd / Bs;\n Z *= Cd / Cs;\n\n x = X * MtxAdaptMaI.m00 + Y * MtxAdaptMaI.m10 + Z * MtxAdaptMaI.m20;\n y = X * MtxAdaptMaI.m01 + Y * MtxAdaptMaI.m11 + Z * MtxAdaptMaI.m21;\n z = X * MtxAdaptMaI.m02 + Y * MtxAdaptMaI.m12 + Z * MtxAdaptMaI.m22;\n\n return [x, y, z];\n};\n\nexport default rgb2lab;\nexport { rgb2xyz };\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lab2rgb from './lab2rgb.js';\nimport rgb2lab from './rgb2lab.js';\nimport { getLabWhitePoint, setLabWhitePoint } from './lab-constants.js';\n\nColor.prototype.lab = function () {\n return rgb2lab(this._rgb);\n};\n\nconst lab = (...args) => new Color(...args, 'lab');\nObject.assign(chroma, { lab, getLabWhitePoint, setLabWhitePoint });\n\ninput.format.lab = lab2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'lab');\n if (type(args) === 'array' && args.length === 3) {\n return 'lab';\n }\n }\n});\n\nexport { lab, getLabWhitePoint, setLabWhitePoint };\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.darken = function (amount = 1) {\n const me = this;\n const lab = me.lab();\n lab[0] -= LAB_CONSTANTS.Kn * amount;\n return new Color(lab, 'lab').alpha(me.alpha(), true);\n};\n\nColor.prototype.brighten = function (amount = 1) {\n return this.darken(-amount);\n};\n\nColor.prototype.darker = Color.prototype.darken;\nColor.prototype.brighter = Color.prototype.brighten;\n","import Color from '../Color.js';\n\nColor.prototype.get = function (mc) {\n const [mode, channel] = mc.split('.');\n const src = this[mode]();\n if (channel) {\n const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) return src[i];\n throw new Error(`unknown channel ${channel} in mode ${mode}`);\n } else {\n return src;\n }\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nconst { pow } = Math;\n\nconst EPS = 1e-7;\nconst MAX_ITER = 20;\n\nColor.prototype.luminance = function (lum, mode = 'rgb') {\n if (lum !== undefined && type(lum) === 'number') {\n if (lum === 0) {\n // return pure black\n return new Color([0, 0, 0, this._rgb[3]], 'rgb');\n }\n if (lum === 1) {\n // return pure white\n return new Color([255, 255, 255, this._rgb[3]], 'rgb');\n }\n // compute new color using...\n let cur_lum = this.luminance();\n let max_iter = MAX_ITER;\n\n const test = (low, high) => {\n const mid = low.interpolate(high, 0.5, mode);\n const lm = mid.luminance();\n if (Math.abs(lum - lm) < EPS || !max_iter--) {\n // close enough\n return mid;\n }\n return lm > lum ? test(low, mid) : test(mid, high);\n };\n\n const rgb = (\n cur_lum > lum\n ? test(new Color([0, 0, 0]), this)\n : test(this, new Color([255, 255, 255]))\n ).rgb();\n return new Color([...rgb, this._rgb[3]]);\n }\n return rgb2luminance(...this._rgb.slice(0, 3));\n};\n\nconst rgb2luminance = (r, g, b) => {\n // relative luminance\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n r = luminance_x(r);\n g = luminance_x(g);\n b = luminance_x(b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n};\n\nconst luminance_x = (x) => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : pow((x + 0.055) / 1.055, 2.4);\n};\n","export default {};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\nimport interpolator from '../interpolator/index.js';\n\nexport default (col1, col2, f = 0.5, ...rest) => {\n let mode = rest[0] || 'lrgb';\n if (!interpolator[mode] && !rest.length) {\n // fall back to the first supported mode\n mode = Object.keys(interpolator)[0];\n }\n if (!interpolator[mode]) {\n throw new Error(`interpolation mode ${mode} is not defined`);\n }\n if (type(col1) !== 'object') col1 = new Color(col1);\n if (type(col2) !== 'object') col2 = new Color(col2);\n return interpolator[mode](col1, col2, f).alpha(\n col1.alpha() + f * (col2.alpha() - col1.alpha())\n );\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.mix = Color.prototype.interpolate = function (\n col2,\n f = 0.5,\n ...rest\n) {\n return mix(this, col2, f, ...rest);\n};\n","import Color from '../Color.js';\n\nColor.prototype.premultiply = function (mutate = false) {\n const rgb = this._rgb;\n const a = rgb[3];\n if (mutate) {\n this._rgb = [rgb[0] * a, rgb[1] * a, rgb[2] * a, a];\n return this;\n } else {\n return new Color([rgb[0] * a, rgb[1] * a, rgb[2] * a, a], 'rgb');\n }\n};\n","import { unpack, DEG2RAD } from '../../utils/index.js';\nconst { sin, cos } = Math;\n\nconst lch2lab = (...args) => {\n /*\n Convert from a qualitative parameter h and a quantitative parameter l to a 24-bit pixel.\n These formulas were invented by David Dalrymple to obtain maximum contrast without going\n out of gamut if the parameters are in the range 0-1.\n\n A saturation multiplier was added by Gregor Aisch\n */\n let [l, c, h] = unpack(args, 'lch');\n if (isNaN(h)) h = 0;\n h = h * DEG2RAD;\n return [l, cos(h) * c, sin(h) * c];\n};\n\nexport default lch2lab;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from './lch2lab.js';\nimport lab2rgb from '../lab/lab2rgb.js';\n\nconst lch2rgb = (...args) => {\n args = unpack(args, 'lch');\n const [l, c, h] = args;\n const [L, a, b_] = lch2lab(l, c, h);\n const [r, g, b] = lab2rgb(L, a, b_);\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default lch2rgb;\n","import { unpack, reverse3 } from '../../utils/index.js';\nimport lch2rgb from './lch2rgb.js';\n\nconst hcl2rgb = (...args) => {\n const hcl = reverse3(unpack(args, 'hcl'));\n return lch2rgb(...hcl);\n};\n\nexport default hcl2rgb;\n","import { unpack, RAD2DEG } from '../../utils/index.js';\nconst { sqrt, atan2, round } = Math;\n\nconst lab2lch = (...args) => {\n const [l, a, b] = unpack(args, 'lab');\n const c = sqrt(a * a + b * b);\n let h = (atan2(b, a) * RAD2DEG + 360) % 360;\n if (round(c * 10000) === 0) h = Number.NaN;\n return [l, c, h];\n};\n\nexport default lab2lch;\n","import { unpack } from '../../utils/index.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lab2lch from './lab2lch.js';\n\nconst rgb2lch = (...args) => {\n const [r, g, b, ...rest] = unpack(args, 'rgb');\n const [l, a, b_] = rgb2lab(r, g, b);\n const [L, c, h] = lab2lch(l, a, b_);\n return [L, c, h, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default rgb2lch;\n","import { unpack, type, reverse3 } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport lch2rgb from './lch2rgb.js';\nimport hcl2rgb from './hcl2rgb.js';\nimport rgb2lch from './rgb2lch.js';\n\nColor.prototype.lch = function () {\n return rgb2lch(this._rgb);\n};\nColor.prototype.hcl = function () {\n return reverse3(rgb2lch(this._rgb));\n};\n\nconst lch = (...args) => new Color(...args, 'lch');\nconst hcl = (...args) => new Color(...args, 'hcl');\n\nObject.assign(chroma, { lch, hcl });\n\ninput.format.lch = lch2rgb;\ninput.format.hcl = hcl2rgb;\n['lch', 'hcl'].forEach((m) =>\n input.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, m);\n if (type(args) === 'array' && args.length === 3) {\n return m;\n }\n }\n })\n);\n\nexport { lch, hcl };\n","import '../io/lch/index.js';\nimport Color from '../Color.js';\nimport LAB_CONSTANTS from '../io/lab/lab-constants.js';\n\nColor.prototype.saturate = function (amount = 1) {\n const me = this;\n const lch = me.lch();\n lch[1] += LAB_CONSTANTS.Kn * amount;\n if (lch[1] < 0) lch[1] = 0;\n return new Color(lch, 'lch').alpha(me.alpha(), true);\n};\n\nColor.prototype.desaturate = function (amount = 1) {\n return this.saturate(-amount);\n};\n","import Color from '../Color.js';\nimport { type } from '../utils/index.js';\n\nColor.prototype.set = function (mc, value, mutate = false) {\n const [mode, channel] = mc.split('.');\n const src = this[mode]();\n if (channel) {\n const i = mode.indexOf(channel) - (mode.substr(0, 2) === 'ok' ? 2 : 0);\n if (i > -1) {\n if (type(value) == 'string') {\n switch (value.charAt(0)) {\n case '+':\n src[i] += +value;\n break;\n case '-':\n src[i] += +value;\n break;\n case '*':\n src[i] *= +value.substr(1);\n break;\n case '/':\n src[i] /= +value.substr(1);\n break;\n default:\n src[i] = +value;\n }\n } else if (type(value) === 'number') {\n src[i] = value;\n } else {\n throw new Error(`unsupported value for Color.set`);\n }\n const out = new Color(src, mode);\n if (mutate) {\n this._rgb = out._rgb;\n return this;\n }\n return out;\n }\n throw new Error(`unknown channel ${channel} in mode ${mode}`);\n } else {\n return src;\n }\n};\n","import '../io/lab/index.js';\nimport Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\nColor.prototype.tint = function (f = 0.5, ...rest) {\n return mix(this, 'white', f, ...rest);\n};\n\nColor.prototype.shade = function (f = 0.5, ...rest) {\n return mix(this, 'black', f, ...rest);\n};\n","import Color from '../Color.js';\nimport index from './index.js';\n\nconst rgb = (col1, col2, f) => {\n const xyz0 = col1._rgb;\n const xyz1 = col2._rgb;\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'rgb'\n );\n};\n\n// register interpolator\nindex.rgb = rgb;\n\nexport default rgb;\n","import Color from '../Color.js';\nconst { sqrt, pow } = Math;\nimport index from './index.js';\n\nconst lrgb = (col1, col2, f) => {\n const [x1, y1, z1] = col1._rgb;\n const [x2, y2, z2] = col2._rgb;\n return new Color(\n sqrt(pow(x1, 2) * (1 - f) + pow(x2, 2) * f),\n sqrt(pow(y1, 2) * (1 - f) + pow(y2, 2) * f),\n sqrt(pow(z1, 2) * (1 - f) + pow(z2, 2) * f),\n 'rgb'\n );\n};\n\n// register interpolator\nindex.lrgb = lrgb;\n\nexport default lrgb;\n","import '../io/lab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst lab = (col1, col2, f) => {\n const xyz0 = col1.lab();\n const xyz1 = col2.lab();\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'lab'\n );\n};\n\n// register interpolator\nindex.lab = lab;\n\nexport default lab;\n","import Color from '../Color.js';\n\nexport default (col1, col2, f, m) => {\n let xyz0, xyz1;\n if (m === 'hsl') {\n xyz0 = col1.hsl();\n xyz1 = col2.hsl();\n } else if (m === 'hsv') {\n xyz0 = col1.hsv();\n xyz1 = col2.hsv();\n } else if (m === 'hcg') {\n xyz0 = col1.hcg();\n xyz1 = col2.hcg();\n } else if (m === 'hsi') {\n xyz0 = col1.hsi();\n xyz1 = col2.hsi();\n } else if (m === 'lch' || m === 'hcl') {\n m = 'hcl';\n xyz0 = col1.hcl();\n xyz1 = col2.hcl();\n } else if (m === 'oklch') {\n xyz0 = col1.oklch().reverse();\n xyz1 = col2.oklch().reverse();\n }\n\n let hue0, hue1, sat0, sat1, lbv0, lbv1;\n if (m.substr(0, 1) === 'h' || m === 'oklch') {\n [hue0, sat0, lbv0] = xyz0;\n [hue1, sat1, lbv1] = xyz1;\n }\n\n let sat, hue, lbv, dh;\n\n if (!isNaN(hue0) && !isNaN(hue1)) {\n // both colors have hue\n if (hue1 > hue0 && hue1 - hue0 > 180) {\n dh = hue1 - (hue0 + 360);\n } else if (hue1 < hue0 && hue0 - hue1 > 180) {\n dh = hue1 + 360 - hue0;\n } else {\n dh = hue1 - hue0;\n }\n hue = hue0 + f * dh;\n } else if (!isNaN(hue0)) {\n hue = hue0;\n if ((lbv1 == 1 || lbv1 == 0) && m != 'hsv') sat = sat0;\n } else if (!isNaN(hue1)) {\n hue = hue1;\n if ((lbv0 == 1 || lbv0 == 0) && m != 'hsv') sat = sat1;\n } else {\n hue = Number.NaN;\n }\n\n if (sat === undefined) sat = sat0 + f * (sat1 - sat0);\n lbv = lbv0 + f * (lbv1 - lbv0);\n return m === 'oklch'\n ? new Color([lbv, sat, hue], m)\n : new Color([hue, sat, lbv], m);\n};\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst lch = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'lch');\n};\n\n// register interpolator\nindex.lch = lch;\nindex.hcl = lch;\n\nexport default lch;\n","import { type } from '../../utils/index.js';\n\nconst num2rgb = (num) => {\n if (type(num) == 'number' && num >= 0 && num <= 0xffffff) {\n const r = num >> 16;\n const g = (num >> 8) & 0xff;\n const b = num & 0xff;\n return [r, g, b, 1];\n }\n throw new Error('unknown num color: ' + num);\n};\n\nexport default num2rgb;\n","import { unpack } from '../../utils/index.js';\n\nconst rgb2num = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n return (r << 16) + (g << 8) + b;\n};\n\nexport default rgb2num;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\nimport num2rgb from './num2rgb.js';\nimport rgb2num from './rgb2num.js';\n\nColor.prototype.num = function () {\n return rgb2num(this._rgb);\n};\n\nconst num = (...args) => new Color(...args, 'num');\n\nObject.assign(chroma, { num });\n\ninput.format.num = num2rgb;\n\ninput.autodetect.push({\n p: 5,\n test: (...args) => {\n if (\n args.length === 1 &&\n type(args[0]) === 'number' &&\n args[0] >= 0 &&\n args[0] <= 0xffffff\n ) {\n return 'num';\n }\n }\n});\n\nexport { num };\n","import '../io/num/index.js';\nimport index from './index.js';\n\nimport Color from '../Color.js';\n\nconst num = (col1, col2, f) => {\n const c1 = col1.num();\n const c2 = col2.num();\n return new Color(c1 + f * (c2 - c1), 'num');\n};\n\n// register interpolator\nindex.num = num;\n\nexport default num;\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\n/*\n * this is basically just HSV with some minor tweaks\n *\n * hue.. [0..360]\n * chroma .. [0..1]\n * grayness .. [0..1]\n */\n\nconst hcg2rgb = (...args) => {\n args = unpack(args, 'hcg');\n let [h, c, _g] = args;\n let r, g, b;\n _g = _g * 255;\n const _c = c * 255;\n if (c === 0) {\n r = g = b = _g;\n } else {\n if (h === 360) h = 0;\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 60;\n const i = floor(h);\n const f = h - i;\n const p = _g * (1 - c);\n const q = p + _c * (1 - f);\n const t = p + _c * f;\n const v = p + _c;\n switch (i) {\n case 0:\n [r, g, b] = [v, t, p];\n break;\n case 1:\n [r, g, b] = [q, v, p];\n break;\n case 2:\n [r, g, b] = [p, v, t];\n break;\n case 3:\n [r, g, b] = [p, q, v];\n break;\n case 4:\n [r, g, b] = [t, p, v];\n break;\n case 5:\n [r, g, b] = [v, p, q];\n break;\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hcg2rgb;\n","import { unpack, max, min } from '../../utils/index.js';\n\nconst rgb2hcg = (...args) => {\n const [r, g, b] = unpack(args, 'rgb');\n const minRgb = min(r, g, b);\n const maxRgb = max(r, g, b);\n const delta = maxRgb - minRgb;\n const c = (delta * 100) / 255;\n const _g = (minRgb / (255 - delta)) * 100;\n let h;\n if (delta === 0) {\n h = Number.NaN;\n } else {\n if (r === maxRgb) h = (g - b) / delta;\n if (g === maxRgb) h = 2 + (b - r) / delta;\n if (b === maxRgb) h = 4 + (r - g) / delta;\n h *= 60;\n if (h < 0) h += 360;\n }\n return [h, c, _g];\n};\n\nexport default rgb2hcg;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hcg2rgb from './hcg2rgb.js';\nimport rgb2hcg from './rgb2hcg.js';\n\nColor.prototype.hcg = function () {\n return rgb2hcg(this._rgb);\n};\n\nconst hcg = (...args) => new Color(...args, 'hcg');\nchroma.hcg = hcg;\n\ninput.format.hcg = hcg2rgb;\n\ninput.autodetect.push({\n p: 1,\n test: (...args) => {\n args = unpack(args, 'hcg');\n if (type(args) === 'array' && args.length === 3) {\n return 'hcg';\n }\n }\n});\n\nexport { hcg };\n","import '../io/hcg/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hcg = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hcg');\n};\n\n// register interpolator\nindex.hcg = hcg;\n\nexport default hcg;\n","import { unpack, limit, TWOPI, PITHIRD } from '../../utils/index.js';\nconst { cos } = Math;\n\n/*\n * hue [0..360]\n * saturation [0..1]\n * intensity [0..1]\n */\nconst hsi2rgb = (...args) => {\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/hsi2rgb.cpp\n */\n args = unpack(args, 'hsi');\n let [h, s, i] = args;\n let r, g, b;\n\n if (isNaN(h)) h = 0;\n if (isNaN(s)) s = 0;\n // normalize hue\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 360;\n if (h < 1 / 3) {\n b = (1 - s) / 3;\n r = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n g = 1 - (b + r);\n } else if (h < 2 / 3) {\n h -= 1 / 3;\n r = (1 - s) / 3;\n g = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n b = 1 - (r + g);\n } else {\n h -= 2 / 3;\n g = (1 - s) / 3;\n b = (1 + (s * cos(TWOPI * h)) / cos(PITHIRD - TWOPI * h)) / 3;\n r = 1 - (g + b);\n }\n r = limit(i * r * 3);\n g = limit(i * g * 3);\n b = limit(i * b * 3);\n return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsi2rgb;\n","import { unpack, TWOPI } from '../../utils/index.js';\nconst { min, sqrt, acos } = Math;\n\nconst rgb2hsi = (...args) => {\n /*\n borrowed from here:\n http://hummer.stanford.edu/museinfo/doc/examples/humdrum/keyscape2/rgb2hsi.cpp\n */\n let [r, g, b] = unpack(args, 'rgb');\n r /= 255;\n g /= 255;\n b /= 255;\n let h;\n const min_ = min(r, g, b);\n const i = (r + g + b) / 3;\n const s = i > 0 ? 1 - min_ / i : 0;\n if (s === 0) {\n h = NaN;\n } else {\n h = (r - g + (r - b)) / 2;\n h /= sqrt((r - g) * (r - g) + (r - b) * (g - b));\n h = acos(h);\n if (b > g) {\n h = TWOPI - h;\n }\n h /= TWOPI;\n }\n return [h * 360, s, i];\n};\n\nexport default rgb2hsi;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsi2rgb from './hsi2rgb.js';\nimport rgb2hsi from './rgb2hsi.js';\n\nColor.prototype.hsi = function () {\n return rgb2hsi(this._rgb);\n};\n\nconst hsi = (...args) => new Color(...args, 'hsi');\nchroma.hsi = hsi;\n\ninput.format.hsi = hsi2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsi');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsi';\n }\n }\n});\n\nexport { hsi };\n","import '../io/hsi/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsi = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsi');\n};\n\n// register interpolator\nindex.hsi = hsi;\n\nexport default hsi;\n","import { unpack } from '../../utils/index.js';\n\nconst hsl2rgb = (...args) => {\n args = unpack(args, 'hsl');\n const [h, s, l] = args;\n let r, g, b;\n if (s === 0) {\n r = g = b = l * 255;\n } else {\n const t3 = [0, 0, 0];\n const c = [0, 0, 0];\n const t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const t1 = 2 * l - t2;\n const h_ = h / 360;\n t3[0] = h_ + 1 / 3;\n t3[1] = h_;\n t3[2] = h_ - 1 / 3;\n for (let i = 0; i < 3; i++) {\n if (t3[i] < 0) t3[i] += 1;\n if (t3[i] > 1) t3[i] -= 1;\n if (6 * t3[i] < 1) c[i] = t1 + (t2 - t1) * 6 * t3[i];\n else if (2 * t3[i] < 1) c[i] = t2;\n else if (3 * t3[i] < 2) c[i] = t1 + (t2 - t1) * (2 / 3 - t3[i]) * 6;\n else c[i] = t1;\n }\n [r, g, b] = [c[0] * 255, c[1] * 255, c[2] * 255];\n }\n if (args.length > 3) {\n // keep alpha channel\n return [r, g, b, args[3]];\n }\n return [r, g, b, 1];\n};\n\nexport default hsl2rgb;\n","import { unpack, min, max } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - rgb2hsl(r,g,b)\n * - rgb2hsl(r,g,b,a)\n * - rgb2hsl([r,g,b])\n * - rgb2hsl([r,g,b,a])\n * - rgb2hsl({r,g,b,a})\n */\nconst rgb2hsl = (...args) => {\n args = unpack(args, 'rgba');\n let [r, g, b] = args;\n\n r /= 255;\n g /= 255;\n b /= 255;\n\n const minRgb = min(r, g, b);\n const maxRgb = max(r, g, b);\n\n const l = (maxRgb + minRgb) / 2;\n let s, h;\n\n if (maxRgb === minRgb) {\n s = 0;\n h = Number.NaN;\n } else {\n s =\n l < 0.5\n ? (maxRgb - minRgb) / (maxRgb + minRgb)\n : (maxRgb - minRgb) / (2 - maxRgb - minRgb);\n }\n\n if (r == maxRgb) h = (g - b) / (maxRgb - minRgb);\n else if (g == maxRgb) h = 2 + (b - r) / (maxRgb - minRgb);\n else if (b == maxRgb) h = 4 + (r - g) / (maxRgb - minRgb);\n\n h *= 60;\n if (h < 0) h += 360;\n if (args.length > 3 && args[3] !== undefined) return [h, s, l, args[3]];\n return [h, s, l];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsl2rgb from './hsl2rgb.js';\nimport rgb2hsl from './rgb2hsl.js';\n\nColor.prototype.hsl = function () {\n return rgb2hsl(this._rgb);\n};\n\nconst hsl = (...args) => new Color(...args, 'hsl');\nchroma.hsl = hsl;\n\ninput.format.hsl = hsl2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsl');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsl';\n }\n }\n});\n\nexport { hsl };\n","import '../io/hsl/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsl = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsl');\n};\n\n// register interpolator\nindex.hsl = hsl;\n\nexport default hsl;\n","import { unpack } from '../../utils/index.js';\nconst { floor } = Math;\n\nconst hsv2rgb = (...args) => {\n args = unpack(args, 'hsv');\n let [h, s, v] = args;\n let r, g, b;\n v *= 255;\n if (s === 0) {\n r = g = b = v;\n } else {\n if (h === 360) h = 0;\n if (h > 360) h -= 360;\n if (h < 0) h += 360;\n h /= 60;\n\n const i = floor(h);\n const f = h - i;\n const p = v * (1 - s);\n const q = v * (1 - s * f);\n const t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0:\n [r, g, b] = [v, t, p];\n break;\n case 1:\n [r, g, b] = [q, v, p];\n break;\n case 2:\n [r, g, b] = [p, v, t];\n break;\n case 3:\n [r, g, b] = [p, q, v];\n break;\n case 4:\n [r, g, b] = [t, p, v];\n break;\n case 5:\n [r, g, b] = [v, p, q];\n break;\n }\n }\n return [r, g, b, args.length > 3 ? args[3] : 1];\n};\n\nexport default hsv2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { min, max } = Math;\n\n/*\n * supported arguments:\n * - rgb2hsv(r,g,b)\n * - rgb2hsv([r,g,b])\n * - rgb2hsv({r,g,b})\n */\nconst rgb2hsl = (...args) => {\n args = unpack(args, 'rgb');\n let [r, g, b] = args;\n const min_ = min(r, g, b);\n const max_ = max(r, g, b);\n const delta = max_ - min_;\n let h, s, v;\n v = max_ / 255.0;\n if (max_ === 0) {\n h = Number.NaN;\n s = 0;\n } else {\n s = delta / max_;\n if (r === max_) h = (g - b) / delta;\n if (g === max_) h = 2 + (b - r) / delta;\n if (b === max_) h = 4 + (r - g) / delta;\n h *= 60;\n if (h < 0) h += 360;\n }\n return [h, s, v];\n};\n\nexport default rgb2hsl;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport hsv2rgb from './hsv2rgb.js';\nimport rgb2hsv from './rgb2hsv.js';\n\nColor.prototype.hsv = function () {\n return rgb2hsv(this._rgb);\n};\n\nconst hsv = (...args) => new Color(...args, 'hsv');\nchroma.hsv = hsv;\n\ninput.format.hsv = hsv2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'hsv');\n if (type(args) === 'array' && args.length === 3) {\n return 'hsv';\n }\n }\n});\n\nexport { hsv };\n","import '../io/hsv/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst hsv = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'hsv');\n};\n\n// register interpolator\nindex.hsv = hsv;\n\nexport default hsv;\n","// from https://www.w3.org/TR/css-color-4/multiply-matrices.js\nexport default function multiplyMatrices(A, B) {\n let m = A.length;\n\n if (!Array.isArray(A[0])) {\n // A is vector, convert to [[a, b, c, ...]]\n A = [A];\n }\n\n if (!Array.isArray(B[0])) {\n // B is vector, convert to [[a], [b], [c], ...]]\n B = B.map((x) => [x]);\n }\n\n let p = B[0].length;\n let B_cols = B[0].map((_, i) => B.map((x) => x[i])); // transpose B\n let product = A.map((row) =>\n B_cols.map((col) => {\n if (!Array.isArray(row)) {\n return col.reduce((a, c) => a + c * row, 0);\n }\n\n return row.reduce((a, c, i) => a + c * (col[i] || 0), 0);\n })\n );\n\n if (m === 1) {\n product = product[0]; // Avoid [[a, b, c, ...]]\n }\n\n if (p === 1) {\n return product.map((x) => x[0]); // Avoid [[a], [b], [c], ...]]\n }\n\n return product;\n}\n","import { unpack } from '../../utils/index.js';\nimport multiplyMatrices from '../../utils/multiply-matrices.js';\nimport { xyz2rgb } from '../lab/lab2rgb.js';\n\nconst oklab2rgb = (...args) => {\n args = unpack(args, 'lab');\n const [L, a, b, ...rest] = args;\n const [X, Y, Z] = OKLab_to_XYZ([L, a, b]);\n const [r, g, b_] = xyz2rgb(X, Y, Z);\n return [r, g, b_, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\n// from https://www.w3.org/TR/css-color-4/#color-conversion-code\nfunction OKLab_to_XYZ(OKLab) {\n // Given OKLab, convert to XYZ relative to D65\n var LMStoXYZ = [\n [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n [-0.0405757452148008, 1.112286803280317, -0.0717110580655164],\n [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n ];\n var OKLabtoLMS = [\n [1.0, 0.3963377773761749, 0.2158037573099136],\n [1.0, -0.1055613458156586, -0.0638541728258133],\n [1.0, -0.0894841775298119, -1.2914855480194092]\n ];\n\n var LMSnl = multiplyMatrices(OKLabtoLMS, OKLab);\n return multiplyMatrices(\n LMStoXYZ,\n LMSnl.map((c) => c ** 3)\n );\n}\n\nexport default oklab2rgb;\n","import { unpack } from '../../utils/index.js';\nimport multiplyMatrices from '../../utils/multiply-matrices.js';\nimport { rgb2xyz } from '../lab/rgb2lab.js';\n\nconst rgb2oklab = (...args) => {\n const [r, g, b, ...rest] = unpack(args, 'rgb');\n const xyz = rgb2xyz(r, g, b);\n const oklab = XYZ_to_OKLab(xyz);\n return [...oklab, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\n// from https://www.w3.org/TR/css-color-4/#color-conversion-code\nfunction XYZ_to_OKLab(XYZ) {\n // Given XYZ relative to D65, convert to OKLab\n const XYZtoLMS = [\n [0.819022437996703, 0.3619062600528904, -0.1288737815209879],\n [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n ];\n const LMStoOKLab = [\n [0.210454268309314, 0.7936177747023054, -0.0040720430116193],\n [1.9779985324311684, -2.4285922420485799, 0.450593709617411],\n [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n ];\n\n const LMS = multiplyMatrices(XYZtoLMS, XYZ);\n // JavaScript Math.cbrt returns a sign-matched cube root\n // beware if porting to other languages\n // especially if tempted to use a general power function\n return multiplyMatrices(\n LMStoOKLab,\n LMS.map((c) => Math.cbrt(c))\n );\n // L in range [0,1]. For use in CSS, multiply by 100 and add a percent\n}\n\nexport default rgb2oklab;\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklab2rgb from './oklab2rgb.js';\nimport rgb2oklab from './rgb2oklab.js';\n\nColor.prototype.oklab = function () {\n return rgb2oklab(this._rgb);\n};\n\nconst oklab = (...args) => new Color(...args, 'oklab');\nObject.assign(chroma, { oklab });\n\ninput.format.oklab = oklab2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'oklab');\n if (type(args) === 'array' && args.length === 3) {\n return 'oklab';\n }\n }\n});\n\nexport { oklab };\n","import '../io/oklab/index.js';\nimport index from './index.js';\nimport Color from '../Color.js';\n\nconst oklab = (col1, col2, f) => {\n const xyz0 = col1.oklab();\n const xyz1 = col2.oklab();\n return new Color(\n xyz0[0] + f * (xyz1[0] - xyz0[0]),\n xyz0[1] + f * (xyz1[1] - xyz0[1]),\n xyz0[2] + f * (xyz1[2] - xyz0[2]),\n 'oklab'\n );\n};\n\n// register interpolator\nindex.oklab = oklab;\n\nexport default oklab;\n","import '../io/lch/index.js';\nimport interpolate_hsx from './_hsx.js';\nimport index from './index.js';\n\nconst oklch = (col1, col2, f) => {\n return interpolate_hsx(col1, col2, f, 'oklch');\n};\n\n// register interpolator\nindex.oklch = oklch;\n\nexport default oklch;\n","import Color from '../Color.js';\nimport { clip_rgb } from '../utils/index.js';\n\nconst { pow, sqrt, PI, cos, sin, atan2 } = Math;\n\nexport default (colors, mode = 'lrgb', weights = null) => {\n const l = colors.length;\n if (!weights) weights = Array.from(new Array(l)).map(() => 1);\n // normalize weights\n const k =\n l /\n weights.reduce(function (a, b) {\n return a + b;\n });\n weights.forEach((w, i) => {\n weights[i] *= k;\n });\n // convert colors to Color objects\n colors = colors.map((c) => new Color(c));\n if (mode === 'lrgb') {\n return _average_lrgb(colors, weights);\n }\n const first = colors.shift();\n const xyz = first.get(mode);\n const cnt = [];\n let dx = 0;\n let dy = 0;\n // initial color\n for (let i = 0; i < xyz.length; i++) {\n xyz[i] = (xyz[i] || 0) * weights[0];\n cnt.push(isNaN(xyz[i]) ? 0 : weights[0]);\n if (mode.charAt(i) === 'h' && !isNaN(xyz[i])) {\n const A = (xyz[i] / 180) * PI;\n dx += cos(A) * weights[0];\n dy += sin(A) * weights[0];\n }\n }\n\n let alpha = first.alpha() * weights[0];\n colors.forEach((c, ci) => {\n const xyz2 = c.get(mode);\n alpha += c.alpha() * weights[ci + 1];\n for (let i = 0; i < xyz.length; i++) {\n if (!isNaN(xyz2[i])) {\n cnt[i] += weights[ci + 1];\n if (mode.charAt(i) === 'h') {\n const A = (xyz2[i] / 180) * PI;\n dx += cos(A) * weights[ci + 1];\n dy += sin(A) * weights[ci + 1];\n } else {\n xyz[i] += xyz2[i] * weights[ci + 1];\n }\n }\n }\n });\n\n for (let i = 0; i < xyz.length; i++) {\n if (mode.charAt(i) === 'h') {\n let A = (atan2(dy / cnt[i], dx / cnt[i]) / PI) * 180;\n while (A < 0) A += 360;\n while (A >= 360) A -= 360;\n xyz[i] = A;\n } else {\n xyz[i] = xyz[i] / cnt[i];\n }\n }\n alpha /= l;\n return new Color(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true);\n};\n\nconst _average_lrgb = (colors, weights) => {\n const l = colors.length;\n const xyz = [0, 0, 0, 0];\n for (let i = 0; i < colors.length; i++) {\n const col = colors[i];\n const f = weights[i] / l;\n const rgb = col._rgb;\n xyz[0] += pow(rgb[0], 2) * f;\n xyz[1] += pow(rgb[1], 2) * f;\n xyz[2] += pow(rgb[2], 2) * f;\n xyz[3] += rgb[3] * f;\n }\n xyz[0] = sqrt(xyz[0]);\n xyz[1] = sqrt(xyz[1]);\n xyz[2] = sqrt(xyz[2]);\n if (xyz[3] > 0.9999999) xyz[3] = 1;\n return new Color(clip_rgb(xyz));\n};\n","// minimal multi-purpose interface\n\n// @requires utils color analyze\nimport chroma from '../chroma.js';\nimport { limit, type } from '../utils/index.js';\n\nconst { pow } = Math;\n\nexport default function (colors) {\n // constructor\n let _mode = 'rgb';\n let _nacol = chroma('#ccc');\n let _spread = 0;\n // const _fixed = false;\n let _domain = [0, 1];\n let _pos = [];\n let _padding = [0, 0];\n let _classes = false;\n let _colors = [];\n let _out = false;\n let _min = 0;\n let _max = 1;\n let _correctLightness = false;\n let _colorCache = {};\n let _useCache = true;\n let _gamma = 1;\n\n // private methods\n\n const setColors = function (colors) {\n colors = colors || ['#fff', '#000'];\n if (\n colors &&\n type(colors) === 'string' &&\n chroma.brewer &&\n chroma.brewer[colors.toLowerCase()]\n ) {\n colors = chroma.brewer[colors.toLowerCase()];\n }\n if (type(colors) === 'array') {\n // handle single color\n if (colors.length === 1) {\n colors = [colors[0], colors[0]];\n }\n // make a copy of the colors\n colors = colors.slice(0);\n // convert to chroma classes\n for (let c = 0; c < colors.length; c++) {\n colors[c] = chroma(colors[c]);\n }\n // auto-fill color position\n _pos.length = 0;\n for (let c = 0; c < colors.length; c++) {\n _pos.push(c / (colors.length - 1));\n }\n }\n resetCache();\n return (_colors = colors);\n };\n\n const getClass = function (value) {\n if (_classes != null) {\n const n = _classes.length - 1;\n let i = 0;\n while (i < n && value >= _classes[i]) {\n i++;\n }\n return i - 1;\n }\n return 0;\n };\n\n let tMapLightness = (t) => t;\n let tMapDomain = (t) => t;\n\n // const classifyValue = function(value) {\n // let val = value;\n // if (_classes.length > 2) {\n // const n = _classes.length-1;\n // const i = getClass(value);\n // const minc = _classes[0] + ((_classes[1]-_classes[0]) * (0 + (_spread * 0.5))); // center of 1st class\n // const maxc = _classes[n-1] + ((_classes[n]-_classes[n-1]) * (1 - (_spread * 0.5))); // center of last class\n // val = _min + ((((_classes[i] + ((_classes[i+1] - _classes[i]) * 0.5)) - minc) / (maxc-minc)) * (_max - _min));\n // }\n // return val;\n // };\n\n const getColor = function (val, bypassMap) {\n let col, t;\n if (bypassMap == null) {\n bypassMap = false;\n }\n if (isNaN(val) || val === null) {\n return _nacol;\n }\n if (!bypassMap) {\n if (_classes && _classes.length > 2) {\n // find the class\n const c = getClass(val);\n t = c / (_classes.length - 2);\n } else if (_max !== _min) {\n // just interpolate between min/max\n t = (val - _min) / (_max - _min);\n } else {\n t = 1;\n }\n } else {\n t = val;\n }\n\n // domain map\n t = tMapDomain(t);\n\n if (!bypassMap) {\n t = tMapLightness(t); // lightness correction\n }\n\n if (_gamma !== 1) {\n t = pow(t, _gamma);\n }\n\n t = _padding[0] + t * (1 - _padding[0] - _padding[1]);\n\n t = limit(t, 0, 1);\n\n const k = Math.floor(t * 10000);\n\n if (_useCache && _colorCache[k]) {\n col = _colorCache[k];\n } else {\n if (type(_colors) === 'array') {\n //for i in [0.._pos.length-1]\n for (let i = 0; i < _pos.length; i++) {\n const p = _pos[i];\n if (t <= p) {\n col = _colors[i];\n break;\n }\n if (t >= p && i === _pos.length - 1) {\n col = _colors[i];\n break;\n }\n if (t > p && t < _pos[i + 1]) {\n t = (t - p) / (_pos[i + 1] - p);\n col = chroma.interpolate(\n _colors[i],\n _colors[i + 1],\n t,\n _mode\n );\n break;\n }\n }\n } else if (type(_colors) === 'function') {\n col = _colors(t);\n }\n if (_useCache) {\n _colorCache[k] = col;\n }\n }\n return col;\n };\n\n var resetCache = () => (_colorCache = {});\n\n setColors(colors);\n\n // public interface\n\n const f = function (v) {\n const c = chroma(getColor(v));\n if (_out && c[_out]) {\n return c[_out]();\n } else {\n return c;\n }\n };\n\n f.classes = function (classes) {\n if (classes != null) {\n if (type(classes) === 'array') {\n _classes = classes;\n _domain = [classes[0], classes[classes.length - 1]];\n } else {\n const d = chroma.analyze(_domain);\n if (classes === 0) {\n _classes = [d.min, d.max];\n } else {\n _classes = chroma.limits(d, 'e', classes);\n }\n }\n return f;\n }\n return _classes;\n };\n\n f.domain = function (domain) {\n if (!arguments.length) {\n return _domain;\n }\n _min = domain[0];\n _max = domain[domain.length - 1];\n _pos = [];\n const k = _colors.length;\n if (domain.length === k && _min !== _max) {\n // update positions\n for (let d of Array.from(domain)) {\n _pos.push((d - _min) / (_max - _min));\n }\n } else {\n for (let c = 0; c < k; c++) {\n _pos.push(c / (k - 1));\n }\n if (domain.length > 2) {\n // set domain map\n const tOut = domain.map((d, i) => i / (domain.length - 1));\n const tBreaks = domain.map((d) => (d - _min) / (_max - _min));\n if (!tBreaks.every((val, i) => tOut[i] === val)) {\n tMapDomain = (t) => {\n if (t <= 0 || t >= 1) return t;\n let i = 0;\n while (t >= tBreaks[i + 1]) i++;\n const f =\n (t - tBreaks[i]) / (tBreaks[i + 1] - tBreaks[i]);\n const out = tOut[i] + f * (tOut[i + 1] - tOut[i]);\n return out;\n };\n }\n }\n }\n _domain = [_min, _max];\n return f;\n };\n\n f.mode = function (_m) {\n if (!arguments.length) {\n return _mode;\n }\n _mode = _m;\n resetCache();\n return f;\n };\n\n f.range = function (colors, _pos) {\n setColors(colors, _pos);\n return f;\n };\n\n f.out = function (_o) {\n _out = _o;\n return f;\n };\n\n f.spread = function (val) {\n if (!arguments.length) {\n return _spread;\n }\n _spread = val;\n return f;\n };\n\n f.correctLightness = function (v) {\n if (v == null) {\n v = true;\n }\n _correctLightness = v;\n resetCache();\n if (_correctLightness) {\n tMapLightness = function (t) {\n const L0 = getColor(0, true).lab()[0];\n const L1 = getColor(1, true).lab()[0];\n const pol = L0 > L1;\n let L_actual = getColor(t, true).lab()[0];\n const L_ideal = L0 + (L1 - L0) * t;\n let L_diff = L_actual - L_ideal;\n let t0 = 0;\n let t1 = 1;\n let max_iter = 20;\n while (Math.abs(L_diff) > 1e-2 && max_iter-- > 0) {\n (function () {\n if (pol) {\n L_diff *= -1;\n }\n if (L_diff < 0) {\n t0 = t;\n t += (t1 - t) * 0.5;\n } else {\n t1 = t;\n t += (t0 - t) * 0.5;\n }\n L_actual = getColor(t, true).lab()[0];\n return (L_diff = L_actual - L_ideal);\n })();\n }\n return t;\n };\n } else {\n tMapLightness = (t) => t;\n }\n return f;\n };\n\n f.padding = function (p) {\n if (p != null) {\n if (type(p) === 'number') {\n p = [p, p];\n }\n _padding = p;\n return f;\n } else {\n return _padding;\n }\n };\n\n f.colors = function (numColors, out) {\n // If no arguments are given, return the original colors that were provided\n if (arguments.length < 2) {\n out = 'hex';\n }\n let result = [];\n\n if (arguments.length === 0) {\n result = _colors.slice(0);\n } else if (numColors === 1) {\n result = [f(0.5)];\n } else if (numColors > 1) {\n const dm = _domain[0];\n const dd = _domain[1] - dm;\n result = __range__(0, numColors, false).map((i) =>\n f(dm + (i / (numColors - 1)) * dd)\n );\n } else {\n // returns all colors based on the defined classes\n colors = [];\n let samples = [];\n if (_classes && _classes.length > 2) {\n for (\n let i = 1, end = _classes.length, asc = 1 <= end;\n asc ? i < end : i > end;\n asc ? i++ : i--\n ) {\n samples.push((_classes[i - 1] + _classes[i]) * 0.5);\n }\n } else {\n samples = _domain;\n }\n result = samples.map((v) => f(v));\n }\n\n if (chroma[out]) {\n result = result.map((c) => c[out]());\n }\n return result;\n };\n\n f.cache = function (c) {\n if (c != null) {\n _useCache = c;\n return f;\n } else {\n return _useCache;\n }\n };\n\n f.gamma = function (g) {\n if (g != null) {\n _gamma = g;\n return f;\n } else {\n return _gamma;\n }\n };\n\n f.nodata = function (d) {\n if (d != null) {\n _nacol = chroma(d);\n return f;\n } else {\n return _nacol;\n }\n };\n\n return f;\n}\n\nfunction __range__(left, right, inclusive) {\n let range = [];\n let ascending = left < right;\n let end = !inclusive ? right : ascending ? right + 1 : right - 1;\n for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {\n range.push(i);\n }\n return range;\n}\n","//\n// interpolates between a set of colors uzing a bezier spline\n//\n\n// @requires utils lab\nimport Color from '../Color.js';\nimport '../io/lab/index.js';\nimport scale from './scale.js';\n\n// nth row of the pascal triangle\nconst binom_row = function (n) {\n let row = [1, 1];\n for (let i = 1; i < n; i++) {\n let newrow = [1];\n for (let j = 1; j <= row.length; j++) {\n newrow[j] = (row[j] || 0) + row[j - 1];\n }\n row = newrow;\n }\n return row;\n};\n\nconst bezier = function (colors) {\n let I, lab0, lab1, lab2;\n colors = colors.map((c) => new Color(c));\n if (colors.length === 2) {\n // linear interpolation\n [lab0, lab1] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map((i) => lab0[i] + t * (lab1[i] - lab0[i]));\n return new Color(lab, 'lab');\n };\n } else if (colors.length === 3) {\n // quadratic bezier interpolation\n [lab0, lab1, lab2] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map(\n (i) =>\n (1 - t) * (1 - t) * lab0[i] +\n 2 * (1 - t) * t * lab1[i] +\n t * t * lab2[i]\n );\n return new Color(lab, 'lab');\n };\n } else if (colors.length === 4) {\n // cubic bezier interpolation\n let lab3;\n [lab0, lab1, lab2, lab3] = colors.map((c) => c.lab());\n I = function (t) {\n const lab = [0, 1, 2].map(\n (i) =>\n (1 - t) * (1 - t) * (1 - t) * lab0[i] +\n 3 * (1 - t) * (1 - t) * t * lab1[i] +\n 3 * (1 - t) * t * t * lab2[i] +\n t * t * t * lab3[i]\n );\n return new Color(lab, 'lab');\n };\n } else if (colors.length >= 5) {\n // general case (degree n bezier)\n let labs, row, n;\n labs = colors.map((c) => c.lab());\n n = colors.length - 1;\n row = binom_row(n);\n I = function (t) {\n const u = 1 - t;\n const lab = [0, 1, 2].map((i) =>\n labs.reduce(\n (sum, el, j) =>\n sum + row[j] * u ** (n - j) * t ** j * el[i],\n 0\n )\n );\n return new Color(lab, 'lab');\n };\n } else {\n throw new RangeError('No point in running bezier with only one color.');\n }\n return I;\n};\n\nexport default (colors) => {\n const f = bezier(colors);\n f.scale = () => scale(f);\n return f;\n};\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nconst { round } = Math;\n\nColor.prototype.rgb = function (rnd = true) {\n if (rnd === false) return this._rgb.slice(0, 3);\n return this._rgb.slice(0, 3).map(round);\n};\n\nColor.prototype.rgba = function (rnd = true) {\n return this._rgb.slice(0, 4).map((v, i) => {\n return i < 3 ? (rnd === false ? v : round(v)) : v;\n });\n};\n\nconst rgb = (...args) => new Color(...args, 'rgb');\nObject.assign(chroma, { rgb });\n\ninput.format.rgb = (...args) => {\n const rgba = unpack(args, 'rgba');\n if (rgba[3] === undefined) rgba[3] = 1;\n return rgba;\n};\n\ninput.autodetect.push({\n p: 3,\n test: (...args) => {\n args = unpack(args, 'rgba');\n if (\n type(args) === 'array' &&\n (args.length === 3 ||\n (args.length === 4 &&\n type(args[3]) == 'number' &&\n args[3] >= 0 &&\n args[3] <= 1))\n ) {\n return 'rgb';\n }\n }\n});\n\nexport { rgb };\n","/*\n * interpolates between a set of colors uzing a bezier spline\n * blend mode formulas taken from https://web.archive.org/web/20180110014946/http://www.venture-ware.com/kevin/coding/lets-learn-math-photoshop-blend-modes/\n */\n\nimport '../io/rgb/index.js';\nimport chroma from '../chroma.js';\n\nconst blend = (bottom, top, mode) => {\n if (!blend[mode]) {\n throw new Error('unknown blend mode ' + mode);\n }\n return blend[mode](bottom, top);\n};\n\nconst blend_f = (f) => (bottom, top) => {\n const c0 = chroma(top).rgb();\n const c1 = chroma(bottom).rgb();\n return chroma.rgb(f(c0, c1));\n};\n\nconst each = (f) => (c0, c1) => {\n const out = [];\n out[0] = f(c0[0], c1[0]);\n out[1] = f(c0[1], c1[1]);\n out[2] = f(c0[2], c1[2]);\n return out;\n};\n\nconst normal = (a) => a;\nconst multiply = (a, b) => (a * b) / 255;\nconst darken = (a, b) => (a > b ? b : a);\nconst lighten = (a, b) => (a > b ? a : b);\nconst screen = (a, b) => 255 * (1 - (1 - a / 255) * (1 - b / 255));\nconst overlay = (a, b) =>\n b < 128 ? (2 * a * b) / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255));\nconst burn = (a, b) => 255 * (1 - (1 - b / 255) / (a / 255));\nconst dodge = (a, b) => {\n if (a === 255) return 255;\n a = (255 * (b / 255)) / (1 - a / 255);\n return a > 255 ? 255 : a;\n};\n\n// # add = (a,b) ->\n// # if (a + b > 255) then 255 else a + b\n\nblend.normal = blend_f(each(normal));\nblend.multiply = blend_f(each(multiply));\nblend.screen = blend_f(each(screen));\nblend.overlay = blend_f(each(overlay));\nblend.darken = blend_f(each(darken));\nblend.lighten = blend_f(each(lighten));\nblend.dodge = blend_f(each(dodge));\nblend.burn = blend_f(each(burn));\n// blend.add = blend_f(each(add));\n\nexport default blend;\n","// cubehelix interpolation\n// based on D.A. Green \"A colour scheme for the display of astronomical intensity images\"\n// http://astron-soc.in/bulletin/11June/289392011.pdf\nimport { type, clip_rgb, TWOPI } from '../utils/index.js';\nimport chroma from '../chroma.js';\nconst { pow, sin, cos } = Math;\n\nexport default function (\n start = 300,\n rotations = -1.5,\n hue = 1,\n gamma = 1,\n lightness = [0, 1]\n) {\n let dh = 0,\n dl;\n if (type(lightness) === 'array') {\n dl = lightness[1] - lightness[0];\n } else {\n dl = 0;\n lightness = [lightness, lightness];\n }\n const f = function (fract) {\n const a = TWOPI * ((start + 120) / 360 + rotations * fract);\n const l = pow(lightness[0] + dl * fract, gamma);\n const h = dh !== 0 ? hue[0] + fract * dh : hue;\n const amp = (h * l * (1 - l)) / 2;\n const cos_a = cos(a);\n const sin_a = sin(a);\n const r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a);\n const g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a);\n const b = l + amp * (+1.97294 * cos_a);\n return chroma(clip_rgb([r * 255, g * 255, b * 255, 1]));\n };\n f.start = function (s) {\n if (s == null) {\n return start;\n }\n start = s;\n return f;\n };\n f.rotations = function (r) {\n if (r == null) {\n return rotations;\n }\n rotations = r;\n return f;\n };\n f.gamma = function (g) {\n if (g == null) {\n return gamma;\n }\n gamma = g;\n return f;\n };\n f.hue = function (h) {\n if (h == null) {\n return hue;\n }\n hue = h;\n if (type(hue) === 'array') {\n dh = hue[1] - hue[0];\n if (dh === 0) {\n hue = hue[1];\n }\n } else {\n dh = 0;\n }\n return f;\n };\n f.lightness = function (h) {\n if (h == null) {\n return lightness;\n }\n if (type(h) === 'array') {\n lightness = h;\n dl = h[1] - h[0];\n } else {\n lightness = [h, h];\n dl = 0;\n }\n return f;\n };\n f.scale = () => chroma.scale(f);\n f.hue(hue);\n return f;\n}\n","import Color from '../Color.js';\nconst digits = '0123456789abcdef';\n\nconst { floor, random } = Math;\n\nexport default () => {\n let code = '#';\n for (let i = 0; i < 6; i++) {\n code += digits.charAt(floor(random() * 16));\n }\n return new Color(code, 'hex');\n};\n","import type from './type.js';\n\nconst { log, pow, floor, abs } = Math;\n\nexport function analyze(data, key = null) {\n const r = {\n min: Number.MAX_VALUE,\n max: Number.MAX_VALUE * -1,\n sum: 0,\n values: [],\n count: 0\n };\n if (type(data) === 'object') {\n data = Object.values(data);\n }\n data.forEach((val) => {\n if (key && type(val) === 'object') val = val[key];\n if (val !== undefined && val !== null && !isNaN(val)) {\n r.values.push(val);\n r.sum += val;\n if (val < r.min) r.min = val;\n if (val > r.max) r.max = val;\n r.count += 1;\n }\n });\n\n r.domain = [r.min, r.max];\n\n r.limits = (mode, num) => limits(r, mode, num);\n\n return r;\n}\n\nexport function limits(data, mode = 'equal', num = 7) {\n if (type(data) == 'array') {\n data = analyze(data);\n }\n const { min, max } = data;\n const values = data.values.sort((a, b) => a - b);\n\n if (num === 1) {\n return [min, max];\n }\n\n const limits = [];\n\n if (mode.substr(0, 1) === 'c') {\n // continuous\n limits.push(min);\n limits.push(max);\n }\n\n if (mode.substr(0, 1) === 'e') {\n // equal interval\n limits.push(min);\n for (let i = 1; i < num; i++) {\n limits.push(min + (i / num) * (max - min));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'l') {\n // log scale\n if (min <= 0) {\n throw new Error(\n 'Logarithmic scales are only possible for values > 0'\n );\n }\n const min_log = Math.LOG10E * log(min);\n const max_log = Math.LOG10E * log(max);\n limits.push(min);\n for (let i = 1; i < num; i++) {\n limits.push(pow(10, min_log + (i / num) * (max_log - min_log)));\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'q') {\n // quantile scale\n limits.push(min);\n for (let i = 1; i < num; i++) {\n const p = ((values.length - 1) * i) / num;\n const pb = floor(p);\n if (pb === p) {\n limits.push(values[pb]);\n } else {\n // p > pb\n const pr = p - pb;\n limits.push(values[pb] * (1 - pr) + values[pb + 1] * pr);\n }\n }\n limits.push(max);\n } else if (mode.substr(0, 1) === 'k') {\n // k-means clustering\n /*\n implementation based on\n http://code.google.com/p/figue/source/browse/trunk/figue.js#336\n simplified for 1-d input values\n */\n let cluster;\n const n = values.length;\n const assignments = new Array(n);\n const clusterSizes = new Array(num);\n let repeat = true;\n let nb_iters = 0;\n let centroids = null;\n\n // get seed values\n centroids = [];\n centroids.push(min);\n for (let i = 1; i < num; i++) {\n centroids.push(min + (i / num) * (max - min));\n }\n centroids.push(max);\n\n while (repeat) {\n // assignment step\n for (let j = 0; j < num; j++) {\n clusterSizes[j] = 0;\n }\n for (let i = 0; i < n; i++) {\n const value = values[i];\n let mindist = Number.MAX_VALUE;\n let best;\n for (let j = 0; j < num; j++) {\n const dist = abs(centroids[j] - value);\n if (dist < mindist) {\n mindist = dist;\n best = j;\n }\n clusterSizes[best]++;\n assignments[i] = best;\n }\n }\n\n // update centroids step\n const newCentroids = new Array(num);\n for (let j = 0; j < num; j++) {\n newCentroids[j] = null;\n }\n for (let i = 0; i < n; i++) {\n cluster = assignments[i];\n if (newCentroids[cluster] === null) {\n newCentroids[cluster] = values[i];\n } else {\n newCentroids[cluster] += values[i];\n }\n }\n for (let j = 0; j < num; j++) {\n newCentroids[j] *= 1 / clusterSizes[j];\n }\n\n // check convergence\n repeat = false;\n for (let j = 0; j < num; j++) {\n if (newCentroids[j] !== centroids[j]) {\n repeat = true;\n break;\n }\n }\n\n centroids = newCentroids;\n nb_iters++;\n\n if (nb_iters > 200) {\n repeat = false;\n }\n }\n\n // finished k-means clustering\n // the next part is borrowed from gabrielflor.it\n const kClusters = {};\n for (let j = 0; j < num; j++) {\n kClusters[j] = [];\n }\n for (let i = 0; i < n; i++) {\n cluster = assignments[i];\n kClusters[cluster].push(values[i]);\n }\n let tmpKMeansBreaks = [];\n for (let j = 0; j < num; j++) {\n tmpKMeansBreaks.push(kClusters[j][0]);\n tmpKMeansBreaks.push(kClusters[j][kClusters[j].length - 1]);\n }\n tmpKMeansBreaks = tmpKMeansBreaks.sort((a, b) => a - b);\n limits.push(tmpKMeansBreaks[0]);\n for (let i = 1; i < tmpKMeansBreaks.length; i += 2) {\n const v = tmpKMeansBreaks[i];\n if (!isNaN(v) && limits.indexOf(v) === -1) {\n limits.push(v);\n }\n }\n }\n return limits;\n}\n","import Color from '../Color.js';\nimport '../ops/luminance.js';\n\nexport default (a, b) => {\n // WCAG contrast ratio\n // see http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n a = new Color(a);\n b = new Color(b);\n const l1 = a.luminance();\n const l2 = b.luminance();\n return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05);\n};\n","import Color from '../Color.js';\nimport mix from '../generator/mix.js';\n\n/**\n * @license\n *\n * The APCA contrast prediction algorithm is based of the formulas published\n * in the APCA-1.0.98G specification by Myndex. The specification is available at:\n * https://raw.githubusercontent.com/Myndex/apca-w3/master/images/APCAw3_0.1.17_APCA0.0.98G.svg\n *\n * Note that the APCA implementation is still beta, so please update to\n * future versions of chroma.js when they become available.\n *\n * You can read more about the APCA Readability Criterion at\n * https://readtech.org/ARC/\n */\n\n// constants\nconst W_offset = 0.027;\nconst P_in = 0.0005;\nconst P_out = 0.1;\nconst R_scale = 1.14;\nconst B_threshold = 0.022;\nconst B_exp = 1.414;\n\nexport default (text, bg) => {\n // parse input colors\n text = new Color(text);\n bg = new Color(bg);\n // if text color has alpha, blend against background\n if (text.alpha() < 1) {\n text = mix(bg, text, text.alpha(), 'rgb');\n }\n const l_text = lum(...text.rgb());\n const l_bg = lum(...bg.rgb());\n\n // soft clamp black levels\n const Y_text =\n l_text >= B_threshold\n ? l_text\n : l_text + Math.pow(B_threshold - l_text, B_exp);\n const Y_bg =\n l_bg >= B_threshold ? l_bg : l_bg + Math.pow(B_threshold - l_bg, B_exp);\n\n // normal polarity (dark text on light background)\n const S_norm = Math.pow(Y_bg, 0.56) - Math.pow(Y_text, 0.57);\n // reverse polarity (light text on dark background)\n const S_rev = Math.pow(Y_bg, 0.65) - Math.pow(Y_text, 0.62);\n // clamp noise then scale\n const C =\n Math.abs(Y_bg - Y_text) < P_in\n ? 0\n : Y_text < Y_bg\n ? S_norm * R_scale\n : S_rev * R_scale;\n // clamp minimum contrast then offset\n const S_apc = Math.abs(C) < P_out ? 0 : C > 0 ? C - W_offset : C + W_offset;\n // scale to 100\n return S_apc * 100;\n};\n\nfunction lum(r, g, b) {\n return (\n 0.2126729 * Math.pow(r / 255, 2.4) +\n 0.7151522 * Math.pow(g / 255, 2.4) +\n 0.072175 * Math.pow(b / 255, 2.4)\n );\n}\n","import Color from '../Color.js';\nconst { sqrt, pow, min, max, atan2, abs, cos, sin, exp, PI } = Math;\n\nexport default function (a, b, Kl = 1, Kc = 1, Kh = 1) {\n // Delta E (CIE 2000)\n // see http://www.brucelindbloom.com/index.html?Eqn_DeltaE_CIE2000.html\n var rad2deg = function (rad) {\n return (360 * rad) / (2 * PI);\n };\n var deg2rad = function (deg) {\n return (2 * PI * deg) / 360;\n };\n a = new Color(a);\n b = new Color(b);\n const [L1, a1, b1] = Array.from(a.lab());\n const [L2, a2, b2] = Array.from(b.lab());\n const avgL = (L1 + L2) / 2;\n const C1 = sqrt(pow(a1, 2) + pow(b1, 2));\n const C2 = sqrt(pow(a2, 2) + pow(b2, 2));\n const avgC = (C1 + C2) / 2;\n const G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7))));\n const a1p = a1 * (1 + G);\n const a2p = a2 * (1 + G);\n const C1p = sqrt(pow(a1p, 2) + pow(b1, 2));\n const C2p = sqrt(pow(a2p, 2) + pow(b2, 2));\n const avgCp = (C1p + C2p) / 2;\n const arctan1 = rad2deg(atan2(b1, a1p));\n const arctan2 = rad2deg(atan2(b2, a2p));\n const h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360;\n const h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360;\n const avgHp =\n abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2;\n const T =\n 1 -\n 0.17 * cos(deg2rad(avgHp - 30)) +\n 0.24 * cos(deg2rad(2 * avgHp)) +\n 0.32 * cos(deg2rad(3 * avgHp + 6)) -\n 0.2 * cos(deg2rad(4 * avgHp - 63));\n let deltaHp = h2p - h1p;\n deltaHp =\n abs(deltaHp) <= 180\n ? deltaHp\n : h2p <= h1p\n ? deltaHp + 360\n : deltaHp - 360;\n deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2);\n const deltaL = L2 - L1;\n const deltaCp = C2p - C1p;\n const sl = 1 + (0.015 * pow(avgL - 50, 2)) / sqrt(20 + pow(avgL - 50, 2));\n const sc = 1 + 0.045 * avgCp;\n const sh = 1 + 0.015 * avgCp * T;\n const deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2));\n const Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7)));\n const Rt = -Rc * sin(2 * deg2rad(deltaTheta));\n const result = sqrt(\n pow(deltaL / (Kl * sl), 2) +\n pow(deltaCp / (Kc * sc), 2) +\n pow(deltaHp / (Kh * sh), 2) +\n Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))\n );\n return max(0, min(100, result));\n}\n","import Color from '../Color.js';\n\n// simple Euclidean distance\nexport default function (a, b, mode = 'lab') {\n // Delta E (CIE 1976)\n // see http://www.brucelindbloom.com/index.html?Equations.html\n a = new Color(a);\n b = new Color(b);\n const l1 = a.get(mode);\n const l2 = b.get(mode);\n let sum_sq = 0;\n for (let i in l1) {\n const d = (l1[i] || 0) - (l2[i] || 0);\n sum_sq += d * d;\n }\n return Math.sqrt(sum_sq);\n}\n","import Color from '../Color.js';\n\nexport default (...args) => {\n try {\n new Color(...args);\n return true;\n // eslint-disable-next-line\n } catch (e) {\n return false;\n }\n};\n","// some pre-defined color scales:\nimport chroma from '../chroma.js';\nimport '../io/hsl/index.js';\nimport scale from '../generator/scale.js';\n\nexport default {\n cool() {\n return scale([chroma.hsl(180, 1, 0.9), chroma.hsl(250, 0.7, 0.4)]);\n },\n hot() {\n return scale(['#000', '#f00', '#ff0', '#fff'], [0, 0.25, 0.75, 1]).mode(\n 'rgb'\n );\n }\n};\n","/**\n ColorBrewer colors for chroma.js\n\n Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The\n Pennsylvania State University.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software distributed\n under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n CONDITIONS OF ANY KIND, either express or implied. See the License for the\n specific language governing permissions and limitations under the License.\n*/\n\nconst colorbrewer = {\n // sequential\n OrRd: ['#fff7ec', '#fee8c8', '#fdd49e', '#fdbb84', '#fc8d59', '#ef6548', '#d7301f', '#b30000', '#7f0000'],\n PuBu: ['#fff7fb', '#ece7f2', '#d0d1e6', '#a6bddb', '#74a9cf', '#3690c0', '#0570b0', '#045a8d', '#023858'],\n BuPu: ['#f7fcfd', '#e0ecf4', '#bfd3e6', '#9ebcda', '#8c96c6', '#8c6bb1', '#88419d', '#810f7c', '#4d004b'],\n Oranges: ['#fff5eb', '#fee6ce', '#fdd0a2', '#fdae6b', '#fd8d3c', '#f16913', '#d94801', '#a63603', '#7f2704'],\n BuGn: ['#f7fcfd', '#e5f5f9', '#ccece6', '#99d8c9', '#66c2a4', '#41ae76', '#238b45', '#006d2c', '#00441b'],\n YlOrBr: ['#ffffe5', '#fff7bc', '#fee391', '#fec44f', '#fe9929', '#ec7014', '#cc4c02', '#993404', '#662506'],\n YlGn: ['#ffffe5', '#f7fcb9', '#d9f0a3', '#addd8e', '#78c679', '#41ab5d', '#238443', '#006837', '#004529'],\n Reds: ['#fff5f0', '#fee0d2', '#fcbba1', '#fc9272', '#fb6a4a', '#ef3b2c', '#cb181d', '#a50f15', '#67000d'],\n RdPu: ['#fff7f3', '#fde0dd', '#fcc5c0', '#fa9fb5', '#f768a1', '#dd3497', '#ae017e', '#7a0177', '#49006a'],\n Greens: ['#f7fcf5', '#e5f5e0', '#c7e9c0', '#a1d99b', '#74c476', '#41ab5d', '#238b45', '#006d2c', '#00441b'],\n YlGnBu: ['#ffffd9', '#edf8b1', '#c7e9b4', '#7fcdbb', '#41b6c4', '#1d91c0', '#225ea8', '#253494', '#081d58'],\n Purples: ['#fcfbfd', '#efedf5', '#dadaeb', '#bcbddc', '#9e9ac8', '#807dba', '#6a51a3', '#54278f', '#3f007d'],\n GnBu: ['#f7fcf0', '#e0f3db', '#ccebc5', '#a8ddb5', '#7bccc4', '#4eb3d3', '#2b8cbe', '#0868ac', '#084081'],\n Greys: ['#ffffff', '#f0f0f0', '#d9d9d9', '#bdbdbd', '#969696', '#737373', '#525252', '#252525', '#000000'],\n YlOrRd: ['#ffffcc', '#ffeda0', '#fed976', '#feb24c', '#fd8d3c', '#fc4e2a', '#e31a1c', '#bd0026', '#800026'],\n PuRd: ['#f7f4f9', '#e7e1ef', '#d4b9da', '#c994c7', '#df65b0', '#e7298a', '#ce1256', '#980043', '#67001f'],\n Blues: ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#08519c', '#08306b'],\n PuBuGn: ['#fff7fb', '#ece2f0', '#d0d1e6', '#a6bddb', '#67a9cf', '#3690c0', '#02818a', '#016c59', '#014636'],\n Viridis: ['#440154', '#482777', '#3f4a8a', '#31678e', '#26838f', '#1f9d8a', '#6cce5a', '#b6de2b', '#fee825'],\n\n // diverging\n Spectral: ['#9e0142', '#d53e4f', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#e6f598', '#abdda4', '#66c2a5', '#3288bd', '#5e4fa2'],\n RdYlGn: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'],\n RdBu: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#f7f7f7', '#d1e5f0', '#92c5de', '#4393c3', '#2166ac', '#053061'],\n PiYG: ['#8e0152', '#c51b7d', '#de77ae', '#f1b6da', '#fde0ef', '#f7f7f7', '#e6f5d0', '#b8e186', '#7fbc41', '#4d9221', '#276419'],\n PRGn: ['#40004b', '#762a83', '#9970ab', '#c2a5cf', '#e7d4e8', '#f7f7f7', '#d9f0d3', '#a6dba0', '#5aae61', '#1b7837', '#00441b'],\n RdYlBu: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4', '#313695'],\n BrBG: ['#543005', '#8c510a', '#bf812d', '#dfc27d', '#f6e8c3', '#f5f5f5', '#c7eae5', '#80cdc1', '#35978f', '#01665e', '#003c30'],\n RdGy: ['#67001f', '#b2182b', '#d6604d', '#f4a582', '#fddbc7', '#ffffff', '#e0e0e0', '#bababa', '#878787', '#4d4d4d', '#1a1a1a'],\n PuOr: ['#7f3b08', '#b35806', '#e08214', '#fdb863', '#fee0b6', '#f7f7f7', '#d8daeb', '#b2abd2', '#8073ac', '#542788', '#2d004b'],\n\n // qualitative\n Set2: ['#66c2a5', '#fc8d62', '#8da0cb', '#e78ac3', '#a6d854', '#ffd92f', '#e5c494', '#b3b3b3'],\n Accent: ['#7fc97f', '#beaed4', '#fdc086', '#ffff99', '#386cb0', '#f0027f', '#bf5b17', '#666666'],\n Set1: ['#e41a1c', '#377eb8', '#4daf4a', '#984ea3', '#ff7f00', '#ffff33', '#a65628', '#f781bf', '#999999'],\n Set3: ['#8dd3c7', '#ffffb3', '#bebada', '#fb8072', '#80b1d3', '#fdb462', '#b3de69', '#fccde5', '#d9d9d9', '#bc80bd', '#ccebc5', '#ffed6f'],\n Dark2: ['#1b9e77', '#d95f02', '#7570b3', '#e7298a', '#66a61e', '#e6ab02', '#a6761d', '#666666'],\n Paired: ['#a6cee3', '#1f78b4', '#b2df8a', '#33a02c', '#fb9a99', '#e31a1c', '#fdbf6f', '#ff7f00', '#cab2d6', '#6a3d9a', '#ffff99', '#b15928'],\n Pastel2: ['#b3e2cd', '#fdcdac', '#cbd5e8', '#f4cae4', '#e6f5c9', '#fff2ae', '#f1e2cc', '#cccccc'],\n Pastel1: ['#fbb4ae', '#b3cde3', '#ccebc5', '#decbe4', '#fed9a6', '#ffffcc', '#e5d8bd', '#fddaec', '#f2f2f2']\n};\n\nconst colorbrewerTypes = Object.keys(colorbrewer);\nconst typeMap = new Map(colorbrewerTypes.map((key) => [key.toLowerCase(), key]));\n\n// use Proxy to allow case-insensitive access to palettes\nconst colorbrewerProxy =\n typeof Proxy === 'function'\n ? new Proxy(colorbrewer, {\n get(target, prop) {\n const lower = prop.toLowerCase();\n if (typeMap.has(lower)) {\n return target[typeMap.get(lower)];\n }\n },\n getOwnPropertyNames() {\n return Object.getOwnPropertyNames(colorbrewerTypes);\n }\n })\n : colorbrewer;\n\nexport default colorbrewerProxy;\n","import { unpack } from '../../utils/index.js';\n\nconst cmyk2rgb = (...args) => {\n args = unpack(args, 'cmyk');\n const [c, m, y, k] = args;\n const alpha = args.length > 4 ? args[4] : 1;\n if (k === 1) return [0, 0, 0, alpha];\n return [\n c >= 1 ? 0 : 255 * (1 - c) * (1 - k), // r\n m >= 1 ? 0 : 255 * (1 - m) * (1 - k), // g\n y >= 1 ? 0 : 255 * (1 - y) * (1 - k), // b\n alpha\n ];\n};\n\nexport default cmyk2rgb;\n","import { unpack } from '../../utils/index.js';\nconst { max } = Math;\n\nconst rgb2cmyk = (...args) => {\n let [r, g, b] = unpack(args, 'rgb');\n r = r / 255;\n g = g / 255;\n b = b / 255;\n const k = 1 - max(r, max(g, b));\n const f = k < 1 ? 1 / (1 - k) : 0;\n const c = (1 - r - k) * f;\n const m = (1 - g - k) * f;\n const y = (1 - b - k) * f;\n return [c, m, y, k];\n};\n\nexport default rgb2cmyk;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { unpack, type } from '../../utils/index.js';\nimport cmyk2rgb from './cmyk2rgb.js';\nimport rgb2cmyk from './rgb2cmyk.js';\n\nColor.prototype.cmyk = function () {\n return rgb2cmyk(this._rgb);\n};\n\nconst cmyk = (...args) => new Color(...args, 'cmyk');\nObject.assign(chroma, { cmyk });\n\ninput.format.cmyk = cmyk2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'cmyk');\n if (type(args) === 'array' && args.length === 4) {\n return 'cmyk';\n }\n }\n});\n\nexport { cmyk };\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - hsl2css(h,s,l)\n * - hsl2css(h,s,l,a)\n * - hsl2css([h,s,l], mode)\n * - hsl2css([h,s,l,a], mode)\n * - hsl2css({h,s,l,a}, mode)\n */\nconst hsl2css = (...args) => {\n const hsla = unpack(args, 'hsla');\n let mode = last(args) || 'lsa';\n hsla[0] = rnd2(hsla[0] || 0) + 'deg';\n hsla[1] = rnd2(hsla[1] * 100) + '%';\n hsla[2] = rnd2(hsla[2] * 100) + '%';\n if (mode === 'hsla' || (hsla.length > 3 && hsla[3] < 1)) {\n hsla[3] = '/ ' + (hsla.length > 3 ? hsla[3] : 1);\n mode = 'hsla';\n } else {\n hsla.length = 3;\n }\n return `${mode.substr(0, 3)}(${hsla.join(' ')})`;\n};\n\nexport default hsl2css;\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - lab2css(l,a,b)\n * - lab2css(l,a,b,alpha)\n * - lab2css([l,a,b], mode)\n * - lab2css([l,a,b,alpha], mode)\n */\nconst lab2css = (...args) => {\n const laba = unpack(args, 'lab');\n let mode = last(args) || 'lab';\n laba[0] = rnd2(laba[0]) + '%';\n laba[1] = rnd2(laba[1]);\n laba[2] = rnd2(laba[2]);\n if (mode === 'laba' || (laba.length > 3 && laba[3] < 1)) {\n laba[3] = '/ ' + (laba.length > 3 ? laba[3] : 1);\n } else {\n laba.length = 3;\n }\n return `lab(${laba.join(' ')})`;\n};\n\nexport default lab2css;\n","import { unpack, last, rnd2 } from '../../utils/index.js';\n\n/*\n * supported arguments:\n * - lab2css(l,a,b)\n * - lab2css(l,a,b,alpha)\n * - lab2css([l,a,b], mode)\n * - lab2css([l,a,b,alpha], mode)\n */\nconst lch2css = (...args) => {\n const lcha = unpack(args, 'lch');\n let mode = last(args) || 'lab';\n lcha[0] = rnd2(lcha[0]) + '%';\n lcha[1] = rnd2(lcha[1]);\n lcha[2] = isNaN(lcha[2]) ? 'none' : rnd2(lcha[2]) + 'deg'; // add deg unit to hue\n if (mode === 'lcha' || (lcha.length > 3 && lcha[3] < 1)) {\n lcha[3] = '/ ' + (lcha.length > 3 ? lcha[3] : 1);\n } else {\n lcha.length = 3;\n }\n return `lch(${lcha.join(' ')})`;\n};\n\nexport default lch2css;\n","import { unpack, rnd2, rnd3 } from '../../utils/index.js';\n\nconst oklab2css = (...args) => {\n const laba = unpack(args, 'lab');\n laba[0] = rnd2(laba[0] * 100) + '%';\n laba[1] = rnd3(laba[1]);\n laba[2] = rnd3(laba[2]);\n if (laba.length > 3 && laba[3] < 1) {\n laba[3] = '/ ' + (laba.length > 3 ? laba[3] : 1);\n } else {\n laba.length = 3;\n }\n return `oklab(${laba.join(' ')})`;\n};\n\nexport default oklab2css;\n","import { unpack } from '../../utils/index.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport lab2lch from '../lch/lab2lch.js';\n\nconst rgb2oklch = (...args) => {\n const [r, g, b, ...rest] = unpack(args, 'rgb');\n const [l, a, b_] = rgb2oklab(r, g, b);\n const [L, c, h] = lab2lch(l, a, b_);\n return [L, c, h, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default rgb2oklch;\n","import { unpack, rnd2, rnd3 } from '../../utils/index.js';\n\nconst oklch2css = (...args) => {\n const lcha = unpack(args, 'lch');\n lcha[0] = rnd2(lcha[0] * 100) + '%';\n lcha[1] = rnd3(lcha[1]);\n lcha[2] = isNaN(lcha[2]) ? 'none' : rnd2(lcha[2]) + 'deg'; // add deg unit to hue\n if (lcha.length > 3 && lcha[3] < 1) {\n lcha[3] = '/ ' + (lcha.length > 3 ? lcha[3] : 1);\n } else {\n lcha.length = 3;\n }\n return `oklch(${lcha.join(' ')})`;\n};\n\nexport default oklch2css;\n","import { unpack, last } from '../../utils/index.js';\nimport hsl2css from './hsl2css.js';\nimport rgb2hsl from '../hsl/rgb2hsl.js';\nimport lab2css from './lab2css.js';\nimport rgb2lab from '../lab/rgb2lab.js';\nimport lch2css from './lch2css.js';\nimport rgb2lch from '../lch/rgb2lch.js';\nimport rgb2oklab from '../oklab/rgb2oklab.js';\nimport oklab2css from './oklab2css.js';\nimport rgb2oklch from '../oklch/rgb2oklch.js';\nimport oklch2css from './oklch2css.js';\nimport { getLabWhitePoint, setLabWhitePoint } from '../lab/lab-constants.js';\nconst { round } = Math;\n\n/*\n * supported arguments:\n * - rgb2css(r,g,b)\n * - rgb2css(r,g,b,a)\n * - rgb2css([r,g,b], mode)\n * - rgb2css([r,g,b,a], mode)\n * - rgb2css({r,g,b,a}, mode)\n */\nconst rgb2css = (...args) => {\n const rgba = unpack(args, 'rgba');\n let mode = last(args) || 'rgb';\n if (mode.substr(0, 3) === 'hsl') {\n return hsl2css(rgb2hsl(rgba), mode);\n }\n if (mode.substr(0, 3) === 'lab') {\n // change to D50 lab whitepoint since this is what W3C is using for CSS Lab colors\n const prevWhitePoint = getLabWhitePoint();\n setLabWhitePoint('d50');\n const cssColor = lab2css(rgb2lab(rgba), mode);\n setLabWhitePoint(prevWhitePoint);\n return cssColor;\n }\n if (mode.substr(0, 3) === 'lch') {\n // change to D50 lab whitepoint since this is what W3C is using for CSS Lab colors\n const prevWhitePoint = getLabWhitePoint();\n setLabWhitePoint('d50');\n const cssColor = lch2css(rgb2lch(rgba), mode);\n setLabWhitePoint(prevWhitePoint);\n return cssColor;\n }\n if (mode.substr(0, 5) === 'oklab') {\n return oklab2css(rgb2oklab(rgba));\n }\n if (mode.substr(0, 5) === 'oklch') {\n return oklch2css(rgb2oklch(rgba));\n }\n rgba[0] = round(rgba[0]);\n rgba[1] = round(rgba[1]);\n rgba[2] = round(rgba[2]);\n if (mode === 'rgba' || (rgba.length > 3 && rgba[3] < 1)) {\n rgba[3] = '/ ' + (rgba.length > 3 ? rgba[3] : 1);\n mode = 'rgba';\n }\n return `${mode.substr(0, 3)}(${rgba.slice(0, mode === 'rgb' ? 3 : 4).join(' ')})`;\n};\n\nexport default rgb2css;\n","import { unpack } from '../../utils/index.js';\nimport lch2lab from '../lch/lch2lab.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\n\nconst oklch2rgb = (...args) => {\n args = unpack(args, 'lch');\n const [l, c, h, ...rest] = args;\n const [L, a, b_] = lch2lab(l, c, h);\n const [r, g, b] = oklab2rgb(L, a, b_);\n return [r, g, b, ...(rest.length > 0 && rest[0] < 1 ? [rest[0]] : [])];\n};\n\nexport default oklch2rgb;\n","import hsl2rgb from '../hsl/hsl2rgb.js';\nimport lab2rgb from '../lab/lab2rgb.js';\nimport lch2rgb from '../lch/lch2rgb.js';\nimport oklab2rgb from '../oklab/oklab2rgb.js';\nimport oklch2rgb from '../oklch/oklch2rgb.js';\nimport input from '../input.js';\nimport limit from '../../utils/limit.js';\nimport { getLabWhitePoint, setLabWhitePoint } from '../lab/lab-constants.js';\n\nconst INT_OR_PCT = /((?:-?\\d+)|(?:-?\\d+(?:\\.\\d+)?)%|none)/.source;\nconst FLOAT_OR_PCT = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%?)|none)/.source;\nconst PCT = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)%)|none)/.source;\nconst RE_S = /\\s*/.source;\nconst SEP = /\\s+/.source;\nconst COMMA = /\\s*,\\s*/.source;\nconst ANLGE = /((?:-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:deg)?)|none)/.source;\nconst ALPHA = /\\s*(?:\\/\\s*((?:[01]|[01]?\\.\\d+)|\\d+(?:\\.\\d+)?%))?/.source;\n\n// e.g. rgb(250 20 0), rgb(100% 50% 20%), rgb(100% 50% 20% / 0.5)\nconst RE_RGB = new RegExp(\n '^rgba?\\\\(' +\n RE_S +\n [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT].join(SEP) +\n ALPHA +\n '\\\\)$'\n);\nconst RE_RGB_LEGACY = new RegExp(\n '^rgb\\\\(' +\n RE_S +\n [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT].join(COMMA) +\n RE_S +\n '\\\\)$'\n);\nconst RE_RGBA_LEGACY = new RegExp(\n '^rgba\\\\(' +\n RE_S +\n [INT_OR_PCT, INT_OR_PCT, INT_OR_PCT, FLOAT_OR_PCT].join(COMMA) +\n RE_S +\n '\\\\)$'\n);\n\nconst RE_HSL = new RegExp(\n '^hsla?\\\\(' + RE_S + [ANLGE, PCT, PCT].join(SEP) + ALPHA + '\\\\)$'\n);\nconst RE_HSL_LEGACY = new RegExp(\n '^hsl?\\\\(' + RE_S + [ANLGE, PCT, PCT].join(COMMA) + RE_S + '\\\\)$'\n);\nconst RE_HSLA_LEGACY =\n /^hsla\\(\\s*(-?\\d+(?:\\.\\d+)?),\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*(-?\\d+(?:\\.\\d+)?)%\\s*,\\s*([01]|[01]?\\.\\d+)\\)$/;\n\nconst RE_LAB = new RegExp(\n '^lab\\\\(' +\n RE_S +\n [FLOAT_OR_PCT, FLOAT_OR_PCT, FLOAT_OR_PCT].join(SEP) +\n ALPHA +\n '\\\\)$'\n);\nconst RE_LCH = new RegExp(\n '^lch\\\\(' +\n RE_S +\n [FLOAT_OR_PCT, FLOAT_OR_PCT, ANLGE].join(SEP) +\n ALPHA +\n '\\\\)$'\n);\nconst RE_OKLAB = new RegExp(\n '^oklab\\\\(' +\n RE_S +\n [FLOAT_OR_PCT, FLOAT_OR_PCT, FLOAT_OR_PCT].join(SEP) +\n ALPHA +\n '\\\\)$'\n);\nconst RE_OKLCH = new RegExp(\n '^oklch\\\\(' +\n RE_S +\n [FLOAT_OR_PCT, FLOAT_OR_PCT, ANLGE].join(SEP) +\n ALPHA +\n '\\\\)$'\n);\n\nconst { round } = Math;\n\nconst roundRGB = (rgb) => {\n return rgb.map((v, i) => (i <= 2 ? limit(round(v), 0, 255) : v));\n};\n\nconst percentToAbsolute = (pct, min = 0, max = 100, signed = false) => {\n if (typeof pct === 'string' && pct.endsWith('%')) {\n pct = parseFloat(pct.substring(0, pct.length - 1)) / 100;\n if (signed) {\n // signed percentages are in the range -100% to 100%\n pct = min + (pct + 1) * 0.5 * (max - min);\n } else {\n pct = min + pct * (max - min);\n }\n }\n return +pct;\n};\n\nconst noneToValue = (v, noneValue) => {\n return v === 'none' ? noneValue : v;\n};\n\nconst css2rgb = (css) => {\n css = css.toLowerCase().trim();\n\n if (css === 'transparent') {\n return [0, 0, 0, 0];\n }\n\n let m;\n\n if (input.format.named) {\n try {\n return input.format.named(css);\n // eslint-disable-next-line\n } catch (e) {}\n }\n\n // rgb(250 20 0) or rgb(250,20,0)\n if ((m = css.match(RE_RGB)) || (m = css.match(RE_RGB_LEGACY))) {\n let rgb = m.slice(1, 4);\n for (let i = 0; i < 3; i++) {\n rgb[i] = +percentToAbsolute(noneToValue(rgb[i], 0), 0, 255);\n }\n rgb = roundRGB(rgb);\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha; // default alpha\n return rgb;\n }\n\n // rgba(250,20,0,0.4)\n if ((m = css.match(RE_RGBA_LEGACY))) {\n const rgb = m.slice(1, 5);\n for (let i = 0; i < 4; i++) {\n rgb[i] = +percentToAbsolute(rgb[i], 0, 255);\n }\n return rgb;\n }\n\n // hsl(0,100%,50%)\n if ((m = css.match(RE_HSL)) || (m = css.match(RE_HSL_LEGACY))) {\n const hsl = m.slice(1, 4);\n hsl[0] = +noneToValue(hsl[0].replace('deg', ''), 0);\n hsl[1] = +percentToAbsolute(noneToValue(hsl[1], 0), 0, 100) * 0.01;\n hsl[2] = +percentToAbsolute(noneToValue(hsl[2], 0), 0, 100) * 0.01;\n const rgb = roundRGB(hsl2rgb(hsl));\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha;\n return rgb;\n }\n\n // hsla(0,100%,50%,0.5)\n if ((m = css.match(RE_HSLA_LEGACY))) {\n const hsl = m.slice(1, 4);\n hsl[1] *= 0.01;\n hsl[2] *= 0.01;\n const rgb = hsl2rgb(hsl);\n for (let i = 0; i < 3; i++) {\n rgb[i] = round(rgb[i]);\n }\n rgb[3] = +m[4]; // default alpha = 1\n return rgb;\n }\n\n if ((m = css.match(RE_LAB))) {\n const lab = m.slice(1, 4);\n lab[0] = percentToAbsolute(noneToValue(lab[0], 0), 0, 100);\n lab[1] = percentToAbsolute(noneToValue(lab[1], 0), -125, 125, true);\n lab[2] = percentToAbsolute(noneToValue(lab[2], 0), -125, 125, true);\n // convert to D50 Lab whitepoint\n const wp = getLabWhitePoint();\n setLabWhitePoint('d50');\n const rgb = roundRGB(lab2rgb(lab));\n // convert back to original Lab whitepoint\n setLabWhitePoint(wp);\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha;\n return rgb;\n }\n\n if ((m = css.match(RE_LCH))) {\n const lch = m.slice(1, 4);\n lch[0] = percentToAbsolute(lch[0], 0, 100);\n lch[1] = percentToAbsolute(noneToValue(lch[1], 0), 0, 150, false);\n lch[2] = +noneToValue(lch[2].replace('deg', ''), 0);\n // convert to D50 Lab whitepoint\n const wp = getLabWhitePoint();\n setLabWhitePoint('d50');\n const rgb = roundRGB(lch2rgb(lch));\n // convert back to original Lab whitepoint\n setLabWhitePoint(wp);\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha;\n return rgb;\n }\n\n if ((m = css.match(RE_OKLAB))) {\n const oklab = m.slice(1, 4);\n oklab[0] = percentToAbsolute(noneToValue(oklab[0], 0), 0, 1);\n oklab[1] = percentToAbsolute(noneToValue(oklab[1], 0), -0.4, 0.4, true);\n oklab[2] = percentToAbsolute(noneToValue(oklab[2], 0), -0.4, 0.4, true);\n const rgb = roundRGB(oklab2rgb(oklab));\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha;\n return rgb;\n }\n\n if ((m = css.match(RE_OKLCH))) {\n const oklch = m.slice(1, 4);\n oklch[0] = percentToAbsolute(noneToValue(oklch[0], 0), 0, 1);\n oklch[1] = percentToAbsolute(noneToValue(oklch[1], 0), 0, 0.4, false);\n oklch[2] = +noneToValue(oklch[2].replace('deg', ''), 0);\n const rgb = roundRGB(oklch2rgb(oklch));\n const alpha = m[4] !== undefined ? +percentToAbsolute(m[4], 0, 1) : 1;\n rgb[3] = alpha;\n return rgb;\n }\n};\n\ncss2rgb.test = (s) => {\n return (\n // modern\n RE_RGB.test(s) ||\n RE_HSL.test(s) ||\n RE_LAB.test(s) ||\n RE_LCH.test(s) ||\n RE_OKLAB.test(s) ||\n RE_OKLCH.test(s) ||\n // legacy\n RE_RGB_LEGACY.test(s) ||\n RE_RGBA_LEGACY.test(s) ||\n RE_HSL_LEGACY.test(s) ||\n RE_HSLA_LEGACY.test(s) ||\n s === 'transparent'\n );\n};\n\nexport default css2rgb;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport { type } from '../../utils/index.js';\n\nimport rgb2css from './rgb2css.js';\nimport css2rgb from './css2rgb.js';\n\nColor.prototype.css = function (mode) {\n return rgb2css(this._rgb, mode);\n};\n\nconst css = (...args) => new Color(...args, 'css');\nchroma.css = css;\n\ninput.format.css = css2rgb;\n\ninput.autodetect.push({\n p: 5,\n test: (h, ...rest) => {\n if (!rest.length && type(h) === 'string' && css2rgb.test(h)) {\n return 'css';\n }\n }\n});\n\nexport { css };\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport input from '../input.js';\nimport { unpack } from '../../utils/index.js';\n\ninput.format.gl = (...args) => {\n const rgb = unpack(args, 'rgba');\n rgb[0] *= 255;\n rgb[1] *= 255;\n rgb[2] *= 255;\n return rgb;\n};\n\nconst gl = (...args) => new Color(...args, 'gl');\nchroma.gl = gl;\n\nColor.prototype.gl = function () {\n const rgb = this._rgb;\n return [rgb[0] / 255, rgb[1] / 255, rgb[2] / 255, rgb[3]];\n};\n\nexport { gl };\n","import Color from '../../Color.js';\nimport chroma from '../../chroma.js';\nimport { type } from '../../utils/index.js';\nimport input from '../input.js';\nimport hex2rgb from './hex2rgb.js';\nimport rgb2hex from './rgb2hex.js';\n\nColor.prototype.hex = function (mode) {\n return rgb2hex(this._rgb, mode);\n};\n\nconst hex = (...args) => new Color(...args, 'hex');\nchroma.hex = hex;\n\ninput.format.hex = hex2rgb;\ninput.autodetect.push({\n p: 4,\n test: (h, ...rest) => {\n if (\n !rest.length &&\n type(h) === 'string' &&\n [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0\n ) {\n return 'hex';\n }\n }\n});\n\nexport { hex };\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n */\n\nconst { log } = Math;\n\nconst temperature2rgb = (kelvin) => {\n const temp = kelvin / 100;\n let r, g, b;\n if (temp < 66) {\n r = 255;\n g =\n temp < 6\n ? 0\n : -155.25485562709179 -\n 0.44596950469579133 * (g = temp - 2) +\n 104.49216199393888 * log(g);\n b =\n temp < 20\n ? 0\n : -254.76935184120902 +\n 0.8274096064007395 * (b = temp - 10) +\n 115.67994401066147 * log(b);\n } else {\n r =\n 351.97690566805693 +\n 0.114206453784165 * (r = temp - 55) -\n 40.25366309332127 * log(r);\n g =\n 325.4494125711974 +\n 0.07943456536662342 * (g = temp - 50) -\n 28.0852963507957 * log(g);\n b = 255;\n }\n return [r, g, b, 1];\n};\n\nexport default temperature2rgb;\n","/*\n * Based on implementation by Neil Bartlett\n * https://github.com/neilbartlett/color-temperature\n **/\n\nimport temperature2rgb from './temperature2rgb.js';\nimport { unpack } from '../../utils/index.js';\nconst { round } = Math;\n\nconst rgb2temperature = (...args) => {\n const rgb = unpack(args, 'rgb');\n const r = rgb[0],\n b = rgb[2];\n let minTemp = 1000;\n let maxTemp = 40000;\n const eps = 0.4;\n let temp;\n while (maxTemp - minTemp > eps) {\n temp = (maxTemp + minTemp) * 0.5;\n const rgb = temperature2rgb(temp);\n if (rgb[2] / rgb[0] >= b / r) {\n maxTemp = temp;\n } else {\n minTemp = temp;\n }\n }\n return round(temp);\n};\n\nexport default rgb2temperature;\n","import chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport temperature2rgb from './temperature2rgb.js';\nimport rgb2temperature from './rgb2temperature.js';\n\nColor.prototype.temp =\n Color.prototype.kelvin =\n Color.prototype.temperature =\n function () {\n return rgb2temperature(this._rgb);\n };\n\nconst temp = (...args) => new Color(...args, 'temp');\nObject.assign(chroma, { temp, kelvin: temp, temperature: temp });\n\ninput.format.temp =\n input.format.kelvin =\n input.format.temperature =\n temperature2rgb;\n\nexport { temp, temp as kelvin, temp as temperature };\n","import { unpack, type } from '../../utils/index.js';\nimport chroma from '../../chroma.js';\nimport Color from '../../Color.js';\nimport input from '../input.js';\nimport oklch2rgb from './oklch2rgb.js';\nimport rgb2oklch from './rgb2oklch.js';\n\nColor.prototype.oklch = function () {\n return rgb2oklch(this._rgb);\n};\n\nconst oklch = (...args) => new Color(...args, 'oklch');\nObject.assign(chroma, { oklch });\n\ninput.format.oklch = oklch2rgb;\n\ninput.autodetect.push({\n p: 2,\n test: (...args) => {\n args = unpack(args, 'oklch');\n if (type(args) === 'array' && args.length === 3) {\n return 'oklch';\n }\n }\n});\n\nexport { oklch };\n","// feel free to comment out anything to rollup\n// a smaller chroma.js bundle\nimport chroma from './src/chroma.js';\n\n// io --> convert colors\nimport './src/io/named/index.js';\n\n// operators --> modify existing Colors\nimport './src/ops/alpha.js';\nimport './src/ops/clipped.js';\nimport './src/ops/darken.js';\nimport './src/ops/get.js';\nimport './src/ops/luminance.js';\nimport './src/ops/mix.js';\nimport './src/ops/premultiply.js';\nimport './src/ops/saturate.js';\nimport './src/ops/set.js';\nimport './src/ops/shade.js';\n\n// interpolators\nimport './src/interpolator/rgb.js';\nimport './src/interpolator/lrgb.js';\nimport './src/interpolator/lab.js';\nimport './src/interpolator/lch.js';\nimport './src/interpolator/num.js';\nimport './src/interpolator/hcg.js';\nimport './src/interpolator/hsi.js';\nimport './src/interpolator/hsl.js';\nimport './src/interpolator/hsv.js';\nimport './src/interpolator/oklab.js';\nimport './src/interpolator/oklch.js';\n\n// generators -- > create new colors\nimport average from './src/generator/average.js';\nimport bezier from './src/generator/bezier.js';\nimport blend from './src/generator/blend.js';\nimport cubehelix from './src/generator/cubehelix.js';\nimport mix from './src/generator/mix.js';\nimport random from './src/generator/random.js';\nimport scale from './src/generator/scale.js';\n\n// other utility methods\nimport { analyze } from './src/utils/analyze.js';\nimport contrast from './src/utils/contrast.js';\nimport contrastAPCA from './src/utils/contrastAPCA.js';\nimport deltaE from './src/utils/delta-e.js';\nimport distance from './src/utils/distance.js';\nimport { limits } from './src/utils/analyze.js';\nimport valid from './src/utils/valid.js';\nimport input from './src/io/input.js';\n\n// scale\nimport scales from './src/utils/scales.js';\n\n// colors\nimport colors from './src/colors/w3cx11.js';\nimport brewer from './src/colors/colorbrewer.js';\nimport Color from './src/Color.js';\n\nObject.assign(chroma, {\n analyze,\n average,\n bezier,\n blend,\n brewer,\n Color,\n colors,\n contrast,\n contrastAPCA,\n cubehelix,\n deltaE,\n distance,\n input,\n interpolate: mix,\n limits,\n mix,\n random,\n scale,\n scales,\n valid\n});\n\nexport default chroma;\n\nexport {\n analyze,\n average,\n bezier,\n blend,\n brewer,\n Color,\n colors,\n contrast,\n contrastAPCA,\n cubehelix,\n deltaE,\n distance,\n input,\n limits,\n mix,\n mix as interpolate,\n random,\n scale,\n scales,\n valid\n};\n\nexport * from './src/io/cmyk/index.js';\nexport * from './src/io/css/index.js';\nexport * from './src/io/gl/index.js';\nexport * from './src/io/hcg/index.js';\nexport * from './src/io/hex/index.js';\nexport * from './src/io/hsi/index.js';\nexport * from './src/io/hsl/index.js';\nexport * from './src/io/hsv/index.js';\nexport * from './src/io/lab/index.js';\nexport * from './src/io/lch/index.js';\nexport * from './src/io/num/index.js';\nexport * from './src/io/rgb/index.js';\nexport * from './src/io/temp/index.js';\nexport * from './src/io/oklab/index.js';\nexport * from './src/io/oklch/index.js';\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: 60px 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 &__see-more {\n font-size: 16px;\n\n display: flex;\n justify-content: left;\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 &.big {\n font-size: 20px;\n margin-bottom: 8px;\n }\n }\n\n &__wrapper {\n display: flex;\n flex-direction: column;\n position: relative;\n .not-found {\n padding: 100px 0px;\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, Listen, Watch } from '@stencil/core';\nimport { APIURL, accessToken } from '../api';\nimport { setDataLayer } from '../../gtmUtils';\nimport { Color, Product } from '../../types';\nimport { fetchColors, fetchProductData, limit, updateFilters } from '../api/services';\nimport { debounce } from '../../utils';\nimport chroma from 'chroma-js';\n\ndeclare global {\n interface Window {\n dataLayer: Record<string, any>[];\n }\n}\n\n@Component({\n tag: 'my-modal',\n styleUrl: 'index.scss',\n assetsDirs: ['assets'],\n})\nexport class Modal {\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 }) onSelectedColorEmit: EventEmitter<Color>;\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() 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() 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 @State() colorsList: Color[] = [];\n @State() hasMore = true;\n @State() filters: any = {\n type: 'product' as 'product' | 'sample' | 'number' | 'name' | 'sampleInProduct',\n id: '',\n productId: '',\n page: 1,\n colorNumber: '',\n colorName: '',\n };\n\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) {\n this.filters = updateFilters(this.filters, { id: newValue.id, type: 'product' });\n this.fetchColorsData();\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 @Listen('onCurrentColor')\n handleEmitColor(event: CustomEvent<Color>) {\n this.onSelectedColorEmit.emit(event.detail);\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 sortColorsBySimilarity(colors: Color[]): Color[] {\n if (colors.length <= 1) return colors;\n\n const sortedColors: Color[] = [];\n const remainingColors = [...colors];\n\n // Start with the first color\n sortedColors.push(remainingColors.shift()!);\n\n while (remainingColors.length > 0) {\n // Find the most similar color to the last color in sortedColors\n const lastColor = sortedColors[sortedColors.length - 1];\n let mostSimilarIndex = 0;\n let minDistance = Infinity;\n\n remainingColors.forEach((color, index) => {\n const distance = chroma.distance(lastColor.hex, color.hex, 'lab');\n if (distance < minDistance) {\n minDistance = distance;\n mostSimilarIndex = index;\n }\n });\n\n // Move the most similar color to sortedColors\n sortedColors.push(remainingColors.splice(mostSimilarIndex, 1)[0]);\n }\n\n return sortedColors;\n }\n\n private getColorHueGroup(hex: string): string {\n const color = chroma(hex);\n const hue = color.get('hsl.h');\n const saturation = color.get('hsl.s');\n const lightness = color.get('hsl.l');\n\n // Handle grayscale colors\n if (saturation < 0.1) {\n if (lightness < 0.2) return 'black';\n if (lightness > 0.8) return 'white';\n return 'gray';\n }\n\n // Group colors by hue ranges\n if (hue >= 330 || hue < 30) return 'red';\n if (hue >= 30 && hue < 90) return 'yellow';\n if (hue >= 90 && hue < 150) return 'green';\n if (hue >= 150 && hue < 210) return 'cyan';\n if (hue >= 210 && hue < 270) return 'blue';\n if (hue >= 270 && hue < 330) return 'magenta';\n\n return 'other';\n }\n\n private sortColorsByHueAndSimilarity(colors: Color[]): Color[] {\n if (colors.length <= 1) return colors;\n\n // Group colors by their hue family\n const colorGroups: Record<string, Color[]> = {\n red: [],\n yellow: [],\n green: [],\n cyan: [],\n blue: [],\n magenta: [],\n gray: [],\n black: [],\n white: [],\n other: [],\n };\n\n // Sort colors into groups\n colors.forEach(color => {\n const group = this.getColorHueGroup(color.hex);\n colorGroups[group].push(color);\n });\n\n // Sort each group by similarity\n const sortedGroups: Color[][] = [];\n const groupOrder = ['red', 'magenta', 'blue', 'cyan', 'green', 'yellow', 'gray', 'black', 'white', 'other'];\n\n groupOrder.forEach(groupName => {\n if (colorGroups[groupName].length > 0) {\n sortedGroups.push(this.sortColorsBySimilarity(colorGroups[groupName]));\n }\n });\n\n // Combine all sorted groups\n return sortedGroups.flat();\n }\n\n private async fetchColorsData({ reset = false } = {}) {\n if (this.loading && !reset) return;\n this.loading = true;\n\n try {\n const colors = await fetchColors(this.filters);\n\n if (reset) {\n // For new searches, sort all colors by hue and similarity\n this.colorsList = this.sortColorsByHueAndSimilarity(colors);\n } else {\n // For pagination, combine and sort all colors\n this.colorsList = this.sortColorsByHueAndSimilarity([...this.colorsList, ...colors]);\n }\n\n this.hasMore = colors.length >= limit;\n } catch (error) {\n console.error('Error fetching colors:', error);\n } finally {\n this.loading = false;\n }\n }\n\n private async loadProductData() {\n this.preloader = true;\n\n const product = await fetchProductData({ shopName: this.shop, productName: this.product });\n\n if (product) {\n this.data = product;\n this.filters = updateFilters(this.filters, { type: 'product', id: product.id });\n\n // Fetch initial colors\n await this.fetchColorsData();\n }\n\n this.preloader = false;\n }\n\n private async loadMoreColors() {\n if (this.loading || !this.hasMore) return; // Prevent spam loading\n\n this.filters = { ...this.filters, page: this.filters.page + 1 }; // Increase page for lazy loading\n\n await this.fetchColorsData({ reset: false }); // Append results\n }\n\n private updateFilterAndFetch(newFilters: Partial<typeof this.filters>) {\n if (!this.data?.id) return;\n\n this.loading = true;\n\n this.filters = updateFilters(this.filters, {\n id: this.data.id,\n sampleId: this.filters.sampleId,\n colorName: this.filters.colorName,\n ...newFilters,\n page: 1,\n });\n\n this.fetchColorsData({ reset: true }).finally(() => {\n this.loading = false;\n });\n }\n\n async searchColor(event: CustomEvent) {\n const query = event.detail?.trim();\n\n this.updateFilterAndFetch({ colorName: query });\n }\n\n @Listen('colorFamilySelected')\n handleColorFamilySelected(event: CustomEvent) {\n this.currentColor = null;\n if (event.detail === this.filters.colorFamily) {\n this.filters = updateFilters(this.filters, { colorFamily: '' });\n this.updateFilterAndFetch({ colorFamily: '' });\n } else {\n this.filters = updateFilters(this.filters, { colorFamily: event.detail });\n this.updateFilterAndFetch({ colorFamily: event.detail });\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 handleSampleSelect = (selectedSample?: any) => {\n this.currentColor = null;\n this.selectedCategory = selectedSample.value;\n\n this.updateFilterAndFetch({ sampleId: selectedSample.value, colorFamily: '' });\n };\n\n handleScroll(_event: Event, modalContent: HTMLElement) {\n if (this.loading || !this.hasMore) return;\n\n const scrollTop = modalContent.scrollTop;\n const scrollHeight = modalContent.scrollHeight;\n const clientHeight = modalContent.clientHeight;\n\n // Check if user scrolled to the bottom of the modal\n if (scrollTop + clientHeight >= scrollHeight - 50) {\n this.loadMoreColors();\n }\n }\n\n private openSeletedColor() {\n if (!this.colorsList || !this.selectedcolor) return;\n\n if (!this.colorIsSelected) {\n const result = this.chunks(this.colorsList)\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 setDataLayer({\n shop: this.shop,\n product: this.product,\n });\n\n this.loadProductData();\n }\n\n componentWillRender() {\n this.displayForMobile();\n this.calculateBoxCount();\n this.colorTimer();\n this.openSeletedColor();\n\n const modalContent = this.modalEl.querySelector('.my-modal') as HTMLElement;\n if (modalContent) {\n modalContent.addEventListener('scroll', event => this.handleScroll(event, modalContent));\n }\n }\n\n private resetColors() {\n this.currentColor = null;\n this.currentIndex = null;\n this.colorIsSelected = false;\n }\n\n private resetAllFilters() {\n // Reset current color selection\n this.resetColors();\n\n // Reset filters to initial state\n this.filters = {\n type: 'product',\n id: this.data?.id || '',\n productId: '',\n page: 1,\n colorNumber: '',\n colorName: '',\n colorFamily: '',\n sampleId: '',\n };\n\n // Reset selected category\n this.selectedCategory = null;\n\n // Clear search text\n this.clearSearchText.emit();\n\n // Fetch colors with reset filters\n this.fetchColorsData({ reset: true });\n }\n\n private resetSelectedCategory() {\n this.resetColors();\n this.colorIsSelected = false;\n this.selectedCategory = null;\n this.filters = updateFilters(this.filters, { sampleId: '' });\n this.fetchColorsData({ reset: true });\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 <modal-header\n modalName={this.data.modalName}\n modalLogo={this.data.modalLogo ? `${APIURL}/assets/${this.data.modalLogo}?access_token=${accessToken}` : null}\n modalDescription={this.data.modalDescription}\n shop={this.shop}\n productName={this.data.name}\n productSamples={this.data.productSamples}\n selectedColorFamily={this.filters.colorFamily}\n isMobile={this.isMobile}\n onCloseModal={() => this.closeModalHandler()}\n onSampleSelected={event => this.handleSampleSelect(event.detail)}\n onOnLogoClick={() => this.resetAllFilters()}\n onOnResetCategory={() => this.resetSelectedCategory()}\n ></modal-header>\n )}\n\n <div class={'my-modal__wrapper'}>\n {!this.preloader && (\n <div class={'container_boxes'}>\n {!this.loading && this.colorsList.length === 0 && (\n <div class=\"not-found\">\n <p>Nie zaleziono wyników wyszukiwania pod danym hasłem.</p>\n <p> Wpisz inną nazwę bądź numer koloru lub skorzystaj z kolekcji kolorystycznych.</p>\n </div>\n )}\n {this.colorsList?.length > 0 &&\n this.chunks(this.colorsList).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 if (this.currentColor?.id === c.id) {\n this.currentColor = null;\n } else {\n this.currentColor = c;\n }\n this.currentIndex = index;\n setDataLayer({\n event: 'ColorClick',\n shop: this.shop,\n product: this.product,\n color: c.name,\n });\n 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 </div>\n )}\n {this.loading && <my-loader></my-loader>}\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: 300px;\n @media (max-width: $small) {\n width: 100%;\n }\n input {\n font-size: 16px;\n padding: 17px;\n border-radius: 27.35px;\n border: 1px solid #dfdfdf;\n width: 100%;\n color: #4c4c4c;\n box-sizing: border-box;\n padding-right: 55px;\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: 'index.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","@import '../../global/app.scss';\n\n.select {\n position: relative;\n width: 300px;\n\n @media (max-width: $small) {\n width: 100%;\n }\n\n .input-wrapper {\n position: relative;\n display: flex;\n align-items: flex-start;\n }\n\n input {\n font-size: 16px;\n padding: 16px;\n border-radius: 27.35px;\n border: 1px solid #dfdfdf;\n width: 100%;\n color: #4c4c4c;\n box-sizing: border-box;\n padding-right: 50px;\n }\n\n button {\n position: absolute;\n right: 10px;\n background: transparent;\n border: none;\n cursor: pointer;\n width: 40px;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n transition: transform 0.3s ease;\n\n &.rotated {\n transform: rotate(180deg);\n }\n }\n }\n\n .dropdown {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n background: white;\n border: 1px solid #dfdfdf;\n border-radius: 5px;\n max-height: 200px;\n overflow-y: auto;\n z-index: 1000;\n padding: 0;\n margin: 0;\n\n li {\n padding: 0;\n margin: 0;\n padding: 10px;\n cursor: pointer;\n list-style: none;\n text-align: left;\n &:hover {\n background: #f5f5f5;\n }\n }\n\n .no-results {\n padding: 10px;\n text-align: center;\n color: #999;\n }\n }\n}\n","import { Component, Prop, h, State, Event, EventEmitter, Listen, Watch, Element } from '@stencil/core';\nimport { getAssetPath } from '@stencil/core';\nimport { debounce } from '../../utils';\n\n@Component({\n tag: 'my-select',\n styleUrl: 'index.scss',\n assetsDirs: ['assets'],\n scoped: true,\n})\nexport class MySelect {\n @Element() el: HTMLElement;\n\n @Prop() options: any[] = []; // List of selectable options\n @Prop() placeholder: string = 'Select an option'; // Placeholder text\n @Prop() isMobile: boolean = false;\n @Prop() searchIcon: string = 'chevron.png'; // Search icon asset\n\n @State() searchText: string = '';\n @State() filteredOptions: any[] = [];\n @State() showDropdown: boolean = false;\n @State() selectedValue: string | null = null;\n @Event() onReset: EventEmitter<void>;\n @Event() selectValue: EventEmitter<{ key: string; value: number | null }>; // Emits selected value\n @Event() inputValueChange: EventEmitter<string>; // Emits input changes for filtering\n\n private defaultOption = { name: this.placeholder, id: null };\n\n private debouncedSearch = debounce((value: string) => {\n const optionsWithDefault = [this.defaultOption, ...this.options];\n this.filteredOptions = optionsWithDefault.filter(option => option.name.toLowerCase().includes(value.toLowerCase()));\n this.inputValueChange.emit(value);\n }, 300);\n\n private reset() {\n this.onReset.emit();\n }\n\n componentWillLoad() {\n this.filteredOptions = [this.defaultOption, ...this.options];\n }\n\n componentDidLoad() {\n document.addEventListener('click', this.handleClickOutside);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n private handleClickOutside = (event: MouseEvent) => {\n if (!this.el.contains(event.target as Node)) {\n this.showDropdown = false;\n }\n };\n\n private handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText = value;\n this.showDropdown = true;\n this.debouncedSearch(value);\n }\n\n private selectOption(option: { key: string; value: number | null }) {\n if (option.value === null) {\n this.selectedValue = null;\n this.searchText = '';\n this.reset();\n } else {\n this.selectedValue = option.key;\n this.searchText = option.key;\n this.selectValue.emit(option);\n }\n this.showDropdown = false;\n }\n\n private toggleDropdown() {\n this.showDropdown = !this.showDropdown;\n }\n\n @Watch('options')\n updateOptions(newOptions: any[]) {\n this.filteredOptions = [this.defaultOption, ...newOptions];\n }\n\n @Listen('clearSearchText', { target: 'document' })\n clearSearchTextHandler() {\n this.searchText = '';\n this.selectedValue = null;\n this.reset();\n }\n\n render() {\n return (\n <div class=\"select\">\n <div class=\"input-wrapper\">\n <input type=\"text\" placeholder={this.placeholder} value={this.searchText} onInput={this.handleInput.bind(this)} onFocus={() => (this.showDropdown = true)} />\n <button onClick={() => this.toggleDropdown()}>\n <img src={getAssetPath(`./assets/${this.searchIcon}`)} alt=\"dropdown icon\" class={this.showDropdown ? 'rotated' : ''} />\n </button>\n </div>\n\n {this.showDropdown && (\n <ul class=\"dropdown\">\n {this.filteredOptions.length > 0 ? (\n this.filteredOptions.map(option => (\n <li class={option.id === null ? 'default-option' : ''} onClick={() => this.selectOption({ key: option.name, value: option.id })}>\n {option.name}\n </li>\n ))\n ) : (\n <li class=\"no-results\">No results found</li>\n )}\n </ul>\n )}\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: 'index.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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"}
|