one-north-cla 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/assets/carrot-left.svg?react","../src/assets/carrot-right.svg?react","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils/cn.ts","../src/lib/utils/hasSufficientContrast.ts","../src/lib/utils/shareLink.ts","../src/components/vendor/carousel.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/vendor/popover.tsx","../src/assets/bookmark-empty.svg?react","../src/assets/bookmark-fill.svg?react","../src/components/composites/ContentCarouselMultiple/ContentCarouselMultipleCard.tsx","../src/components/composites/ContentCarouselMultiple/ContentCarouselMultiple.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/Background.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/EventContent.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/Header.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/InsightContent.tsx","../src/assets/fax.svg?react","../src/assets/phone.svg?react","../src/components/composites/ContentPrimaryFeatureDetail/components/PersonContent.tsx","../src/assets/share.svg?react","../src/components/composites/ContentPrimaryFeatureDetail/components/ShareOptions.tsx","../src/components/composites/ContentPrimaryFeatureDetail/ContentPrimaryFeatureDetail.tsx","../node_modules/@vimeo/player/dist/player.es.js","../node_modules/sister/src/sister.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/youtube-player/dist/constants/PlayerStates.js","../node_modules/youtube-player/dist/FunctionStateMap.js","../node_modules/youtube-player/dist/eventNames.js","../node_modules/youtube-player/dist/functionNames.js","../node_modules/youtube-player/dist/YouTubePlayer.js","../node_modules/load-script/index.js","../node_modules/youtube-player/dist/loadYouTubeIframeApi.js","../node_modules/youtube-player/dist/index.js","../src/lib/hooks/useVideoPlayer.ts","../src/components/foundations/BackgroundVideo/VideoBackground.tsx","../node_modules/@radix-ui/react-slot/dist/index.mjs","../src/assets/star.svg?react","../src/components/foundations/Button/Button.tsx","../src/assets/copy.svg?react","../src/assets/email.svg?react","../src/assets/facebook.svg?react","../src/assets/instagram.svg?react","../src/assets/linkedin.svg?react","../src/assets/x.svg?react","../src/assets/youtube.svg?react","../src/components/foundations/ButtonSocial/ButtonSocial.tsx","../src/components/foundations/PageMargins/PageMargin.tsx","../src/assets/pause.svg?react","../src/assets/play.svg?react","../src/components/foundations/PlayButton/PlayButton.tsx","../src/components/foundations/Share/Share.tsx","../src/components/foundations/TextCta/TextCta.tsx"],"sourcesContent":["function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","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 roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\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 fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 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 (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\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 scrollVelocity = 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() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\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 scrollVelocity;\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 previousTarget = null;\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 const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\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 }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\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.offsetLocation.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","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import * as React from \"react\";\nconst SvgCarrotLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 28, height: 28, viewBox: \"0 0 28 28\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.5861 14L24.7656 7L17.5861 0L3.22717 14L17.5861 28L24.7656 21L17.5861 14Z\", fill: \"currentColor\" }));\nexport default SvgCarrotLeft;\n","import * as React from \"react\";\nconst SvgCarrotRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 28, height: 28, viewBox: \"0 0 28 28\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.4139 14L3.23438 7L10.4139 0L24.7728 14L10.4139 28L3.23438 21L10.4139 14Z\", fill: \"currentColor\" }));\nexport default SvgCarrotRight;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport type { ClassValue } from \"clsx\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export interface TailwindColor {\n className: string;\n type: \"text\" | \"background\";\n}\n\nfunction tailwindColorToRgb(tailwindColor: TailwindColor): string {\n const { className, type } = tailwindColor;\n const el = document.createElement(\"div\");\n el.className = className;\n\n // Must be in the DOM for styles to compute\n el.style.display = \"none\";\n document.body.appendChild(el);\n\n let color = getComputedStyle(el).backgroundColor;\n if (type === \"text\") color = getComputedStyle(el).color;\n\n document.body.removeChild(el);\n\n return color;\n}\n\nfunction parseRgb(color: string): [number, number, number] {\n // Handles rgb() / rgba()\n const match = color.match(/\\d+/g);\n if (!match || match.length < 3) {\n throw new Error(`Unsupported color format: ${color}`);\n }\n\n return [parseInt(match[0], 10), parseInt(match[1], 10), parseInt(match[2], 10)];\n}\n\nfunction relativeLuminance([r, g, b]: number[]): number {\n const toLinear = (c: number) => {\n const v = c / 255;\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n };\n\n const R = toLinear(r);\n const G = toLinear(g);\n const B = toLinear(b);\n\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n}\n\nexport function hasSufficientContrast(\n twBackgroundColor: TailwindColor,\n twForegroundColor: TailwindColor,\n ratio = 4.5,\n): boolean {\n const backgroundColor = tailwindColorToRgb(twBackgroundColor);\n const foregroundColor = tailwindColorToRgb(twForegroundColor);\n\n const bgRgb = parseRgb(backgroundColor);\n const fgRgb = parseRgb(foregroundColor);\n\n const L1 = relativeLuminance(bgRgb);\n const L2 = relativeLuminance(fgRgb);\n\n const lighter = Math.max(L1, L2);\n const darker = Math.min(L1, L2);\n\n const contrastRatio = (lighter + 0.05) / (darker + 0.05);\n\n return contrastRatio >= ratio;\n}\n","export function copyLink() {\n const text = window.location.href;\n return navigator.clipboard.writeText(text);\n}\n\nexport function emailLink(subject?: string, body?: string) {\n const pageTitle = subject || document.title;\n let emailBody = body || \"\";\n const metaDescription = document.querySelector('meta[name=\"description\"]');\n\n if (!body && metaDescription) {\n emailBody = metaDescription.getAttribute(\"content\") || \"\";\n }\n\n window.location.href =\n `mailto:?subject=${encodeURIComponent(pageTitle)}&body=` +\n encodeURIComponent(`${emailBody}\\n\\n${window.location.href}`);\n}\n\nexport function shareOnFacebook() {\n const url = encodeURIComponent(window.location.href);\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${url}`, \"_blank\");\n}\n\nexport function shareOnX(text?: string) {\n const url = encodeURIComponent(window.location.href);\n const tweetText = encodeURIComponent(text || document.title);\n\n window.open(`https://twitter.com/intent/tweet?url=${url}&text=${tweetText}`, \"_blank\");\n}\n\nexport function shareOnLinkedIn() {\n const url = encodeURIComponent(window.location.href);\n\n window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${url}`, \"_blank\");\n}\n","import useEmblaCarousel from \"embla-carousel-react\";\nimport * as React from \"react\";\n\nimport Left from \"@/assets/carrot-left.svg?react\";\nimport Right from \"@/assets/carrot-right.svg?react\";\nimport { Button } from \"@/components\";\nimport { cn } from \"@/lib/utils\";\n\nimport type { UseEmblaCarouselType } from \"embla-carousel-react\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div className={cn(\"flex\", className)} {...props} />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({ className, variant, ...props }: React.ComponentProps<typeof Button>) {\n const { scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button className={className} data-slot=\"carousel-previous\" variant={variant} {...props}>\n <button disabled={!canScrollPrev} onClick={scrollPrev}>\n <Left />\n <span className=\"sr-only\">Previous slide</span>\n </button>\n </Button>\n );\n}\n\nfunction CarouselNext({ className, variant, ...props }: React.ComponentProps<typeof Button>) {\n const { scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button className={className} data-slot=\"carousel-next\" variant={variant} {...props}>\n <button disabled={!canScrollNext} onClick={scrollNext}>\n <Right />\n <span className=\"sr-only\">Next slide</span>\n </button>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n};\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-popover-in data-[state=closed]:animate-popover-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-lg p-4 outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nfunction PopoverArrow({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Arrow>) {\n return <PopoverPrimitive.Arrow data-slot=\"popover-arrow\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow };\n","import * as React from \"react\";\nconst SvgBookmarkEmpty = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.9259 6.49832C15.9259 6.40367 15.8883 6.31291 15.8214 6.24598C15.7544 6.17905 15.6637 6.14142 15.569 6.14142H8.43097C8.33631 6.14142 8.24556 6.17905 8.17863 6.24598C8.1117 6.31291 8.07407 6.40367 8.07407 6.49832V15.8385L12 13.0341L15.9259 15.8385V6.49832ZM18.0674 20L12 15.6656L5.93265 20V6.49832C5.93265 5.83573 6.19605 5.20046 6.66458 4.73193C7.1331 4.2634 7.76837 4 8.43097 4H15.569C16.2316 4 16.8669 4.2634 17.3354 4.73193C17.804 5.20046 18.0674 5.83573 18.0674 6.49832V20Z\", fill: \"white\" }));\nexport default SvgBookmarkEmpty;\n","import * as React from \"react\";\nconst SvgBookmarkFill = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.5694 4C16.2319 4.00002 16.8675 4.26302 17.336 4.73145C17.8044 5.19991 18.0673 5.83555 18.0674 6.49805V20L12 15.666L5.93265 20V6.49805C5.93272 5.83555 6.1966 5.19991 6.66507 4.73145C7.13348 4.2633 7.76843 4.00009 8.43069 4H15.5694Z\", fill: \"white\" }));\nexport default SvgBookmarkFill;\n","import BookmarkEmpty from \"@/assets/bookmark-empty.svg?react\";\nimport BookmarkFill from \"@/assets/bookmark-fill.svg?react\";\nimport { Button } from \"@/components\";\n\nimport type { ContentCarouselMultipleCardProps } from \"@/components\";\n\nexport function ContentCarouselMultipleCard({\n button,\n headline,\n id,\n image,\n isBookmarked,\n onBookmark,\n}: ContentCarouselMultipleCardProps) {\n return (\n <div className=\"relative size-full\">\n <div className=\"absolute bg-black/50 size-full\"></div>\n <div className=\"absolute size-full [&_img]:object-cover [&_img]:size-full mix-blend-multiply\">\n {image}\n </div>\n <div className=\"absolute bottom-6 left-0 px-6 w-full\">\n <div className=\"b-lg mb-6 text-white\">{headline}</div>\n <div className=\"flex gap-6 items-center justify-between\">\n <Button variant=\"tertiary-reversed\">{button}</Button>\n <button onClick={() => onBookmark(id)}>\n {isBookmarked ? <BookmarkFill /> : <BookmarkEmpty />}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { Children, isValidElement, cloneElement } from \"react\";\n\nimport { Button, PageMargins } from \"@/components\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n} from \"@/components/vendor\";\nimport { hasSufficientContrast } from \"@/lib/utils\";\n\nimport { ContentCarouselMultipleCard } from \"./ContentCarouselMultipleCard\";\n\nimport type { ButtonVariant } from \"@/components\";\nimport type { ContentCarouselMultipleCardProps, ContentCarouselMultipleProps } from \"@/components\";\n\nexport function ContentCarouselMultipleItem(props: ContentCarouselMultipleCardProps) {\n const base = \"h-70 min-[552px]:h-80 basis-60 min-[552px]:basis-[calc(50%-20px)]\";\n\n let cardClasses: string;\n\n if (props.count === 1) {\n cardClasses = \"basis-full h-80\";\n } else if (props.count === 2) {\n cardClasses = base;\n } else {\n // Total gap per slide divided by number of columns gives the amount to subtract from each basis\n // Amount to subtract per basis is divided by 2 for the first item since it occupies double the space\n cardClasses = [\n base,\n props.index === 0\n ? \"lg:basis-[calc(66.66%-13.33px)] xl:basis-[calc(50%-15px)]\"\n : \"lg:basis-[calc(33.33%-26.66px)] xl:basis-[calc(25%-30px)]\",\n ].join(\" \");\n }\n\n return (\n <CarouselItem className={cardClasses}>\n <ContentCarouselMultipleCard {...props} />\n </CarouselItem>\n );\n}\n\nexport function ContentCarouselMultiple({\n backgroundColor = \"\",\n button,\n children,\n className = \"\",\n horizontalStroke,\n variant,\n}: ContentCarouselMultipleProps) {\n const count = Children.count(children);\n\n let carouselNavigationClasses = \"\";\n let carouselNavigationContainerClasses = \"\";\n\n if (count === 1) {\n carouselNavigationClasses = \"hidden\";\n carouselNavigationContainerClasses = \"justify-end\";\n } else if (count === 2) {\n carouselNavigationClasses = \"md:hidden\";\n carouselNavigationContainerClasses = \"md:justify-end\";\n }\n\n const needsReversed = Boolean(\n backgroundColor &&\n !hasSufficientContrast(\n { className: backgroundColor, type: \"background\" },\n { className: \"bg-navy-500\", type: \"background\" },\n ),\n );\n\n let buttonVariant: ButtonVariant;\n let nextVariant: ButtonVariant;\n let previousVariant: ButtonVariant;\n\n if (!needsReversed) {\n buttonVariant = \"secondary\";\n nextVariant = \"pagination-next-connect\";\n previousVariant = \"pagination-prev-connect\";\n } else if (variant === \"digital\") {\n buttonVariant = \"reversed-digital\";\n nextVariant = \"pagination-reversed-digital\";\n previousVariant = \"pagination-reversed-digital\";\n } else {\n buttonVariant = \"reversed-connect\";\n nextVariant = \"pagination-reversed-connect\";\n previousVariant = \"pagination-reversed-connect\";\n }\n\n return (\n <div\n className={`py-15 lg:py-20 ${backgroundColor} ${className} ${horizontalStroke ? \"border-b-2 border-smoke\" : \"\"}`}\n >\n <PageMargins>\n <Carousel opts={{ align: \"start\" }}>\n <CarouselContent className=\"gap-8 md:gap-10\">\n {Children.map(children, (child, index) => {\n if (!isValidElement<ContentCarouselMultipleCardProps>(child)) return child;\n\n return cloneElement(child, {\n count,\n index,\n });\n })}\n </CarouselContent>\n <div\n className={`flex items-center justify-between mt-8 ${carouselNavigationContainerClasses}`}\n >\n <div className={carouselNavigationClasses}>\n <CarouselPrevious variant={previousVariant} />\n <CarouselNext variant={nextVariant} />\n </div>\n <Button variant={buttonVariant}>{button}</Button>\n </div>\n </Carousel>\n </PageMargins>\n </div>\n );\n}\n","import { useRef, useState } from \"react\";\n\nimport { PageMargins, PlayButton, VideoBackground, type VideoBackgroundHandle } from \"@/components\";\n\nimport type { PlayButtonVariant, VideoBackgroundProps } from \"@/components\";\nimport type { PageVariant } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function Background({\n imageBackground,\n variant,\n videoBackground,\n}: {\n imageBackground?: ReactNode;\n variant?: PageVariant;\n videoBackground?: VideoBackgroundProps;\n}) {\n const [isPlaying, setIsPlaying] = useState(videoBackground?.autoplay ?? false);\n\n const videoBackgroundRef = useRef<VideoBackgroundHandle>(null);\n\n const playButtonVariant: PlayButtonVariant =\n variant === \"connect\" ? \"mini-connect\" : \"mini-digital\";\n\n const handlePlay = () => {\n if (!videoBackgroundRef.current) return;\n videoBackgroundRef.current.togglePlayback();\n setIsPlaying(!videoBackgroundRef.current.isPlaying);\n };\n\n return (\n <div className=\"min-h-85 overflow-hidden relative w-full\">\n {Boolean(imageBackground) && (\n <div className=\"h-85 [&_img]:object-cover [&_img]:size-full\">{imageBackground}</div>\n )}\n {Boolean(videoBackground) && (\n <>\n <VideoBackground {...videoBackground} ref={videoBackgroundRef} />\n <div className=\"absolute inset-0 flex justify-center\">\n <PageMargins>\n <div className=\"absolute bottom-8 right-5 md:right-15\">\n <PlayButton\n label=\"play video\"\n onClick={handlePlay}\n isPlaying={isPlaying}\n variant={playButtonVariant}\n />\n </div>\n </PageMargins>\n </div>\n </>\n )}\n </div>\n );\n}\n","import type { Event } from \"@/lib/types.ts\";\n\nexport function EventContent({ event }: { event?: Event }) {\n return (\n <>\n {Boolean(event) && (\n <div className=\"flex gap-2 items-center mb-6\">\n {event?.date}\n {Boolean(event?.location) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {event?.location}\n </>\n )}\n </div>\n )}\n </>\n );\n}\n","import type { Person } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function Header({\n category,\n copy,\n headline,\n person,\n}: {\n category: string;\n copy?: ReactNode;\n headline?: ReactNode;\n person?: Person;\n}) {\n return (\n <>\n {person ? (\n <div className=\"flex gap-10 grow items-center mb-6 xl:mb-0\">\n {Boolean(person?.image) && <img {...person.image} className=\"rounded-full size-30\" />}\n <div className=\"flex flex-col gap-6\">\n <div className=\"b-lg uppercase\">{person.title}</div>\n <div className=\"font-bold leading-[116.667%] text-5xl lg:text-8xl\">\n {person.firstName} {person.lastName}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-6 grow mb-6 xl:mb-0\">\n <div className=\"b-lg uppercase\">{category}</div>\n <div className=\"font-bold leading-[116.667%] [&_h1]:leading-[115.385%] text-5xl lg:text-8xl [&_h1]:lg:text-9xl\">\n {headline}\n </div>\n {Boolean(copy) && <div className=\"b-base\">{copy}</div>}\n </div>\n )}\n </>\n );\n}\n","import type { Insight } from \"@/lib/types.ts\";\n\nexport function InsightContent({ insight }: { insight?: Insight }) {\n return (\n <>\n {Boolean(insight) && (\n <div className=\"flex flex-col gap-1 mb-6\">\n <div className=\"flex gap-2 items-center\">\n {insight?.date}\n {Boolean(insight?.timeToRead) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {insight?.timeToRead}\n </>\n )}\n </div>\n {Boolean(insight?.authorOne) && (\n <div className=\"flex gap-2 items-center\">\n {insight?.authorOne}\n {Boolean(insight?.authorTwo) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {insight?.authorTwo}\n </>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","import * as React from \"react\";\nconst SvgFax = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_129_64910)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.08105 0.225098C6.15724 0.225098 7.03393 1.30122 7.03418 2.17725V17.8218C7.03418 18.8981 6.15739 19.7749 5.08105 19.7749H1.95215C0.875979 19.7747 0 18.6978 0 17.8218V2.17725C0.00020319 1.1012 0.876104 0.225301 1.95215 0.225098H5.08105ZM20 2.57861V17.4468H7.88477V2.57861H20ZM9.8125 13.3169V15.2437H11.7393V13.3169H9.8125ZM12.9658 13.3169V15.2437H14.8936V13.3169H12.9658ZM16.1455 13.3169V15.2437H18.0723V13.3169H16.1455ZM9.8125 10.563V12.4907H11.7393V10.563H9.8125ZM12.9658 10.563V12.4907H14.8936V10.563H12.9658ZM16.1455 10.563V12.4907H18.0723V10.563H16.1455ZM9.83691 4.73096V8.86084H18.0723V4.73096H9.83691Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_129_64910\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgFax;\n","import * as React from \"react\";\nconst SvgPhone = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_32_9938)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19.9796 14.9738V17.9846C19.9807 18.2642 19.9234 18.5408 19.8115 18.7969C19.6995 19.053 19.5353 19.2829 19.3293 19.4719C19.1233 19.6608 18.8802 19.8047 18.6154 19.8942C18.3506 19.9838 18.0701 20.017 17.7917 19.9919C14.7035 19.6563 11.737 18.601 9.13062 16.9108C6.70575 15.3699 4.64988 13.3141 3.10901 10.8892C1.4129 8.27099 0.357377 5.29008 0.0279519 2.18795C0.00287233 1.91042 0.0358551 1.63071 0.1248 1.36663C0.213745 1.10254 0.356703 0.859872 0.544572 0.654066C0.732442 0.448259 0.961106 0.283825 1.21601 0.171234C1.47091 0.058642 1.74646 0.000359723 2.02512 9.73016e-05H5.03593C5.52298 -0.00469635 5.99516 0.167778 6.36446 0.485372C6.73375 0.802966 6.97496 1.24401 7.04313 1.72629C7.17021 2.68982 7.40588 3.63587 7.74565 4.54641C7.88068 4.90563 7.90991 5.29602 7.82986 5.67133C7.74982 6.04665 7.56386 6.39115 7.29403 6.66402L6.01946 7.93859C7.44814 10.4512 9.52851 12.5315 12.0411 13.9602L13.3156 12.6856C13.5885 12.4158 13.933 12.2298 14.3083 12.1498C14.6836 12.0698 15.074 12.099 15.4332 12.234C16.3438 12.5738 17.2898 12.8095 18.2534 12.9365C18.7409 13.0053 19.1861 13.2509 19.5044 13.6265C19.8227 14.0021 19.9918 14.4817 19.9796 14.9738Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_32_9938\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgPhone;\n","import Fax from \"@/assets/fax.svg?react\";\nimport Phone from \"@/assets/phone.svg?react\";\nimport { ButtonSocial, TextCta, type TextCtaVariant } from \"@/components\";\n\nimport type { Person } from \"@/lib/types.ts\";\n\nexport function PersonContent({\n person,\n textColor,\n textCtaVariant,\n}: {\n person?: Person;\n textColor: \"text-white!\" | \"\";\n textCtaVariant: TextCtaVariant;\n}) {\n return (\n <>\n {Boolean(person) && (\n <div className=\"flex flex-col gap-1 mb-6\">\n {Boolean(person?.linkedInUrl || person?.location) && (\n <div className=\"flex gap-2 items-center\">\n {Boolean(person?.linkedInUrl) && (\n <ButtonSocial\n href={person?.linkedInUrl}\n socialPlatform=\"linkedin\"\n variant={textCtaVariant}\n />\n )}\n {Boolean(person?.linkedInUrl && person?.location) && (\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n )}\n {Boolean(person?.location) && (\n <span className={`b-base text-charcoal-800 ${textColor}`}>{person?.location}</span>\n )}\n </div>\n )}\n {Boolean(person?.phone || person?.fax) && (\n <div className=\"b-base flex gap-2 items-center text-navy-500\">\n {Boolean(person?.phone) && (\n <TextCta className=\"b-base font-bold\" variant={textCtaVariant}>\n <a href={person?.phone}>\n <Phone className=\"size-4\" />\n {person?.phone}\n </a>\n </TextCta>\n )}\n {Boolean(person?.phone && person?.fax) && (\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n )}\n {Boolean(person?.fax) && (\n <TextCta className=\"b-base font-bold\" variant={textCtaVariant}>\n <a href={person?.fax}>\n <Fax className=\"size-4\" />\n {person?.fax}\n </a>\n </TextCta>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","import * as React from \"react\";\nconst SvgShare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.5498 16.6999V9.49968H4.0498V16.6999C4.04986 16.8457 4.10784 16.9855 4.21094 17.0886C4.31404 17.1916 4.45381 17.2496 4.59961 17.2497H15.3994C15.5453 17.2497 15.6859 17.1917 15.7891 17.0886C15.892 16.9855 15.9501 16.8456 15.9502 16.6999V9.49968H18.4502V16.6999C18.4501 17.5086 18.1285 18.2842 17.5566 18.8561C16.9847 19.4281 16.2083 19.7497 15.3994 19.7497H4.59961C3.79077 19.7496 3.0153 19.4281 2.44336 18.8561C1.87142 18.2842 1.54986 17.5087 1.5498 16.6999Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.11523 0.616336C9.60332 0.128246 10.3946 0.128376 10.8828 0.616336L14.4834 4.21595L12.7158 5.98352L11.25 4.5177V13.2003H8.75V4.51575L7.2832 5.98352L5.51562 4.21595L9.11523 0.616336Z\", fill: \"currentColor\" }));\nexport default SvgShare;\n","import ShareIcon from \"@/assets/share.svg?react\";\nimport { PageMargins, Share, TextCta } from \"@/components\";\n\nimport type { TextCtaVariant } from \"@/components\";\nimport type { PageVariant } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function ShareOptions({\n contactCta,\n hasShareOptions,\n printCta,\n textCtaVariant,\n variant,\n}: {\n contactCta?: ReactNode;\n hasShareOptions?: boolean;\n printCta?: ReactNode;\n textCtaVariant: TextCtaVariant;\n variant: PageVariant;\n}) {\n return (\n <PageMargins className=\"flex gap-4 items-center justify-end py-5\">\n {hasShareOptions && (\n <Share\n trigger={\n <TextCta asChild className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n <button>\n <ShareIcon className=\"size-4\" />\n Share\n </button>\n </TextCta>\n }\n variant={variant}\n />\n )}\n {Boolean(contactCta) && (\n <TextCta className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n {contactCta}\n </TextCta>\n )}\n {Boolean(printCta) && (\n <TextCta className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n {printCta}\n </TextCta>\n )}\n </PageMargins>\n );\n}\n","import { Button, PageMargins } from \"@/components\";\n\nimport {\n Background,\n EventContent,\n Header,\n InsightContent,\n PersonContent,\n ShareOptions,\n} from \"./components\";\n\nimport type { ButtonVariant, ContentPrimaryFeatureDetailProps, TextCtaVariant } from \"@/components\";\n\nexport function ContentPrimaryFeatureDetail({\n button,\n category,\n className,\n contactCta,\n copy,\n event,\n hasShareOptions,\n headline,\n horizontalStroke,\n imageBackground,\n insight,\n person,\n printCta,\n variant = \"connect\",\n videoBackground,\n}: ContentPrimaryFeatureDetailProps) {\n const buttonVariant: ButtonVariant = variant === \"connect\" ? \"primary\" : \"primary-digital\";\n const textCtaVariant: TextCtaVariant = variant === \"connect\" ? \"basic\" : \"digital\";\n const textColor = variant === \"digital\" ? \"text-white!\" : \"\";\n\n if (variant === \"digital\" && !videoBackground && !imageBackground) {\n return null;\n }\n\n return (\n <div\n className={`${className} ${textColor} ${horizontalStroke ? \"border-b-2 border-smoke\" : \"\"}`}\n >\n <PageMargins className=\"flex flex-col xl:flex-row xl:gap-40 xl:items-center mb-12\">\n <Header category={category} copy={copy} headline={headline} person={person} />\n <div className=\"border-t-2 border-charcoal-100 max-w-76 min-w-76 pt-6\">\n <EventContent event={event} />\n <InsightContent insight={insight} />\n <PersonContent person={person} textColor={textColor} textCtaVariant={textCtaVariant} />\n <Button variant={buttonVariant}>{button}</Button>\n </div>\n </PageMargins>\n <Background\n imageBackground={imageBackground}\n variant={variant}\n videoBackground={videoBackground}\n />\n <ShareOptions\n contactCta={contactCta}\n hasShareOptions={hasShareOptions}\n printCta={printCta}\n textCtaVariant={textCtaVariant}\n variant={variant}\n />\n </div>\n );\n}\n","/*! @vimeo/player v2.30.1 | (c) 2025 Vimeo | MIT License | https://github.com/vimeo/player.js */\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\n/**\n * @module lib/functions\n */\n\n/**\n * Check to see this is a Node environment.\n * @type {boolean}\n */\n/* global global */\nvar isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';\n\n/**\n * Check to see if this is a Bun environment.\n * @see https://bun.sh/guides/util/detect-bun\n * @type {boolean}\n */\nvar isBun = typeof Bun !== 'undefined';\n\n/**\n * Check to see if this is a Deno environment.\n * @see https://docs.deno.com/api/deno/~/Deno\n * @type {boolean}\n */\nvar isDeno = typeof Deno !== 'undefined';\n\n/**\n * Check if this is a server runtime\n * @type {boolean}\n */\nvar isServerRuntime = isNode || isBun || isDeno;\n\n/**\n * Get the name of the method for a given getter or setter.\n *\n * @param {string} prop The name of the property.\n * @param {string} type Either “get” or “set”.\n * @return {string}\n */\nfunction getMethodName(prop, type) {\n if (prop.indexOf(type.toLowerCase()) === 0) {\n return prop;\n }\n return \"\".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));\n}\n\n/**\n * Check to see if the object is a DOM Element.\n *\n * @param {*} element The object to check.\n * @return {boolean}\n */\nfunction isDomElement(element) {\n return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);\n}\n\n/**\n * Check to see whether the value is a number.\n *\n * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html\n * @param {*} value The value to check.\n * @param {boolean} integer Check if the value is an integer.\n * @return {boolean}\n */\nfunction isInteger(value) {\n // eslint-disable-next-line eqeqeq\n return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;\n}\n\n/**\n * Check to see if the URL is a Vimeo url.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoUrl(url) {\n return /^(https?:)?\\/\\/((((player|www)\\.)?vimeo\\.com)|((player\\.)?[a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))(?=$|\\/)/.test(url);\n}\n\n/**\n * Check to see if the URL is for a Vimeo embed.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoEmbed(url) {\n var expr = /^https:\\/\\/player\\.((vimeo\\.com)|([a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))\\/video\\/\\d+/;\n return expr.test(url);\n}\nfunction getOembedDomain(url) {\n var match = (url || '').match(/^(?:https?:)?(?:\\/\\/)?([^/?]+)/);\n var domain = (match && match[1] || '').replace('player.', '');\n var customDomains = ['.videoji.hk', '.vimeo.work', '.videoji.cn'];\n for (var _i = 0, _customDomains = customDomains; _i < _customDomains.length; _i++) {\n var customDomain = _customDomains[_i];\n if (domain.endsWith(customDomain)) {\n return domain;\n }\n }\n return 'vimeo.com';\n}\n\n/**\n * Get the Vimeo URL from an element.\n * The element must have either a data-vimeo-id or data-vimeo-url attribute.\n *\n * @param {object} oEmbedParameters The oEmbed parameters.\n * @return {string}\n */\nfunction getVimeoUrl() {\n var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var id = oEmbedParameters.id;\n var url = oEmbedParameters.url;\n var idOrUrl = id || url;\n if (!idOrUrl) {\n throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');\n }\n if (isInteger(idOrUrl)) {\n return \"https://vimeo.com/\".concat(idOrUrl);\n }\n if (isVimeoUrl(idOrUrl)) {\n return idOrUrl.replace('http:', 'https:');\n }\n if (id) {\n throw new TypeError(\"\\u201C\".concat(id, \"\\u201D is not a valid video id.\"));\n }\n throw new TypeError(\"\\u201C\".concat(idOrUrl, \"\\u201D is not a vimeo.com url.\"));\n}\n\n/* eslint-disable max-params */\n/**\n * A utility method for attaching and detaching event handlers\n *\n * @param {EventTarget} target\n * @param {string | string[]} eventName\n * @param {function} callback\n * @param {'addEventListener' | 'on'} onName\n * @param {'removeEventListener' | 'off'} offName\n * @return {{cancel: (function(): void)}}\n */\nvar subscribe = function subscribe(target, eventName, callback) {\n var onName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'addEventListener';\n var offName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'removeEventListener';\n var eventNames = typeof eventName === 'string' ? [eventName] : eventName;\n eventNames.forEach(function (evName) {\n target[onName](evName, callback);\n });\n return {\n cancel: function cancel() {\n return eventNames.forEach(function (evName) {\n return target[offName](evName, callback);\n });\n }\n };\n};\n\n/**\n * Find the iframe element that contains a specific source window\n *\n * @param {Window} sourceWindow The source window to find the iframe for\n * @param {Document} [doc=document] The document to search within\n * @return {HTMLIFrameElement|null} The iframe element if found, otherwise null\n */\nfunction findIframeBySourceWindow(sourceWindow) {\n var doc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;\n if (!sourceWindow || !doc || typeof doc.querySelectorAll !== 'function') {\n return null;\n }\n var iframes = doc.querySelectorAll('iframe');\n for (var i = 0; i < iframes.length; i++) {\n if (iframes[i] && iframes[i].contentWindow === sourceWindow) {\n return iframes[i];\n }\n }\n return null;\n}\n\nvar arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';\nvar postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';\nif (!isServerRuntime && (!arrayIndexOfSupport || !postMessageSupport)) {\n throw new Error('Sorry, the Vimeo Player API is not available in this browser.');\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*!\n * weakmap-polyfill v2.0.4 - ECMAScript6 WeakMap polyfill\n * https://github.com/polygonplanet/weakmap-polyfill\n * Copyright (c) 2015-2021 polygonplanet <polygon.planet.aqua@gmail.com>\n * @license MIT\n */\n\n(function (self) {\n\n if (self.WeakMap) {\n return;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var hasDefine = Object.defineProperty && function () {\n try {\n // Avoid IE8's broken Object.defineProperty\n return Object.defineProperty({}, 'x', {\n value: 1\n }).x === 1;\n } catch (e) {}\n }();\n var defineProperty = function (object, name, value) {\n if (hasDefine) {\n Object.defineProperty(object, name, {\n configurable: true,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n self.WeakMap = function () {\n // ECMA-262 23.3 WeakMap Objects\n function WeakMap() {\n if (this === void 0) {\n throw new TypeError(\"Constructor WeakMap requires 'new'\");\n }\n defineProperty(this, '_id', genId('_WeakMap'));\n\n // ECMA-262 23.3.1.1 WeakMap([iterable])\n if (arguments.length > 0) {\n // Currently, WeakMap `iterable` argument is not supported\n throw new TypeError('WeakMap iterable is not supported');\n }\n }\n\n // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)\n defineProperty(WeakMap.prototype, 'delete', function (key) {\n checkInstance(this, 'delete');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n delete key[this._id];\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)\n defineProperty(WeakMap.prototype, 'get', function (key) {\n checkInstance(this, 'get');\n if (!isObject(key)) {\n return void 0;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return entry[1];\n }\n return void 0;\n });\n\n // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)\n defineProperty(WeakMap.prototype, 'has', function (key) {\n checkInstance(this, 'has');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)\n defineProperty(WeakMap.prototype, 'set', function (key, value) {\n checkInstance(this, 'set');\n if (!isObject(key)) {\n throw new TypeError('Invalid value used as weak map key');\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n entry[1] = value;\n return this;\n }\n defineProperty(key, this._id, [key, value]);\n return this;\n });\n function checkInstance(x, methodName) {\n if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n }\n }\n function genId(prefix) {\n return prefix + '_' + rand() + '.' + rand();\n }\n function rand() {\n return Math.random().toString().substring(2);\n }\n defineProperty(WeakMap, '_polyfill', true);\n return WeakMap;\n }();\n function isObject(x) {\n return Object(x) === x;\n }\n})(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name, context, definition) {\n // special form of UMD for polyfilling across evironments\n context[name] = context[name] || definition();\n if (module.exports) {\n module.exports = context[name];\n }\n})(\"Promise\", typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal, function DEF() {\n\n var builtInProp,\n cycle,\n scheduling_queue,\n ToString = Object.prototype.toString,\n timer = typeof setImmediate != \"undefined\" ? function timer(fn) {\n return setImmediate(fn);\n } : setTimeout;\n\n // dammit, IE8.\n try {\n Object.defineProperty({}, \"x\", {});\n builtInProp = function builtInProp(obj, name, val, config) {\n return Object.defineProperty(obj, name, {\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n } catch (err) {\n builtInProp = function builtInProp(obj, name, val) {\n obj[name] = val;\n return obj;\n };\n }\n\n // Note: using a queue instead of array for efficiency\n scheduling_queue = function Queue() {\n var first, last, item;\n function Item(fn, self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n return {\n add: function add(fn, self) {\n item = new Item(fn, self);\n if (last) {\n last.next = item;\n } else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n }();\n function schedule(fn, self) {\n scheduling_queue.add(fn, self);\n if (!cycle) {\n cycle = timer(scheduling_queue.drain);\n }\n }\n\n // promise duck typing\n function isThenable(o) {\n var _then,\n o_type = typeof o;\n if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n _then = o.then;\n }\n return typeof _then == \"function\" ? _then : false;\n }\n function notify() {\n for (var i = 0; i < this.chain.length; i++) {\n notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);\n }\n this.chain.length = 0;\n }\n\n // NOTE: This is a separate function to isolate\n // the `try..catch` so that other code can be\n // optimized better\n function notifyIsolated(self, cb, chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self.msg);\n } else {\n if (cb === true) {\n ret = self.msg;\n } else {\n ret = cb.call(void 0, self.msg);\n }\n if (ret === chain.promise) {\n chain.reject(TypeError(\"Promise-chain cycle\"));\n } else if (_then = isThenable(ret)) {\n _then.call(ret, chain.resolve, chain.reject);\n } else {\n chain.resolve(ret);\n }\n }\n } catch (err) {\n chain.reject(err);\n }\n }\n function resolve(msg) {\n var _then,\n self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n try {\n if (_then = isThenable(msg)) {\n schedule(function () {\n var def_wrapper = new MakeDefWrapper(self);\n try {\n _then.call(msg, function $resolve$() {\n resolve.apply(def_wrapper, arguments);\n }, function $reject$() {\n reject.apply(def_wrapper, arguments);\n });\n } catch (err) {\n reject.call(def_wrapper, err);\n }\n });\n } else {\n self.msg = msg;\n self.state = 1;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n } catch (err) {\n reject.call(new MakeDefWrapper(self), err);\n }\n }\n function reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n function iteratePromises(Constructor, arr, resolver, rejecter) {\n for (var idx = 0; idx < arr.length; idx++) {\n (function IIFE(idx) {\n Constructor.resolve(arr[idx]).then(function $resolver$(msg) {\n resolver(idx, msg);\n }, rejecter);\n })(idx);\n }\n }\n function MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n }\n function MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n }\n function Promise(executor) {\n if (typeof executor != \"function\") {\n throw TypeError(\"Not a function\");\n }\n if (this.__NPO__ !== 0) {\n throw TypeError(\"Not a promise\");\n }\n\n // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n this.__NPO__ = 1;\n var def = new MakeDef(this);\n this[\"then\"] = function then(success, failure) {\n var o = {\n success: typeof success == \"function\" ? success : true,\n failure: typeof failure == \"function\" ? failure : false\n };\n // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n o.promise = new this.constructor(function extractChain(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n if (def.state !== 0) {\n schedule(notify, def);\n }\n return o.promise;\n };\n this[\"catch\"] = function $catch$(failure) {\n return this.then(void 0, failure);\n };\n try {\n executor.call(void 0, function publicResolve(msg) {\n resolve.call(def, msg);\n }, function publicReject(msg) {\n reject.call(def, msg);\n });\n } catch (err) {\n reject.call(def, err);\n }\n }\n var PromisePrototype = builtInProp({}, \"constructor\", Promise, /*configurable=*/false);\n\n // Note: Android 4 cannot use `Object.defineProperty(..)` here\n Promise.prototype = PromisePrototype;\n\n // built-in \"brand\" to signal an \"uninitialized\" promise\n builtInProp(PromisePrototype, \"__NPO__\", 0, /*configurable=*/false);\n builtInProp(Promise, \"resolve\", function Promise$resolve(msg) {\n var Constructor = this;\n\n // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n return msg;\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n resolve(msg);\n });\n });\n builtInProp(Promise, \"reject\", function Promise$reject(msg) {\n return new this(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n reject(msg);\n });\n });\n builtInProp(Promise, \"all\", function Promise$all(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n var len = arr.length,\n msgs = Array(len),\n count = 0;\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve(msgs);\n }\n }, reject);\n });\n });\n builtInProp(Promise, \"race\", function Promise$race(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n resolve(msg);\n }, reject);\n });\n });\n return Promise;\n});\n});\n\n/**\n * @module lib/callbacks\n */\n\nvar callbackMap = new WeakMap();\n\n/**\n * Store a callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback\n * The callback to call or an object with resolve and reject functions for a promise.\n * @return {void}\n */\nfunction storeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!(name in playerCallbacks)) {\n playerCallbacks[name] = [];\n }\n playerCallbacks[name].push(callback);\n callbackMap.set(player.element, playerCallbacks);\n}\n\n/**\n * Get the callbacks for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @return {function[]}\n */\nfunction getCallbacks(player, name) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n return playerCallbacks[name] || [];\n}\n\n/**\n * Remove a stored callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @param {function} [callback] The specific callback to remove.\n * @return {boolean} Was this the last callback?\n */\nfunction removeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!playerCallbacks[name]) {\n return true;\n }\n\n // If no callback is passed, remove all callbacks for the event\n if (!callback) {\n playerCallbacks[name] = [];\n callbackMap.set(player.element, playerCallbacks);\n return true;\n }\n var index = playerCallbacks[name].indexOf(callback);\n if (index !== -1) {\n playerCallbacks[name].splice(index, 1);\n }\n callbackMap.set(player.element, playerCallbacks);\n return playerCallbacks[name] && playerCallbacks[name].length === 0;\n}\n\n/**\n * Return the first stored callback for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @return {function} The callback, or false if there were none\n */\nfunction shiftCallbacks(player, name) {\n var playerCallbacks = getCallbacks(player, name);\n if (playerCallbacks.length < 1) {\n return false;\n }\n var callback = playerCallbacks.shift();\n removeCallback(player, name, callback);\n return callback;\n}\n\n/**\n * Move callbacks associated with an element to another element.\n *\n * @param {HTMLElement} oldElement The old element.\n * @param {HTMLElement} newElement The new element.\n * @return {void}\n */\nfunction swapCallbacks(oldElement, newElement) {\n var playerCallbacks = callbackMap.get(oldElement);\n callbackMap.set(newElement, playerCallbacks);\n callbackMap.delete(oldElement);\n}\n\n/**\n * @module lib/postmessage\n */\n\n/**\n * Parse a message received from postMessage.\n *\n * @param {*} data The data received from postMessage.\n * @return {object}\n */\nfunction parseMessageData(data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n // If the message cannot be parsed, throw the error as a warning\n console.warn(error);\n return {};\n }\n }\n return data;\n}\n\n/**\n * Post a message to the specified target.\n *\n * @param {Player} player The player object to use.\n * @param {string} method The API method to call.\n * @param {string|number|object|Array|undefined} params The parameters to send to the player.\n * @return {void}\n */\nfunction postMessage(player, method, params) {\n if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {\n return;\n }\n var message = {\n method: method\n };\n if (params !== undefined) {\n message.value = params;\n }\n\n // IE 8 and 9 do not support passing messages, so stringify them\n var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));\n if (ieVersion >= 8 && ieVersion < 10) {\n message = JSON.stringify(message);\n }\n player.element.contentWindow.postMessage(message, player.origin);\n}\n\n/**\n * Parse the data received from a message event.\n *\n * @param {Player} player The player that received the message.\n * @param {(Object|string)} data The message data. Strings will be parsed into JSON.\n * @return {void}\n */\nfunction processData(player, data) {\n data = parseMessageData(data);\n var callbacks = [];\n var param;\n if (data.event) {\n if (data.event === 'error') {\n var promises = getCallbacks(player, data.data.method);\n promises.forEach(function (promise) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n promise.reject(error);\n removeCallback(player, data.data.method, promise);\n });\n }\n callbacks = getCallbacks(player, \"event:\".concat(data.event));\n param = data.data;\n } else if (data.method) {\n var callback = shiftCallbacks(player, data.method);\n if (callback) {\n callbacks.push(callback);\n param = data.value;\n }\n }\n callbacks.forEach(function (callback) {\n try {\n if (typeof callback === 'function') {\n callback.call(player, param);\n return;\n }\n callback.resolve(param);\n } catch (e) {\n // empty\n }\n });\n}\n\n/**\n * @module lib/embed\n */\nvar oEmbedParameters = ['airplay', 'audio_tracks', 'audiotrack', 'autopause', 'autoplay', 'background', 'byline', 'cc', 'chapter_id', 'chapters', 'chromecast', 'color', 'colors', 'controls', 'dnt', 'end_time', 'fullscreen', 'height', 'id', 'initial_quality', 'interactive_params', 'keyboard', 'loop', 'maxheight', 'max_quality', 'maxwidth', 'min_quality', 'muted', 'play_button_position', 'playsinline', 'portrait', 'preload', 'progress_bar', 'quality', 'quality_selector', 'responsive', 'skipping_forward', 'speed', 'start_time', 'texttrack', 'thumbnail_id', 'title', 'transcript', 'transparent', 'unmute_button', 'url', 'vimeo_logo', 'volume', 'watch_full_video', 'width'];\n\n/**\n * Get the 'data-vimeo'-prefixed attributes from an element as an object.\n *\n * @param {HTMLElement} element The element.\n * @param {Object} [defaults={}] The default values to use.\n * @return {Object<string, string>}\n */\nfunction getOEmbedParameters(element) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return oEmbedParameters.reduce(function (params, param) {\n var value = element.getAttribute(\"data-vimeo-\".concat(param));\n if (value || value === '') {\n params[param] = value === '' ? 1 : value;\n }\n return params;\n }, defaults);\n}\n\n/**\n * Create an embed from oEmbed data inside an element.\n *\n * @param {object} data The oEmbed data.\n * @param {HTMLElement} element The element to put the iframe in.\n * @return {HTMLIFrameElement} The iframe embed.\n */\nfunction createEmbed(_ref, element) {\n var html = _ref.html;\n if (!element) {\n throw new TypeError('An element must be provided');\n }\n if (element.getAttribute('data-vimeo-initialized') !== null) {\n return element.querySelector('iframe');\n }\n var div = document.createElement('div');\n div.innerHTML = html;\n element.appendChild(div.firstChild);\n element.setAttribute('data-vimeo-initialized', 'true');\n return element.querySelector('iframe');\n}\n\n/**\n * Make an oEmbed call for the specified URL.\n *\n * @param {string} videoUrl The vimeo.com url for the video.\n * @param {Object} [params] Parameters to pass to oEmbed.\n * @param {HTMLElement} element The element.\n * @return {Promise}\n */\nfunction getOEmbedData(videoUrl) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var element = arguments.length > 2 ? arguments[2] : undefined;\n return new Promise(function (resolve, reject) {\n if (!isVimeoUrl(videoUrl)) {\n throw new TypeError(\"\\u201C\".concat(videoUrl, \"\\u201D is not a vimeo.com url.\"));\n }\n var domain = getOembedDomain(videoUrl);\n var url = \"https://\".concat(domain, \"/api/oembed.json?url=\").concat(encodeURIComponent(videoUrl));\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n url += \"&\".concat(param, \"=\").concat(encodeURIComponent(params[param]));\n }\n }\n var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onload = function () {\n if (xhr.status === 404) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D was not found.\")));\n return;\n }\n if (xhr.status === 403) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n try {\n var json = JSON.parse(xhr.responseText);\n // Check api response for 403 on oembed\n if (json.domain_status_code === 403) {\n // We still want to create the embed to give users visual feedback\n createEmbed(json, element);\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n xhr.onerror = function () {\n var status = xhr.status ? \" (\".concat(xhr.status, \")\") : '';\n reject(new Error(\"There was an error fetching the embed code from Vimeo\".concat(status, \".\")));\n };\n xhr.send();\n });\n}\n\n/**\n * Initialize all embeds within a specific element\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initializeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error creating an embed: \".concat(error));\n }\n };\n elements.forEach(function (element) {\n try {\n // Skip any that have data-vimeo-defer\n if (element.getAttribute('data-vimeo-defer') !== null) {\n return;\n }\n var params = getOEmbedParameters(element);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n return createEmbed(data, element);\n }).catch(handleError);\n } catch (error) {\n handleError(error);\n }\n });\n}\n\n/**\n * Resize embeds when messaged by the player.\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction resizeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoPlayerResizeEmbeds_) {\n return;\n }\n window.VimeoPlayerResizeEmbeds_ = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n\n // 'spacechange' is fired only on embeds with cards\n if (!event.data || event.data.event !== 'spacechange') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n if (senderIFrame) {\n // Change padding-bottom of the enclosing div to accommodate\n // card carousel without distorting aspect ratio\n var space = senderIFrame.parentElement;\n space.style.paddingBottom = \"\".concat(event.data.data[0].bottom, \"px\");\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Add chapters to existing metadata for Google SEO\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initAppendVideoMetadata() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoSeoMetadataAppended) {\n return;\n }\n window.VimeoSeoMetadataAppended = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n\n // Initiate appendVideoMetadata if iframe is a Vimeo embed\n if (senderIFrame && isVimeoEmbed(senderIFrame.src)) {\n var player = new Player(senderIFrame);\n player.callMethod('appendVideoMetadata', window.location.href);\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Seek to time indicated by vimeo_t query parameter if present in URL\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction checkUrlTimeParam() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoCheckedUrlTimeParam) {\n return;\n }\n window.VimeoCheckedUrlTimeParam = true;\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error getting video Id: \".concat(error));\n }\n };\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n if (senderIFrame && isVimeoEmbed(senderIFrame.src)) {\n var player = new Player(senderIFrame);\n player.getVideoId().then(function (videoId) {\n var matches = new RegExp(\"[?&]vimeo_t_\".concat(videoId, \"=([^&#]*)\")).exec(window.location.href);\n if (matches && matches[1]) {\n var sec = decodeURI(matches[1]);\n player.setCurrentTime(sec);\n }\n return;\n }).catch(handleError);\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Updates iframe embeds to support DRM content playback by adding the 'encrypted-media' permission\n * to the iframe's allow attribute when DRM initialization fails. This function acts as a fallback\n * mechanism to enable playback of DRM-protected content in embeds that weren't properly configured.\n *\n * @return {void}\n */\nfunction updateDRMEmbeds() {\n if (window.VimeoDRMEmbedsUpdated) {\n return;\n }\n window.VimeoDRMEmbedsUpdated = true;\n\n /**\n * Handle message events for DRM initialization failures\n * @param {MessageEvent} event - The message event from the iframe\n */\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'drminitfailed') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source) : null;\n if (!senderIFrame) {\n return;\n }\n var currentAllow = senderIFrame.getAttribute('allow') || '';\n var allowSupportsDRM = currentAllow.includes('encrypted-media');\n if (!allowSupportsDRM) {\n // For DRM playback to successfully occur, the iframe `allow` attribute must include 'encrypted-media'.\n // If the video requires DRM but doesn't have the attribute, we try to add on behalf of the embed owner\n // as a temporary measure to enable playback until they're able to update their embeds.\n senderIFrame.setAttribute('allow', \"\".concat(currentAllow, \"; encrypted-media\"));\n var currentUrl = new URL(senderIFrame.getAttribute('src'));\n\n // Adding this forces the embed to reload once `allow` has been updated with `encrypted-media`.\n currentUrl.searchParams.set('forcereload', 'drm');\n senderIFrame.setAttribute('src', currentUrl.toString());\n return;\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/* MIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nTerms */\n\nfunction initializeScreenfull() {\n var fn = function () {\n var val;\n var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // New WebKit\n ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n // Old WebKit\n ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n var i = 0;\n var l = fnMap.length;\n var ret = {};\n for (; i < l; i++) {\n val = fnMap[i];\n if (val && val[1] in document) {\n for (i = 0; i < val.length; i++) {\n ret[fnMap[0][i]] = val[i];\n }\n return ret;\n }\n }\n return false;\n }();\n var eventNameMap = {\n fullscreenchange: fn.fullscreenchange,\n fullscreenerror: fn.fullscreenerror\n };\n var screenfull = {\n request: function request(element) {\n return new Promise(function (resolve, reject) {\n var onFullScreenEntered = function onFullScreenEntered() {\n screenfull.off('fullscreenchange', onFullScreenEntered);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenEntered);\n element = element || document.documentElement;\n var returnPromise = element[fn.requestFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject);\n }\n });\n },\n exit: function exit() {\n return new Promise(function (resolve, reject) {\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n var onFullScreenExit = function onFullScreenExit() {\n screenfull.off('fullscreenchange', onFullScreenExit);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenExit);\n var returnPromise = document[fn.exitFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject);\n }\n });\n },\n on: function on(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.addEventListener(eventName, callback);\n }\n },\n off: function off(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.removeEventListener(eventName, callback);\n }\n }\n };\n Object.defineProperties(screenfull, {\n isFullscreen: {\n get: function get() {\n return Boolean(document[fn.fullscreenElement]);\n }\n },\n element: {\n enumerable: true,\n get: function get() {\n return document[fn.fullscreenElement];\n }\n },\n isEnabled: {\n enumerable: true,\n get: function get() {\n // Coerce to boolean in case of old WebKit\n return Boolean(document[fn.fullscreenEnabled]);\n }\n }\n });\n return screenfull;\n}\n\n/** @typedef {import('./timing-src-connector.types').PlayerControls} PlayerControls */\n/** @typedef {import('timing-object').ITimingObject} TimingObject */\n/** @typedef {import('./timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n/** @typedef {(msg: string) => any} Logger */\n/** @typedef {import('timing-object').TConnectionState} TConnectionState */\n\n/**\n * @type {TimingSrcConnectorOptions}\n *\n * For details on these properties and their effects, see the typescript definition referenced above.\n */\nvar defaultOptions = {\n role: 'viewer',\n autoPlayMuted: true,\n allowedDrift: 0.3,\n maxAllowedDrift: 1,\n minCheckInterval: 0.1,\n maxRateAdjustment: 0.2,\n maxTimeToCatchUp: 1\n};\n\n/**\n * There's a proposed W3C spec for the Timing Object which would introduce a new set of APIs that would simplify time-synchronization tasks for browser applications.\n *\n * Proposed spec: https://webtiming.github.io/timingobject/\n * V3 Spec: https://timingsrc.readthedocs.io/en/latest/\n * Demuxed talk: https://www.youtube.com/watch?v=cZSjDaGDmX8\n *\n * This class makes it easy to connect Vimeo.Player to a provided TimingObject via Vimeo.Player.setTimingSrc(myTimingObject, options) and the synchronization will be handled automatically.\n *\n * There are 5 general responsibilities in TimingSrcConnector:\n *\n * 1. `updatePlayer()` which sets the player's currentTime, playbackRate and pause/play state based on current state of the TimingObject.\n * 2. `updateTimingObject()` which sets the TimingObject's position and velocity from the player's state.\n * 3. `playerUpdater` which listens for change events on the TimingObject and will respond by calling updatePlayer.\n * 4. `timingObjectUpdater` which listens to the player events of seeked, play and pause and will respond by calling `updateTimingObject()`.\n * 5. `maintainPlaybackPosition` this is code that constantly monitors the player to make sure it's always in sync with the TimingObject. This is needed because videos will generally not play with precise time accuracy and there will be some drift which becomes more noticeable over longer periods (as noted in the timing-object spec). More details on this method below.\n */\nvar TimingSrcConnector = /*#__PURE__*/function (_EventTarget) {\n _inherits(TimingSrcConnector, _EventTarget);\n var _super = _createSuper(TimingSrcConnector);\n /**\n * @param {PlayerControls} player\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n * @param {Logger} logger\n */\n function TimingSrcConnector(_player, timingObject) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var logger = arguments.length > 3 ? arguments[3] : undefined;\n _classCallCheck(this, TimingSrcConnector);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"logger\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"speedAdjustment\", 0);\n /**\n * @param {PlayerControls} player\n * @param {number} newAdjustment\n * @return {Promise<void>}\n */\n _defineProperty(_assertThisInitialized(_this), \"adjustSpeed\", /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(player, newAdjustment) {\n var newPlaybackRate;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(_this.speedAdjustment === newAdjustment)) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n _context.next = 4;\n return player.getPlaybackRate();\n case 4:\n _context.t0 = _context.sent;\n _context.t1 = _this.speedAdjustment;\n _context.t2 = _context.t0 - _context.t1;\n _context.t3 = newAdjustment;\n newPlaybackRate = _context.t2 + _context.t3;\n _this.log(\"New playbackRate: \".concat(newPlaybackRate));\n _context.next = 12;\n return player.setPlaybackRate(newPlaybackRate);\n case 12:\n _this.speedAdjustment = newAdjustment;\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n _this.logger = logger;\n _this.init(timingObject, _player, _objectSpread2(_objectSpread2({}, defaultOptions), options));\n return _this;\n }\n _createClass(TimingSrcConnector, [{\n key: \"disconnect\",\n value: function disconnect() {\n this.dispatchEvent(new Event('disconnect'));\n }\n\n /**\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"init\",\n value: function () {\n var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(timingObject, player, options) {\n var _this2 = this;\n var playerUpdater, positionSync, timingObjectUpdater;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.waitForTOReadyState(timingObject, 'open');\n case 2:\n if (!(options.role === 'viewer')) {\n _context2.next = 10;\n break;\n }\n _context2.next = 5;\n return this.updatePlayer(timingObject, player, options);\n case 5:\n playerUpdater = subscribe(timingObject, 'change', function () {\n return _this2.updatePlayer(timingObject, player, options);\n });\n positionSync = this.maintainPlaybackPosition(timingObject, player, options);\n this.addEventListener('disconnect', function () {\n positionSync.cancel();\n playerUpdater.cancel();\n });\n _context2.next = 14;\n break;\n case 10:\n _context2.next = 12;\n return this.updateTimingObject(timingObject, player);\n case 12:\n timingObjectUpdater = subscribe(player, ['seeked', 'play', 'pause', 'ratechange'], function () {\n return _this2.updateTimingObject(timingObject, player);\n }, 'on', 'off');\n this.addEventListener('disconnect', function () {\n return timingObjectUpdater.cancel();\n });\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function init(_x3, _x4, _x5) {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n /**\n * Sets the TimingObject's state to reflect that of the player\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @return {Promise<void>}\n */\n }, {\n key: \"updateTimingObject\",\n value: function () {\n var _updateTimingObject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(timingObject, player) {\n var _yield$Promise$all, _yield$Promise$all2, position, isPaused, playbackRate;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Promise.all([player.getCurrentTime(), player.getPaused(), player.getPlaybackRate()]);\n case 2:\n _yield$Promise$all = _context3.sent;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);\n position = _yield$Promise$all2[0];\n isPaused = _yield$Promise$all2[1];\n playbackRate = _yield$Promise$all2[2];\n timingObject.update({\n position: position,\n velocity: isPaused ? 0 : playbackRate\n });\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function updateTimingObject(_x6, _x7) {\n return _updateTimingObject.apply(this, arguments);\n }\n return updateTimingObject;\n }()\n /**\n * Sets the player's timing state to reflect that of the TimingObject\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"updatePlayer\",\n value: function () {\n var _updatePlayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(timingObject, player, options) {\n var _timingObject$query, position, velocity;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _timingObject$query = timingObject.query(), position = _timingObject$query.position, velocity = _timingObject$query.velocity;\n if (typeof position === 'number') {\n player.setCurrentTime(position);\n }\n if (!(typeof velocity === 'number')) {\n _context5.next = 25;\n break;\n }\n if (!(velocity === 0)) {\n _context5.next = 11;\n break;\n }\n _context5.next = 6;\n return player.getPaused();\n case 6:\n _context5.t0 = _context5.sent;\n if (!(_context5.t0 === false)) {\n _context5.next = 9;\n break;\n }\n player.pause();\n case 9:\n _context5.next = 25;\n break;\n case 11:\n if (!(velocity > 0)) {\n _context5.next = 25;\n break;\n }\n _context5.next = 14;\n return player.getPaused();\n case 14:\n _context5.t1 = _context5.sent;\n if (!(_context5.t1 === true)) {\n _context5.next = 19;\n break;\n }\n _context5.next = 18;\n return player.play().catch( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(err) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(err.name === 'NotAllowedError' && options.autoPlayMuted)) {\n _context4.next = 5;\n break;\n }\n _context4.next = 3;\n return player.setMuted(true);\n case 3:\n _context4.next = 5;\n return player.play().catch(function (err2) {\n return console.error('Couldn\\'t play the video from TimingSrcConnector. Error:', err2);\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x11) {\n return _ref2.apply(this, arguments);\n };\n }());\n case 18:\n this.updatePlayer(timingObject, player, options);\n case 19:\n _context5.next = 21;\n return player.getPlaybackRate();\n case 21:\n _context5.t2 = _context5.sent;\n _context5.t3 = velocity;\n if (!(_context5.t2 !== _context5.t3)) {\n _context5.next = 25;\n break;\n }\n player.setPlaybackRate(velocity);\n case 25:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function updatePlayer(_x8, _x9, _x10) {\n return _updatePlayer.apply(this, arguments);\n }\n return updatePlayer;\n }()\n /**\n * Since video players do not play with 100% time precision, we need to closely monitor\n * our player to be sure it remains in sync with the TimingObject.\n *\n * If out of sync, we use the current conditions and the options provided to determine\n * whether to re-sync via setting currentTime or adjusting the playbackRate\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {{cancel: (function(): void)}}\n */\n }, {\n key: \"maintainPlaybackPosition\",\n value: function maintainPlaybackPosition(timingObject, player, options) {\n var _this3 = this;\n var allowedDrift = options.allowedDrift,\n maxAllowedDrift = options.maxAllowedDrift,\n minCheckInterval = options.minCheckInterval,\n maxRateAdjustment = options.maxRateAdjustment,\n maxTimeToCatchUp = options.maxTimeToCatchUp;\n var syncInterval = Math.min(maxTimeToCatchUp, Math.max(minCheckInterval, maxAllowedDrift)) * 1000;\n var check = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var diff, diffAbs, min, max, adjustment;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.t0 = timingObject.query().velocity === 0;\n if (_context6.t0) {\n _context6.next = 6;\n break;\n }\n _context6.next = 4;\n return player.getPaused();\n case 4:\n _context6.t1 = _context6.sent;\n _context6.t0 = _context6.t1 === true;\n case 6:\n if (!_context6.t0) {\n _context6.next = 8;\n break;\n }\n return _context6.abrupt(\"return\");\n case 8:\n _context6.t2 = timingObject.query().position;\n _context6.next = 11;\n return player.getCurrentTime();\n case 11:\n _context6.t3 = _context6.sent;\n diff = _context6.t2 - _context6.t3;\n diffAbs = Math.abs(diff);\n _this3.log(\"Drift: \".concat(diff));\n if (!(diffAbs > maxAllowedDrift)) {\n _context6.next = 22;\n break;\n }\n _context6.next = 18;\n return _this3.adjustSpeed(player, 0);\n case 18:\n player.setCurrentTime(timingObject.query().position);\n _this3.log('Resync by currentTime');\n _context6.next = 29;\n break;\n case 22:\n if (!(diffAbs > allowedDrift)) {\n _context6.next = 29;\n break;\n }\n min = diffAbs / maxTimeToCatchUp;\n max = maxRateAdjustment;\n adjustment = min < max ? (max - min) / 2 : max;\n _context6.next = 28;\n return _this3.adjustSpeed(player, adjustment * Math.sign(diff));\n case 28:\n _this3.log('Resync by playbackRate');\n case 29:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function check() {\n return _ref3.apply(this, arguments);\n };\n }();\n var interval = setInterval(function () {\n return check();\n }, syncInterval);\n return {\n cancel: function cancel() {\n return clearInterval(interval);\n }\n };\n }\n\n /**\n * @param {string} msg\n */\n }, {\n key: \"log\",\n value: function log(msg) {\n var _this$logger;\n (_this$logger = this.logger) === null || _this$logger === void 0 ? void 0 : _this$logger.call(this, \"TimingSrcConnector: \".concat(msg));\n }\n }, {\n key: \"waitForTOReadyState\",\n value:\n /**\n * @param {TimingObject} timingObject\n * @param {TConnectionState} state\n * @return {Promise<void>}\n */\n function waitForTOReadyState(timingObject, state) {\n return new Promise(function (resolve) {\n var check = function check() {\n if (timingObject.readyState === state) {\n resolve();\n } else {\n timingObject.addEventListener('readystatechange', check, {\n once: true\n });\n }\n };\n check();\n });\n }\n }]);\n return TimingSrcConnector;\n}( /*#__PURE__*/_wrapNativeSuper(EventTarget));\n\nvar playerMap = new WeakMap();\nvar readyMap = new WeakMap();\nvar screenfull = {};\nvar Player = /*#__PURE__*/function () {\n /**\n * Create a Player.\n *\n * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo\n * player iframe, and id, or a jQuery object.\n * @param {object} [options] oEmbed parameters to use when creating an embed in the element.\n * @return {Player}\n */\n function Player(element) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Player);\n /* global jQuery */\n if (window.jQuery && element instanceof jQuery) {\n if (element.length > 1 && window.console && console.warn) {\n console.warn('A jQuery object with multiple elements was passed, using the first element.');\n }\n element = element[0];\n }\n\n // Find an element by ID\n if (typeof document !== 'undefined' && typeof element === 'string') {\n element = document.getElementById(element);\n }\n\n // Not an element!\n if (!isDomElement(element)) {\n throw new TypeError('You must pass either a valid element or a valid id.');\n }\n\n // Already initialized an embed in this div, so grab the iframe\n if (element.nodeName !== 'IFRAME') {\n var iframe = element.querySelector('iframe');\n if (iframe) {\n element = iframe;\n }\n }\n\n // iframe url is not a Vimeo url\n if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {\n throw new Error('The player element passed isn’t a Vimeo embed.');\n }\n\n // If there is already a player object in the map, return that\n if (playerMap.has(element)) {\n return playerMap.get(element);\n }\n this._window = element.ownerDocument.defaultView;\n this.element = element;\n this.origin = '*';\n var readyPromise = new npo_src(function (resolve, reject) {\n _this._onMessage = function (event) {\n if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {\n return;\n }\n if (_this.origin === '*') {\n _this.origin = event.origin;\n }\n var data = parseMessageData(event.data);\n var isError = data && data.event === 'error';\n var isReadyError = isError && data.data && data.data.method === 'ready';\n if (isReadyError) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n reject(error);\n return;\n }\n var isReadyEvent = data && data.event === 'ready';\n var isPingResponse = data && data.method === 'ping';\n if (isReadyEvent || isPingResponse) {\n _this.element.setAttribute('data-ready', 'true');\n resolve();\n return;\n }\n processData(_this, data);\n };\n _this._window.addEventListener('message', _this._onMessage);\n if (_this.element.nodeName !== 'IFRAME') {\n var params = getOEmbedParameters(element, options);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n var iframe = createEmbed(data, element);\n // Overwrite element with the new iframe,\n // but store reference to the original element\n _this.element = iframe;\n _this._originalElement = element;\n swapCallbacks(element, iframe);\n playerMap.set(_this.element, _this);\n return data;\n }).catch(reject);\n }\n });\n\n // Store a copy of this Player in the map\n readyMap.set(this, readyPromise);\n playerMap.set(this.element, this);\n\n // Send a ping to the iframe so the ready promise will be resolved if\n // the player is already ready.\n if (this.element.nodeName === 'IFRAME') {\n postMessage(this, 'ping');\n }\n if (screenfull.isEnabled) {\n var exitFullscreen = function exitFullscreen() {\n return screenfull.exit();\n };\n this.fullscreenchangeHandler = function () {\n if (screenfull.isFullscreen) {\n storeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n } else {\n removeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n }\n // eslint-disable-next-line\n _this.ready().then(function () {\n postMessage(_this, 'fullscreenchange', screenfull.isFullscreen);\n });\n };\n screenfull.on('fullscreenchange', this.fullscreenchangeHandler);\n }\n return this;\n }\n\n /**\n * Check to see if the URL is a Vimeo URL.\n *\n * @param {string} url The URL string.\n * @return {boolean}\n */\n _createClass(Player, [{\n key: \"callMethod\",\n value:\n /**\n * Get a promise for a method.\n *\n * @param {string} name The API method to call.\n * @param {...(string|number|object|Array)} args Arguments to send via postMessage.\n * @return {Promise}\n */\n function callMethod(name) {\n var _this2 = this;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (name === undefined || name === null) {\n throw new TypeError('You must pass a method name.');\n }\n return new npo_src(function (resolve, reject) {\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this2.ready().then(function () {\n storeCallback(_this2, name, {\n resolve: resolve,\n reject: reject\n });\n if (args.length === 0) {\n args = {};\n } else if (args.length === 1) {\n args = args[0];\n }\n postMessage(_this2, name, args);\n }).catch(reject);\n });\n }\n /**\n * Get a promise for the value of a player property.\n *\n * @param {string} name The property name\n * @return {Promise}\n */\n }, {\n key: \"get\",\n value: function get(name) {\n var _this3 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'get');\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this3.ready().then(function () {\n storeCallback(_this3, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this3, name);\n }).catch(reject);\n });\n }\n\n /**\n * Get a promise for setting the value of a player property.\n *\n * @param {string} name The API method to call.\n * @param {mixed} value The value to set.\n * @return {Promise}\n */\n }, {\n key: \"set\",\n value: function set(name, value) {\n var _this4 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'set');\n if (value === undefined || value === null) {\n throw new TypeError('There must be a value to set.');\n }\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this4.ready().then(function () {\n storeCallback(_this4, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this4, name, value);\n }).catch(reject);\n });\n }\n\n /**\n * Add an event listener for the specified event. Will call the\n * callback with a single parameter, `data`, that contains the data for\n * that event.\n *\n * @param {string} eventName The name of the event.\n * @param {function(*)} callback The function to call when the event fires.\n * @return {void}\n */\n }, {\n key: \"on\",\n value: function on(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (!callback) {\n throw new TypeError('You must pass a callback function.');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var callbacks = getCallbacks(this, \"event:\".concat(eventName));\n if (callbacks.length === 0) {\n this.callMethod('addEventListener', eventName).catch(function () {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n storeCallback(this, \"event:\".concat(eventName), callback);\n }\n\n /**\n * Remove an event listener for the specified event. Will remove all\n * listeners for that event if a `callback` isn’t passed, or only that\n * specific callback if it is passed.\n *\n * @param {string} eventName The name of the event.\n * @param {function} [callback] The specific callback to remove.\n * @return {void}\n */\n }, {\n key: \"off\",\n value: function off(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (callback && typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var lastCallback = removeCallback(this, \"event:\".concat(eventName), callback);\n\n // If there are no callbacks left, remove the listener\n if (lastCallback) {\n this.callMethod('removeEventListener', eventName).catch(function (e) {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n }\n\n /**\n * A promise to load a new video.\n *\n * @promise LoadVideoPromise\n * @fulfill {number} The video with this id or url successfully loaded.\n * @reject {TypeError} The id was not a number.\n */\n /**\n * Load a new video into this embed. The promise will be resolved if\n * the video is successfully loaded, or it will be rejected if it could\n * not be loaded.\n *\n * @param {number|string|object} options The id of the video, the url of the video, or an object with embed options.\n * @return {LoadVideoPromise}\n */\n }, {\n key: \"loadVideo\",\n value: function loadVideo(options) {\n return this.callMethod('loadVideo', options);\n }\n\n /**\n * A promise to perform an action when the Player is ready.\n *\n * @todo document errors\n * @promise LoadVideoPromise\n * @fulfill {void}\n */\n /**\n * Trigger a function when the player iframe has initialized. You do not\n * need to wait for `ready` to trigger to begin adding event listeners\n * or calling other methods.\n *\n * @return {ReadyPromise}\n */\n }, {\n key: \"ready\",\n value: function ready() {\n var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {\n reject(new Error('Unknown player. Probably unloaded.'));\n });\n return npo_src.resolve(readyPromise);\n }\n\n /**\n * A promise to add a cue point to the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point to use for removeCuePoint.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Add a cue point to the player.\n *\n * @param {number} time The time for the cue point.\n * @param {object} [data] Arbitrary data to be returned with the cue point.\n * @return {AddCuePointPromise}\n */\n }, {\n key: \"addCuePoint\",\n value: function addCuePoint(time) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.callMethod('addCuePoint', {\n time: time,\n data: data\n });\n }\n\n /**\n * A promise to remove a cue point from the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point that was removed.\n * @reject {InvalidCuePoint} The cue point with the specified id was not\n * found.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Remove a cue point from the video.\n *\n * @param {string} id The id of the cue point to remove.\n * @return {RemoveCuePointPromise}\n */\n }, {\n key: \"removeCuePoint\",\n value: function removeCuePoint(id) {\n return this.callMethod('removeCuePoint', id);\n }\n\n /**\n * A representation of a text track on a video.\n *\n * @typedef {Object} VimeoTextTrack\n * @property {string} language The ISO language code.\n * @property {string} kind The kind of track it is (captions or subtitles).\n * @property {string} label The human‐readable label for the track.\n */\n /**\n * A promise to enable a text track.\n *\n * @promise EnableTextTrackPromise\n * @fulfill {VimeoTextTrack} The text track that was enabled.\n * @reject {InvalidTrackLanguageError} No track was available with the\n * specified language.\n * @reject {InvalidTrackError} No track was available with the specified\n * language and kind.\n */\n /**\n * Enable the text track with the specified language, and optionally the\n * specified kind (captions or subtitles).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {string} language The two‐letter language code.\n * @param {string} [kind] The kind of track to enable (captions or subtitles).\n * @param {boolean} [showing] Whether to enable display of closed captions for enabled text track within the player.\n * @return {EnableTextTrackPromise}\n */\n }, {\n key: \"enableTextTrack\",\n value: function enableTextTrack(language) {\n var kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var showing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n return this.callMethod('enableTextTrack', {\n language: language,\n kind: kind,\n showing: showing\n });\n }\n\n /**\n * A promise to disable the active text track.\n *\n * @promise DisableTextTrackPromise\n * @fulfill {void} The track was disabled.\n */\n /**\n * Disable the currently-active text track.\n *\n * @return {DisableTextTrackPromise}\n */\n }, {\n key: \"disableTextTrack\",\n value: function disableTextTrack() {\n return this.callMethod('disableTextTrack');\n }\n\n /** @typedef {import('../types/formats.js').VimeoAudioTrack} VimeoAudioTrack */\n /** @typedef {import('../types/formats.js').AudioLanguage} AudioLanguage */\n /** @typedef {import('../types/formats.js').AudioKind} AudioKind */\n /**\n * A promise to enable an audio track.\n *\n * @promise SelectAudioTrackPromise\n * @fulfill {VimeoAudioTrack} The audio track that was enabled.\n * @reject {NoAudioTracksError} No audio exists for the video.\n * @reject {NoAlternateAudioTracksError} No alternate audio tracks exist for the video.\n * @reject {NoMatchingAudioTrackError} No track was available with the specified\n * language and kind.\n */\n /**\n * Enable the audio track with the specified language, and optionally the\n * specified kind (main, translation, descriptions, or commentary).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {AudioLanguage} language The two‐letter language code.\n * @param {AudioKind} [kind] The kind of track to enable (main, translation, descriptions, commentary).\n * @return {SelectAudioTrackPromise}\n */\n }, {\n key: \"selectAudioTrack\",\n value: function selectAudioTrack(language, kind) {\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n return this.callMethod('selectAudioTrack', {\n language: language,\n kind: kind\n });\n }\n\n /**\n * Enable the main audio track for the video.\n *\n * @return {SelectAudioTrackPromise}\n */\n }, {\n key: \"selectDefaultAudioTrack\",\n value: function selectDefaultAudioTrack() {\n return this.callMethod('selectDefaultAudioTrack');\n }\n\n /**\n * A promise to pause the video.\n *\n * @promise PausePromise\n * @fulfill {void} The video was paused.\n */\n /**\n * Pause the video if it’s playing.\n *\n * @return {PausePromise}\n */\n }, {\n key: \"pause\",\n value: function pause() {\n return this.callMethod('pause');\n }\n\n /**\n * A promise to play the video.\n *\n * @promise PlayPromise\n * @fulfill {void} The video was played.\n */\n /**\n * Play the video if it’s paused. **Note:** on iOS and some other\n * mobile devices, you cannot programmatically trigger play. Once the\n * viewer has tapped on the play button in the player, however, you\n * will be able to use this function.\n *\n * @return {PlayPromise}\n */\n }, {\n key: \"play\",\n value: function play() {\n return this.callMethod('play');\n }\n\n /**\n * Request that the player enters fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"requestFullscreen\",\n value: function requestFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.request(this.element);\n }\n return this.callMethod('requestFullscreen');\n }\n\n /**\n * Request that the player exits fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.exit();\n }\n return this.callMethod('exitFullscreen');\n }\n\n /**\n * Returns true if the player is currently fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"getFullscreen\",\n value: function getFullscreen() {\n if (screenfull.isEnabled) {\n return npo_src.resolve(screenfull.isFullscreen);\n }\n return this.get('fullscreen');\n }\n\n /**\n * Request that the player enters picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"requestPictureInPicture\",\n value: function requestPictureInPicture() {\n return this.callMethod('requestPictureInPicture');\n }\n\n /**\n * Request that the player exits picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"exitPictureInPicture\",\n value: function exitPictureInPicture() {\n return this.callMethod('exitPictureInPicture');\n }\n\n /**\n * Returns true if the player is currently picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"getPictureInPicture\",\n value: function getPictureInPicture() {\n return this.get('pictureInPicture');\n }\n\n /**\n * A promise to prompt the viewer to initiate remote playback.\n *\n * @promise RemotePlaybackPromptPromise\n * @fulfill {void}\n * @reject {NotFoundError} No remote playback device is available.\n */\n /**\n * Request to prompt the user to initiate remote playback.\n *\n * @return {RemotePlaybackPromptPromise}\n */\n }, {\n key: \"remotePlaybackPrompt\",\n value: function remotePlaybackPrompt() {\n return this.callMethod('remotePlaybackPrompt');\n }\n\n /**\n * A promise to unload the video.\n *\n * @promise UnloadPromise\n * @fulfill {void} The video was unloaded.\n */\n /**\n * Return the player to its initial state.\n *\n * @return {UnloadPromise}\n */\n }, {\n key: \"unload\",\n value: function unload() {\n return this.callMethod('unload');\n }\n\n /**\n * Cleanup the player and remove it from the DOM\n *\n * It won't be usable and a new one should be constructed\n * in order to do any operations.\n *\n * @return {Promise}\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n return new npo_src(function (resolve) {\n readyMap.delete(_this5);\n playerMap.delete(_this5.element);\n if (_this5._originalElement) {\n playerMap.delete(_this5._originalElement);\n _this5._originalElement.removeAttribute('data-vimeo-initialized');\n }\n if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) {\n _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode);\n } else {\n _this5.element.parentNode.removeChild(_this5.element);\n }\n }\n\n // If the clip is private there is a case where the element stays the\n // div element. Destroy should reset the div and remove the iframe child.\n if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) {\n _this5.element.removeAttribute('data-vimeo-initialized');\n var iframe = _this5.element.querySelector('iframe');\n if (iframe && iframe.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) {\n iframe.parentNode.parentNode.removeChild(iframe.parentNode);\n } else {\n iframe.parentNode.removeChild(iframe);\n }\n }\n }\n _this5._window.removeEventListener('message', _this5._onMessage);\n if (screenfull.isEnabled) {\n screenfull.off('fullscreenchange', _this5.fullscreenchangeHandler);\n }\n resolve();\n });\n }\n\n /**\n * A promise to get the autopause behavior of the video.\n *\n * @promise GetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Get the autopause behavior for this player.\n *\n * @return {GetAutopausePromise}\n */\n }, {\n key: \"getAutopause\",\n value: function getAutopause() {\n return this.get('autopause');\n }\n\n /**\n * A promise to set the autopause behavior of the video.\n *\n * @promise SetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Enable or disable the autopause behavior of this player.\n *\n * By default, when another video is played in the same browser, this\n * player will automatically pause. Unless you have a specific reason\n * for doing so, we recommend that you leave autopause set to the\n * default (`true`).\n *\n * @param {boolean} autopause\n * @return {SetAutopausePromise}\n */\n }, {\n key: \"setAutopause\",\n value: function setAutopause(autopause) {\n return this.set('autopause', autopause);\n }\n\n /**\n * A promise to get the buffered property of the video.\n *\n * @promise GetBufferedPromise\n * @fulfill {Array} Buffered Timeranges converted to an Array.\n */\n /**\n * Get the buffered property of the video.\n *\n * @return {GetBufferedPromise}\n */\n }, {\n key: \"getBuffered\",\n value: function getBuffered() {\n return this.get('buffered');\n }\n\n /**\n * @typedef {Object} CameraProperties\n * @prop {number} props.yaw - Number between 0 and 360.\n * @prop {number} props.pitch - Number between -90 and 90.\n * @prop {number} props.roll - Number between -180 and 180.\n * @prop {number} props.fov - The field of view in degrees.\n */\n /**\n * A promise to get the camera properties of the player.\n *\n * @promise GetCameraPromise\n * @fulfill {CameraProperties} The camera properties.\n */\n /**\n * For 360° videos get the camera properties for this player.\n *\n * @return {GetCameraPromise}\n */\n }, {\n key: \"getCameraProps\",\n value: function getCameraProps() {\n return this.get('cameraProps');\n }\n\n /**\n * A promise to set the camera properties of the player.\n *\n * @promise SetCameraPromise\n * @fulfill {Object} The camera was successfully set.\n * @reject {RangeError} The range was out of bounds.\n */\n /**\n * For 360° videos set the camera properties for this player.\n *\n * @param {CameraProperties} camera The camera properties\n * @return {SetCameraPromise}\n */\n }, {\n key: \"setCameraProps\",\n value: function setCameraProps(camera) {\n return this.set('cameraProps', camera);\n }\n\n /**\n * A representation of a chapter.\n *\n * @typedef {Object} VimeoChapter\n * @property {number} startTime The start time of the chapter.\n * @property {object} title The title of the chapter.\n * @property {number} index The place in the order of Chapters. Starts at 1.\n */\n /**\n * A promise to get chapters for the video.\n *\n * @promise GetChaptersPromise\n * @fulfill {VimeoChapter[]} The chapters for the video.\n */\n /**\n * Get an array of all the chapters for the video.\n *\n * @return {GetChaptersPromise}\n */\n }, {\n key: \"getChapters\",\n value: function getChapters() {\n return this.get('chapters');\n }\n\n /**\n * A promise to get the currently active chapter.\n *\n * @promise GetCurrentChaptersPromise\n * @fulfill {VimeoChapter|undefined} The current chapter for the video.\n */\n /**\n * Get the currently active chapter for the video.\n *\n * @return {GetCurrentChaptersPromise}\n */\n }, {\n key: \"getCurrentChapter\",\n value: function getCurrentChapter() {\n return this.get('currentChapter');\n }\n\n /**\n * A promise to get the accent color of the player.\n *\n * @promise GetColorPromise\n * @fulfill {string} The hex color of the player.\n */\n /**\n * Get the accent color for this player. Note this is deprecated in place of `getColorTwo`.\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColor\",\n value: function getColor() {\n return this.get('color');\n }\n\n /**\n * A promise to get all colors for the player in an array.\n *\n * @promise GetColorsPromise\n * @fulfill {string[]} The hex colors of the player.\n */\n /**\n * Get all the colors for this player in an array: [colorOne, colorTwo, colorThree, colorFour]\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColors\",\n value: function getColors() {\n return npo_src.all([this.get('colorOne'), this.get('colorTwo'), this.get('colorThree'), this.get('colorFour')]);\n }\n\n /**\n * A promise to set the accent color of the player.\n *\n * @promise SetColorPromise\n * @fulfill {string} The color was successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the accent color of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * Note this is deprecated in place of `setColorTwo`.\n *\n * @param {string} color The hex or rgb color string to set.\n * @return {SetColorPromise}\n */\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n return this.set('color', color);\n }\n\n /**\n * A promise to set all colors for the player.\n *\n * @promise SetColorsPromise\n * @fulfill {string[]} The colors were successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the colors of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * The colors should be passed in as an array: [colorOne, colorTwo, colorThree, colorFour].\n * If a color should not be set, the index in the array can be left as null.\n *\n * @param {string[]} colors Array of the hex or rgb color strings to set.\n * @return {SetColorsPromise}\n */\n }, {\n key: \"setColors\",\n value: function setColors(colors) {\n if (!Array.isArray(colors)) {\n return new npo_src(function (resolve, reject) {\n return reject(new TypeError('Argument must be an array.'));\n });\n }\n var nullPromise = new npo_src(function (resolve) {\n return resolve(null);\n });\n var colorPromises = [colors[0] ? this.set('colorOne', colors[0]) : nullPromise, colors[1] ? this.set('colorTwo', colors[1]) : nullPromise, colors[2] ? this.set('colorThree', colors[2]) : nullPromise, colors[3] ? this.set('colorFour', colors[3]) : nullPromise];\n return npo_src.all(colorPromises);\n }\n\n /**\n * A representation of a cue point.\n *\n * @typedef {Object} VimeoCuePoint\n * @property {number} time The time of the cue point.\n * @property {object} data The data passed when adding the cue point.\n * @property {string} id The unique id for use with removeCuePoint.\n */\n /**\n * A promise to get the cue points of a video.\n *\n * @promise GetCuePointsPromise\n * @fulfill {VimeoCuePoint[]} The cue points added to the video.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Get an array of the cue points added to the video.\n *\n * @return {GetCuePointsPromise}\n */\n }, {\n key: \"getCuePoints\",\n value: function getCuePoints() {\n return this.get('cuePoints');\n }\n\n /**\n * A promise to get the current time of the video.\n *\n * @promise GetCurrentTimePromise\n * @fulfill {number} The current time in seconds.\n */\n /**\n * Get the current playback position in seconds.\n *\n * @return {GetCurrentTimePromise}\n */\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.get('currentTime');\n }\n\n /**\n * A promise to set the current time of the video.\n *\n * @promise SetCurrentTimePromise\n * @fulfill {number} The actual current time that was set.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n */\n /**\n * Set the current playback position in seconds. If the player was\n * paused, it will remain paused. Likewise, if the player was playing,\n * it will resume playing once the video has buffered.\n *\n * You can provide an accurate time and the player will attempt to seek\n * to as close to that time as possible. The exact time will be the\n * fulfilled value of the promise.\n *\n * @param {number} currentTime\n * @return {SetCurrentTimePromise}\n */\n }, {\n key: \"setCurrentTime\",\n value: function setCurrentTime(currentTime) {\n return this.set('currentTime', currentTime);\n }\n\n /**\n * A promise to get the duration of the video.\n *\n * @promise GetDurationPromise\n * @fulfill {number} The duration in seconds.\n */\n /**\n * Get the duration of the video in seconds. It will be rounded to the\n * nearest second before playback begins, and to the nearest thousandth\n * of a second after playback begins.\n *\n * @return {GetDurationPromise}\n */\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.get('duration');\n }\n\n /**\n * A promise to get the ended state of the video.\n *\n * @promise GetEndedPromise\n * @fulfill {boolean} Whether or not the video has ended.\n */\n /**\n * Get the ended state of the video. The video has ended if\n * `currentTime === duration`.\n *\n * @return {GetEndedPromise}\n */\n }, {\n key: \"getEnded\",\n value: function getEnded() {\n return this.get('ended');\n }\n\n /**\n * A promise to get the loop state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the player is set to loop.\n */\n /**\n * Get the loop state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getLoop\",\n value: function getLoop() {\n return this.get('loop');\n }\n\n /**\n * A promise to set the loop state of the player.\n *\n * @promise SetLoopPromise\n * @fulfill {boolean} The loop state that was set.\n */\n /**\n * Set the loop state of the player. When set to `true`, the player\n * will start over immediately once playback ends.\n *\n * @param {boolean} loop\n * @return {SetLoopPromise}\n */\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n return this.set('loop', loop);\n }\n\n /**\n * A promise to set the muted state of the player.\n *\n * @promise SetMutedPromise\n * @fulfill {boolean} The muted state that was set.\n */\n /**\n * Set the muted state of the player. When set to `true`, the player\n * volume will be muted.\n *\n * @param {boolean} muted\n * @return {SetMutedPromise}\n */\n }, {\n key: \"setMuted\",\n value: function setMuted(muted) {\n return this.set('muted', muted);\n }\n\n /**\n * A promise to get the muted state of the player.\n *\n * @promise GetMutedPromise\n * @fulfill {boolean} Whether or not the player is muted.\n */\n /**\n * Get the muted state of the player.\n *\n * @return {GetMutedPromise}\n */\n }, {\n key: \"getMuted\",\n value: function getMuted() {\n return this.get('muted');\n }\n\n /**\n * A promise to get the paused state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the video is paused.\n */\n /**\n * Get the paused state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getPaused\",\n value: function getPaused() {\n return this.get('paused');\n }\n\n /**\n * A promise to get the playback rate of the player.\n *\n * @promise GetPlaybackRatePromise\n * @fulfill {number} The playback rate of the player on a scale from 0 to 2.\n */\n /**\n * Get the playback rate of the player on a scale from `0` to `2`.\n *\n * @return {GetPlaybackRatePromise}\n */\n }, {\n key: \"getPlaybackRate\",\n value: function getPlaybackRate() {\n return this.get('playbackRate');\n }\n\n /**\n * A promise to set the playbackrate of the player.\n *\n * @promise SetPlaybackRatePromise\n * @fulfill {number} The playback rate was set.\n * @reject {RangeError} The playback rate was less than 0 or greater than 2.\n */\n /**\n * Set the playback rate of the player on a scale from `0` to `2`. When set\n * via the API, the playback rate will not be synchronized to other\n * players or stored as the viewer's preference.\n *\n * @param {number} playbackRate\n * @return {SetPlaybackRatePromise}\n */\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(playbackRate) {\n return this.set('playbackRate', playbackRate);\n }\n\n /**\n * A promise to get the played property of the video.\n *\n * @promise GetPlayedPromise\n * @fulfill {Array} Played Timeranges converted to an Array.\n */\n /**\n * Get the played property of the video.\n *\n * @return {GetPlayedPromise}\n */\n }, {\n key: \"getPlayed\",\n value: function getPlayed() {\n return this.get('played');\n }\n\n /**\n * A promise to get the qualities available of the current video.\n *\n * @promise GetQualitiesPromise\n * @fulfill {Array} The qualities of the video.\n */\n /**\n * Get the qualities of the current video.\n *\n * @return {GetQualitiesPromise}\n */\n }, {\n key: \"getQualities\",\n value: function getQualities() {\n return this.get('qualities');\n }\n\n /**\n * A promise to get the current set quality of the video.\n *\n * @promise GetQualityPromise\n * @fulfill {string} The current set quality.\n */\n /**\n * Get the current set quality of the video.\n *\n * @return {GetQualityPromise}\n */\n }, {\n key: \"getQuality\",\n value: function getQuality() {\n return this.get('quality');\n }\n\n /**\n * A promise to set the video quality.\n *\n * @promise SetQualityPromise\n * @fulfill {number} The quality was set.\n * @reject {RangeError} The quality is not available.\n */\n /**\n * Set a video quality.\n *\n * @param {string} quality\n * @return {SetQualityPromise}\n */\n }, {\n key: \"setQuality\",\n value: function setQuality(quality) {\n return this.set('quality', quality);\n }\n\n /**\n * A promise to get the remote playback availability.\n *\n * @promise RemotePlaybackAvailabilityPromise\n * @fulfill {boolean} Whether remote playback is available.\n */\n /**\n * Get the availability of remote playback.\n *\n * @return {RemotePlaybackAvailabilityPromise}\n */\n }, {\n key: \"getRemotePlaybackAvailability\",\n value: function getRemotePlaybackAvailability() {\n return this.get('remotePlaybackAvailability');\n }\n\n /**\n * A promise to get the current remote playback state.\n *\n * @promise RemotePlaybackStatePromise\n * @fulfill {string} The state of the remote playback: connecting, connected, or disconnected.\n */\n /**\n * Get the current remote playback state.\n *\n * @return {RemotePlaybackStatePromise}\n */\n }, {\n key: \"getRemotePlaybackState\",\n value: function getRemotePlaybackState() {\n return this.get('remotePlaybackState');\n }\n\n /**\n * A promise to get the seekable property of the video.\n *\n * @promise GetSeekablePromise\n * @fulfill {Array} Seekable Timeranges converted to an Array.\n */\n /**\n * Get the seekable property of the video.\n *\n * @return {GetSeekablePromise}\n */\n }, {\n key: \"getSeekable\",\n value: function getSeekable() {\n return this.get('seekable');\n }\n\n /**\n * A promise to get the seeking property of the player.\n *\n * @promise GetSeekingPromise\n * @fulfill {boolean} Whether or not the player is currently seeking.\n */\n /**\n * Get if the player is currently seeking.\n *\n * @return {GetSeekingPromise}\n */\n }, {\n key: \"getSeeking\",\n value: function getSeeking() {\n return this.get('seeking');\n }\n\n /**\n * A promise to get the text tracks of a video.\n *\n * @promise GetTextTracksPromise\n * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.\n */\n /**\n * Get an array of the text tracks that exist for the video.\n *\n * @return {GetTextTracksPromise}\n */\n }, {\n key: \"getTextTracks\",\n value: function getTextTracks() {\n return this.get('textTracks');\n }\n\n /**\n * A promise to get the audio tracks of a video.\n *\n * @promise GetAudioTracksPromise\n * @fulfill {VimeoAudioTrack[]} The audio tracks associated with the video.\n */\n /**\n * Get an array of the audio tracks that exist for the video.\n *\n * @return {GetAudioTracksPromise}\n */\n }, {\n key: \"getAudioTracks\",\n value: function getAudioTracks() {\n return this.get('audioTracks');\n }\n\n /**\n * A promise to get the enabled audio track of a video.\n *\n * @promise GetAudioTrackPromise\n * @fulfill {VimeoAudioTrack} The enabled audio track.\n */\n /**\n * Get the enabled audio track for a video.\n *\n * @return {GetAudioTrackPromise}\n */\n }, {\n key: \"getEnabledAudioTrack\",\n value: function getEnabledAudioTrack() {\n return this.get('enabledAudioTrack');\n }\n\n /**\n * Get the main audio track for a video.\n *\n * @return {GetAudioTrackPromise}\n */\n }, {\n key: \"getDefaultAudioTrack\",\n value: function getDefaultAudioTrack() {\n return this.get('defaultAudioTrack');\n }\n\n /**\n * A promise to get the embed code for the video.\n *\n * @promise GetVideoEmbedCodePromise\n * @fulfill {string} The `<iframe>` embed code for the video.\n */\n /**\n * Get the `<iframe>` embed code for the video.\n *\n * @return {GetVideoEmbedCodePromise}\n */\n }, {\n key: \"getVideoEmbedCode\",\n value: function getVideoEmbedCode() {\n return this.get('videoEmbedCode');\n }\n\n /**\n * A promise to get the id of the video.\n *\n * @promise GetVideoIdPromise\n * @fulfill {number} The id of the video.\n */\n /**\n * Get the id of the video.\n *\n * @return {GetVideoIdPromise}\n */\n }, {\n key: \"getVideoId\",\n value: function getVideoId() {\n return this.get('videoId');\n }\n\n /**\n * A promise to get the title of the video.\n *\n * @promise GetVideoTitlePromise\n * @fulfill {number} The title of the video.\n */\n /**\n * Get the title of the video.\n *\n * @return {GetVideoTitlePromise}\n */\n }, {\n key: \"getVideoTitle\",\n value: function getVideoTitle() {\n return this.get('videoTitle');\n }\n\n /**\n * A promise to get the native width of the video.\n *\n * @promise GetVideoWidthPromise\n * @fulfill {number} The native width of the video.\n */\n /**\n * Get the native width of the currently‐playing video. The width of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoWidthPromise}\n */\n }, {\n key: \"getVideoWidth\",\n value: function getVideoWidth() {\n return this.get('videoWidth');\n }\n\n /**\n * A promise to get the native height of the video.\n *\n * @promise GetVideoHeightPromise\n * @fulfill {number} The native height of the video.\n */\n /**\n * Get the native height of the currently‐playing video. The height of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoHeightPromise}\n */\n }, {\n key: \"getVideoHeight\",\n value: function getVideoHeight() {\n return this.get('videoHeight');\n }\n\n /**\n * A promise to get the vimeo.com url for the video.\n *\n * @promise GetVideoUrlPromise\n * @fulfill {number} The vimeo.com url for the video.\n * @reject {PrivacyError} The url isn’t available because of the video’s privacy setting.\n */\n /**\n * Get the vimeo.com url for the video.\n *\n * @return {GetVideoUrlPromise}\n */\n }, {\n key: \"getVideoUrl\",\n value: function getVideoUrl() {\n return this.get('videoUrl');\n }\n\n /**\n * A promise to get the volume level of the player.\n *\n * @promise GetVolumePromise\n * @fulfill {number} The volume level of the player on a scale from 0 to 1.\n */\n /**\n * Get the current volume level of the player on a scale from `0` to `1`.\n *\n * Most mobile devices do not support an independent volume from the\n * system volume. In those cases, this method will always return `1`.\n *\n * @return {GetVolumePromise}\n */\n }, {\n key: \"getVolume\",\n value: function getVolume() {\n return this.get('volume');\n }\n\n /**\n * A promise to set the volume level of the player.\n *\n * @promise SetVolumePromise\n * @fulfill {number} The volume was set.\n * @reject {RangeError} The volume was less than 0 or greater than 1.\n */\n /**\n * Set the volume of the player on a scale from `0` to `1`. When set\n * via the API, the volume level will not be synchronized to other\n * players or stored as the viewer’s preference.\n *\n * Most mobile devices do not support setting the volume. An error will\n * *not* be triggered in that situation.\n *\n * @param {number} volume\n * @return {SetVolumePromise}\n */\n }, {\n key: \"setVolume\",\n value: function setVolume(volume) {\n return this.set('volume', volume);\n }\n\n /** @typedef {import('timing-object').ITimingObject} TimingObject */\n /** @typedef {import('./lib/timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n /** @typedef {import('./lib/timing-src-connector').TimingSrcConnector} TimingSrcConnector */\n\n /**\n * Connects a TimingObject to the video player (https://webtiming.github.io/timingobject/)\n *\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n *\n * @return {Promise<TimingSrcConnector>}\n */\n }, {\n key: \"setTimingSrc\",\n value: function () {\n var _setTimingSrc = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(timingObject, options) {\n var _this6 = this;\n var connector;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (timingObject) {\n _context.next = 2;\n break;\n }\n throw new TypeError('A Timing Object must be provided.');\n case 2:\n _context.next = 4;\n return this.ready();\n case 4:\n connector = new TimingSrcConnector(this, timingObject, options);\n postMessage(this, 'notifyTimingObjectConnect');\n connector.addEventListener('disconnect', function () {\n return postMessage(_this6, 'notifyTimingObjectDisconnect');\n });\n return _context.abrupt(\"return\", connector);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function setTimingSrc(_x, _x2) {\n return _setTimingSrc.apply(this, arguments);\n }\n return setTimingSrc;\n }()\n }], [{\n key: \"isVimeoUrl\",\n value: function isVimeoUrl$1(url) {\n return isVimeoUrl(url);\n }\n }]);\n return Player;\n}(); // Setup embed only if this is not a server runtime\nif (!isServerRuntime) {\n screenfull = initializeScreenfull();\n initializeEmbeds();\n resizeEmbeds();\n initAppendVideoMetadata();\n checkUrlTimeParam();\n updateDRMEmbeds();\n}\n\nexport default Player;\n","'use strict';\n\nvar Sister;\n\n/**\n* @link https://github.com/gajus/sister for the canonical source repository\n* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause\n*/\nSister = function () {\n var sister = {},\n events = {};\n\n /**\n * @name handler\n * @function\n * @param {Object} data Event data.\n */\n\n /**\n * @param {String} name Event name.\n * @param {handler} handler\n * @return {listener}\n */\n sister.on = function (name, handler) {\n var listener = {name: name, handler: handler};\n events[name] = events[name] || [];\n events[name].unshift(listener);\n return listener;\n };\n\n /**\n * @param {listener}\n */\n sister.off = function (listener) {\n var index = events[listener.name].indexOf(listener);\n\n if (index !== -1) {\n events[listener.name].splice(index, 1);\n }\n };\n\n /**\n * @param {String} name Event name.\n * @param {Object} data Event data.\n */\n sister.trigger = function (name, data) {\n var listeners = events[name],\n i;\n\n if (listeners) {\n i = listeners.length;\n while (i--) {\n listeners[i].handler(data);\n }\n }\n };\n\n return sister;\n};\n\nmodule.exports = Sister;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n BUFFERING: 3,\n ENDED: 0,\n PAUSED: 2,\n PLAYING: 1,\n UNSTARTED: -1,\n VIDEO_CUED: 5\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _PlayerStates = require('./constants/PlayerStates');\n\nvar _PlayerStates2 = _interopRequireDefault(_PlayerStates);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n pauseVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PAUSED],\n stateChangeRequired: false\n },\n playVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING],\n stateChangeRequired: false\n },\n seekTo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING, _PlayerStates2.default.PAUSED],\n stateChangeRequired: true,\n\n // TRICKY: `seekTo` may not cause a state change if no buffering is\n // required.\n // eslint-disable-next-line unicorn/numeric-separators-style\n timeout: 3000\n }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n * `volumeChange` is not officially supported but seems to work\n * it emits an object: `{volume: 82.6923076923077, muted: false}`\n */\nexports.default = ['ready', 'stateChange', 'playbackQualityChange', 'playbackRateChange', 'error', 'apiChange', 'volumeChange'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Functions\n */\nexports.default = ['cueVideoById', 'loadVideoById', 'cueVideoByUrl', 'loadVideoByUrl', 'playVideo', 'pauseVideo', 'stopVideo', 'getVideoLoadedFraction', 'cuePlaylist', 'loadPlaylist', 'nextVideo', 'previousVideo', 'playVideoAt', 'setShuffle', 'setLoop', 'getPlaylist', 'getPlaylistIndex', 'setOption', 'mute', 'unMute', 'isMuted', 'setVolume', 'getVolume', 'seekTo', 'getPlayerState', 'getPlaybackRate', 'setPlaybackRate', 'getAvailablePlaybackRates', 'getPlaybackQuality', 'setPlaybackQuality', 'getAvailableQualityLevels', 'getCurrentTime', 'getDuration', 'removeEventListener', 'getVideoUrl', 'getVideoEmbedCode', 'getOptions', 'getOption', 'addEventListener', 'destroy', 'setSize', 'getIframe', 'getSphericalProperties', 'setSphericalProperties'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _debug = require('debug');\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _FunctionStateMap = require('./FunctionStateMap');\n\nvar _FunctionStateMap2 = _interopRequireDefault(_FunctionStateMap);\n\nvar _eventNames = require('./eventNames');\n\nvar _eventNames2 = _interopRequireDefault(_eventNames);\n\nvar _functionNames = require('./functionNames');\n\nvar _functionNames2 = _interopRequireDefault(_functionNames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable promise/prefer-await-to-then */\n\nconst debug = (0, _debug2.default)('youtube-player');\n\nconst YouTubePlayer = {};\n\n/**\n * Construct an object that defines an event handler for all of the YouTube\n * player events. Proxy captured events through an event emitter.\n *\n * @todo Capture event parameters.\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n */\nYouTubePlayer.proxyEvents = emitter => {\n const events = {};\n\n for (const eventName of _eventNames2.default) {\n const onEventName = 'on' + eventName.slice(0, 1).toUpperCase() + eventName.slice(1);\n\n events[onEventName] = event => {\n debug('event \"%s\"', onEventName, event);\n\n emitter.trigger(eventName, event);\n };\n }\n\n return events;\n};\n\n/**\n * Delays player API method execution until player state is ready.\n *\n * @todo Proxy all of the methods using Object.keys.\n * @todo See TRICKY below.\n * @param playerAPIReady Promise that resolves when player is ready.\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions.\n * @returns {object}\n */\nYouTubePlayer.promisifyPlayer = (playerAPIReady, strictState = false) => {\n const functions = {};\n\n for (const functionName of _functionNames2.default) {\n if (strictState && _FunctionStateMap2.default[functionName]) {\n functions[functionName] = (...args) => {\n return playerAPIReady.then(player => {\n const stateInfo = _FunctionStateMap2.default[functionName];\n const playerState = player.getPlayerState();\n\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n const value = player[functionName].apply(player, args);\n\n // TRICKY: For functions like `seekTo`, a change in state must be\n // triggered given that the resulting state could match the initial\n // state.\n if (stateInfo.stateChangeRequired ||\n\n // eslint-disable-next-line no-extra-parens\n Array.isArray(stateInfo.acceptableStates) && !stateInfo.acceptableStates.includes(playerState)) {\n return new Promise(resolve => {\n const onPlayerStateChange = () => {\n const playerStateAfterChange = player.getPlayerState();\n\n let timeout;\n\n if (typeof stateInfo.timeout === 'number') {\n timeout = setTimeout(() => {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n resolve();\n }, stateInfo.timeout);\n }\n\n if (Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.includes(playerStateAfterChange)) {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n clearTimeout(timeout);\n\n resolve();\n }\n };\n\n player.addEventListener('onStateChange', onPlayerStateChange);\n }).then(() => {\n return value;\n });\n }\n\n return value;\n });\n };\n } else {\n functions[functionName] = (...args) => {\n return playerAPIReady.then(player => {\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n return player[functionName].apply(player, args);\n });\n };\n }\n }\n\n return functions;\n};\n\nexports.default = YouTubePlayer;\nmodule.exports = exports['default'];","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loadScript = require('load-script');\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = emitter => {\n /**\n * A promise that is resolved when window.onYouTubeIframeAPIReady is called.\n * The promise is resolved with a reference to window.YT object.\n */\n const iframeAPIReady = new Promise(resolve => {\n if (window.YT && window.YT.Player && window.YT.Player instanceof Function) {\n resolve(window.YT);\n\n return;\n } else {\n const protocol = window.location.protocol === 'http:' ? 'http:' : 'https:';\n\n (0, _loadScript2.default)(protocol + '//www.youtube.com/iframe_api', error => {\n if (error) {\n emitter.trigger('error', error);\n }\n });\n }\n\n const previous = window.onYouTubeIframeAPIReady;\n\n // The API will call this function when page has finished downloading\n // the JavaScript for the player API.\n window.onYouTubeIframeAPIReady = () => {\n if (previous) {\n previous();\n }\n\n resolve(window.YT);\n };\n });\n\n return iframeAPIReady;\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _sister = require('sister');\n\nvar _sister2 = _interopRequireDefault(_sister);\n\nvar _YouTubePlayer = require('./YouTubePlayer');\n\nvar _YouTubePlayer2 = _interopRequireDefault(_YouTubePlayer);\n\nvar _loadYouTubeIframeApi = require('./loadYouTubeIframeApi');\n\nvar _loadYouTubeIframeApi2 = _interopRequireDefault(_loadYouTubeIframeApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @typedef YT.Player\n * @see https://developers.google.com/youtube/iframe_api_reference\n */\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player\n */\nlet youtubeIframeAPI;\n\n/**\n * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object.\n *\n * @param maybeElementId Either An existing YT.Player instance,\n * the DOM element or the id of the HTML element where the API will insert an <iframe>.\n * @param options See `options` (Ignored when using an existing YT.Player instance).\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions. Default: `false`.\n * See `FunctionStateMap.js` for supported functions and acceptable states.\n */\n\n\nexports.default = (maybeElementId, options = {}, strictState = false) => {\n const emitter = (0, _sister2.default)();\n\n if (!youtubeIframeAPI) {\n youtubeIframeAPI = (0, _loadYouTubeIframeApi2.default)(emitter);\n }\n\n if (options.events) {\n throw new Error('Event handlers cannot be overwritten.');\n }\n\n // eslint-disable-next-line unicorn/prefer-query-selector\n if (typeof maybeElementId === 'string' && !document.getElementById(maybeElementId)) {\n throw new Error('Element \"' + maybeElementId + '\" does not exist.');\n }\n\n options.events = _YouTubePlayer2.default.proxyEvents(emitter);\n\n const playerAPIReady = new Promise(resolve => {\n if (typeof maybeElementId === 'object' && maybeElementId.playVideo instanceof Function) {\n const player = maybeElementId;\n\n resolve(player);\n } else {\n // asume maybeElementId can be rendered inside\n // eslint-disable-next-line promise/catch-or-return\n youtubeIframeAPI.then(YT => {\n // eslint-disable-line promise/prefer-await-to-then\n const player = new YT.Player(maybeElementId, options);\n\n emitter.on('ready', () => {\n resolve(player);\n });\n\n return null;\n });\n }\n });\n\n const playerApi = _YouTubePlayer2.default.promisifyPlayer(playerAPIReady, strictState);\n\n playerApi.on = emitter.on;\n playerApi.off = emitter.off;\n\n return playerApi;\n};\n\nmodule.exports = exports['default'];","import VimeoPlayer from \"@vimeo/player\";\nimport { useEffect, useRef, useState, useCallback } from \"react\";\nimport YouTubePlayer from \"youtube-player\";\n\nimport type { VideoProvider } from \"@/components/foundations/BackgroundVideo/VideoBackground.types\";\n\ninterface UseVideoPlayerOptions {\n src?: string;\n provider?: VideoProvider;\n autoplay?: boolean;\n muted?: boolean;\n loop?: boolean;\n showControls?: boolean;\n containerRef: React.RefObject<HTMLDivElement | null>;\n onPlay?: () => void;\n onPause?: () => void;\n onEnded?: () => void;\n onError?: (err: Error) => void;\n}\n\ntype YouTubePlayerInstance = ReturnType<typeof YouTubePlayer>;\n\nexport function useVideoPlayer({\n src,\n provider,\n autoplay = false,\n muted = false,\n loop = false,\n showControls = false,\n containerRef,\n onPlay,\n onPause,\n onEnded,\n onError,\n}: UseVideoPlayerOptions) {\n const vimeoPlayerRef = useRef<VimeoPlayer | null>(null);\n const youtubePlayerRef = useRef<YouTubePlayerInstance | null>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n\n const getVideoId = useCallback((url: string, type: VideoProvider) => {\n if (type === \"youtube\") {\n return (\n url.match(\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([^&\\n?#]+)/,\n )?.[1] ?? null\n );\n }\n if (type === \"vimeo\") {\n return url.match(/vimeo\\.com\\/(\\d+)/)?.[1] ?? null;\n }\n return null;\n }, []);\n\n const initializePlayer = useCallback(() => {\n if (!src || !provider || !containerRef.current) return;\n\n const id = getVideoId(src, provider);\n if (!id) return;\n\n try {\n if (provider === \"youtube\") {\n youtubePlayerRef.current = YouTubePlayer(containerRef.current, {\n videoId: id,\n playerVars: {\n autoplay: autoplay ? 1 : 0,\n controls: showControls ? 1 : 0,\n rel: 0,\n modestbranding: 1,\n playsinline: 1,\n loop: loop ? 1 : 0,\n ...(showControls ? {} : { background: 1 }),\n },\n });\n\n youtubePlayerRef.current.on(\"stateChange\", ({ data }) => {\n if (data === 1) {\n setIsPlaying(true);\n onPlay?.();\n } else if (data === 2) {\n setIsPlaying(false);\n onPause?.();\n } else if (data === 0) {\n setIsPlaying(false);\n onEnded?.();\n }\n });\n\n youtubePlayerRef.current.on(\"ready\", () => {\n if (muted) {\n youtubePlayerRef.current?.mute();\n }\n });\n }\n\n if (provider === \"vimeo\") {\n vimeoPlayerRef.current = new VimeoPlayer(containerRef.current, {\n id,\n autoplay,\n muted,\n loop,\n controls: showControls,\n background: !showControls,\n });\n\n vimeoPlayerRef.current.on(\"play\", () => {\n setIsPlaying(true);\n onPlay?.();\n });\n\n vimeoPlayerRef.current.on(\"pause\", () => {\n setIsPlaying(false);\n onPause?.();\n });\n\n vimeoPlayerRef.current.on(\"ended\", () => {\n if (!loop) {\n setIsPlaying(false);\n onEnded?.();\n }\n });\n\n vimeoPlayerRef.current.on(\"error\", (err) =>\n onError?.(new Error(`Vimeo error: ${err.message}`)),\n );\n }\n } catch (err) {\n onError?.(err as Error);\n }\n }, [\n src,\n provider,\n containerRef,\n autoplay,\n muted,\n loop,\n showControls,\n getVideoId,\n onPlay,\n onPause,\n onEnded,\n onError,\n ]);\n\n useEffect(() => {\n initializePlayer();\n return () => {\n vimeoPlayerRef.current?.destroy();\n youtubePlayerRef.current?.destroy?.();\n };\n }, [initializePlayer]);\n\n const play = useCallback(async () => {\n if (vimeoPlayerRef.current) await vimeoPlayerRef.current.play();\n else if (youtubePlayerRef.current) await youtubePlayerRef.current.playVideo();\n }, []);\n\n const pause = useCallback(async () => {\n if (vimeoPlayerRef.current) await vimeoPlayerRef.current.pause();\n else if (youtubePlayerRef.current) await youtubePlayerRef.current.pauseVideo();\n }, []);\n\n const togglePlayback = useCallback(async () => {\n if (isPlaying) {\n await pause();\n } else {\n await play();\n }\n }, [isPlaying, play, pause]);\n\n return {\n isPlaying,\n play,\n pause,\n togglePlayback,\n };\n}\n","import { forwardRef, useRef, useImperativeHandle } from \"react\";\n\nimport { useVideoPlayer } from \"@/lib/hooks/useVideoPlayer\";\n\nimport type { VideoBackgroundHandle, VideoBackgroundProps } from \"@/components\";\n\nexport const VideoBackground = forwardRef<VideoBackgroundHandle, VideoBackgroundProps>(\n (props, ref) => {\n const { className = \"\", videoSource, videoProvider, ...playerOptions } = props;\n\n // DOM container ref for the hook\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Hook usage\n const { isPlaying, play, pause, togglePlayback } = useVideoPlayer({\n containerRef, // ✅ Pass the DOM ref, not forwardRef\n src: videoSource,\n provider: videoProvider,\n ...playerOptions,\n });\n\n // Expose imperative methods to parent\n useImperativeHandle(\n ref,\n () => ({\n play,\n pause,\n togglePlayback,\n isPlaying,\n }),\n [play, pause, togglePlayback, isPlaying],\n );\n\n if (!videoSource || !videoProvider) return null;\n\n return (\n <div className={className}>\n <div\n ref={containerRef}\n className=\"absolute aspect-video bg-black left-1/2 min-h-full min-w-full top-1/2 -translate-x-1/2 -translate-y-1/2 [&_iframe]:absolute [&_iframe]:inset-0 [&_iframe]:min-h-full [&_iframe]:min-w-full\"\n />\n </div>\n );\n },\n);\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nconst SvgStar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 19, height: 20, viewBox: \"0 0 19 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.8096 13.3164C14.8126 13.3279 15.2296 14.8934 15.9219 15.5703C16.6167 16.2497 18.2275 16.6582 18.2275 16.6582C18.2275 16.6582 16.6167 17.0667 15.9219 17.7461C15.2272 18.4256 14.8096 20 14.8096 20C14.8096 20 14.392 18.4256 13.6973 17.7461C13.0024 17.0667 11.3916 16.6582 11.3916 16.6582C11.3916 16.6582 13.0024 16.2497 13.6973 15.5703C14.3898 14.8931 14.8069 13.3266 14.8096 13.3164ZM7.12012 3.03809C7.12686 3.06343 7.99568 6.3234 9.4375 7.7334C10.885 9.14883 14.2402 10 14.2402 10C14.2402 10 10.885 10.8512 9.4375 12.2666C7.99011 13.6822 7.12012 16.9619 7.12012 16.9619C7.12012 16.9619 6.2493 13.682 4.80176 12.2666C3.35664 10.8535 0.0112161 10.0028 0 10C0 10 3.35415 9.14876 4.80176 7.7334C6.24667 6.32055 7.11695 3.05 7.12012 3.03809ZM14.8096 0C14.8106 0.00385251 15.228 1.57529 15.9219 2.25391C16.6167 2.93331 18.2275 3.3418 18.2275 3.3418C18.2275 3.3418 16.6167 3.75028 15.9219 4.42969C15.2272 5.10918 14.8096 6.68359 14.8096 6.68359C14.8096 6.68359 14.392 5.1092 13.6973 4.42969C13.0024 3.75028 11.3916 3.3418 11.3916 3.3418C11.3916 3.3418 13.0024 2.93331 13.6973 2.25391C14.392 1.57444 14.8096 0 14.8096 0Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.8096 13.3164C14.8126 13.3279 15.2296 14.8934 15.9219 15.5703C16.6167 16.2497 18.2275 16.6582 18.2275 16.6582C18.2275 16.6582 16.6167 17.0667 15.9219 17.7461C15.2272 18.4256 14.8096 20 14.8096 20C14.8096 20 14.392 18.4256 13.6973 17.7461C13.0024 17.0667 11.3916 16.6582 11.3916 16.6582C11.3916 16.6582 13.0024 16.2497 13.6973 15.5703C14.3898 14.8931 14.8069 13.3266 14.8096 13.3164ZM7.12012 3.03809C7.12686 3.06343 7.99568 6.3234 9.4375 7.7334C10.885 9.14883 14.2402 10 14.2402 10C14.2402 10 10.885 10.8512 9.4375 12.2666C7.99011 13.6822 7.12012 16.9619 7.12012 16.9619C7.12012 16.9619 6.2493 13.682 4.80176 12.2666C3.35664 10.8535 0.0112161 10.0028 0 10C0 10 3.35415 9.14876 4.80176 7.7334C6.24667 6.32055 7.11695 3.05 7.12012 3.03809ZM14.8096 0C14.8106 0.00385251 15.228 1.57529 15.9219 2.25391C16.6167 2.93331 18.2275 3.3418 18.2275 3.3418C18.2275 3.3418 16.6167 3.75028 15.9219 4.42969C15.2272 5.10918 14.8096 6.68359 14.8096 6.68359C14.8096 6.68359 14.392 5.1092 13.6973 4.42969C13.0024 3.75028 11.3916 3.3418 11.3916 3.3418C11.3916 3.3418 13.0024 2.93331 13.6973 2.25391C14.392 1.57444 14.8096 0 14.8096 0Z\", fill: \"currentColor\" }));\nexport default SvgStar;\n","import * as Slot from \"@radix-ui/react-slot\";\n\nimport Star from \"@/assets/star.svg?react\";\n\nimport type { ButtonProps } from \"@/components\";\nimport \"./Button.css\";\n\nexport function Button({\n asChild,\n children,\n className = \"\",\n displayStars,\n variant = \"primary\",\n ...props\n}: ButtonProps) {\n if (!children) return null;\n\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp {...props} className={`button button-${variant} ${className}`}>\n {displayStars ? <Star /> : null}\n <Slot.Slottable>{children}</Slot.Slottable>\n {displayStars ? <Star /> : null}\n </Comp>\n );\n}\n","import * as React from \"react\";\nconst SvgCopy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_3157_256984)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.8926 6.03125C18.6087 6.03137 19.9997 7.4226 20 9.13867V16.8926C19.9999 18.6088 18.6088 19.9999 16.8926 20H9.13867C7.42258 19.9997 6.03137 18.6087 6.03125 16.8926V9.13867C6.03151 7.42268 7.42267 6.0315 9.13867 6.03125H16.8926ZM9.13867 8.7998C8.95211 8.80006 8.80007 8.95212 8.7998 9.13867V16.8926C8.79992 17.0793 8.95203 17.2302 9.13867 17.2305H16.8926C17.0793 17.2303 17.2303 17.0793 17.2305 16.8926V9.13867C17.2302 8.95204 17.0792 8.79993 16.8926 8.7998H9.13867ZM10.8623 0C11.6863 0.000123014 12.4769 0.327602 13.0596 0.910156C13.6422 1.49295 13.9688 2.28431 13.9688 3.1084V3.96875H11.2002V3.1084C11.2002 3.01878 11.1648 2.93161 11.1016 2.86816C11.0382 2.80495 10.9518 2.76965 10.8623 2.76953H3.1084C3.01863 2.76953 2.93164 2.80469 2.86816 2.86816C2.80469 2.93164 2.76953 3.01863 2.76953 3.1084V10.8623C2.76966 10.9518 2.80496 11.0382 2.86816 11.1016C2.93161 11.1648 3.01878 11.2002 3.1084 11.2002H3.96875V13.9688H3.1084C2.28431 13.9688 1.49295 13.6422 0.910156 13.0596C0.327606 12.4769 0.000128711 11.6862 0 10.8623V3.1084C0 2.28417 0.327336 1.49298 0.910156 0.910156C1.49298 0.327336 2.28416 0 3.1084 0H10.8623Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_3157_256984\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgCopy;\n","import * as React from \"react\";\nconst SvgEmail = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.1914 2.07426C18.4044 2.07443 19.4802 2.84592 19.8564 3.95122C19.9762 4.15149 20.02 4.38002 19.9912 4.59966C19.9968 4.67013 20 4.74143 20 4.81352V15.1866C19.9995 16.7323 18.7005 17.9256 17.1914 17.9258H2.80859C1.29952 17.9256 0.000453441 16.7323 0 15.1866V4.81352C1.53234e-05 4.74143 0.00323412 4.67013 0.00878906 4.59966C-0.0199639 4.38019 0.0230616 4.15138 0.142578 3.95122C0.518727 2.84576 1.59545 2.07443 2.80859 2.07426H17.1914ZM2.02246 15.1866C2.02294 15.5414 2.34114 15.9032 2.80859 15.9034H17.1914C17.6589 15.9032 17.9771 15.5414 17.9775 15.1866V6.52153L10.6162 12.1846C10.2529 12.4639 9.74713 12.4639 9.38379 12.1846L2.02246 6.52055V15.1866ZM2.80859 4.09673C2.63443 4.0968 2.48046 4.14623 2.35645 4.22758L10 10.1065L17.6426 4.22758C17.5187 4.1465 17.3652 4.0968 17.1914 4.09673H2.80859Z\", fill: \"currentColor\" }));\nexport default SvgEmail;\n","import * as React from \"react\";\nconst SvgFacebook = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.88086 11.6914V20H11.4121V11.6914H14.791L15.4941 7.87109H11.4121V6.51953C11.4121 4.5 12.2051 3.72656 14.252 3.72656C14.8887 3.72656 15.4004 3.74219 15.6973 3.77344V0.308594C15.1387 0.15625 13.7715 0 12.9824 0C8.80664 0 6.88086 1.97266 6.88086 6.22656V7.87109H4.30273V11.6914H6.88086Z\", fill: \"currentColor\" }));\nexport default SvgFacebook;\n","import * as React from \"react\";\nconst SvgInstagram = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5304)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.4443 0C17.5126 0 20 2.48742 20 5.55566V14.4443C20 17.5126 17.5126 20 14.4443 20H5.55566C2.48742 20 0 17.5126 0 14.4443V5.55566C0 2.48742 2.48742 0 5.55566 0H14.4443ZM5.55566 2.22266C3.71471 2.22266 2.22266 3.71471 2.22266 5.55566V14.4443C2.22266 16.2853 3.71471 17.7773 5.55566 17.7773H14.4443C16.2853 17.7773 17.7773 16.2853 17.7773 14.4443V5.55566C17.7773 3.71471 16.2853 2.22266 14.4443 2.22266H5.55566ZM7.88867 5.81934C8.75992 5.36728 9.7527 5.20173 10.7236 5.3457C11.7138 5.49268 12.6301 5.9543 13.3379 6.66211C14.0457 7.36993 14.5073 8.28623 14.6543 9.27637C14.7983 10.2473 14.6327 11.2401 14.1807 12.1113C13.7286 12.9823 13.0133 13.6886 12.1367 14.1299C11.26 14.5712 10.2659 14.7253 9.29688 14.5693C8.32785 14.4134 7.43328 13.9548 6.73926 13.2607C6.04524 12.5667 5.58664 11.6721 5.43066 10.7031C5.27475 9.73406 5.42883 8.74002 5.87012 7.86328C6.31136 6.98674 7.01766 6.2714 7.88867 5.81934ZM10.3965 7.54297C9.88813 7.46771 9.36828 7.55436 8.91211 7.79102C8.45596 8.02776 8.08661 8.40329 7.85547 8.8623C7.62435 9.32148 7.5434 9.84208 7.625 10.3496C7.70668 10.8572 7.94699 11.3259 8.31055 11.6895C8.67411 12.053 9.14277 12.2933 9.65039 12.375C10.1579 12.4566 10.6785 12.3756 11.1377 12.1445C11.5967 11.9134 11.9722 11.544 12.209 11.0879C12.4456 10.6317 12.5323 10.1119 12.457 9.60352C12.3801 9.08473 12.1374 8.60425 11.7666 8.2334C11.3958 7.86255 10.9153 7.6199 10.3965 7.54297ZM14.8975 4C15.5111 4 16.0088 4.49768 16.0088 5.11133C16.0087 5.72488 15.511 6.22266 14.8975 6.22266H14.8887C14.2752 6.22255 13.7775 5.72481 13.7773 5.11133C13.7773 4.49774 14.2751 4.0001 14.8887 4H14.8975Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5304\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgInstagram;\n","import * as React from \"react\";\nconst SvgLinkedin = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5301)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.47768 20H0.330357V6.64732H4.47768V20ZM2.40179 4.82589C1.07589 4.82589 0 3.72768 0 2.40179C0 1.76339 0.254464 1.15625 0.705357 0.705357C1.15625 0.254464 1.76786 0 2.40179 0C3.03571 0 3.64732 0.254464 4.09821 0.705357C4.54911 1.15625 4.80357 1.76786 4.80357 2.40179C4.80357 3.72768 3.72768 4.82589 2.40179 4.82589ZM19.9955 20H15.8571V13.5C15.8571 11.9509 15.8259 9.96429 13.7009 9.96429C11.5446 9.96429 11.2143 11.6473 11.2143 13.3884V20H7.07143V6.64732H11.0491V8.46875H11.1071C11.6607 7.41964 13.0134 6.3125 15.0313 6.3125C19.2277 6.3125 20 9.07589 20 12.6652V20H19.9955Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5301\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgLinkedin;\n","import * as React from \"react\";\nconst SvgX = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5302)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.7512 0.960923H18.818L12.1179 8.61864L20 19.0391H13.8284L8.99458 12.7191L3.46359 19.0391H0.394938L7.5613 10.8483L0 0.960923H6.32828L10.6976 6.73759L15.7512 0.960923ZM14.6748 17.2035H16.3742L5.4049 2.70013H3.58133L14.6748 17.2035Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5302\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgX;\n","import * as React from \"react\";\nconst SvgYoutube = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.2564 2.78418C10.4202 2.78488 10.6561 2.78626 10.9429 2.78906C11.517 2.79467 12.2996 2.80566 13.1275 2.82812C13.9543 2.85057 14.8328 2.88452 15.5991 2.93555C16.2553 2.97926 16.8685 3.03732 17.2974 3.12109L17.4693 3.15918L17.4917 3.16504C18.0001 3.30898 18.4626 3.58461 18.8306 3.96387C19.1983 4.34318 19.4601 4.81371 19.5884 5.32617L18.9693 5.48047L19.5972 5.36816C19.8737 6.90116 20.0089 8.45696 19.9995 10.0146L19.9946 10.5898C19.9689 11.9337 19.8358 13.2743 19.5972 14.5977C19.5947 14.6114 19.5918 14.6261 19.5884 14.6396C19.46 15.1522 19.1984 15.6226 18.8306 16.002C18.4626 16.3813 18.0003 16.6568 17.4917 16.8008L17.4829 16.8037C17.051 16.9192 16.3534 16.9951 15.604 17.0498C14.8364 17.1058 13.9559 17.1424 13.1284 17.167C12.3002 17.1916 11.5181 17.2048 10.9439 17.2109C10.6568 17.214 10.4204 17.2151 10.2564 17.2158C10.1749 17.2162 10.1106 17.2167 10.0669 17.2168H9.93117C9.88755 17.2167 9.8231 17.2162 9.74172 17.2158C9.57784 17.2151 9.34193 17.214 9.05519 17.2109C8.4809 17.2048 7.69808 17.1916 6.86965 17.167C6.04235 17.1424 5.16258 17.1058 4.39504 17.0498C3.64585 16.9952 2.94825 16.9191 2.51613 16.8037L2.51125 16.8027C2.0134 16.6664 1.55889 16.403 1.19191 16.04C0.824822 15.6767 0.557084 15.2243 0.415545 14.7275C0.409846 14.7075 0.40558 14.6865 0.401873 14.666C0.124956 13.1308 -0.00927314 11.5727 0.000505705 10.0127C-0.00668415 8.46691 0.127577 6.92363 0.401873 5.40234L0.410662 5.36035C0.539027 4.8475 0.800385 4.37654 1.16847 3.99707C1.53642 3.61794 1.998 3.34211 2.50637 3.19824L2.51613 3.19629C2.94823 3.08087 3.64573 3.00486 4.39504 2.9502C5.1626 2.89422 6.04232 2.85662 6.86965 2.83203C7.69808 2.80742 8.48089 2.79521 9.05519 2.78906C9.34194 2.786 9.57784 2.78495 9.74172 2.78418C9.8231 2.7838 9.88755 2.7833 9.93117 2.7832H10.0669C10.1106 2.78329 10.1749 2.78383 10.2564 2.78418ZM8.39992 6.67773C8.20248 6.56553 7.95956 6.56757 7.7632 6.68164C7.56692 6.79591 7.44591 7.00628 7.44582 7.2334V12.7988C7.44583 13.026 7.56685 13.2363 7.7632 13.3506C7.95958 13.4647 8.20243 13.4667 8.39992 13.3545L13.2935 10.5703C13.4925 10.4567 13.6157 10.2448 13.6157 10.0156C13.6155 9.78646 13.4926 9.57433 13.2935 9.46094L8.39992 6.67773Z\", fill: \"currentColor\" }));\nexport default SvgYoutube;\n","import Copy from \"@/assets/copy.svg?react\";\nimport Email from \"@/assets/email.svg?react\";\nimport Facebook from \"@/assets/facebook.svg?react\";\nimport Instagram from \"@/assets/instagram.svg?react\";\nimport LinkedIn from \"@/assets/linkedin.svg?react\";\nimport X from \"@/assets/x.svg?react\";\nimport Youtube from \"@/assets/youtube.svg?react\";\n\nimport type { ButtonSocialProps } from \"@/components\";\nimport \"./ButtonSocial.css\";\n\nexport function ButtonSocial({\n className = \"\",\n href,\n onClick,\n socialPlatform,\n variant = \"basic\",\n}: ButtonSocialProps) {\n let Icon = Facebook;\n\n switch (socialPlatform) {\n case \"copy\":\n Icon = Copy;\n break;\n case \"email\":\n Icon = Email;\n break;\n case \"instagram\":\n Icon = Instagram;\n break;\n case \"linkedin\":\n Icon = LinkedIn;\n break;\n case \"x\":\n Icon = X;\n break;\n case \"youtube\":\n Icon = Youtube;\n break;\n default:\n break;\n }\n\n const classNames = `button-social button-social-${variant} ${className}`;\n\n if (href) {\n return (\n <a className={classNames} href={href}>\n <Icon />\n </a>\n );\n }\n\n return (\n <button className={classNames} onClick={onClick}>\n <Icon />\n </button>\n );\n}\n","import { cn } from \"@/lib/utils\";\n\nimport type { ReactNode } from \"react\";\n\nexport function PageMargins({\n children,\n className = \"\",\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\"max-w-page mx-auto overflow-hidden px-5 md:px-15 relative w-full\", className)}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\nconst SvgPause = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 20H4V0H8V20ZM16 20H12V0H16V20Z\", fill: \"currentColor\" }));\nexport default SvgPause;\n","import * as React from \"react\";\nconst SvgPlay = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 10, height: 12, viewBox: \"0 0 10 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0.793651 12C0.304233 12 0 11.596 0 10.9793V1.01359C0 0.396929 0.304233 0 0.793651 0C1.0582 0 1.28307 0.10632 1.54762 0.269344L9.25926 5.05375C9.8082 5.39398 10 5.62079 10 5.99646C10 6.37212 9.8082 6.59894 9.25926 6.94625L1.54762 11.7236C1.28307 11.8866 1.0582 12 0.793651 12Z\", fill: \"currentColor\" }));\nexport default SvgPlay;\n","import Pause from \"@/assets/pause.svg?react\";\nimport Play from \"@/assets/play.svg?react\";\n\nimport type { PlayButtonProps } from \"@/components\";\nimport \"./PlayButton.css\";\n\nexport function PlayButton({\n className = \"\",\n isPlaying,\n label,\n onClick,\n variant,\n}: PlayButtonProps) {\n return (\n <button\n aria-label={label}\n className={`play-button play-button-${variant} ${className}`}\n data-playing={isPlaying}\n onClick={onClick}\n >\n {isPlaying ? <Pause /> : <Play />}\n </button>\n );\n}\n","import { ButtonSocial } from \"@/components\";\nimport { Popover, PopoverArrow, PopoverContent, PopoverTrigger } from \"@/components/vendor\";\nimport { copyLink, emailLink, shareOnFacebook, shareOnLinkedIn, shareOnX } from \"@/lib/utils\";\n\nimport type { ButtonSocialVariant, ShareProps } from \"@/components\";\n\nexport function Share({ trigger, variant }: ShareProps) {\n let backgroundClass = \"bg-white\";\n let buttonSocialVariant: ButtonSocialVariant = \"basic\";\n\n if (variant === \"digital\") {\n backgroundClass = \"bg-black\";\n buttonSocialVariant = \"digital\";\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent className={`border-2 border-smoke w-fit ${backgroundClass}`}>\n <div className=\"flex gap-2\">\n <ButtonSocial\n onClick={shareOnFacebook}\n socialPlatform=\"facebook\"\n variant={buttonSocialVariant}\n />\n <ButtonSocial onClick={shareOnX} socialPlatform=\"x\" variant={buttonSocialVariant} />\n <ButtonSocial\n onClick={shareOnLinkedIn}\n socialPlatform=\"linkedin\"\n variant={buttonSocialVariant}\n />\n <ButtonSocial onClick={emailLink} socialPlatform=\"email\" variant={buttonSocialVariant} />\n <ButtonSocial onClick={copyLink} socialPlatform=\"copy\" variant={buttonSocialVariant} />\n </div>\n <PopoverArrow asChild>\n <div\n className={`border-r-2 border-b-2 border-smoke bottom-[5.75px] relative rounded-xs rotate-45 size-2.5 ${backgroundClass}`}\n ></div>\n </PopoverArrow>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as Slot from \"@radix-ui/react-slot\";\n\nimport Star from \"@/assets/star.svg?react\";\n\nimport type { TextCtaProps } from \"@/components\";\nimport \"./TextCta.css\";\n\nexport function TextCta({\n asChild,\n children,\n className = \"\",\n displayStars,\n variant = \"basic\",\n ...props\n}: TextCtaProps) {\n if (!children) return null;\n\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp {...props} className={`text-cta text-cta-${variant} ${className}`}>\n {displayStars ? <Star /> : null}\n <Slot.Slottable>{children}</Slot.Slottable>\n {displayStars ? <Star /> : null}\n </Comp>\n );\n}\n"],"names":["isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","a","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","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","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","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","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","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","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","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","previousTarget","to","newTarget","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","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","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","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","useEffect","newEmblaApi","SvgCarrotLeft","props","React","SvgCarrotRight","r","f","clsx","concatArrays","array1","array2","combinedArray","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","current","parts","part","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","tailwindColorToRgb","tailwindColor","el","color","parseRgb","match","relativeLuminance","g","toLinear","c","R","G","B","hasSufficientContrast","twBackgroundColor","twForegroundColor","ratio","backgroundColor","foregroundColor","bgRgb","fgRgb","L1","L2","lighter","darker","copyLink","text","emailLink","body","pageTitle","emailBody","metaDescription","shareOnFacebook","url","shareOnX","tweetText","shareOnLinkedIn","CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","children","carouselRef","setCanScrollPrev","setCanScrollNext","onSelect","handleKeyDown","jsx","CarouselContent","CarouselItem","CarouselPrevious","variant","Button","jsxs","Left","CarouselNext","Right","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","setRef","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","useComposedRefs","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","Provider","scope","Context","_a","useContext2","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","element","getter","mayWarn","_b","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","name","detail","discrete","count","useFocusGuards","edgeGuards","createFocusGuard","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","item","updatedArray","items","useLayoutEffect2","useReactId","useId","deterministicId","id","setId","useLayoutEffect","reactId","sides","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rtl","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","detectOverflow","state","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","offsets","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","hasOffset","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isClient","noop","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","Root","useSize","setSize","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","_c","contentZIndex","setContentZIndex","_d","_e","_f","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","parent","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","__assign","s","p","__rest","__spreadArray","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","right","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","POPOVER_NAME","createPopoverContext","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","setOpen","PopperPrimitive.Root","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","PortalProvider","usePortalContext","PopoverPortal","forceMount","PortalPrimitive","PopoverContent","portalContext","PopoverContentModal","PopoverContentNonModal","contentRef","isRightClickOutsideRef","PopoverContentImpl","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","Content2","Arrow2","PopoverPrimitive.Root","PopoverPrimitive.Trigger","PopoverPrimitive.Portal","PopoverPrimitive.Content","PopoverPrimitive.Arrow","SvgBookmarkEmpty","SvgBookmarkFill","ContentCarouselMultipleCard","button","headline","image","isBookmarked","onBookmark","BookmarkFill","BookmarkEmpty","ContentCarouselMultipleItem","base","cardClasses","ContentCarouselMultiple","horizontalStroke","Children","carouselNavigationClasses","carouselNavigationContainerClasses","needsReversed","buttonVariant","nextVariant","previousVariant","PageMargins","isValidElement","cloneElement","Background","imageBackground","videoBackground","isPlaying","setIsPlaying","videoBackgroundRef","playButtonVariant","handlePlay","Fragment","VideoBackground","PlayButton","EventContent","Header","category","copy","person","InsightContent","insight","SvgFax","SvgPhone","PersonContent","textColor","textCtaVariant","ButtonSocial","TextCta","Phone","Fax","SvgShare","ShareOptions","contactCta","hasShareOptions","printCta","Share","ShareIcon","ContentPrimaryFeatureDetail","_iterableToArrayLimit","arr","_i","_s","_x","_r","_arr","_n","err","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","source","_defineProperty","_regeneratorRuntime","exports","Op","hasOwn","defineProperty","obj","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","prototype","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","methodName","info","pushTryEntry","locs","resetTryEntry","iterable","iteratorMethod","genFun","ctor","iter","val","skipTempReset","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","_isNativeReflectConstruct","_construct","Parent","Class","_isNativeFunction","_wrapNativeSuper","_cache","Wrapper","_assertThisInitialized","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_slicedToArray","_arrayWithHoles","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_toPrimitive","input","hint","prim","res","isBun","isDeno","isServerRuntime","getMethodName","isDomElement","isVimeoUrl","isVimeoEmbed","expr","getOembedDomain","domain","customDomains","_customDomains","customDomain","getVimeoUrl","oEmbedParameters","idOrUrl","subscribe","eventName","onName","offName","eventNames","evName","findIframeBySourceWindow","sourceWindow","iframes","arrayIndexOfSupport","postMessageSupport","commonjsGlobal","createCommonjsModule","module","hasOwnProperty","hasDefine","WeakMap","genId","checkInstance","rand","npo_src","definition","builtInProp","scheduling_queue","ToString","timer","Item","schedule","isThenable","_then","o_type","notify","notifyIsolated","chain","ret","msg","def_wrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","idx","MakeDef","Promise","executor","def","success","failure","PromisePrototype","msgs","callbackMap","storeCallback","player","playerCallbacks","getCallbacks","removeCallback","shiftCallbacks","swapCallbacks","oldElement","parseMessageData","postMessage","params","message","ieVersion","processData","promises","promise","getOEmbedParameters","createEmbed","div","getOEmbedData","videoUrl","xhr","json","status","initializeEmbeds","handleError","resizeEmbeds","onMessage","senderIFrame","space","initAppendVideoMetadata","Player","checkUrlTimeParam","videoId","matches","sec","updateDRMEmbeds","currentAllow","allowSupportsDRM","currentUrl","initializeScreenfull","fnMap","eventNameMap","screenfull","onFullScreenEntered","returnPromise","onFullScreenExit","TimingSrcConnector","_EventTarget","_super","_player","timingObject","_this","logger","_callee","newAdjustment","newPlaybackRate","_context","_x2","_init","_callee2","_this2","playerUpdater","positionSync","timingObjectUpdater","_context2","_x3","_x4","_x5","_updateTimingObject","_callee3","_yield$Promise$all","_yield$Promise$all2","isPaused","playbackRate","_context3","updateTimingObject","_x6","_x7","_updatePlayer","_callee5","_timingObject$query","_context5","_ref2","_callee4","_context4","err2","_x11","updatePlayer","_x8","_x9","_x10","_this3","allowedDrift","maxAllowedDrift","minCheckInterval","maxRateAdjustment","maxTimeToCatchUp","syncInterval","check","_ref3","_callee6","diffAbs","adjustment","_context6","interval","_this$logger","playerMap","readyMap","iframe","readyPromise","isError","isReadyError","isReadyEvent","isPingResponse","exitFullscreen","_len","_key","_this4","lastCallback","time","language","kind","showing","_this5","autopause","camera","colors","nullPromise","colorPromises","currentTime","muted","quality","volume","_setTimingSrc","_this6","connector","setTimingSrc","Sister","sister","events","listener","m","h","w","ms","fmtLong","fmtShort","str","msAbs","plural","isPlural","setup","env","createDebug","coerce","disable","enable","require$$0","selectColor","namespace","hash","prevTime","enableOverride","namespacesCache","enabledCache","debug","curr","format","formatter","extend","delimiter","newDebug","namespaces","split","ns","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","common","formatArgs","save","load","useColors","localstorage","warned","lastC","formatters","_PlayerStates","_PlayerStates2","_interopRequireDefault","_debug","_debug2","_FunctionStateMap","require$$1","_FunctionStateMap2","_eventNames","require$$2","_eventNames2","_functionNames","require$$3","_functionNames2","YouTubePlayer","emitter","onEventName","playerAPIReady","strictState","functions","functionName","stateInfo","playerState","onPlayerStateChange","playerStateAfterChange","timeout","loadScript","src","script","setAttributes","onend","stdOnEnd","ieOnEnd","attrs","_loadScript","_loadScript2","protocol","previous","_sister","_sister2","_YouTubePlayer","_YouTubePlayer2","_loadYouTubeIframeApi","_loadYouTubeIframeApi2","youtubeIframeAPI","maybeElementId","YT","playerApi","useVideoPlayer","provider","autoplay","showControls","onPlay","onPause","onEnded","onError","vimeoPlayerRef","youtubePlayerRef","getVideoId","initializePlayer","VimeoPlayer","play","pause","togglePlayback","forwardRef","videoSource","videoProvider","playerOptions","useImperativeHandle","REACT_LAZY_TYPE","use","isPromiseLike","isLazyComponent","createSlottable","Slottable2","Fragment2","Slottable","SvgStar","displayStars","Slot.Root","Star","Slot.Slottable","SvgCopy","SvgEmail","SvgFacebook","SvgInstagram","SvgLinkedin","SvgX","SvgYoutube","href","onClick","socialPlatform","Icon","Facebook","Copy","Email","Instagram","LinkedIn","X","Youtube","SvgPause","SvgPlay","Pause","Play","backgroundClass","buttonSocialVariant"],"mappings":"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","x_google_ignoreList":[0,1,2,5,6,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,72,73,74,75,76,77,78,79,80,81,82,83,84,87]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../node_modules/embla-carousel-reactive-utils/esm/embla-carousel-reactive-utils.esm.js","../node_modules/embla-carousel/esm/embla-carousel.esm.js","../node_modules/embla-carousel-react/esm/embla-carousel-react.esm.js","../src/assets/carrot-left.svg?react","../src/assets/carrot-right.svg?react","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils/cn.ts","../src/lib/utils/hasSufficientContrast.ts","../src/lib/utils/shareLink.ts","../src/components/vendor/carousel.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/vendor/popover.tsx","../src/assets/bookmark-empty.svg?react","../src/assets/bookmark-fill.svg?react","../src/components/composites/ContentCarouselMultiple/ContentCarouselMultipleCard.tsx","../src/components/composites/ContentCarouselMultiple/ContentCarouselMultiple.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/Background.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/EventContent.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/Header.tsx","../src/components/composites/ContentPrimaryFeatureDetail/components/InsightContent.tsx","../src/assets/fax.svg?react","../src/assets/phone.svg?react","../src/components/composites/ContentPrimaryFeatureDetail/components/PersonContent.tsx","../src/assets/share.svg?react","../src/components/composites/ContentPrimaryFeatureDetail/components/ShareOptions.tsx","../src/components/composites/ContentPrimaryFeatureDetail/ContentPrimaryFeatureDetail.tsx","../node_modules/@vimeo/player/dist/player.es.js","../node_modules/sister/src/sister.js","../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/youtube-player/dist/constants/PlayerStates.js","../node_modules/youtube-player/dist/FunctionStateMap.js","../node_modules/youtube-player/dist/eventNames.js","../node_modules/youtube-player/dist/functionNames.js","../node_modules/youtube-player/dist/YouTubePlayer.js","../node_modules/load-script/index.js","../node_modules/youtube-player/dist/loadYouTubeIframeApi.js","../node_modules/youtube-player/dist/index.js","../src/lib/hooks/useVideoPlayer.ts","../src/components/foundations/BackgroundVideo/VideoBackground.tsx","../node_modules/@radix-ui/react-slot/dist/index.mjs","../src/assets/star.svg?react","../src/components/foundations/Button/Button.tsx","../src/assets/copy.svg?react","../src/assets/email.svg?react","../src/assets/facebook.svg?react","../src/assets/instagram.svg?react","../src/assets/linkedin.svg?react","../src/assets/x.svg?react","../src/assets/youtube.svg?react","../src/components/foundations/ButtonSocial/ButtonSocial.tsx","../src/components/foundations/PageMargins/PageMargin.tsx","../src/assets/pause.svg?react","../src/assets/play.svg?react","../src/components/foundations/PlayButton/PlayButton.tsx","../src/components/foundations/Share/Share.tsx","../src/components/foundations/TextCta/TextCta.tsx"],"sourcesContent":["function isObject(subject) {\n return Object.prototype.toString.call(subject) === '[object Object]';\n}\nfunction isRecord(subject) {\n return isObject(subject) || Array.isArray(subject);\n}\nfunction canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n}\nfunction areOptionsEqual(optionsA, optionsB) {\n const optionsAKeys = Object.keys(optionsA);\n const optionsBKeys = Object.keys(optionsB);\n if (optionsAKeys.length !== optionsBKeys.length) return false;\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}));\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}));\n if (breakpointsA !== breakpointsB) return false;\n return optionsAKeys.every(key => {\n const valueA = optionsA[key];\n const valueB = optionsB[key];\n if (typeof valueA === 'function') return `${valueA}` === `${valueB}`;\n if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB;\n return areOptionsEqual(valueA, valueB);\n });\n}\nfunction sortAndMapPluginToOptions(plugins) {\n return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options);\n}\nfunction arePluginsEqual(pluginsA, pluginsB) {\n if (pluginsA.length !== pluginsB.length) return false;\n const optionsA = sortAndMapPluginToOptions(pluginsA);\n const optionsB = sortAndMapPluginToOptions(pluginsB);\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index];\n return areOptionsEqual(optionA, optionB);\n });\n}\n\nexport { areOptionsEqual, arePluginsEqual, canUseDOM, sortAndMapPluginToOptions };\n//# sourceMappingURL=embla-carousel-reactive-utils.esm.js.map\n","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 roundToTwoDecimals(num) {\n return Math.round(num * 100) / 100;\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 fixedTimeStep = 1000 / 60;\n let lastTimeStamp = null;\n let accumulatedTime = 0;\n let animationId = 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 (!animationId) return;\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp;\n update();\n update();\n }\n const timeElapsed = timeStamp - lastTimeStamp;\n lastTimeStamp = timeStamp;\n accumulatedTime += timeElapsed;\n while (accumulatedTime >= fixedTimeStep) {\n update();\n accumulatedTime -= fixedTimeStep;\n }\n const alpha = accumulatedTime / fixedTimeStep;\n render(alpha);\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n }\n function start() {\n if (animationId) return;\n animationId = ownerWindow.requestAnimationFrame(animate);\n }\n function stop() {\n ownerWindow.cancelAnimationFrame(animationId);\n lastTimeStamp = null;\n accumulatedTime = 0;\n animationId = 0;\n }\n function reset() {\n lastTimeStamp = null;\n accumulatedTime = 0;\n }\n const self = {\n init,\n destroy,\n start,\n stop,\n update,\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 scrollVelocity = 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() {\n const displacement = target.get() - location.get();\n const isInstant = !scrollDuration;\n let scrollDistance = 0;\n if (isInstant) {\n scrollVelocity = 0;\n previousLocation.set(target);\n location.set(target);\n scrollDistance = displacement;\n } else {\n previousLocation.set(location);\n scrollVelocity += displacement / scrollDuration;\n scrollVelocity *= scrollFriction;\n rawLocation += scrollVelocity;\n location.add(scrollVelocity);\n scrollDistance = rawLocation - rawLocationPrevious;\n }\n scrollDirection = mathSign(scrollDistance);\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 scrollVelocity;\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 previousTarget = null;\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 const newTarget = roundToTwoDecimals(axis.direction(target));\n if (newTarget === previousTarget) return;\n containerStyle.transform = translate(newTarget);\n previousTarget = newTarget;\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 }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown());\n scrollBody.seek();\n };\n const render = ({\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: {\n loop\n }\n }, alpha) => {\n const shouldSettle = scrollBody.settled();\n const withinBounds = !scrollBounds.shouldConstrain();\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds;\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown();\n if (hasSettledAndIdle) animation.stop();\n const interpolatedLocation = location.get() * alpha + previousLocation.get() * (1 - alpha);\n offsetLocation.set(interpolatedLocation);\n if (loop) {\n scrollLooper.loop(scrollBody.direction());\n slideLooper.loop();\n }\n translate.to(offsetLocation.get());\n if (hasSettledAndIdle) eventHandler.emit('settle');\n if (!hasSettled) eventHandler.emit('scroll');\n };\n const animation = Animations(ownerDocument, ownerWindow, () => update(engine), alpha => render(engine, alpha));\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.offsetLocation.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","import { useRef, useState, useCallback, useEffect } from 'react';\nimport { areOptionsEqual, arePluginsEqual, canUseDOM } from 'embla-carousel-reactive-utils';\nimport EmblaCarousel from 'embla-carousel';\n\nfunction useEmblaCarousel(options = {}, plugins = []) {\n const storedOptions = useRef(options);\n const storedPlugins = useRef(plugins);\n const [emblaApi, setEmblaApi] = useState();\n const [viewport, setViewport] = useState();\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current);\n }, [emblaApi]);\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return;\n storedOptions.current = options;\n reInit();\n }, [options, reInit]);\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return;\n storedPlugins.current = plugins;\n reInit();\n }, [plugins, reInit]);\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions;\n const newEmblaApi = EmblaCarousel(viewport, storedOptions.current, storedPlugins.current);\n setEmblaApi(newEmblaApi);\n return () => newEmblaApi.destroy();\n } else {\n setEmblaApi(undefined);\n }\n }, [viewport, setEmblaApi]);\n return [setViewport, emblaApi];\n}\nuseEmblaCarousel.globalOptions = undefined;\n\nexport { useEmblaCarousel as default };\n//# sourceMappingURL=embla-carousel-react.esm.js.map\n","import * as React from \"react\";\nconst SvgCarrotLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 28, height: 28, viewBox: \"0 0 28 28\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.5861 14L24.7656 7L17.5861 0L3.22717 14L17.5861 28L24.7656 21L17.5861 14Z\", fill: \"currentColor\" }));\nexport default SvgCarrotLeft;\n","import * as React from \"react\";\nconst SvgCarrotRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 28, height: 28, viewBox: \"0 0 28 28\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.4139 14L3.23438 7L10.4139 0L24.7728 14L10.4139 28L3.23438 21L10.4139 14Z\", fill: \"currentColor\" }));\nexport default SvgCarrotRight;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport type { ClassValue } from \"clsx\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","export interface TailwindColor {\n className: string;\n type: \"text\" | \"background\";\n}\n\nfunction tailwindColorToRgb(tailwindColor: TailwindColor): string {\n const { className, type } = tailwindColor;\n const el = document.createElement(\"div\");\n el.className = className;\n\n // Must be in the DOM for styles to compute\n el.style.display = \"none\";\n document.body.appendChild(el);\n\n let color = getComputedStyle(el).backgroundColor;\n if (type === \"text\") color = getComputedStyle(el).color;\n\n document.body.removeChild(el);\n\n return color;\n}\n\nfunction parseRgb(color: string): [number, number, number] {\n // Handles rgb() / rgba()\n const match = color.match(/\\d+/g);\n if (!match || match.length < 3) {\n throw new Error(`Unsupported color format: ${color}`);\n }\n\n return [parseInt(match[0], 10), parseInt(match[1], 10), parseInt(match[2], 10)];\n}\n\nfunction relativeLuminance([r, g, b]: number[]): number {\n const toLinear = (c: number) => {\n const v = c / 255;\n return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n };\n\n const R = toLinear(r);\n const G = toLinear(g);\n const B = toLinear(b);\n\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n}\n\nexport function hasSufficientContrast(\n twBackgroundColor: TailwindColor,\n twForegroundColor: TailwindColor,\n ratio = 4.5,\n): boolean {\n const backgroundColor = tailwindColorToRgb(twBackgroundColor);\n const foregroundColor = tailwindColorToRgb(twForegroundColor);\n\n const bgRgb = parseRgb(backgroundColor);\n const fgRgb = parseRgb(foregroundColor);\n\n const L1 = relativeLuminance(bgRgb);\n const L2 = relativeLuminance(fgRgb);\n\n const lighter = Math.max(L1, L2);\n const darker = Math.min(L1, L2);\n\n const contrastRatio = (lighter + 0.05) / (darker + 0.05);\n\n return contrastRatio >= ratio;\n}\n","export function copyLink() {\n const text = window.location.href;\n return navigator.clipboard.writeText(text);\n}\n\nexport function emailLink(subject?: string, body?: string) {\n const pageTitle = subject || document.title;\n let emailBody = body || \"\";\n const metaDescription = document.querySelector('meta[name=\"description\"]');\n\n if (!body && metaDescription) {\n emailBody = metaDescription.getAttribute(\"content\") || \"\";\n }\n\n window.location.href =\n `mailto:?subject=${encodeURIComponent(pageTitle)}&body=` +\n encodeURIComponent(`${emailBody}\\n\\n${window.location.href}`);\n}\n\nexport function shareOnFacebook() {\n const url = encodeURIComponent(window.location.href);\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${url}`, \"_blank\");\n}\n\nexport function shareOnX(text?: string) {\n const url = encodeURIComponent(window.location.href);\n const tweetText = encodeURIComponent(text || document.title);\n\n window.open(`https://twitter.com/intent/tweet?url=${url}&text=${tweetText}`, \"_blank\");\n}\n\nexport function shareOnLinkedIn() {\n const url = encodeURIComponent(window.location.href);\n\n window.open(`https://www.linkedin.com/sharing/share-offsite/?url=${url}`, \"_blank\");\n}\n","import useEmblaCarousel from \"embla-carousel-react\";\nimport * as React from \"react\";\n\nimport Left from \"@/assets/carrot-left.svg?react\";\nimport Right from \"@/assets/carrot-right.svg?react\";\nimport { Button } from \"@/components\";\nimport { cn } from \"@/lib/utils\";\n\nimport type { UseEmblaCarouselType } from \"embla-carousel-react\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div className={cn(\"flex\", className)} {...props} />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({ className, variant, ...props }: React.ComponentProps<typeof Button>) {\n const { scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button className={className} data-slot=\"carousel-previous\" variant={variant} {...props}>\n <button disabled={!canScrollPrev} onClick={scrollPrev}>\n <Left />\n <span className=\"sr-only\">Previous slide</span>\n </button>\n </Button>\n );\n}\n\nfunction CarouselNext({ className, variant, ...props }: React.ComponentProps<typeof Button>) {\n const { scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button className={className} data-slot=\"carousel-next\" variant={variant} {...props}>\n <button disabled={!canScrollNext} onClick={scrollNext}>\n <Right />\n <span className=\"sr-only\">Next slide</span>\n </button>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n useCarousel,\n};\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nconst yAxisSides = /*#__PURE__*/new Set(['top', 'bottom']);\nfunction getSideAxis(placement) {\n return yAxisSides.has(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nconst invalidOverflowDisplayValues = /*#__PURE__*/new Set(['inline', 'contents']);\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);\n}\nconst tableElements = /*#__PURE__*/new Set(['table', 'td', 'th']);\nfunction isTableElement(element) {\n return tableElements.has(getNodeName(element));\n}\nconst topLayerSelectors = [':popover-open', ':modal'];\nfunction isTopLayer(element) {\n return topLayerSelectors.some(selector => {\n try {\n return element.matches(selector);\n } catch (_e) {\n return false;\n }\n });\n}\nconst transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];\nconst willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];\nconst containValues = ['paint', 'layout', 'strict', 'content'];\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nconst lastTraversableNodeNames = /*#__PURE__*/new Set(['html', 'body', '#document']);\nfunction isLastTraversableNode(node) {\n return lastTraversableNodeNames.has(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nconst absoluteOrFixed = /*#__PURE__*/new Set(['absolute', 'fixed']);\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/popover.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: POPOVER_NAME\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar Slot = createSlot(\"PopoverContent.RemoveScroll\");\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />;\n}\n\nfunction PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />;\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-popover-in data-[state=closed]:animate-popover-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-lg p-4 outline-hidden\",\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n );\n}\n\nfunction PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />;\n}\n\nfunction PopoverArrow({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Arrow>) {\n return <PopoverPrimitive.Arrow data-slot=\"popover-arrow\" {...props} />;\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverArrow };\n","import * as React from \"react\";\nconst SvgBookmarkEmpty = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.9259 6.49832C15.9259 6.40367 15.8883 6.31291 15.8214 6.24598C15.7544 6.17905 15.6637 6.14142 15.569 6.14142H8.43097C8.33631 6.14142 8.24556 6.17905 8.17863 6.24598C8.1117 6.31291 8.07407 6.40367 8.07407 6.49832V15.8385L12 13.0341L15.9259 15.8385V6.49832ZM18.0674 20L12 15.6656L5.93265 20V6.49832C5.93265 5.83573 6.19605 5.20046 6.66458 4.73193C7.1331 4.2634 7.76837 4 8.43097 4H15.569C16.2316 4 16.8669 4.2634 17.3354 4.73193C17.804 5.20046 18.0674 5.83573 18.0674 6.49832V20Z\", fill: \"white\" }));\nexport default SvgBookmarkEmpty;\n","import * as React from \"react\";\nconst SvgBookmarkFill = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.5694 4C16.2319 4.00002 16.8675 4.26302 17.336 4.73145C17.8044 5.19991 18.0673 5.83555 18.0674 6.49805V20L12 15.666L5.93265 20V6.49805C5.93272 5.83555 6.1966 5.19991 6.66507 4.73145C7.13348 4.2633 7.76843 4.00009 8.43069 4H15.5694Z\", fill: \"white\" }));\nexport default SvgBookmarkFill;\n","import BookmarkEmpty from \"@/assets/bookmark-empty.svg?react\";\nimport BookmarkFill from \"@/assets/bookmark-fill.svg?react\";\nimport { Button } from \"@/components\";\n\nimport type { ContentCarouselMultipleCardProps } from \"@/components\";\n\nexport function ContentCarouselMultipleCard({\n button,\n headline,\n id,\n image,\n isBookmarked,\n onBookmark,\n}: ContentCarouselMultipleCardProps) {\n return (\n <div className=\"relative size-full\">\n <div className=\"absolute bg-black/50 size-full\"></div>\n <div className=\"absolute size-full [&_img]:object-cover [&_img]:size-full mix-blend-multiply\">\n {image}\n </div>\n <div className=\"absolute bottom-6 left-0 px-6 w-full\">\n <div className=\"b-lg mb-6 text-white\">{headline}</div>\n <div className=\"flex gap-6 items-center justify-between\">\n <Button variant=\"tertiary-reversed\">{button}</Button>\n <button onClick={() => onBookmark(id)}>\n {isBookmarked ? <BookmarkFill /> : <BookmarkEmpty />}\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import { Children, isValidElement, cloneElement } from \"react\";\n\nimport { Button, PageMargins } from \"@/components\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n} from \"@/components/vendor\";\nimport { hasSufficientContrast } from \"@/lib/utils\";\n\nimport { ContentCarouselMultipleCard } from \"./ContentCarouselMultipleCard\";\n\nimport type { ButtonVariant } from \"@/components\";\nimport type { ContentCarouselMultipleCardProps, ContentCarouselMultipleProps } from \"@/components\";\n\nexport function ContentCarouselMultipleItem(props: ContentCarouselMultipleCardProps) {\n const base = \"h-70 min-[552px]:h-80 basis-60 min-[552px]:basis-[calc(50%-20px)]\";\n\n let cardClasses: string;\n\n if (props.count === 1) {\n cardClasses = \"basis-full h-80\";\n } else if (props.count === 2) {\n cardClasses = base;\n } else {\n // Total gap per slide divided by number of columns gives the amount to subtract from each basis\n // Amount to subtract per basis is divided by 2 for the first item since it occupies double the space\n cardClasses = [\n base,\n props.index === 0\n ? \"lg:basis-[calc(66.66%-13.33px)] xl:basis-[calc(50%-15px)]\"\n : \"lg:basis-[calc(33.33%-26.66px)] xl:basis-[calc(25%-30px)]\",\n ].join(\" \");\n }\n\n return (\n <CarouselItem className={cardClasses}>\n <ContentCarouselMultipleCard {...props} />\n </CarouselItem>\n );\n}\n\nexport function ContentCarouselMultiple({\n backgroundColor = \"\",\n button,\n children,\n className = \"\",\n horizontalStroke,\n variant,\n}: ContentCarouselMultipleProps) {\n const count = Children.count(children);\n\n let carouselNavigationClasses = \"\";\n let carouselNavigationContainerClasses = \"\";\n\n if (count === 1) {\n carouselNavigationClasses = \"hidden\";\n carouselNavigationContainerClasses = \"justify-end\";\n } else if (count === 2) {\n carouselNavigationClasses = \"md:hidden\";\n carouselNavigationContainerClasses = \"md:justify-end\";\n }\n\n const needsReversed = Boolean(\n backgroundColor &&\n !hasSufficientContrast(\n { className: backgroundColor, type: \"background\" },\n { className: \"bg-navy-500\", type: \"background\" },\n ),\n );\n\n let buttonVariant: ButtonVariant;\n let nextVariant: ButtonVariant;\n let previousVariant: ButtonVariant;\n\n if (needsReversed && variant === \"connect\") {\n buttonVariant = \"reversed-connect\";\n nextVariant = \"pagination-reversed-connect\";\n previousVariant = \"pagination-reversed-connect\";\n } else if (needsReversed && variant === \"digital\") {\n buttonVariant = \"reversed-digital\";\n nextVariant = \"pagination-reversed-digital\";\n previousVariant = \"pagination-reversed-digital\";\n } else if (variant === \"connect\") {\n buttonVariant = \"secondary\";\n nextVariant = \"pagination-next-connect\";\n previousVariant = \"pagination-prev-connect\";\n } else {\n buttonVariant = \"secondary\";\n nextVariant = \"pagination-next-digital\";\n previousVariant = \"pagination-prev-digital\";\n }\n\n return (\n <div\n className={`py-15 lg:py-20 ${backgroundColor} ${className} ${horizontalStroke ? \"border-b-2 border-smoke\" : \"\"}`}\n >\n <PageMargins>\n <Carousel opts={{ align: \"start\" }}>\n <CarouselContent className=\"gap-8 md:gap-10\">\n {Children.map(children, (child, index) => {\n if (!isValidElement<ContentCarouselMultipleCardProps>(child)) return child;\n\n return cloneElement(child, {\n count,\n index,\n });\n })}\n </CarouselContent>\n <div\n className={`flex items-center justify-between mt-8 ${carouselNavigationContainerClasses}`}\n >\n <div className={carouselNavigationClasses}>\n <CarouselPrevious variant={previousVariant} />\n <CarouselNext variant={nextVariant} />\n </div>\n <Button variant={buttonVariant}>{button}</Button>\n </div>\n </Carousel>\n </PageMargins>\n </div>\n );\n}\n","import { useRef, useState } from \"react\";\n\nimport { PageMargins, PlayButton, VideoBackground, type VideoBackgroundHandle } from \"@/components\";\n\nimport type { PlayButtonVariant, VideoBackgroundProps } from \"@/components\";\nimport type { PageVariant } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function Background({\n imageBackground,\n variant,\n videoBackground,\n}: {\n imageBackground?: ReactNode;\n variant?: PageVariant;\n videoBackground?: VideoBackgroundProps;\n}) {\n const [isPlaying, setIsPlaying] = useState(videoBackground?.autoplay ?? false);\n\n const videoBackgroundRef = useRef<VideoBackgroundHandle>(null);\n\n const playButtonVariant: PlayButtonVariant =\n variant === \"connect\" ? \"mini-connect\" : \"mini-digital\";\n\n const handlePlay = () => {\n if (!videoBackgroundRef.current) return;\n videoBackgroundRef.current.togglePlayback();\n setIsPlaying(!videoBackgroundRef.current.isPlaying);\n };\n\n return (\n <div className=\"min-h-85 overflow-hidden relative w-full\">\n {Boolean(imageBackground) && (\n <div className=\"h-85 [&_img]:object-cover [&_img]:size-full\">{imageBackground}</div>\n )}\n {Boolean(videoBackground) && (\n <>\n <VideoBackground {...videoBackground} ref={videoBackgroundRef} />\n <div className=\"absolute inset-0 flex justify-center\">\n <PageMargins>\n <div className=\"absolute bottom-8 right-5 md:right-15\">\n <PlayButton\n label=\"play video\"\n onClick={handlePlay}\n isPlaying={isPlaying}\n variant={playButtonVariant}\n />\n </div>\n </PageMargins>\n </div>\n </>\n )}\n </div>\n );\n}\n","import type { Event } from \"@/lib/types.ts\";\n\nexport function EventContent({ event }: { event?: Event }) {\n return (\n <>\n {Boolean(event) && (\n <div className=\"flex gap-2 items-center mb-6\">\n {event?.date}\n {Boolean(event?.location) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {event?.location}\n </>\n )}\n </div>\n )}\n </>\n );\n}\n","import type { Person } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function Header({\n category,\n copy,\n headline,\n person,\n}: {\n category: string;\n copy?: ReactNode;\n headline?: ReactNode;\n person?: Person;\n}) {\n return (\n <>\n {person ? (\n <div className=\"flex gap-10 grow items-center mb-6 xl:mb-0\">\n {Boolean(person?.image) && <img {...person.image} className=\"rounded-full size-30\" />}\n <div className=\"flex flex-col gap-6\">\n <div className=\"b-lg uppercase\">{person.title}</div>\n <div className=\"font-bold leading-[116.667%] text-5xl lg:text-8xl\">\n {person.firstName} {person.lastName}\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex flex-col gap-6 grow mb-6 xl:mb-0\">\n <div className=\"b-lg uppercase\">{category}</div>\n <div className=\"font-bold leading-[116.667%] [&_h1]:leading-[115.385%] text-5xl lg:text-8xl [&_h1]:lg:text-9xl\">\n {headline}\n </div>\n {Boolean(copy) && <div className=\"b-base\">{copy}</div>}\n </div>\n )}\n </>\n );\n}\n","import type { Insight } from \"@/lib/types.ts\";\n\nexport function InsightContent({ insight }: { insight?: Insight }) {\n return (\n <>\n {Boolean(insight) && (\n <div className=\"flex flex-col gap-1 mb-6\">\n <div className=\"flex gap-2 items-center\">\n {insight?.date}\n {Boolean(insight?.timeToRead) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {insight?.timeToRead}\n </>\n )}\n </div>\n {Boolean(insight?.authorOne) && (\n <div className=\"flex gap-2 items-center\">\n {insight?.authorOne}\n {Boolean(insight?.authorTwo) && (\n <>\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n {insight?.authorTwo}\n </>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","import * as React from \"react\";\nconst SvgFax = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_129_64910)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.08105 0.225098C6.15724 0.225098 7.03393 1.30122 7.03418 2.17725V17.8218C7.03418 18.8981 6.15739 19.7749 5.08105 19.7749H1.95215C0.875979 19.7747 0 18.6978 0 17.8218V2.17725C0.00020319 1.1012 0.876104 0.225301 1.95215 0.225098H5.08105ZM20 2.57861V17.4468H7.88477V2.57861H20ZM9.8125 13.3169V15.2437H11.7393V13.3169H9.8125ZM12.9658 13.3169V15.2437H14.8936V13.3169H12.9658ZM16.1455 13.3169V15.2437H18.0723V13.3169H16.1455ZM9.8125 10.563V12.4907H11.7393V10.563H9.8125ZM12.9658 10.563V12.4907H14.8936V10.563H12.9658ZM16.1455 10.563V12.4907H18.0723V10.563H16.1455ZM9.83691 4.73096V8.86084H18.0723V4.73096H9.83691Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_129_64910\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgFax;\n","import * as React from \"react\";\nconst SvgPhone = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_32_9938)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19.9796 14.9738V17.9846C19.9807 18.2642 19.9234 18.5408 19.8115 18.7969C19.6995 19.053 19.5353 19.2829 19.3293 19.4719C19.1233 19.6608 18.8802 19.8047 18.6154 19.8942C18.3506 19.9838 18.0701 20.017 17.7917 19.9919C14.7035 19.6563 11.737 18.601 9.13062 16.9108C6.70575 15.3699 4.64988 13.3141 3.10901 10.8892C1.4129 8.27099 0.357377 5.29008 0.0279519 2.18795C0.00287233 1.91042 0.0358551 1.63071 0.1248 1.36663C0.213745 1.10254 0.356703 0.859872 0.544572 0.654066C0.732442 0.448259 0.961106 0.283825 1.21601 0.171234C1.47091 0.058642 1.74646 0.000359723 2.02512 9.73016e-05H5.03593C5.52298 -0.00469635 5.99516 0.167778 6.36446 0.485372C6.73375 0.802966 6.97496 1.24401 7.04313 1.72629C7.17021 2.68982 7.40588 3.63587 7.74565 4.54641C7.88068 4.90563 7.90991 5.29602 7.82986 5.67133C7.74982 6.04665 7.56386 6.39115 7.29403 6.66402L6.01946 7.93859C7.44814 10.4512 9.52851 12.5315 12.0411 13.9602L13.3156 12.6856C13.5885 12.4158 13.933 12.2298 14.3083 12.1498C14.6836 12.0698 15.074 12.099 15.4332 12.234C16.3438 12.5738 17.2898 12.8095 18.2534 12.9365C18.7409 13.0053 19.1861 13.2509 19.5044 13.6265C19.8227 14.0021 19.9918 14.4817 19.9796 14.9738Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_32_9938\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgPhone;\n","import Fax from \"@/assets/fax.svg?react\";\nimport Phone from \"@/assets/phone.svg?react\";\nimport { ButtonSocial, TextCta, type TextCtaVariant } from \"@/components\";\n\nimport type { Person } from \"@/lib/types.ts\";\n\nexport function PersonContent({\n person,\n textColor,\n textCtaVariant,\n}: {\n person?: Person;\n textColor: \"text-white!\" | \"\";\n textCtaVariant: TextCtaVariant;\n}) {\n return (\n <>\n {Boolean(person) && (\n <div className=\"flex flex-col gap-1 mb-6\">\n {Boolean(person?.linkedInUrl || person?.location) && (\n <div className=\"flex gap-2 items-center\">\n {Boolean(person?.linkedInUrl) && (\n <ButtonSocial\n href={person?.linkedInUrl}\n socialPlatform=\"linkedin\"\n variant={textCtaVariant}\n />\n )}\n {Boolean(person?.linkedInUrl && person?.location) && (\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n )}\n {Boolean(person?.location) && (\n <span className={`b-base text-charcoal-800 ${textColor}`}>{person?.location}</span>\n )}\n </div>\n )}\n {Boolean(person?.phone || person?.fax) && (\n <div className=\"b-base flex gap-2 items-center text-navy-500\">\n {Boolean(person?.phone) && (\n <TextCta className=\"b-base font-bold\" variant={textCtaVariant}>\n <a href={person?.phone}>\n <Phone className=\"size-4\" />\n {person?.phone}\n </a>\n </TextCta>\n )}\n {Boolean(person?.phone && person?.fax) && (\n <span className=\"bg-smoke h-3.5 w-0.5\"></span>\n )}\n {Boolean(person?.fax) && (\n <TextCta className=\"b-base font-bold\" variant={textCtaVariant}>\n <a href={person?.fax}>\n <Fax className=\"size-4\" />\n {person?.fax}\n </a>\n </TextCta>\n )}\n </div>\n )}\n </div>\n )}\n </>\n );\n}\n","import * as React from \"react\";\nconst SvgShare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.5498 16.6999V9.49968H4.0498V16.6999C4.04986 16.8457 4.10784 16.9855 4.21094 17.0886C4.31404 17.1916 4.45381 17.2496 4.59961 17.2497H15.3994C15.5453 17.2497 15.6859 17.1917 15.7891 17.0886C15.892 16.9855 15.9501 16.8456 15.9502 16.6999V9.49968H18.4502V16.6999C18.4501 17.5086 18.1285 18.2842 17.5566 18.8561C16.9847 19.4281 16.2083 19.7497 15.3994 19.7497H4.59961C3.79077 19.7496 3.0153 19.4281 2.44336 18.8561C1.87142 18.2842 1.54986 17.5087 1.5498 16.6999Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.11523 0.616336C9.60332 0.128246 10.3946 0.128376 10.8828 0.616336L14.4834 4.21595L12.7158 5.98352L11.25 4.5177V13.2003H8.75V4.51575L7.2832 5.98352L5.51562 4.21595L9.11523 0.616336Z\", fill: \"currentColor\" }));\nexport default SvgShare;\n","import ShareIcon from \"@/assets/share.svg?react\";\nimport { PageMargins, Share, TextCta } from \"@/components\";\n\nimport type { TextCtaVariant } from \"@/components\";\nimport type { PageVariant } from \"@/lib/types.ts\";\nimport type { ReactNode } from \"react\";\n\nexport function ShareOptions({\n contactCta,\n hasShareOptions,\n printCta,\n textCtaVariant,\n variant,\n}: {\n contactCta?: ReactNode;\n hasShareOptions?: boolean;\n printCta?: ReactNode;\n textCtaVariant: TextCtaVariant;\n variant: PageVariant;\n}) {\n return (\n <PageMargins className=\"flex gap-4 items-center justify-end py-5\">\n {hasShareOptions && (\n <Share\n trigger={\n <TextCta asChild className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n <button>\n <ShareIcon className=\"size-4\" />\n Share\n </button>\n </TextCta>\n }\n variant={variant}\n />\n )}\n {Boolean(contactCta) && (\n <TextCta className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n {contactCta}\n </TextCta>\n )}\n {Boolean(printCta) && (\n <TextCta className=\"b-xs font-bold uppercase\" variant={textCtaVariant}>\n {printCta}\n </TextCta>\n )}\n </PageMargins>\n );\n}\n","import { Button, PageMargins } from \"@/components\";\n\nimport {\n Background,\n EventContent,\n Header,\n InsightContent,\n PersonContent,\n ShareOptions,\n} from \"./components\";\n\nimport type { ButtonVariant, ContentPrimaryFeatureDetailProps, TextCtaVariant } from \"@/components\";\n\nexport function ContentPrimaryFeatureDetail({\n button,\n category,\n className,\n contactCta,\n copy,\n event,\n hasShareOptions,\n headline,\n horizontalStroke,\n imageBackground,\n insight,\n person,\n printCta,\n variant = \"connect\",\n videoBackground,\n}: ContentPrimaryFeatureDetailProps) {\n const buttonVariant: ButtonVariant = variant === \"connect\" ? \"primary\" : \"primary-digital\";\n const textCtaVariant: TextCtaVariant = variant === \"connect\" ? \"basic\" : \"digital\";\n const textColor = variant === \"digital\" ? \"text-white!\" : \"\";\n\n if (variant === \"digital\" && !videoBackground && !imageBackground) {\n return null;\n }\n\n return (\n <div\n className={`${className} ${textColor} ${horizontalStroke ? \"border-b-2 border-smoke\" : \"\"}`}\n >\n <PageMargins className=\"flex flex-col xl:flex-row xl:gap-40 xl:items-center mb-12\">\n <Header category={category} copy={copy} headline={headline} person={person} />\n <div className=\"border-t-2 border-charcoal-100 max-w-76 min-w-76 pt-6\">\n <EventContent event={event} />\n <InsightContent insight={insight} />\n <PersonContent person={person} textColor={textColor} textCtaVariant={textCtaVariant} />\n <Button variant={buttonVariant}>{button}</Button>\n </div>\n </PageMargins>\n <Background\n imageBackground={imageBackground}\n variant={variant}\n videoBackground={videoBackground}\n />\n <ShareOptions\n contactCta={contactCta}\n hasShareOptions={hasShareOptions}\n printCta={printCta}\n textCtaVariant={textCtaVariant}\n variant={variant}\n />\n </div>\n );\n}\n","/*! @vimeo/player v2.30.1 | (c) 2025 Vimeo | MIT License | https://github.com/vimeo/player.js */\nfunction _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _regeneratorRuntime() {\n _regeneratorRuntime = function () {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function (obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == typeof value && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator.return && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function (skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function () {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function (exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function (type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function (record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function (finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n catch: function (tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function (iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return _assertThisInitialized(self);\n}\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return _possibleConstructorReturn(this, result);\n };\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\n/**\n * @module lib/functions\n */\n\n/**\n * Check to see this is a Node environment.\n * @type {boolean}\n */\n/* global global */\nvar isNode = typeof global !== 'undefined' && {}.toString.call(global) === '[object global]';\n\n/**\n * Check to see if this is a Bun environment.\n * @see https://bun.sh/guides/util/detect-bun\n * @type {boolean}\n */\nvar isBun = typeof Bun !== 'undefined';\n\n/**\n * Check to see if this is a Deno environment.\n * @see https://docs.deno.com/api/deno/~/Deno\n * @type {boolean}\n */\nvar isDeno = typeof Deno !== 'undefined';\n\n/**\n * Check if this is a server runtime\n * @type {boolean}\n */\nvar isServerRuntime = isNode || isBun || isDeno;\n\n/**\n * Get the name of the method for a given getter or setter.\n *\n * @param {string} prop The name of the property.\n * @param {string} type Either “get” or “set”.\n * @return {string}\n */\nfunction getMethodName(prop, type) {\n if (prop.indexOf(type.toLowerCase()) === 0) {\n return prop;\n }\n return \"\".concat(type.toLowerCase()).concat(prop.substr(0, 1).toUpperCase()).concat(prop.substr(1));\n}\n\n/**\n * Check to see if the object is a DOM Element.\n *\n * @param {*} element The object to check.\n * @return {boolean}\n */\nfunction isDomElement(element) {\n return Boolean(element && element.nodeType === 1 && 'nodeName' in element && element.ownerDocument && element.ownerDocument.defaultView);\n}\n\n/**\n * Check to see whether the value is a number.\n *\n * @see http://dl.dropboxusercontent.com/u/35146/js/tests/isNumber.html\n * @param {*} value The value to check.\n * @param {boolean} integer Check if the value is an integer.\n * @return {boolean}\n */\nfunction isInteger(value) {\n // eslint-disable-next-line eqeqeq\n return !isNaN(parseFloat(value)) && isFinite(value) && Math.floor(value) == value;\n}\n\n/**\n * Check to see if the URL is a Vimeo url.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoUrl(url) {\n return /^(https?:)?\\/\\/((((player|www)\\.)?vimeo\\.com)|((player\\.)?[a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))(?=$|\\/)/.test(url);\n}\n\n/**\n * Check to see if the URL is for a Vimeo embed.\n *\n * @param {string} url The url string.\n * @return {boolean}\n */\nfunction isVimeoEmbed(url) {\n var expr = /^https:\\/\\/player\\.((vimeo\\.com)|([a-zA-Z0-9-]+\\.(videoji\\.(hk|cn)|vimeo\\.work)))\\/video\\/\\d+/;\n return expr.test(url);\n}\nfunction getOembedDomain(url) {\n var match = (url || '').match(/^(?:https?:)?(?:\\/\\/)?([^/?]+)/);\n var domain = (match && match[1] || '').replace('player.', '');\n var customDomains = ['.videoji.hk', '.vimeo.work', '.videoji.cn'];\n for (var _i = 0, _customDomains = customDomains; _i < _customDomains.length; _i++) {\n var customDomain = _customDomains[_i];\n if (domain.endsWith(customDomain)) {\n return domain;\n }\n }\n return 'vimeo.com';\n}\n\n/**\n * Get the Vimeo URL from an element.\n * The element must have either a data-vimeo-id or data-vimeo-url attribute.\n *\n * @param {object} oEmbedParameters The oEmbed parameters.\n * @return {string}\n */\nfunction getVimeoUrl() {\n var oEmbedParameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var id = oEmbedParameters.id;\n var url = oEmbedParameters.url;\n var idOrUrl = id || url;\n if (!idOrUrl) {\n throw new Error('An id or url must be passed, either in an options object or as a data-vimeo-id or data-vimeo-url attribute.');\n }\n if (isInteger(idOrUrl)) {\n return \"https://vimeo.com/\".concat(idOrUrl);\n }\n if (isVimeoUrl(idOrUrl)) {\n return idOrUrl.replace('http:', 'https:');\n }\n if (id) {\n throw new TypeError(\"\\u201C\".concat(id, \"\\u201D is not a valid video id.\"));\n }\n throw new TypeError(\"\\u201C\".concat(idOrUrl, \"\\u201D is not a vimeo.com url.\"));\n}\n\n/* eslint-disable max-params */\n/**\n * A utility method for attaching and detaching event handlers\n *\n * @param {EventTarget} target\n * @param {string | string[]} eventName\n * @param {function} callback\n * @param {'addEventListener' | 'on'} onName\n * @param {'removeEventListener' | 'off'} offName\n * @return {{cancel: (function(): void)}}\n */\nvar subscribe = function subscribe(target, eventName, callback) {\n var onName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'addEventListener';\n var offName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'removeEventListener';\n var eventNames = typeof eventName === 'string' ? [eventName] : eventName;\n eventNames.forEach(function (evName) {\n target[onName](evName, callback);\n });\n return {\n cancel: function cancel() {\n return eventNames.forEach(function (evName) {\n return target[offName](evName, callback);\n });\n }\n };\n};\n\n/**\n * Find the iframe element that contains a specific source window\n *\n * @param {Window} sourceWindow The source window to find the iframe for\n * @param {Document} [doc=document] The document to search within\n * @return {HTMLIFrameElement|null} The iframe element if found, otherwise null\n */\nfunction findIframeBySourceWindow(sourceWindow) {\n var doc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;\n if (!sourceWindow || !doc || typeof doc.querySelectorAll !== 'function') {\n return null;\n }\n var iframes = doc.querySelectorAll('iframe');\n for (var i = 0; i < iframes.length; i++) {\n if (iframes[i] && iframes[i].contentWindow === sourceWindow) {\n return iframes[i];\n }\n }\n return null;\n}\n\nvar arrayIndexOfSupport = typeof Array.prototype.indexOf !== 'undefined';\nvar postMessageSupport = typeof window !== 'undefined' && typeof window.postMessage !== 'undefined';\nif (!isServerRuntime && (!arrayIndexOfSupport || !postMessageSupport)) {\n throw new Error('Sorry, the Vimeo Player API is not available in this browser.');\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\n/*!\n * weakmap-polyfill v2.0.4 - ECMAScript6 WeakMap polyfill\n * https://github.com/polygonplanet/weakmap-polyfill\n * Copyright (c) 2015-2021 polygonplanet <polygon.planet.aqua@gmail.com>\n * @license MIT\n */\n\n(function (self) {\n\n if (self.WeakMap) {\n return;\n }\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var hasDefine = Object.defineProperty && function () {\n try {\n // Avoid IE8's broken Object.defineProperty\n return Object.defineProperty({}, 'x', {\n value: 1\n }).x === 1;\n } catch (e) {}\n }();\n var defineProperty = function (object, name, value) {\n if (hasDefine) {\n Object.defineProperty(object, name, {\n configurable: true,\n writable: true,\n value: value\n });\n } else {\n object[name] = value;\n }\n };\n self.WeakMap = function () {\n // ECMA-262 23.3 WeakMap Objects\n function WeakMap() {\n if (this === void 0) {\n throw new TypeError(\"Constructor WeakMap requires 'new'\");\n }\n defineProperty(this, '_id', genId('_WeakMap'));\n\n // ECMA-262 23.3.1.1 WeakMap([iterable])\n if (arguments.length > 0) {\n // Currently, WeakMap `iterable` argument is not supported\n throw new TypeError('WeakMap iterable is not supported');\n }\n }\n\n // ECMA-262 23.3.3.2 WeakMap.prototype.delete(key)\n defineProperty(WeakMap.prototype, 'delete', function (key) {\n checkInstance(this, 'delete');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n delete key[this._id];\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.3 WeakMap.prototype.get(key)\n defineProperty(WeakMap.prototype, 'get', function (key) {\n checkInstance(this, 'get');\n if (!isObject(key)) {\n return void 0;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return entry[1];\n }\n return void 0;\n });\n\n // ECMA-262 23.3.3.4 WeakMap.prototype.has(key)\n defineProperty(WeakMap.prototype, 'has', function (key) {\n checkInstance(this, 'has');\n if (!isObject(key)) {\n return false;\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n return true;\n }\n return false;\n });\n\n // ECMA-262 23.3.3.5 WeakMap.prototype.set(key, value)\n defineProperty(WeakMap.prototype, 'set', function (key, value) {\n checkInstance(this, 'set');\n if (!isObject(key)) {\n throw new TypeError('Invalid value used as weak map key');\n }\n var entry = key[this._id];\n if (entry && entry[0] === key) {\n entry[1] = value;\n return this;\n }\n defineProperty(key, this._id, [key, value]);\n return this;\n });\n function checkInstance(x, methodName) {\n if (!isObject(x) || !hasOwnProperty.call(x, '_id')) {\n throw new TypeError(methodName + ' method called on incompatible receiver ' + typeof x);\n }\n }\n function genId(prefix) {\n return prefix + '_' + rand() + '.' + rand();\n }\n function rand() {\n return Math.random().toString().substring(2);\n }\n defineProperty(WeakMap, '_polyfill', true);\n return WeakMap;\n }();\n function isObject(x) {\n return Object(x) === x;\n }\n})(typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : commonjsGlobal);\n\nvar npo_src = createCommonjsModule(function (module) {\n/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name, context, definition) {\n // special form of UMD for polyfilling across evironments\n context[name] = context[name] || definition();\n if (module.exports) {\n module.exports = context[name];\n }\n})(\"Promise\", typeof commonjsGlobal != \"undefined\" ? commonjsGlobal : commonjsGlobal, function DEF() {\n\n var builtInProp,\n cycle,\n scheduling_queue,\n ToString = Object.prototype.toString,\n timer = typeof setImmediate != \"undefined\" ? function timer(fn) {\n return setImmediate(fn);\n } : setTimeout;\n\n // dammit, IE8.\n try {\n Object.defineProperty({}, \"x\", {});\n builtInProp = function builtInProp(obj, name, val, config) {\n return Object.defineProperty(obj, name, {\n value: val,\n writable: true,\n configurable: config !== false\n });\n };\n } catch (err) {\n builtInProp = function builtInProp(obj, name, val) {\n obj[name] = val;\n return obj;\n };\n }\n\n // Note: using a queue instead of array for efficiency\n scheduling_queue = function Queue() {\n var first, last, item;\n function Item(fn, self) {\n this.fn = fn;\n this.self = self;\n this.next = void 0;\n }\n return {\n add: function add(fn, self) {\n item = new Item(fn, self);\n if (last) {\n last.next = item;\n } else {\n first = item;\n }\n last = item;\n item = void 0;\n },\n drain: function drain() {\n var f = first;\n first = last = cycle = void 0;\n while (f) {\n f.fn.call(f.self);\n f = f.next;\n }\n }\n };\n }();\n function schedule(fn, self) {\n scheduling_queue.add(fn, self);\n if (!cycle) {\n cycle = timer(scheduling_queue.drain);\n }\n }\n\n // promise duck typing\n function isThenable(o) {\n var _then,\n o_type = typeof o;\n if (o != null && (o_type == \"object\" || o_type == \"function\")) {\n _then = o.then;\n }\n return typeof _then == \"function\" ? _then : false;\n }\n function notify() {\n for (var i = 0; i < this.chain.length; i++) {\n notifyIsolated(this, this.state === 1 ? this.chain[i].success : this.chain[i].failure, this.chain[i]);\n }\n this.chain.length = 0;\n }\n\n // NOTE: This is a separate function to isolate\n // the `try..catch` so that other code can be\n // optimized better\n function notifyIsolated(self, cb, chain) {\n var ret, _then;\n try {\n if (cb === false) {\n chain.reject(self.msg);\n } else {\n if (cb === true) {\n ret = self.msg;\n } else {\n ret = cb.call(void 0, self.msg);\n }\n if (ret === chain.promise) {\n chain.reject(TypeError(\"Promise-chain cycle\"));\n } else if (_then = isThenable(ret)) {\n _then.call(ret, chain.resolve, chain.reject);\n } else {\n chain.resolve(ret);\n }\n }\n } catch (err) {\n chain.reject(err);\n }\n }\n function resolve(msg) {\n var _then,\n self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n try {\n if (_then = isThenable(msg)) {\n schedule(function () {\n var def_wrapper = new MakeDefWrapper(self);\n try {\n _then.call(msg, function $resolve$() {\n resolve.apply(def_wrapper, arguments);\n }, function $reject$() {\n reject.apply(def_wrapper, arguments);\n });\n } catch (err) {\n reject.call(def_wrapper, err);\n }\n });\n } else {\n self.msg = msg;\n self.state = 1;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n } catch (err) {\n reject.call(new MakeDefWrapper(self), err);\n }\n }\n function reject(msg) {\n var self = this;\n\n // already triggered?\n if (self.triggered) {\n return;\n }\n self.triggered = true;\n\n // unwrap\n if (self.def) {\n self = self.def;\n }\n self.msg = msg;\n self.state = 2;\n if (self.chain.length > 0) {\n schedule(notify, self);\n }\n }\n function iteratePromises(Constructor, arr, resolver, rejecter) {\n for (var idx = 0; idx < arr.length; idx++) {\n (function IIFE(idx) {\n Constructor.resolve(arr[idx]).then(function $resolver$(msg) {\n resolver(idx, msg);\n }, rejecter);\n })(idx);\n }\n }\n function MakeDefWrapper(self) {\n this.def = self;\n this.triggered = false;\n }\n function MakeDef(self) {\n this.promise = self;\n this.state = 0;\n this.triggered = false;\n this.chain = [];\n this.msg = void 0;\n }\n function Promise(executor) {\n if (typeof executor != \"function\") {\n throw TypeError(\"Not a function\");\n }\n if (this.__NPO__ !== 0) {\n throw TypeError(\"Not a promise\");\n }\n\n // instance shadowing the inherited \"brand\"\n // to signal an already \"initialized\" promise\n this.__NPO__ = 1;\n var def = new MakeDef(this);\n this[\"then\"] = function then(success, failure) {\n var o = {\n success: typeof success == \"function\" ? success : true,\n failure: typeof failure == \"function\" ? failure : false\n };\n // Note: `then(..)` itself can be borrowed to be used against\n // a different promise constructor for making the chained promise,\n // by substituting a different `this` binding.\n o.promise = new this.constructor(function extractChain(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n o.resolve = resolve;\n o.reject = reject;\n });\n def.chain.push(o);\n if (def.state !== 0) {\n schedule(notify, def);\n }\n return o.promise;\n };\n this[\"catch\"] = function $catch$(failure) {\n return this.then(void 0, failure);\n };\n try {\n executor.call(void 0, function publicResolve(msg) {\n resolve.call(def, msg);\n }, function publicReject(msg) {\n reject.call(def, msg);\n });\n } catch (err) {\n reject.call(def, err);\n }\n }\n var PromisePrototype = builtInProp({}, \"constructor\", Promise, /*configurable=*/false);\n\n // Note: Android 4 cannot use `Object.defineProperty(..)` here\n Promise.prototype = PromisePrototype;\n\n // built-in \"brand\" to signal an \"uninitialized\" promise\n builtInProp(PromisePrototype, \"__NPO__\", 0, /*configurable=*/false);\n builtInProp(Promise, \"resolve\", function Promise$resolve(msg) {\n var Constructor = this;\n\n // spec mandated checks\n // note: best \"isPromise\" check that's practical for now\n if (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n return msg;\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n resolve(msg);\n });\n });\n builtInProp(Promise, \"reject\", function Promise$reject(msg) {\n return new this(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n reject(msg);\n });\n });\n builtInProp(Promise, \"all\", function Promise$all(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n if (arr.length === 0) {\n return Constructor.resolve([]);\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n var len = arr.length,\n msgs = Array(len),\n count = 0;\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n msgs[idx] = msg;\n if (++count === len) {\n resolve(msgs);\n }\n }, reject);\n });\n });\n builtInProp(Promise, \"race\", function Promise$race(arr) {\n var Constructor = this;\n\n // spec mandated checks\n if (ToString.call(arr) != \"[object Array]\") {\n return Constructor.reject(TypeError(\"Not an array\"));\n }\n return new Constructor(function executor(resolve, reject) {\n if (typeof resolve != \"function\" || typeof reject != \"function\") {\n throw TypeError(\"Not a function\");\n }\n iteratePromises(Constructor, arr, function resolver(idx, msg) {\n resolve(msg);\n }, reject);\n });\n });\n return Promise;\n});\n});\n\n/**\n * @module lib/callbacks\n */\n\nvar callbackMap = new WeakMap();\n\n/**\n * Store a callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @param {(function(this:Player, *): void|{resolve: function, reject: function})} callback\n * The callback to call or an object with resolve and reject functions for a promise.\n * @return {void}\n */\nfunction storeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!(name in playerCallbacks)) {\n playerCallbacks[name] = [];\n }\n playerCallbacks[name].push(callback);\n callbackMap.set(player.element, playerCallbacks);\n}\n\n/**\n * Get the callbacks for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @return {function[]}\n */\nfunction getCallbacks(player, name) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n return playerCallbacks[name] || [];\n}\n\n/**\n * Remove a stored callback for a method or event for a player.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name\n * @param {function} [callback] The specific callback to remove.\n * @return {boolean} Was this the last callback?\n */\nfunction removeCallback(player, name, callback) {\n var playerCallbacks = callbackMap.get(player.element) || {};\n if (!playerCallbacks[name]) {\n return true;\n }\n\n // If no callback is passed, remove all callbacks for the event\n if (!callback) {\n playerCallbacks[name] = [];\n callbackMap.set(player.element, playerCallbacks);\n return true;\n }\n var index = playerCallbacks[name].indexOf(callback);\n if (index !== -1) {\n playerCallbacks[name].splice(index, 1);\n }\n callbackMap.set(player.element, playerCallbacks);\n return playerCallbacks[name] && playerCallbacks[name].length === 0;\n}\n\n/**\n * Return the first stored callback for a player and event or method.\n *\n * @param {Player} player The player object.\n * @param {string} name The method or event name.\n * @return {function} The callback, or false if there were none\n */\nfunction shiftCallbacks(player, name) {\n var playerCallbacks = getCallbacks(player, name);\n if (playerCallbacks.length < 1) {\n return false;\n }\n var callback = playerCallbacks.shift();\n removeCallback(player, name, callback);\n return callback;\n}\n\n/**\n * Move callbacks associated with an element to another element.\n *\n * @param {HTMLElement} oldElement The old element.\n * @param {HTMLElement} newElement The new element.\n * @return {void}\n */\nfunction swapCallbacks(oldElement, newElement) {\n var playerCallbacks = callbackMap.get(oldElement);\n callbackMap.set(newElement, playerCallbacks);\n callbackMap.delete(oldElement);\n}\n\n/**\n * @module lib/postmessage\n */\n\n/**\n * Parse a message received from postMessage.\n *\n * @param {*} data The data received from postMessage.\n * @return {object}\n */\nfunction parseMessageData(data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (error) {\n // If the message cannot be parsed, throw the error as a warning\n console.warn(error);\n return {};\n }\n }\n return data;\n}\n\n/**\n * Post a message to the specified target.\n *\n * @param {Player} player The player object to use.\n * @param {string} method The API method to call.\n * @param {string|number|object|Array|undefined} params The parameters to send to the player.\n * @return {void}\n */\nfunction postMessage(player, method, params) {\n if (!player.element.contentWindow || !player.element.contentWindow.postMessage) {\n return;\n }\n var message = {\n method: method\n };\n if (params !== undefined) {\n message.value = params;\n }\n\n // IE 8 and 9 do not support passing messages, so stringify them\n var ieVersion = parseFloat(navigator.userAgent.toLowerCase().replace(/^.*msie (\\d+).*$/, '$1'));\n if (ieVersion >= 8 && ieVersion < 10) {\n message = JSON.stringify(message);\n }\n player.element.contentWindow.postMessage(message, player.origin);\n}\n\n/**\n * Parse the data received from a message event.\n *\n * @param {Player} player The player that received the message.\n * @param {(Object|string)} data The message data. Strings will be parsed into JSON.\n * @return {void}\n */\nfunction processData(player, data) {\n data = parseMessageData(data);\n var callbacks = [];\n var param;\n if (data.event) {\n if (data.event === 'error') {\n var promises = getCallbacks(player, data.data.method);\n promises.forEach(function (promise) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n promise.reject(error);\n removeCallback(player, data.data.method, promise);\n });\n }\n callbacks = getCallbacks(player, \"event:\".concat(data.event));\n param = data.data;\n } else if (data.method) {\n var callback = shiftCallbacks(player, data.method);\n if (callback) {\n callbacks.push(callback);\n param = data.value;\n }\n }\n callbacks.forEach(function (callback) {\n try {\n if (typeof callback === 'function') {\n callback.call(player, param);\n return;\n }\n callback.resolve(param);\n } catch (e) {\n // empty\n }\n });\n}\n\n/**\n * @module lib/embed\n */\nvar oEmbedParameters = ['airplay', 'audio_tracks', 'audiotrack', 'autopause', 'autoplay', 'background', 'byline', 'cc', 'chapter_id', 'chapters', 'chromecast', 'color', 'colors', 'controls', 'dnt', 'end_time', 'fullscreen', 'height', 'id', 'initial_quality', 'interactive_params', 'keyboard', 'loop', 'maxheight', 'max_quality', 'maxwidth', 'min_quality', 'muted', 'play_button_position', 'playsinline', 'portrait', 'preload', 'progress_bar', 'quality', 'quality_selector', 'responsive', 'skipping_forward', 'speed', 'start_time', 'texttrack', 'thumbnail_id', 'title', 'transcript', 'transparent', 'unmute_button', 'url', 'vimeo_logo', 'volume', 'watch_full_video', 'width'];\n\n/**\n * Get the 'data-vimeo'-prefixed attributes from an element as an object.\n *\n * @param {HTMLElement} element The element.\n * @param {Object} [defaults={}] The default values to use.\n * @return {Object<string, string>}\n */\nfunction getOEmbedParameters(element) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return oEmbedParameters.reduce(function (params, param) {\n var value = element.getAttribute(\"data-vimeo-\".concat(param));\n if (value || value === '') {\n params[param] = value === '' ? 1 : value;\n }\n return params;\n }, defaults);\n}\n\n/**\n * Create an embed from oEmbed data inside an element.\n *\n * @param {object} data The oEmbed data.\n * @param {HTMLElement} element The element to put the iframe in.\n * @return {HTMLIFrameElement} The iframe embed.\n */\nfunction createEmbed(_ref, element) {\n var html = _ref.html;\n if (!element) {\n throw new TypeError('An element must be provided');\n }\n if (element.getAttribute('data-vimeo-initialized') !== null) {\n return element.querySelector('iframe');\n }\n var div = document.createElement('div');\n div.innerHTML = html;\n element.appendChild(div.firstChild);\n element.setAttribute('data-vimeo-initialized', 'true');\n return element.querySelector('iframe');\n}\n\n/**\n * Make an oEmbed call for the specified URL.\n *\n * @param {string} videoUrl The vimeo.com url for the video.\n * @param {Object} [params] Parameters to pass to oEmbed.\n * @param {HTMLElement} element The element.\n * @return {Promise}\n */\nfunction getOEmbedData(videoUrl) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var element = arguments.length > 2 ? arguments[2] : undefined;\n return new Promise(function (resolve, reject) {\n if (!isVimeoUrl(videoUrl)) {\n throw new TypeError(\"\\u201C\".concat(videoUrl, \"\\u201D is not a vimeo.com url.\"));\n }\n var domain = getOembedDomain(videoUrl);\n var url = \"https://\".concat(domain, \"/api/oembed.json?url=\").concat(encodeURIComponent(videoUrl));\n for (var param in params) {\n if (params.hasOwnProperty(param)) {\n url += \"&\".concat(param, \"=\").concat(encodeURIComponent(params[param]));\n }\n }\n var xhr = 'XDomainRequest' in window ? new XDomainRequest() : new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onload = function () {\n if (xhr.status === 404) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D was not found.\")));\n return;\n }\n if (xhr.status === 403) {\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n try {\n var json = JSON.parse(xhr.responseText);\n // Check api response for 403 on oembed\n if (json.domain_status_code === 403) {\n // We still want to create the embed to give users visual feedback\n createEmbed(json, element);\n reject(new Error(\"\\u201C\".concat(videoUrl, \"\\u201D is not embeddable.\")));\n return;\n }\n resolve(json);\n } catch (error) {\n reject(error);\n }\n };\n xhr.onerror = function () {\n var status = xhr.status ? \" (\".concat(xhr.status, \")\") : '';\n reject(new Error(\"There was an error fetching the embed code from Vimeo\".concat(status, \".\")));\n };\n xhr.send();\n });\n}\n\n/**\n * Initialize all embeds within a specific element\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initializeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var elements = [].slice.call(parent.querySelectorAll('[data-vimeo-id], [data-vimeo-url]'));\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error creating an embed: \".concat(error));\n }\n };\n elements.forEach(function (element) {\n try {\n // Skip any that have data-vimeo-defer\n if (element.getAttribute('data-vimeo-defer') !== null) {\n return;\n }\n var params = getOEmbedParameters(element);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n return createEmbed(data, element);\n }).catch(handleError);\n } catch (error) {\n handleError(error);\n }\n });\n}\n\n/**\n * Resize embeds when messaged by the player.\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction resizeEmbeds() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoPlayerResizeEmbeds_) {\n return;\n }\n window.VimeoPlayerResizeEmbeds_ = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n\n // 'spacechange' is fired only on embeds with cards\n if (!event.data || event.data.event !== 'spacechange') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n if (senderIFrame) {\n // Change padding-bottom of the enclosing div to accommodate\n // card carousel without distorting aspect ratio\n var space = senderIFrame.parentElement;\n space.style.paddingBottom = \"\".concat(event.data.data[0].bottom, \"px\");\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Add chapters to existing metadata for Google SEO\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction initAppendVideoMetadata() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoSeoMetadataAppended) {\n return;\n }\n window.VimeoSeoMetadataAppended = true;\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n\n // Initiate appendVideoMetadata if iframe is a Vimeo embed\n if (senderIFrame && isVimeoEmbed(senderIFrame.src)) {\n var player = new Player(senderIFrame);\n player.callMethod('appendVideoMetadata', window.location.href);\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Seek to time indicated by vimeo_t query parameter if present in URL\n *\n * @param {HTMLElement} [parent=document] The parent element.\n * @return {void}\n */\nfunction checkUrlTimeParam() {\n var parent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n // Prevent execution if users include the player.js script multiple times.\n if (window.VimeoCheckedUrlTimeParam) {\n return;\n }\n window.VimeoCheckedUrlTimeParam = true;\n var handleError = function handleError(error) {\n if ('console' in window && console.error) {\n console.error(\"There was an error getting video Id: \".concat(error));\n }\n };\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'ready') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source, parent) : null;\n if (senderIFrame && isVimeoEmbed(senderIFrame.src)) {\n var player = new Player(senderIFrame);\n player.getVideoId().then(function (videoId) {\n var matches = new RegExp(\"[?&]vimeo_t_\".concat(videoId, \"=([^&#]*)\")).exec(window.location.href);\n if (matches && matches[1]) {\n var sec = decodeURI(matches[1]);\n player.setCurrentTime(sec);\n }\n return;\n }).catch(handleError);\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/**\n * Updates iframe embeds to support DRM content playback by adding the 'encrypted-media' permission\n * to the iframe's allow attribute when DRM initialization fails. This function acts as a fallback\n * mechanism to enable playback of DRM-protected content in embeds that weren't properly configured.\n *\n * @return {void}\n */\nfunction updateDRMEmbeds() {\n if (window.VimeoDRMEmbedsUpdated) {\n return;\n }\n window.VimeoDRMEmbedsUpdated = true;\n\n /**\n * Handle message events for DRM initialization failures\n * @param {MessageEvent} event - The message event from the iframe\n */\n var onMessage = function onMessage(event) {\n if (!isVimeoUrl(event.origin)) {\n return;\n }\n var data = parseMessageData(event.data);\n if (!data || data.event !== 'drminitfailed') {\n return;\n }\n var senderIFrame = event.source ? findIframeBySourceWindow(event.source) : null;\n if (!senderIFrame) {\n return;\n }\n var currentAllow = senderIFrame.getAttribute('allow') || '';\n var allowSupportsDRM = currentAllow.includes('encrypted-media');\n if (!allowSupportsDRM) {\n // For DRM playback to successfully occur, the iframe `allow` attribute must include 'encrypted-media'.\n // If the video requires DRM but doesn't have the attribute, we try to add on behalf of the embed owner\n // as a temporary measure to enable playback until they're able to update their embeds.\n senderIFrame.setAttribute('allow', \"\".concat(currentAllow, \"; encrypted-media\"));\n var currentUrl = new URL(senderIFrame.getAttribute('src'));\n\n // Adding this forces the embed to reload once `allow` has been updated with `encrypted-media`.\n currentUrl.searchParams.set('forcereload', 'drm');\n senderIFrame.setAttribute('src', currentUrl.toString());\n return;\n }\n };\n window.addEventListener('message', onMessage);\n}\n\n/* MIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nTerms */\n\nfunction initializeScreenfull() {\n var fn = function () {\n var val;\n var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n // New WebKit\n ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n // Old WebKit\n ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n var i = 0;\n var l = fnMap.length;\n var ret = {};\n for (; i < l; i++) {\n val = fnMap[i];\n if (val && val[1] in document) {\n for (i = 0; i < val.length; i++) {\n ret[fnMap[0][i]] = val[i];\n }\n return ret;\n }\n }\n return false;\n }();\n var eventNameMap = {\n fullscreenchange: fn.fullscreenchange,\n fullscreenerror: fn.fullscreenerror\n };\n var screenfull = {\n request: function request(element) {\n return new Promise(function (resolve, reject) {\n var onFullScreenEntered = function onFullScreenEntered() {\n screenfull.off('fullscreenchange', onFullScreenEntered);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenEntered);\n element = element || document.documentElement;\n var returnPromise = element[fn.requestFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenEntered).catch(reject);\n }\n });\n },\n exit: function exit() {\n return new Promise(function (resolve, reject) {\n if (!screenfull.isFullscreen) {\n resolve();\n return;\n }\n var onFullScreenExit = function onFullScreenExit() {\n screenfull.off('fullscreenchange', onFullScreenExit);\n resolve();\n };\n screenfull.on('fullscreenchange', onFullScreenExit);\n var returnPromise = document[fn.exitFullscreen]();\n if (returnPromise instanceof Promise) {\n returnPromise.then(onFullScreenExit).catch(reject);\n }\n });\n },\n on: function on(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.addEventListener(eventName, callback);\n }\n },\n off: function off(event, callback) {\n var eventName = eventNameMap[event];\n if (eventName) {\n document.removeEventListener(eventName, callback);\n }\n }\n };\n Object.defineProperties(screenfull, {\n isFullscreen: {\n get: function get() {\n return Boolean(document[fn.fullscreenElement]);\n }\n },\n element: {\n enumerable: true,\n get: function get() {\n return document[fn.fullscreenElement];\n }\n },\n isEnabled: {\n enumerable: true,\n get: function get() {\n // Coerce to boolean in case of old WebKit\n return Boolean(document[fn.fullscreenEnabled]);\n }\n }\n });\n return screenfull;\n}\n\n/** @typedef {import('./timing-src-connector.types').PlayerControls} PlayerControls */\n/** @typedef {import('timing-object').ITimingObject} TimingObject */\n/** @typedef {import('./timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n/** @typedef {(msg: string) => any} Logger */\n/** @typedef {import('timing-object').TConnectionState} TConnectionState */\n\n/**\n * @type {TimingSrcConnectorOptions}\n *\n * For details on these properties and their effects, see the typescript definition referenced above.\n */\nvar defaultOptions = {\n role: 'viewer',\n autoPlayMuted: true,\n allowedDrift: 0.3,\n maxAllowedDrift: 1,\n minCheckInterval: 0.1,\n maxRateAdjustment: 0.2,\n maxTimeToCatchUp: 1\n};\n\n/**\n * There's a proposed W3C spec for the Timing Object which would introduce a new set of APIs that would simplify time-synchronization tasks for browser applications.\n *\n * Proposed spec: https://webtiming.github.io/timingobject/\n * V3 Spec: https://timingsrc.readthedocs.io/en/latest/\n * Demuxed talk: https://www.youtube.com/watch?v=cZSjDaGDmX8\n *\n * This class makes it easy to connect Vimeo.Player to a provided TimingObject via Vimeo.Player.setTimingSrc(myTimingObject, options) and the synchronization will be handled automatically.\n *\n * There are 5 general responsibilities in TimingSrcConnector:\n *\n * 1. `updatePlayer()` which sets the player's currentTime, playbackRate and pause/play state based on current state of the TimingObject.\n * 2. `updateTimingObject()` which sets the TimingObject's position and velocity from the player's state.\n * 3. `playerUpdater` which listens for change events on the TimingObject and will respond by calling updatePlayer.\n * 4. `timingObjectUpdater` which listens to the player events of seeked, play and pause and will respond by calling `updateTimingObject()`.\n * 5. `maintainPlaybackPosition` this is code that constantly monitors the player to make sure it's always in sync with the TimingObject. This is needed because videos will generally not play with precise time accuracy and there will be some drift which becomes more noticeable over longer periods (as noted in the timing-object spec). More details on this method below.\n */\nvar TimingSrcConnector = /*#__PURE__*/function (_EventTarget) {\n _inherits(TimingSrcConnector, _EventTarget);\n var _super = _createSuper(TimingSrcConnector);\n /**\n * @param {PlayerControls} player\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n * @param {Logger} logger\n */\n function TimingSrcConnector(_player, timingObject) {\n var _this;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var logger = arguments.length > 3 ? arguments[3] : undefined;\n _classCallCheck(this, TimingSrcConnector);\n _this = _super.call(this);\n _defineProperty(_assertThisInitialized(_this), \"logger\", void 0);\n _defineProperty(_assertThisInitialized(_this), \"speedAdjustment\", 0);\n /**\n * @param {PlayerControls} player\n * @param {number} newAdjustment\n * @return {Promise<void>}\n */\n _defineProperty(_assertThisInitialized(_this), \"adjustSpeed\", /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(player, newAdjustment) {\n var newPlaybackRate;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (!(_this.speedAdjustment === newAdjustment)) {\n _context.next = 2;\n break;\n }\n return _context.abrupt(\"return\");\n case 2:\n _context.next = 4;\n return player.getPlaybackRate();\n case 4:\n _context.t0 = _context.sent;\n _context.t1 = _this.speedAdjustment;\n _context.t2 = _context.t0 - _context.t1;\n _context.t3 = newAdjustment;\n newPlaybackRate = _context.t2 + _context.t3;\n _this.log(\"New playbackRate: \".concat(newPlaybackRate));\n _context.next = 12;\n return player.setPlaybackRate(newPlaybackRate);\n case 12:\n _this.speedAdjustment = newAdjustment;\n case 13:\n case \"end\":\n return _context.stop();\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n _this.logger = logger;\n _this.init(timingObject, _player, _objectSpread2(_objectSpread2({}, defaultOptions), options));\n return _this;\n }\n _createClass(TimingSrcConnector, [{\n key: \"disconnect\",\n value: function disconnect() {\n this.dispatchEvent(new Event('disconnect'));\n }\n\n /**\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"init\",\n value: function () {\n var _init = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(timingObject, player, options) {\n var _this2 = this;\n var playerUpdater, positionSync, timingObjectUpdater;\n return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n while (1) switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.waitForTOReadyState(timingObject, 'open');\n case 2:\n if (!(options.role === 'viewer')) {\n _context2.next = 10;\n break;\n }\n _context2.next = 5;\n return this.updatePlayer(timingObject, player, options);\n case 5:\n playerUpdater = subscribe(timingObject, 'change', function () {\n return _this2.updatePlayer(timingObject, player, options);\n });\n positionSync = this.maintainPlaybackPosition(timingObject, player, options);\n this.addEventListener('disconnect', function () {\n positionSync.cancel();\n playerUpdater.cancel();\n });\n _context2.next = 14;\n break;\n case 10:\n _context2.next = 12;\n return this.updateTimingObject(timingObject, player);\n case 12:\n timingObjectUpdater = subscribe(player, ['seeked', 'play', 'pause', 'ratechange'], function () {\n return _this2.updateTimingObject(timingObject, player);\n }, 'on', 'off');\n this.addEventListener('disconnect', function () {\n return timingObjectUpdater.cancel();\n });\n case 14:\n case \"end\":\n return _context2.stop();\n }\n }, _callee2, this);\n }));\n function init(_x3, _x4, _x5) {\n return _init.apply(this, arguments);\n }\n return init;\n }()\n /**\n * Sets the TimingObject's state to reflect that of the player\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @return {Promise<void>}\n */\n }, {\n key: \"updateTimingObject\",\n value: function () {\n var _updateTimingObject = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(timingObject, player) {\n var _yield$Promise$all, _yield$Promise$all2, position, isPaused, playbackRate;\n return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n while (1) switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Promise.all([player.getCurrentTime(), player.getPaused(), player.getPlaybackRate()]);\n case 2:\n _yield$Promise$all = _context3.sent;\n _yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);\n position = _yield$Promise$all2[0];\n isPaused = _yield$Promise$all2[1];\n playbackRate = _yield$Promise$all2[2];\n timingObject.update({\n position: position,\n velocity: isPaused ? 0 : playbackRate\n });\n case 8:\n case \"end\":\n return _context3.stop();\n }\n }, _callee3);\n }));\n function updateTimingObject(_x6, _x7) {\n return _updateTimingObject.apply(this, arguments);\n }\n return updateTimingObject;\n }()\n /**\n * Sets the player's timing state to reflect that of the TimingObject\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {Promise<void>}\n */\n }, {\n key: \"updatePlayer\",\n value: function () {\n var _updatePlayer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(timingObject, player, options) {\n var _timingObject$query, position, velocity;\n return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n while (1) switch (_context5.prev = _context5.next) {\n case 0:\n _timingObject$query = timingObject.query(), position = _timingObject$query.position, velocity = _timingObject$query.velocity;\n if (typeof position === 'number') {\n player.setCurrentTime(position);\n }\n if (!(typeof velocity === 'number')) {\n _context5.next = 25;\n break;\n }\n if (!(velocity === 0)) {\n _context5.next = 11;\n break;\n }\n _context5.next = 6;\n return player.getPaused();\n case 6:\n _context5.t0 = _context5.sent;\n if (!(_context5.t0 === false)) {\n _context5.next = 9;\n break;\n }\n player.pause();\n case 9:\n _context5.next = 25;\n break;\n case 11:\n if (!(velocity > 0)) {\n _context5.next = 25;\n break;\n }\n _context5.next = 14;\n return player.getPaused();\n case 14:\n _context5.t1 = _context5.sent;\n if (!(_context5.t1 === true)) {\n _context5.next = 19;\n break;\n }\n _context5.next = 18;\n return player.play().catch( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(err) {\n return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n while (1) switch (_context4.prev = _context4.next) {\n case 0:\n if (!(err.name === 'NotAllowedError' && options.autoPlayMuted)) {\n _context4.next = 5;\n break;\n }\n _context4.next = 3;\n return player.setMuted(true);\n case 3:\n _context4.next = 5;\n return player.play().catch(function (err2) {\n return console.error('Couldn\\'t play the video from TimingSrcConnector. Error:', err2);\n });\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }, _callee4);\n }));\n return function (_x11) {\n return _ref2.apply(this, arguments);\n };\n }());\n case 18:\n this.updatePlayer(timingObject, player, options);\n case 19:\n _context5.next = 21;\n return player.getPlaybackRate();\n case 21:\n _context5.t2 = _context5.sent;\n _context5.t3 = velocity;\n if (!(_context5.t2 !== _context5.t3)) {\n _context5.next = 25;\n break;\n }\n player.setPlaybackRate(velocity);\n case 25:\n case \"end\":\n return _context5.stop();\n }\n }, _callee5, this);\n }));\n function updatePlayer(_x8, _x9, _x10) {\n return _updatePlayer.apply(this, arguments);\n }\n return updatePlayer;\n }()\n /**\n * Since video players do not play with 100% time precision, we need to closely monitor\n * our player to be sure it remains in sync with the TimingObject.\n *\n * If out of sync, we use the current conditions and the options provided to determine\n * whether to re-sync via setting currentTime or adjusting the playbackRate\n *\n * @param {TimingObject} timingObject\n * @param {PlayerControls} player\n * @param {TimingSrcConnectorOptions} options\n * @return {{cancel: (function(): void)}}\n */\n }, {\n key: \"maintainPlaybackPosition\",\n value: function maintainPlaybackPosition(timingObject, player, options) {\n var _this3 = this;\n var allowedDrift = options.allowedDrift,\n maxAllowedDrift = options.maxAllowedDrift,\n minCheckInterval = options.minCheckInterval,\n maxRateAdjustment = options.maxRateAdjustment,\n maxTimeToCatchUp = options.maxTimeToCatchUp;\n var syncInterval = Math.min(maxTimeToCatchUp, Math.max(minCheckInterval, maxAllowedDrift)) * 1000;\n var check = /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n var diff, diffAbs, min, max, adjustment;\n return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n while (1) switch (_context6.prev = _context6.next) {\n case 0:\n _context6.t0 = timingObject.query().velocity === 0;\n if (_context6.t0) {\n _context6.next = 6;\n break;\n }\n _context6.next = 4;\n return player.getPaused();\n case 4:\n _context6.t1 = _context6.sent;\n _context6.t0 = _context6.t1 === true;\n case 6:\n if (!_context6.t0) {\n _context6.next = 8;\n break;\n }\n return _context6.abrupt(\"return\");\n case 8:\n _context6.t2 = timingObject.query().position;\n _context6.next = 11;\n return player.getCurrentTime();\n case 11:\n _context6.t3 = _context6.sent;\n diff = _context6.t2 - _context6.t3;\n diffAbs = Math.abs(diff);\n _this3.log(\"Drift: \".concat(diff));\n if (!(diffAbs > maxAllowedDrift)) {\n _context6.next = 22;\n break;\n }\n _context6.next = 18;\n return _this3.adjustSpeed(player, 0);\n case 18:\n player.setCurrentTime(timingObject.query().position);\n _this3.log('Resync by currentTime');\n _context6.next = 29;\n break;\n case 22:\n if (!(diffAbs > allowedDrift)) {\n _context6.next = 29;\n break;\n }\n min = diffAbs / maxTimeToCatchUp;\n max = maxRateAdjustment;\n adjustment = min < max ? (max - min) / 2 : max;\n _context6.next = 28;\n return _this3.adjustSpeed(player, adjustment * Math.sign(diff));\n case 28:\n _this3.log('Resync by playbackRate');\n case 29:\n case \"end\":\n return _context6.stop();\n }\n }, _callee6);\n }));\n return function check() {\n return _ref3.apply(this, arguments);\n };\n }();\n var interval = setInterval(function () {\n return check();\n }, syncInterval);\n return {\n cancel: function cancel() {\n return clearInterval(interval);\n }\n };\n }\n\n /**\n * @param {string} msg\n */\n }, {\n key: \"log\",\n value: function log(msg) {\n var _this$logger;\n (_this$logger = this.logger) === null || _this$logger === void 0 ? void 0 : _this$logger.call(this, \"TimingSrcConnector: \".concat(msg));\n }\n }, {\n key: \"waitForTOReadyState\",\n value:\n /**\n * @param {TimingObject} timingObject\n * @param {TConnectionState} state\n * @return {Promise<void>}\n */\n function waitForTOReadyState(timingObject, state) {\n return new Promise(function (resolve) {\n var check = function check() {\n if (timingObject.readyState === state) {\n resolve();\n } else {\n timingObject.addEventListener('readystatechange', check, {\n once: true\n });\n }\n };\n check();\n });\n }\n }]);\n return TimingSrcConnector;\n}( /*#__PURE__*/_wrapNativeSuper(EventTarget));\n\nvar playerMap = new WeakMap();\nvar readyMap = new WeakMap();\nvar screenfull = {};\nvar Player = /*#__PURE__*/function () {\n /**\n * Create a Player.\n *\n * @param {(HTMLIFrameElement|HTMLElement|string|jQuery)} element A reference to the Vimeo\n * player iframe, and id, or a jQuery object.\n * @param {object} [options] oEmbed parameters to use when creating an embed in the element.\n * @return {Player}\n */\n function Player(element) {\n var _this = this;\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Player);\n /* global jQuery */\n if (window.jQuery && element instanceof jQuery) {\n if (element.length > 1 && window.console && console.warn) {\n console.warn('A jQuery object with multiple elements was passed, using the first element.');\n }\n element = element[0];\n }\n\n // Find an element by ID\n if (typeof document !== 'undefined' && typeof element === 'string') {\n element = document.getElementById(element);\n }\n\n // Not an element!\n if (!isDomElement(element)) {\n throw new TypeError('You must pass either a valid element or a valid id.');\n }\n\n // Already initialized an embed in this div, so grab the iframe\n if (element.nodeName !== 'IFRAME') {\n var iframe = element.querySelector('iframe');\n if (iframe) {\n element = iframe;\n }\n }\n\n // iframe url is not a Vimeo url\n if (element.nodeName === 'IFRAME' && !isVimeoUrl(element.getAttribute('src') || '')) {\n throw new Error('The player element passed isn’t a Vimeo embed.');\n }\n\n // If there is already a player object in the map, return that\n if (playerMap.has(element)) {\n return playerMap.get(element);\n }\n this._window = element.ownerDocument.defaultView;\n this.element = element;\n this.origin = '*';\n var readyPromise = new npo_src(function (resolve, reject) {\n _this._onMessage = function (event) {\n if (!isVimeoUrl(event.origin) || _this.element.contentWindow !== event.source) {\n return;\n }\n if (_this.origin === '*') {\n _this.origin = event.origin;\n }\n var data = parseMessageData(event.data);\n var isError = data && data.event === 'error';\n var isReadyError = isError && data.data && data.data.method === 'ready';\n if (isReadyError) {\n var error = new Error(data.data.message);\n error.name = data.data.name;\n reject(error);\n return;\n }\n var isReadyEvent = data && data.event === 'ready';\n var isPingResponse = data && data.method === 'ping';\n if (isReadyEvent || isPingResponse) {\n _this.element.setAttribute('data-ready', 'true');\n resolve();\n return;\n }\n processData(_this, data);\n };\n _this._window.addEventListener('message', _this._onMessage);\n if (_this.element.nodeName !== 'IFRAME') {\n var params = getOEmbedParameters(element, options);\n var url = getVimeoUrl(params);\n getOEmbedData(url, params, element).then(function (data) {\n var iframe = createEmbed(data, element);\n // Overwrite element with the new iframe,\n // but store reference to the original element\n _this.element = iframe;\n _this._originalElement = element;\n swapCallbacks(element, iframe);\n playerMap.set(_this.element, _this);\n return data;\n }).catch(reject);\n }\n });\n\n // Store a copy of this Player in the map\n readyMap.set(this, readyPromise);\n playerMap.set(this.element, this);\n\n // Send a ping to the iframe so the ready promise will be resolved if\n // the player is already ready.\n if (this.element.nodeName === 'IFRAME') {\n postMessage(this, 'ping');\n }\n if (screenfull.isEnabled) {\n var exitFullscreen = function exitFullscreen() {\n return screenfull.exit();\n };\n this.fullscreenchangeHandler = function () {\n if (screenfull.isFullscreen) {\n storeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n } else {\n removeCallback(_this, 'event:exitFullscreen', exitFullscreen);\n }\n // eslint-disable-next-line\n _this.ready().then(function () {\n postMessage(_this, 'fullscreenchange', screenfull.isFullscreen);\n });\n };\n screenfull.on('fullscreenchange', this.fullscreenchangeHandler);\n }\n return this;\n }\n\n /**\n * Check to see if the URL is a Vimeo URL.\n *\n * @param {string} url The URL string.\n * @return {boolean}\n */\n _createClass(Player, [{\n key: \"callMethod\",\n value:\n /**\n * Get a promise for a method.\n *\n * @param {string} name The API method to call.\n * @param {...(string|number|object|Array)} args Arguments to send via postMessage.\n * @return {Promise}\n */\n function callMethod(name) {\n var _this2 = this;\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (name === undefined || name === null) {\n throw new TypeError('You must pass a method name.');\n }\n return new npo_src(function (resolve, reject) {\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this2.ready().then(function () {\n storeCallback(_this2, name, {\n resolve: resolve,\n reject: reject\n });\n if (args.length === 0) {\n args = {};\n } else if (args.length === 1) {\n args = args[0];\n }\n postMessage(_this2, name, args);\n }).catch(reject);\n });\n }\n /**\n * Get a promise for the value of a player property.\n *\n * @param {string} name The property name\n * @return {Promise}\n */\n }, {\n key: \"get\",\n value: function get(name) {\n var _this3 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'get');\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this3.ready().then(function () {\n storeCallback(_this3, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this3, name);\n }).catch(reject);\n });\n }\n\n /**\n * Get a promise for setting the value of a player property.\n *\n * @param {string} name The API method to call.\n * @param {mixed} value The value to set.\n * @return {Promise}\n */\n }, {\n key: \"set\",\n value: function set(name, value) {\n var _this4 = this;\n return new npo_src(function (resolve, reject) {\n name = getMethodName(name, 'set');\n if (value === undefined || value === null) {\n throw new TypeError('There must be a value to set.');\n }\n\n // We are storing the resolve/reject handlers to call later, so we\n // can’t return here.\n return _this4.ready().then(function () {\n storeCallback(_this4, name, {\n resolve: resolve,\n reject: reject\n });\n postMessage(_this4, name, value);\n }).catch(reject);\n });\n }\n\n /**\n * Add an event listener for the specified event. Will call the\n * callback with a single parameter, `data`, that contains the data for\n * that event.\n *\n * @param {string} eventName The name of the event.\n * @param {function(*)} callback The function to call when the event fires.\n * @return {void}\n */\n }, {\n key: \"on\",\n value: function on(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (!callback) {\n throw new TypeError('You must pass a callback function.');\n }\n if (typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var callbacks = getCallbacks(this, \"event:\".concat(eventName));\n if (callbacks.length === 0) {\n this.callMethod('addEventListener', eventName).catch(function () {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n storeCallback(this, \"event:\".concat(eventName), callback);\n }\n\n /**\n * Remove an event listener for the specified event. Will remove all\n * listeners for that event if a `callback` isn’t passed, or only that\n * specific callback if it is passed.\n *\n * @param {string} eventName The name of the event.\n * @param {function} [callback] The specific callback to remove.\n * @return {void}\n */\n }, {\n key: \"off\",\n value: function off(eventName, callback) {\n if (!eventName) {\n throw new TypeError('You must pass an event name.');\n }\n if (callback && typeof callback !== 'function') {\n throw new TypeError('The callback must be a function.');\n }\n var lastCallback = removeCallback(this, \"event:\".concat(eventName), callback);\n\n // If there are no callbacks left, remove the listener\n if (lastCallback) {\n this.callMethod('removeEventListener', eventName).catch(function (e) {\n // Ignore the error. There will be an error event fired that\n // will trigger the error callback if they are listening.\n });\n }\n }\n\n /**\n * A promise to load a new video.\n *\n * @promise LoadVideoPromise\n * @fulfill {number} The video with this id or url successfully loaded.\n * @reject {TypeError} The id was not a number.\n */\n /**\n * Load a new video into this embed. The promise will be resolved if\n * the video is successfully loaded, or it will be rejected if it could\n * not be loaded.\n *\n * @param {number|string|object} options The id of the video, the url of the video, or an object with embed options.\n * @return {LoadVideoPromise}\n */\n }, {\n key: \"loadVideo\",\n value: function loadVideo(options) {\n return this.callMethod('loadVideo', options);\n }\n\n /**\n * A promise to perform an action when the Player is ready.\n *\n * @todo document errors\n * @promise LoadVideoPromise\n * @fulfill {void}\n */\n /**\n * Trigger a function when the player iframe has initialized. You do not\n * need to wait for `ready` to trigger to begin adding event listeners\n * or calling other methods.\n *\n * @return {ReadyPromise}\n */\n }, {\n key: \"ready\",\n value: function ready() {\n var readyPromise = readyMap.get(this) || new npo_src(function (resolve, reject) {\n reject(new Error('Unknown player. Probably unloaded.'));\n });\n return npo_src.resolve(readyPromise);\n }\n\n /**\n * A promise to add a cue point to the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point to use for removeCuePoint.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Add a cue point to the player.\n *\n * @param {number} time The time for the cue point.\n * @param {object} [data] Arbitrary data to be returned with the cue point.\n * @return {AddCuePointPromise}\n */\n }, {\n key: \"addCuePoint\",\n value: function addCuePoint(time) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.callMethod('addCuePoint', {\n time: time,\n data: data\n });\n }\n\n /**\n * A promise to remove a cue point from the player.\n *\n * @promise AddCuePointPromise\n * @fulfill {string} The id of the cue point that was removed.\n * @reject {InvalidCuePoint} The cue point with the specified id was not\n * found.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Remove a cue point from the video.\n *\n * @param {string} id The id of the cue point to remove.\n * @return {RemoveCuePointPromise}\n */\n }, {\n key: \"removeCuePoint\",\n value: function removeCuePoint(id) {\n return this.callMethod('removeCuePoint', id);\n }\n\n /**\n * A representation of a text track on a video.\n *\n * @typedef {Object} VimeoTextTrack\n * @property {string} language The ISO language code.\n * @property {string} kind The kind of track it is (captions or subtitles).\n * @property {string} label The human‐readable label for the track.\n */\n /**\n * A promise to enable a text track.\n *\n * @promise EnableTextTrackPromise\n * @fulfill {VimeoTextTrack} The text track that was enabled.\n * @reject {InvalidTrackLanguageError} No track was available with the\n * specified language.\n * @reject {InvalidTrackError} No track was available with the specified\n * language and kind.\n */\n /**\n * Enable the text track with the specified language, and optionally the\n * specified kind (captions or subtitles).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {string} language The two‐letter language code.\n * @param {string} [kind] The kind of track to enable (captions or subtitles).\n * @param {boolean} [showing] Whether to enable display of closed captions for enabled text track within the player.\n * @return {EnableTextTrackPromise}\n */\n }, {\n key: \"enableTextTrack\",\n value: function enableTextTrack(language) {\n var kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var showing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n return this.callMethod('enableTextTrack', {\n language: language,\n kind: kind,\n showing: showing\n });\n }\n\n /**\n * A promise to disable the active text track.\n *\n * @promise DisableTextTrackPromise\n * @fulfill {void} The track was disabled.\n */\n /**\n * Disable the currently-active text track.\n *\n * @return {DisableTextTrackPromise}\n */\n }, {\n key: \"disableTextTrack\",\n value: function disableTextTrack() {\n return this.callMethod('disableTextTrack');\n }\n\n /** @typedef {import('../types/formats.js').VimeoAudioTrack} VimeoAudioTrack */\n /** @typedef {import('../types/formats.js').AudioLanguage} AudioLanguage */\n /** @typedef {import('../types/formats.js').AudioKind} AudioKind */\n /**\n * A promise to enable an audio track.\n *\n * @promise SelectAudioTrackPromise\n * @fulfill {VimeoAudioTrack} The audio track that was enabled.\n * @reject {NoAudioTracksError} No audio exists for the video.\n * @reject {NoAlternateAudioTracksError} No alternate audio tracks exist for the video.\n * @reject {NoMatchingAudioTrackError} No track was available with the specified\n * language and kind.\n */\n /**\n * Enable the audio track with the specified language, and optionally the\n * specified kind (main, translation, descriptions, or commentary).\n *\n * When set via the API, the track language will not change the viewer’s\n * stored preference.\n *\n * @param {AudioLanguage} language The two‐letter language code.\n * @param {AudioKind} [kind] The kind of track to enable (main, translation, descriptions, commentary).\n * @return {SelectAudioTrackPromise}\n */\n }, {\n key: \"selectAudioTrack\",\n value: function selectAudioTrack(language, kind) {\n if (!language) {\n throw new TypeError('You must pass a language.');\n }\n return this.callMethod('selectAudioTrack', {\n language: language,\n kind: kind\n });\n }\n\n /**\n * Enable the main audio track for the video.\n *\n * @return {SelectAudioTrackPromise}\n */\n }, {\n key: \"selectDefaultAudioTrack\",\n value: function selectDefaultAudioTrack() {\n return this.callMethod('selectDefaultAudioTrack');\n }\n\n /**\n * A promise to pause the video.\n *\n * @promise PausePromise\n * @fulfill {void} The video was paused.\n */\n /**\n * Pause the video if it’s playing.\n *\n * @return {PausePromise}\n */\n }, {\n key: \"pause\",\n value: function pause() {\n return this.callMethod('pause');\n }\n\n /**\n * A promise to play the video.\n *\n * @promise PlayPromise\n * @fulfill {void} The video was played.\n */\n /**\n * Play the video if it’s paused. **Note:** on iOS and some other\n * mobile devices, you cannot programmatically trigger play. Once the\n * viewer has tapped on the play button in the player, however, you\n * will be able to use this function.\n *\n * @return {PlayPromise}\n */\n }, {\n key: \"play\",\n value: function play() {\n return this.callMethod('play');\n }\n\n /**\n * Request that the player enters fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"requestFullscreen\",\n value: function requestFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.request(this.element);\n }\n return this.callMethod('requestFullscreen');\n }\n\n /**\n * Request that the player exits fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"exitFullscreen\",\n value: function exitFullscreen() {\n if (screenfull.isEnabled) {\n return screenfull.exit();\n }\n return this.callMethod('exitFullscreen');\n }\n\n /**\n * Returns true if the player is currently fullscreen.\n * @return {Promise}\n */\n }, {\n key: \"getFullscreen\",\n value: function getFullscreen() {\n if (screenfull.isEnabled) {\n return npo_src.resolve(screenfull.isFullscreen);\n }\n return this.get('fullscreen');\n }\n\n /**\n * Request that the player enters picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"requestPictureInPicture\",\n value: function requestPictureInPicture() {\n return this.callMethod('requestPictureInPicture');\n }\n\n /**\n * Request that the player exits picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"exitPictureInPicture\",\n value: function exitPictureInPicture() {\n return this.callMethod('exitPictureInPicture');\n }\n\n /**\n * Returns true if the player is currently picture-in-picture.\n * @return {Promise}\n */\n }, {\n key: \"getPictureInPicture\",\n value: function getPictureInPicture() {\n return this.get('pictureInPicture');\n }\n\n /**\n * A promise to prompt the viewer to initiate remote playback.\n *\n * @promise RemotePlaybackPromptPromise\n * @fulfill {void}\n * @reject {NotFoundError} No remote playback device is available.\n */\n /**\n * Request to prompt the user to initiate remote playback.\n *\n * @return {RemotePlaybackPromptPromise}\n */\n }, {\n key: \"remotePlaybackPrompt\",\n value: function remotePlaybackPrompt() {\n return this.callMethod('remotePlaybackPrompt');\n }\n\n /**\n * A promise to unload the video.\n *\n * @promise UnloadPromise\n * @fulfill {void} The video was unloaded.\n */\n /**\n * Return the player to its initial state.\n *\n * @return {UnloadPromise}\n */\n }, {\n key: \"unload\",\n value: function unload() {\n return this.callMethod('unload');\n }\n\n /**\n * Cleanup the player and remove it from the DOM\n *\n * It won't be usable and a new one should be constructed\n * in order to do any operations.\n *\n * @return {Promise}\n */\n }, {\n key: \"destroy\",\n value: function destroy() {\n var _this5 = this;\n return new npo_src(function (resolve) {\n readyMap.delete(_this5);\n playerMap.delete(_this5.element);\n if (_this5._originalElement) {\n playerMap.delete(_this5._originalElement);\n _this5._originalElement.removeAttribute('data-vimeo-initialized');\n }\n if (_this5.element && _this5.element.nodeName === 'IFRAME' && _this5.element.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (_this5.element.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== _this5.element.parentNode) {\n _this5.element.parentNode.parentNode.removeChild(_this5.element.parentNode);\n } else {\n _this5.element.parentNode.removeChild(_this5.element);\n }\n }\n\n // If the clip is private there is a case where the element stays the\n // div element. Destroy should reset the div and remove the iframe child.\n if (_this5.element && _this5.element.nodeName === 'DIV' && _this5.element.parentNode) {\n _this5.element.removeAttribute('data-vimeo-initialized');\n var iframe = _this5.element.querySelector('iframe');\n if (iframe && iframe.parentNode) {\n // If we've added an additional wrapper div, remove that from the DOM.\n // If not, just remove the iframe element.\n if (iframe.parentNode.parentNode && _this5._originalElement && _this5._originalElement !== iframe.parentNode) {\n iframe.parentNode.parentNode.removeChild(iframe.parentNode);\n } else {\n iframe.parentNode.removeChild(iframe);\n }\n }\n }\n _this5._window.removeEventListener('message', _this5._onMessage);\n if (screenfull.isEnabled) {\n screenfull.off('fullscreenchange', _this5.fullscreenchangeHandler);\n }\n resolve();\n });\n }\n\n /**\n * A promise to get the autopause behavior of the video.\n *\n * @promise GetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Get the autopause behavior for this player.\n *\n * @return {GetAutopausePromise}\n */\n }, {\n key: \"getAutopause\",\n value: function getAutopause() {\n return this.get('autopause');\n }\n\n /**\n * A promise to set the autopause behavior of the video.\n *\n * @promise SetAutopausePromise\n * @fulfill {boolean} Whether autopause is turned on or off.\n * @reject {UnsupportedError} Autopause is not supported with the current\n * player or browser.\n */\n /**\n * Enable or disable the autopause behavior of this player.\n *\n * By default, when another video is played in the same browser, this\n * player will automatically pause. Unless you have a specific reason\n * for doing so, we recommend that you leave autopause set to the\n * default (`true`).\n *\n * @param {boolean} autopause\n * @return {SetAutopausePromise}\n */\n }, {\n key: \"setAutopause\",\n value: function setAutopause(autopause) {\n return this.set('autopause', autopause);\n }\n\n /**\n * A promise to get the buffered property of the video.\n *\n * @promise GetBufferedPromise\n * @fulfill {Array} Buffered Timeranges converted to an Array.\n */\n /**\n * Get the buffered property of the video.\n *\n * @return {GetBufferedPromise}\n */\n }, {\n key: \"getBuffered\",\n value: function getBuffered() {\n return this.get('buffered');\n }\n\n /**\n * @typedef {Object} CameraProperties\n * @prop {number} props.yaw - Number between 0 and 360.\n * @prop {number} props.pitch - Number between -90 and 90.\n * @prop {number} props.roll - Number between -180 and 180.\n * @prop {number} props.fov - The field of view in degrees.\n */\n /**\n * A promise to get the camera properties of the player.\n *\n * @promise GetCameraPromise\n * @fulfill {CameraProperties} The camera properties.\n */\n /**\n * For 360° videos get the camera properties for this player.\n *\n * @return {GetCameraPromise}\n */\n }, {\n key: \"getCameraProps\",\n value: function getCameraProps() {\n return this.get('cameraProps');\n }\n\n /**\n * A promise to set the camera properties of the player.\n *\n * @promise SetCameraPromise\n * @fulfill {Object} The camera was successfully set.\n * @reject {RangeError} The range was out of bounds.\n */\n /**\n * For 360° videos set the camera properties for this player.\n *\n * @param {CameraProperties} camera The camera properties\n * @return {SetCameraPromise}\n */\n }, {\n key: \"setCameraProps\",\n value: function setCameraProps(camera) {\n return this.set('cameraProps', camera);\n }\n\n /**\n * A representation of a chapter.\n *\n * @typedef {Object} VimeoChapter\n * @property {number} startTime The start time of the chapter.\n * @property {object} title The title of the chapter.\n * @property {number} index The place in the order of Chapters. Starts at 1.\n */\n /**\n * A promise to get chapters for the video.\n *\n * @promise GetChaptersPromise\n * @fulfill {VimeoChapter[]} The chapters for the video.\n */\n /**\n * Get an array of all the chapters for the video.\n *\n * @return {GetChaptersPromise}\n */\n }, {\n key: \"getChapters\",\n value: function getChapters() {\n return this.get('chapters');\n }\n\n /**\n * A promise to get the currently active chapter.\n *\n * @promise GetCurrentChaptersPromise\n * @fulfill {VimeoChapter|undefined} The current chapter for the video.\n */\n /**\n * Get the currently active chapter for the video.\n *\n * @return {GetCurrentChaptersPromise}\n */\n }, {\n key: \"getCurrentChapter\",\n value: function getCurrentChapter() {\n return this.get('currentChapter');\n }\n\n /**\n * A promise to get the accent color of the player.\n *\n * @promise GetColorPromise\n * @fulfill {string} The hex color of the player.\n */\n /**\n * Get the accent color for this player. Note this is deprecated in place of `getColorTwo`.\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColor\",\n value: function getColor() {\n return this.get('color');\n }\n\n /**\n * A promise to get all colors for the player in an array.\n *\n * @promise GetColorsPromise\n * @fulfill {string[]} The hex colors of the player.\n */\n /**\n * Get all the colors for this player in an array: [colorOne, colorTwo, colorThree, colorFour]\n *\n * @return {GetColorPromise}\n */\n }, {\n key: \"getColors\",\n value: function getColors() {\n return npo_src.all([this.get('colorOne'), this.get('colorTwo'), this.get('colorThree'), this.get('colorFour')]);\n }\n\n /**\n * A promise to set the accent color of the player.\n *\n * @promise SetColorPromise\n * @fulfill {string} The color was successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the accent color of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * Note this is deprecated in place of `setColorTwo`.\n *\n * @param {string} color The hex or rgb color string to set.\n * @return {SetColorPromise}\n */\n }, {\n key: \"setColor\",\n value: function setColor(color) {\n return this.set('color', color);\n }\n\n /**\n * A promise to set all colors for the player.\n *\n * @promise SetColorsPromise\n * @fulfill {string[]} The colors were successfully set.\n * @reject {TypeError} The string was not a valid hex or rgb color.\n * @reject {ContrastError} The color was set, but the contrast is\n * outside of the acceptable range.\n * @reject {EmbedSettingsError} The owner of the player has chosen to\n * use a specific color.\n */\n /**\n * Set the colors of this player to a hex or rgb string. Setting the\n * color may fail if the owner of the video has set their embed\n * preferences to force a specific color.\n * The colors should be passed in as an array: [colorOne, colorTwo, colorThree, colorFour].\n * If a color should not be set, the index in the array can be left as null.\n *\n * @param {string[]} colors Array of the hex or rgb color strings to set.\n * @return {SetColorsPromise}\n */\n }, {\n key: \"setColors\",\n value: function setColors(colors) {\n if (!Array.isArray(colors)) {\n return new npo_src(function (resolve, reject) {\n return reject(new TypeError('Argument must be an array.'));\n });\n }\n var nullPromise = new npo_src(function (resolve) {\n return resolve(null);\n });\n var colorPromises = [colors[0] ? this.set('colorOne', colors[0]) : nullPromise, colors[1] ? this.set('colorTwo', colors[1]) : nullPromise, colors[2] ? this.set('colorThree', colors[2]) : nullPromise, colors[3] ? this.set('colorFour', colors[3]) : nullPromise];\n return npo_src.all(colorPromises);\n }\n\n /**\n * A representation of a cue point.\n *\n * @typedef {Object} VimeoCuePoint\n * @property {number} time The time of the cue point.\n * @property {object} data The data passed when adding the cue point.\n * @property {string} id The unique id for use with removeCuePoint.\n */\n /**\n * A promise to get the cue points of a video.\n *\n * @promise GetCuePointsPromise\n * @fulfill {VimeoCuePoint[]} The cue points added to the video.\n * @reject {UnsupportedError} Cue points are not supported with the current\n * player or browser.\n */\n /**\n * Get an array of the cue points added to the video.\n *\n * @return {GetCuePointsPromise}\n */\n }, {\n key: \"getCuePoints\",\n value: function getCuePoints() {\n return this.get('cuePoints');\n }\n\n /**\n * A promise to get the current time of the video.\n *\n * @promise GetCurrentTimePromise\n * @fulfill {number} The current time in seconds.\n */\n /**\n * Get the current playback position in seconds.\n *\n * @return {GetCurrentTimePromise}\n */\n }, {\n key: \"getCurrentTime\",\n value: function getCurrentTime() {\n return this.get('currentTime');\n }\n\n /**\n * A promise to set the current time of the video.\n *\n * @promise SetCurrentTimePromise\n * @fulfill {number} The actual current time that was set.\n * @reject {RangeError} the time was less than 0 or greater than the\n * video’s duration.\n */\n /**\n * Set the current playback position in seconds. If the player was\n * paused, it will remain paused. Likewise, if the player was playing,\n * it will resume playing once the video has buffered.\n *\n * You can provide an accurate time and the player will attempt to seek\n * to as close to that time as possible. The exact time will be the\n * fulfilled value of the promise.\n *\n * @param {number} currentTime\n * @return {SetCurrentTimePromise}\n */\n }, {\n key: \"setCurrentTime\",\n value: function setCurrentTime(currentTime) {\n return this.set('currentTime', currentTime);\n }\n\n /**\n * A promise to get the duration of the video.\n *\n * @promise GetDurationPromise\n * @fulfill {number} The duration in seconds.\n */\n /**\n * Get the duration of the video in seconds. It will be rounded to the\n * nearest second before playback begins, and to the nearest thousandth\n * of a second after playback begins.\n *\n * @return {GetDurationPromise}\n */\n }, {\n key: \"getDuration\",\n value: function getDuration() {\n return this.get('duration');\n }\n\n /**\n * A promise to get the ended state of the video.\n *\n * @promise GetEndedPromise\n * @fulfill {boolean} Whether or not the video has ended.\n */\n /**\n * Get the ended state of the video. The video has ended if\n * `currentTime === duration`.\n *\n * @return {GetEndedPromise}\n */\n }, {\n key: \"getEnded\",\n value: function getEnded() {\n return this.get('ended');\n }\n\n /**\n * A promise to get the loop state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the player is set to loop.\n */\n /**\n * Get the loop state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getLoop\",\n value: function getLoop() {\n return this.get('loop');\n }\n\n /**\n * A promise to set the loop state of the player.\n *\n * @promise SetLoopPromise\n * @fulfill {boolean} The loop state that was set.\n */\n /**\n * Set the loop state of the player. When set to `true`, the player\n * will start over immediately once playback ends.\n *\n * @param {boolean} loop\n * @return {SetLoopPromise}\n */\n }, {\n key: \"setLoop\",\n value: function setLoop(loop) {\n return this.set('loop', loop);\n }\n\n /**\n * A promise to set the muted state of the player.\n *\n * @promise SetMutedPromise\n * @fulfill {boolean} The muted state that was set.\n */\n /**\n * Set the muted state of the player. When set to `true`, the player\n * volume will be muted.\n *\n * @param {boolean} muted\n * @return {SetMutedPromise}\n */\n }, {\n key: \"setMuted\",\n value: function setMuted(muted) {\n return this.set('muted', muted);\n }\n\n /**\n * A promise to get the muted state of the player.\n *\n * @promise GetMutedPromise\n * @fulfill {boolean} Whether or not the player is muted.\n */\n /**\n * Get the muted state of the player.\n *\n * @return {GetMutedPromise}\n */\n }, {\n key: \"getMuted\",\n value: function getMuted() {\n return this.get('muted');\n }\n\n /**\n * A promise to get the paused state of the player.\n *\n * @promise GetLoopPromise\n * @fulfill {boolean} Whether or not the video is paused.\n */\n /**\n * Get the paused state of the player.\n *\n * @return {GetLoopPromise}\n */\n }, {\n key: \"getPaused\",\n value: function getPaused() {\n return this.get('paused');\n }\n\n /**\n * A promise to get the playback rate of the player.\n *\n * @promise GetPlaybackRatePromise\n * @fulfill {number} The playback rate of the player on a scale from 0 to 2.\n */\n /**\n * Get the playback rate of the player on a scale from `0` to `2`.\n *\n * @return {GetPlaybackRatePromise}\n */\n }, {\n key: \"getPlaybackRate\",\n value: function getPlaybackRate() {\n return this.get('playbackRate');\n }\n\n /**\n * A promise to set the playbackrate of the player.\n *\n * @promise SetPlaybackRatePromise\n * @fulfill {number} The playback rate was set.\n * @reject {RangeError} The playback rate was less than 0 or greater than 2.\n */\n /**\n * Set the playback rate of the player on a scale from `0` to `2`. When set\n * via the API, the playback rate will not be synchronized to other\n * players or stored as the viewer's preference.\n *\n * @param {number} playbackRate\n * @return {SetPlaybackRatePromise}\n */\n }, {\n key: \"setPlaybackRate\",\n value: function setPlaybackRate(playbackRate) {\n return this.set('playbackRate', playbackRate);\n }\n\n /**\n * A promise to get the played property of the video.\n *\n * @promise GetPlayedPromise\n * @fulfill {Array} Played Timeranges converted to an Array.\n */\n /**\n * Get the played property of the video.\n *\n * @return {GetPlayedPromise}\n */\n }, {\n key: \"getPlayed\",\n value: function getPlayed() {\n return this.get('played');\n }\n\n /**\n * A promise to get the qualities available of the current video.\n *\n * @promise GetQualitiesPromise\n * @fulfill {Array} The qualities of the video.\n */\n /**\n * Get the qualities of the current video.\n *\n * @return {GetQualitiesPromise}\n */\n }, {\n key: \"getQualities\",\n value: function getQualities() {\n return this.get('qualities');\n }\n\n /**\n * A promise to get the current set quality of the video.\n *\n * @promise GetQualityPromise\n * @fulfill {string} The current set quality.\n */\n /**\n * Get the current set quality of the video.\n *\n * @return {GetQualityPromise}\n */\n }, {\n key: \"getQuality\",\n value: function getQuality() {\n return this.get('quality');\n }\n\n /**\n * A promise to set the video quality.\n *\n * @promise SetQualityPromise\n * @fulfill {number} The quality was set.\n * @reject {RangeError} The quality is not available.\n */\n /**\n * Set a video quality.\n *\n * @param {string} quality\n * @return {SetQualityPromise}\n */\n }, {\n key: \"setQuality\",\n value: function setQuality(quality) {\n return this.set('quality', quality);\n }\n\n /**\n * A promise to get the remote playback availability.\n *\n * @promise RemotePlaybackAvailabilityPromise\n * @fulfill {boolean} Whether remote playback is available.\n */\n /**\n * Get the availability of remote playback.\n *\n * @return {RemotePlaybackAvailabilityPromise}\n */\n }, {\n key: \"getRemotePlaybackAvailability\",\n value: function getRemotePlaybackAvailability() {\n return this.get('remotePlaybackAvailability');\n }\n\n /**\n * A promise to get the current remote playback state.\n *\n * @promise RemotePlaybackStatePromise\n * @fulfill {string} The state of the remote playback: connecting, connected, or disconnected.\n */\n /**\n * Get the current remote playback state.\n *\n * @return {RemotePlaybackStatePromise}\n */\n }, {\n key: \"getRemotePlaybackState\",\n value: function getRemotePlaybackState() {\n return this.get('remotePlaybackState');\n }\n\n /**\n * A promise to get the seekable property of the video.\n *\n * @promise GetSeekablePromise\n * @fulfill {Array} Seekable Timeranges converted to an Array.\n */\n /**\n * Get the seekable property of the video.\n *\n * @return {GetSeekablePromise}\n */\n }, {\n key: \"getSeekable\",\n value: function getSeekable() {\n return this.get('seekable');\n }\n\n /**\n * A promise to get the seeking property of the player.\n *\n * @promise GetSeekingPromise\n * @fulfill {boolean} Whether or not the player is currently seeking.\n */\n /**\n * Get if the player is currently seeking.\n *\n * @return {GetSeekingPromise}\n */\n }, {\n key: \"getSeeking\",\n value: function getSeeking() {\n return this.get('seeking');\n }\n\n /**\n * A promise to get the text tracks of a video.\n *\n * @promise GetTextTracksPromise\n * @fulfill {VimeoTextTrack[]} The text tracks associated with the video.\n */\n /**\n * Get an array of the text tracks that exist for the video.\n *\n * @return {GetTextTracksPromise}\n */\n }, {\n key: \"getTextTracks\",\n value: function getTextTracks() {\n return this.get('textTracks');\n }\n\n /**\n * A promise to get the audio tracks of a video.\n *\n * @promise GetAudioTracksPromise\n * @fulfill {VimeoAudioTrack[]} The audio tracks associated with the video.\n */\n /**\n * Get an array of the audio tracks that exist for the video.\n *\n * @return {GetAudioTracksPromise}\n */\n }, {\n key: \"getAudioTracks\",\n value: function getAudioTracks() {\n return this.get('audioTracks');\n }\n\n /**\n * A promise to get the enabled audio track of a video.\n *\n * @promise GetAudioTrackPromise\n * @fulfill {VimeoAudioTrack} The enabled audio track.\n */\n /**\n * Get the enabled audio track for a video.\n *\n * @return {GetAudioTrackPromise}\n */\n }, {\n key: \"getEnabledAudioTrack\",\n value: function getEnabledAudioTrack() {\n return this.get('enabledAudioTrack');\n }\n\n /**\n * Get the main audio track for a video.\n *\n * @return {GetAudioTrackPromise}\n */\n }, {\n key: \"getDefaultAudioTrack\",\n value: function getDefaultAudioTrack() {\n return this.get('defaultAudioTrack');\n }\n\n /**\n * A promise to get the embed code for the video.\n *\n * @promise GetVideoEmbedCodePromise\n * @fulfill {string} The `<iframe>` embed code for the video.\n */\n /**\n * Get the `<iframe>` embed code for the video.\n *\n * @return {GetVideoEmbedCodePromise}\n */\n }, {\n key: \"getVideoEmbedCode\",\n value: function getVideoEmbedCode() {\n return this.get('videoEmbedCode');\n }\n\n /**\n * A promise to get the id of the video.\n *\n * @promise GetVideoIdPromise\n * @fulfill {number} The id of the video.\n */\n /**\n * Get the id of the video.\n *\n * @return {GetVideoIdPromise}\n */\n }, {\n key: \"getVideoId\",\n value: function getVideoId() {\n return this.get('videoId');\n }\n\n /**\n * A promise to get the title of the video.\n *\n * @promise GetVideoTitlePromise\n * @fulfill {number} The title of the video.\n */\n /**\n * Get the title of the video.\n *\n * @return {GetVideoTitlePromise}\n */\n }, {\n key: \"getVideoTitle\",\n value: function getVideoTitle() {\n return this.get('videoTitle');\n }\n\n /**\n * A promise to get the native width of the video.\n *\n * @promise GetVideoWidthPromise\n * @fulfill {number} The native width of the video.\n */\n /**\n * Get the native width of the currently‐playing video. The width of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoWidthPromise}\n */\n }, {\n key: \"getVideoWidth\",\n value: function getVideoWidth() {\n return this.get('videoWidth');\n }\n\n /**\n * A promise to get the native height of the video.\n *\n * @promise GetVideoHeightPromise\n * @fulfill {number} The native height of the video.\n */\n /**\n * Get the native height of the currently‐playing video. The height of\n * the highest‐resolution available will be used before playback begins.\n *\n * @return {GetVideoHeightPromise}\n */\n }, {\n key: \"getVideoHeight\",\n value: function getVideoHeight() {\n return this.get('videoHeight');\n }\n\n /**\n * A promise to get the vimeo.com url for the video.\n *\n * @promise GetVideoUrlPromise\n * @fulfill {number} The vimeo.com url for the video.\n * @reject {PrivacyError} The url isn’t available because of the video’s privacy setting.\n */\n /**\n * Get the vimeo.com url for the video.\n *\n * @return {GetVideoUrlPromise}\n */\n }, {\n key: \"getVideoUrl\",\n value: function getVideoUrl() {\n return this.get('videoUrl');\n }\n\n /**\n * A promise to get the volume level of the player.\n *\n * @promise GetVolumePromise\n * @fulfill {number} The volume level of the player on a scale from 0 to 1.\n */\n /**\n * Get the current volume level of the player on a scale from `0` to `1`.\n *\n * Most mobile devices do not support an independent volume from the\n * system volume. In those cases, this method will always return `1`.\n *\n * @return {GetVolumePromise}\n */\n }, {\n key: \"getVolume\",\n value: function getVolume() {\n return this.get('volume');\n }\n\n /**\n * A promise to set the volume level of the player.\n *\n * @promise SetVolumePromise\n * @fulfill {number} The volume was set.\n * @reject {RangeError} The volume was less than 0 or greater than 1.\n */\n /**\n * Set the volume of the player on a scale from `0` to `1`. When set\n * via the API, the volume level will not be synchronized to other\n * players or stored as the viewer’s preference.\n *\n * Most mobile devices do not support setting the volume. An error will\n * *not* be triggered in that situation.\n *\n * @param {number} volume\n * @return {SetVolumePromise}\n */\n }, {\n key: \"setVolume\",\n value: function setVolume(volume) {\n return this.set('volume', volume);\n }\n\n /** @typedef {import('timing-object').ITimingObject} TimingObject */\n /** @typedef {import('./lib/timing-src-connector.types').TimingSrcConnectorOptions} TimingSrcConnectorOptions */\n /** @typedef {import('./lib/timing-src-connector').TimingSrcConnector} TimingSrcConnector */\n\n /**\n * Connects a TimingObject to the video player (https://webtiming.github.io/timingobject/)\n *\n * @param {TimingObject} timingObject\n * @param {TimingSrcConnectorOptions} options\n *\n * @return {Promise<TimingSrcConnector>}\n */\n }, {\n key: \"setTimingSrc\",\n value: function () {\n var _setTimingSrc = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(timingObject, options) {\n var _this6 = this;\n var connector;\n return _regeneratorRuntime().wrap(function _callee$(_context) {\n while (1) switch (_context.prev = _context.next) {\n case 0:\n if (timingObject) {\n _context.next = 2;\n break;\n }\n throw new TypeError('A Timing Object must be provided.');\n case 2:\n _context.next = 4;\n return this.ready();\n case 4:\n connector = new TimingSrcConnector(this, timingObject, options);\n postMessage(this, 'notifyTimingObjectConnect');\n connector.addEventListener('disconnect', function () {\n return postMessage(_this6, 'notifyTimingObjectDisconnect');\n });\n return _context.abrupt(\"return\", connector);\n case 8:\n case \"end\":\n return _context.stop();\n }\n }, _callee, this);\n }));\n function setTimingSrc(_x, _x2) {\n return _setTimingSrc.apply(this, arguments);\n }\n return setTimingSrc;\n }()\n }], [{\n key: \"isVimeoUrl\",\n value: function isVimeoUrl$1(url) {\n return isVimeoUrl(url);\n }\n }]);\n return Player;\n}(); // Setup embed only if this is not a server runtime\nif (!isServerRuntime) {\n screenfull = initializeScreenfull();\n initializeEmbeds();\n resizeEmbeds();\n initAppendVideoMetadata();\n checkUrlTimeParam();\n updateDRMEmbeds();\n}\n\nexport default Player;\n","'use strict';\n\nvar Sister;\n\n/**\n* @link https://github.com/gajus/sister for the canonical source repository\n* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause\n*/\nSister = function () {\n var sister = {},\n events = {};\n\n /**\n * @name handler\n * @function\n * @param {Object} data Event data.\n */\n\n /**\n * @param {String} name Event name.\n * @param {handler} handler\n * @return {listener}\n */\n sister.on = function (name, handler) {\n var listener = {name: name, handler: handler};\n events[name] = events[name] || [];\n events[name].unshift(listener);\n return listener;\n };\n\n /**\n * @param {listener}\n */\n sister.off = function (listener) {\n var index = events[listener.name].indexOf(listener);\n\n if (index !== -1) {\n events[listener.name].splice(index, 1);\n }\n };\n\n /**\n * @param {String} name Event name.\n * @param {Object} data Event data.\n */\n sister.trigger = function (name, data) {\n var listeners = events[name],\n i;\n\n if (listeners) {\n i = listeners.length;\n while (i--) {\n listeners[i].handler(data);\n }\n }\n };\n\n return sister;\n};\n\nmodule.exports = Sister;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = {\n BUFFERING: 3,\n ENDED: 0,\n PAUSED: 2,\n PLAYING: 1,\n UNSTARTED: -1,\n VIDEO_CUED: 5\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _PlayerStates = require('./constants/PlayerStates');\n\nvar _PlayerStates2 = _interopRequireDefault(_PlayerStates);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n pauseVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PAUSED],\n stateChangeRequired: false\n },\n playVideo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING],\n stateChangeRequired: false\n },\n seekTo: {\n acceptableStates: [_PlayerStates2.default.ENDED, _PlayerStates2.default.PLAYING, _PlayerStates2.default.PAUSED],\n stateChangeRequired: true,\n\n // TRICKY: `seekTo` may not cause a state change if no buffering is\n // required.\n // eslint-disable-next-line unicorn/numeric-separators-style\n timeout: 3000\n }\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n * `volumeChange` is not officially supported but seems to work\n * it emits an object: `{volume: 82.6923076923077, muted: false}`\n */\nexports.default = ['ready', 'stateChange', 'playbackQualityChange', 'playbackRateChange', 'error', 'apiChange', 'volumeChange'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Functions\n */\nexports.default = ['cueVideoById', 'loadVideoById', 'cueVideoByUrl', 'loadVideoByUrl', 'playVideo', 'pauseVideo', 'stopVideo', 'getVideoLoadedFraction', 'cuePlaylist', 'loadPlaylist', 'nextVideo', 'previousVideo', 'playVideoAt', 'setShuffle', 'setLoop', 'getPlaylist', 'getPlaylistIndex', 'setOption', 'mute', 'unMute', 'isMuted', 'setVolume', 'getVolume', 'seekTo', 'getPlayerState', 'getPlaybackRate', 'setPlaybackRate', 'getAvailablePlaybackRates', 'getPlaybackQuality', 'setPlaybackQuality', 'getAvailableQualityLevels', 'getCurrentTime', 'getDuration', 'removeEventListener', 'getVideoUrl', 'getVideoEmbedCode', 'getOptions', 'getOption', 'addEventListener', 'destroy', 'setSize', 'getIframe', 'getSphericalProperties', 'setSphericalProperties'];\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _debug = require('debug');\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _FunctionStateMap = require('./FunctionStateMap');\n\nvar _FunctionStateMap2 = _interopRequireDefault(_FunctionStateMap);\n\nvar _eventNames = require('./eventNames');\n\nvar _eventNames2 = _interopRequireDefault(_eventNames);\n\nvar _functionNames = require('./functionNames');\n\nvar _functionNames2 = _interopRequireDefault(_functionNames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable promise/prefer-await-to-then */\n\nconst debug = (0, _debug2.default)('youtube-player');\n\nconst YouTubePlayer = {};\n\n/**\n * Construct an object that defines an event handler for all of the YouTube\n * player events. Proxy captured events through an event emitter.\n *\n * @todo Capture event parameters.\n * @see https://developers.google.com/youtube/iframe_api_reference#Events\n */\nYouTubePlayer.proxyEvents = emitter => {\n const events = {};\n\n for (const eventName of _eventNames2.default) {\n const onEventName = 'on' + eventName.slice(0, 1).toUpperCase() + eventName.slice(1);\n\n events[onEventName] = event => {\n debug('event \"%s\"', onEventName, event);\n\n emitter.trigger(eventName, event);\n };\n }\n\n return events;\n};\n\n/**\n * Delays player API method execution until player state is ready.\n *\n * @todo Proxy all of the methods using Object.keys.\n * @todo See TRICKY below.\n * @param playerAPIReady Promise that resolves when player is ready.\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions.\n * @returns {object}\n */\nYouTubePlayer.promisifyPlayer = (playerAPIReady, strictState = false) => {\n const functions = {};\n\n for (const functionName of _functionNames2.default) {\n if (strictState && _FunctionStateMap2.default[functionName]) {\n functions[functionName] = (...args) => {\n return playerAPIReady.then(player => {\n const stateInfo = _FunctionStateMap2.default[functionName];\n const playerState = player.getPlayerState();\n\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n const value = player[functionName].apply(player, args);\n\n // TRICKY: For functions like `seekTo`, a change in state must be\n // triggered given that the resulting state could match the initial\n // state.\n if (stateInfo.stateChangeRequired ||\n\n // eslint-disable-next-line no-extra-parens\n Array.isArray(stateInfo.acceptableStates) && !stateInfo.acceptableStates.includes(playerState)) {\n return new Promise(resolve => {\n const onPlayerStateChange = () => {\n const playerStateAfterChange = player.getPlayerState();\n\n let timeout;\n\n if (typeof stateInfo.timeout === 'number') {\n timeout = setTimeout(() => {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n resolve();\n }, stateInfo.timeout);\n }\n\n if (Array.isArray(stateInfo.acceptableStates) && stateInfo.acceptableStates.includes(playerStateAfterChange)) {\n player.removeEventListener('onStateChange', onPlayerStateChange);\n\n clearTimeout(timeout);\n\n resolve();\n }\n };\n\n player.addEventListener('onStateChange', onPlayerStateChange);\n }).then(() => {\n return value;\n });\n }\n\n return value;\n });\n };\n } else {\n functions[functionName] = (...args) => {\n return playerAPIReady.then(player => {\n // eslint-disable-next-line no-warning-comments\n // TODO: Just spread the args into the function once Babel is fixed:\n // https://github.com/babel/babel/issues/4270\n //\n // eslint-disable-next-line prefer-spread\n return player[functionName].apply(player, args);\n });\n };\n }\n }\n\n return functions;\n};\n\nexports.default = YouTubePlayer;\nmodule.exports = exports['default'];","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loadScript = require('load-script');\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = emitter => {\n /**\n * A promise that is resolved when window.onYouTubeIframeAPIReady is called.\n * The promise is resolved with a reference to window.YT object.\n */\n const iframeAPIReady = new Promise(resolve => {\n if (window.YT && window.YT.Player && window.YT.Player instanceof Function) {\n resolve(window.YT);\n\n return;\n } else {\n const protocol = window.location.protocol === 'http:' ? 'http:' : 'https:';\n\n (0, _loadScript2.default)(protocol + '//www.youtube.com/iframe_api', error => {\n if (error) {\n emitter.trigger('error', error);\n }\n });\n }\n\n const previous = window.onYouTubeIframeAPIReady;\n\n // The API will call this function when page has finished downloading\n // the JavaScript for the player API.\n window.onYouTubeIframeAPIReady = () => {\n if (previous) {\n previous();\n }\n\n resolve(window.YT);\n };\n });\n\n return iframeAPIReady;\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _sister = require('sister');\n\nvar _sister2 = _interopRequireDefault(_sister);\n\nvar _YouTubePlayer = require('./YouTubePlayer');\n\nvar _YouTubePlayer2 = _interopRequireDefault(_YouTubePlayer);\n\nvar _loadYouTubeIframeApi = require('./loadYouTubeIframeApi');\n\nvar _loadYouTubeIframeApi2 = _interopRequireDefault(_loadYouTubeIframeApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @typedef YT.Player\n * @see https://developers.google.com/youtube/iframe_api_reference\n */\n\n/**\n * @see https://developers.google.com/youtube/iframe_api_reference#Loading_a_Video_Player\n */\nlet youtubeIframeAPI;\n\n/**\n * A factory function used to produce an instance of YT.Player and queue function calls and proxy events of the resulting object.\n *\n * @param maybeElementId Either An existing YT.Player instance,\n * the DOM element or the id of the HTML element where the API will insert an <iframe>.\n * @param options See `options` (Ignored when using an existing YT.Player instance).\n * @param strictState A flag designating whether or not to wait for\n * an acceptable state when calling supported functions. Default: `false`.\n * See `FunctionStateMap.js` for supported functions and acceptable states.\n */\n\n\nexports.default = (maybeElementId, options = {}, strictState = false) => {\n const emitter = (0, _sister2.default)();\n\n if (!youtubeIframeAPI) {\n youtubeIframeAPI = (0, _loadYouTubeIframeApi2.default)(emitter);\n }\n\n if (options.events) {\n throw new Error('Event handlers cannot be overwritten.');\n }\n\n // eslint-disable-next-line unicorn/prefer-query-selector\n if (typeof maybeElementId === 'string' && !document.getElementById(maybeElementId)) {\n throw new Error('Element \"' + maybeElementId + '\" does not exist.');\n }\n\n options.events = _YouTubePlayer2.default.proxyEvents(emitter);\n\n const playerAPIReady = new Promise(resolve => {\n if (typeof maybeElementId === 'object' && maybeElementId.playVideo instanceof Function) {\n const player = maybeElementId;\n\n resolve(player);\n } else {\n // asume maybeElementId can be rendered inside\n // eslint-disable-next-line promise/catch-or-return\n youtubeIframeAPI.then(YT => {\n // eslint-disable-line promise/prefer-await-to-then\n const player = new YT.Player(maybeElementId, options);\n\n emitter.on('ready', () => {\n resolve(player);\n });\n\n return null;\n });\n }\n });\n\n const playerApi = _YouTubePlayer2.default.promisifyPlayer(playerAPIReady, strictState);\n\n playerApi.on = emitter.on;\n playerApi.off = emitter.off;\n\n return playerApi;\n};\n\nmodule.exports = exports['default'];","import VimeoPlayer from \"@vimeo/player\";\nimport { useEffect, useRef, useState, useCallback } from \"react\";\nimport YouTubePlayer from \"youtube-player\";\n\nimport type { VideoProvider } from \"@/components/foundations/BackgroundVideo/VideoBackground.types\";\n\ninterface UseVideoPlayerOptions {\n src?: string;\n provider?: VideoProvider;\n autoplay?: boolean;\n muted?: boolean;\n loop?: boolean;\n showControls?: boolean;\n containerRef: React.RefObject<HTMLDivElement | null>;\n onPlay?: () => void;\n onPause?: () => void;\n onEnded?: () => void;\n onError?: (err: Error) => void;\n}\n\ntype YouTubePlayerInstance = ReturnType<typeof YouTubePlayer>;\n\nexport function useVideoPlayer({\n src,\n provider,\n autoplay = false,\n muted = false,\n loop = false,\n showControls = false,\n containerRef,\n onPlay,\n onPause,\n onEnded,\n onError,\n}: UseVideoPlayerOptions) {\n const vimeoPlayerRef = useRef<VimeoPlayer | null>(null);\n const youtubePlayerRef = useRef<YouTubePlayerInstance | null>(null);\n const [isPlaying, setIsPlaying] = useState(false);\n\n const getVideoId = useCallback((url: string, type: VideoProvider) => {\n if (type === \"youtube\") {\n return (\n url.match(\n /(?:youtube\\.com\\/watch\\?v=|youtu\\.be\\/|youtube\\.com\\/embed\\/)([^&\\n?#]+)/,\n )?.[1] ?? null\n );\n }\n if (type === \"vimeo\") {\n return url.match(/vimeo\\.com\\/(\\d+)/)?.[1] ?? null;\n }\n return null;\n }, []);\n\n const initializePlayer = useCallback(() => {\n if (!src || !provider || !containerRef.current) return;\n\n const id = getVideoId(src, provider);\n if (!id) return;\n\n try {\n if (provider === \"youtube\") {\n youtubePlayerRef.current = YouTubePlayer(containerRef.current, {\n videoId: id,\n playerVars: {\n autoplay: autoplay ? 1 : 0,\n controls: showControls ? 1 : 0,\n rel: 0,\n modestbranding: 1,\n playsinline: 1,\n loop: loop ? 1 : 0,\n ...(showControls ? {} : { background: 1 }),\n },\n });\n\n youtubePlayerRef.current.on(\"stateChange\", ({ data }) => {\n if (data === 1) {\n setIsPlaying(true);\n onPlay?.();\n } else if (data === 2) {\n setIsPlaying(false);\n onPause?.();\n } else if (data === 0) {\n setIsPlaying(false);\n onEnded?.();\n }\n });\n\n youtubePlayerRef.current.on(\"ready\", () => {\n if (muted) {\n youtubePlayerRef.current?.mute();\n }\n });\n }\n\n if (provider === \"vimeo\") {\n vimeoPlayerRef.current = new VimeoPlayer(containerRef.current, {\n id,\n autoplay,\n muted,\n loop,\n controls: showControls,\n background: !showControls,\n });\n\n vimeoPlayerRef.current.on(\"play\", () => {\n setIsPlaying(true);\n onPlay?.();\n });\n\n vimeoPlayerRef.current.on(\"pause\", () => {\n setIsPlaying(false);\n onPause?.();\n });\n\n vimeoPlayerRef.current.on(\"ended\", () => {\n if (!loop) {\n setIsPlaying(false);\n onEnded?.();\n }\n });\n\n vimeoPlayerRef.current.on(\"error\", (err) =>\n onError?.(new Error(`Vimeo error: ${err.message}`)),\n );\n }\n } catch (err) {\n onError?.(err as Error);\n }\n }, [\n src,\n provider,\n containerRef,\n autoplay,\n muted,\n loop,\n showControls,\n getVideoId,\n onPlay,\n onPause,\n onEnded,\n onError,\n ]);\n\n useEffect(() => {\n initializePlayer();\n return () => {\n vimeoPlayerRef.current?.destroy();\n youtubePlayerRef.current?.destroy?.();\n };\n }, [initializePlayer]);\n\n const play = useCallback(async () => {\n if (vimeoPlayerRef.current) await vimeoPlayerRef.current.play();\n else if (youtubePlayerRef.current) await youtubePlayerRef.current.playVideo();\n }, []);\n\n const pause = useCallback(async () => {\n if (vimeoPlayerRef.current) await vimeoPlayerRef.current.pause();\n else if (youtubePlayerRef.current) await youtubePlayerRef.current.pauseVideo();\n }, []);\n\n const togglePlayback = useCallback(async () => {\n if (isPlaying) {\n await pause();\n } else {\n await play();\n }\n }, [isPlaying, play, pause]);\n\n return {\n isPlaying,\n play,\n pause,\n togglePlayback,\n };\n}\n","import { forwardRef, useRef, useImperativeHandle } from \"react\";\n\nimport { useVideoPlayer } from \"@/lib/hooks/useVideoPlayer\";\n\nimport type { VideoBackgroundHandle, VideoBackgroundProps } from \"@/components\";\n\nexport const VideoBackground = forwardRef<VideoBackgroundHandle, VideoBackgroundProps>(\n (props, ref) => {\n const { className = \"\", videoSource, videoProvider, ...playerOptions } = props;\n\n // DOM container ref for the hook\n const containerRef = useRef<HTMLDivElement>(null);\n\n // Hook usage\n const { isPlaying, play, pause, togglePlayback } = useVideoPlayer({\n containerRef, // ✅ Pass the DOM ref, not forwardRef\n src: videoSource,\n provider: videoProvider,\n ...playerOptions,\n });\n\n // Expose imperative methods to parent\n useImperativeHandle(\n ref,\n () => ({\n play,\n pause,\n togglePlayback,\n isPlaying,\n }),\n [play, pause, togglePlayback, isPlaying],\n );\n\n if (!videoSource || !videoProvider) return null;\n\n return (\n <div className={className}>\n <div\n ref={containerRef}\n className=\"absolute aspect-video bg-black left-1/2 min-h-full min-w-full top-1/2 -translate-x-1/2 -translate-y-1/2 [&_iframe]:absolute [&_iframe]:inset-0 [&_iframe]:min-h-full [&_iframe]:min-w-full\"\n />\n </div>\n );\n },\n);\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nvar use = React[\" use \".trim().toString()];\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nconst SvgStar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 19, height: 20, viewBox: \"0 0 19 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.8096 13.3164C14.8126 13.3279 15.2296 14.8934 15.9219 15.5703C16.6167 16.2497 18.2275 16.6582 18.2275 16.6582C18.2275 16.6582 16.6167 17.0667 15.9219 17.7461C15.2272 18.4256 14.8096 20 14.8096 20C14.8096 20 14.392 18.4256 13.6973 17.7461C13.0024 17.0667 11.3916 16.6582 11.3916 16.6582C11.3916 16.6582 13.0024 16.2497 13.6973 15.5703C14.3898 14.8931 14.8069 13.3266 14.8096 13.3164ZM7.12012 3.03809C7.12686 3.06343 7.99568 6.3234 9.4375 7.7334C10.885 9.14883 14.2402 10 14.2402 10C14.2402 10 10.885 10.8512 9.4375 12.2666C7.99011 13.6822 7.12012 16.9619 7.12012 16.9619C7.12012 16.9619 6.2493 13.682 4.80176 12.2666C3.35664 10.8535 0.0112161 10.0028 0 10C0 10 3.35415 9.14876 4.80176 7.7334C6.24667 6.32055 7.11695 3.05 7.12012 3.03809ZM14.8096 0C14.8106 0.00385251 15.228 1.57529 15.9219 2.25391C16.6167 2.93331 18.2275 3.3418 18.2275 3.3418C18.2275 3.3418 16.6167 3.75028 15.9219 4.42969C15.2272 5.10918 14.8096 6.68359 14.8096 6.68359C14.8096 6.68359 14.392 5.1092 13.6973 4.42969C13.0024 3.75028 11.3916 3.3418 11.3916 3.3418C11.3916 3.3418 13.0024 2.93331 13.6973 2.25391C14.392 1.57444 14.8096 0 14.8096 0Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.8096 13.3164C14.8126 13.3279 15.2296 14.8934 15.9219 15.5703C16.6167 16.2497 18.2275 16.6582 18.2275 16.6582C18.2275 16.6582 16.6167 17.0667 15.9219 17.7461C15.2272 18.4256 14.8096 20 14.8096 20C14.8096 20 14.392 18.4256 13.6973 17.7461C13.0024 17.0667 11.3916 16.6582 11.3916 16.6582C11.3916 16.6582 13.0024 16.2497 13.6973 15.5703C14.3898 14.8931 14.8069 13.3266 14.8096 13.3164ZM7.12012 3.03809C7.12686 3.06343 7.99568 6.3234 9.4375 7.7334C10.885 9.14883 14.2402 10 14.2402 10C14.2402 10 10.885 10.8512 9.4375 12.2666C7.99011 13.6822 7.12012 16.9619 7.12012 16.9619C7.12012 16.9619 6.2493 13.682 4.80176 12.2666C3.35664 10.8535 0.0112161 10.0028 0 10C0 10 3.35415 9.14876 4.80176 7.7334C6.24667 6.32055 7.11695 3.05 7.12012 3.03809ZM14.8096 0C14.8106 0.00385251 15.228 1.57529 15.9219 2.25391C16.6167 2.93331 18.2275 3.3418 18.2275 3.3418C18.2275 3.3418 16.6167 3.75028 15.9219 4.42969C15.2272 5.10918 14.8096 6.68359 14.8096 6.68359C14.8096 6.68359 14.392 5.1092 13.6973 4.42969C13.0024 3.75028 11.3916 3.3418 11.3916 3.3418C11.3916 3.3418 13.0024 2.93331 13.6973 2.25391C14.392 1.57444 14.8096 0 14.8096 0Z\", fill: \"currentColor\" }));\nexport default SvgStar;\n","import * as Slot from \"@radix-ui/react-slot\";\n\nimport Star from \"@/assets/star.svg?react\";\n\nimport type { ButtonProps } from \"@/components\";\nimport \"./Button.css\";\n\nexport function Button({\n asChild,\n children,\n className = \"\",\n displayStars,\n variant = \"primary\",\n ...props\n}: ButtonProps) {\n if (!children) return null;\n\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp {...props} className={`button button-${variant} ${className}`}>\n {displayStars ? <Star /> : null}\n <Slot.Slottable>{children}</Slot.Slottable>\n {displayStars ? <Star /> : null}\n </Comp>\n );\n}\n","import * as React from \"react\";\nconst SvgCopy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_3157_256984)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.8926 6.03125C18.6087 6.03137 19.9997 7.4226 20 9.13867V16.8926C19.9999 18.6088 18.6088 19.9999 16.8926 20H9.13867C7.42258 19.9997 6.03137 18.6087 6.03125 16.8926V9.13867C6.03151 7.42268 7.42267 6.0315 9.13867 6.03125H16.8926ZM9.13867 8.7998C8.95211 8.80006 8.80007 8.95212 8.7998 9.13867V16.8926C8.79992 17.0793 8.95203 17.2302 9.13867 17.2305H16.8926C17.0793 17.2303 17.2303 17.0793 17.2305 16.8926V9.13867C17.2302 8.95204 17.0792 8.79993 16.8926 8.7998H9.13867ZM10.8623 0C11.6863 0.000123014 12.4769 0.327602 13.0596 0.910156C13.6422 1.49295 13.9688 2.28431 13.9688 3.1084V3.96875H11.2002V3.1084C11.2002 3.01878 11.1648 2.93161 11.1016 2.86816C11.0382 2.80495 10.9518 2.76965 10.8623 2.76953H3.1084C3.01863 2.76953 2.93164 2.80469 2.86816 2.86816C2.80469 2.93164 2.76953 3.01863 2.76953 3.1084V10.8623C2.76966 10.9518 2.80496 11.0382 2.86816 11.1016C2.93161 11.1648 3.01878 11.2002 3.1084 11.2002H3.96875V13.9688H3.1084C2.28431 13.9688 1.49295 13.6422 0.910156 13.0596C0.327606 12.4769 0.000128711 11.6862 0 10.8623V3.1084C0 2.28417 0.327336 1.49298 0.910156 0.910156C1.49298 0.327336 2.28416 0 3.1084 0H10.8623Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_3157_256984\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgCopy;\n","import * as React from \"react\";\nconst SvgEmail = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.1914 2.07426C18.4044 2.07443 19.4802 2.84592 19.8564 3.95122C19.9762 4.15149 20.02 4.38002 19.9912 4.59966C19.9968 4.67013 20 4.74143 20 4.81352V15.1866C19.9995 16.7323 18.7005 17.9256 17.1914 17.9258H2.80859C1.29952 17.9256 0.000453441 16.7323 0 15.1866V4.81352C1.53234e-05 4.74143 0.00323412 4.67013 0.00878906 4.59966C-0.0199639 4.38019 0.0230616 4.15138 0.142578 3.95122C0.518727 2.84576 1.59545 2.07443 2.80859 2.07426H17.1914ZM2.02246 15.1866C2.02294 15.5414 2.34114 15.9032 2.80859 15.9034H17.1914C17.6589 15.9032 17.9771 15.5414 17.9775 15.1866V6.52153L10.6162 12.1846C10.2529 12.4639 9.74713 12.4639 9.38379 12.1846L2.02246 6.52055V15.1866ZM2.80859 4.09673C2.63443 4.0968 2.48046 4.14623 2.35645 4.22758L10 10.1065L17.6426 4.22758C17.5187 4.1465 17.3652 4.0968 17.1914 4.09673H2.80859Z\", fill: \"currentColor\" }));\nexport default SvgEmail;\n","import * as React from \"react\";\nconst SvgFacebook = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.88086 11.6914V20H11.4121V11.6914H14.791L15.4941 7.87109H11.4121V6.51953C11.4121 4.5 12.2051 3.72656 14.252 3.72656C14.8887 3.72656 15.4004 3.74219 15.6973 3.77344V0.308594C15.1387 0.15625 13.7715 0 12.9824 0C8.80664 0 6.88086 1.97266 6.88086 6.22656V7.87109H4.30273V11.6914H6.88086Z\", fill: \"currentColor\" }));\nexport default SvgFacebook;\n","import * as React from \"react\";\nconst SvgInstagram = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5304)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14.4443 0C17.5126 0 20 2.48742 20 5.55566V14.4443C20 17.5126 17.5126 20 14.4443 20H5.55566C2.48742 20 0 17.5126 0 14.4443V5.55566C0 2.48742 2.48742 0 5.55566 0H14.4443ZM5.55566 2.22266C3.71471 2.22266 2.22266 3.71471 2.22266 5.55566V14.4443C2.22266 16.2853 3.71471 17.7773 5.55566 17.7773H14.4443C16.2853 17.7773 17.7773 16.2853 17.7773 14.4443V5.55566C17.7773 3.71471 16.2853 2.22266 14.4443 2.22266H5.55566ZM7.88867 5.81934C8.75992 5.36728 9.7527 5.20173 10.7236 5.3457C11.7138 5.49268 12.6301 5.9543 13.3379 6.66211C14.0457 7.36993 14.5073 8.28623 14.6543 9.27637C14.7983 10.2473 14.6327 11.2401 14.1807 12.1113C13.7286 12.9823 13.0133 13.6886 12.1367 14.1299C11.26 14.5712 10.2659 14.7253 9.29688 14.5693C8.32785 14.4134 7.43328 13.9548 6.73926 13.2607C6.04524 12.5667 5.58664 11.6721 5.43066 10.7031C5.27475 9.73406 5.42883 8.74002 5.87012 7.86328C6.31136 6.98674 7.01766 6.2714 7.88867 5.81934ZM10.3965 7.54297C9.88813 7.46771 9.36828 7.55436 8.91211 7.79102C8.45596 8.02776 8.08661 8.40329 7.85547 8.8623C7.62435 9.32148 7.5434 9.84208 7.625 10.3496C7.70668 10.8572 7.94699 11.3259 8.31055 11.6895C8.67411 12.053 9.14277 12.2933 9.65039 12.375C10.1579 12.4566 10.6785 12.3756 11.1377 12.1445C11.5967 11.9134 11.9722 11.544 12.209 11.0879C12.4456 10.6317 12.5323 10.1119 12.457 9.60352C12.3801 9.08473 12.1374 8.60425 11.7666 8.2334C11.3958 7.86255 10.9153 7.6199 10.3965 7.54297ZM14.8975 4C15.5111 4 16.0088 4.49768 16.0088 5.11133C16.0087 5.72488 15.511 6.22266 14.8975 6.22266H14.8887C14.2752 6.22255 13.7775 5.72481 13.7773 5.11133C13.7773 4.49774 14.2751 4.0001 14.8887 4H14.8975Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5304\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgInstagram;\n","import * as React from \"react\";\nconst SvgLinkedin = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5301)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.47768 20H0.330357V6.64732H4.47768V20ZM2.40179 4.82589C1.07589 4.82589 0 3.72768 0 2.40179C0 1.76339 0.254464 1.15625 0.705357 0.705357C1.15625 0.254464 1.76786 0 2.40179 0C3.03571 0 3.64732 0.254464 4.09821 0.705357C4.54911 1.15625 4.80357 1.76786 4.80357 2.40179C4.80357 3.72768 3.72768 4.82589 2.40179 4.82589ZM19.9955 20H15.8571V13.5C15.8571 11.9509 15.8259 9.96429 13.7009 9.96429C11.5446 9.96429 11.2143 11.6473 11.2143 13.3884V20H7.07143V6.64732H11.0491V8.46875H11.1071C11.6607 7.41964 13.0134 6.3125 15.0313 6.3125C19.2277 6.3125 20 9.07589 20 12.6652V20H19.9955Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5301\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgLinkedin;\n","import * as React from \"react\";\nconst SvgX = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { clipPath: \"url(#clip0_29_5302)\" }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.7512 0.960923H18.818L12.1179 8.61864L20 19.0391H13.8284L8.99458 12.7191L3.46359 19.0391H0.394938L7.5613 10.8483L0 0.960923H6.32828L10.6976 6.73759L15.7512 0.960923ZM14.6748 17.2035H16.3742L5.4049 2.70013H3.58133L14.6748 17.2035Z\", fill: \"currentColor\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_29_5302\" }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 20, fill: \"white\" }))));\nexport default SvgX;\n","import * as React from \"react\";\nconst SvgYoutube = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.2564 2.78418C10.4202 2.78488 10.6561 2.78626 10.9429 2.78906C11.517 2.79467 12.2996 2.80566 13.1275 2.82812C13.9543 2.85057 14.8328 2.88452 15.5991 2.93555C16.2553 2.97926 16.8685 3.03732 17.2974 3.12109L17.4693 3.15918L17.4917 3.16504C18.0001 3.30898 18.4626 3.58461 18.8306 3.96387C19.1983 4.34318 19.4601 4.81371 19.5884 5.32617L18.9693 5.48047L19.5972 5.36816C19.8737 6.90116 20.0089 8.45696 19.9995 10.0146L19.9946 10.5898C19.9689 11.9337 19.8358 13.2743 19.5972 14.5977C19.5947 14.6114 19.5918 14.6261 19.5884 14.6396C19.46 15.1522 19.1984 15.6226 18.8306 16.002C18.4626 16.3813 18.0003 16.6568 17.4917 16.8008L17.4829 16.8037C17.051 16.9192 16.3534 16.9951 15.604 17.0498C14.8364 17.1058 13.9559 17.1424 13.1284 17.167C12.3002 17.1916 11.5181 17.2048 10.9439 17.2109C10.6568 17.214 10.4204 17.2151 10.2564 17.2158C10.1749 17.2162 10.1106 17.2167 10.0669 17.2168H9.93117C9.88755 17.2167 9.8231 17.2162 9.74172 17.2158C9.57784 17.2151 9.34193 17.214 9.05519 17.2109C8.4809 17.2048 7.69808 17.1916 6.86965 17.167C6.04235 17.1424 5.16258 17.1058 4.39504 17.0498C3.64585 16.9952 2.94825 16.9191 2.51613 16.8037L2.51125 16.8027C2.0134 16.6664 1.55889 16.403 1.19191 16.04C0.824822 15.6767 0.557084 15.2243 0.415545 14.7275C0.409846 14.7075 0.40558 14.6865 0.401873 14.666C0.124956 13.1308 -0.00927314 11.5727 0.000505705 10.0127C-0.00668415 8.46691 0.127577 6.92363 0.401873 5.40234L0.410662 5.36035C0.539027 4.8475 0.800385 4.37654 1.16847 3.99707C1.53642 3.61794 1.998 3.34211 2.50637 3.19824L2.51613 3.19629C2.94823 3.08087 3.64573 3.00486 4.39504 2.9502C5.1626 2.89422 6.04232 2.85662 6.86965 2.83203C7.69808 2.80742 8.48089 2.79521 9.05519 2.78906C9.34194 2.786 9.57784 2.78495 9.74172 2.78418C9.8231 2.7838 9.88755 2.7833 9.93117 2.7832H10.0669C10.1106 2.78329 10.1749 2.78383 10.2564 2.78418ZM8.39992 6.67773C8.20248 6.56553 7.95956 6.56757 7.7632 6.68164C7.56692 6.79591 7.44591 7.00628 7.44582 7.2334V12.7988C7.44583 13.026 7.56685 13.2363 7.7632 13.3506C7.95958 13.4647 8.20243 13.4667 8.39992 13.3545L13.2935 10.5703C13.4925 10.4567 13.6157 10.2448 13.6157 10.0156C13.6155 9.78646 13.4926 9.57433 13.2935 9.46094L8.39992 6.67773Z\", fill: \"currentColor\" }));\nexport default SvgYoutube;\n","import Copy from \"@/assets/copy.svg?react\";\nimport Email from \"@/assets/email.svg?react\";\nimport Facebook from \"@/assets/facebook.svg?react\";\nimport Instagram from \"@/assets/instagram.svg?react\";\nimport LinkedIn from \"@/assets/linkedin.svg?react\";\nimport X from \"@/assets/x.svg?react\";\nimport Youtube from \"@/assets/youtube.svg?react\";\n\nimport type { ButtonSocialProps } from \"@/components\";\nimport \"./ButtonSocial.css\";\n\nexport function ButtonSocial({\n className = \"\",\n href,\n onClick,\n socialPlatform,\n variant = \"basic\",\n}: ButtonSocialProps) {\n let Icon = Facebook;\n\n switch (socialPlatform) {\n case \"copy\":\n Icon = Copy;\n break;\n case \"email\":\n Icon = Email;\n break;\n case \"instagram\":\n Icon = Instagram;\n break;\n case \"linkedin\":\n Icon = LinkedIn;\n break;\n case \"x\":\n Icon = X;\n break;\n case \"youtube\":\n Icon = Youtube;\n break;\n default:\n break;\n }\n\n const classNames = `button-social button-social-${variant} ${className}`;\n\n if (href) {\n return (\n <a className={classNames} href={href}>\n <Icon />\n </a>\n );\n }\n\n return (\n <button className={classNames} onClick={onClick}>\n <Icon />\n </button>\n );\n}\n","import { cn } from \"@/lib/utils\";\n\nimport type { ReactNode } from \"react\";\n\nexport function PageMargins({\n children,\n className = \"\",\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\"max-w-page mx-auto overflow-hidden px-5 md:px-15 relative w-full\", className)}\n >\n {children}\n </div>\n );\n}\n","import * as React from \"react\";\nconst SvgPause = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 20, viewBox: \"0 0 20 20\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 20H4V0H8V20ZM16 20H12V0H16V20Z\", fill: \"currentColor\" }));\nexport default SvgPause;\n","import * as React from \"react\";\nconst SvgPlay = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 10, height: 12, viewBox: \"0 0 10 12\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0.793651 12C0.304233 12 0 11.596 0 10.9793V1.01359C0 0.396929 0.304233 0 0.793651 0C1.0582 0 1.28307 0.10632 1.54762 0.269344L9.25926 5.05375C9.8082 5.39398 10 5.62079 10 5.99646C10 6.37212 9.8082 6.59894 9.25926 6.94625L1.54762 11.7236C1.28307 11.8866 1.0582 12 0.793651 12Z\", fill: \"currentColor\" }));\nexport default SvgPlay;\n","import Pause from \"@/assets/pause.svg?react\";\nimport Play from \"@/assets/play.svg?react\";\n\nimport type { PlayButtonProps } from \"@/components\";\nimport \"./PlayButton.css\";\n\nexport function PlayButton({\n className = \"\",\n isPlaying,\n label,\n onClick,\n variant,\n}: PlayButtonProps) {\n return (\n <button\n aria-label={label}\n className={`play-button play-button-${variant} ${className}`}\n data-playing={isPlaying}\n onClick={onClick}\n >\n {isPlaying ? <Pause /> : <Play />}\n </button>\n );\n}\n","import { ButtonSocial } from \"@/components\";\nimport { Popover, PopoverArrow, PopoverContent, PopoverTrigger } from \"@/components/vendor\";\nimport { copyLink, emailLink, shareOnFacebook, shareOnLinkedIn, shareOnX } from \"@/lib/utils\";\n\nimport type { ButtonSocialVariant, ShareProps } from \"@/components\";\n\nexport function Share({ trigger, variant }: ShareProps) {\n let backgroundClass = \"bg-white\";\n let buttonSocialVariant: ButtonSocialVariant = \"basic\";\n\n if (variant === \"digital\") {\n backgroundClass = \"bg-black\";\n buttonSocialVariant = \"digital\";\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent className={`border-2 border-smoke w-fit ${backgroundClass}`}>\n <div className=\"flex gap-2\">\n <ButtonSocial\n onClick={shareOnFacebook}\n socialPlatform=\"facebook\"\n variant={buttonSocialVariant}\n />\n <ButtonSocial onClick={shareOnX} socialPlatform=\"x\" variant={buttonSocialVariant} />\n <ButtonSocial\n onClick={shareOnLinkedIn}\n socialPlatform=\"linkedin\"\n variant={buttonSocialVariant}\n />\n <ButtonSocial onClick={emailLink} socialPlatform=\"email\" variant={buttonSocialVariant} />\n <ButtonSocial onClick={copyLink} socialPlatform=\"copy\" variant={buttonSocialVariant} />\n </div>\n <PopoverArrow asChild>\n <div\n className={`border-r-2 border-b-2 border-smoke bottom-[5.75px] relative rounded-xs rotate-45 size-2.5 ${backgroundClass}`}\n ></div>\n </PopoverArrow>\n </PopoverContent>\n </Popover>\n );\n}\n","import * as Slot from \"@radix-ui/react-slot\";\n\nimport Star from \"@/assets/star.svg?react\";\n\nimport type { TextCtaProps } from \"@/components\";\nimport \"./TextCta.css\";\n\nexport function TextCta({\n asChild,\n children,\n className = \"\",\n displayStars,\n variant = \"basic\",\n ...props\n}: TextCtaProps) {\n if (!children) return null;\n\n const Comp = asChild ? Slot.Root : \"div\";\n\n return (\n <Comp {...props} className={`text-cta text-cta-${variant} ${className}`}>\n {displayStars ? <Star /> : null}\n <Slot.Slottable>{children}</Slot.Slottable>\n {displayStars ? <Star /> : null}\n </Comp>\n );\n}\n"],"names":["isObject","subject","isRecord","canUseDOM","areOptionsEqual","optionsA","optionsB","optionsAKeys","optionsBKeys","breakpointsA","breakpointsB","key","valueA","valueB","sortAndMapPluginToOptions","plugins","a","b","plugin","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB","isNumber","isString","isBoolean","mathAbs","n","mathSign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","arrayKeys","array","objectKeys","arrayLast","arrayLastIndex","arrayIsLastIndex","arrayFromNumber","startAt","_","i","object","objectsMergeDeep","objectA","objectB","mergedObjects","currentObject","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","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","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","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","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","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","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","previousTarget","to","newTarget","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","hasSettledAndIdle","interpolatedLocation","engine","startLocation","scrollProgress","slidesInView","slideFocus","EventHandler","api","getListeners","emit","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","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","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","useEffect","newEmblaApi","SvgCarrotLeft","props","React","SvgCarrotRight","r","f","clsx","concatArrays","array1","array2","combinedArray","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","validators","CLASS_PART_SEPARATOR","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","getGroupIdForArbitraryProperty","classParts","getGroupRecursive","hasPostfixModifier","modifierConflicts","baseConflicts","classPartObject","currentClassPart","nextClassPartObject","result","classRest","validatorsLength","validatorObj","content","colonIndex","property","theme","classGroups","processClassGroups","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","current","parts","part","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","prefix","experimentalParseClassName","parseClassName","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","mod","currentSegment","modifier","isArbitrary","isOrderSensitive","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","originalClassName","variantModifier","modifierId","classId","conflictGroups","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","label","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","cn","inputs","tailwindColorToRgb","tailwindColor","el","color","parseRgb","match","relativeLuminance","g","toLinear","c","R","G","B","hasSufficientContrast","twBackgroundColor","twForegroundColor","ratio","backgroundColor","foregroundColor","bgRgb","fgRgb","L1","L2","lighter","darker","copyLink","text","emailLink","body","pageTitle","emailBody","metaDescription","shareOnFacebook","url","shareOnX","tweetText","shareOnLinkedIn","CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","children","carouselRef","setCanScrollPrev","setCanScrollNext","onSelect","handleKeyDown","jsx","CarouselContent","CarouselItem","CarouselPrevious","variant","Button","jsxs","Left","CarouselNext","Right","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","setRef","ref","composeRefs","refs","hasCleanup","cleanups","cleanup","useComposedRefs","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","rootComponentName","defaultContext","BaseContext","Provider","scope","Context","_a","useContext2","consumerName","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","createSlot","ownerName","SlotClone","createSlotClone","Slot2","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","child","childrenRef","getElementRef","props2","mergeProps","SLOTTABLE_IDENTIFIER","childProps","overrideProps","propName","slotPropValue","childPropValue","element","getter","mayWarn","_b","NODES","Primitive","primitive","Slot","Node","asChild","primitiveProps","Comp","dispatchDiscreteCustomEvent","ReactDOM","useCallbackRef","callback","callbackRef","useEscapeKeydown","onEscapeKeyDownProp","onEscapeKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","name","detail","discrete","count","useFocusGuards","edgeGuards","createFocusGuard","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","item","updatedArray","items","useLayoutEffect2","useReactId","useId","deterministicId","id","setId","useLayoutEffect","reactId","sides","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","getAxisLength","yAxisSides","getSideAxis","getAlignmentAxis","getAlignmentSides","rtl","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","expandPaddingObject","padding","getPaddingObject","rectToClientRect","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","commonX","commonY","commonAlign","coords","computePosition","strategy","middleware","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","data","detectOverflow","state","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","offsets","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","invalidOverflowDisplayValues","isOverflowElement","overflowX","overflowY","display","getComputedStyle","tableElements","isTableElement","topLayerSelectors","isTopLayer","selector","transformProperties","willChangeValues","containValues","isContainingBlock","elementOrCss","webkit","isWebKit","css","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","lastTraversableNodeNames","getNodeScroll","getNearestOverflowAncestor","parentNode","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","getComputedStyle$1","hasOffset","shouldFallback","unwrapElement","getScale","domElement","$","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","left","top","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","absoluteOrFixed","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","timeoutId","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","isClient","noop","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","open","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","Root","useSize","setSize","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","anchorRef","previousAnchor","CONTENT_NAME","PopperContentProvider","useContentContext","PopperContent","sideOffset","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","contentProps","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","_c","contentZIndex","setContentZIndex","_d","_e","_f","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","Content","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useInsertionEffect","useControllableState","prop","defaultProp","onChange","caller","uncontrolledProp","setUncontrolledProp","onChangeRef","useUncontrolledState","isControlled","isControlledRef","wasControlled","setValue","nextValue","value2","isFunction","prevValueRef","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","parent","correctedTarget","applyAttributeToOthers","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","__assign","s","p","__rest","__spreadArray","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","buffer","assigned","medium","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","SideCar","sideCar","rest","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","enabled","shards","noRelative","noIsolation","inert","allowPinchZoom","Container","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","insertStyleTag","head","stylesheetSingleton","stylesheet","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","right","getGapWidth","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","delta","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","parent_1","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","shouldCancelEvent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","selection","anchorNode","isTouchingSelection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","POPOVER_NAME","createPopoverContext","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","openProp","defaultOpen","onOpenChange","modal","popperScope","triggerRef","hasCustomAnchor","setHasCustomAnchor","setOpen","PopperPrimitive.Root","prevOpen","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","TRIGGER_NAME","PopoverTrigger","triggerProps","composedTriggerRef","trigger","getState","PortalProvider","usePortalContext","PopoverPortal","forceMount","PortalPrimitive","PopoverContent","portalContext","PopoverContentModal","PopoverContentNonModal","contentRef","isRightClickOutsideRef","PopoverContentImpl","originalEvent","ctrlLeftClick","isRightClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","PopperPrimitive.Content","CLOSE_NAME","PopoverClose","closeProps","PopoverArrow","PopperPrimitive.Arrow","Trigger","Content2","Arrow2","PopoverPrimitive.Root","PopoverPrimitive.Trigger","PopoverPrimitive.Portal","PopoverPrimitive.Content","PopoverPrimitive.Arrow","SvgBookmarkEmpty","SvgBookmarkFill","ContentCarouselMultipleCard","button","headline","image","isBookmarked","onBookmark","BookmarkFill","BookmarkEmpty","ContentCarouselMultipleItem","base","cardClasses","ContentCarouselMultiple","horizontalStroke","Children","carouselNavigationClasses","carouselNavigationContainerClasses","needsReversed","buttonVariant","nextVariant","previousVariant","PageMargins","isValidElement","cloneElement","Background","imageBackground","videoBackground","isPlaying","setIsPlaying","videoBackgroundRef","playButtonVariant","handlePlay","Fragment","VideoBackground","PlayButton","EventContent","Header","category","copy","person","InsightContent","insight","SvgFax","SvgPhone","PersonContent","textColor","textCtaVariant","ButtonSocial","TextCta","Phone","Fax","SvgShare","ShareOptions","contactCta","hasShareOptions","printCta","Share","ShareIcon","ContentPrimaryFeatureDetail","_iterableToArrayLimit","arr","_i","_s","_x","_r","_arr","_n","err","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","source","_defineProperty","_regeneratorRuntime","exports","Op","hasOwn","defineProperty","obj","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","prototype","method","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","methodName","info","pushTryEntry","locs","resetTryEntry","iterable","iteratorMethod","genFun","ctor","iter","val","skipTempReset","rootRecord","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","afterLoc","finallyLoc","tryLoc","thrown","resultName","nextLoc","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_classCallCheck","instance","Constructor","_defineProperties","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","o","_isNativeReflectConstruct","_construct","Parent","Class","_isNativeFunction","_wrapNativeSuper","_cache","Wrapper","_assertThisInitialized","_possibleConstructorReturn","call","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","_slicedToArray","_arrayWithHoles","_unsupportedIterableToArray","_nonIterableRest","minLen","_arrayLikeToArray","arr2","_toPrimitive","input","hint","prim","res","isBun","isDeno","isServerRuntime","getMethodName","isDomElement","isVimeoUrl","isVimeoEmbed","expr","getOembedDomain","domain","customDomains","_customDomains","customDomain","getVimeoUrl","oEmbedParameters","idOrUrl","subscribe","eventName","onName","offName","eventNames","evName","findIframeBySourceWindow","sourceWindow","iframes","arrayIndexOfSupport","postMessageSupport","commonjsGlobal","createCommonjsModule","module","hasOwnProperty","hasDefine","WeakMap","genId","checkInstance","rand","npo_src","definition","builtInProp","scheduling_queue","ToString","timer","Item","schedule","isThenable","_then","o_type","notify","notifyIsolated","chain","ret","msg","def_wrapper","MakeDefWrapper","iteratePromises","resolver","rejecter","idx","MakeDef","Promise","executor","def","success","failure","PromisePrototype","msgs","callbackMap","storeCallback","player","playerCallbacks","getCallbacks","removeCallback","shiftCallbacks","swapCallbacks","oldElement","parseMessageData","postMessage","params","message","ieVersion","processData","promises","promise","getOEmbedParameters","createEmbed","div","getOEmbedData","videoUrl","xhr","json","status","initializeEmbeds","handleError","resizeEmbeds","onMessage","senderIFrame","space","initAppendVideoMetadata","Player","checkUrlTimeParam","videoId","matches","sec","updateDRMEmbeds","currentAllow","allowSupportsDRM","currentUrl","initializeScreenfull","fnMap","eventNameMap","screenfull","onFullScreenEntered","returnPromise","onFullScreenExit","TimingSrcConnector","_EventTarget","_super","_player","timingObject","_this","logger","_callee","newAdjustment","newPlaybackRate","_context","_x2","_init","_callee2","_this2","playerUpdater","positionSync","timingObjectUpdater","_context2","_x3","_x4","_x5","_updateTimingObject","_callee3","_yield$Promise$all","_yield$Promise$all2","isPaused","playbackRate","_context3","updateTimingObject","_x6","_x7","_updatePlayer","_callee5","_timingObject$query","_context5","_ref2","_callee4","_context4","err2","_x11","updatePlayer","_x8","_x9","_x10","_this3","allowedDrift","maxAllowedDrift","minCheckInterval","maxRateAdjustment","maxTimeToCatchUp","syncInterval","check","_ref3","_callee6","diffAbs","adjustment","_context6","interval","_this$logger","playerMap","readyMap","iframe","readyPromise","isError","isReadyError","isReadyEvent","isPingResponse","exitFullscreen","_len","_key","_this4","lastCallback","time","language","kind","showing","_this5","autopause","camera","colors","nullPromise","colorPromises","currentTime","muted","quality","volume","_setTimingSrc","_this6","connector","setTimingSrc","Sister","sister","events","listener","m","h","w","ms","fmtLong","fmtShort","str","msAbs","plural","isPlural","setup","env","createDebug","coerce","disable","enable","require$$0","selectColor","namespace","hash","prevTime","enableOverride","namespacesCache","enabledCache","debug","curr","format","formatter","extend","delimiter","newDebug","namespaces","split","ns","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","common","formatArgs","save","load","useColors","localstorage","warned","lastC","formatters","_PlayerStates","_PlayerStates2","_interopRequireDefault","_debug","_debug2","_FunctionStateMap","require$$1","_FunctionStateMap2","_eventNames","require$$2","_eventNames2","_functionNames","require$$3","_functionNames2","YouTubePlayer","emitter","onEventName","playerAPIReady","strictState","functions","functionName","stateInfo","playerState","onPlayerStateChange","playerStateAfterChange","timeout","loadScript","src","script","setAttributes","onend","stdOnEnd","ieOnEnd","attrs","_loadScript","_loadScript2","protocol","previous","_sister","_sister2","_YouTubePlayer","_YouTubePlayer2","_loadYouTubeIframeApi","_loadYouTubeIframeApi2","youtubeIframeAPI","maybeElementId","YT","playerApi","useVideoPlayer","provider","autoplay","showControls","onPlay","onPause","onEnded","onError","vimeoPlayerRef","youtubePlayerRef","getVideoId","initializePlayer","VimeoPlayer","play","pause","togglePlayback","forwardRef","videoSource","videoProvider","playerOptions","useImperativeHandle","REACT_LAZY_TYPE","use","isPromiseLike","isLazyComponent","createSlottable","Slottable2","Fragment2","Slottable","SvgStar","displayStars","Slot.Root","Star","Slot.Slottable","SvgCopy","SvgEmail","SvgFacebook","SvgInstagram","SvgLinkedin","SvgX","SvgYoutube","href","onClick","socialPlatform","Icon","Facebook","Copy","Email","Instagram","LinkedIn","X","Youtube","SvgPause","SvgPlay","Pause","Play","backgroundClass","buttonSocialVariant"],"mappings":"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","x_google_ignoreList":[0,1,2,5,6,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,72,73,74,75,76,77,78,79,80,81,82,83,84,87]}
|