{"version":3,"sources":["webpack:///./node_modules/tiny-slider/src/helpers/raf.js","webpack:///./node_modules/tiny-slider/src/helpers/caf.js","webpack:///./node_modules/tiny-slider/src/helpers/extend.js","webpack:///./node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///./node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///./node_modules/tiny-slider/src/helpers/getBody.js","webpack:///./node_modules/tiny-slider/src/helpers/docElement.js","webpack:///./node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///./node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///./node_modules/tiny-slider/src/helpers/forEach.js","webpack:///./node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///./node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///./node_modules/tiny-slider/src/helpers/addClass.js","webpack:///./node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///./node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///./node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///./node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///./node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///./node_modules/tiny-slider/src/helpers/showElement.js","webpack:///./node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///./node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///./node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///./node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///./node_modules/tiny-slider/src/helpers/events.js","webpack:///./node_modules/tiny-slider/src/tiny-slider.js","webpack:///./node_modules/tiny-slider/src/helpers/calc.js","webpack:///./node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///./node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///./node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///./node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///./node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///./node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///./node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///./node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///./node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./node_modules/tiny-slider/src/helpers/Object.keys.js","webpack:///./node_modules/tiny-slider/src/helpers/childNode.remove.js"],"names":["raf_win","window","raf","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","caf_win","caf","cancelAnimationFrame","mozCancelAnimationFrame","id","clearTimeout","extend","obj","name","copy","target","arguments","i","length","undefined","checkStorageValue","value","indexOf","JSON","parse","setLocalStorage","storage","key","access","setItem","e","getBody","doc","document","body","createElement","fake","docElement","documentElement","setFakeBody","docOverflow","style","overflow","background","appendChild","resetFakeBody","remove","offsetHeight","addCSSRule","sheet","selector","rules","index","insertRule","addRule","getCssRulesLength","cssRules","forEach","arr","callback","scope","l","call","classListSupport","hasClass","el","str","classList","contains","className","addClass","add","removeClass","replace","hasAttr","attr","hasAttribute","getAttr","getAttribute","isNodeList","item","setAttrs","els","attrs","Array","Object","prototype","toString","setAttribute","removeAttrs","attrLength","j","removeAttribute","arrayFromNodeList","nl","push","hideElement","forceHide","display","showElement","isVisible","getComputedStyle","whichProperty","props","Props","charAt","toUpperCase","substr","prefix","prop","getEndProperty","propIn","propOut","endProp","test","toLowerCase","supportsPassive","passiveOption_opts","defineProperty","get","addEventListener","passiveOption","passive","addEvents","preventScrolling","option","removeEvents","removeEventListener","Events","topics","on","eventName","fn","this","off","splice","emit","data","type","__webpack_require__","d","__webpack_exports__","tns","options","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","win","KEYS","ENTER","SPACE","LEFT","RIGHT","tnsStorage","localStorageAccess","browserInfo","navigator","userAgent","uid","Date","localStorage","getItem","removeItem","CALC","div","result","val","vals","width","offsetWidth","calc","PERCENTAGELAYOUT","supported","wrapper","outer","innerHTML","Math","abs","getBoundingClientRect","left","children","count","percentageLayout","CSSMQ","position","rule","styleSheet","cssText","createTextNode","currentStyle","mediaquerySupport","TRANSFORM","HAS3DTRANSFORMS","tf","has3d","cssTF","slice","insertBefore","getPropertyValue","has3DTransforms","TRANSITIONDURATION","TRANSITIONDELAY","ANIMATIONDURATION","ANIMATIONDELAY","TRANSITIONEND","ANIMATIONEND","supportConsoleWarn","console","warn","tnsList","optionsElements","querySelector","nodeName","carousel","responsiveTem","updateOptions","middleWrapper","breakpointZone","horizontal","outerWrapper","innerWrapper","containerParent","parentNode","containerHTML","outerHTML","slideItems","slideCount","windowWidth","getWindowWidth","isOn","setBreakpointZone","slidePositions","imgsComplete","liveregionCurrent","itemsMax","media","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","click","onControlsClick","keydown","getEvent","keyIndex","keyCode","navEvents","onTransitionEnd","getTarget","navIndex","navClicked","Number","targetIndexBase","pages","targetIndex","goTo","navCurrentIndex","animating","stopAutoplay","curElement","activeElement","setFocus","navItems","hoverEvents","mouseover","stopAutoplayTimer","autoplayHoverPaused","mouseout","setAutoplayTimer","visibilityEvent","visibilitychange","hidden","autoplayVisibilityPaused","docmentKeydownEvent","touchEvents","touchstart","onPanStart","touchmove","onPanMove","touchend","onPanEnd","touchcancel","dragEvents","mousedown","mousemove","mouseup","mouseleave","hasControls","hasNav","hasAutoplay","hasTouch","hasMouseDrag","slideActiveClass","imgCompleteClass","imgEvents","load","imgLoaded","error","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","a","b","x","y","resetVariblesWhenDisable","wp","aria-hidden","tabindex","fragmentBefore","createDocumentFragment","fragmentAfter","num","cloneFirst","cloneNode","firstChild","cloneLast","initStructure","fontSize","slide","marginLeft","getSlideMarginLeft","getTransitionDurationStyle","getInnerWrapperStyles","getContainerWidth","getSlideWidthStyle","getSlideGutterStyle","getAnimationDurationStyle","update_carousel_transition_duration","parseInt","opts","middleWrapperStr","innerWrapperStr","containerStr","slideStr","itemsBP","fixedWidthBP","speedBP","edgePaddingBP","autoHeightBP","gutterBP","initSheet","initSliderTransform","updateIndex","leftEdge","rightEdge","transformCore","element","postfix","to","duration","tick","unit","from","positionTick","resetDuration","doContainerTransform","getContainerTransformValue","moveElement","updateContentWrapperHeight","eve","animateSlide","version","getInfo","info","play","startAutoplay","pause","updateSliderHeight","updateInnerWrapperHeight","refresh","destroy","ownerNode","resize","onResize","toggleAutoplay","clearInterval","htmlList","prevEl","previousElementSibling","parentEl","nextElementSibling","firstElementChild","rebuild","condition","ind","getAbsIndex","absIndex","innerWidth","clientWidth","getInsertPosition","pos","gap","getClientWidth","rect","right","ww","edgePaddingTem","gutterTem","fixedWidthTem","speedTem","gutterTemUnit","itemsTem","dividend","getCSSPrefix","substring","imgs","querySelectorAll","src","imgsLoadedCheck","getImageArray","initSliderTransformStyleCheck","doContainerTransformSilent","initTools","initEvents","stylesApplicationCheck","toFixed","initSliderTransformCore","setSlidePositions","updateSlideStatus","insertAdjacentHTML","getLiveRegionStr","txt","data-action","aria-label","data-nav","aria-controls","navHtml","hiddenStr","updateNavVisibility","data-controls","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","autoheightTem","deleteRule","removeRule","removeCSSRule","vp","getVisibleSlideRange","start","end","rangestart","rangeend","parseFloat","point","cell","stopPropagation","srcset","navPrev","navCurrent","updateNavStatus","getMaxSlideHeight","slideStart","slideRange","heights","maxHeight","attr2","base","range","getLowerCaseNodeName","isAriaDisabled","disEnableElement","prevDisabled","nextDisabled","disablePrev","disableNext","getCenterGap","denominator","number","classOut","classIn","isOut","render","sliderMoved","strTrans","event","propertyName","indexGap","isNaN","factor","dir","passEventObject","targetIn","setInterval","updateAutoplayButton","action","focus","isTouchEvent","changedTouches","srcElement","preventDefaultBehavior","preventDefault","returnValue","getMoveDirectionExpected","angle","atan2","PI","direction","$","clientX","clientY","panUpdate","err","dist","percentageX","preventClick","indexMoved","moved","rough","displayIndex","keys","object","hasOwnProperty","Element","removeChild"],"mappings":"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","file":"vendors~content-carousel~ds-image-carousel~es-step-carousel~js-home-carousel~promotion-cards~video-t~a6258f05-727ccd5e8e3985dc358c.js","sourcesContent":["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};","import './helpers/Object.keys';\nimport './helpers/childNode.remove';\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true\n }, options || {});\n \n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'], \n optionsElements = {};\n \n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to: \n // 300: { \n // items: 2 \n // } \n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = slideCountNew; i--;) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ? \n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n \n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex : \n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : \n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ? \n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : \n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ? \n CALC + '(100% / ' + dividend + ')' : \n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes \n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(), \n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add complete class if all images are loaded/failed\n forEach(imgs, function(img) {\n var src = img.src;\n \n if (src && src.indexOf('data:image') < 0) {\n addEvents(img, imgEvents);\n img.src = '';\n img.src = src;\n addClass(img, 'loading');\n } else if (!lazyload) {\n imgLoaded(img);\n }\n });\n\n // All imgs are completed\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // Check imgs in window only for auto height\n if (!autoWidth && horizontal) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n (function stylesApplicationCheck() {\n slideItems[num - 1].getBoundingClientRect().right.toFixed(2) === slideItems[num].getBoundingClientRect().left.toFixed(2) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) { \n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n \n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav \n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n \n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object') {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n \n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n nav ?\n showElement(navContainer) :\n hideElement(navContainer);\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) { \n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-meduaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n if (autoHeight !== autoheightTem || speed !== speedTem) {\n update_carousel_transition_duration();\n }\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) + \n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ? \n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) { \n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end; \n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n getImageArray.apply(null, getVisibleSlideRange()).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, 'tns-complete');\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end) {\n var imgs = [];\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll('img'), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // directly execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check selected image classes otherwise\n imgs.forEach(function (img, index) {\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n } \n\n function additionalUpdates () {\n doLazyLoad(); \n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n \n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n \n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or \n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually \n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually \n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) { \n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event' \n * have to check event first, otherwise event.target will cause an error \n * => or 'gallery' mode: \n * + event target is slide item\n * => or 'carousel' mode: \n * + event target is container, \n * + event.property is the same with transform attribute\n */\n if (!event || \n !carousel && event.target.parentNode === container || \n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) { \n var indexTem = index;\n updateIndex();\n if (index !== indexTem) { \n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n } \n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(), \n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n \n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) { \n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) { \n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document \n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n \n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if (preventScroll) { e.preventDefault(); }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }}); \n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; } \n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.2',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}","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) {\n // Create the