{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./utils/addActiveLinkClass.js","webpack:///./utils/isTouchDevice.js","webpack:///./utils/sliceArrayPerChunk.js","webpack:///./utils/fetch.js","webpack:///../node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/addClass.js","webpack:///../node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///../node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///../node_modules/tiny-slider/src/helpers/showElement.js","webpack:///../node_modules/throttle-debounce/dist/index.esm.js","webpack:///../node_modules/@uvocore-front/utils/dist/index.js","webpack:///../node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///../node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///../node_modules/tiny-slider/src/helpers/raf.js","webpack:///../node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///../node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///../node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///../node_modules/@babel/runtime/helpers/typeof.js","webpack:///../node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///../node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///../node_modules/@babel/runtime/regenerator/index.js","webpack:///../node_modules/tiny-slider/src/helpers/forEach.js","webpack:///../node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/getBody.js","webpack:///../node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./utils/isMobile.js","webpack:///../node_modules/tiny-slider/src/helpers/docElement.js","webpack:///../node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///../node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///../node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///../node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///../node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///../node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./components/PayInTwoNotify/index.js","webpack:///./components/Header/index.js","webpack:///./components/Footer/index.js","webpack:///./components/RefererWebmaster/index.js","webpack:///./components/Sample/SamplesModal.js","webpack:///../node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///../node_modules/tiny-slider/src/helpers/caf.js","webpack:///../node_modules/tiny-slider/src/helpers/extend.js","webpack:///../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///../node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///../node_modules/console-browserify/index.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../node_modules/util/util.js","webpack:///./components/Sample/SamplesInfo.js","webpack:///./components/Section/js/SamplesSection/functions/MobileSlider.js","webpack:///../node_modules/tiny-slider/src/tiny-slider.js","webpack:///../node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///../node_modules/tiny-slider/src/helpers/calc.js","webpack:///../node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///../node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///../node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///../node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///../node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///../node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///../node_modules/tiny-slider/src/helpers/events.js","webpack:///../node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./components/Section/js/CtaSection.js","webpack:///./components/UI/Tooltip/index.js","webpack:///./components/Calculator/index.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/util/support/isBufferBrowser.js","webpack:///../node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///../node_modules/assert/assert.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///../node_modules/tiny-slider/src/helpers/childNode.remove.js","webpack:///./components/Section/js/FeaturesSection.js","webpack:///./components/Section/js/SamplesSection/functions/initDesktopHorizontalGlider.js","webpack:///./components/Section/js/SamplesSection/SamplesSection.js","webpack:///../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///../node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///../node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///../node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./components/Section/js/TestimonialsSection.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","addActiveLinkClass","anchorSelector","activeClass","anchors","document","querySelectorAll","current","window","location","pathname","length","getAttribute","classList","add","isTouchDevice","prefixes","split","DocumentTouch","query","matchMedia","matches","mq","join","sliceArrayPerChunk","inputArray","perChunk","reduce","resultArray","item","index","chunkIndex","Math","floor","push","url","a","options","method","headers","body","credentials","fetch","response","ok","Error","json","text","message","addEvents","el","obj","preventScrolling","prop","option","indexOf","addEventListener","addClass","str","className","removeEvents","removeEventListener","removeClass","remove","replace","setAttrs","els","attrs","Array","toString","setAttribute","hideElement","forceHide","style","display","showElement","throttle","delay","noTrailing","callback","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","self","this","elapsed","Date","now","args","arguments","exec","apply","clear","undefined","setTimeout","cancel","e","default","deployHash","source","withDeployHash","appendTo","getElementsByTagName","async","u","defer","f","Promise","concat","querySelector","createElement","readyState","test","onload","onreadystatechange","src","appendChild","innerHTML","element","marginValue","thresholdValue","rootMargin","threshold","IntersectionObserver","forEach","isIntersecting","unobserve","target","slice","observe","widgetLink","isWidgetLinkHashNeeded","loader","customLoader","insertLoaderTo","loaderPosition","v","fn","y","then","catch","checkStorageValue","JSON","parse","setLocalStorage","storage","access","setItem","win","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","classListSupport","hasClass","contains","getCssRulesLength","sheet","cssRules","rules","_typeof","iterator","constructor","toPropertyKey","configurable","writable","addCSSRule","selector","insertRule","addRule","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","arr","scope","removeAttrs","attrLength","j","removeAttribute","getBody","doc","fake","setFakeBody","docOverflow","overflow","background","resetFakeBody","offsetHeight","isMobile","innerWidth","docElement","documentElement","asyncGeneratorStep","done","resolve","_next","_throw","hasAttr","attr","hasAttribute","whichProperty","props","Props","charAt","toUpperCase","substr","prefix","getAttr","TypeError","toPrimitive","String","Number","_regeneratorRuntime","asyncIterator","define","wrap","Generator","Context","makeInvokeMethod","tryCatch","type","arg","h","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","keys","reverse","pop","prev","stop","rval","handle","complete","finish","delegateYield","mobileMediaQuery","handleTooltipBehavior","cleanupFunction","tooltipTrigger","tooltip","touchTimeout","handleTooltipShow","passive","handleDocumentTouch","event","cleanup","header","burger","stickyHeader","headerHeight","pageYOffset","scrollTop","clientTop","removeOpenMenuClass","subMenu","menu","preventDefault","toggle","navigator","platform","userAgent","paramsSearch","search","urlParams","URLSearchParams","has","apiUrl","Pragma","Expires","SamplesModal","insertModalTo","sampleBtn","section","btn","insertAdjacentHTML","modal","iframe","closePdfContainer","removeChild","site","origin","showSample","isNodeList","supportsPassive","opts","passiveOption","caf","cancelAnimationFrame","mozCancelAnimationFrame","id","extend","copy","arrayFromNodeList","nl","isVisible","getComputedStyle","getEndProperty","propIn","propOut","endProp","toLowerCase","util","assert","getTime","console","times","global","functions","log","warn","label","time","duration","err","format","error","stack","inspect","expression","tuple","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","isString","objects","len","x","stringify","_","isNull","isObject","deprecate","msg","process","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","isFunction","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","val","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","isDate","output","base","braces","isArray","toUTCString","formatProperty","match","formatArray","map","cur","numLinesEst","reduceToSingleString","desc","set","line","ar","re","objectToString","pad","debuglog","env","NODE_DEBUG","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","getHours","getMinutes","getSeconds","getDate","getMonth","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","newReason","promisify","original","promiseResolve","promiseReject","promise","reject","defineProperties","custom","callbackify","callbackified","maybeCb","nextTick","rej","SamplesInfo","samplesSelector","previewBlockSelector","infoBlockSelector","marginLeft","marginTop","samples","previewBlock","infoBlock","X","Y","throttled","left","top","clientX","clientY","MobileSlider","updateCurrentItem","controlsContainer","link","state","currentIndex","pdfLink","getCurrentItem","items","slideItems","currentItem","init","container","slider","tns","startIndex","mouseDrag","autoplay","loop","nav","controlsText","onInit","slideCount","positionBlock","prevButton","onclick","events","on","nextButton","sliderInfo","getInfo","axis","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controls","controlsPosition","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","useLocalStorage","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","uid","localStorage","getItem","removeItem","CALC","PERCENTAGELAYOUT","CSSMQ","TRANSFORM","HAS3DTRANSFORMS","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","tnsList","optionsElements","nodeName","children","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","parentNode","containerHTML","outerHTML","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","result","getOption","viewport","getViewportWidth","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","min","max","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","newContainerClasses","slideId","disable","disabled","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","keyCode","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","targetIndexBase","pages","goTo","navCurrentIndex","animating","stopAutoplay","curElement","activeElement","setFocus","navItems","hoverEvents","stopAutoplayTimer","autoplayHoverPaused","setAutoplayTimer","visibilityEvent","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","onPanStart","onPanMove","onPanEnd","dragEvents","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","imgLoaded","img","imgCompleted","preventScroll","prevIsButton","nextIsButton","controlsContainerHTML","prevButtonHTML","nextButtonHTML","navContainerHTML","getPages","pagesCached","getCurrentNavIndex","navCurrentIndexCached","navActiveClass","navStr","navStrCurrent","autoplayTimer","autoplayUserPaused","autoplayButtonHTML","autoplayHtmlStrings","translateInit","rafIndex","initPosition","lastPosition","panStart","getDist","b","resetVariblesWhenDisable","insertBefore","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","cssText","width","parseInt","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","resetDuration","doContainerTransform","getContainerTransformValue","updateContentWrapperHeight","eve","animateSlide","version","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","destroy","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","clientWidth","getInsertPosition","pos","gap","getClientWidth","rect","div","getBoundingClientRect","right","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","substring","imgs","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","emit","doAutoHeight","doLazyLoad","disableSlider","freezeSlider","additionalUpdates","bpChanged","breakpointZoneTem","needContainerTransform","indChanged","itemsChanged","disableTem","freezeTem","arrowKeysTem","controlsTem","navTem","touchTem","mouseDragTem","autoplayTem","autoplayHoverPauseTem","autoplayResetOnVisibilityTem","indexTem","autoHeightTem","controlsTextTem","centerTem","autoplayTextTem","classN","enableUI","enableSlider","margin","unfreezeSlider","height","html","updateLiveRegion","updateGallerySlidePositions","autoheightTem","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","stopPropagation","srcset","splice","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","targetIndex","indexGap","abs","factor","dir","passEventObject","targetIn","setInterval","updateAutoplayButton","action","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","$","panUpdate","dist","preventClick","indexMoved","moved","rough","displayIndex","getSlideId","tnsId","calc","vals","offsetWidth","percentageLayout","supported","outer","count","mediaquerySupport","position","rule","styleSheet","createTextNode","currentStyle","createStyleSheet","media","removeCSSRule","deleteRule","removeRule","toDegree","atan2","PI","getTouchDirection","angle","direction","has3DTransforms","tf","has3d","cssTF","getPropertyValue","Events","topics","eventName","off","data","jsTransform","postfix","to","tick","unit","from","positionTick","moveElement","boxes","elementObserver","entries","entry","box","Tooltip","tooltipsSelector","tooltipTextAttribute","tooltips","tooltipText","tooltipBody","isPageConfig","pageConfig","observeElement","getWidget","pageCalculatorConfig","calculator","calcOptions","ID","calculatorType","deafault","deadlinesDefault","paperTypesDefault","button","textContent","Calc","parent","academicLevelDefault","pagesDefault","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","title","browser","argv","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","fill","readUInt8","ctor","superCtor","super_","TempCtor","objectAssign","compare","Buffer","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","regex","getName","func","truncate","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","sort","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","captureStackTrace","out","fn_name","next_line","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","assign","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","Element","initDesktopHorizontalGlider","sectionCoords","containerCoords","containerWrapper","samplesItems","samplesItem","containerHeight","samplesItemsWidth","wrapperWidth","wrapperDiff","containerWrapperHeight","containerPaddTop","containerWrapperCoords","isStickyTop","isStickyBottom","glide","bottom","sample","samplesSection","samplesAmount","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","arrayLikeToArray","initDesktopVerticalGlider","testimonialsItemsWrapper","testimonialsItems","testimonialsItem","first3ItemsHeight","testimonialsItemsHeight","first3Items"],"mappings":"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","file":"js/home.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 165);\n","/**\n *\n * @param anchorSelector\n * @param activeClass\n */\nconst addActiveLinkClass = ({\n anchorSelector = 'a',\n activeClass = 'active',\n}) => {\n const anchors = document.querySelectorAll(anchorSelector);\n if (!anchors) return;\n\n const current = window.location.pathname;\n\n for (let i = 0; i < anchors.length; i += 1) {\n if (anchors[i].getAttribute('href') === current) {\n anchors[i].classList.add(activeClass);\n }\n }\n};\n\nexport default addActiveLinkClass;\n","const isTouchDevice = () => {\n const prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');\n const mq = query => window.matchMedia(query).matches;\n\n if (('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) { /* eslint-disable-line */\n return true;\n }\n\n // include the 'heartz' as a way to have a non matching MQ to help terminate the join\n // https://git.io/vznFH\n const query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');\n return mq(query);\n};\n\nexport default isTouchDevice;\n","/**\n *\n * @param inputArray\n * @param perChunk\n * @returns {*}\n */\nconst sliceArrayPerChunk = (\n inputArray = [],\n perChunk = 1,\n) => inputArray.reduce((resultArray, item, index) => {\n const chunkIndex = Math.floor(index / perChunk);\n\n if (!resultArray[chunkIndex]) {\n resultArray[chunkIndex] = []; // start a new chunk\n }\n\n resultArray[chunkIndex].push(item);\n\n return resultArray;\n}, []);\n\nexport default sliceArrayPerChunk;\n","export default async (url, options = {}) => {\n const {\n method = 'GET',\n headers,\n body = null,\n credentials = 'omit',\n } = options;\n\n try {\n const response = await fetch(url, {\n method,\n headers,\n body,\n credentials: credentials !== 'omit' ? 'include' : 'omit',\n });\n\n if (!response.ok) {\n throw new Error('Bad request');\n }\n\n return {\n json: () => response.json(),\n text: () => response.text(),\n };\n } catch (error) {\n throw new Error(`Request failed: ${error.message}`);\n }\n};\n","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [noTrailing] Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset)\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {Boolean} [debounceMode] If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @return {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n var self = this;\n var elapsed = Date.now() - lastExec;\n var args = arguments;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, args);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {Number} delay A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Boolean} [atBegin] Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @return {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { throttle, debounce };\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.utils=t():e.utils=t()}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=0)}([function(e,t,n){e.exports=n(2)},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var o=window.deployHash&&\"string\"==typeof window.deployHash&&\"\"!==window.deployHash?window.deployHash:\"\",r=function(e){var t=e.source,n=e.withDeployHash,r=void 0===n||n,i=e.appendTo,c=void 0===i?document.getElementsByTagName(\"head\")[0]:i,d=e.async,a=void 0===d||d,u=e.defer,f=void 0===u||u;return new Promise((function(e,n){if(t&&\"string\"==typeof t){var i=r&&o?\"?v=\".concat(o):\"\",d=t+i;if(document.querySelector('script[src=\"'.concat(d,'\"]')))e();else{var u=document.createElement(\"script\");u.async=a,u.defer=f;var l=function(t,o){(o||!u.readyState||/loaded|complete/.test(u.readyState))&&(u.onload=null,u.onreadystatechange=null,u=void 0,o?n():e())};u.onload=l,u.onreadystatechange=l,u.src=d,c.appendChild(u)}}}))},i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"center\";e&&\"string\"==typeof e&&(document.querySelector(\"\".concat(e)).innerHTML='\\n
\\n
\\n
\\n '))},c=(n(1),i),d=function(e){var t=e.element,n=e.marginValue,o=void 0===n?400:n,r=e.thresholdValue,i=void 0===r?0:r,c=e.callback,d=void 0===c?function(){}:c;if(t&&\"string\"==typeof t){var a=document.querySelectorAll(t),u={rootMargin:\"\".concat(o,\"px 0px \").concat(o,\"px 0px\"),threshold:i},f=new IntersectionObserver((function(e,t){e.forEach((function(e){e.isIntersecting&&(t.unobserve(e.target),d(e.target))}))}),u);a&&[].slice.call(a).forEach((function(e){f.observe(e)}))}},a=function(e){var t=e.widgetLink,n=e.isWidgetLinkHashNeeded,o=void 0===n||n,i=e.loader,d=void 0===i||i,a=e.customLoader,u=void 0===a?void 0:a,f=e.insertLoaderTo,l=void 0===f?void 0:f,s=e.loaderPosition,p=void 0===s?\"center\":s,v=e.fn,y=void 0===v?function(){}:v;t&&\"string\"==typeof t&&r({source:t,withDeployHash:o}).then((function(){d&&u&&\"function\"==typeof u?u(l,p):d&&c(l,p),y()})).catch((function(e){throw new Error(e)}))};n.d(t,\"loadScripts\",(function(){return r})),n.d(t,\"addLoader\",(function(){return c})),n.d(t,\"observeElement\",(function(){return d})),n.d(t,\"getWidget\",(function(){return a}))}])}));\n//# sourceMappingURL=index.js.map","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","const isMobile = () => window.innerWidth < 1024;\n\nexport default isMobile;\n","export var docElement = document.documentElement;","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","const mobileMediaQuery = window.matchMedia('(max-width: 768px)');\n\nfunction handleTooltipBehavior(e) {\n let cleanupFunction = () => {};\n\n if (!e.matches) {\n return cleanupFunction;\n }\n\n const tooltipTrigger = document.querySelector('.payInTwoNotify__tooltip__title');\n const tooltip = document.querySelector('.payInTwoNotify__tooltip__text');\n\n if (!tooltipTrigger || !tooltip) {\n return cleanupFunction;\n }\n\n const handleTooltipShow = () => tooltip.classList.add('show');\n\n tooltipTrigger.addEventListener('touchstart', handleTooltipShow, { passive: true });\n\n let touchTimeout;\n const handleDocumentTouch = (event) => {\n clearTimeout(touchTimeout);\n touchTimeout = setTimeout(() => {\n // eslint-disable-next-line max-len\n const clickedOutside = !tooltipTrigger.contains(event.target) && !tooltip.contains(event.target);\n if (clickedOutside) {\n tooltip.classList.remove('show');\n }\n }, 50);\n };\n\n document.addEventListener('touchstart', handleDocumentTouch, { passive: true });\n\n cleanupFunction = () => {\n tooltipTrigger.removeEventListener('touchstart', handleTooltipShow);\n document.removeEventListener('touchstart', handleDocumentTouch);\n };\n\n return cleanupFunction;\n}\n\nlet cleanup = handleTooltipBehavior(mobileMediaQuery);\n\nmobileMediaQuery.addEventListener('change', (event) => {\n cleanup();\n cleanup = handleTooltipBehavior(event);\n});\n","import { throttle } from 'throttle-debounce';\nimport { isMobile, addActiveLinkClass } from '../../utils';\n\n\n// Header handler\nconst header = document.querySelector('.Header');\nconst burger = header.querySelector('.Header__burger');\n\n/**\n * Sticky header\n */\nconst stickyHeader = () => {\n if (!header) return;\n\n const headerHeight = header.offsetHeight / 2;\n const topOffset = (window.pageYOffset || document.documentElement.scrollTop) - (document.documentElement.clientTop || 0); /* eslint-disable-line */\n\n if (topOffset > headerHeight) {\n header.classList.add('sticked');\n } else {\n header.classList.remove('sticked');\n }\n};\n\n/**\n * Toggle Menu\n */\nconst toggleMenu = () => {\n if (!header && !burger) return;\n\n burger.addEventListener('click', () => {\n if (header.classList.contains('open-menu')) {\n header.classList.remove('open-menu');\n } else {\n header.classList.add('open-menu');\n }\n }, false);\n};\n\n/**\n * Remove Open Menu Class\n * @type {wrapper}\n */\nconst removeOpenMenuClass = throttle(100, () => {\n if (!isMobile() && header.classList.contains('open-menu')) {\n header.classList.remove('open-menu');\n }\n});\n\n/**\n * Animate order now btn\n */\n// const animateOrderNowBtn = () => {\n// const btns = header.querySelectorAll('.order-now');\n// if (!btns) return;\n\n// const btnClass = 'order-now--animate';\n\n// [].slice.call(btns).forEach((btn) => {\n// btn.classList.add(btnClass);\n\n// setInterval(() => {\n// if (btn.classList.contains(btnClass)) {\n// btn.classList.remove(btnClass);\n// } else {\n// btn.classList.add(btnClass);\n// }\n// }, 800);\n// });\n// };\n\nfunction toggleSubmenu() {\n const subMenu = document.querySelectorAll('.submenu');\n if (subMenu.length > 0 && !isMobile()) return;\n\n [].slice.call(subMenu).forEach((menu) => {\n const subMenuTitle = menu.querySelector('.submenu__title');\n subMenuTitle.addEventListener('click', (e) => {\n e.preventDefault();\n menu.classList.toggle('submenu--active');\n });\n });\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n toggleMenu();\n stickyHeader();\n toggleSubmenu();\n\n window.addEventListener('scroll', stickyHeader, false);\n window.addEventListener('resize', () => {\n throttle(100, stickyHeader);\n removeOpenMenuClass();\n }, false);\n\n // Add active class\n addActiveLinkClass({\n anchorSelector: '.Header__menu-link',\n });\n\n // detect Safari and ios\n const isiOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (isiOS) document.documentElement.classList.add('IOS');\n\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (isSafari) document.documentElement.classList.add('Safari');\n});\n","import { addActiveLinkClass } from '../../utils';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n addActiveLinkClass({\n anchorSelector: '.Footer__menu__link',\n });\n});\n","import { fetch } from '../../utils';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n const paramsSearch = window.location.search;\n const urlParams = new URLSearchParams(paramsSearch);\n const refererWebmasterParamValue = urlParams.has('r') && urlParams.get('r');\n\n if (refererWebmasterParamValue) {\n const apiUrl = `/api/set_webmaster${paramsSearch}`;\n\n fetch(apiUrl, {\n headers: {\n 'Cache-Control': 'no-cache',\n Pragma: 'no-cache',\n Expires: '0',\n },\n credentials: 'include',\n })\n .catch(() => {});\n }\n});\n","/**\n * Samples Modal\n *\n * @param insertModalTo\n * @param sampleBtn\n * @constructor\n */\n\nconst modalBox = `\n
\n
\n \n
\n`;\n\nconst SamplesModal = ({\n insertModalTo = '[data-samples-section]',\n sampleBtn = '[data-sample-url]',\n}) => {\n if (!insertModalTo && !sampleBtn) return;\n\n const section = document.querySelector(insertModalTo);\n const btn = document.querySelectorAll(sampleBtn);\n\n if (!section && !btn) return;\n\n const isiOS = navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n\n if (!isiOS) {\n section.insertAdjacentHTML('beforeend', modalBox);\n\n const modal = document.querySelector('.SamplesModal');\n if (!modal) return;\n\n const iframe = document.createElement('iframe');\n\n const closePdfContainer = () => {\n modal.classList.remove('show');\n modal.removeChild(iframe);\n };\n\n const showSample = (el) => {\n const site = window.location.origin;\n iframe.setAttribute('src', site + el.getAttribute('data-sample-url'));\n iframe.setAttribute('width', '100%');\n iframe.setAttribute('height', '100%');\n iframe.setAttribute('frameborder', '0');\n modal.appendChild(iframe);\n modal.classList.add('show');\n };\n\n [].slice.call(btn).forEach((el) => {\n el.addEventListener('click', (e) => {\n e.preventDefault();\n showSample(el);\n });\n });\n\n document.querySelector('.SamplesModal__close').addEventListener('click', () => {\n closePdfContainer();\n });\n\n document.addEventListener('keydown', (e) => {\n if (e.key === 'Escape') {\n closePdfContainer();\n }\n });\n\n document.querySelector('.SamplesModal__overlay').addEventListener('click', () => {\n closePdfContainer();\n });\n }\n};\n\nexport default SamplesModal;\n","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/* eslint-disable no-restricted-globals */\nimport { throttle } from 'throttle-debounce';\n\n/**\n *\n * @param samplesSelector\n * @param previewBlockSelector\n * @param infoBlockSelector\n * @param marginLeft\n * @param marginTop\n * @constructor\n */\nconst SamplesInfo = ({\n samplesSelector = '[data-samples-item]',\n previewBlockSelector = '[data-sample-preview]',\n infoBlockSelector = '[data-sample-info]',\n marginLeft = 0,\n marginTop = 30,\n}) => {\n const samples = document.querySelectorAll(samplesSelector);\n if (!samples || isNaN(marginLeft) || isNaN(marginTop)) return;\n\n [].slice.call(samples).forEach((item) => {\n const previewBlock = item.querySelector(previewBlockSelector);\n const infoBlock = item.querySelector(infoBlockSelector);\n if (!previewBlock && !infoBlock) return;\n\n let X = 0;\n let Y = 0;\n\n const throttled = throttle(50, () => {\n infoBlock.style.left = `${X + marginLeft}px`;\n infoBlock.style.top = `${Y + marginTop}px`;\n });\n\n previewBlock.addEventListener('mouseover', (e) => {\n X = e.clientX;\n Y = e.clientY;\n\n throttled();\n\n infoBlock.classList.add('show');\n }, false);\n\n previewBlock.addEventListener('mousemove', (e) => {\n X = e.clientX;\n Y = e.clientY;\n\n throttled();\n }, false);\n\n previewBlock.addEventListener('mouseout', () => {\n infoBlock.classList.remove('show');\n }, false);\n });\n};\n\nexport default SamplesInfo;\n","import { tns } from 'tiny-slider/src/tiny-slider';\nimport { isMobile } from '../../../../../utils';\nimport SamplesModal from '../../../../Sample/SamplesModal';\n\n\n/**\n * Mobile Slider\n */\nclass MobileSlider {\n constructor(options) {\n this.container = options.container;\n\n this.state = {\n currentItem: undefined,\n currentIndex: undefined,\n slideCount: undefined,\n pdfLink: undefined,\n sliderInfo: undefined,\n };\n }\n\n updateCurrentItem = (e) => {\n const current = e.controlsContainer.querySelector('.current');\n const link = e.controlsContainer.querySelector('.tns-controls__pdf-link');\n\n if (!current || !link) return;\n\n current.innerHTML = this.state.currentIndex;\n link.setAttribute('data-sample-url', this.state.pdfLink);\n };\n\n getCurrentItem = (e) => {\n const items = e.slideItems;\n\n [].slice.call(items).forEach((item, index) => {\n if (item.classList.contains('tns-slide-active')) {\n this.state.currentItem = item;\n this.state.currentIndex = index + 1;\n this.state.pdfLink = item.getAttribute('data-sample-url');\n\n this.updateCurrentItem(e);\n }\n });\n };\n\n init = () => {\n if (!this.container && isMobile()) return;\n\n const slider = tns({\n container: this.container,\n items: 1,\n startIndex: 0,\n mouseDrag: true,\n autoplay: false,\n loop: false,\n nav: false,\n controlsText: ['', ''],\n onInit: (e) => {\n this.state.slideCount = e.slideCount;\n\n this.getCurrentItem(e);\n\n const positionBlock = `\n \n
\n ${this.state.currentIndex}/${this.state.slideCount}\n
\n `;\n\n e.controlsContainer.insertAdjacentHTML('afterbegin', positionBlock);\n\n SamplesModal({\n sampleBtn: '.tns-controls__pdf-link',\n });\n\n e.prevButton.onclick = () => {\n slider.events.on('transitionEnd', () => {\n this.getCurrentItem(e);\n });\n };\n\n e.nextButton.onclick = () => {\n slider.events.on('transitionEnd', () => {\n this.getCurrentItem(e);\n });\n };\n },\n });\n\n this.state.sliderInfo = slider.getInfo();\n\n slider.events.on('transitionEnd', () => this.getCurrentItem(this.state.sliderInfo));\n };\n}\n\nexport default MobileSlider;\n","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n \n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n \n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end; \n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event' \n * have to check event first, otherwise event.target will cause an error \n * => or 'gallery' mode: \n * + event target is slide item\n * => or 'carousel' mode: \n * + event target is container, \n * + event.property is the same with transform attribute\n */\n if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(), \n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) { \n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) { \n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document \n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }}); \n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.2',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","// create and append style sheet\nexport function createStyleSheet (media) {\n // Create the