{"version":3,"file":"embla-carousel.esm-DK17ptv-.js","sources":["../../../../Client/node_modules/embla-carousel/esm/embla-carousel.esm.js"],"sourcesContent":["function isNumber(subject) {\n return typeof subject === 'number';\n}\nfunction isString(subject) {\n return typeof subject === 'string';\n}\nfunction isBoolean(subject) {\n return typeof subject === 'boolean';\n}\nfunction isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction mathAbs(n) {\n return Math.abs(n);\n}\nfunction mathSign(n) {\n return Math.sign(n);\n}\nfunction deltaAbs(valueB, valueA) {\n return mathAbs(valueB - valueA);\n}\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (mathAbs(valueB) <= mathAbs(valueA)) return 0;\n const diff = deltaAbs(mathAbs(valueB), mathAbs(valueA));\n return mathAbs(diff / valueB);\n}\nfunction arrayKeys(array) {\n return objectKeys(array).map(Number);\n}\nfunction arrayLast(array) {\n return array[arrayLastIndex(array)];\n}\nfunction arrayLastIndex(array) {\n return Math.max(0, array.length - 1);\n}\nfunction arrayIsLastIndex(array, index) {\n return index === arrayLastIndex(array);\n}\nfunction arrayFromNumber(n, startAt = 0) {\n return Array.from(Array(n), (_, i) => startAt + i);\n}\nfunction objectKeys(object) {\n return Object.keys(object);\n}\nfunction objectsMergeDeep(objectA, objectB) {\n return [objectA, objectB].reduce((mergedObjects, currentObject) => {\n objectKeys(currentObject).forEach(key => {\n const valueA = mergedObjects[key];\n const valueB = currentObject[key];\n const areObjects = isObject(valueA) && isObject(valueB);\n mergedObjects[key] = areObjects ? objectsMergeDeep(valueA, valueB) : valueB;\n });\n return mergedObjects;\n }, {});\n}\nfunction isMouseEvent(evt, ownerWindow) {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent;\n}\n\nfunction Alignment(align, viewSize) {\n const predefined = {\n start,\n center,\n 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 measure(n, index) {\n if (isString(align)) return predefined[align](n);\n return align(viewSize, n, index);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction EventStore() {\n let listeners = [];\n function add(node, type, handler, options = {\n passive: true\n }) {\n let removeListener;\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options);\n removeListener = () => node.removeEventListener(type, handler, options);\n } else {\n const legacyMediaQueryList = node;\n legacyMediaQueryList.addListener(handler);\n removeListener = () => legacyMediaQueryList.removeListener(handler);\n }\n listeners.push(removeListener);\n return self;\n }\n function clear() {\n listeners = listeners.filter(remove => remove());\n }\n const self = {\n add,\n clear\n };\n return self;\n}\n\nfunction Animations(ownerDocument, ownerWindow, update, render) {\n const documentVisibleHandler = EventStore();\n const timeStep = 1000 / 60;\n let lastTimeStamp = null;\n let lag = 0;\n let animationFrame = 0;\n function init() {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset();\n });\n }\n function destroy() {\n stop();\n documentVisibleHandler.clear();\n }\n function animate(timeStamp) {\n if (!animationFrame) return;\n if (!lastTimeStamp) lastTimeStamp = timeStamp;\n const elapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n lag += elapsed;\n while (lag >= timeStep) {\n update(timeStep);\n lag -= timeStep;\n }\n const lagOffset = lag / timeStep;\n render(lagOffset);\n if (animationFrame) ownerWindow.requestAnimationFrame(animate);\n }\n function start() {\n if (animationFrame) return;\n animationFrame = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationFrame);\n lastTimeStamp = null;\n lag = 0;\n animationFrame = 0;\n }\n function reset() {\n lastTimeStamp = null;\n lag = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update: () => update(timeStep),\n render\n };\n return self;\n}\n\nfunction Axis(axis, contentDirection) {\n const isRightToLeft = contentDirection === 'rtl';\n const isVertical = axis === 'y';\n const scroll = isVertical ? 'y' : 'x';\n const cross = isVertical ? 'x' : 'y';\n const sign = !isVertical && isRightToLeft ? -1 : 1;\n const startEdge = getStartEdge();\n const endEdge = getEndEdge();\n function measureSize(nodeRect) {\n const {\n height,\n width\n } = nodeRect;\n return isVertical ? height : width;\n }\n function getStartEdge() {\n if (isVertical) return 'top';\n return isRightToLeft ? 'right' : 'left';\n }\n function getEndEdge() {\n if (isVertical) return 'bottom';\n return isRightToLeft ? 'left' : 'right';\n }\n function direction(n) {\n return n * sign;\n }\n const self = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n };\n return self;\n}\n\nfunction Limit(min = 0, max = 0) {\n const 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 const self = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n const {\n constrain\n } = Limit(0, max);\n const loopEnd = max + 1;\n let 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 clone().set(get() + n);\n }\n function clone() {\n return Counter(max, get(), loop);\n }\n const self = {\n get,\n set,\n add,\n clone\n };\n return self;\n}\n\nfunction DragHandler(axis, rootNode, ownerDocument, ownerWindow, target, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, baseFriction, watchDrag) {\n const {\n cross: crossAxis,\n direction\n } = axis;\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n const nonPassiveEvent = {\n passive: false\n };\n const initEvents = EventStore();\n const dragEvents = EventStore();\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20));\n const snapForceBoost = {\n mouse: 300,\n touch: 400\n };\n const freeForceBoost = {\n mouse: 500,\n touch: 600\n };\n const baseSpeed = dragFree ? 43 : 25;\n let isMoving = false;\n let startScroll = 0;\n let startCross = 0;\n let pointerIsDown = false;\n let preventScroll = false;\n let preventClick = false;\n let isMouse = false;\n function init(emblaApi) {\n if (!watchDrag) return;\n function downIfAllowed(evt) {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt);\n }\n const node = rootNode;\n initEvents.add(node, 'dragstart', evt => evt.preventDefault(), nonPassiveEvent).add(node, 'touchmove', () => undefined, nonPassiveEvent).add(node, 'touchend', () => undefined).add(node, 'touchstart', downIfAllowed).add(node, 'mousedown', downIfAllowed).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click, true);\n }\n function destroy() {\n initEvents.clear();\n dragEvents.clear();\n }\n function addDragEvents() {\n const node = isMouse ? ownerDocument : rootNode;\n dragEvents.add(node, 'touchmove', move, nonPassiveEvent).add(node, 'touchend', up).add(node, 'mousemove', move, nonPassiveEvent).add(node, 'mouseup', up);\n }\n function isFocusNode(node) {\n const nodeName = node.nodeName || '';\n return focusNodes.includes(nodeName);\n }\n function forceBoost() {\n const boost = dragFree ? freeForceBoost : snapForceBoost;\n const type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n function allowedForce(force, targetChanged) {\n const next = index.add(mathSign(force) * -1);\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance;\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n function down(evt) {\n const isMouseEvt = isMouseEvent(evt, ownerWindow);\n isMouse = isMouseEvt;\n preventClick = dragFree && isMouseEvt && !evt.buttons && isMoving;\n isMoving = deltaAbs(target.get(), location.get()) >= 2;\n if (isMouseEvt && evt.button !== 0) return;\n if (isFocusNode(evt.target)) return;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n scrollBody.useFriction(0).useDuration(0);\n target.set(location);\n addDragEvents();\n startScroll = dragTracker.readPoint(evt);\n startCross = dragTracker.readPoint(evt, crossAxis);\n eventHandler.emit('pointerDown');\n }\n function move(evt) {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow);\n if (isTouchEvt && evt.touches.length >= 2) return up(evt);\n const lastScroll = dragTracker.readPoint(evt);\n const lastCross = dragTracker.readPoint(evt, crossAxis);\n const diffScroll = deltaAbs(lastScroll, startScroll);\n const diffCross = deltaAbs(lastCross, startCross);\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up(evt);\n preventScroll = diffScroll > diffCross;\n if (!preventScroll) return up(evt);\n }\n const diff = dragTracker.pointerMove(evt);\n if (diffScroll > dragThreshold) preventClick = true;\n scrollBody.useFriction(0.3).useDuration(0.75);\n animation.start();\n target.add(direction(diff));\n evt.preventDefault();\n }\n function up(evt) {\n const currentLocation = scrollTarget.byDistance(0, false);\n const targetChanged = currentLocation.index !== index.get();\n const rawForce = dragTracker.pointerUp(evt) * forceBoost();\n const force = allowedForce(direction(rawForce), targetChanged);\n const forceFactor = factorAbs(rawForce, force);\n const speed = baseSpeed - 10 * forceFactor;\n const friction = baseFriction + forceFactor / 50;\n preventScroll = false;\n pointerIsDown = false;\n dragEvents.clear();\n scrollBody.useDuration(speed).useFriction(friction);\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 preventClick = false;\n }\n }\n function pointerDown() {\n return pointerIsDown;\n }\n const self = {\n init,\n destroy,\n pointerDown\n };\n return self;\n}\n\nfunction DragTracker(axis, ownerWindow) {\n const logInterval = 170;\n let startEvent;\n let lastEvent;\n function readTime(evt) {\n return evt.timeStamp;\n }\n function readPoint(evt, evtAxis) {\n const property = evtAxis || axis.scroll;\n const coord = `client${property === 'x' ? 'X' : 'Y'}`;\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord];\n }\n function pointerDown(evt) {\n startEvent = evt;\n lastEvent = evt;\n return readPoint(evt);\n }\n function pointerMove(evt) {\n const diff = readPoint(evt) - readPoint(lastEvent);\n const 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 const diffDrag = readPoint(lastEvent) - readPoint(startEvent);\n const diffTime = readTime(evt) - readTime(startEvent);\n const expired = readTime(evt) - readTime(lastEvent) > logInterval;\n const force = diffDrag / diffTime;\n const isFlick = diffTime && !expired && mathAbs(force) > 0.1;\n return isFlick ? force : 0;\n }\n const self = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n };\n return self;\n}\n\nfunction NodeRects() {\n function measure(node) {\n const {\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n } = node;\n const offset = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n };\n return offset;\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction PercentOfView(viewSize) {\n function measure(n) {\n return viewSize * (n / 100);\n }\n const self = {\n measure\n };\n return self;\n}\n\nfunction ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects) {\n const observeNodes = [container].concat(slides);\n let resizeObserver;\n let containerSize;\n let slideSizes = [];\n let destroyed = false;\n function readSize(node) {\n return axis.measureSize(nodeRects.measure(node));\n }\n function init(emblaApi) {\n if (!watchResize) return;\n containerSize = readSize(container);\n slideSizes = slides.map(readSize);\n function defaultCallback(entries) {\n for (const entry of entries) {\n if (destroyed) return;\n const isContainer = entry.target === container;\n const slideIndex = slides.indexOf(entry.target);\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex];\n const newSize = readSize(isContainer ? container : slides[slideIndex]);\n const diffSize = mathAbs(newSize - lastSize);\n if (diffSize >= 0.5) {\n emblaApi.reInit();\n eventHandler.emit('resize');\n break;\n }\n }\n }\n resizeObserver = new ResizeObserver(entries => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries);\n }\n });\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach(node => resizeObserver.observe(node));\n });\n }\n function destroy() {\n destroyed = true;\n if (resizeObserver) resizeObserver.disconnect();\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction ScrollBody(location, offsetLocation, previousLocation, target, baseDuration, baseFriction) {\n let bodyVelocity = 0;\n let scrollDirection = 0;\n let scrollDuration = baseDuration;\n let scrollFriction = baseFriction;\n let rawLocation = location.get();\n let rawLocationPrevious = 0;\n function seek(timeStep) {\n const fixedDeltaTimeSeconds = timeStep / 1000;\n const duration = scrollDuration * fixedDeltaTimeSeconds;\n const diff = target.get() - location.get();\n const isInstant = !scrollDuration;\n let directionDiff = 0;\n if (isInstant) {\n bodyVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n directionDiff = diff;\n } else {\n previousLocation.set(location);\n bodyVelocity += diff / duration;\n bodyVelocity *= scrollFriction;\n rawLocation += bodyVelocity;\n location.add(bodyVelocity * fixedDeltaTimeSeconds);\n directionDiff = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(directionDiff);\n rawLocationPrevious = rawLocation;\n return self;\n }\n function settled() {\n const diff = target.get() - offsetLocation.get();\n return mathAbs(diff) < 0.001;\n }\n function duration() {\n return scrollDuration;\n }\n function direction() {\n return scrollDirection;\n }\n function velocity() {\n return bodyVelocity;\n }\n function useBaseDuration() {\n return useDuration(baseDuration);\n }\n function useBaseFriction() {\n return useFriction(baseFriction);\n }\n function useDuration(n) {\n scrollDuration = n;\n return self;\n }\n function useFriction(n) {\n scrollFriction = n;\n return self;\n }\n const self = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n };\n return self;\n}\n\nfunction ScrollBounds(limit, location, target, scrollBody, percentOfView) {\n const pullBackThreshold = percentOfView.measure(10);\n const edgeOffsetTolerance = percentOfView.measure(50);\n const frictionLimit = Limit(0.1, 0.99);\n let 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 const edge = limit.reachedMin(location.get()) ? 'min' : 'max';\n const diffToEdge = mathAbs(limit[edge] - location.get());\n const diffToTarget = target.get() - location.get();\n const friction = frictionLimit.constrain(diffToEdge / edgeOffsetTolerance);\n target.subtract(diffToTarget * friction);\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useDuration(25).useBaseFriction();\n }\n }\n function toggleActive(active) {\n disabled = !active;\n }\n const self = {\n shouldConstrain,\n constrain,\n toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance) {\n const scrollBounds = Limit(-contentSize + viewSize, 0);\n const snapsBounded = measureBounded();\n const scrollContainLimit = findScrollContainLimit();\n const snapsContained = measureContained();\n function usePixelTolerance(bound, snap) {\n return deltaAbs(bound, snap) < 1;\n }\n function findScrollContainLimit() {\n const startSnap = snapsBounded[0];\n const endSnap = arrayLast(snapsBounded);\n const min = snapsBounded.lastIndexOf(startSnap);\n const max = snapsBounded.indexOf(endSnap) + 1;\n return Limit(min, max);\n }\n function measureBounded() {\n return snapsAligned.map((snapAligned, index) => {\n const {\n min,\n max\n } = scrollBounds;\n const snap = scrollBounds.constrain(snapAligned);\n const isFirst = !index;\n const isLast = arrayIsLastIndex(snapsAligned, index);\n if (isFirst) return max;\n if (isLast) return min;\n if (usePixelTolerance(min, snap)) return min;\n if (usePixelTolerance(max, snap)) return max;\n return snap;\n }).map(scrollBound => parseFloat(scrollBound.toFixed(3)));\n }\n function measureContained() {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n const {\n min,\n max\n } = scrollContainLimit;\n return snapsBounded.slice(min, max);\n }\n const self = {\n snapsContained,\n scrollContainLimit\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n const max = scrollSnaps[0];\n const min = loop ? max - contentSize : arrayLast(scrollSnaps);\n const limit = Limit(min, max);\n const self = {\n limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, limit, location, vectors) {\n const jointSafety = 0.1;\n const min = limit.min + jointSafety;\n const max = limit.max + jointSafety;\n const {\n reachedMin,\n reachedMax\n } = Limit(min, max);\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 const loopDistance = contentSize * (direction * -1);\n vectors.forEach(v => v.add(loopDistance));\n }\n const self = {\n loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n const {\n max,\n length\n } = limit;\n function get(n) {\n const currentLocation = n - max;\n return length ? currentLocation / -length : 0;\n }\n const self = {\n get\n };\n return self;\n}\n\nfunction ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll) {\n const {\n startEdge,\n endEdge\n } = axis;\n const {\n groupSlides\n } = slidesToScroll;\n const alignments = measureSizes().map(alignment.measure);\n const snaps = measureUnaligned();\n const snapsAligned = measureAligned();\n function measureSizes() {\n return groupSlides(slideRects).map(rects => arrayLast(rects)[endEdge] - rects[0][startEdge]).map(mathAbs);\n }\n function measureUnaligned() {\n return slideRects.map(rect => containerRect[startEdge] - rect[startEdge]).map(snap => -mathAbs(snap));\n }\n function measureAligned() {\n return groupSlides(snaps).map(g => g[0]).map((snap, index) => snap + alignments[index]);\n }\n const self = {\n snaps,\n snapsAligned\n };\n return self;\n}\n\nfunction SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes) {\n const {\n groupSlides\n } = slidesToScroll;\n const {\n min,\n max\n } = scrollContainLimit;\n const slideRegistry = createSlideRegistry();\n function createSlideRegistry() {\n const groupedSlideIndexes = groupSlides(slideIndexes);\n const doNotContain = !containSnaps || containScroll === 'keepSnaps';\n if (scrollSnaps.length === 1) return [slideIndexes];\n if (doNotContain) return groupedSlideIndexes;\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(groups, index);\n if (isFirst) {\n const range = arrayLast(groups[0]) + 1;\n return arrayFromNumber(range);\n }\n if (isLast) {\n const range = arrayLastIndex(slideIndexes) - arrayLast(groups)[0] + 1;\n return arrayFromNumber(range, arrayLast(groups)[0]);\n }\n return group;\n });\n }\n const self = {\n slideRegistry\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n const {\n reachedAny,\n removeOffset,\n constrain\n } = limit;\n function minDistance(distances) {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0];\n }\n function findTargetSnap(target) {\n const distance = loop ? removeOffset(target) : constrain(target);\n const ascDiffsToSnaps = scrollSnaps.map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index\n })).sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff));\n const {\n index\n } = ascDiffsToSnaps[0];\n return {\n index,\n distance\n };\n }\n function shortcut(target, direction) {\n const targets = [target, target + contentSize, target - contentSize];\n if (!loop) return target;\n if (!direction) return minDistance(targets);\n const matchingTargets = targets.filter(t => mathSign(t) === direction);\n if (matchingTargets.length) return minDistance(matchingTargets);\n return arrayLast(targets) - contentSize;\n }\n function byIndex(index, direction) {\n const diffToSnap = scrollSnaps[index] - targetVector.get();\n const distance = shortcut(diffToSnap, direction);\n return {\n index,\n distance\n };\n }\n function byDistance(distance, snap) {\n const target = targetVector.get() + distance;\n const {\n index,\n distance: targetSnapDistance\n } = findTargetSnap(target);\n const reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index,\n distance\n };\n const diffToSnap = scrollSnaps[index] - targetSnapDistance;\n const snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index,\n distance: snapDistance\n };\n }\n const self = {\n byDistance,\n byIndex,\n shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollBody, scrollTarget, targetVector, eventHandler) {\n function scrollTo(target) {\n const distanceDiff = target.distance;\n const indexDiff = target.index !== indexCurrent.get();\n targetVector.add(distanceDiff);\n if (distanceDiff) {\n if (scrollBody.duration()) {\n animation.start();\n } else {\n animation.update();\n animation.render(1);\n animation.update();\n }\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 const target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n function index(n, direction) {\n const targetIndex = indexCurrent.clone().set(n);\n const target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n const self = {\n distance,\n index\n };\n return self;\n}\n\nfunction SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus) {\n const focusListenerOptions = {\n passive: true,\n capture: true\n };\n let lastTabPressTime = 0;\n function init(emblaApi) {\n if (!watchFocus) return;\n function defaultCallback(index) {\n const nowTime = new Date().getTime();\n const diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n eventHandler.emit('slideFocusStart');\n root.scrollLeft = 0;\n const group = slideRegistry.findIndex(group => group.includes(index));\n if (!isNumber(group)) return;\n scrollBody.useDuration(0);\n scrollTo.index(group, 0);\n eventHandler.emit('slideFocus');\n }\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach((slide, slideIndex) => {\n eventStore.add(slide, 'focus', evt => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex);\n }\n }, focusListenerOptions);\n });\n }\n function registerTabPress(event) {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime();\n }\n const self = {\n init\n };\n return self;\n}\n\nfunction Vector1D(initialValue) {\n let value = initialValue;\n function get() {\n return value;\n }\n function set(n) {\n value = normalizeInput(n);\n }\n function add(n) {\n value += normalizeInput(n);\n }\n function subtract(n) {\n value -= normalizeInput(n);\n }\n function normalizeInput(n) {\n return isNumber(n) ? n : n.get();\n }\n const self = {\n get,\n set,\n add,\n subtract\n };\n return self;\n}\n\nfunction Translate(axis, container) {\n const translate = axis.scroll === 'x' ? x : y;\n const containerStyle = container.style;\n let disabled = false;\n function x(n) {\n return `translate3d(${n}px,0px,0px)`;\n }\n function y(n) {\n return `translate3d(0px,${n}px,0px)`;\n }\n function to(target) {\n if (disabled) return;\n containerStyle.transform = translate(axis.direction(target));\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 const self = {\n clear,\n to,\n toggleActive\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, location, slides) {\n const roundingSafety = 0.5;\n const ascItems = arrayKeys(slideSizesWithGaps);\n const descItems = arrayKeys(slideSizesWithGaps).reverse();\n const loopPoints = startPoints().concat(endPoints());\n function removeSlideSizes(indexes, from) {\n return indexes.reduce((a, i) => {\n return a - slideSizesWithGaps[i];\n }, from);\n }\n function slidesInGap(indexes, gap) {\n return indexes.reduce((a, i) => {\n const remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n function findSlideBounds(offset) {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }));\n }\n function findLoopPoints(indexes, offset, isEndEdge) {\n const slideBounds = findSlideBounds(offset);\n return indexes.map(index => {\n const initial = isEndEdge ? 0 : -contentSize;\n const altered = isEndEdge ? contentSize : 0;\n const boundEdge = isEndEdge ? 'end' : 'start';\n const loopPoint = slideBounds[index][boundEdge];\n return {\n index,\n loopPoint,\n slideLocation: Vector1D(-1),\n translate: Translate(axis, slides[index]),\n target: () => location.get() > loopPoint ? initial : altered\n };\n });\n }\n function startPoints() {\n const gap = scrollSnaps[0];\n const indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, contentSize, false);\n }\n function endPoints() {\n const gap = viewSize - scrollSnaps[0] - 1;\n const indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, -contentSize, true);\n }\n function canLoop() {\n return loopPoints.every(({\n index\n }) => {\n const otherIndexes = ascItems.filter(i => i !== index);\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1;\n });\n }\n function loop() {\n loopPoints.forEach(loopPoint => {\n const {\n target,\n translate,\n slideLocation\n } = loopPoint;\n const shiftLocation = target();\n if (shiftLocation === slideLocation.get()) return;\n translate.to(shiftLocation);\n slideLocation.set(shiftLocation);\n });\n }\n function clear() {\n loopPoints.forEach(loopPoint => loopPoint.translate.clear());\n }\n const self = {\n canLoop,\n clear,\n loop,\n loopPoints\n };\n return self;\n}\n\nfunction SlidesHandler(container, eventHandler, watchSlides) {\n let mutationObserver;\n let destroyed = false;\n function init(emblaApi) {\n if (!watchSlides) return;\n function defaultCallback(mutations) {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit();\n eventHandler.emit('slidesChanged');\n break;\n }\n }\n }\n mutationObserver = new MutationObserver(mutations => {\n if (destroyed) return;\n if (isBoolean(watchSlides) || watchSlides(emblaApi, mutations)) {\n defaultCallback(mutations);\n }\n });\n mutationObserver.observe(container, {\n childList: true\n });\n }\n function destroy() {\n if (mutationObserver) mutationObserver.disconnect();\n destroyed = true;\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction SlidesInView(container, slides, eventHandler, threshold) {\n const intersectionEntryMap = {};\n let inViewCache = null;\n let notInViewCache = null;\n let intersectionObserver;\n let destroyed = false;\n function init() {\n intersectionObserver = new IntersectionObserver(entries => {\n if (destroyed) return;\n entries.forEach(entry => {\n const index = slides.indexOf(entry.target);\n intersectionEntryMap[index] = entry;\n });\n inViewCache = null;\n notInViewCache = null;\n eventHandler.emit('slidesInView');\n }, {\n root: container.parentElement,\n threshold\n });\n slides.forEach(slide => intersectionObserver.observe(slide));\n }\n function destroy() {\n if (intersectionObserver) intersectionObserver.disconnect();\n destroyed = true;\n }\n function createInViewList(inView) {\n return objectKeys(intersectionEntryMap).reduce((list, slideIndex) => {\n const index = parseInt(slideIndex);\n const {\n isIntersecting\n } = intersectionEntryMap[index];\n const inViewMatch = inView && isIntersecting;\n const notInViewMatch = !inView && !isIntersecting;\n if (inViewMatch || notInViewMatch) list.push(index);\n return list;\n }, []);\n }\n function get(inView = true) {\n if (inView && inViewCache) return inViewCache;\n if (!inView && notInViewCache) return notInViewCache;\n const slideIndexes = createInViewList(inView);\n if (inView) inViewCache = slideIndexes;\n if (!inView) notInViewCache = slideIndexes;\n return slideIndexes;\n }\n const self = {\n init,\n destroy,\n get\n };\n return self;\n}\n\nfunction SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow) {\n const {\n measureSize,\n startEdge,\n endEdge\n } = axis;\n const withEdgeGap = slideRects[0] && readEdgeGap;\n const startGap = measureStartGap();\n const endGap = measureEndGap();\n const slideSizes = slideRects.map(measureSize);\n const slideSizesWithGaps = measureWithGaps();\n function measureStartGap() {\n if (!withEdgeGap) return 0;\n const slideRect = slideRects[0];\n return mathAbs(containerRect[startEdge] - slideRect[startEdge]);\n }\n function measureEndGap() {\n if (!withEdgeGap) return 0;\n const style = ownerWindow.getComputedStyle(arrayLast(slides));\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`));\n }\n function measureWithGaps() {\n return slideRects.map((rect, index, rects) => {\n const isFirst = !index;\n const isLast = arrayIsLastIndex(rects, index);\n if (isFirst) return slideSizes[index] + startGap;\n if (isLast) return slideSizes[index] + endGap;\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(mathAbs);\n }\n const self = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n };\n return self;\n}\n\nfunction SlidesToScroll(axis, viewSize, slidesToScroll, loop, containerRect, slideRects, startGap, endGap, pixelTolerance) {\n const {\n startEdge,\n endEdge,\n direction\n } = axis;\n const groupByNumber = isNumber(slidesToScroll);\n function byNumber(array, groupSize) {\n return arrayKeys(array).filter(i => i % groupSize === 0).map(i => array.slice(i, i + groupSize));\n }\n function bySize(array) {\n if (!array.length) return [];\n return arrayKeys(array).reduce((groups, rectB, index) => {\n const rectA = arrayLast(groups) || 0;\n const isFirst = rectA === 0;\n const isLast = rectB === arrayLastIndex(array);\n const edgeA = containerRect[startEdge] - slideRects[rectA][startEdge];\n const edgeB = containerRect[startEdge] - slideRects[rectB][endEdge];\n const gapA = !loop && isFirst ? direction(startGap) : 0;\n const gapB = !loop && isLast ? direction(endGap) : 0;\n const chunkSize = mathAbs(edgeB - gapB - (edgeA + gapA));\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB);\n if (isLast) groups.push(array.length);\n return groups;\n }, []).map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0);\n return array.slice(previousSize, currentSize);\n });\n }\n function groupSlides(array) {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array);\n }\n const self = {\n groupSlides\n };\n return self;\n}\n\nfunction Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler) {\n // Options\n const {\n align,\n axis: scrollAxis,\n direction,\n startIndex,\n loop,\n duration,\n dragFree,\n dragThreshold,\n inViewThreshold,\n slidesToScroll: groupSlides,\n skipSnaps,\n containScroll,\n watchResize,\n watchSlides,\n watchDrag,\n watchFocus\n } = options;\n // Measurements\n const pixelTolerance = 2;\n const nodeRects = NodeRects();\n const containerRect = nodeRects.measure(container);\n const slideRects = slides.map(nodeRects.measure);\n const axis = Axis(scrollAxis, direction);\n const viewSize = axis.measureSize(containerRect);\n const percentOfView = PercentOfView(viewSize);\n const alignment = Alignment(align, viewSize);\n const containSnaps = !loop && !!containScroll;\n const readEdgeGap = loop || !!containScroll;\n const {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n } = SlideSizes(axis, containerRect, slideRects, slides, readEdgeGap, ownerWindow);\n const slidesToScroll = SlidesToScroll(axis, viewSize, groupSlides, loop, containerRect, slideRects, startGap, endGap, pixelTolerance);\n const {\n snaps,\n snapsAligned\n } = ScrollSnaps(axis, alignment, containerRect, slideRects, slidesToScroll);\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n const {\n snapsContained,\n scrollContainLimit\n } = ScrollContain(viewSize, contentSize, snapsAligned, containScroll, pixelTolerance);\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned;\n const {\n limit\n } = ScrollLimit(contentSize, scrollSnaps, loop);\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop);\n const indexPrevious = index.clone();\n const slideIndexes = arrayKeys(slides);\n // Animation\n const update = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: {\n loop\n }\n }, timeStep) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek(timeStep);\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, lagOffset) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n if (hasSettled && !dragHandler.pointerDown()) {\n animation.stop();\n eventHandler.emit('settle');\n }\n if (!hasSettled) eventHandler.emit('scroll');\n const interpolatedLocation = location.get() * lagOffset + previousLocation.get() * (1 - lagOffset);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n };\n const animation = Animations(ownerDocument, ownerWindow, timeStep => update(engine, timeStep), lagOffset => render(engine, lagOffset));\n // Shared\n const friction = 0.68;\n const startLocation = scrollSnaps[index.get()];\n const location = Vector1D(startLocation);\n const previousLocation = Vector1D(startLocation);\n const offsetLocation = Vector1D(startLocation);\n const target = Vector1D(startLocation);\n const scrollBody = ScrollBody(location, offsetLocation, previousLocation, target, duration, friction);\n const scrollTarget = ScrollTarget(loop, scrollSnaps, contentSize, limit, target);\n const scrollTo = ScrollTo(animation, index, indexPrevious, scrollBody, scrollTarget, target, eventHandler);\n const scrollProgress = ScrollProgress(limit);\n const eventStore = EventStore();\n const slidesInView = SlidesInView(container, slides, eventHandler, inViewThreshold);\n const {\n slideRegistry\n } = SlideRegistry(containSnaps, containScroll, scrollSnaps, scrollContainLimit, slidesToScroll, slideIndexes);\n const slideFocus = SlideFocus(root, slides, slideRegistry, scrollTo, scrollBody, eventStore, eventHandler, watchFocus);\n // Engine\n const engine = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(axis, root, ownerDocument, ownerWindow, target, DragTracker(axis, ownerWindow), location, animation, scrollTo, scrollBody, scrollTarget, index, eventHandler, percentOfView, dragFree, dragThreshold, skipSnaps, friction, watchDrag),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(container, eventHandler, ownerWindow, slides, axis, watchResize, nodeRects),\n scrollBody,\n scrollBounds: ScrollBounds(limit, offsetLocation, target, scrollBody, percentOfView),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [location, offsetLocation, previousLocation, target]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizes, slideSizesWithGaps, snaps, scrollSnaps, offsetLocation, slides),\n slideFocus,\n slidesHandler: SlidesHandler(container, eventHandler, watchSlides),\n slidesInView,\n slideIndexes,\n slideRegistry,\n slidesToScroll,\n target,\n translate: Translate(axis, container)\n };\n return engine;\n}\n\nfunction EventHandler() {\n let listeners = {};\n let api;\n function init(emblaApi) {\n api = emblaApi;\n }\n function getListeners(evt) {\n return listeners[evt] || [];\n }\n function emit(evt) {\n getListeners(evt).forEach(e => e(api, evt));\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(e => e !== cb);\n return self;\n }\n function clear() {\n listeners = {};\n }\n const self = {\n init,\n emit,\n off,\n on,\n clear\n };\n return self;\n}\n\nconst defaultOptions = {\n align: 'center',\n axis: 'x',\n container: null,\n slides: null,\n containScroll: 'trimSnaps',\n direction: 'ltr',\n slidesToScroll: 1,\n inViewThreshold: 0,\n breakpoints: {},\n dragFree: false,\n dragThreshold: 10,\n loop: false,\n skipSnaps: false,\n duration: 25,\n startIndex: 0,\n active: true,\n watchDrag: true,\n watchResize: true,\n watchSlides: true,\n watchFocus: true\n};\n\nfunction OptionsHandler(ownerWindow) {\n function mergeOptions(optionsA, optionsB) {\n return objectsMergeDeep(optionsA, optionsB || {});\n }\n function optionsAtMedia(options) {\n const optionsAtMedia = options.breakpoints || {};\n const matchedMediaOptions = objectKeys(optionsAtMedia).filter(media => ownerWindow.matchMedia(media).matches).map(media => optionsAtMedia[media]).reduce((a, mediaOption) => mergeOptions(a, mediaOption), {});\n return mergeOptions(options, matchedMediaOptions);\n }\n function optionsMediaQueries(optionsList) {\n return optionsList.map(options => objectKeys(options.breakpoints || {})).reduce((acc, mediaQueries) => acc.concat(mediaQueries), []).map(ownerWindow.matchMedia);\n }\n const self = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n };\n return self;\n}\n\nfunction PluginsHandler(optionsHandler) {\n let activePlugins = [];\n function init(emblaApi, plugins) {\n activePlugins = plugins.filter(({\n options\n }) => optionsHandler.optionsAtMedia(options).active !== false);\n activePlugins.forEach(plugin => plugin.init(emblaApi, optionsHandler));\n return plugins.reduce((map, plugin) => Object.assign(map, {\n [plugin.name]: plugin\n }), {});\n }\n function destroy() {\n activePlugins = activePlugins.filter(plugin => plugin.destroy());\n }\n const self = {\n init,\n destroy\n };\n return self;\n}\n\nfunction EmblaCarousel(root, userOptions, userPlugins) {\n const ownerDocument = root.ownerDocument;\n const ownerWindow = ownerDocument.defaultView;\n const optionsHandler = OptionsHandler(ownerWindow);\n const pluginsHandler = PluginsHandler(optionsHandler);\n const mediaHandlers = EventStore();\n const eventHandler = EventHandler();\n const {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n } = optionsHandler;\n const {\n on,\n off,\n emit\n } = eventHandler;\n const reInit = reActivate;\n let destroyed = false;\n let engine;\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions);\n let options = mergeOptions(optionsBase);\n let pluginList = [];\n let pluginApis;\n let container;\n let slides;\n function storeElements() {\n const {\n container: userContainer,\n slides: userSlides\n } = options;\n const customContainer = isString(userContainer) ? root.querySelector(userContainer) : userContainer;\n container = customContainer || root.children[0];\n const customSlides = isString(userSlides) ? container.querySelectorAll(userSlides) : userSlides;\n slides = [].slice.call(customSlides || container.children);\n }\n function createEngine(options) {\n const engine = Engine(root, container, slides, ownerDocument, ownerWindow, options, eventHandler);\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, {\n loop: false\n });\n return createEngine(optionsWithoutLoop);\n }\n return engine;\n }\n function activate(withOptions, withPlugins) {\n if (destroyed) return;\n optionsBase = mergeOptions(optionsBase, withOptions);\n options = optionsAtMedia(optionsBase);\n pluginList = withPlugins || pluginList;\n storeElements();\n engine = createEngine(options);\n optionsMediaQueries([optionsBase, ...pluginList.map(({\n options\n }) => options)]).forEach(query => mediaHandlers.add(query, 'change', reActivate));\n if (!options.active) return;\n engine.translate.to(engine.location.get());\n engine.animation.init();\n engine.slidesInView.init();\n engine.slideFocus.init(self);\n engine.eventHandler.init(self);\n engine.resizeHandler.init(self);\n engine.slidesHandler.init(self);\n if (engine.options.loop) engine.slideLooper.loop();\n if (container.offsetParent && slides.length) engine.dragHandler.init(self);\n pluginApis = pluginsHandler.init(self, pluginList);\n }\n function reActivate(withOptions, withPlugins) {\n const startIndex = selectedScrollSnap();\n deActivate();\n activate(mergeOptions({\n startIndex\n }, withOptions), withPlugins);\n eventHandler.emit('reInit');\n }\n function deActivate() {\n engine.dragHandler.destroy();\n engine.eventStore.clear();\n engine.translate.clear();\n engine.slideLooper.clear();\n engine.resizeHandler.destroy();\n engine.slidesHandler.destroy();\n engine.slidesInView.destroy();\n engine.animation.destroy();\n pluginsHandler.destroy();\n mediaHandlers.clear();\n }\n function destroy() {\n if (destroyed) return;\n destroyed = true;\n mediaHandlers.clear();\n deActivate();\n eventHandler.emit('destroy');\n eventHandler.clear();\n }\n function scrollTo(index, jump, direction) {\n if (!options.active || destroyed) return;\n engine.scrollBody.useBaseFriction().useDuration(jump === true ? 0 : options.duration);\n engine.scrollTo.index(index, direction || 0);\n }\n function scrollNext(jump) {\n const next = engine.index.add(1).get();\n scrollTo(next, jump, -1);\n }\n function scrollPrev(jump) {\n const prev = engine.index.add(-1).get();\n scrollTo(prev, jump, 1);\n }\n function canScrollNext() {\n const next = engine.index.add(1).get();\n return next !== selectedScrollSnap();\n }\n function canScrollPrev() {\n const prev = engine.index.add(-1).get();\n return prev !== selectedScrollSnap();\n }\n function scrollSnapList() {\n return engine.scrollSnapList;\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 slidesInView() {\n return engine.slidesInView.get();\n }\n function slidesNotInView() {\n return engine.slidesInView.get(false);\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 const self = {\n canScrollNext,\n canScrollPrev,\n containerNode,\n internalEngine,\n destroy,\n off,\n on,\n emit,\n plugins,\n previousScrollSnap,\n reInit,\n rootNode,\n scrollNext,\n scrollPrev,\n scrollProgress,\n scrollSnapList,\n scrollTo,\n selectedScrollSnap,\n slideNodes,\n slidesInView,\n slidesNotInView\n };\n activate(userOptions, userPlugins);\n setTimeout(() => eventHandler.emit('init'), 0);\n return self;\n}\nEmblaCarousel.globalOptions = undefined;\n\nexport { EmblaCarousel as default };\n//# sourceMappingURL=embla-carousel.esm.js.map\n"],"names":["isNumber","subject","isString","isBoolean","isObject","mathAbs","n","mathSign","deltaAbs","valueB","valueA","factorAbs","diff","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","index","arrayFromNumber","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","key","areObjects","isMouseEvent","evt","ownerWindow","Alignment","align","viewSize","predefined","start","center","end","measure","EventStore","listeners","add","node","type","handler","options","removeListener","legacyMediaQueryList","self","clear","remove","Animations","ownerDocument","update","render","documentVisibleHandler","timeStep","lastTimeStamp","lag","animationFrame","init","reset","destroy","stop","animate","timeStamp","elapsed","lagOffset","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","sign","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","direction","Limit","min","max","length","reachedMin","reachedMax","reachedAny","constrain","removeOffset","Counter","loop","loopEnd","counter","withinLimit","get","set","clone","DragHandler","rootNode","target","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","eventHandler","percentOfView","dragFree","dragThreshold","skipSnaps","baseFriction","watchDrag","crossAxis","focusNodes","nonPassiveEvent","initEvents","dragEvents","goToNextThreshold","snapForceBoost","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","up","click","addDragEvents","move","isFocusNode","nodeName","forceBoost","allowedForce","force","targetChanged","next","baseForce","isMouseEvt","lastScroll","lastCross","diffScroll","diffCross","rawForce","forceFactor","speed","friction","pointerDown","DragTracker","startEvent","lastEvent","readTime","readPoint","evtAxis","coord","pointerMove","expired","pointerUp","diffDrag","diffTime","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entries","entry","isContainer","slideIndex","lastSize","newSize","ScrollBody","offsetLocation","previousLocation","baseDuration","bodyVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","fixedDeltaTimeSeconds","duration","isInstant","directionDiff","settled","velocity","useBaseDuration","useDuration","useBaseFriction","useFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","snapAligned","isFirst","isLast","scrollBound","ScrollLimit","scrollSnaps","ScrollLooper","vectors","shouldLoop","loopDistance","v","ScrollProgress","currentLocation","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","a","b","findTargetSnap","distance","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","byIndex","diffToSnap","byDistance","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","lastTabPressTime","registerTabPress","slide","event","Vector1D","initialValue","value","normalizeInput","subtract","Translate","translate","x","y","containerStyle","to","SlideLooper","slideSizesWithGaps","ascItems","descItems","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","from","slidesInGap","gap","findSlideBounds","offset","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","canLoop","otherIndexes","slideLocation","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","createInViewList","inView","list","isIntersecting","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","style","SlidesToScroll","groupByNumber","byNumber","groupSize","bySize","rectB","rectA","edgeA","edgeB","gapA","gapB","chunkSize","currentSize","previousSize","Engine","scrollAxis","startIndex","inViewThreshold","dragHandler","scrollLooper","slideLooper","shouldSettle","withinBounds","hasSettled","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsA","optionsB","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","plugins","plugin","map","EmblaCarousel","userOptions","userPlugins","pluginsHandler","mediaHandlers","reInit","reActivate","optionsBase","pluginList","pluginApis","storeElements","userContainer","userSlides","customSlides","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","scrollSnapList","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes"],"mappings":"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","x_google_ignoreList":[0]}