{"version":3,"sources":["webpack://nopcommerce/./node_modules/amegmen/dist/scripts/amegmen.js","webpack://nopcommerce/webpack/bootstrap","webpack://nopcommerce/webpack/runtime/compat get default export","webpack://nopcommerce/webpack/runtime/define property getters","webpack://nopcommerce/webpack/runtime/hasOwnProperty shorthand","webpack://nopcommerce/./Themes/Rorpojkarna/Content/js/mega-menu.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/raf.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/caf.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/extend.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getBody.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/docElement.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/forEach.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/hasClass.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/addClass.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/removeClass.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getAttr.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/hideElement.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/showElement.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/isVisible.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/addEvents.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/events.js","webpack://nopcommerce/./node_modules/tiny-slider/src/tiny-slider.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/calc.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/toDegree.js","webpack://nopcommerce/./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack://nopcommerce/./Themes/Rorpojkarna/Content/js/carousel.js"],"names":["AMegMen","AllAMegMenInstances","active_amegmen","_EventList","_Defaults","activeCls","actOnHoverAt","backBtnCls","closeBtnCls","colCls","colShiftCls","colWidthCls","focusCls","hoverCls","idPrefix","isRTL","l0AnchorCls","l0PanelCls","l1ActiveCls","l1AnchorCls","l1PanelCls","l2ActiveCls","l2AnchorCls","landingCtaCls","lastcolCls","mainBtnCls","mainElementCls","rootCls","offcanvasCls","overflowHiddenCls","panelCls","rtl_Cls","shiftColumns","actOnHover","supportedCols","toggleBtnCls","_StringTrim","str","replace","_ArrayCall","arr","Array","prototype","slice","call","e","_HasClass","element","cls","className","split","indexOf","_AddClass","clsarr","clsarrLength","length","i","thiscls","_RemoveClass","curclass","curclassLength","splice","join","_ToggleUniqueId","settings","unique_number","shouldAddId","getAttribute","setAttribute","Date","getTime","thisid","RegExp","test","removeAttribute","amm_document_out","eventtype","event","closestl0li","target","closest","amm_subnavclose","amm_subnav_out","closestl1li","shouldCloseL0Panel","thiscore","rootElem","offcanvas","shouldExecute","mainElem","l0nav","j","thisl0","l0anchor","l0panel","navelement","l1nav","k","thisl1","l1anchor","l1panel","amm_landingMouseenterFn","landingElement","amm_landingMouseleaveFn","amm_landingFocusFn","amm_landingBlurFn","amm_l0FocusFn","amm_l0BlurFn","amm_l1FocusFn","amm_l1BlurFn","amm_l2MouseenterFn","l2anchor","amm_l2MouseleaveFn","amm_l2FocusFn","amm_l2BlurFn","amm_l0ClickFn","parent","preventDefault","elem","amm_l0MouseenterFn","window","innerWidth","document","documentElement","clientWidth","body","click","amm_l0MouseleaveFn","amm_l1ClickFn","l0navelement","amm_l1MouseenterFn","amm_l1MouseleaveFn","amm_gotoMain","amm_closeMain","togglenav","amm_eventScheduler","shouldAdd","fn","addEventListener","removeEventListener","Core","options","_this","this","core","destroy","allElems","querySelectorAll","thiselem","thisevent","keycount","hasOwnProperty","amm_docMouseoverFn","amm_docClickFn","amm_destroy","querySelector","closenav","tomain","toprevious","l0li","thisl0li","nav0obj","l0tomain","l1navelement","l1cols","shiftnum","l1li","colnum","parseInt","thisl1col","thisl1li","nav1obj","l1toback","l2navelement","l2cols","l2a","thisl2anchor","thisl2col","l2nav","push","hoverprops","landingElements","thislandingelem","amm_toggleMainClickFn","amm_toggleMain","amm_closeMainClickFn","thismain","amm_gotoMainClickFn","thisprevious","thisl0nav","amm_panelClickFn","amm_panelMouseoverFn","amm_toggleevents","amm_init","Object","assign","Root","instances","init","query","roots","rootsLen","instancelen","id","iselempresent","console","error","err","qsarr_1","_loop_1","nativ","Element","selectors","now","result","_EnableQSQSAScope","matches","msMatchesSelector","webkitMatchesSelector","s","el","parent_1","parentElement","parentNode","nodeType","defineProperty","value","TypeError","to","index","arguments","nextSource","nextKey","writable","configurable","getInstance","instance","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","enumerable","get","obj","prop","win","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","caf","cancelAnimationFrame","mozCancelAnimationFrame","clearTimeout","extend","name","copy","checkStorageValue","JSON","parse","setLocalStorage","storage","access","setItem","getBody","doc","createElement","fake","docElement","setFakeBody","docOverflow","style","overflow","background","appendChild","resetFakeBody","remove","offsetHeight","addCSSRule","sheet","selector","rules","insertRule","addRule","getCssRulesLength","cssRules","forEach","callback","scope","l","classListSupport","hasClass","classList","contains","addClass","add","removeClass","hasAttr","attr","hasAttribute","getAttr","isNodeList","item","setAttrs","els","attrs","toString","removeAttrs","attrLength","arrayFromNodeList","nl","hideElement","forceHide","display","showElement","isVisible","getComputedStyle","whichProperty","props","Props","charAt","toUpperCase","substr","prefix","getEndProperty","propIn","propOut","endProp","toLowerCase","supportsPassive","opts","passiveOption","passive","addEvents","preventScrolling","option","removeEvents","Events","topics","on","eventName","off","emit","data","type","keys","object","removeChild","tns","container","mode","axis","items","gutter","edgePadding","fixedWidth","autoWidth","viewportMax","slideBy","center","controls","controlsPosition","controlsText","controlsContainer","prevButton","nextButton","nav","navPosition","navContainer","navAsThumbnails","arrowKeys","speed","autoplay","autoplayPosition","autoplayTimeout","autoplayDirection","autoplayText","autoplayHoverPause","autoplayButton","autoplayButtonOutput","autoplayResetOnVisibility","animateIn","animateOut","animateNormal","animateDelay","loop","rewind","autoHeight","responsive","lazyload","lazyloadSelector","touch","mouseDrag","swipeAngle","nested","preventActionWhenRunning","preventScrollOnTouch","freezable","onInit","useLocalStorage","nonce","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","navigator","userAgent","uid","localStorage","getItem","removeItem","CALC","div","val","vals","width","offsetWidth","calc","PERCENTAGELAYOUT","supported","wrapper","outer","innerHTML","Math","abs","getBoundingClientRect","left","children","count","percentageLayout","CSSMQ","matchMedia","msMatchMedia","position","rule","styleSheet","cssText","createTextNode","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","insertBefore","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","warn","tnsList","optionsElements","nodeName","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","getOption","viewport","getViewportWidth","floor","fixedWidthViewportWidth","slideItemsOut","cloneCount","bp","tem","ceil","min","apply","max","getItemsMax","hasOption","slideCountNew","hasRightDeadZone","rightBoundary","getRightBoundary","updateIndexBeforeTransform","transformAttr","transformPrefix","transformPostfix","getIndexMax","getStartIndex","indexCached","indexMin","getCurrentSlide","indexMax","moveDirectionExpected","running","events","newContainerClasses","slideId","tnsId","disable","disabled","freeze","getFreeze","frozen","controlsEvents","onControlsClick","getEvent","keyIndex","keyCode","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","Number","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","slideClonedClass","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","x","y","resetVariblesWhenDisable","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","postfix","duration","tick","unit","from","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","version","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","ownerNode","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","getInsertPosition","pos","getClientWidth","rect","right","gap","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","substring","imgs","src","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","navHtml","hiddenStr","updateNavVisibility","isButton","updateControlsStatus","disableUI","resizeTasks","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","len","updateLiveRegion","updateGallerySlidePositions","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","arg","stopPropagation","srcset","imgSelector","complete","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","wp","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","propertyName","targetIndex","indexGap","isNaN","factor","dir","passEventObject","targetIn","setInterval","updateAutoplayButton","action","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","returnValue","getMoveDirectionExpected","angle","atan2","PI","direction","$","clientX","clientY","panUpdate","cancelable","dist","preventClick","indexMoved","moved","rough","displayIndex","650","900","1150"],"mappings":"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","file":"rorpojkarna.js","sourcesContent":["\"use strict\";\r\n/**\r\n * █████  ███  ███ ███████  ██████  ███  ███ ███████ ███  ██\r\n * ██   ██ ████  ████ ██      ██       ████  ████ ██      ████  ██\r\n * ███████ ██ ████ ██ █████  ██  ███ ██ ████ ██ █████  ██ ██  ██\r\n * ██   ██ ██  ██  ██ ██     ██  ██ ██  ██  ██ ██     ██  ██ ██\r\n * ██  ██ ██      ██ ███████  ██████  ██      ██ ███████ ██   ████\r\n *\r\n * AMegMen Namespace contains the Root class, Core class and related constants.\r\n *\r\n */\r\nvar AMegMen;\r\n(function (AMegMen) {\r\n var AllAMegMenInstances = {};\r\n var active_amegmen = {};\r\n var _EventList = ['amm_landingMouseenterFn', 'amm_landingMouseleaveFn', 'amm_landingFocusFn', 'amm_landingBlurFn', 'amm_toggleMainClickFn', 'amm_closeMainClickFn',\r\n 'amm_gotoMainClickFn', 'amm_l0ClickFn', 'amm_l0MouseenterFn', 'amm_l0MouseleaveFn', 'amm_l0FocusFn', 'amm_l0BlurFn', 'amm_panelMouseoverFn', 'amm_panelClickFn',\r\n 'amm_l1ClickFn', 'amm_l1MouseenterFn', 'amm_l1MouseleaveFn', 'amm_l1FocusFn', 'amm_l1BlurFn', 'amm_l2MouseenterFn', 'amm_l2MouseleaveFn', 'amm_l2FocusFn',\r\n 'amm_l2BlurFn', 'amm_docMouseoverFn', 'amm_docClickFn'];\r\n var _Defaults = {\r\n activeCls: 'active',\r\n actOnHoverAt: 1280,\r\n backBtnCls: '__amegmen--back-cta',\r\n closeBtnCls: '__amegmen--close-cta',\r\n colCls: '__amegmen--col',\r\n colShiftCls: '__amegmen-shift',\r\n colWidthCls: '__amegmen-width',\r\n focusCls: 'focus',\r\n hoverCls: 'hover',\r\n idPrefix: '__amegmen_id',\r\n isRTL: false,\r\n l0AnchorCls: '__amegmen--anchor-l0',\r\n l0PanelCls: '__amegmen--panel-l0',\r\n l1ActiveCls: '__amegmen--l1-active',\r\n l1AnchorCls: '__amegmen--anchor-l1',\r\n l1PanelCls: '__amegmen--panel-l1',\r\n l2ActiveCls: '__amegmen--l2-active',\r\n l2AnchorCls: '__amegmen--anchor-l2',\r\n landingCtaCls: '__amegmen--landing',\r\n lastcolCls: '__amegmen--col-last',\r\n mainBtnCls: '__amegmen--main-cta',\r\n mainElementCls: '__amegmen--main',\r\n rootCls: '__amegmen',\r\n offcanvasCls: '__amegmen--canvas',\r\n overflowHiddenCls: '__amegmen--nooverflow',\r\n panelCls: '__amegmen--panel',\r\n rtl_Cls: '__amegmen--r-to-l',\r\n shiftColumns: false,\r\n actOnHover: false,\r\n supportedCols: 4,\r\n toggleBtnCls: '__amegmen--toggle-cta'\r\n };\r\n /**\r\n * Polyfill function for Object.assign\r\n *\r\n */\r\n var _EnableAssign = function () {\r\n if (typeof Object.assign !== 'function') {\r\n Object.defineProperty(Object, 'assign', {\r\n value: function assign(target) {\r\n // function assign(target: any, varArgs: any)\r\n 'use strict';\r\n if (target === null || target === undefined) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n var to = Object(target);\r\n for (var index = 1; index < arguments.length; index++) {\r\n var nextSource = arguments[index];\r\n if (nextSource !== null && nextSource !== undefined) {\r\n for (var nextKey in nextSource) {\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n }\r\n };\r\n /**\r\n * Polyfill function for `:scope` for `QuerySelector` and `QuerySelectorAll`\r\n *\r\n */\r\n var _EnableQSQSAScope = function () {\r\n try {\r\n window.document.querySelector(':scope body');\r\n }\r\n catch (err) {\r\n var qsarr_1 = ['querySelector', 'querySelectorAll'];\r\n var _loop_1 = function (i) {\r\n var nativ = Element.prototype[qsarr_1[i]];\r\n Element.prototype[qsarr_1[i]] = function (selectors) {\r\n if (/(^|,)\\s*:scope/.test(selectors)) {\r\n var id = this.id;\r\n this.id = 'ID_' + Date.now();\r\n selectors = selectors.replace(/((^|,)\\s*):scope/g, '$1#' + this.id);\r\n var result = window.document[qsarr_1[i]](selectors);\r\n this.id = id;\r\n return result;\r\n }\r\n else {\r\n return nativ.call(this, selectors);\r\n }\r\n };\r\n };\r\n for (var i = 0; i < qsarr_1.length; i++) {\r\n _loop_1(i);\r\n }\r\n }\r\n };\r\n /**\r\n * Polyfill function for `Element.closest`\r\n *\r\n */\r\n var _EnableClosest = function () {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches =\r\n Element.prototype.msMatchesSelector ||\r\n Element.prototype.webkitMatchesSelector;\r\n }\r\n if (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n do {\r\n if (Element.prototype.matches.call(el, s))\r\n return el;\r\n var parent_1 = el.parentElement || el.parentNode;\r\n if (parent_1) {\r\n el = parent_1;\r\n }\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n }\r\n };\r\n /**\r\n * Function to trim whitespaces from a string\r\n *\r\n * @param str - The string which needs to be trimmed\r\n *\r\n * @returns The trimmed string.\r\n *\r\n */\r\n var _StringTrim = function (str) {\r\n return str.replace(/^\\s+|\\s+$/g, '');\r\n };\r\n /**\r\n * Function to convert NodeList and other lists to loopable Arrays\r\n *\r\n * @param arr - Either Nodelist of any type of array\r\n *\r\n * @returns A loopable Array.\r\n *\r\n */\r\n var _ArrayCall = function (arr) {\r\n try {\r\n return Array.prototype.slice.call(arr);\r\n }\r\n catch (e) {\r\n return [];\r\n }\r\n };\r\n /**\r\n * Function to check wheather an element has a string in its class attribute\r\n *\r\n * @param element - An HTML Element\r\n * @param cls - A string\r\n *\r\n * @returns `true` if the string exists in class attribute, otherwise `false`\r\n *\r\n */\r\n var _HasClass = function (element, cls) {\r\n if (element) {\r\n var clsarr = element.className.split(' ');\r\n return clsarr.indexOf(cls) > -1 ? true : false;\r\n }\r\n return false;\r\n };\r\n /**\r\n * Function to add a string to an element's class attribute\r\n *\r\n * @param element - An HTML Element\r\n * @param cls - A string\r\n *\r\n */\r\n var _AddClass = function (element, cls) {\r\n if (element) {\r\n var clsarr = cls.split(' ');\r\n var clsarrLength = clsarr.length;\r\n for (var i = 0; i < clsarrLength; i++) {\r\n var thiscls = clsarr[i];\r\n if (!_HasClass(element, thiscls)) {\r\n element.className += ' ' + thiscls;\r\n }\r\n }\r\n element.className = _StringTrim(element.className);\r\n }\r\n };\r\n /**\r\n * Function to remove a string from an element's class attribute\r\n *\r\n * @param element - An HTML Element\r\n * @param cls - A string\r\n *\r\n */\r\n var _RemoveClass = function (element, cls) {\r\n if (element) {\r\n var clsarr = cls.split(' ');\r\n var curclass = element.className.split(' ');\r\n var curclassLength = curclass.length;\r\n for (var i = 0; i < curclassLength; i++) {\r\n var thiscls = curclass[i];\r\n if (clsarr.indexOf(thiscls) > -1) {\r\n curclass.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n element.className = _StringTrim(curclass.join(' '));\r\n }\r\n };\r\n /**\r\n * Function to add a unique id attribute if it is not present already.\r\n * This is required to monitor the outside click and hover behavior\r\n *\r\n * @param element - An HTML Element\r\n * @param settings - Options specific to individual AMegMen instance\r\n * @param unique_number - A unique number as additional identification\r\n * @param shouldAdd - If `true`, adds an id. Otherwise it is removed.\r\n *\r\n */\r\n var _ToggleUniqueId = function (element, settings, unique_number, shouldAddId) {\r\n if (settings.idPrefix) {\r\n if (shouldAddId && !element.getAttribute('id')) {\r\n element.setAttribute('id', settings.idPrefix + '_' + new Date().getTime() + '_' + unique_number);\r\n }\r\n else if (!shouldAddId && element.getAttribute('id')) {\r\n var thisid = element.getAttribute('id');\r\n var regex = new RegExp(settings.idPrefix, 'gi');\r\n if (regex.test(thisid || '')) {\r\n element.removeAttribute('id');\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Function to close the Level 1 and Level 2 Megamenues if click or hover happens on document or window\r\n *\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n * @param eventtype - Is `click` or `mouseover`\r\n *\r\n */\r\n var amm_document_out = function (overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event && _StringTrim(active_amegmen.closestl0li || '').length > 0) {\r\n var closest = event.target.closest('#' + active_amegmen.closestl0li);\r\n if (!closest) {\r\n amm_subnavclose(true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Function to close the Level 2 Megamenu if click or hover happens on Level 1 Megamenu Panel\r\n *\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n * @param eventtype - Is `click` or `mouseover`\r\n *\r\n */\r\n var amm_subnav_out = function (overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event && _StringTrim(active_amegmen.closestl1li || '').length > 0) {\r\n var closest = event.target.closest('#' + active_amegmen.closestl1li);\r\n if (!closest) {\r\n amm_subnavclose(false, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Function to close the Megamenu Panel\r\n *\r\n * @param shouldCloseL0Panel - If `true`, loses Level 0 and Level 1 Panels. Otherwise closes Level 1 panels only\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n * @param eventtype - Is `click` or `mouseover`\r\n *\r\n */\r\n var amm_subnavclose = function (shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n for (var i in AllAMegMenInstances) {\r\n var thiscore = AllAMegMenInstances[i];\r\n var rootElem = thiscore.rootElem;\r\n var offcanvas = thiscore.offcanvas;\r\n var shouldExecute = false;\r\n if (eventtype === 'mouseover' && (thiscore.settings || {}).actOnHover === true) {\r\n shouldExecute = true;\r\n }\r\n if (eventtype === 'click') {\r\n shouldExecute = true;\r\n }\r\n if (shouldExecute && _HasClass(rootElem, activeCls)) {\r\n var mainElem = thiscore.mainElem;\r\n var l0nav = thiscore.l0nav || [];\r\n if (shouldCloseL0Panel) {\r\n _RemoveClass(offcanvas, l1ActiveCls);\r\n _RemoveClass(rootElem, activeCls);\r\n _RemoveClass(mainElem, overflowHiddenCls);\r\n }\r\n _RemoveClass(offcanvas, l2ActiveCls);\r\n for (var j = l0nav.length - 1; j >= 0; j--) {\r\n var thisl0 = l0nav[j] || {};\r\n if (shouldCloseL0Panel) {\r\n if (thisl0.l0anchor) {\r\n _RemoveClass(thisl0.l0anchor, activeCls);\r\n thisl0.l0anchor.setAttribute('aria-expanded', 'false');\r\n }\r\n if (thisl0.l0panel) {\r\n _RemoveClass(thisl0.l0panel, activeCls);\r\n thisl0.l0panel.setAttribute('aria-expanded', 'false');\r\n thisl0.l0panel.setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n if (thisl0.navelement) {\r\n _RemoveClass(thisl0.navelement, overflowHiddenCls);\r\n }\r\n var l1nav = thisl0.l1nav || [];\r\n if (l1nav.length > 0) {\r\n for (var k = l1nav.length - 1; k >= 0; k--) {\r\n var thisl1 = l1nav[k] || {};\r\n if (thisl1.l1anchor) {\r\n _RemoveClass(thisl1.l1anchor, activeCls);\r\n thisl1.l1anchor.setAttribute('aria-expanded', 'false');\r\n }\r\n if (thisl1.l1panel) {\r\n _RemoveClass(thisl1.l1panel, activeCls);\r\n thisl1.l1panel.setAttribute('aria-expanded', 'false');\r\n thisl1.l1panel.setAttribute('aria-hidden', 'true');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n /**\r\n * Mouseenter event for Landing link on the panels\r\n *\r\n * @param landingElement - An HTML Element\r\n * @param hoverCls - CSS Class for hovered element\r\n *\r\n */\r\n var amm_landingMouseenterFn = function (landingElement, hoverCls) {\r\n return function () {\r\n _AddClass(landingElement, hoverCls);\r\n };\r\n };\r\n /**\r\n * Mouseleave event for Landing link on the panels\r\n *\r\n * @param landingElement - An HTML Element\r\n * @param hoverCls - CSS Class for hovered element\r\n *\r\n */\r\n var amm_landingMouseleaveFn = function (landingElement, hoverCls) {\r\n return function () {\r\n _RemoveClass(landingElement, hoverCls);\r\n };\r\n };\r\n /**\r\n * Focus event for Landing link on the panels\r\n *\r\n * @param landingElement - An HTML Element\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_landingFocusFn = function (landingElement, focusCls) {\r\n return function () {\r\n _AddClass(landingElement, focusCls);\r\n };\r\n };\r\n /**\r\n * Blur event for Landing link on the panels\r\n *\r\n * @param landingElement - An HTML Element\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_landingBlurFn = function (landingElement, focusCls) {\r\n return function () {\r\n _RemoveClass(landingElement, focusCls);\r\n };\r\n };\r\n /**\r\n * Focus event for Level 0 link\r\n *\r\n * @param l0anchor - An HTML Anchor element at Level 0 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l0FocusFn = function (l0anchor, focusCls) {\r\n return function () {\r\n _AddClass(l0anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Blur event for Level 0 link\r\n *\r\n * @param l0anchor - An HTML Anchor element at Level 0 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l0BlurFn = function (l0anchor, focusCls) {\r\n return function () {\r\n _RemoveClass(l0anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Focus event for Level 1 link\r\n *\r\n * @param l1anchor - An HTML Anchor element at Level 1 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l1FocusFn = function (l1anchor, focusCls) {\r\n return function () {\r\n _AddClass(l1anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Blur event for Level 1 link\r\n *\r\n * @param l1anchor - An HTML Anchor element at Level 1 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l1BlurFn = function (l1anchor, focusCls) {\r\n return function () {\r\n _RemoveClass(l1anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Mouseenter event for Level 2 link\r\n *\r\n * @param l2anchor - An HTML Anchor element at Level 2 Navigation\r\n * @param hoverCls - CSS Class for hovered element\r\n *\r\n */\r\n var amm_l2MouseenterFn = function (l2anchor, hoverCls) {\r\n return function () {\r\n _AddClass(l2anchor, hoverCls);\r\n };\r\n };\r\n /**\r\n * Mouseleave event for Level 2 link\r\n *\r\n * @param l2anchor - An HTML Anchor element at Level 2 Navigation\r\n * @param hoverCls - CSS Class for hovered element\r\n *\r\n */\r\n var amm_l2MouseleaveFn = function (l2anchor, hoverCls) {\r\n return function () {\r\n _RemoveClass(l2anchor, hoverCls);\r\n };\r\n };\r\n /**\r\n * Focus event for Level 2 link\r\n *\r\n * @param l2anchor - An HTML Anchor element at Level 2 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l2FocusFn = function (l2anchor, focusCls) {\r\n return function () {\r\n _AddClass(l2anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Blur event for Level 2 link\r\n *\r\n * @param l2anchor - An HTML Anchor element at Level 2 Navigation\r\n * @param focusCls - CSS Class for focussed element\r\n *\r\n */\r\n var amm_l2BlurFn = function (l2anchor, focusCls) {\r\n return function () {\r\n _RemoveClass(l2anchor, focusCls);\r\n };\r\n };\r\n /**\r\n * Click event for Level 0 link\r\n *\r\n * @param l0anchor - An HTML Anchor element at Level 0 Navigation\r\n * @param l0panel - Adjecent Panel to the l0anchor\r\n * @param parent - Parent LI element\r\n * @param mainElem - Main Wrapper which contains the navigation elements\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class for active elements\r\n * @param eventtype - 'Click' or 'Mouseenter' for hoverable megamenues\r\n *\r\n */\r\n var amm_l0ClickFn = function (l0anchor, l0panel, parent, mainElem, offcanvas, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event && l0panel) {\r\n event.preventDefault();\r\n }\r\n if (_HasClass(l0anchor, activeCls)) {\r\n active_amegmen.elem = null;\r\n active_amegmen.closestl0li = '';\r\n amm_subnavclose(true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n }\r\n else {\r\n amm_subnavclose(true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n active_amegmen.elem = parent;\r\n active_amegmen.closestl0li = l0anchor.closest('li').getAttribute('id');\r\n l0anchor.setAttribute('aria-expanded', 'true');\r\n l0panel.setAttribute('aria-expanded', 'true');\r\n l0panel.setAttribute('aria-hidden', 'false');\r\n _AddClass(parent, activeCls);\r\n _AddClass(offcanvas, l1ActiveCls);\r\n _AddClass(l0anchor, activeCls);\r\n _AddClass(l0panel, activeCls);\r\n _AddClass(mainElem, overflowHiddenCls);\r\n }\r\n };\r\n };\r\n /**\r\n * Mouseenter event for Level 0 link\r\n *\r\n * @param l0anchor - An HTML Anchor element at Level 0 Navigation\r\n * @param hoverCls - Class for hovered elements\r\n * @param actOnHover - If `true`, megamenu activates on hover\r\n * @param actOnHoverAt - The minimum breakpoint at or after which the hover will work\r\n *\r\n */\r\n var amm_l0MouseenterFn = function (l0anchor, hoverCls, actOnHover, actOnHoverAt) {\r\n return function () {\r\n _AddClass(l0anchor, hoverCls);\r\n if (actOnHover) {\r\n var windowwidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n if (windowwidth >= actOnHoverAt) {\r\n l0anchor.click();\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Mouseleave event for Level 0 link\r\n *\r\n * @param l0anchor - An HTML Anchor element at Level 0 Navigation\r\n * @param hoverCls - Class for hovered elements\r\n *\r\n */\r\n var amm_l0MouseleaveFn = function (l0anchor, hoverCls) {\r\n return function () {\r\n _RemoveClass(l0anchor, hoverCls);\r\n };\r\n };\r\n /**\r\n * Click event for Level 1 link\r\n *\r\n * @param l1anchor - An HTML Anchor element at Level 1 Navigation\r\n * @param l1panel - Adjecent Panel to the l1anchor\r\n * @param l0navelement - Parent `nav` element of l1anchor\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class for active elements\r\n * @param eventtype - 'Click' or 'Mouseenter' for hoverable megamenues\r\n *\r\n */\r\n var amm_l1ClickFn = function (l1anchor, l1panel, offcanvas, l0navelement, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event && l1panel) {\r\n event.preventDefault();\r\n }\r\n if (_HasClass(l1anchor, activeCls)) {\r\n active_amegmen.closestl1li = '';\r\n amm_subnavclose(false, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n }\r\n else {\r\n active_amegmen.closestl1li = l1anchor.closest('li').getAttribute('id');\r\n amm_subnavclose(false, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n l1anchor.setAttribute('aria-expanded', 'true');\r\n l1panel.setAttribute('aria-expanded', 'true');\r\n l1panel.setAttribute('aria-hidden', 'false');\r\n _AddClass(offcanvas, l2ActiveCls);\r\n _AddClass(l1anchor, activeCls);\r\n _AddClass(l1panel, activeCls);\r\n _AddClass(l0navelement, overflowHiddenCls);\r\n }\r\n };\r\n };\r\n /**\r\n * Mouseenter event for Level 1 link\r\n *\r\n * @param l1anchor - An HTML Anchor element at Level 1 Navigation\r\n * @param hoverCls - Class for hovered elements\r\n * @param actOnHover - If `true`, megamenu activates on hover\r\n * @param actOnHoverAt - The minimum breakpoint at or after which the hover will work\r\n *\r\n */\r\n var amm_l1MouseenterFn = function (l1anchor, hoverCls, actOnHover, actOnHoverAt) {\r\n return function () {\r\n _AddClass(l1anchor, hoverCls);\r\n if (actOnHover) {\r\n var windowwidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n if (windowwidth >= actOnHoverAt) {\r\n l1anchor.click();\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Mouseleave event for Level 1 link\r\n *\r\n * @param l1anchor - An HTML Anchor element at Level 1 Navigation\r\n * @param hoverCls - Class for hovered elements\r\n *\r\n */\r\n var amm_l1MouseleaveFn = function (l1anchor, hoverCls) {\r\n return function () {\r\n _RemoveClass(l1anchor, hoverCls);\r\n };\r\n };\r\n /**\r\n * Function to navigate the megamenu to Level 0 from Level 1 and Level 1\r\n *\r\n * @param shouldCloseL0Panel - If `true`, loses Level 0 and Level 1 Panels. Otherwise closes Level 1 panels only\r\n * @param overflowHiddenCls - Class which disables scrollbars on mobile\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n * @param eventtype - Is `click` or `mouseover`\r\n *\r\n */\r\n var amm_gotoMain = function (shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n amm_subnavclose(shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n };\r\n };\r\n /**\r\n * Click event for closing megamenu on mobile\r\n *\r\n * @param togglenav - Button element to close Offcanvas on mobile\r\n * @param offcanvas - Offcanvas element containing megamenu\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n *\r\n */\r\n var amm_closeMain = function (togglenav, offcanvas, shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n amm_subnavclose(shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n _RemoveClass(togglenav, activeCls);\r\n _RemoveClass(offcanvas, activeCls);\r\n };\r\n };\r\n /**\r\n * Click event for opening/closing megamenu on mobile\r\n *\r\n * @param togglenav - Button element to close Offcanvas on mobile\r\n * @param offcanvas - Offcanvas element containing megamenu\r\n * @param activeCls - Class which activates the megamenu links and panels\r\n *\r\n */\r\n var amm_toggleMain = function (togglenav, offcanvas, shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype) {\r\n return function () {\r\n if (event) {\r\n event.preventDefault();\r\n if (_HasClass(togglenav, activeCls)) {\r\n _RemoveClass(togglenav, activeCls);\r\n _RemoveClass(offcanvas, activeCls);\r\n amm_closeMain(togglenav, offcanvas, shouldCloseL0Panel, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, eventtype);\r\n }\r\n else {\r\n _AddClass(togglenav, activeCls);\r\n _AddClass(offcanvas, activeCls);\r\n }\r\n }\r\n };\r\n };\r\n /**\r\n * Function to add/remove events related to megamenu elements\r\n *\r\n * @param shouldAdd - If `true`, adds the event to the element, otherwise removes it\r\n * @param element - The element to which event is added/removed\r\n * @param eventtype - Eventtype as a string, like 'click', 'mouseenter', 'mouseleave' etc.\r\n * @param fn - The Eventlistener function which is attached to the respective event\r\n *\r\n */\r\n var amm_eventScheduler = function (shouldAdd, element, eventtype, fn) {\r\n shouldAdd ? element.addEventListener(eventtype, fn, false) : element.removeEventListener(eventtype, fn, false);\r\n };\r\n /**\r\n * Function to toggle events to AMegMen instance elements\r\n *\r\n * @param core - AMegMen instance core object\r\n * @param settings - AMegMen instance settings object\r\n *\r\n */\r\n var amm_toggleevents = function (core, settings) {\r\n var togglenav = core.togglenav;\r\n var closenav = core.closenav;\r\n var offcanvas = core.offcanvas;\r\n var tomain = _ArrayCall(core.tomain);\r\n var toprevious = _ArrayCall(core.toprevious);\r\n var overflowHiddenCls = settings.overflowHiddenCls ? settings.overflowHiddenCls : '';\r\n var activeCls = settings.activeCls ? settings.activeCls : '';\r\n var hoverCls = settings.hoverCls ? settings.hoverCls : '';\r\n var focusCls = settings.focusCls ? settings.focusCls : '';\r\n var l1ActiveCls = settings.l1ActiveCls ? settings.l1ActiveCls : '';\r\n var l2ActiveCls = settings.l2ActiveCls ? settings.l2ActiveCls : '';\r\n var hoverprops = {\r\n actOnHover: settings.actOnHover ? settings.actOnHover : false,\r\n actOnHoverAt: settings.actOnHoverAt ? settings.actOnHoverAt : 1280\r\n };\r\n if (settings.landingCtaCls) {\r\n var landingElements = _ArrayCall(core.rootElem.querySelectorAll('.' + settings.landingCtaCls + ' > a'));\r\n for (var i = landingElements.length - 1; i >= 0; i--) {\r\n var thislandingelem = landingElements[i];\r\n if (!thislandingelem.amm_landingMouseenterFn) {\r\n thislandingelem.amm_landingMouseenterFn = amm_landingMouseenterFn(thislandingelem, hoverCls);\r\n }\r\n if (!thislandingelem.amm_landingMouseleaveFn) {\r\n thislandingelem.amm_landingMouseleaveFn = amm_landingMouseleaveFn(thislandingelem, hoverCls);\r\n }\r\n if (!thislandingelem.amm_landingFocusFn) {\r\n thislandingelem.amm_landingFocusFn = amm_landingFocusFn(thislandingelem, focusCls);\r\n }\r\n if (!thislandingelem.amm_landingBlurFn) {\r\n thislandingelem.amm_landingBlurFn = amm_landingBlurFn(thislandingelem, focusCls);\r\n }\r\n amm_eventScheduler(true, thislandingelem, 'mouseenter', thislandingelem.amm_landingMouseenterFn);\r\n amm_eventScheduler(true, thislandingelem, 'mouseleave', thislandingelem.amm_landingMouseleaveFn);\r\n amm_eventScheduler(true, thislandingelem, 'focus', thislandingelem.amm_landingFocusFn);\r\n amm_eventScheduler(true, thislandingelem, 'blur', thislandingelem.amm_landingBlurFn);\r\n }\r\n }\r\n if (togglenav && offcanvas) {\r\n if (!togglenav.amm_toggleMainClickFn) {\r\n togglenav.amm_toggleMainClickFn = amm_toggleMain(togglenav, offcanvas, true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, togglenav, 'click', togglenav.amm_toggleMainClickFn);\r\n }\r\n if (closenav && offcanvas) {\r\n if (!closenav.amm_closeMainClickFn) {\r\n closenav.amm_closeMainClickFn = amm_closeMain(togglenav, offcanvas, true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, closenav, 'click', closenav.amm_closeMainClickFn);\r\n }\r\n if (tomain.length > 0) {\r\n for (var i = tomain.length - 1; i >= 0; i--) {\r\n var thismain = tomain[i];\r\n if (!thismain.amm_gotoMainClickFn) {\r\n thismain.amm_gotoMainClickFn = amm_gotoMain(true, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, thismain, 'click', thismain.amm_gotoMainClickFn);\r\n }\r\n }\r\n if (toprevious.length > 0) {\r\n for (var i = toprevious.length - 1; i >= 0; i--) {\r\n var thisprevious = toprevious[i];\r\n if (!thisprevious.amm_gotoMainClickFn) {\r\n thisprevious.amm_gotoMainClickFn = amm_gotoMain(false, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, thisprevious, 'click', thisprevious.amm_gotoMainClickFn);\r\n }\r\n }\r\n var l0nav = core.l0nav || [];\r\n for (var i = l0nav.length - 1; i >= 0; i--) {\r\n var thisl0nav = l0nav[i];\r\n var l0anchor = thisl0nav.l0anchor;\r\n var l0panel = thisl0nav.l0panel;\r\n var l0navelement = thisl0nav.navelement;\r\n var l1nav = thisl0nav.l1nav || [];\r\n if (!l0anchor.amm_l0ClickFn) {\r\n l0anchor.amm_l0ClickFn = amm_l0ClickFn(l0anchor, l0panel, core.rootElem, core.mainElem, offcanvas, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n if (!l0anchor.amm_l0MouseenterFn) {\r\n l0anchor.amm_l0MouseenterFn = amm_l0MouseenterFn(l0anchor, hoverCls, hoverprops.actOnHover, hoverprops.actOnHoverAt);\r\n }\r\n if (!l0anchor.amm_l0MouseleaveFn) {\r\n l0anchor.amm_l0MouseleaveFn = amm_l0MouseleaveFn(l0anchor, hoverCls);\r\n }\r\n if (!l0anchor.amm_l0FocusFn) {\r\n l0anchor.amm_l0FocusFn = amm_l0FocusFn(l0anchor, focusCls);\r\n }\r\n if (!l0anchor.amm_l0BlurFn) {\r\n l0anchor.amm_l0BlurFn = amm_l0BlurFn(l0anchor, focusCls);\r\n }\r\n amm_eventScheduler(true, l0anchor, 'click', l0anchor.amm_l0ClickFn);\r\n amm_eventScheduler(true, l0anchor, 'mouseenter', l0anchor.amm_l0MouseenterFn);\r\n amm_eventScheduler(true, l0anchor, 'mouseleave', l0anchor.amm_l0MouseleaveFn);\r\n amm_eventScheduler(true, l0anchor, 'focus', l0anchor.amm_l0FocusFn);\r\n amm_eventScheduler(true, l0anchor, 'blur', l0anchor.amm_l0BlurFn);\r\n if (l0panel) {\r\n if (!l0panel.amm_panelClickFn) {\r\n l0panel.amm_panelClickFn = amm_subnav_out(overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, l0panel, 'click', l0panel.amm_panelClickFn);\r\n if (hoverprops.actOnHover) {\r\n if (!l0panel.amm_panelMouseoverFn) {\r\n l0panel.amm_panelMouseoverFn = amm_subnav_out(overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'mouseover');\r\n }\r\n amm_eventScheduler(true, l0panel, 'mouseover', l0panel.amm_panelMouseoverFn);\r\n }\r\n }\r\n for (var j = l1nav.length - 1; j >= 0; j--) {\r\n var l1anchor = l1nav[j].l1anchor;\r\n var l1panel = l1nav[j].l1panel;\r\n var l2nav = l1nav[j].l2nav || [];\r\n if (l1anchor) {\r\n if (!l1anchor.amm_l1ClickFn) {\r\n l1anchor.amm_l1ClickFn = amm_l1ClickFn(l1anchor, l1panel, offcanvas, l0navelement, overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n if (!l1anchor.amm_l1MouseenterFn) {\r\n l1anchor.amm_l1MouseenterFn = amm_l1MouseenterFn(l1anchor, hoverCls, hoverprops.actOnHover, hoverprops.actOnHoverAt);\r\n }\r\n if (!l1anchor.amm_l1MouseleaveFn) {\r\n l1anchor.amm_l1MouseleaveFn = amm_l1MouseleaveFn(l1anchor, hoverCls);\r\n }\r\n if (!l1anchor.amm_l1FocusFn) {\r\n l1anchor.amm_l1FocusFn = amm_l1FocusFn(l1anchor, focusCls);\r\n }\r\n if (!l1anchor.amm_l1BlurFn) {\r\n l1anchor.amm_l1BlurFn = amm_l1BlurFn(l1anchor, focusCls);\r\n }\r\n amm_eventScheduler(true, l1anchor, 'click', l1anchor.amm_l1ClickFn);\r\n amm_eventScheduler(true, l1anchor, 'mouseenter', l1anchor.amm_l1MouseenterFn);\r\n amm_eventScheduler(true, l1anchor, 'mouseleave', l1anchor.amm_l1MouseleaveFn);\r\n amm_eventScheduler(true, l1anchor, 'focus', l1anchor.amm_l1FocusFn);\r\n amm_eventScheduler(true, l1anchor, 'blur', l1anchor.amm_l1BlurFn);\r\n }\r\n for (var k = l2nav.length - 1; k >= 0; k--) {\r\n var l2anchor = l2nav[k];\r\n if (!l2anchor.amm_l2MouseenterFn) {\r\n l2anchor.amm_l2MouseenterFn = amm_l2MouseenterFn(l2anchor, hoverCls);\r\n }\r\n if (!l2anchor.amm_l2MouseleaveFn) {\r\n l2anchor.amm_l2MouseleaveFn = amm_l2MouseleaveFn(l2anchor, hoverCls);\r\n }\r\n if (!l2anchor.amm_l2FocusFn) {\r\n l2anchor.amm_l2FocusFn = amm_l2FocusFn(l2anchor, focusCls);\r\n }\r\n if (!l2anchor.amm_l2BlurFn) {\r\n l2anchor.amm_l2BlurFn = amm_l2BlurFn(l2anchor, focusCls);\r\n }\r\n amm_eventScheduler(true, l2anchor, 'mouseenter', l2anchor.amm_l2MouseenterFn);\r\n amm_eventScheduler(true, l2anchor, 'mouseleave', l2anchor.amm_l2MouseleaveFn);\r\n amm_eventScheduler(true, l2anchor, 'focus', l2anchor.amm_l2FocusFn);\r\n amm_eventScheduler(true, l2anchor, 'blur', l2anchor.amm_l2BlurFn);\r\n }\r\n }\r\n }\r\n if (!document.amm_docClickFn) {\r\n document.amm_docClickFn = amm_document_out(overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'click');\r\n }\r\n amm_eventScheduler(true, document, 'click', document.amm_docClickFn);\r\n if (hoverprops.actOnHover) {\r\n if (!window.amm_docMouseoverFn) {\r\n window.amm_docMouseoverFn = amm_document_out(overflowHiddenCls, activeCls, l1ActiveCls, l2ActiveCls, 'mouseover');\r\n }\r\n amm_eventScheduler(true, window, 'mouseover', window.amm_docMouseoverFn);\r\n }\r\n };\r\n /**\r\n * Function to initialize AMegMen instance\r\n *\r\n * @param core - AMegMen instance core object\r\n * @param rootElem - Parent `nav` element\r\n * @param settings - AMegMen instance settings object\r\n *\r\n * @returns The AMegMen instance core object after updating elements and events\r\n *\r\n */\r\n var amm_init = function (core, rootElem, settings) {\r\n _AddClass(rootElem, settings.rootCls ? settings.rootCls : '');\r\n core.rootElem = rootElem;\r\n core.settings = settings;\r\n core.mainElem = core.rootElem.querySelector(\".\" + settings.mainElementCls);\r\n core.togglenav = core.rootElem.querySelector(\".\" + settings.toggleBtnCls);\r\n core.closenav = core.rootElem.querySelector(\".\" + settings.closeBtnCls);\r\n core.offcanvas = core.rootElem.querySelector(\".\" + settings.offcanvasCls);\r\n core.tomain = core.rootElem.querySelectorAll(\".\" + settings.mainBtnCls);\r\n core.toprevious = core.rootElem.querySelectorAll(\".\" + settings.backBtnCls);\r\n if (core.settings.isRTL) {\r\n _AddClass(core.rootElem, settings.rtl_Cls ? settings.rtl_Cls : '');\r\n }\r\n if (core.mainElem) {\r\n core.l0nav = [];\r\n var l0li = _ArrayCall(core.mainElem.querySelectorAll(':scope > ul > li'));\r\n for (var i = l0li.length - 1; i >= 0; i--) {\r\n var thisl0li = l0li[i];\r\n _ToggleUniqueId(thisl0li, settings, i, true);\r\n var nav0obj = {};\r\n nav0obj.l0li = thisl0li;\r\n nav0obj.l0anchor = thisl0li.querySelector(':scope > a');\r\n _AddClass(nav0obj.l0anchor, settings.l0AnchorCls ? settings.l0AnchorCls : '');\r\n var l0panel = thisl0li.querySelector(\":scope > .\" + settings.panelCls);\r\n if (l0panel) {\r\n nav0obj.l0anchor.setAttribute('role', 'button');\r\n nav0obj.l0anchor.setAttribute('aria-expanded', 'false');\r\n l0panel.setAttribute('role', 'region');\r\n l0panel.setAttribute('aria-expanded', 'false');\r\n l0panel.setAttribute('aria-hidden', 'true');\r\n _AddClass(l0panel, settings.l0PanelCls ? settings.l0PanelCls : '');\r\n nav0obj.l0panel = l0panel;\r\n nav0obj.l0tomain = l0panel.querySelector(\".\" + settings.mainBtnCls);\r\n var l1navelement = l0panel.querySelector(':scope > nav');\r\n if (l1navelement) {\r\n nav0obj.navelement = l1navelement;\r\n var l1cols = _ArrayCall(l1navelement.querySelectorAll(\":scope > .\" + settings.colCls)) || [];\r\n nav0obj.l1cols = l1cols.length;\r\n nav0obj.l1nav = [];\r\n if (l1cols.length > 0) {\r\n var shiftnum = (settings.supportedCols || 0) - l1cols.length;\r\n var l1li = _ArrayCall(l1navelement.querySelectorAll(\":scope > .\" + settings.colCls + \" > ul > li\")) || [];\r\n var colnum = parseInt((settings.supportedCols || 0) + '');\r\n for (var j = l1cols.length - 1; j >= 0; j--) {\r\n var thisl1col = l1cols[j];\r\n _AddClass(thisl1col, settings.colCls + \"-\" + (colnum > 0 ? colnum : 2));\r\n if (j === colnum - 1 && j > 1) {\r\n _AddClass(thisl1col, settings.lastcolCls ? settings.lastcolCls : '');\r\n }\r\n }\r\n for (var j = l1li.length - 1; j >= 0; j--) {\r\n var thisl1li = l1li[j];\r\n _ToggleUniqueId(thisl1li, settings, j, true);\r\n var nav1obj = {};\r\n nav1obj.l1li = thisl1li;\r\n nav1obj.l1anchor = thisl1li.querySelector(':scope > a');\r\n _AddClass(nav1obj.l1anchor, settings.l1AnchorCls ? settings.l1AnchorCls : '');\r\n var l1panel = thisl1li.querySelector(\":scope > .\" + settings.panelCls);\r\n if (l1panel) {\r\n nav1obj.l1anchor.setAttribute('role', 'button');\r\n nav1obj.l1anchor.setAttribute('aria-expanded', 'false');\r\n l1panel.setAttribute('role', 'region');\r\n l1panel.setAttribute('aria-expanded', 'false');\r\n l1panel.setAttribute('aria-hidden', 'true');\r\n _AddClass(l1panel, settings.l1PanelCls ? settings.l1PanelCls : '');\r\n nav1obj.l1panel = l1panel;\r\n nav1obj.l1toback = l1panel.querySelector(\".\" + settings.backBtnCls);\r\n var l2navelement = l1panel.querySelector(':scope > nav');\r\n if (l2navelement) {\r\n nav1obj.navelement = l2navelement;\r\n var l2cols = _ArrayCall(l2navelement.querySelectorAll(\":scope > .\" + settings.colCls)) || [];\r\n if (l2cols.length > 0) {\r\n if (settings.shiftColumns) {\r\n _AddClass(l1navelement, (settings.colShiftCls ? settings.colShiftCls : '') + \"-\" + shiftnum);\r\n }\r\n _AddClass(l1panel, (settings.colWidthCls ? settings.colWidthCls : '') + \"-\" + shiftnum);\r\n var l2a = _ArrayCall(l2navelement.querySelectorAll(\":scope > .\" + settings.colCls + \" > ul > li > a\")) || [];\r\n for (var k = l2a.length - 1; k >= 0; k--) {\r\n var thisl2anchor = l2a[k];\r\n _AddClass(thisl2anchor, settings.l2AnchorCls ? settings.l2AnchorCls : '');\r\n }\r\n for (var k = l2cols.length - 1; k >= 0; k--) {\r\n var thisl2col = l2cols[k];\r\n // _AddClass(l2cols[k], `__amegmen--col-${l2cols.length}`);\r\n _AddClass(thisl2col, (settings.colCls ? settings.colCls : '') + \"-1\");\r\n }\r\n nav1obj.l2nav = l2a;\r\n }\r\n }\r\n }\r\n nav0obj.l1nav.push(nav1obj);\r\n }\r\n }\r\n }\r\n }\r\n core.l0nav.push(nav0obj);\r\n }\r\n }\r\n amm_toggleevents(core, settings);\r\n return core;\r\n };\r\n /**\r\n * Function to destroy AMegMen instance\r\n *\r\n * @param thisid - Element id of the AMegMen instance\r\n * @param core - AMegMen instance core object\r\n *\r\n */\r\n var amm_destroy = function (thisid, core) {\r\n var rootElem = core.rootElem;\r\n var settings = core.settings;\r\n var allElems = _ArrayCall(rootElem.querySelectorAll('*'));\r\n var cls = settings.rootCls + ' '\r\n + settings.l0AnchorCls + ' '\r\n + settings.l0PanelCls + ' '\r\n + settings.l1AnchorCls + ' '\r\n + settings.l1PanelCls + ' '\r\n + settings.l2AnchorCls + ' '\r\n + settings.lastcolCls + ' '\r\n + settings.activeCls + ' '\r\n + settings.focusCls + ' '\r\n + settings.hoverCls + ' '\r\n + settings.rtl_Cls + ' '\r\n + settings.l2ActiveCls + ' '\r\n + settings.l1ActiveCls + ' '\r\n + settings.overflowHiddenCls;\r\n _RemoveClass(rootElem, cls);\r\n for (var i = allElems.length - 1; i >= 0; i--) {\r\n var thiselem = allElems[i];\r\n if ((_HasClass(thiselem, settings.l0AnchorCls) || _HasClass(thiselem, settings.l1AnchorCls)) && thiselem.getAttribute('role') === 'button') {\r\n thiselem.removeAttribute('role');\r\n thiselem.removeAttribute('aria-expanded');\r\n }\r\n if ((_HasClass(thiselem, settings.l0PanelCls) || _HasClass(thiselem, settings.l1PanelCls)) && thiselem.getAttribute('role') === 'region') {\r\n thiselem.removeAttribute('role');\r\n thiselem.removeAttribute('aria-expanded');\r\n thiselem.removeAttribute('aria-hidden');\r\n }\r\n _RemoveClass(thiselem, cls);\r\n _ToggleUniqueId(thiselem, settings, i, false);\r\n for (var j = _EventList.length - 1; j >= 0; j--) {\r\n var thisevent = _EventList[j];\r\n if (thiselem[thisevent]) {\r\n if (/focus/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'focus', thiselem[thisevent]);\r\n }\r\n if (/blur/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'blur', thiselem[thisevent]);\r\n }\r\n if (/click/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'click', thiselem[thisevent]);\r\n }\r\n if (/mouseenter/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'mouseenter', thiselem[thisevent]);\r\n }\r\n if (/mouseleave/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'mouseleave', thiselem[thisevent]);\r\n }\r\n if (/mouseover/gi.test(thisevent)) {\r\n amm_eventScheduler(false, thiselem, 'mouseover', thiselem[thisevent]);\r\n }\r\n thiselem[thisevent] = null;\r\n }\r\n }\r\n }\r\n var keycount = 0;\r\n for (var i in AllAMegMenInstances) {\r\n if (AllAMegMenInstances.hasOwnProperty(i)) {\r\n keycount++;\r\n }\r\n }\r\n if (keycount === 1) {\r\n if (window.amm_docMouseoverFn) {\r\n amm_eventScheduler(false, window, 'mouseover', window.amm_docMouseoverFn);\r\n window.amm_docMouseoverFn = null;\r\n }\r\n if (document.amm_docClickFn) {\r\n amm_eventScheduler(false, document, 'mouseover', document.amm_docClickFn);\r\n document.amm_docClickFn = null;\r\n }\r\n }\r\n delete AllAMegMenInstances[thisid];\r\n };\r\n /**\r\n * ██████  ██████  ██████  ███████\r\n * ██      ██    ██ ██   ██ ██\r\n * ██  ██  ██ ██████  █████\r\n * ██  ██  ██ ██   ██ ██\r\n * ██████  ██████  ██  ██ ███████\r\n *\r\n * Class for every AMegMen instance.\r\n *\r\n */\r\n var Core = /** @class */ (function () {\r\n function Core(thisid, rootElem, options) {\r\n var _this = this;\r\n this.core = {};\r\n this.destroy = function (thisid) {\r\n amm_destroy(thisid, _this.core);\r\n };\r\n this.core = amm_init(this.core, rootElem, Object.assign({}, _Defaults, options));\r\n AllAMegMenInstances[thisid] = this.core;\r\n }\r\n return Core;\r\n }());\r\n /**\r\n * ██████  ██████  ██████  ████████\r\n * ██   ██ ██    ██ ██    ██    ██\r\n * ██████  ██  ██ ██  ██  ██\r\n * ██   ██ ██  ██ ██  ██  ██\r\n * ██  ██  ██████   ██████   ██\r\n *\r\n * Exposed Singleton Class for global usage.\r\n *\r\n */\r\n var Root = /** @class */ (function () {\r\n /**\r\n * Constructor to initiate polyfills\r\n *\r\n */\r\n function Root() {\r\n var _this = this;\r\n this.instances = {};\r\n /**\r\n * Function to initialize the AMegMen plugin for provided query strings.\r\n *\r\n * @param query - The CSS selector for which the AMegMen needs to be initialized.\r\n * @param options - The optional object to customize every AMegMen instance.\r\n *\r\n */\r\n this.init = function (query, options) {\r\n var roots = _ArrayCall(document.querySelectorAll(query));\r\n var rootsLen = roots.length;\r\n var instancelen = 0;\r\n for (var i in _this.instances) {\r\n if (_this.instances.hasOwnProperty(i)) {\r\n instancelen++;\r\n }\r\n }\r\n if (rootsLen > 0) {\r\n for (var i = 0; i < rootsLen; i++) {\r\n var id = roots[i].getAttribute('id');\r\n var iselempresent = false;\r\n if (id) {\r\n for (var j = 0; j < instancelen; j++) {\r\n if (_this.instances[id]) {\r\n iselempresent = true;\r\n break;\r\n }\r\n }\r\n }\r\n if (!iselempresent) {\r\n if (id) {\r\n _this.instances[id] = new Core(id, roots[i], options);\r\n }\r\n else {\r\n var thisid = id ? id : Object.assign({}, _Defaults, options).idPrefix + '_' + new Date().getTime() + '_root_' + (i + 1);\r\n roots[i].setAttribute('id', thisid);\r\n _this.instances[thisid] = new Core(thisid, roots[i], options);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n console.error('Element(s) with the provided query do(es) not exist');\r\n }\r\n };\r\n /**\r\n * Function to destroy the AMegMen plugin for provided query strings.\r\n *\r\n * @param query - The CSS selector for which the AMegMen needs to be initialized.\r\n *\r\n */\r\n this.destroy = function (query) {\r\n var roots = _ArrayCall(document.querySelectorAll(query));\r\n var rootsLen = roots.length;\r\n if (rootsLen > 0) {\r\n for (var i = 0; i < rootsLen; i++) {\r\n var id = roots[i].getAttribute('id');\r\n if (id && _this.instances[id]) {\r\n _this.instances[id].destroy(id);\r\n delete _this.instances[id];\r\n }\r\n }\r\n }\r\n else {\r\n console.error('Element(s) with the provided query do(es) not exist');\r\n }\r\n };\r\n _EnableQSQSAScope();\r\n _EnableClosest();\r\n _EnableAssign();\r\n }\r\n /**\r\n * Function to return single instance\r\n *\r\n * @returns Single AMegMen Instance\r\n *\r\n */\r\n Root.getInstance = function () {\r\n if (!Root.instance) {\r\n Root.instance = new Root();\r\n }\r\n return Root.instance;\r\n };\r\n Root.instance = null;\r\n return Root;\r\n }());\r\n AMegMen.Root = Root;\r\n})(AMegMen || (AMegMen = {}));\r\nif (typeof exports === 'object' && typeof module !== 'undefined') {\r\n module.exports = AMegMen;\r\n}\r\n//# sourceMappingURL=amegmen.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import AMegMen from 'amegmen';\r\n\r\nvar amegmen_instance = AMegMen.Root.getInstance();\r\nvar amegmen_options = {\r\n};\r\namegmen_instance.init(\".__amegmen\", amegmen_options);","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","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 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}","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}","export var docElement = document.documentElement;","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}","// 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}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\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}","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 };","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 { 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 };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","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}","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 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 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}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\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","// 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}","// 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;","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 { 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}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\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 nonce: false\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(null, getOption('nonce')),\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 = 0; 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 slideClonedClass = 'tns-slide-cloned',\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 if (el == null) { return; }\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 addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\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 img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { 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 && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\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' && el) {\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 if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\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-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\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 var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).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, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), 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 // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\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 ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\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.3',\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","// 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 if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \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}\n","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the