{"version":3,"sources":["embla.js"],"names":["isNumber","subject","isString","isObject","Object","prototype","toString","call","isArray","Array","mathAbs","n","isRecord","mathSign","Math","valueA","valueB","diff","objectKeys","array","map","Number","roundToDecimals","decimalPoints","arrayLastIndex","max","length","object","arrayKeys","Alignment","align","viewSize","predefined","start","center","end","objectBKeys","measure","animationFrame","direction","scroll","axis","ifAnimating","stop","active","startEdge","endEdge","measureSize","rect","width","height","min","getStartEdge","getEndEdge","reachedMin","reachedAny","cross","reachedMax","removeOffset","ceil","Counter","loop","_a","constrain","loopEnd","counter","withinLimit","self","Direction","sign","apply","Limit","EventStore","listeners","add","node","type","handler","options","passive","removeEventListener","clone","filter","remove","set","Vector1D","value","vector","readNumber","get","divide","removeAll","multiply","normalize","addEventListener","subtract","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","index","eventHandler","percentOfView","dragFree","skipSnaps","crossAxis","focusNodes","nonPassiveEvent","dragStartPoint","activationEvents","interactionEvents","dragThreshold","mouse","touch","freeForceBoost","baseSpeed","baseMass","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","name","evt","button","addActivationEvents","isMoving","isFocusNode","pointerDown","forceBoost","useBaseMass","document","move","up","readPoint","emit","clearPreventClick","force","targetChanged","isEdge","baseForce","byDistance","diffScroll","deltaAbs","next","diffCross","lastCross","addInteractionEvents","pointerUp","snapForceBoost","undefined","rawForce","down","distance","byIndex","isBelowThreshold","speed","isVigorous","mass","forceFactor","cancelable","click","clickAllowed","removeAllEvents","TouchEvent","preventDefault","evtAxis","property","coord","concat","isTouchEvent","touches","lastEvent","startEvent","pointerMove","expired","useSpeed","readTime","diffDrag","diffTime","DragTracker","ScrollBody","pow","roundToTwoDecimals","factorAbs","round","velocity","acceleration","attractionDirection","attraction","oStart","oStop","iStart","magnitude","hasSettled","PercentOfView","useMass","useBaseSpeed","applyForce","pullBackThreshold","diffToTarget","friction","disabled","limit","settle","edge","diffToEdge","edgeOffsetTolerance","ScrollContain","contentSize","snapsAligned","containScroll","scrollBounds","snapsBounded","snapsContained","endSnap","arrayLast","lastIndexOf","startSnap","update","indexOf","findDuplicates","ScrollBounds","measureContained","vectors","toggleActive","loopDistance","ScrollProgress","scrollLength","ScrollTarget","scrollSnaps","targetVector","minDistance","distances","sort","a","b","shortcut","measureUnaligned","t","slideRects","targets","snap","scrollSnap","currentLocation","diffToSnap","i","d1","d2","targetSnapDistance","isLast","reachedBound","alignments","measureAligned","containedStartSnap","ScrollTo","indexCurrent","indexPrevious","findTargetSnap","ascDiffsToSnaps","distanceDiff","indexDiff","targetIndex","Translate","container","translate","containerStyle","clear","getAttribute","removeAttribute","to","SlidesInView","slideSizes","snaps","inViewThreshold","roundingSafety","findLoopPoints","cachedOffsets","cachedBounds","isStartEdge","point","threshold","slideThreshold","slideOffsets","slideThresholds","initial","slideSize","slideBounds","offset","bounds","shift","altered","indexes","check","limitedLocation","reduce","list","slideBound","startPoints","gap","slidesInGap","findSlideBounds","SlideSizes","otherIndexes","ascItems","slides","readEdgeGap","removeSlideSizes","withEdgeGap","startGap","loopPoint","slideRect","measureStartGap","endGap","style","window","getComputedStyle","parseFloat","getPropertyValue","measureEndGap","loopPoints","isFirst","rects","canLoop","slideSizesWithGaps","slidesToScroll","groupSlides","groupByNumber","findSlideThresholds","thresholdLimit","offsets","groupSizes","chunkSize","slice","Engine","containerRect","jointSafety","callback","inView","scrollAxis","inList","contentDirection","startIndex","slide","getBoundingClientRect","measureWithGaps","containSnaps","SlidesToScroll","_b","alignment","measureLimit","g","groupedSnaps","shouldLoop","shouldConstrain","slideIndexes","engine","seek","settled","dragHandler","byNumber","proceed","percent","cb","requestAnimationFrame","slidesInView","startLocation","root","eventStore","scrollLooper","scrollProgress","slideLooper","descItems","every","forEach","y","from","getListeners","e","off","on","defaultOptions","breakpoints","draggable","OptionsHandler","optionsB","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","key","areObjects","optionsA","merge","areEqual","ScrollLooper","objectAKeys","atMedia","SlideLooper","optionsAtMedia","matchMedia","media","matches","EventHandler","PluginsHandler","activePlugins","pluginsChanged","plugin","plugins","hasChanged","init","embla","assign","destroy","some","EmblaCarousel","pluginApis","resizeHandlers","optionsHandler","pluginsHandler","breakpointsB","JSON","breakpointsA","reInit","objectsAreEqual","destroyed","optionsBase","globalOptions","pluginList","matchedMediaOptions","rootSize","activate","userSlides","withOptions","userContainer","customContainer","querySelector","children","querySelectorAll","customSlides","deActivate","withPlugins","haveChanged","jump","selectedScrollSnap","canScrollNext","canScrollPrev","reActivate","previousScrollSnap","optionsChanged","scrollNext","storeElements","scrollPrev","slideNodes","slidesNotInView","userOptions","userPlugins","newOptions","newRootSize","setTimeout","module","exports","app","initPrevNextButtons","prevBtn","nextBtn","disablePrevNextButtons","prev","scrollSnapList","dataset","overflow","parentElement","showSlidesInView","status","setAttribute","disableFocusableElements","setSelectedSlide","selected","isNaN","enableFocusableElements","focusableElements","element","initDots","dotsArray","dotNode","classList","generateDots","dots","dotsFrag","createDocumentFragment","createElement","containerNode","internalEngine","selectDot","previous","showAllSlides","tagSlidesGoingOutOfView","hideSlidesNotInView","onInit","viewport","initialized","onReInit","onSelect","appendChild"],"mappings":"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","file":"../embla.min.js","sourcesContent":["/*\n Embla Carousel v7.1.0\n https://github.com/davidjerleke/embla-carousel\n*/\n\n(function () {\n 'use strict';\n\n function map(value, iStart, iStop, oStart, oStop) {\n return oStart + (oStop - oStart) * ((value - iStart) / (iStop - iStart));\n }\n function isNumber(subject) {\n return typeof subject === 'number';\n }\n function isString(subject) {\n return typeof subject === 'string';\n }\n function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n }\n function isArray(subject) {\n return Array.isArray(subject);\n }\n function isRecord(subject) {\n return isObject(subject) || isArray(subject);\n }\n function mathAbs(n) {\n return Math.abs(n);\n }\n function mathSign(n) {\n return !n ? 0 : n / mathAbs(n);\n }\n function deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n }\n function factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n var diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n }\n function roundToDecimals(decimalPoints) {\n var pow = Math.pow(10, decimalPoints);\n return function (n) {\n return Math.round(n * pow) / pow;\n };\n }\n function arrayKeys(array) {\n return objectKeys(array).map(Number);\n }\n function arrayLast(array) {\n return array[arrayLastIndex(array)];\n }\n function arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n }\n function objectKeys(object) {\n return Object.keys(object);\n }\n function objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce(function (mergedObjects, currentObject) {\n objectKeys(currentObject).forEach(function (key) {\n var valueA = mergedObjects[key];\n var valueB = currentObject[key];\n var areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n }\n function objectsAreEqual(objectA, objectB) {\n var objectAKeys = objectKeys(objectA);\n var objectBKeys = objectKeys(objectB);\n if (objectAKeys.length !== objectBKeys.length) return false;\n return objectAKeys.every(function (key) {\n var valueA = objectA[key];\n var valueB = objectB[key];\n if (typeof valueA === 'function') return ''.concat(valueA) === ''.concat(valueB);\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return objectsAreEqual(valueA, valueB);\n });\n }\n\n function Alignment(align, viewSize) {\n var predefined = {\n start: start,\n center: center,\n end: end,\n };\n function start() {\n return 0;\n }\n function center(n) {\n return end(n) / 2;\n }\n function end(n) {\n return viewSize - n;\n }\n function percent() {\n return viewSize * Number(align);\n }\n function measure(n) {\n if (isNumber(align)) return percent();\n return predefined[align](n);\n }\n var self = {\n measure: measure,\n };\n return self;\n }\n\n function Animation(callback) {\n var animationFrame = 0;\n function ifAnimating(active, cb) {\n return function () {\n if (active === !!animationFrame) cb();\n };\n }\n function start() {\n animationFrame = window.requestAnimationFrame(callback);\n }\n function stop() {\n window.cancelAnimationFrame(animationFrame);\n animationFrame = 0;\n }\n var self = {\n proceed: ifAnimating(true, start),\n start: ifAnimating(false, start),\n stop: ifAnimating(true, stop),\n };\n return self;\n }\n\n function Axis(axis, direction) {\n var scroll = axis === 'y' ? 'y' : 'x';\n var cross = axis === 'y' ? 'x' : 'y';\n var startEdge = getStartEdge();\n var endEdge = getEndEdge();\n function measureSize(rect) {\n var width = rect.width,\n height = rect.height;\n return scroll === 'x' ? width : height;\n }\n function getStartEdge() {\n if (scroll === 'y') return 'top';\n return direction === 'rtl' ? 'right' : 'left';\n }\n function getEndEdge() {\n if (scroll === 'y') return 'bottom';\n return direction === 'rtl' ? 'left' : 'right';\n }\n var self = {\n scroll: scroll,\n cross: cross,\n startEdge: startEdge,\n endEdge: endEdge,\n measureSize: measureSize,\n };\n return self;\n }\n\n function Limit(min, max) {\n var length = mathAbs(min - max);\n function reachedMin(n) {\n return n < min;\n }\n function reachedMax(n) {\n return n > max;\n }\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n var self = {\n length: length,\n max: max,\n min: min,\n constrain: constrain,\n reachedAny: reachedAny,\n reachedMax: reachedMax,\n reachedMin: reachedMin,\n removeOffset: removeOffset,\n };\n return self;\n }\n\n function Counter(max, start, loop) {\n var _a = Limit(0, max),\n min = _a.min,\n constrain = _a.constrain;\n var loopEnd = max + 1;\n var counter = withinLimit(start);\n function withinLimit(n) {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd);\n }\n function get() {\n return counter;\n }\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n function add(n) {\n return set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n var self = {\n add: add,\n clone: clone,\n get: get,\n set: set,\n min: min,\n max: max,\n };\n return self;\n }\n\n function Direction(direction) {\n var sign = direction === 'rtl' ? -1 : 1;\n function apply(n) {\n return n * sign;\n }\n var self = {\n apply: apply,\n };\n return self;\n }\n\n function EventStore() {\n var listeners = [];\n function add(node, type, handler, options) {\n if (options === void 0) {\n options = {\n passive: true,\n };\n }\n node.addEventListener(type, handler, options);\n listeners.push(function () {\n return node.removeEventListener(type, handler, options);\n });\n return self;\n }\n function removeAll() {\n listeners = listeners.filter(function (remove) {\n return remove();\n });\n return self;\n }\n var self = {\n add: add,\n removeAll: removeAll,\n };\n return self;\n }\n\n function Vector1D(value) {\n var vector = value;\n function get() {\n return vector;\n }\n function set(n) {\n vector = readNumber(n);\n return self;\n }\n function add(n) {\n vector += readNumber(n);\n return self;\n }\n function subtract(n) {\n vector -= readNumber(n);\n return self;\n }\n function multiply(n) {\n vector *= n;\n return self;\n }\n function divide(n) {\n vector /= n;\n return self;\n }\n function normalize() {\n if (vector !== 0) divide(vector);\n return self;\n }\n function readNumber(n) {\n return isNumber(n) ? n : n.get();\n }\n var self = {\n add: add,\n divide: divide,\n get: get,\n multiply: multiply,\n normalize: normalize,\n set: set,\n subtract: subtract,\n };\n return self;\n }\n\n function DragHandler(\n axis,\n direction,\n rootNode,\n target,\n dragTracker,\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n loop,\n dragFree,\n skipSnaps\n ) {\n var crossAxis = axis.cross;\n var focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n var nonPassiveEvent = {\n passive: false,\n };\n var dragStartPoint = Vector1D(0);\n var activationEvents = EventStore();\n var interactionEvents = EventStore();\n var dragThreshold = percentOfView.measure(20);\n var snapForceBoost = {\n mouse: 300,\n touch: 400,\n };\n var freeForceBoost = {\n mouse: 500,\n touch: 600,\n };\n var baseSpeed = dragFree ? 5 : 16;\n var baseMass = 1;\n var startScroll = 0;\n var startCross = 0;\n var pointerIsDown = false;\n var preventScroll = false;\n var preventClick = false;\n var isMouse = false;\n function addActivationEvents() {\n var node = rootNode;\n activationEvents\n .add(\n node,\n 'dragstart',\n function (evt) {\n return evt.preventDefault();\n },\n nonPassiveEvent\n )\n .add(\n node,\n 'touchmove',\n function () {\n return undefined;\n },\n nonPassiveEvent\n )\n .add(node, 'touchend', function () {\n return undefined;\n })\n .add(node, 'touchstart', down)\n .add(node, 'mousedown', down)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true);\n }\n function addInteractionEvents() {\n var node = isMouse ? document : rootNode;\n interactionEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up);\n }\n function removeAllEvents() {\n activationEvents.removeAll();\n interactionEvents.removeAll();\n }\n function isFocusNode(node) {\n var name = node.nodeName || '';\n return focusNodes.indexOf(name) > -1;\n }\n function forceBoost() {\n var boost = dragFree ? freeForceBoost : snapForceBoost;\n var type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n var next = index.clone().add(mathSign(force) * -1);\n var isEdge = next.get() === index.min || next.get() === index.max;\n var baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < dragThreshold) return baseForce;\n if (!loop && isEdge) return baseForce * 0.4;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n isMouse = !dragTracker.isTouchEvent(evt);\n if (isMouse && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n var isMoving = deltaAbs(target.get(), location.get()) >= 2;\n var clearPreventClick = isMouse || !isMoving;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n dragStartPoint.set(target);\n target.set(location);\n scrollBody.useBaseMass().useSpeed(80);\n addInteractionEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n if (clearPreventClick) preventClick = false;\n }\n function move(evt) {\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n var lastScroll = dragTracker.readPoint(evt);\n var lastCross = dragTracker.readPoint(evt, crossAxis);\n var diffScroll = deltaAbs(lastScroll, startScroll);\n var diffCross = deltaAbs(lastCross, startCross);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll && !preventClick) return up(evt);\n }\n var diff = dragTracker.pointerMove(evt);\n if (!preventClick && diff) preventClick = true;\n animation.start();\n target.add(direction.apply(diff));\n evt.preventDefault();\n }\n function up(evt) {\n var currentLocation = scrollTarget.byDistance(0, false);\n var targetChanged = currentLocation.index !== index.get();\n var rawForce = dragTracker.pointerUp(evt) * forceBoost();\n var force = allowedForce(direction.apply(rawForce), targetChanged);\n var forceFactor = factorAbs(rawForce, force);\n var isMoving = deltaAbs(target.get(), dragStartPoint.get()) >= 0.5;\n var isVigorous = targetChanged && forceFactor > 0.75;\n var isBelowThreshold = mathAbs(rawForce) < dragThreshold;\n var speed = isVigorous ? 10 : baseSpeed;\n var mass = isVigorous ? baseMass + 2.5 * forceFactor : baseMass;\n if (isMoving && !isMouse) preventClick = true;\n preventScroll = false;\n pointerIsDown = false;\n interactionEvents.removeAll();\n scrollBody.useSpeed(isBelowThreshold ? 9 : speed).useMass(mass);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n eventHandler.emit('pointerUp');\n }\n function click(evt) {\n if (preventClick) {\n evt.stopPropagation();\n evt.preventDefault();\n }\n }\n // DEPRECATED - Remove in v8 because handled automatically\n function clickAllowed() {\n return !preventClick;\n }\n function pointerDown() {\n return pointerIsDown;\n }\n var self = {\n addActivationEvents: addActivationEvents,\n clickAllowed: clickAllowed,\n pointerDown: pointerDown,\n removeAllEvents: removeAllEvents,\n };\n return self;\n }\n\n function DragTracker(axis) {\n var logInterval = 170;\n var startEvent;\n var lastEvent;\n function isTouchEvent(evt) {\n return typeof TouchEvent !== 'undefined' && evt instanceof TouchEvent;\n }\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n var property = evtAxis || axis.scroll;\n var coord = 'client'.concat(property === 'x' ? 'X' : 'Y');\n return (isTouchEvent(evt) ? evt.touches[0] : evt)[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n var diff = readPoint(evt) - readPoint(lastEvent);\n var expired = readTime(evt) - readTime(startEvent) > logInterval;\n lastEvent = evt;\n if (expired) startEvent = evt;\n return diff;\n }\n function pointerUp(evt) {\n if (!startEvent || !lastEvent) return 0;\n var diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n var diffTime = readTime(evt) - readTime(startEvent);\n var expired = readTime(evt) - readTime(lastEvent) > logInterval;\n var force = diffDrag / diffTime;\n var isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n var self = {\n isTouchEvent: isTouchEvent,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n readPoint: readPoint,\n };\n return self;\n }\n\n function PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n var self = {\n measure: measure,\n };\n return self;\n }\n\n function ScrollBody(location, baseSpeed, baseMass) {\n var roundToTwoDecimals = roundToDecimals(2);\n var velocity = Vector1D(0);\n var acceleration = Vector1D(0);\n var attraction = Vector1D(0);\n var attractionDirection = 0;\n var speed = baseSpeed;\n var mass = baseMass;\n function update() {\n velocity.add(acceleration);\n location.add(velocity);\n acceleration.multiply(0);\n }\n function applyForce(force) {\n force.divide(mass);\n acceleration.add(force);\n }\n function seek(target) {\n attraction.set(target).subtract(location);\n var magnitude = map(attraction.get(), 0, 100, 0, speed);\n attractionDirection = mathSign(attraction.get());\n attraction.normalize().multiply(magnitude).subtract(velocity);\n applyForce(attraction);\n return self;\n }\n function settle(target) {\n var diff = target.get() - location.get();\n var hasSettled = !roundToTwoDecimals(diff);\n if (hasSettled) location.set(target);\n return hasSettled;\n }\n function direction() {\n return attractionDirection;\n }\n function useBaseSpeed() {\n return useSpeed(baseSpeed);\n }\n function useBaseMass() {\n return useMass(baseMass);\n }\n function useSpeed(n) {\n speed = n;\n return self;\n }\n function useMass(n) {\n mass = n;\n return self;\n }\n var self = {\n direction: direction,\n seek: seek,\n settle: settle,\n update: update,\n useBaseMass: useBaseMass,\n useBaseSpeed: useBaseSpeed,\n useMass: useMass,\n useSpeed: useSpeed,\n };\n return self;\n }\n\n function ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n var pullBackThreshold = percentOfView.measure(10);\n var edgeOffsetTolerance = percentOfView.measure(50);\n var maxFriction = 0.85;\n var disabled = false;\n function shouldConstrain() {\n if (disabled) return false;\n if (!limit.reachedAny(target.get())) return false;\n if (!limit.reachedAny(location.get())) return false;\n return true;\n }\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n var edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n var diffToEdge = mathAbs(limit[edge] - location.get());\n var diffToTarget = target.get() - location.get();\n var friction = Math.min(diffToEdge / edgeOffsetTolerance, maxFriction);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useSpeed(10).useMass(3);\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n var self = {\n constrain: constrain,\n toggleActive: toggleActive,\n };\n return self;\n }\n\n function ScrollContain(viewSize, contentSize, snapsAligned, containScroll) {\n var scrollBounds = Limit(-contentSize + viewSize, snapsAligned[0]);\n var snapsBounded = snapsAligned.map(scrollBounds.constrain);\n var snapsContained = measureContained();\n function findDuplicates() {\n var startSnap = snapsBounded[0];\n var endSnap = arrayLast(snapsBounded);\n var min = snapsBounded.lastIndexOf(startSnap);\n var max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureContained() {\n if (contentSize <= viewSize) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n var _a = findDuplicates(),\n min = _a.min,\n max = _a.max;\n return snapsBounded.slice(min, max);\n }\n var self = {\n snapsContained: snapsContained,\n };\n return self;\n }\n\n function ScrollLimit(contentSize, scrollSnaps, loop) {\n var limit = measureLimit();\n function measureLimit() {\n var startSnap = scrollSnaps[0];\n var endSnap = arrayLast(scrollSnaps);\n var min = loop ? startSnap - contentSize : endSnap;\n var max = startSnap;\n return Limit(min, max);\n }\n var self = {\n limit: limit,\n };\n return self;\n }\n\n function ScrollLooper(contentSize, limit, location, vectors) {\n var jointSafety = 0.1;\n var min = limit.min + jointSafety;\n var max = limit.max + jointSafety;\n var _a = Limit(min, max),\n reachedMin = _a.reachedMin,\n reachedMax = _a.reachedMax;\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n function loop(direction) {\n if (!shouldLoop(direction)) return;\n var loopDistance = contentSize * (direction * -1);\n vectors.forEach(function (v) {\n return v.add(loopDistance);\n });\n }\n var self = {\n loop: loop,\n };\n return self;\n }\n\n function ScrollProgress(limit) {\n var max = limit.max,\n scrollLength = limit.length;\n function get(n) {\n var currentLocation = n - max;\n return currentLocation / -scrollLength;\n }\n var self = {\n get: get,\n };\n return self;\n }\n\n function ScrollSnaps(axis, alignment, containerRect, slideRects, slideSizesWithGaps, slidesToScroll, containScroll) {\n var startEdge = axis.startEdge,\n endEdge = axis.endEdge;\n var groupSlides = slidesToScroll.groupSlides;\n var alignments = measureSizes().map(alignment.measure);\n var snaps = measureUnaligned();\n var snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects)\n .map(function (rects) {\n return arrayLast(rects)[endEdge] - rects[0][startEdge];\n })\n .map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects\n .map(function (rect) {\n return containerRect[startEdge] - rect[startEdge];\n })\n .map(function (snap) {\n return -mathAbs(snap);\n });\n }\n function measureAligned() {\n var containedStartSnap = 0;\n var containedEndSnap = arrayLast(snaps) - arrayLast(slideSizesWithGaps);\n return groupSlides(snaps)\n .map(function (g) {\n return g[0];\n })\n .map(function (snap, index, groupedSnaps) {\n var isFirst = !index;\n var isLast = index === arrayLastIndex(groupedSnaps);\n if (containScroll && isFirst) return containedStartSnap;\n if (containScroll && isLast) return containedEndSnap;\n return snap + alignments[index];\n });\n }\n var self = {\n snaps: snaps,\n snapsAligned: snapsAligned,\n };\n return self;\n }\n\n function ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n var reachedAny = limit.reachedAny,\n removeOffset = limit.removeOffset,\n constrain = limit.constrain;\n function minDistance(distances) {\n return distances.concat().sort(function (a, b) {\n return mathAbs(a) - mathAbs(b);\n })[0];\n }\n function findTargetSnap(target) {\n var distance = loop ? removeOffset(target) : constrain(target);\n var ascDiffsToSnaps = scrollSnaps\n .map(function (scrollSnap) {\n return scrollSnap - distance;\n })\n .map(function (diffToSnap) {\n return shortcut(diffToSnap, 0);\n })\n .map(function (diff, i) {\n return {\n diff: diff,\n index: i,\n };\n })\n .sort(function (d1, d2) {\n return mathAbs(d1.diff) - mathAbs(d2.diff);\n });\n var index = ascDiffsToSnaps[0].index;\n return {\n index: index,\n distance: distance,\n };\n }\n function shortcut(target, direction) {\n var targets = [target, target + contentSize, target - contentSize];\n if (!loop) return targets[0];\n if (!direction) return minDistance(targets);\n var matchingTargets = targets.filter(function (t) {\n return mathSign(t) === direction;\n });\n return minDistance(matchingTargets);\n }\n function byIndex(index, direction) {\n var diffToSnap = scrollSnaps[index] - targetVector.get();\n var distance = shortcut(diffToSnap, direction);\n return {\n index: index,\n distance: distance,\n };\n }\n function byDistance(distance, snap) {\n var target = targetVector.get() + distance;\n var _a = findTargetSnap(target),\n index = _a.index,\n targetSnapDistance = _a.distance;\n var reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound)\n return {\n index: index,\n distance: distance,\n };\n var diffToSnap = scrollSnaps[index] - targetSnapDistance;\n var snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index: index,\n distance: snapDistance,\n };\n }\n var self = {\n byDistance: byDistance,\n byIndex: byIndex,\n shortcut: shortcut,\n };\n return self;\n }\n\n function ScrollTo(animation, indexCurrent, indexPrevious, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n var distanceDiff = target.distance;\n var indexDiff = target.index !== indexCurrent.get();\n if (distanceDiff) {\n animation.start();\n targetVector.add(distanceDiff);\n }\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n eventHandler.emit('select');\n }\n }\n function distance(n, snap) {\n var target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n var targetIndex = indexCurrent.clone().set(n);\n var target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n var self = {\n distance: distance,\n index: index,\n };\n return self;\n }\n\n function Translate(axis, direction, container) {\n var translate = axis.scroll === 'x' ? x : y;\n var containerStyle = container.style;\n var disabled = false;\n function x(n) {\n return 'translate3d('.concat(n, 'px,0px,0px)');\n }\n function y(n) {\n return 'translate3d(0px,'.concat(n, 'px,0px)');\n }\n function to(target) {\n if (disabled) return;\n containerStyle.transform = translate(direction.apply(target.get()));\n }\n function toggleActive(active) {\n disabled = !active;\n }\n function clear() {\n if (disabled) return;\n containerStyle.transform = '';\n if (!container.getAttribute('style')) container.removeAttribute('style');\n }\n var self = {\n clear: clear,\n to: to,\n toggleActive: toggleActive,\n };\n return self;\n }\n\n function SlideLooper(\n axis,\n direction,\n viewSize,\n contentSize,\n slideSizesWithGaps,\n scrollSnaps,\n slidesInView,\n scroll,\n slides\n ) {\n var ascItems = arrayKeys(slideSizesWithGaps);\n var descItems = arrayKeys(slideSizesWithGaps).reverse();\n var loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce(function (a, i) {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce(function (a, i) {\n var remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findLoopPoints(indexes, edge) {\n var isStartEdge = edge === 'start';\n var offset = isStartEdge ? -contentSize : contentSize;\n var slideBounds = slidesInView.findSlideBounds([offset]);\n return indexes.map(function (index) {\n var initial = isStartEdge ? 0 : -contentSize;\n var altered = isStartEdge ? contentSize : 0;\n var bounds = slideBounds.filter(function (b) {\n return b.index === index;\n })[0];\n var point = bounds[isStartEdge ? 'end' : 'start'];\n var shift = Vector1D(-1);\n var location = Vector1D(-1);\n var translate = Translate(axis, direction, slides[index]);\n var target = function () {\n return shift.set(scroll.get() > point ? initial : altered);\n };\n return {\n index: index,\n location: location,\n translate: translate,\n target: target,\n };\n });\n }\n function startPoints() {\n var gap = scrollSnaps[0] - 1;\n var indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, 'end');\n }\n function endPoints() {\n var gap = viewSize - scrollSnaps[0] - 1;\n var indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, 'start');\n }\n function canLoop() {\n return loopPoints.every(function (_a) {\n var index = _a.index;\n var otherIndexes = ascItems.filter(function (i) {\n return i !== index;\n });\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(function (loopPoint) {\n var target = loopPoint.target,\n translate = loopPoint.translate,\n location = loopPoint.location;\n var shift = target();\n if (shift.get() === location.get()) return;\n if (shift.get() === 0) translate.clear();\n else translate.to(shift);\n location.set(shift);\n });\n }\n function clear() {\n loopPoints.forEach(function (loopPoint) {\n return loopPoint.translate.clear();\n });\n }\n var self = {\n canLoop: canLoop,\n clear: clear,\n loop: loop,\n loopPoints: loopPoints,\n };\n return self;\n }\n\n function SlidesInView(viewSize, contentSize, slideSizes, snaps, limit, loop, inViewThreshold) {\n var removeOffset = limit.removeOffset,\n constrain = limit.constrain;\n var roundingSafety = 0.5;\n var cachedOffsets = loop ? [0, contentSize, -contentSize] : [0];\n var cachedBounds = findSlideBounds(cachedOffsets, inViewThreshold);\n function findSlideThresholds(threshold) {\n var slideThreshold = threshold || 0;\n return slideSizes.map(function (slideSize) {\n var thresholdLimit = Limit(roundingSafety, slideSize - roundingSafety);\n return thresholdLimit.constrain(slideSize * slideThreshold);\n });\n }\n function findSlideBounds(offsets, threshold) {\n var slideOffsets = offsets || cachedOffsets;\n var slideThresholds = findSlideThresholds(threshold);\n return slideOffsets.reduce(function (list, offset) {\n var bounds = snaps.map(function (snap, index) {\n return {\n start: snap - slideSizes[index] + slideThresholds[index] + offset,\n end: snap + viewSize - slideThresholds[index] + offset,\n index: index,\n };\n });\n return list.concat(bounds);\n }, []);\n }\n function check(location, bounds) {\n var limitedLocation = loop ? removeOffset(location) : constrain(location);\n var slideBounds = bounds || cachedBounds;\n return slideBounds.reduce(function (list, slideBound) {\n var index = slideBound.index,\n start = slideBound.start,\n end = slideBound.end;\n var inList = list.indexOf(index) !== -1;\n var inView = start < limitedLocation && end > limitedLocation;\n return !inList && inView ? list.concat([index]) : list;\n }, []);\n }\n var self = {\n check: check,\n findSlideBounds: findSlideBounds,\n };\n return self;\n }\n\n function SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap) {\n var measureSize = axis.measureSize,\n startEdge = axis.startEdge,\n endEdge = axis.endEdge;\n var withEdgeGap = slideRects[0] && readEdgeGap;\n var startGap = measureStartGap();\n var endGap = measureEndGap();\n var slideSizes = slideRects.map(measureSize);\n var slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n var slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n var style = window.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue('margin-'.concat(endEdge)));\n }\n function measureWithGaps() {\n return slideRects\n .map(function (rect, index, rects) {\n var isFirst = !index;\n var isLast = index === arrayLastIndex(rects);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n })\n .map(mathAbs);\n }\n var self = {\n slideSizes: slideSizes,\n slideSizesWithGaps: slideSizesWithGaps,\n };\n return self;\n }\n\n function SlidesToScroll(viewSize, slideSizesWithGaps, slidesToScroll) {\n var groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array)\n .filter(function (i) {\n return i % groupSize === 0;\n })\n .map(function (i) {\n return array.slice(i, i + groupSize);\n });\n }\n function bySize(array) {\n return arrayKeys(array)\n .reduce(function (groupSizes, i) {\n var chunk = slideSizesWithGaps.slice(arrayLast(groupSizes), i + 1);\n var chunkSize = chunk.reduce(function (a, s) {\n return a + s;\n }, 0);\n return !i || chunkSize > viewSize ? groupSizes.concat(i) : groupSizes;\n }, [])\n .map(function (start, i, groupSizes) {\n return array.slice(start, groupSizes[i + 1]);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n var self = {\n groupSlides: groupSlides,\n };\n return self;\n }\n\n function Engine(root, container, slides, options, eventHandler) {\n // Options\n var align = options.align,\n scrollAxis = options.axis,\n contentDirection = options.direction,\n startIndex = options.startIndex,\n inViewThreshold = options.inViewThreshold,\n loop = options.loop,\n speed = options.speed,\n dragFree = options.dragFree,\n groupSlides = options.slidesToScroll,\n skipSnaps = options.skipSnaps,\n containScroll = options.containScroll;\n // Measurements\n var containerRect = container.getBoundingClientRect();\n var slideRects = slides.map(function (slide) {\n return slide.getBoundingClientRect();\n });\n var direction = Direction(contentDirection);\n var axis = Axis(scrollAxis, contentDirection);\n var viewSize = axis.measureSize(containerRect);\n var percentOfView = PercentOfView(viewSize);\n var alignment = Alignment(align, viewSize);\n var containSnaps = !loop && containScroll !== '';\n var readEdgeGap = loop || containScroll !== '';\n var _a = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap),\n slideSizes = _a.slideSizes,\n slideSizesWithGaps = _a.slideSizesWithGaps;\n var slidesToScroll = SlidesToScroll(viewSize, slideSizesWithGaps, groupSlides);\n var _b = ScrollSnaps(axis, alignment, containerRect, slideRects, slideSizesWithGaps, slidesToScroll, containSnaps),\n snaps = _b.snaps,\n snapsAligned = _b.snapsAligned;\n var contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n var snapsContained = ScrollContain(viewSize, contentSize, snapsAligned, containScroll).snapsContained;\n var scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n var limit = ScrollLimit(contentSize, scrollSnaps, loop).limit;\n // Indexes\n var index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n var indexPrevious = index.clone();\n var slideIndexes = arrayKeys(slides);\n // Draw\n var update = function () {\n if (!loop) engine.scrollBounds.constrain(engine.dragHandler.pointerDown());\n engine.scrollBody.seek(target).update();\n var settled = engine.scrollBody.settle(target);\n if (settled && !engine.dragHandler.pointerDown()) {\n engine.animation.stop();\n eventHandler.emit('settle');\n }\n if (!settled) {\n eventHandler.emit('scroll');\n }\n if (loop) {\n engine.scrollLooper.loop(engine.scrollBody.direction());\n engine.slideLooper.loop();\n }\n engine.translate.to(location);\n engine.animation.proceed();\n };\n // Shared\n var animation = Animation(update);\n var startLocation = scrollSnaps[index.get()];\n var location = Vector1D(startLocation);\n var target = Vector1D(startLocation);\n var scrollBody = ScrollBody(location, speed, 1);\n var scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n var scrollTo = ScrollTo(animation, index, indexPrevious, scrollTarget, target, eventHandler);\n var slidesInView = SlidesInView(viewSize, contentSize, slideSizes, snaps, limit, loop, inViewThreshold);\n // DragHandler\n var dragHandler = DragHandler(\n axis,\n direction,\n root,\n target,\n DragTracker(axis),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n loop,\n dragFree,\n skipSnaps\n );\n // Engine\n var engine = {\n containerRect: containerRect,\n slideRects: slideRects,\n animation: animation,\n axis: axis,\n direction: direction,\n dragHandler: dragHandler,\n eventStore: EventStore(),\n percentOfView: percentOfView,\n index: index,\n indexPrevious: indexPrevious,\n limit: limit,\n location: location,\n options: options,\n scrollBody: scrollBody,\n scrollBounds: ScrollBounds(limit, location, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, location, [location, target]),\n scrollProgress: ScrollProgress(limit),\n scrollSnaps: scrollSnaps,\n scrollTarget: scrollTarget,\n scrollTo: scrollTo,\n slideLooper: SlideLooper(\n axis,\n direction,\n viewSize,\n contentSize,\n slideSizesWithGaps,\n scrollSnaps,\n slidesInView,\n location,\n slides\n ),\n slidesToScroll: slidesToScroll,\n slidesInView: slidesInView,\n slideIndexes: slideIndexes,\n target: target,\n translate: Translate(axis, direction, container),\n };\n return engine;\n }\n\n function EventHandler() {\n var listeners = {};\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(function (e) {\n return e(evt);\n });\n return self;\n }\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(function (e) {\n return e !== cb;\n });\n return self;\n }\n var self = {\n emit: emit,\n off: off,\n on: on,\n };\n return self;\n }\n\n var defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: '',\n direction: 'ltr',\n slidesToScroll: 1,\n breakpoints: {},\n dragFree: false,\n draggable: true,\n inViewThreshold: 0,\n loop: false,\n skipSnaps: false,\n speed: 10,\n startIndex: 0,\n active: true,\n };\n\n function OptionsHandler() {\n function merge(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function areEqual(optionsA, optionsB) {\n var breakpointsA = JSON.stringify(objectKeys(optionsA.breakpoints || {}));\n var breakpointsB = JSON.stringify(objectKeys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return objectsAreEqual(optionsA, optionsB);\n }\n function atMedia(options) {\n var optionsAtMedia = options.breakpoints || {};\n var matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter(function (media) {\n return window.matchMedia(media).matches;\n })\n .map(function (media) {\n return optionsAtMedia[media];\n })\n .reduce(function (a, mediaOption) {\n return merge(a, mediaOption);\n }, {});\n return merge(options, matchedMediaOptions);\n }\n var self = {\n merge: merge,\n areEqual: areEqual,\n atMedia: atMedia,\n };\n return self;\n }\n\n function PluginsHandler() {\n var _a = OptionsHandler(),\n atMedia = _a.atMedia,\n areEqual = _a.areEqual;\n var activePlugins = [];\n var pluginsChanged = [];\n function haveChanged() {\n return pluginsChanged.some(function (hasChanged) {\n return hasChanged();\n });\n }\n function hasChanged(plugin) {\n var options = atMedia(plugin.options);\n return function () {\n return !areEqual(options, atMedia(plugin.options));\n };\n }\n function init(plugins, embla) {\n pluginsChanged = plugins.map(hasChanged);\n activePlugins = plugins.filter(function (plugin) {\n return atMedia(plugin.options).active;\n });\n activePlugins.forEach(function (plugin) {\n return plugin.init(embla);\n });\n return plugins.reduce(function (map, plugin) {\n var _a;\n return Object.assign(map, ((_a = {}), (_a[plugin.name] = plugin), _a));\n }, {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(function (plugin) {\n return plugin.destroy();\n });\n }\n var self = {\n init: init,\n destroy: destroy,\n haveChanged: haveChanged,\n };\n return self;\n }\n\n function EmblaCarousel(root, userOptions, userPlugins) {\n var resizeHandlers = EventStore();\n var optionsHandler = OptionsHandler();\n var pluginsHandler = PluginsHandler();\n var eventHandler = EventHandler();\n var on = eventHandler.on,\n off = eventHandler.off;\n var reInit = reActivate;\n var destroyed = false;\n var engine;\n var optionsBase = optionsHandler.merge(defaultOptions, EmblaCarousel.globalOptions);\n var options = optionsHandler.merge(optionsBase);\n var pluginList = [];\n var pluginApis;\n var rootSize = 0;\n var container;\n var slides;\n function storeElements() {\n var userContainer = options.container,\n userSlides = options.slides;\n var customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n var customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = optionsHandler.merge(optionsBase, withOptions);\n options = optionsHandler.atMedia(optionsBase);\n storeElements();\n engine = Engine(root, container, slides, options, eventHandler);\n rootSize = engine.axis.measureSize(root.getBoundingClientRect());\n if (!options.active) return deActivate();\n engine.translate.to(engine.location);\n pluginList = withPlugins || pluginList;\n pluginApis = pluginsHandler.init(pluginList, self);\n if (options.loop) {\n if (!engine.slideLooper.canLoop()) {\n deActivate();\n activate(\n {\n loop: false,\n },\n withPlugins\n );\n optionsBase = optionsHandler.merge(optionsBase, {\n loop: true,\n });\n return;\n }\n engine.slideLooper.loop();\n }\n if (options.draggable && container.offsetParent && slides.length) {\n engine.dragHandler.addActivationEvents();\n }\n }\n function reActivate(withOptions, withPlugins) {\n var startIndex = selectedScrollSnap();\n deActivate();\n activate(\n optionsHandler.merge(\n {\n startIndex: startIndex,\n },\n withOptions\n ),\n withPlugins\n );\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.removeAllEvents();\n engine.animation.stop();\n engine.eventStore.removeAll();\n engine.translate.clear();\n engine.slideLooper.clear();\n pluginsHandler.destroy();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n resizeHandlers.removeAll();\n deActivate();\n eventHandler.emit('destroy');\n }\n function resize() {\n var newOptions = optionsHandler.atMedia(optionsBase);\n var optionsChanged = !optionsHandler.areEqual(newOptions, options);\n var newRootSize = engine.axis.measureSize(root.getBoundingClientRect());\n var rootSizeChanged = rootSize !== newRootSize;\n var pluginsChanged = pluginsHandler.haveChanged();\n if (rootSizeChanged || optionsChanged || pluginsChanged) reActivate();\n eventHandler.emit('resize');\n }\n function slidesInView(target) {\n var location = engine[target ? 'target' : 'location'].get();\n var type = options.loop ? 'removeOffset' : 'constrain';\n return engine.slidesInView.check(engine.limit[type](location));\n }\n function slidesNotInView(target) {\n var inView = slidesInView(target);\n return engine.slideIndexes.filter(function (index) {\n return inView.indexOf(index) === -1;\n });\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseMass().useSpeed(jump ? 100 : options.speed);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n var next = engine.index.clone().add(1);\n scrollTo(next.get(), jump === true, -1);\n }\n function scrollPrev(jump) {\n var prev = engine.index.clone().add(-1);\n scrollTo(prev.get(), jump === true, 1);\n }\n function canScrollNext() {\n var next = engine.index.clone().add(1);\n return next.get() !== selectedScrollSnap();\n }\n function canScrollPrev() {\n var prev = engine.index.clone().add(-1);\n return prev.get() !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnaps.map(engine.scrollProgress.get);\n }\n function scrollProgress() {\n return engine.scrollProgress.get(engine.location.get());\n }\n function selectedScrollSnap() {\n return engine.index.get();\n }\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n function clickAllowed() {\n return engine.dragHandler.clickAllowed();\n }\n function plugins() {\n return pluginApis;\n }\n function internalEngine() {\n return engine;\n }\n function rootNode() {\n return root;\n }\n function containerNode() {\n return container;\n }\n function slideNodes() {\n return slides;\n }\n var self = {\n canScrollNext: canScrollNext,\n canScrollPrev: canScrollPrev,\n clickAllowed: clickAllowed,\n containerNode: containerNode,\n internalEngine: internalEngine,\n destroy: destroy,\n off: off,\n on: on,\n plugins: plugins,\n previousScrollSnap: previousScrollSnap,\n reInit: reInit,\n rootNode: rootNode,\n scrollNext: scrollNext,\n scrollPrev: scrollPrev,\n scrollProgress: scrollProgress,\n scrollSnapList: scrollSnapList,\n scrollTo: scrollTo,\n selectedScrollSnap: selectedScrollSnap,\n slideNodes: slideNodes,\n slidesInView: slidesInView,\n slidesNotInView: slidesNotInView,\n };\n activate(userOptions, userPlugins);\n resizeHandlers.add(window, 'resize', resize);\n setTimeout(function () {\n return eventHandler.emit('init');\n }, 0);\n return self;\n }\n\n EmblaCarousel.globalOptions = undefined;\n EmblaCarousel.optionsHandler = OptionsHandler;\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = EmblaCarousel;\n } else {\n window.EmblaCarousel = EmblaCarousel;\n }\n})();\n\n/* ========================================================================\n Helpers\n ========================================================================== */\n\napp.embla = (function () {\n 'use strict';\n\n function initPrevNextButtons(prevBtn, nextBtn, embla) {\n if (prevBtn) prevBtn.addEventListener('click', embla.scrollPrev, false);\n if (nextBtn) nextBtn.addEventListener('click', embla.scrollNext, false);\n }\n\n function disablePrevNextButtons(prevBtn, nextBtn, embla) {\n if (prevBtn) {\n if (embla.canScrollPrev()) {\n prevBtn.removeAttribute('disabled');\n } else {\n prevBtn.setAttribute('disabled', 'disabled');\n }\n }\n\n if (nextBtn) {\n if (embla.canScrollNext()) {\n nextBtn.removeAttribute('disabled');\n } else {\n nextBtn.setAttribute('disabled', 'disabled');\n }\n }\n\n if (embla.canScrollPrev() || embla.canScrollNext()) {\n embla.rootNode().parentElement.dataset.overflow = true;\n } else {\n embla.rootNode().parentElement.dataset.overflow = false;\n }\n }\n\n function initDots(dotsArray, embla) {\n dotsArray.forEach((dotNode, i) => {\n dotNode.classList.add('embla__dot');\n dotNode.classList.add('is-reset-button');\n dotNode.addEventListener(\n 'click',\n () => {\n embla.scrollTo(i);\n },\n false\n );\n });\n }\n\n function generateDots(dots, embla) {\n const scrollSnaps = embla.scrollSnapList();\n const dotsFrag = document.createDocumentFragment();\n const dotsArray = scrollSnaps.map(() => {\n return document.createElement('button');\n });\n\n dotsArray.forEach((dotNode) => {\n dotsFrag.appendChild(dotNode);\n });\n\n dots.appendChild(dotsFrag);\n return dotsArray;\n }\n\n function selectDot(dotsArray, embla) {\n const previous = embla.previousScrollSnap();\n const selected = embla.selectedScrollSnap();\n\n dotsArray[previous].dataset.selected = false;\n dotsArray[selected].dataset.selected = true;\n }\n\n function showAllSlides(embla) {\n embla.slideNodes().forEach((slide) => {\n showSlide(slide);\n });\n }\n\n function showSlidesInView(embla) {\n embla.slidesInView(true).forEach((index) => {\n showSlide(embla.slideNodes()[index]);\n });\n }\n\n function tagSlidesGoingOutOfView(embla) {\n embla.slidesNotInView(true).forEach((index) => {\n embla.slideNodes()[index].dataset.status = 'hiding';\n disableFocusableElements(embla.slideNodes()[index]);\n });\n }\n\n function hideSlidesNotInView(embla) {\n embla.slidesNotInView(true).forEach((index) => {\n hideSlide(embla.slideNodes()[index]);\n });\n }\n\n function setSelectedSlide(embla) {\n embla.slideNodes().forEach((slide) => {\n slide.dataset.selected = false;\n });\n\n if (isNaN(embla.selectedScrollSnap()) === false)\n embla.slideNodes()[embla.selectedScrollSnap()].dataset.selected = true;\n }\n\n function hideSlide(slide) {\n slide.dataset.status = 'hidden';\n slide.setAttribute('aria-hidden', true);\n disableFocusableElements(slide);\n }\n\n function showSlide(slide) {\n slide.dataset.status = 'visible';\n slide.setAttribute('aria-hidden', false);\n enableFocusableElements(slide);\n }\n\n function disableFocusableElements(slide) {\n const focusableElements = slide.querySelectorAll('a[href], button, textarea, input, select');\n\n focusableElements.forEach((element) => {\n element.setAttribute('tabindex', '-1');\n });\n }\n\n function enableFocusableElements(slide) {\n const focusableElements = slide.querySelectorAll('[tabindex=\"-1\"]');\n\n focusableElements.forEach((element) => {\n element.removeAttribute('tabindex');\n });\n }\n\n function onInit(prevBtn, nextBtn, viewport, embla) {\n initPrevNextButtons(prevBtn, nextBtn, embla);\n disablePrevNextButtons(prevBtn, nextBtn, embla);\n showSlidesInView(embla);\n hideSlidesNotInView(embla);\n setSelectedSlide(embla);\n\n viewport.parentElement.dataset.initialized = true;\n }\n\n function onReInit(prevBtn, nextBtn, embla) {\n disablePrevNextButtons(prevBtn, nextBtn, embla);\n showSlidesInView(embla);\n hideSlidesNotInView(embla);\n }\n\n function onSelect(prevBtn, nextBtn, embla) {\n disablePrevNextButtons(prevBtn, nextBtn, embla);\n showSlidesInView(embla);\n tagSlidesGoingOutOfView(embla);\n setSelectedSlide(embla);\n }\n\n function onSettle(embla) {\n hideSlidesNotInView(embla);\n }\n\n // Expose public functions and variables\n return {\n initPrevNextButtons: initPrevNextButtons,\n disablePrevNextButtons: disablePrevNextButtons,\n initDots: initDots,\n generateDots: generateDots,\n selectDot: selectDot,\n showAllSlides: showAllSlides,\n showSlidesInView: showSlidesInView,\n setSelectedSlide: setSelectedSlide,\n tagSlidesGoingOutOfView: tagSlidesGoingOutOfView,\n hideSlidesNotInView: hideSlidesNotInView,\n onInit: onInit,\n onReInit: onReInit,\n onSelect: onSelect,\n onSettle: onSettle,\n };\n})();\n"]}