{"version":3,"file":"865dfe453ede59b86bd06781432e124c3e475c62-5ee2f17a29d8c72c5d2d.js","mappings":"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","sources":["webpack://getform/./node_modules/embla-carousel-react/embla-carousel-react.esm.js","webpack://getform/./src/components/shared/carousel.js","webpack://getform/./src/hooks/use-media.js","webpack://getform/./src/utils/index.js","webpack://getform/./src/utils/storage.js"],"sourcesContent":["import { useState, useRef, useMemo, useEffect } from 'react';\n\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\n\nfunction areEqualShallow(objectA, objectB) {\n return Object.keys(objectA).length === Object.keys(objectB).length && Object.keys(objectA).every(function (objectKey) {\n if (!Object.prototype.hasOwnProperty.call(objectB, objectKey)) {\n return false;\n }\n\n return objectA[objectKey] === objectB[objectKey];\n });\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction Alignment(align, viewSize) {\n var predefined = {\n start: start,\n center: center,\n end: end\n };\n\n function start() {\n return 0;\n }\n\n function center(n) {\n return end(n) / 2;\n }\n\n function end(n) {\n return viewSize - n;\n }\n\n function percent() {\n return viewSize * Number(align);\n }\n\n function measure(n) {\n if (typeof align === 'number') return percent();\n return predefined[align](n);\n }\n\n var self = {\n measure: measure\n };\n return self;\n}\n\nfunction Animation(callback) {\n var animationFrame = 0;\n\n function ifAnimating(active, cb) {\n return function () {\n if (active === !!animationFrame) cb();\n };\n }\n\n function start() {\n animationFrame = window.requestAnimationFrame(callback);\n }\n\n function stop() {\n window.cancelAnimationFrame(animationFrame);\n animationFrame = 0;\n }\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\nfunction Axis(axis, contentDirection) {\n var scroll = axis === 'y' ? 'y' : 'x';\n var cross = axis === 'y' ? 'x' : 'y';\n var startEdge = getStartEdge();\n var endEdge = getEndEdge();\n\n function measureSize(rect) {\n var width = rect.width,\n height = rect.height;\n return scroll === 'x' ? width : height;\n }\n\n function getStartEdge() {\n if (scroll === 'y') return 'top';\n return contentDirection === 'rtl' ? 'right' : 'left';\n }\n\n function getEndEdge() {\n if (scroll === 'y') return 'bottom';\n return contentDirection === 'rtl' ? 'left' : 'right';\n }\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\nfunction Limit(min, max) {\n var length = Math.abs(min - max);\n\n function reachedMin(n) {\n return n < min;\n }\n\n function reachedMax(n) {\n return n > max;\n }\n\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n\n function removeOffset(n) {\n if (!length) return n;\n return n - length * Math.ceil((n - max) / length);\n }\n\n var self = {\n constrain: constrain,\n length: length,\n max: max,\n min: min,\n reachedAny: reachedAny,\n reachedMax: reachedMax,\n reachedMin: reachedMin,\n removeOffset: removeOffset\n };\n return self;\n}\n\nfunction Counter(max, start, loop) {\n var _a = Limit(0, max),\n min = _a.min,\n constrain = _a.constrain;\n\n var loopEnd = max + 1;\n var counter = withinLimit(start);\n\n function withinLimit(n) {\n return !loop ? constrain(n) : Math.abs((loopEnd + n) % loopEnd);\n }\n\n function get() {\n return counter;\n }\n\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n\n function add(n) {\n return set(get() + n);\n }\n\n function clone() {\n return Counter(max, get(), loop);\n }\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\nfunction Direction(direction) {\n var sign = direction === 'rtl' ? -1 : 1;\n\n function applyTo(n) {\n return n * sign;\n }\n\n var self = {\n applyTo: applyTo\n };\n return self;\n}\n\nfunction EventStore() {\n var listeners = [];\n\n function add(node, type, handler, options) {\n if (options === void 0) {\n options = false;\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\n function removeAll() {\n listeners = listeners.filter(function (remove) {\n return remove();\n });\n return self;\n }\n\n var self = {\n add: add,\n removeAll: removeAll\n };\n return self;\n}\n\nfunction Vector1D(value) {\n var vector = value;\n\n function get() {\n return vector;\n }\n\n function set(n) {\n vector = readNumber(n);\n return self;\n }\n\n function add(n) {\n vector += readNumber(n);\n return self;\n }\n\n function subtract(n) {\n vector -= readNumber(n);\n return self;\n }\n\n function multiply(n) {\n vector *= n;\n return self;\n }\n\n function divide(n) {\n vector /= n;\n return self;\n }\n\n function normalize() {\n if (vector !== 0) divide(vector);\n return self;\n }\n\n function readNumber(n) {\n return typeof n === 'number' ? n : n.get();\n }\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\nfunction map(value, iStart, iStop, oStart, oStop) {\n return oStart + (oStop - oStart) * ((value - iStart) / (iStop - iStart));\n}\n\nfunction mathSign(n) {\n return !n ? 0 : n / Math.abs(n);\n}\n\nfunction deltaAbs(valueB, valueA) {\n return Math.abs(valueB - valueA);\n}\n\nfunction factorAbs(valueB, valueA) {\n if (valueB === 0 || valueA === 0) return 0;\n if (Math.abs(valueB) <= Math.abs(valueA)) return 0;\n var diff = deltaAbs(Math.abs(valueB), Math.abs(valueA));\n return Math.abs(diff / valueB);\n}\n\nfunction roundToDecimals(decimalPoints) {\n var pow = Math.pow(10, decimalPoints);\n return function (n) {\n return Math.round(n * pow) / pow;\n };\n}\n\nfunction debounce(callback, time) {\n var timeout = 0;\n return function () {\n window.clearTimeout(timeout);\n timeout = window.setTimeout(callback, time) || 0;\n };\n}\n\nfunction groupArray(array, size) {\n var groups = [];\n\n for (var i = 0; i < array.length; i += size) {\n groups.push(array.slice(i, i + size));\n }\n\n return groups;\n}\n\nfunction arrayKeys(array) {\n return Object.keys(array).map(Number);\n}\n\nfunction arrayLast(array) {\n return array[lastIndex(array)];\n}\n\nfunction lastIndex(array) {\n return Math.max(0, array.length - 1);\n}\n\nfunction removeClass(node, className) {\n var cl = node.classList;\n if (className && cl.contains(className)) cl.remove(className);\n}\n\nfunction addClass(node, className) {\n var cl = node.classList;\n if (className && !cl.contains(className)) cl.add(className);\n}\n\nfunction DragHandler(axis, direction, rootNode, target, dragFree, dragTracker, location, animation, scrollTo, scrollBody, scrollTarget, index, events, loop, skipSnaps) {\n var scrollAxis = axis.scroll,\n crossAxis = axis.cross;\n var focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n var startScroll = Vector1D(0);\n var startCross = Vector1D(0);\n var dragStartPoint = Vector1D(0);\n var activationEvents = EventStore();\n var interactionEvents = EventStore();\n var snapForceBoost = {\n mouse: 2.5,\n touch: 3.5\n };\n var freeForceBoost = {\n mouse: 5,\n touch: 7\n };\n var baseSpeed = dragFree ? 5 : 16;\n var baseMass = 1;\n var dragThreshold = 20;\n var pointerIsDown = false;\n var preventScroll = false;\n var preventClick = false;\n var isMouse = false;\n\n function addActivationEvents() {\n var node = rootNode;\n activationEvents.add(node, 'touchmove', function () {\n return undefined;\n }).add(node, 'touchend', function () {\n return undefined;\n }).add(node, 'touchstart', down).add(node, 'mousedown', down).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click);\n }\n\n function addInteractionEvents() {\n var node = !isMouse ? rootNode : document;\n interactionEvents.add(node, 'touchmove', move).add(node, 'touchend', up).add(node, 'mousemove', move).add(node, 'mouseup', up);\n }\n\n function removeAllEvents() {\n activationEvents.removeAll();\n interactionEvents.removeAll();\n }\n\n function isFocusNode(node) {\n var name = node.nodeName || '';\n return focusNodes.indexOf(name) > -1;\n }\n\n function forceBoost() {\n var boost = dragFree ? freeForceBoost : snapForceBoost;\n var type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\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 || Math.abs(force) < dragThreshold) return baseForce;\n if (!loop && isEdge) return baseForce * 0.6;\n if (skipSnaps && targetChanged) return baseForce * 0.5;\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n\n function down(evt) {\n isMouse = evt.type === 'mousedown';\n if (isMouse && evt.button !== 0) return;\n var isMoving = deltaAbs(target.get(), location.get()) >= 2;\n var clearPreventClick = isMouse || !isMoving;\n var isNotFocusNode = !isFocusNode(evt.target);\n var preventDefault = isMoving || isMouse && isNotFocusNode;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n dragStartPoint.set(target);\n target.set(location);\n scrollBody.useBaseMass().useSpeed(80);\n addInteractionEvents();\n startScroll.set(dragTracker.readPoint(evt, scrollAxis));\n startCross.set(dragTracker.readPoint(evt, crossAxis));\n events.emit('pointerDown');\n if (clearPreventClick) preventClick = false;\n if (preventDefault) evt.preventDefault();\n }\n\n function move(evt) {\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up();\n var moveScroll = dragTracker.readPoint(evt, scrollAxis).get();\n var moveCross = dragTracker.readPoint(evt, crossAxis).get();\n var diffScroll = deltaAbs(moveScroll, startScroll.get());\n var diffCross = deltaAbs(moveCross, startCross.get());\n preventScroll = diffScroll > diffCross;\n if (!preventScroll && !preventClick) return up();\n }\n\n var diff = dragTracker.pointerMove(evt);\n if (!preventClick && diff) preventClick = true;\n animation.start();\n target.add(direction.applyTo(diff));\n evt.preventDefault();\n }\n\n function up() {\n var currentLocation = scrollTarget.byDistance(0, false);\n var targetChanged = currentLocation.index !== index.get();\n var rawForce = dragTracker.pointerUp() * forceBoost();\n var force = allowedForce(direction.applyTo(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 = Math.abs(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 events.emit('pointerUp');\n }\n\n function click(evt) {\n if (preventClick) evt.preventDefault();\n }\n\n function clickAllowed() {\n return !preventClick;\n }\n\n function pointerDown() {\n return pointerIsDown;\n }\n\n var self = {\n addActivationEvents: addActivationEvents,\n clickAllowed: clickAllowed,\n pointerDown: pointerDown,\n removeAllEvents: removeAllEvents\n };\n return self;\n}\n\nfunction DragTracker(axis, pxToPercent) {\n var scrollAxis = axis.scroll;\n var coords = {\n x: 'clientX',\n y: 'clientY'\n };\n var startDrag = Vector1D(0);\n var diffDrag = Vector1D(0);\n var lastDrag = Vector1D(0);\n var pointValue = Vector1D(0);\n var trackInterval = 10;\n var trackLength = 5;\n var trackTime = 100;\n var trackPoints = [];\n var lastMoveTime = new Date().getTime();\n var isMouse = false;\n\n function readPoint(evt, type) {\n isMouse = !evt.touches;\n var c = coords[type];\n var value = isMouse ? evt[c] : evt.touches[0][c];\n return pointValue.set(value);\n }\n\n function pointerDown(evt) {\n var point = readPoint(evt, scrollAxis);\n startDrag.set(point);\n lastDrag.set(point);\n return pxToPercent.measure(startDrag.get());\n }\n\n function pointerMove(evt) {\n var point = readPoint(evt, scrollAxis);\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastMoveTime;\n\n if (diffTime >= trackInterval) {\n if (diffTime >= trackTime) trackPoints = [];\n trackPoints.push(point.get());\n lastMoveTime = nowTime;\n }\n\n diffDrag.set(point).subtract(lastDrag);\n lastDrag.set(point);\n return pxToPercent.measure(diffDrag.get());\n }\n\n function pointerUp() {\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastMoveTime;\n var currentPoint = lastDrag.get();\n var force = trackPoints.slice(-trackLength).map(function (trackPoint) {\n return currentPoint - trackPoint;\n }).sort(function (p1, p2) {\n return Math.abs(p1) < Math.abs(p2) ? 1 : -1;\n })[0];\n lastDrag.set(diffTime > trackTime || !force ? 0 : force);\n trackPoints = [];\n return pxToPercent.measure(lastDrag.get());\n }\n\n var self = {\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n readPoint: readPoint\n };\n return self;\n}\n\nfunction PxToPercent(viewInPx) {\n var totalPercent = 100;\n\n function measure(n) {\n if (viewInPx === 0) return 0;\n return n / viewInPx * totalPercent;\n }\n\n var self = {\n measure: measure,\n totalPercent: totalPercent\n };\n return self;\n}\n\nfunction 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\n function update() {\n velocity.add(acceleration);\n location.add(velocity);\n acceleration.multiply(0);\n }\n\n function applyForce(v) {\n v.divide(mass);\n acceleration.add(v);\n }\n\n function seek(v) {\n attraction.set(v).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\n function settle(v) {\n var diff = v.get() - location.get();\n var hasSettled = !roundToTwoDecimals(diff);\n if (hasSettled) location.set(v);\n return hasSettled;\n }\n\n function direction() {\n return attractionDirection;\n }\n\n function useBaseSpeed() {\n return useSpeed(baseSpeed);\n }\n\n function useBaseMass() {\n return useMass(baseMass);\n }\n\n function useSpeed(n) {\n speed = n;\n return self;\n }\n\n function useMass(n) {\n mass = n;\n return self;\n }\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\nfunction ScrollBounds(limit, location, target, scrollBody) {\n var pullBackThreshold = 10;\n var disabled = false;\n\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\n function constrain(pointerDown) {\n if (!shouldConstrain()) return;\n var friction = pointerDown ? 0.7 : 0.45;\n var diffToTarget = target.get() - location.get();\n target.subtract(diffToTarget * friction);\n\n if (!pointerDown && Math.abs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()));\n scrollBody.useSpeed(10).useMass(3);\n }\n }\n\n function toggleActive(active) {\n disabled = !active;\n }\n\n var self = {\n constrain: constrain,\n toggleActive: toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(viewSize, contentSize, snaps, snapsAligned, containScroll) {\n var scrollBounds = Limit(-contentSize + viewSize, snaps[0]);\n var snapsBounded = snapsAligned.map(scrollBounds.constrain);\n var snapsContained = measureContained();\n\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\n function measureContained() {\n if (contentSize <= viewSize) return [scrollBounds.max];\n if (containScroll === 'keepSnaps') return snapsBounded;\n\n var _a = findDuplicates(),\n min = _a.min,\n max = _a.max;\n\n return snapsBounded.slice(min, max);\n }\n\n var self = {\n snapsContained: snapsContained\n };\n return self;\n}\n\nfunction ScrollLimit(contentSize, scrollSnaps, loop) {\n var limit = measureLimit();\n\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\n var self = {\n limit: limit\n };\n return self;\n}\n\nfunction ScrollLooper(contentSize, pxToPercent, limit, location, vectors) {\n var min = limit.min + pxToPercent.measure(0.1);\n var max = limit.max + pxToPercent.measure(0.1);\n\n var _a = Limit(min, max),\n reachedMin = _a.reachedMin,\n reachedMax = _a.reachedMax;\n\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\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\n var self = {\n loop: loop\n };\n return self;\n}\n\nfunction ScrollProgress(limit) {\n var max = limit.max,\n scrollLength = limit.length;\n\n function get(n) {\n var currentLocation = n - max;\n return currentLocation / -scrollLength;\n }\n\n var self = {\n get: get\n };\n return self;\n}\n\nfunction ScrollSnap(axis, alignment, pxToPercent, containerRect, slideRects, slidesToScroll) {\n var startEdge = axis.startEdge,\n endEdge = axis.endEdge;\n var snaps = measureUnaligned();\n var snapsAligned = measureAligned();\n\n function measureSizes() {\n return groupArray(slideRects, slidesToScroll).map(function (rects) {\n return arrayLast(rects)[endEdge] - rects[0][startEdge];\n }).map(pxToPercent.measure).map(Math.abs);\n }\n\n function measureUnaligned() {\n return slideRects.map(function (rect) {\n return containerRect[startEdge] - rect[startEdge];\n }).map(pxToPercent.measure).map(function (snap) {\n return -Math.abs(snap);\n });\n }\n\n function measureAligned() {\n var groupedSnaps = groupArray(snaps, slidesToScroll).map(function (g) {\n return g[0];\n });\n var alignments = measureSizes().map(alignment.measure);\n return groupedSnaps.map(function (snap, index) {\n return snap + alignments[index];\n });\n }\n\n var self = {\n snaps: snaps,\n snapsAligned: snapsAligned\n };\n return self;\n}\n\nfunction ScrollTarget(loop, scrollSnaps, contentSize, limit, targetVector) {\n var reachedAny = limit.reachedAny,\n removeOffset = limit.removeOffset,\n constrain = limit.constrain;\n\n function minDistance(d1, d2) {\n return Math.abs(d1) < Math.abs(d2) ? d1 : d2;\n }\n\n function findTargetSnap(target) {\n var distance = loop ? removeOffset(target) : constrain(target);\n var ascDiffsToSnaps = scrollSnaps.map(function (scrollSnap) {\n return scrollSnap - distance;\n }).map(function (diffToSnap) {\n return shortcut(diffToSnap, 0);\n }).map(function (diff, i) {\n return {\n diff: diff,\n index: i\n };\n }).sort(function (d1, d2) {\n return Math.abs(d1.diff) - Math.abs(d2.diff);\n });\n var index = ascDiffsToSnaps[0].index;\n return {\n index: index,\n distance: distance\n };\n }\n\n function shortcut(target, direction) {\n var t1 = target;\n var t2 = target + contentSize;\n var t3 = target - contentSize;\n if (!loop) return t1;\n if (!direction) return minDistance(minDistance(t1, t2), t3);\n var shortest = minDistance(t1, direction === 1 ? t2 : t3);\n return Math.abs(shortest) * direction;\n }\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\n function byDistance(distance, snap) {\n var target = targetVector.get() + distance;\n\n var _a = findTargetSnap(target),\n index = _a.index,\n targetSnapDistance = _a.distance;\n\n var reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) 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\n var self = {\n byDistance: byDistance,\n byIndex: byIndex,\n shortcut: shortcut\n };\n return self;\n}\n\nfunction ScrollTo(animation, indexCurrent, indexPrevious, scrollTarget, targetVector, events) {\n function scrollTo(target) {\n var distanceDiff = target.distance;\n var indexDiff = target.index !== indexCurrent.get();\n\n if (distanceDiff) {\n animation.start();\n targetVector.add(distanceDiff);\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n events.emit('select');\n }\n }\n\n function distance(n, snap) {\n var target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\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\n var self = {\n distance: distance,\n index: index\n };\n return self;\n}\n\nfunction SlideLooper(axis, viewSize, contentSize, slideSizesWithGaps, scrollSnaps, slidesInView, scrollLocation, slides) {\n var ascItems = arrayKeys(slideSizesWithGaps);\n var descItems = arrayKeys(slideSizesWithGaps).reverse();\n var loopPoints = startPoints().concat(endPoints());\n\n function removeSlideSizes(indexes, from) {\n return indexes.reduce(function (a, i) {\n return a - slideSizesWithGaps[i];\n }, from);\n }\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\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\n var getTarget = function getTarget() {\n return scrollLocation.get() > point ? initial : altered;\n };\n\n return {\n point: point,\n getTarget: getTarget,\n index: index,\n location: -1\n };\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\n function endPoints() {\n var gap = viewSize - scrollSnaps[0] - 1;\n var indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, 'start');\n }\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;\n });\n }\n\n function loop() {\n loopPoints.forEach(function (loopPoint) {\n var getTarget = loopPoint.getTarget,\n location = loopPoint.location,\n index = loopPoint.index;\n var target = getTarget();\n\n if (target !== location) {\n slides[index].style[axis.startEdge] = target + \"%\";\n loopPoint.location = target;\n }\n });\n }\n\n function clear() {\n loopPoints.forEach(function (_a) {\n var index = _a.index;\n slides[index].style[axis.startEdge] = '';\n });\n }\n\n var self = {\n canLoop: canLoop,\n clear: clear,\n loop: loop,\n loopPoints: loopPoints\n };\n return self;\n}\n\nfunction SlideFocus(rootNode, scrollTo, slidesToScroll) {\n var eventStore = EventStore();\n var removeAllEvents = eventStore.removeAll;\n var lastTabPressTime = 0;\n\n function registerTabPress(event) {\n if (event.keyCode !== 9) return;\n lastTabPressTime = new Date().getTime();\n }\n\n function addFocusEvent(slide, index) {\n var focus = function focus() {\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n rootNode.scrollLeft = 0;\n var selectedIndex = Math.floor(index / slidesToScroll);\n scrollTo.index(selectedIndex, 0);\n };\n\n eventStore.add(slide, 'focus', focus, true);\n }\n\n function addActivationEvents(slides) {\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach(addFocusEvent);\n }\n\n var self = {\n addActivationEvents: addActivationEvents,\n removeAllEvents: removeAllEvents\n };\n return self;\n}\n\nfunction SlidesInView(viewSize, contentSize, slideSizes, snaps, loop, inViewThreshold) {\n var threshold = Math.min(Math.max(inViewThreshold, 0.01), 0.99);\n var offsets = loop ? [0, contentSize, -contentSize] : [0];\n var slideBounds = offsets.reduce(function (a, offset) {\n return a.concat(findSlideBounds(offset, threshold));\n }, []);\n\n function findSlideBounds(offset, threshold) {\n var thresholds = slideSizes.map(function (s) {\n return s * (threshold || 0);\n });\n return snaps.map(function (snap, index) {\n return {\n start: snap - slideSizes[index] + thresholds[index] + offset,\n end: snap + viewSize - thresholds[index] + offset,\n index: index\n };\n });\n }\n\n function check(location) {\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 < location && end > location;\n return !inList && inView ? list.concat([index]) : list;\n }, []);\n }\n\n var self = {\n check: check,\n findSlideBounds: findSlideBounds\n };\n return self;\n}\n\nfunction SlideSizes(axis, pxToPercent, slides, slideRects, loop) {\n var measureSize = axis.measureSize,\n startEdge = axis.startEdge,\n endEdge = axis.endEdge;\n var sizesInPx = slideRects.map(measureSize);\n var slideSizes = sizesInPx.map(pxToPercent.measure);\n var slideSizesWithGaps = measureWithGaps();\n\n function measureWithGaps() {\n return slideRects.map(function (rect, index, rects) {\n var isLast = index === lastIndex(rects);\n var style = window.getComputedStyle(arrayLast(slides));\n var endGap = parseFloat(style.getPropertyValue(\"margin-\" + endEdge));\n if (isLast) return sizesInPx[index] + (loop ? endGap : 0);\n return rects[index + 1][startEdge] - rect[startEdge];\n }).map(pxToPercent.measure).map(Math.abs);\n }\n\n var self = {\n slideSizes: slideSizes,\n slideSizesWithGaps: slideSizesWithGaps\n };\n return self;\n}\n\nfunction Translate(axis, direction, container) {\n var containerStyle = container.style;\n var translate = axis.scroll === 'x' ? x : y;\n var disabled = false;\n\n function x(n) {\n return \"translate3d(\" + n + \"%,0px,0px)\";\n }\n\n function y(n) {\n return \"translate3d(0px,\" + n + \"%,0px)\";\n }\n\n function to(target) {\n if (disabled) return;\n containerStyle.transform = translate(direction.applyTo(target.get()));\n }\n\n function toggleActive(active) {\n disabled = !active;\n }\n\n function clear() {\n containerStyle.transform = '';\n }\n\n var self = {\n clear: clear,\n to: to,\n toggleActive: toggleActive\n };\n return self;\n}\n\nfunction Engine(root, container, slides, options, events) {\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 slidesToScroll = options.slidesToScroll,\n skipSnaps = options.skipSnaps,\n containScroll = options.containScroll; // Measurements\n\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 pxToPercent = PxToPercent(axis.measureSize(containerRect));\n var viewSize = pxToPercent.totalPercent;\n var alignment = Alignment(align, viewSize);\n\n var _a = SlideSizes(axis, pxToPercent, slides, slideRects, loop),\n slideSizes = _a.slideSizes,\n slideSizesWithGaps = _a.slideSizesWithGaps;\n\n var _b = ScrollSnap(axis, alignment, pxToPercent, containerRect, slideRects, slidesToScroll),\n snaps = _b.snaps,\n snapsAligned = _b.snapsAligned;\n\n var contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps);\n var snapsContained = ScrollContain(viewSize, contentSize, snaps, snapsAligned, containScroll).snapsContained;\n var contain = !loop && containScroll !== '';\n var scrollSnaps = contain ? snapsContained : snapsAligned;\n var limit = ScrollLimit(contentSize, scrollSnaps, loop).limit; // Indexes\n\n var index = Counter(lastIndex(scrollSnaps), startIndex, loop);\n var indexPrevious = index.clone();\n var slideIndexes = arrayKeys(slides); // Draw\n\n var update = function update() {\n if (!loop) engine.scrollBounds.constrain(engine.dragHandler.pointerDown());\n engine.scrollBody.seek(target).update();\n var settled = engine.scrollBody.settle(target);\n\n if (settled && !engine.dragHandler.pointerDown()) {\n engine.animation.stop();\n events.emit('settle');\n }\n\n if (!settled) {\n events.emit('scroll');\n }\n\n if (loop) {\n engine.scrollLooper.loop(engine.scrollBody.direction());\n engine.slideLooper.loop();\n }\n\n engine.translate.to(location);\n engine.animation.proceed();\n }; // Shared\n\n\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, events);\n var slidesInView = SlidesInView(viewSize, contentSize, slideSizes, snaps, loop, inViewThreshold); // DragHandler\n\n var dragHandler = DragHandler(axis, direction, root, target, dragFree, DragTracker(axis, pxToPercent), location, animation, scrollTo, scrollBody, scrollTarget, index, events, loop, skipSnaps); // Slider\n\n var engine = {\n animation: animation,\n axis: axis,\n direction: direction,\n dragHandler: dragHandler,\n pxToPercent: pxToPercent,\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),\n scrollLooper: ScrollLooper(contentSize, pxToPercent, limit, location, [location, target]),\n scrollProgress: ScrollProgress(limit),\n scrollSnaps: scrollSnaps,\n scrollTarget: scrollTarget,\n scrollTo: scrollTo,\n slideFocus: SlideFocus(root, scrollTo, slidesToScroll),\n slideLooper: SlideLooper(axis, viewSize, contentSize, slideSizesWithGaps, scrollSnaps, slidesInView, location, slides),\n slidesInView: slidesInView,\n slideIndexes: slideIndexes,\n target: target,\n translate: Translate(axis, direction, container)\n };\n return engine;\n}\n\nfunction EventEmitter() {\n var listeners = {};\n\n function getListeners(evt) {\n var eventListeners = listeners[evt];\n return eventListeners || [];\n }\n\n function emit(evt) {\n getListeners(evt).forEach(function (e) {\n return e(evt);\n });\n return self;\n }\n\n function on(evt, cb) {\n listeners[evt] = getListeners(evt).concat([cb]);\n return self;\n }\n\n function off(evt, cb) {\n listeners[evt] = getListeners(evt).filter(function (e) {\n return e !== cb;\n });\n return self;\n }\n\n var self = {\n emit: emit,\n off: off,\n on: on\n };\n return self;\n}\n\nvar defaultOptions = {\n align: 'center',\n axis: 'x',\n containScroll: '',\n direction: 'ltr',\n dragFree: false,\n draggable: true,\n draggableClass: 'is-draggable',\n draggingClass: 'is-dragging',\n inViewThreshold: 0,\n loop: false,\n skipSnaps: true,\n selectedClass: 'is-selected',\n slidesToScroll: 1,\n speed: 10,\n startIndex: 0\n};\n\nfunction OptionsPseudo(node) {\n var pseudoString = getComputedStyle(node, ':before').content;\n\n function get() {\n try {\n return JSON.parse(pseudoString.slice(1, -1).replace(/\\\\/g, ''));\n } catch (error) {} // eslint-disable-line no-empty\n\n\n return {};\n }\n\n var self = {\n get: get\n };\n return self;\n}\n\nfunction EmblaCarousel(sliderRoot, userOptions) {\n var events = EventEmitter();\n var eventStore = EventStore();\n var debouncedResize = debounce(resize, 500);\n var reInit = reActivate;\n var on = events.on,\n off = events.off;\n var engine;\n var activated = false;\n\n var optionsBase = _extends({}, defaultOptions);\n\n var options = _extends({}, optionsBase);\n\n var optionsPseudo;\n var rootNodeSize = 0;\n var container;\n var slides;\n activate(userOptions);\n\n function setupElements() {\n if (!sliderRoot) throw new Error('Missing root node 😢');\n var sliderContainer = sliderRoot.querySelector('*');\n if (!sliderContainer) throw new Error('Missing container node 😢');\n container = sliderContainer;\n slides = Array.prototype.slice.call(container.children);\n optionsPseudo = OptionsPseudo(sliderRoot);\n }\n\n function activate(partialOptions) {\n setupElements();\n optionsBase = _extends({}, optionsBase, partialOptions);\n options = _extends({}, optionsBase, optionsPseudo.get());\n engine = Engine(sliderRoot, container, slides, options, events);\n eventStore.add(window, 'resize', debouncedResize);\n engine.translate.to(engine.location);\n rootNodeSize = engine.axis.measureSize(sliderRoot.getBoundingClientRect());\n\n if (options.loop) {\n if (!engine.slideLooper.canLoop()) {\n deActivate();\n return activate({\n loop: false\n });\n }\n\n engine.slideLooper.loop();\n }\n\n if (options.draggable && container.offsetParent && slides.length) {\n engine.dragHandler.addActivationEvents();\n\n if (options.draggableClass) {\n addClass(sliderRoot, options.draggableClass);\n }\n\n if (options.draggingClass) {\n events.on('pointerDown', toggleDraggingClass).on('pointerUp', toggleDraggingClass);\n }\n }\n\n if (slides.length) {\n engine.slideFocus.addActivationEvents(slides);\n }\n\n if (options.selectedClass) {\n toggleSelectedClass();\n events.on('select', toggleSelectedClass).on('pointerUp', toggleSelectedClass);\n }\n\n if (!activated) {\n setTimeout(function () {\n return events.emit('init');\n }, 0);\n activated = true;\n }\n }\n\n function toggleDraggingClass(evt) {\n var draggingClass = options.draggingClass;\n if (evt === 'pointerDown') addClass(sliderRoot, draggingClass);else removeClass(sliderRoot, draggingClass);\n }\n\n function toggleSelectedClass() {\n var selectedClass = options.selectedClass;\n var inView = slidesInView(true);\n var notInView = slidesNotInView(true);\n notInView.forEach(function (index) {\n return removeClass(slides[index], selectedClass);\n });\n inView.forEach(function (index) {\n return addClass(slides[index], selectedClass);\n });\n }\n\n function deActivate() {\n engine.dragHandler.removeAllEvents();\n engine.slideFocus.removeAllEvents();\n engine.animation.stop();\n eventStore.removeAll();\n engine.translate.clear();\n engine.slideLooper.clear();\n removeClass(sliderRoot, options.draggableClass);\n slides.forEach(function (slide) {\n return removeClass(slide, options.selectedClass);\n });\n events.off('select', toggleSelectedClass).off('pointerUp', toggleSelectedClass).off('pointerDown', toggleDraggingClass).off('pointerUp', toggleDraggingClass);\n }\n\n function reActivate(partialOptions) {\n if (!activated) return;\n var startIndex = selectedScrollSnap();\n\n var newOptions = _extends({\n startIndex: startIndex\n }, partialOptions);\n\n deActivate();\n activate(newOptions);\n events.emit('reInit');\n }\n\n function destroy() {\n if (!activated) return;\n deActivate();\n activated = false;\n events.emit('destroy');\n }\n\n function resize() {\n if (!activated) return;\n var size = engine.axis.measureSize(sliderRoot.getBoundingClientRect());\n if (rootNodeSize !== size) reActivate();\n events.emit('resize');\n }\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\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\n function scrollTo(index, jump, direction) {\n engine.scrollBody.useBaseMass().useSpeed(jump ? 100 : options.speed);\n if (activated) engine.scrollTo.index(index, direction || 0);\n }\n\n function scrollNext(jump) {\n var next = engine.index.clone().add(1);\n scrollTo(next.get(), jump === true, -1);\n }\n\n function scrollPrev(jump) {\n var prev = engine.index.clone().add(-1);\n scrollTo(prev.get(), jump === true, 1);\n }\n\n function canScrollNext() {\n var next = engine.index.clone().add(1);\n return next.get() !== selectedScrollSnap();\n }\n\n function canScrollPrev() {\n var prev = engine.index.clone().add(-1);\n return prev.get() !== selectedScrollSnap();\n }\n\n function scrollSnapList() {\n return engine.scrollSnaps.map(engine.scrollProgress.get);\n }\n\n function scrollProgress() {\n return engine.scrollProgress.get(engine.location.get());\n }\n\n function selectedScrollSnap() {\n return engine.index.get();\n }\n\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n\n function clickAllowed() {\n return engine.dragHandler.clickAllowed();\n }\n\n function dangerouslyGetEngine() {\n return engine;\n }\n\n function rootNode() {\n return sliderRoot;\n }\n\n function containerNode() {\n return container;\n }\n\n function slideNodes() {\n return slides;\n }\n\n var self = {\n canScrollNext: canScrollNext,\n canScrollPrev: canScrollPrev,\n clickAllowed: clickAllowed,\n containerNode: containerNode,\n dangerouslyGetEngine: dangerouslyGetEngine,\n destroy: destroy,\n off: off,\n on: on,\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 return self;\n}\n\nfunction useEmblaCarousel(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a = useState(),\n embla = _a[0],\n setEmbla = _a[1];\n\n var _b = useState(),\n viewport = _b[0],\n setViewport = _b[1];\n\n var storedOptions = useRef(options);\n var activeOptions = useMemo(function () {\n if (!areEqualShallow(storedOptions.current, options)) {\n storedOptions.current = options;\n }\n\n return storedOptions.current;\n }, [storedOptions, options]);\n useEffect(function () {\n if (canUseDOM() && viewport) {\n var newEmbla_1 = EmblaCarousel(viewport, activeOptions);\n setEmbla(newEmbla_1);\n return function () {\n return newEmbla_1.destroy();\n };\n } else {\n setEmbla(undefined);\n }\n }, [viewport, activeOptions, setEmbla]);\n return [setViewport, embla];\n}\n\nexport default useEmblaCarousel;","import React, {\n useState,\n useCallback,\n useEffect,\n forwardRef,\n useReducer,\n} from 'react'\nimport useEmblaCarousel from 'embla-carousel-react'\nimport styled from '@emotion/styled'\nimport { mediaQueries } from '../../theme'\nimport useMatchMedia from '../../hooks/use-media'\nimport { InMemoryStorage } from '../../utils/storage'\n\nconst CarouselViewport = styled.div`\n overflow: hidden;\n width: 100%;\n\n &.is-draggable {\n cursor: move;\n cursor: grab;\n }\n\n &.is-dragging {\n cursor: grabbing;\n }\n`\n\nconst CarouselContainer = styled.div`\n display: flex;\n user-select: none;\n`\n\nconst ThumbnailContainer = styled(CarouselContainer)`\n ${mediaQueries.lg} {\n flex-direction: column;\n }\n`\n\nexport const Thumbnails = forwardRef(({ children, ...rest }, ref) => (\n \n {children}\n \n))\n\nexport const Slides = forwardRef(({ children, ...rest }, ref) => (\n \n {children}\n \n))\n\nconst useCarouselSelect = (carousel, callback) => {\n useEffect(() => {\n const handleSelect = () => callback(carousel)\n if (carousel) carousel.on('select', handleSelect)\n return () => {\n if (carousel) carousel.off('select', handleSelect)\n }\n }, [carousel, callback])\n}\n\nconst loadState = storageKey => {\n const index = InMemoryStorage.getItem(storageKey, 0)\n return { selectedIndex: index, startIndex: index }\n}\n\nconst saveState = (storageKey, value) =>\n InMemoryStorage.setItem(storageKey, value)\n\nconst reducer = (state, [type, payload]) => {\n switch (type) {\n case 'select':\n return {\n ...state,\n selectedIndex: payload.index,\n }\n case 'changeMedia':\n return {\n ...state,\n startIndex: state.selectedIndex,\n }\n default:\n throw new Error()\n }\n}\n\nconst DEFAULT_DESKTOP_OPTIONS = {\n draggable: true,\n speed: 40,\n}\n\nconst DEFAULT_MOBILE_OPTIONS = {\n draggable: true,\n speed: 20,\n}\n\nexport const useCarousel = (storageKey, options = {}) => {\n const isMobile = !useMatchMedia(mediaQueries.lg)\n\n const [canScrollPrev, setCanScrollPrev] = useState(false)\n const [canScrollNext, setCanScrollNext] = useState(false)\n\n const [state, dispatch] = useReducer(reducer, storageKey, loadState)\n const { startIndex, selectedIndex } = state\n\n const [mainViewportRef, mainCarousel] = useEmblaCarousel({\n align: 'start',\n containScroll: 'trimSnaps',\n startIndex: startIndex,\n ...(isMobile\n ? { ...DEFAULT_MOBILE_OPTIONS, ...options.mobile }\n : { ...DEFAULT_DESKTOP_OPTIONS, ...options.desktop }),\n })\n const [thumbViewportRef, thumbCarousel] = useEmblaCarousel({\n align: 'start',\n startIndex: startIndex,\n })\n\n const handleSelect = useCallback(\n carousel => dispatch(['select', { index: carousel.selectedScrollSnap() }]),\n [],\n )\n\n const scrollPrev = () => mainCarousel && mainCarousel.scrollPrev()\n\n const scrollNext = () => mainCarousel && mainCarousel.scrollNext()\n\n useCarouselSelect(mainCarousel, handleSelect)\n useCarouselSelect(thumbCarousel, handleSelect)\n\n useEffect(() => {\n if (!mainCarousel) return\n\n const handleSelect = () => {\n setCanScrollPrev(mainCarousel.canScrollPrev())\n setCanScrollNext(mainCarousel.canScrollNext())\n }\n\n handleSelect()\n mainCarousel.on('reInit', handleSelect)\n mainCarousel.on('select', handleSelect)\n\n return () => {\n mainCarousel.off('reInit', handleSelect)\n mainCarousel.off('select', handleSelect)\n }\n }, [mainCarousel])\n\n useEffect(() => {\n saveState(storageKey, selectedIndex)\n }, [storageKey, selectedIndex])\n\n useEffect(() => {\n dispatch(['changeMedia', { isMobile }])\n }, [isMobile])\n\n useEffect(() => {\n if (mainCarousel) mainCarousel.scrollTo(selectedIndex)\n if (thumbCarousel) thumbCarousel.scrollTo(selectedIndex)\n }, [thumbCarousel, mainCarousel, selectedIndex])\n\n return {\n thumbnailsRef: isMobile ? thumbViewportRef : null,\n slidesRef: mainViewportRef,\n select: index => dispatch(['select', { index }]),\n selectedIndex,\n canScrollPrev,\n canScrollNext,\n scrollPrev,\n scrollNext,\n }\n}\n","import { useState, useEffect, useLayoutEffect } from 'react'\n\nconst isBrowser = typeof window !== 'undefined'\n\nconst createUseMedia = effect => rawQuery => {\n const query = rawQuery.replace(/@media\\s*/gi, '')\n\n const [state, setState] = useState(() =>\n isBrowser ? window.matchMedia(query).matches : false,\n )\n\n effect(() => {\n let mounted = true\n const mediaQueryList = window.matchMedia(query)\n\n const handleChange = () => {\n if (mounted) {\n setState(mediaQueryList.matches)\n }\n }\n\n mediaQueryList.addEventListener('change', handleChange)\n\n return () => {\n mounted = false\n mediaQueryList.removeEventListener('change', handleChange)\n }\n }, [query])\n\n return state\n}\n\nexport const useMedia = createUseMedia(useEffect)\nexport const useMediaLayout = createUseMedia(useLayoutEffect)\n\nexport default useMedia\n","import React from 'react'\n\nexport const slugify = value => value.toLowerCase().replace(/\\s+/g, '-')\n\nexport const withAttrs = (Component, attrs) => props =>\n \n\nexport function isInsideIframe() {\n try {\n return typeof window !== 'undefined' && window.self !== window.top\n } catch (e) {\n return true\n }\n}\n\nconst formatter = new Intl.NumberFormat('en-US', {\n style: 'decimal',\n})\n\nexport function formatNumber(value, sep = ' ') {\n return formatter\n .formatToParts(value)\n .filter(part => part.type === 'integer')\n .map(part => part.value)\n .join(sep)\n}\n\nexport const chunkArray = (array, size) =>\n array.reduce((acc, _, i) => {\n if (i % size === 0) acc.push(array.slice(i, i + size))\n return acc\n }, [])\n","const isBrowser = typeof window !== 'undefined'\n\nconst nullStorage = {\n getItem(_, defaultValue = null) {\n return defaultValue\n },\n setItem() {},\n}\n\nconst createStorage = storage => {\n if (!storage) return nullStorage\n\n return {\n getItem(key, defaultValue = null) {\n try {\n const item = key ? storage.getItem(key) : null\n return item ? JSON.parse(item) : defaultValue\n } catch (error) {\n console.log(error)\n return defaultValue\n }\n },\n setItem(key, value) {\n try {\n if (key) {\n storage.setItem(key, JSON.stringify(value))\n }\n } catch (error) {\n console.log(error)\n }\n },\n }\n}\n\nconst createInMemoryStorage = () => {\n const storage = new Map()\n return {\n getItem(key, defaultValue = null) {\n return storage.has(key) ? storage.get(key) : defaultValue\n },\n setItem(key, value) {\n storage.set(key, value)\n },\n }\n}\n\n//export const LocalStorage = createStorage(isBrowser && window.localStorage)\n\nexport const SessionStorage = createStorage(isBrowser && window.sessionStorage)\n\nexport const InMemoryStorage = createInMemoryStorage()\n"],"names":["_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","Alignment","align","viewSize","predefined","start","center","n","end","measure","Number","Limit","min","max","Math","abs","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","Counter","loop","_a","loopEnd","counter","withinLimit","get","set","self","add","clone","EventStore","listeners","node","type","handler","options","addEventListener","push","removeEventListener","removeAll","filter","remove","Vector1D","value","vector","divide","readNumber","multiply","normalize","subtract","mathSign","deltaAbs","valueB","valueA","groupArray","array","size","groups","slice","arrayKeys","keys","map","arrayLast","lastIndex","removeClass","className","cl","classList","contains","addClass","DragHandler","axis","direction","rootNode","dragFree","dragTracker","location","animation","scrollTo","scrollBody","scrollTarget","index","events","skipSnaps","scrollAxis","scroll","crossAxis","cross","focusNodes","startScroll","startCross","dragStartPoint","activationEvents","interactionEvents","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","pointerIsDown","preventScroll","preventClick","isMouse","down","evt","button","name","isMoving","clearPreventClick","isNotFocusNode","nodeName","indexOf","preventDefault","pointerDown","useBaseMass","useSpeed","document","move","up","addInteractionEvents","readPoint","emit","cancelable","moveScroll","moveCross","diffScroll","diffCross","diff","pointerMove","applyTo","targetChanged","byDistance","rawForce","pointerUp","force","next","isEdge","baseForce","distance","byIndex","allowedForce","forceFactor","factorAbs","isVigorous","isBelowThreshold","speed","mass","useMass","click","addActivationEvents","clickAllowed","removeAllEvents","ScrollBody","baseMass","decimalPoints","pow","roundToTwoDecimals","round","velocity","acceleration","attraction","attractionDirection","seek","v","iStart","oStart","magnitude","applyForce","settle","hasSettled","update","useBaseSpeed","ScrollBounds","limit","disabled","friction","diffToTarget","toggleActive","active","ScrollContain","contentSize","snaps","snapsAligned","containScroll","scrollBounds","snapsBounded","snapsContained","startSnap","endSnap","lastIndexOf","findDuplicates","measureContained","ScrollLooper","pxToPercent","vectors","shouldLoop","loopDistance","forEach","ScrollProgress","scrollLength","ScrollSnap","alignment","containerRect","slideRects","slidesToScroll","groupedSnaps","alignments","startEdge","endEdge","rect","snap","g","rects","ScrollTarget","scrollSnaps","targetVector","minDistance","d1","d2","shortcut","t1","t2","t3","shortest","scrollSnap","diffToSnap","sort","findTargetSnap","targetSnapDistance","reachedBound","SlideLooper","slideSizesWithGaps","slidesInView","scrollLocation","slides","gap","ascItems","descItems","reverse","loopPoints","findLoopPoints","slidesInGap","concat","endPoints","removeSlideSizes","indexes","from","reduce","a","edge","isStartEdge","offset","slideBounds","findSlideBounds","initial","altered","point","b","getTarget","canLoop","every","clear","style","loopPoint","SlideFocus","eventStore","lastTabPressTime","registerTabPress","event","keyCode","Date","getTime","addFocusEvent","slide","scrollLeft","selectedIndex","floor","Translate","container","containerStyle","translate","transform","to","Engine","root","viewInPx","contentDirection","startIndex","inViewThreshold","getBoundingClientRect","sign","Direction","measureSize","width","height","Axis","totalPercent","sizesInPx","slideSizes","isLast","window","getComputedStyle","endGap","parseFloat","getPropertyValue","SlideSizes","_b","ScrollLimit","indexPrevious","slideIndexes","callback","animationFrame","ifAnimating","cb","requestAnimationFrame","proceed","stop","cancelAnimationFrame","Animation","engine","dragHandler","settled","scrollLooper","slideLooper","startLocation","indexCurrent","distanceDiff","indexDiff","targetIndex","ScrollTo","threshold","thresholds","s","check","list","slideBound","SlidesInView","coords","x","y","startDrag","diffDrag","lastDrag","pointValue","trackPoints","lastMoveTime","touches","c","nowTime","diffTime","currentPoint","trackPoint","p1","p2","DragTracker","scrollProgress","slideFocus","defaultOptions","draggable","draggableClass","draggingClass","selectedClass","EmblaCarousel","sliderRoot","userOptions","time","timeout","optionsPseudo","getListeners","e","off","on","EventEmitter","debouncedResize","activated","rootNodeSize","reActivate","clearTimeout","setTimeout","reInit","optionsBase","setupElements","Error","pseudoString","sliderContainer","querySelector","Array","children","content","JSON","parse","replace","error","activate","partialOptions","deActivate","offsetParent","toggleDraggingClass","toggleSelectedClass","inView","slidesNotInView","newOptions","selectedScrollSnap","jump","canScrollNext","canScrollPrev","containerNode","dangerouslyGetEngine","destroy","previousScrollSnap","scrollNext","scrollPrev","scrollSnapList","slideNodes","useState","embla","setEmbla","viewport","setViewport","storedOptions","useRef","activeOptions","useMemo","objectA","objectB","current","objectKey","useEffect","createElement","newEmbla_1","undefined","CarouselViewport","CarouselContainer","ThumbnailContainer","mediaQueries","Thumbnails","forwardRef","ref","rest","Slides","useCarouselSelect","carousel","handleSelect","loadState","storageKey","InMemoryStorage","reducer","state","payload","DEFAULT_DESKTOP_OPTIONS","DEFAULT_MOBILE_OPTIONS","useCarousel","isMobile","useMatchMedia","setCanScrollPrev","setCanScrollNext","useReducer","dispatch","useEmblaCarousel","mobile","desktop","mainViewportRef","mainCarousel","thumbViewportRef","thumbCarousel","useCallback","saveState","thumbnailsRef","slidesRef","select","isBrowser","createUseMedia","effect","rawQuery","query","matchMedia","matches","setState","mounted","mediaQueryList","handleChange","useMedia","useLayoutEffect","slugify","toLowerCase","withAttrs","Component","attrs","props","isInsideIframe","top","formatter","Intl","NumberFormat","formatNumber","sep","formatToParts","part","join","chunkArray","acc","_","storage","nullStorage","getItem","defaultValue","setItem","sessionStorage","Map","has","createInMemoryStorage"],"sourceRoot":""}