@yoopta/themes-shadcn 6.0.0-beta.14 → 6.0.0-beta.15
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/table/components/row-controls.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/accordion.js.map +0 -1
- package/dist/blockquote.js.map +0 -1
- package/dist/callout.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chunks/Combination-2202c874.js +0 -1080
- package/dist/chunks/Combination-2202c874.js.map +0 -1
- package/dist/chunks/_tslib-514d60fe.js +0 -67
- package/dist/chunks/_tslib-514d60fe.js.map +0 -1
- package/dist/chunks/arrow-right-cc37c75c.js +0 -30
- package/dist/chunks/arrow-right-cc37c75c.js.map +0 -1
- package/dist/chunks/button-f9af7cb3.js +0 -76
- package/dist/chunks/button-f9af7cb3.js.map +0 -1
- package/dist/chunks/card-29720641.js +0 -38
- package/dist/chunks/card-29720641.js.map +0 -1
- package/dist/chunks/check-530fff0e.js +0 -14
- package/dist/chunks/check-530fff0e.js.map +0 -1
- package/dist/chunks/chevron-down-544d1acd.js +0 -16
- package/dist/chunks/chevron-down-544d1acd.js.map +0 -1
- package/dist/chunks/chevron-up-053cba03.js +0 -14
- package/dist/chunks/chevron-up-053cba03.js.map +0 -1
- package/dist/chunks/code-2ff9cc0c.js +0 -17
- package/dist/chunks/code-2ff9cc0c.js.map +0 -1
- package/dist/chunks/createLucideIcon-02eb7854.js +0 -95
- package/dist/chunks/createLucideIcon-02eb7854.js.map +0 -1
- package/dist/chunks/dropdown-menu-ac777fdc.js +0 -1165
- package/dist/chunks/dropdown-menu-ac777fdc.js.map +0 -1
- package/dist/chunks/external-link-43895ded.js +0 -18
- package/dist/chunks/external-link-43895ded.js.map +0 -1
- package/dist/chunks/file-text-99674d8d.js +0 -20
- package/dist/chunks/file-text-99674d8d.js.map +0 -1
- package/dist/chunks/hover-card-134f053d.js +0 -257
- package/dist/chunks/hover-card-134f053d.js.map +0 -1
- package/dist/chunks/index-056b596e.js +0 -16
- package/dist/chunks/index-056b596e.js.map +0 -1
- package/dist/chunks/index-35823769.js +0 -222
- package/dist/chunks/index-35823769.js.map +0 -1
- package/dist/chunks/index-41c4abc4.js +0 -3805
- package/dist/chunks/index-41c4abc4.js.map +0 -1
- package/dist/chunks/index-454935af.js +0 -71
- package/dist/chunks/index-454935af.js.map +0 -1
- package/dist/chunks/index-ae9b48d5.js +0 -12
- package/dist/chunks/index-ae9b48d5.js.map +0 -1
- package/dist/chunks/index-b8a83ba5.js +0 -335
- package/dist/chunks/index-b8a83ba5.js.map +0 -1
- package/dist/chunks/index-b8f2908d.js +0 -40
- package/dist/chunks/index-b8f2908d.js.map +0 -1
- package/dist/chunks/index-c655a86f.js +0 -7
- package/dist/chunks/index-c655a86f.js.map +0 -1
- package/dist/chunks/index-c90e54a4.js +0 -190
- package/dist/chunks/index-c90e54a4.js.map +0 -1
- package/dist/chunks/index-cf5f0d71.js +0 -2907
- package/dist/chunks/index-cf5f0d71.js.map +0 -1
- package/dist/chunks/index-d9171717.js +0 -13
- package/dist/chunks/index-d9171717.js.map +0 -1
- package/dist/chunks/index-dd0fd848.js +0 -70
- package/dist/chunks/index-dd0fd848.js.map +0 -1
- package/dist/chunks/input-5608c2c9.js +0 -13
- package/dist/chunks/input-5608c2c9.js.map +0 -1
- package/dist/chunks/label-c9152e49.js +0 -168
- package/dist/chunks/label-c9152e49.js.map +0 -1
- package/dist/chunks/language-select-bdc50f20.js +0 -44
- package/dist/chunks/language-select-bdc50f20.js.map +0 -1
- package/dist/chunks/play-1a34ad05.js +0 -16
- package/dist/chunks/play-1a34ad05.js.map +0 -1
- package/dist/chunks/plus-fcea2532.js +0 -17
- package/dist/chunks/plus-fcea2532.js.map +0 -1
- package/dist/chunks/popover-ef29b0ac.js +0 -300
- package/dist/chunks/popover-ef29b0ac.js.map +0 -1
- package/dist/chunks/scroll-area-17d8c584.js +0 -726
- package/dist/chunks/scroll-area-17d8c584.js.map +0 -1
- package/dist/chunks/select-98610101.js +0 -1213
- package/dist/chunks/select-98610101.js.map +0 -1
- package/dist/chunks/separator-9e6aa45b.js +0 -172
- package/dist/chunks/separator-9e6aa45b.js.map +0 -1
- package/dist/chunks/sparkles-8922a4af.js +0 -26
- package/dist/chunks/sparkles-8922a4af.js.map +0 -1
- package/dist/chunks/style-inject.es-746bb8ed.js +0 -29
- package/dist/chunks/style-inject.es-746bb8ed.js.map +0 -1
- package/dist/chunks/tabs-9cfbd3cc.js +0 -204
- package/dist/chunks/tabs-9cfbd3cc.js.map +0 -1
- package/dist/chunks/tooltip-f1e02ae0.js +0 -800
- package/dist/chunks/tooltip-f1e02ae0.js.map +0 -1
- package/dist/chunks/trash-2-be728dd2.js +0 -20
- package/dist/chunks/trash-2-be728dd2.js.map +0 -1
- package/dist/chunks/upload-0f56ec3e.js +0 -44
- package/dist/chunks/upload-0f56ec3e.js.map +0 -1
- package/dist/chunks/utils-131071a4.js +0 -2500
- package/dist/chunks/utils-131071a4.js.map +0 -1
- package/dist/chunks/x-2f6cf742.js +0 -17
- package/dist/chunks/x-2f6cf742.js.map +0 -1
- package/dist/code-group.js.map +0 -1
- package/dist/code.js.map +0 -1
- package/dist/divider.js.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/headings.js.map +0 -1
- package/dist/image.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/link.js.map +0 -1
- package/dist/lists.js.map +0 -1
- package/dist/mention.js.map +0 -1
- package/dist/paragraph.js.map +0 -1
- package/dist/steps.js.map +0 -1
- package/dist/table-of-contents.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/video.js.map +0 -1
package/dist/carousel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.js","sources":["../../../../node_modules/embla-carousel-reactive-utils/src/components/utils.ts","../../../../node_modules/embla-carousel/src/components/utils.ts","../../../../node_modules/embla-carousel/src/components/Alignment.ts","../../../../node_modules/embla-carousel/src/components/EventStore.ts","../../../../node_modules/embla-carousel/src/components/Animations.ts","../../../../node_modules/embla-carousel/src/components/Axis.ts","../../../../node_modules/embla-carousel/src/components/Limit.ts","../../../../node_modules/embla-carousel/src/components/Counter.ts","../../../../node_modules/embla-carousel/src/components/DragHandler.ts","../../../../node_modules/embla-carousel/src/components/DragTracker.ts","../../../../node_modules/embla-carousel/src/components/NodeRects.ts","../../../../node_modules/embla-carousel/src/components/PercentOfView.ts","../../../../node_modules/embla-carousel/src/components/ResizeHandler.ts","../../../../node_modules/embla-carousel/src/components/ScrollBody.ts","../../../../node_modules/embla-carousel/src/components/ScrollBounds.ts","../../../../node_modules/embla-carousel/src/components/ScrollContain.ts","../../../../node_modules/embla-carousel/src/components/ScrollLimit.ts","../../../../node_modules/embla-carousel/src/components/ScrollLooper.ts","../../../../node_modules/embla-carousel/src/components/ScrollProgress.ts","../../../../node_modules/embla-carousel/src/components/ScrollSnaps.ts","../../../../node_modules/embla-carousel/src/components/SlideRegistry.ts","../../../../node_modules/embla-carousel/src/components/ScrollTarget.ts","../../../../node_modules/embla-carousel/src/components/ScrollTo.ts","../../../../node_modules/embla-carousel/src/components/SlideFocus.ts","../../../../node_modules/embla-carousel/src/components/Vector1d.ts","../../../../node_modules/embla-carousel/src/components/Translate.ts","../../../../node_modules/embla-carousel/src/components/SlideLooper.ts","../../../../node_modules/embla-carousel/src/components/SlidesHandler.ts","../../../../node_modules/embla-carousel/src/components/SlidesInView.ts","../../../../node_modules/embla-carousel/src/components/SlideSizes.ts","../../../../node_modules/embla-carousel/src/components/SlidesToScroll.ts","../../../../node_modules/embla-carousel/src/components/Engine.ts","../../../../node_modules/embla-carousel/src/components/EventHandler.ts","../../../../node_modules/embla-carousel/src/components/Options.ts","../../../../node_modules/embla-carousel/src/components/OptionsHandler.ts","../../../../node_modules/embla-carousel/src/components/PluginsHandler.ts","../../../../node_modules/embla-carousel/src/components/EmblaCarousel.ts","../../../../node_modules/embla-carousel-react/src/components/useEmblaCarousel.ts","../src/ui/carousel.tsx","../src/carousel/elements/carousel-container.tsx","../src/carousel/elements/carousel-item.tsx","../src/carousel/index.ts"],"sourcesContent":["import { EmblaPluginType } from 'embla-carousel'\n\nexport function isObject(subject: unknown): subject is Record<string, unknown> {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function isRecord(\n subject: unknown\n): subject is Record<string | number, unknown> {\n return isObject(subject) || Array.isArray(subject)\n}\n\nexport function canUseDOM(): boolean {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n )\n}\n\nexport function areOptionsEqual(\n optionsA: Record<string, unknown>,\n optionsB: Record<string, unknown>\n): boolean {\n const optionsAKeys = Object.keys(optionsA)\n const optionsBKeys = Object.keys(optionsB)\n\n if (optionsAKeys.length !== optionsBKeys.length) return false\n\n const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {}))\n const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {}))\n\n if (breakpointsA !== breakpointsB) return false\n\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}\n\nexport function sortAndMapPluginToOptions(\n plugins: EmblaPluginType[]\n): EmblaPluginType['options'][] {\n return plugins\n .concat()\n .sort((a, b) => (a.name > b.name ? 1 : -1))\n .map((plugin) => plugin.options)\n}\n\nexport function arePluginsEqual(\n pluginsA: EmblaPluginType[],\n pluginsB: EmblaPluginType[]\n): boolean {\n if (pluginsA.length !== pluginsB.length) return false\n\n const optionsA = sortAndMapPluginToOptions(pluginsA)\n const optionsB = sortAndMapPluginToOptions(pluginsB)\n\n return optionsA.every((optionA, index) => {\n const optionB = optionsB[index]\n return areOptionsEqual(optionA, optionB)\n })\n}\n","import { PointerEventType } from './DragTracker'\n\nexport type WindowType = Window & typeof globalThis\n\nexport function isNumber(subject: unknown): subject is number {\n return typeof subject === 'number'\n}\n\nexport function isString(subject: unknown): subject is string {\n return typeof subject === 'string'\n}\n\nexport function isBoolean(subject: unknown): subject is boolean {\n return typeof subject === 'boolean'\n}\n\nexport function isObject(subject: unknown): subject is Record<string, unknown> {\n return Object.prototype.toString.call(subject) === '[object Object]'\n}\n\nexport function mathAbs(n: number): number {\n return Math.abs(n)\n}\n\nexport function mathSign(n: number): number {\n return Math.sign(n)\n}\n\nexport function deltaAbs(valueB: number, valueA: number): number {\n return mathAbs(valueB - valueA)\n}\n\nexport function factorAbs(valueB: number, valueA: number): number {\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}\n\nexport function roundToTwoDecimals(num: number): number {\n return Math.round(num * 100) / 100\n}\n\nexport function arrayKeys<Type>(array: Type[]): number[] {\n return objectKeys(array).map(Number)\n}\n\nexport function arrayLast<Type>(array: Type[]): Type {\n return array[arrayLastIndex(array)]\n}\n\nexport function arrayLastIndex<Type>(array: Type[]): number {\n return Math.max(0, array.length - 1)\n}\n\nexport function arrayIsLastIndex<Type>(array: Type[], index: number): boolean {\n return index === arrayLastIndex(array)\n}\n\nexport function arrayFromNumber(n: number, startAt: number = 0): number[] {\n return Array.from(Array(n), (_, i) => startAt + i)\n}\n\nexport function objectKeys<Type extends object>(object: Type): string[] {\n return Object.keys(object)\n}\n\nexport function objectsMergeDeep(\n objectA: Record<string, unknown>,\n objectB: Record<string, unknown>\n): Record<string, unknown> {\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\n mergedObjects[key] = areObjects\n ? objectsMergeDeep(valueA, valueB)\n : valueB\n })\n return mergedObjects\n }, {})\n}\n\nexport function isMouseEvent(\n evt: PointerEventType,\n ownerWindow: WindowType\n): evt is MouseEvent {\n return (\n typeof ownerWindow.MouseEvent !== 'undefined' &&\n evt instanceof ownerWindow.MouseEvent\n )\n}\n","import { isString } from './utils'\n\nexport type AlignmentOptionType =\n | 'start'\n | 'center'\n | 'end'\n | ((viewSize: number, snapSize: number, index: number) => number)\n\nexport type AlignmentType = {\n measure: (n: number, index: number) => number\n}\n\nexport function Alignment(\n align: AlignmentOptionType,\n viewSize: number\n): AlignmentType {\n const predefined = { start, center, end }\n\n function start(): number {\n return 0\n }\n\n function center(n: number): number {\n return end(n) / 2\n }\n\n function end(n: number): number {\n return viewSize - n\n }\n\n function measure(n: number, index: number): number {\n if (isString(align)) return predefined[align](n)\n return align(viewSize, n, index)\n }\n\n const self: AlignmentType = {\n measure\n }\n return self\n}\n","type EventNameType = keyof DocumentEventMap | keyof WindowEventMap\ntype EventHandlerType = (evt: any) => void\ntype EventOptionsType = boolean | AddEventListenerOptions | undefined\ntype EventRemoverType = () => void\n\nexport type EventStoreType = {\n add: (\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options?: EventOptionsType\n ) => EventStoreType\n clear: () => void\n}\n\nexport function EventStore(): EventStoreType {\n let listeners: EventRemoverType[] = []\n\n function add(\n node: EventTarget,\n type: EventNameType,\n handler: EventHandlerType,\n options: EventOptionsType = { passive: true }\n ): EventStoreType {\n let removeListener: EventRemoverType\n\n if ('addEventListener' in node) {\n node.addEventListener(type, handler, options)\n removeListener = () => node.removeEventListener(type, handler, options)\n } else {\n const legacyMediaQueryList = <MediaQueryList>node\n legacyMediaQueryList.addListener(handler)\n removeListener = () => legacyMediaQueryList.removeListener(handler)\n }\n\n listeners.push(removeListener)\n return self\n }\n\n function clear(): void {\n listeners = listeners.filter((remove) => remove())\n }\n\n const self: EventStoreType = {\n add,\n clear\n }\n return self\n}\n","import { EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { WindowType } from './utils'\n\nexport type AnimationsUpdateType = (engine: EngineType) => void\nexport type AnimationsRenderType = (engine: EngineType, alpha: number) => void\n\nexport type AnimationsType = {\n init: () => void\n destroy: () => void\n start: () => void\n stop: () => void\n update: () => void\n render: (alpha: number) => void\n}\n\nexport function Animations(\n ownerDocument: Document,\n ownerWindow: WindowType,\n update: () => void,\n render: (alpha: number) => void\n): AnimationsType {\n const documentVisibleHandler = EventStore()\n const fixedTimeStep = 1000 / 60\n\n let lastTimeStamp: number | null = null\n let accumulatedTime = 0\n let animationId = 0\n\n function init(): void {\n documentVisibleHandler.add(ownerDocument, 'visibilitychange', () => {\n if (ownerDocument.hidden) reset()\n })\n }\n\n function destroy(): void {\n stop()\n documentVisibleHandler.clear()\n }\n\n function animate(timeStamp: DOMHighResTimeStamp): void {\n if (!animationId) return\n if (!lastTimeStamp) {\n lastTimeStamp = timeStamp\n update()\n update()\n }\n\n const timeElapsed = timeStamp - lastTimeStamp\n lastTimeStamp = timeStamp\n accumulatedTime += timeElapsed\n\n while (accumulatedTime >= fixedTimeStep) {\n update()\n accumulatedTime -= fixedTimeStep\n }\n\n const alpha = accumulatedTime / fixedTimeStep\n render(alpha)\n\n if (animationId) {\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n }\n\n function start(): void {\n if (animationId) return\n animationId = ownerWindow.requestAnimationFrame(animate)\n }\n\n function stop(): void {\n ownerWindow.cancelAnimationFrame(animationId)\n lastTimeStamp = null\n accumulatedTime = 0\n animationId = 0\n }\n\n function reset(): void {\n lastTimeStamp = null\n accumulatedTime = 0\n }\n\n const self: AnimationsType = {\n init,\n destroy,\n start,\n stop,\n update,\n render\n }\n return self\n}\n","import { NodeRectType } from './NodeRects'\n\nexport type AxisOptionType = 'x' | 'y'\nexport type AxisDirectionOptionType = 'ltr' | 'rtl'\ntype AxisEdgeType = 'top' | 'right' | 'bottom' | 'left'\n\nexport type AxisType = {\n scroll: AxisOptionType\n cross: AxisOptionType\n startEdge: AxisEdgeType\n endEdge: AxisEdgeType\n measureSize: (nodeRect: NodeRectType) => number\n direction: (n: number) => number\n}\n\nexport function Axis(\n axis: AxisOptionType,\n contentDirection: AxisDirectionOptionType\n): AxisType {\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\n function measureSize(nodeRect: NodeRectType): number {\n const { height, width } = nodeRect\n return isVertical ? height : width\n }\n\n function getStartEdge(): AxisEdgeType {\n if (isVertical) return 'top'\n return isRightToLeft ? 'right' : 'left'\n }\n\n function getEndEdge(): AxisEdgeType {\n if (isVertical) return 'bottom'\n return isRightToLeft ? 'left' : 'right'\n }\n\n function direction(n: number): number {\n return n * sign\n }\n\n const self: AxisType = {\n scroll,\n cross,\n startEdge,\n endEdge,\n measureSize,\n direction\n }\n return self\n}\n","import { mathAbs } from './utils'\n\nexport type LimitType = {\n min: number\n max: number\n length: number\n constrain: (n: number) => number\n reachedAny: (n: number) => boolean\n reachedMax: (n: number) => boolean\n reachedMin: (n: number) => boolean\n removeOffset: (n: number) => number\n}\n\nexport function Limit(min: number = 0, max: number = 0): LimitType {\n const length = mathAbs(min - max)\n\n function reachedMin(n: number): boolean {\n return n < min\n }\n\n function reachedMax(n: number): boolean {\n return n > max\n }\n\n function reachedAny(n: number): boolean {\n return reachedMin(n) || reachedMax(n)\n }\n\n function constrain(n: number): number {\n if (!reachedAny(n)) return n\n return reachedMin(n) ? min : max\n }\n\n function removeOffset(n: number): number {\n if (!length) return n\n return n - length * Math.ceil((n - max) / length)\n }\n\n const self: LimitType = {\n length,\n max,\n min,\n constrain,\n reachedAny,\n reachedMax,\n reachedMin,\n removeOffset\n }\n return self\n}\n","import { Limit } from './Limit'\nimport { mathAbs } from './utils'\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nexport function Counter(\n max: number,\n start: number,\n loop: boolean\n): CounterType {\n const { constrain } = Limit(0, max)\n const loopEnd = max + 1\n let counter = withinLimit(start)\n\n function withinLimit(n: number): number {\n return !loop ? constrain(n) : mathAbs((loopEnd + n) % loopEnd)\n }\n\n function get(): number {\n return counter\n }\n\n function set(n: number): CounterType {\n counter = withinLimit(n)\n return self\n }\n\n function add(n: number): CounterType {\n return clone().set(get() + n)\n }\n\n function clone(): CounterType {\n return Counter(max, get(), loop)\n }\n\n const self: CounterType = {\n get,\n set,\n add,\n clone\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { DragTrackerType, PointerEventType } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { AxisType } from './Axis'\nimport { EventStore } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType } from './ScrollTarget'\nimport { ScrollToType } from './ScrollTo'\nimport { Vector1DType } from './Vector1d'\nimport { PercentOfViewType } from './PercentOfView'\nimport { Limit } from './Limit'\nimport {\n deltaAbs,\n factorAbs,\n isBoolean,\n isMouseEvent,\n mathAbs,\n mathSign,\n WindowType\n} from './utils'\n\ntype DragHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: PointerEventType\n) => boolean | void\n\nexport type DragHandlerOptionType = boolean | DragHandlerCallbackType\n\nexport type DragHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n pointerDown: () => boolean\n}\n\nexport function DragHandler(\n axis: AxisType,\n rootNode: HTMLElement,\n ownerDocument: Document,\n ownerWindow: WindowType,\n target: Vector1DType,\n dragTracker: DragTrackerType,\n location: Vector1DType,\n animation: AnimationsType,\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n index: CounterType,\n eventHandler: EventHandlerType,\n percentOfView: PercentOfViewType,\n dragFree: boolean,\n dragThreshold: number,\n skipSnaps: boolean,\n baseFriction: number,\n watchDrag: DragHandlerOptionType\n): DragHandlerType {\n const { cross: crossAxis, direction } = axis\n const focusNodes = ['INPUT', 'SELECT', 'TEXTAREA']\n const nonPassiveEvent = { passive: false }\n const initEvents = EventStore()\n const dragEvents = EventStore()\n const goToNextThreshold = Limit(50, 225).constrain(percentOfView.measure(20))\n const snapForceBoost = { mouse: 300, touch: 400 }\n const freeForceBoost = { mouse: 500, touch: 600 }\n const baseSpeed = dragFree ? 43 : 25\n\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\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchDrag) return\n\n function downIfAllowed(evt: PointerEventType): void {\n if (isBoolean(watchDrag) || watchDrag(emblaApi, evt)) down(evt)\n }\n\n const node = rootNode\n initEvents\n .add(node, 'dragstart', (evt) => evt.preventDefault(), nonPassiveEvent)\n .add(node, 'touchmove', () => undefined, nonPassiveEvent)\n .add(node, 'touchend', () => undefined)\n .add(node, 'touchstart', downIfAllowed)\n .add(node, 'mousedown', downIfAllowed)\n .add(node, 'touchcancel', up)\n .add(node, 'contextmenu', up)\n .add(node, 'click', click, true)\n }\n\n function destroy(): void {\n initEvents.clear()\n dragEvents.clear()\n }\n\n function addDragEvents(): void {\n const node = isMouse ? ownerDocument : rootNode\n dragEvents\n .add(node, 'touchmove', move, nonPassiveEvent)\n .add(node, 'touchend', up)\n .add(node, 'mousemove', move, nonPassiveEvent)\n .add(node, 'mouseup', up)\n }\n\n function isFocusNode(node: Element): boolean {\n const nodeName = node.nodeName || ''\n return focusNodes.includes(nodeName)\n }\n\n function forceBoost(): number {\n const boost = dragFree ? freeForceBoost : snapForceBoost\n const type = isMouse ? 'mouse' : 'touch'\n return boost[type]\n }\n\n function allowedForce(force: number, targetChanged: boolean): number {\n const next = index.add(mathSign(force) * -1)\n const baseForce = scrollTarget.byDistance(force, !dragFree).distance\n\n if (dragFree || mathAbs(force) < goToNextThreshold) return baseForce\n if (skipSnaps && targetChanged) return baseForce * 0.5\n\n return scrollTarget.byIndex(next.get(), 0).distance\n }\n\n function down(evt: PointerEventType): void {\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\n if (isMouseEvt && evt.button !== 0) return\n if (isFocusNode(evt.target as Element)) return\n\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\n function move(evt: PointerEventType): void {\n const isTouchEvt = !isMouseEvent(evt, ownerWindow)\n if (isTouchEvt && evt.touches.length >= 2) return up(evt)\n\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\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\n scrollBody.useFriction(0.3).useDuration(0.75)\n animation.start()\n target.add(direction(diff))\n evt.preventDefault()\n }\n\n function up(evt: PointerEventType): void {\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\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\n function click(evt: MouseEvent): void {\n if (preventClick) {\n evt.stopPropagation()\n evt.preventDefault()\n preventClick = false\n }\n }\n\n function pointerDown(): boolean {\n return pointerIsDown\n }\n\n const self: DragHandlerType = {\n init,\n destroy,\n pointerDown\n }\n return self\n}\n","import { AxisOptionType, AxisType } from './Axis'\nimport { isMouseEvent, mathAbs, WindowType } from './utils'\n\ntype PointerCoordType = keyof Touch | keyof MouseEvent\nexport type PointerEventType = TouchEvent | MouseEvent\n\nexport type DragTrackerType = {\n pointerDown: (evt: PointerEventType) => number\n pointerMove: (evt: PointerEventType) => number\n pointerUp: (evt: PointerEventType) => number\n readPoint: (evt: PointerEventType, evtAxis?: AxisOptionType) => number\n}\n\nexport function DragTracker(\n axis: AxisType,\n ownerWindow: WindowType\n): DragTrackerType {\n const logInterval = 170\n\n let startEvent: PointerEventType\n let lastEvent: PointerEventType\n\n function readTime(evt: PointerEventType): number {\n return evt.timeStamp\n }\n\n function readPoint(evt: PointerEventType, evtAxis?: AxisOptionType): number {\n const property = evtAxis || axis.scroll\n const coord: PointerCoordType = `client${property === 'x' ? 'X' : 'Y'}`\n return (isMouseEvent(evt, ownerWindow) ? evt : evt.touches[0])[coord]\n }\n\n function pointerDown(evt: PointerEventType): number {\n startEvent = evt\n lastEvent = evt\n return readPoint(evt)\n }\n\n function pointerMove(evt: PointerEventType): number {\n const diff = readPoint(evt) - readPoint(lastEvent)\n const expired = readTime(evt) - readTime(startEvent) > logInterval\n\n lastEvent = evt\n if (expired) startEvent = evt\n return diff\n }\n\n function pointerUp(evt: PointerEventType): number {\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\n return isFlick ? force : 0\n }\n\n const self: DragTrackerType = {\n pointerDown,\n pointerMove,\n pointerUp,\n readPoint\n }\n return self\n}\n","export type NodeRectType = {\n top: number\n right: number\n bottom: number\n left: number\n width: number\n height: number\n}\n\nexport type NodeRectsType = {\n measure: (node: HTMLElement) => NodeRectType\n}\n\nexport function NodeRects(): NodeRectsType {\n function measure(node: HTMLElement): NodeRectType {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = node\n const offset: NodeRectType = {\n top: offsetTop,\n right: offsetLeft + offsetWidth,\n bottom: offsetTop + offsetHeight,\n left: offsetLeft,\n width: offsetWidth,\n height: offsetHeight\n }\n\n return offset\n }\n\n const self: NodeRectsType = {\n measure\n }\n return self\n}\n","export type PercentOfViewType = {\n measure: (n: number) => number\n}\n\nexport function PercentOfView(viewSize: number): PercentOfViewType {\n function measure(n: number): number {\n return viewSize * (n / 100)\n }\n\n const self: PercentOfViewType = {\n measure\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { NodeRectsType } from './NodeRects'\nimport { isBoolean, mathAbs, WindowType } from './utils'\n\ntype ResizeHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n entries: ResizeObserverEntry[]\n) => boolean | void\n\nexport type ResizeHandlerOptionType = boolean | ResizeHandlerCallbackType\n\nexport type ResizeHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function ResizeHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n ownerWindow: WindowType,\n slides: HTMLElement[],\n axis: AxisType,\n watchResize: ResizeHandlerOptionType,\n nodeRects: NodeRectsType\n): ResizeHandlerType {\n const observeNodes = [container].concat(slides)\n let resizeObserver: ResizeObserver\n let containerSize: number\n let slideSizes: number[] = []\n let destroyed = false\n\n function readSize(node: HTMLElement): number {\n return axis.measureSize(nodeRects.measure(node))\n }\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchResize) return\n\n containerSize = readSize(container)\n slideSizes = slides.map(readSize)\n\n function defaultCallback(entries: ResizeObserverEntry[]): void {\n for (const entry of entries) {\n if (destroyed) return\n\n const isContainer = entry.target === container\n const slideIndex = slides.indexOf(<HTMLElement>entry.target)\n const lastSize = isContainer ? containerSize : slideSizes[slideIndex]\n const newSize = readSize(isContainer ? container : slides[slideIndex])\n const diffSize = mathAbs(newSize - lastSize)\n\n if (diffSize >= 0.5) {\n emblaApi.reInit()\n eventHandler.emit('resize')\n\n break\n }\n }\n }\n\n resizeObserver = new ResizeObserver((entries) => {\n if (isBoolean(watchResize) || watchResize(emblaApi, entries)) {\n defaultCallback(entries)\n }\n })\n\n ownerWindow.requestAnimationFrame(() => {\n observeNodes.forEach((node) => resizeObserver.observe(node))\n })\n }\n\n function destroy(): void {\n destroyed = true\n if (resizeObserver) resizeObserver.disconnect()\n }\n\n const self: ResizeHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { mathSign, mathAbs } from './utils'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollBodyType = {\n direction: () => number\n duration: () => number\n velocity: () => number\n seek: () => ScrollBodyType\n settled: () => boolean\n useBaseFriction: () => ScrollBodyType\n useBaseDuration: () => ScrollBodyType\n useFriction: (n: number) => ScrollBodyType\n useDuration: (n: number) => ScrollBodyType\n}\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n previousLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n): ScrollBodyType {\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\n function seek(): ScrollBodyType {\n const displacement = target.get() - location.get()\n const isInstant = !scrollDuration\n let scrollDistance = 0\n\n if (isInstant) {\n scrollVelocity = 0\n previousLocation.set(target)\n location.set(target)\n\n scrollDistance = displacement\n } else {\n previousLocation.set(location)\n\n scrollVelocity += displacement / scrollDuration\n scrollVelocity *= scrollFriction\n rawLocation += scrollVelocity\n location.add(scrollVelocity)\n\n scrollDistance = rawLocation - rawLocationPrevious\n }\n\n scrollDirection = mathSign(scrollDistance)\n rawLocationPrevious = rawLocation\n return self\n }\n\n function settled(): boolean {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n }\n\n function duration(): number {\n return scrollDuration\n }\n\n function direction(): number {\n return scrollDirection\n }\n\n function velocity(): number {\n return scrollVelocity\n }\n\n function useBaseDuration(): ScrollBodyType {\n return useDuration(baseDuration)\n }\n\n function useBaseFriction(): ScrollBodyType {\n return useFriction(baseFriction)\n }\n\n function useDuration(n: number): ScrollBodyType {\n scrollDuration = n\n return self\n }\n\n function useFriction(n: number): ScrollBodyType {\n scrollFriction = n\n return self\n }\n\n const self: ScrollBodyType = {\n direction,\n duration,\n velocity,\n seek,\n settled,\n useBaseFriction,\n useBaseDuration,\n useFriction,\n useDuration\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { ScrollBodyType } from './ScrollBody'\nimport { Vector1DType } from './Vector1d'\nimport { mathAbs } from './utils'\nimport { PercentOfViewType } from './PercentOfView'\n\nexport type ScrollBoundsType = {\n shouldConstrain: () => boolean\n constrain: (pointerDown: boolean) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function ScrollBounds(\n limit: LimitType,\n location: Vector1DType,\n target: Vector1DType,\n scrollBody: ScrollBodyType,\n percentOfView: PercentOfViewType\n): ScrollBoundsType {\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\n function shouldConstrain(): boolean {\n if (disabled) return false\n if (!limit.reachedAny(target.get())) return false\n if (!limit.reachedAny(location.get())) return false\n return true\n }\n\n function constrain(pointerDown: boolean): void {\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\n target.subtract(diffToTarget * friction)\n\n if (!pointerDown && mathAbs(diffToTarget) < pullBackThreshold) {\n target.set(limit.constrain(target.get()))\n scrollBody.useDuration(25).useBaseFriction()\n }\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n const self: ScrollBoundsType = {\n shouldConstrain,\n constrain,\n toggleActive\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayIsLastIndex, arrayLast, deltaAbs } from './utils'\n\nexport type ScrollContainOptionType = false | 'trimSnaps' | 'keepSnaps'\n\nexport type ScrollContainType = {\n snapsContained: number[]\n scrollContainLimit: LimitType\n}\n\nexport function ScrollContain(\n viewSize: number,\n contentSize: number,\n snapsAligned: number[],\n containScroll: ScrollContainOptionType,\n pixelTolerance: number\n): ScrollContainType {\n const scrollBounds = Limit(-contentSize + viewSize, 0)\n const snapsBounded = measureBounded()\n const scrollContainLimit = findScrollContainLimit()\n const snapsContained = measureContained()\n\n function usePixelTolerance(bound: number, snap: number): boolean {\n return deltaAbs(bound, snap) <= 1\n }\n\n function findScrollContainLimit(): LimitType {\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\n function measureBounded(): number[] {\n return snapsAligned\n .map((snapAligned, index) => {\n const { min, max } = 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 })\n .map((scrollBound) => parseFloat(scrollBound.toFixed(3)))\n }\n\n function measureContained(): number[] {\n if (contentSize <= viewSize + pixelTolerance) return [scrollBounds.max]\n if (containScroll === 'keepSnaps') return snapsBounded\n const { min, max } = scrollContainLimit\n return snapsBounded.slice(min, max)\n }\n\n const self: ScrollContainType = {\n snapsContained,\n scrollContainLimit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { arrayLast } from './utils'\n\nexport type ScrollLimitType = {\n limit: LimitType\n}\n\nexport function ScrollLimit(\n contentSize: number,\n scrollSnaps: number[],\n loop: boolean\n): ScrollLimitType {\n const max = scrollSnaps[0]\n const min = loop ? max - contentSize : arrayLast(scrollSnaps)\n const limit = Limit(min, max)\n\n const self: ScrollLimitType = {\n limit\n }\n return self\n}\n","import { Limit, LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollLooperType = {\n loop: (direction: number) => void\n}\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n location: Vector1DType,\n vectors: Vector1DType[]\n): ScrollLooperType {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const { reachedMin, reachedMax } = Limit(min, max)\n\n function shouldLoop(direction: number): boolean {\n if (direction === 1) return reachedMax(location.get())\n if (direction === -1) return reachedMin(location.get())\n return false\n }\n\n function loop(direction: number): void {\n if (!shouldLoop(direction)) return\n\n const loopDistance = contentSize * (direction * -1)\n vectors.forEach((v) => v.add(loopDistance))\n }\n\n const self: ScrollLooperType = {\n loop\n }\n return self\n}\n","import { LimitType } from './Limit'\n\nexport type ScrollProgressType = {\n get: (n: number) => number\n}\n\nexport function ScrollProgress(limit: LimitType): ScrollProgressType {\n const { max, length } = limit\n\n function get(n: number): number {\n const currentLocation = n - max\n return length ? currentLocation / -length : 0\n }\n\n const self: ScrollProgressType = {\n get\n }\n return self\n}\n","import { AlignmentType } from './Alignment'\nimport { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport { arrayLast, mathAbs } from './utils'\n\nexport type ScrollSnapsType = {\n snaps: number[]\n snapsAligned: number[]\n}\n\nexport function ScrollSnaps(\n axis: AxisType,\n alignment: AlignmentType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slidesToScroll: SlidesToScrollType\n): ScrollSnapsType {\n const { startEdge, endEdge } = axis\n const { groupSlides } = slidesToScroll\n const alignments = measureSizes().map(alignment.measure)\n const snaps = measureUnaligned()\n const snapsAligned = measureAligned()\n\n function measureSizes(): number[] {\n return groupSlides(slideRects)\n .map((rects) => arrayLast(rects)[endEdge] - rects[0][startEdge])\n .map(mathAbs)\n }\n\n function measureUnaligned(): number[] {\n return slideRects\n .map((rect) => containerRect[startEdge] - rect[startEdge])\n .map((snap) => -mathAbs(snap))\n }\n\n function measureAligned(): number[] {\n return groupSlides(snaps)\n .map((g) => g[0])\n .map((snap, index) => snap + alignments[index])\n }\n\n const self: ScrollSnapsType = {\n snaps,\n snapsAligned\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { SlidesToScrollType } from './SlidesToScroll'\nimport {\n arrayFromNumber,\n arrayIsLastIndex,\n arrayLast,\n arrayLastIndex\n} from './utils'\n\nexport type SlideRegistryType = {\n slideRegistry: number[][]\n}\n\nexport function SlideRegistry(\n containSnaps: boolean,\n containScroll: ScrollContainOptionType,\n scrollSnaps: number[],\n scrollContainLimit: LimitType,\n slidesToScroll: SlidesToScrollType,\n slideIndexes: number[]\n): SlideRegistryType {\n const { groupSlides } = slidesToScroll\n const { min, max } = scrollContainLimit\n const slideRegistry = createSlideRegistry()\n\n function createSlideRegistry(): number[][] {\n const groupedSlideIndexes = groupSlides(slideIndexes)\n const doNotContain = !containSnaps || containScroll === 'keepSnaps'\n\n if (scrollSnaps.length === 1) return [slideIndexes]\n if (doNotContain) return groupedSlideIndexes\n\n return groupedSlideIndexes.slice(min, max).map((group, index, groups) => {\n const isFirst = !index\n const isLast = arrayIsLastIndex(groups, index)\n\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\n const self: SlideRegistryType = {\n slideRegistry\n }\n return self\n}\n","import { LimitType } from './Limit'\nimport { Vector1DType } from './Vector1d'\nimport { arrayLast, mathAbs, mathSign } from './utils'\n\nexport type TargetType = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => TargetType\n byDistance: (force: number, snap: boolean) => TargetType\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: LimitType,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances.concat().sort((a, b) => mathAbs(a) - mathAbs(b))[0]\n }\n\n function findTargetSnap(target: number): TargetType {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((snap, index) => ({ diff: shortcut(snap - distance, 0), index }))\n .sort((d1, d2) => mathAbs(d1.diff) - mathAbs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function shortcut(target: number, direction: number): number {\n const targets = [target, target + contentSize, target - contentSize]\n\n if (!loop) return target\n if (!direction) return minDistance(targets)\n\n const matchingTargets = targets.filter((t) => mathSign(t) === direction)\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function byIndex(index: number, direction: number): TargetType {\n const diffToSnap = scrollSnaps[index] - targetVector.get()\n const distance = shortcut(diffToSnap, direction)\n return { index, distance }\n }\n\n function byDistance(distance: number, snap: boolean): TargetType {\n const target = targetVector.get() + distance\n const { index, distance: targetSnapDistance } = findTargetSnap(target)\n const reachedBound = !loop && reachedAny(target)\n\n if (!snap || reachedBound) return { index, distance }\n\n const diffToSnap = scrollSnaps[index] - targetSnapDistance\n const snapDistance = distance + shortcut(diffToSnap, 0)\n\n return { index, distance: snapDistance }\n }\n\n const self: ScrollTargetType = {\n byDistance,\n byIndex,\n shortcut\n }\n return self\n}\n","import { AnimationsType } from './Animations'\nimport { CounterType } from './Counter'\nimport { EventHandlerType } from './EventHandler'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollTargetType, TargetType } from './ScrollTarget'\nimport { Vector1DType } from './Vector1d'\n\nexport type ScrollToType = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\nexport function ScrollTo(\n animation: AnimationsType,\n indexCurrent: CounterType,\n indexPrevious: CounterType,\n scrollBody: ScrollBodyType,\n scrollTarget: ScrollTargetType,\n targetVector: Vector1DType,\n eventHandler: EventHandlerType\n): ScrollToType {\n function scrollTo(target: TargetType): void {\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetVector.add(distanceDiff)\n\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\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n eventHandler.emit('select')\n }\n }\n\n function distance(n: number, snap: boolean): void {\n const target = scrollTarget.byDistance(n, snap)\n scrollTo(target)\n }\n\n function index(n: number, direction: number): void {\n const targetIndex = indexCurrent.clone().set(n)\n const target = scrollTarget.byIndex(targetIndex.get(), direction)\n scrollTo(target)\n }\n\n const self: ScrollToType = {\n distance,\n index\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStoreType } from './EventStore'\nimport { ScrollBodyType } from './ScrollBody'\nimport { ScrollToType } from './ScrollTo'\nimport { SlideRegistryType } from './SlideRegistry'\nimport { isBoolean, isNumber } from './utils'\n\ntype FocusHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n evt: FocusEvent\n) => boolean | void\n\nexport type FocusHandlerOptionType = boolean | FocusHandlerCallbackType\n\nexport type SlideFocusType = {\n init: (emblaApi: EmblaCarouselType) => void\n}\n\nexport function SlideFocus(\n root: HTMLElement,\n slides: HTMLElement[],\n slideRegistry: SlideRegistryType['slideRegistry'],\n scrollTo: ScrollToType,\n scrollBody: ScrollBodyType,\n eventStore: EventStoreType,\n eventHandler: EventHandlerType,\n watchFocus: FocusHandlerOptionType\n): SlideFocusType {\n const focusListenerOptions = { passive: true, capture: true }\n let lastTabPressTime = 0\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchFocus) return\n\n function defaultCallback(index: number): void {\n const nowTime = new Date().getTime()\n const diffTime = nowTime - lastTabPressTime\n\n if (diffTime > 10) return\n\n eventHandler.emit('slideFocusStart')\n root.scrollLeft = 0\n\n const group = slideRegistry.findIndex((group) => group.includes(index))\n\n if (!isNumber(group)) return\n\n scrollBody.useDuration(0)\n scrollTo.index(group, 0)\n\n eventHandler.emit('slideFocus')\n }\n\n eventStore.add(document, 'keydown', registerTabPress, false)\n\n slides.forEach((slide, slideIndex) => {\n eventStore.add(\n slide,\n 'focus',\n (evt: FocusEvent) => {\n if (isBoolean(watchFocus) || watchFocus(emblaApi, evt)) {\n defaultCallback(slideIndex)\n }\n },\n focusListenerOptions\n )\n })\n }\n\n function registerTabPress(event: KeyboardEvent): void {\n if (event.code === 'Tab') lastTabPressTime = new Date().getTime()\n }\n\n const self: SlideFocusType = {\n init\n }\n return self\n}\n","import { isNumber } from './utils'\n\nexport type Vector1DType = {\n get: () => number\n set: (n: Vector1DType | number) => void\n add: (n: Vector1DType | number) => void\n subtract: (n: Vector1DType | number) => void\n}\n\nexport function Vector1D(initialValue: number): Vector1DType {\n let value = initialValue\n\n function get(): number {\n return value\n }\n\n function set(n: Vector1DType | number): void {\n value = normalizeInput(n)\n }\n\n function add(n: Vector1DType | number): void {\n value += normalizeInput(n)\n }\n\n function subtract(n: Vector1DType | number): void {\n value -= normalizeInput(n)\n }\n\n function normalizeInput(n: Vector1DType | number): number {\n return isNumber(n) ? n : n.get()\n }\n\n const self: Vector1DType = {\n get,\n set,\n add,\n subtract\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { roundToTwoDecimals } from './utils'\n\nexport type TranslateType = {\n clear: () => void\n to: (target: number) => void\n toggleActive: (active: boolean) => void\n}\n\nexport function Translate(\n axis: AxisType,\n container: HTMLElement\n): TranslateType {\n const translate = axis.scroll === 'x' ? x : y\n const containerStyle = container.style\n let previousTarget: number | null = null\n let disabled = false\n\n function x(n: number): string {\n return `translate3d(${n}px,0px,0px)`\n }\n\n function y(n: number): string {\n return `translate3d(0px,${n}px,0px)`\n }\n\n function to(target: number): void {\n if (disabled) return\n\n const newTarget = roundToTwoDecimals(axis.direction(target))\n if (newTarget === previousTarget) return\n\n containerStyle.transform = translate(newTarget)\n previousTarget = newTarget\n }\n\n function toggleActive(active: boolean): void {\n disabled = !active\n }\n\n function clear(): void {\n if (disabled) return\n containerStyle.transform = ''\n if (!container.getAttribute('style')) container.removeAttribute('style')\n }\n\n const self: TranslateType = {\n clear,\n to,\n toggleActive\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { arrayKeys } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\nimport { Translate, TranslateType } from './Translate'\n\ntype SlideBoundType = {\n start: number\n end: number\n}\n\ntype LoopPointType = {\n loopPoint: number\n index: number\n translate: TranslateType\n slideLocation: Vector1DType\n target: () => number\n}\n\nexport type SlideLooperType = {\n canLoop: () => boolean\n clear: () => void\n loop: () => void\n loopPoints: LoopPointType[]\n}\n\nexport function SlideLooper(\n axis: AxisType,\n viewSize: number,\n contentSize: number,\n slideSizes: number[],\n slideSizesWithGaps: number[],\n snaps: number[],\n scrollSnaps: number[],\n location: Vector1DType,\n slides: HTMLElement[]\n): SlideLooperType {\n const roundingSafety = 0.5\n const ascItems = arrayKeys(slideSizesWithGaps)\n const descItems = arrayKeys(slideSizesWithGaps).reverse()\n const loopPoints = startPoints().concat(endPoints())\n\n function removeSlideSizes(indexes: number[], from: number): number {\n return indexes.reduce((a: number, i) => {\n return a - slideSizesWithGaps[i]\n }, from)\n }\n\n function slidesInGap(indexes: number[], gap: number): number[] {\n return indexes.reduce((a: number[], i) => {\n const remainingGap = removeSlideSizes(a, gap)\n return remainingGap > 0 ? a.concat([i]) : a\n }, [])\n }\n\n function findSlideBounds(offset: number): SlideBoundType[] {\n return snaps.map((snap, index) => ({\n start: snap - slideSizes[index] + roundingSafety + offset,\n end: snap + viewSize - roundingSafety + offset\n }))\n }\n\n function findLoopPoints(\n indexes: number[],\n offset: number,\n isEndEdge: boolean\n ): LoopPointType[] {\n const slideBounds = findSlideBounds(offset)\n\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\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\n function startPoints(): LoopPointType[] {\n const gap = scrollSnaps[0]\n const indexes = slidesInGap(descItems, gap)\n return findLoopPoints(indexes, contentSize, false)\n }\n\n function endPoints(): LoopPointType[] {\n const gap = viewSize - scrollSnaps[0] - 1\n const indexes = slidesInGap(ascItems, gap)\n return findLoopPoints(indexes, -contentSize, true)\n }\n\n function canLoop(): boolean {\n return loopPoints.every(({ index }) => {\n const otherIndexes = ascItems.filter((i) => i !== index)\n return removeSlideSizes(otherIndexes, viewSize) <= 0.1\n })\n }\n\n function loop(): void {\n loopPoints.forEach((loopPoint) => {\n const { target, translate, slideLocation } = loopPoint\n const shiftLocation = target()\n if (shiftLocation === slideLocation.get()) return\n translate.to(shiftLocation)\n slideLocation.set(shiftLocation)\n })\n }\n\n function clear(): void {\n loopPoints.forEach((loopPoint) => loopPoint.translate.clear())\n }\n\n const self: SlideLooperType = {\n canLoop,\n clear,\n loop,\n loopPoints\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { EventHandlerType } from './EventHandler'\nimport { isBoolean } from './utils'\n\ntype SlidesHandlerCallbackType = (\n emblaApi: EmblaCarouselType,\n mutations: MutationRecord[]\n) => boolean | void\n\nexport type SlidesHandlerOptionType = boolean | SlidesHandlerCallbackType\n\nexport type SlidesHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n destroy: () => void\n}\n\nexport function SlidesHandler(\n container: HTMLElement,\n eventHandler: EventHandlerType,\n watchSlides: SlidesHandlerOptionType\n): SlidesHandlerType {\n let mutationObserver: MutationObserver\n let destroyed = false\n\n function init(emblaApi: EmblaCarouselType): void {\n if (!watchSlides) return\n\n function defaultCallback(mutations: MutationRecord[]): void {\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n emblaApi.reInit()\n eventHandler.emit('slidesChanged')\n break\n }\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\n mutationObserver.observe(container, { childList: true })\n }\n\n function destroy(): void {\n if (mutationObserver) mutationObserver.disconnect()\n destroyed = true\n }\n\n const self: SlidesHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { EventHandlerType } from './EventHandler'\nimport { objectKeys } from './utils'\n\ntype IntersectionEntryMapType = {\n [key: number]: IntersectionObserverEntry\n}\n\nexport type SlidesInViewOptionsType = IntersectionObserverInit['threshold']\n\nexport type SlidesInViewType = {\n init: () => void\n destroy: () => void\n get: (inView?: boolean) => number[]\n}\n\nexport function SlidesInView(\n container: HTMLElement,\n slides: HTMLElement[],\n eventHandler: EventHandlerType,\n threshold: SlidesInViewOptionsType\n): SlidesInViewType {\n const intersectionEntryMap: IntersectionEntryMapType = {}\n let inViewCache: number[] | null = null\n let notInViewCache: number[] | null = null\n let intersectionObserver: IntersectionObserver\n let destroyed = false\n\n function init(): void {\n intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (destroyed) return\n\n entries.forEach((entry) => {\n const index = slides.indexOf(<HTMLElement>entry.target)\n intersectionEntryMap[index] = entry\n })\n\n inViewCache = null\n notInViewCache = null\n eventHandler.emit('slidesInView')\n },\n {\n root: container.parentElement,\n threshold\n }\n )\n\n slides.forEach((slide) => intersectionObserver.observe(slide))\n }\n\n function destroy(): void {\n if (intersectionObserver) intersectionObserver.disconnect()\n destroyed = true\n }\n\n function createInViewList(inView: boolean): number[] {\n return objectKeys(intersectionEntryMap).reduce(\n (list: number[], slideIndex) => {\n const index = parseInt(slideIndex)\n const { isIntersecting } = intersectionEntryMap[index]\n const inViewMatch = inView && isIntersecting\n const notInViewMatch = !inView && !isIntersecting\n\n if (inViewMatch || notInViewMatch) list.push(index)\n return list\n },\n []\n )\n }\n\n function get(inView: boolean = true): number[] {\n if (inView && inViewCache) return inViewCache\n if (!inView && notInViewCache) return notInViewCache\n\n const slideIndexes = createInViewList(inView)\n\n if (inView) inViewCache = slideIndexes\n if (!inView) notInViewCache = slideIndexes\n\n return slideIndexes\n }\n\n const self: SlidesInViewType = {\n init,\n destroy,\n get\n }\n\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport { arrayIsLastIndex, arrayLast, mathAbs, WindowType } from './utils'\n\nexport type SlideSizesType = {\n slideSizes: number[]\n slideSizesWithGaps: number[]\n startGap: number\n endGap: number\n}\n\nexport function SlideSizes(\n axis: AxisType,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n slides: HTMLElement[],\n readEdgeGap: boolean,\n ownerWindow: WindowType\n): SlideSizesType {\n const { measureSize, startEdge, endEdge } = 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\n function measureStartGap(): number {\n if (!withEdgeGap) return 0\n const slideRect = slideRects[0]\n return mathAbs(containerRect[startEdge] - slideRect[startEdge])\n }\n\n function measureEndGap(): number {\n if (!withEdgeGap) return 0\n const style = ownerWindow.getComputedStyle(arrayLast(slides))\n return parseFloat(style.getPropertyValue(`margin-${endEdge}`))\n }\n\n function measureWithGaps(): number[] {\n return slideRects\n .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 })\n .map(mathAbs)\n }\n\n const self: SlideSizesType = {\n slideSizes,\n slideSizesWithGaps,\n startGap,\n endGap\n }\n return self\n}\n","import { AxisType } from './Axis'\nimport { NodeRectType } from './NodeRects'\nimport {\n arrayKeys,\n arrayLast,\n arrayLastIndex,\n isNumber,\n mathAbs\n} from './utils'\n\nexport type SlidesToScrollOptionType = 'auto' | number\n\nexport type SlidesToScrollType = {\n groupSlides: <Type>(array: Type[]) => Type[][]\n}\n\nexport function SlidesToScroll(\n axis: AxisType,\n viewSize: number,\n slidesToScroll: SlidesToScrollOptionType,\n loop: boolean,\n containerRect: NodeRectType,\n slideRects: NodeRectType[],\n startGap: number,\n endGap: number,\n pixelTolerance: number\n): SlidesToScrollType {\n const { startEdge, endEdge, direction } = axis\n const groupByNumber = isNumber(slidesToScroll)\n\n function byNumber<Type>(array: Type[], groupSize: number): Type[][] {\n return arrayKeys(array)\n .filter((i) => i % groupSize === 0)\n .map((i) => array.slice(i, i + groupSize))\n }\n\n function bySize<Type>(array: Type[]): Type[][] {\n if (!array.length) return []\n\n return arrayKeys(array)\n .reduce((groups: number[], rectB, index) => {\n const rectA = arrayLast(groups) || 0\n const isFirst = rectA === 0\n const isLast = rectB === arrayLastIndex(array)\n\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\n if (index && chunkSize > viewSize + pixelTolerance) groups.push(rectB)\n if (isLast) groups.push(array.length)\n return groups\n }, [])\n .map((currentSize, index, groups) => {\n const previousSize = Math.max(groups[index - 1] || 0)\n return array.slice(previousSize, currentSize)\n })\n }\n\n function groupSlides<Type>(array: Type[]): Type[][] {\n return groupByNumber ? byNumber(array, slidesToScroll) : bySize(array)\n }\n\n const self: SlidesToScrollType = {\n groupSlides\n }\n return self\n}\n","import { Alignment } from './Alignment'\nimport {\n Animations,\n AnimationsType,\n AnimationsUpdateType,\n AnimationsRenderType\n} from './Animations'\nimport { Axis, AxisType } from './Axis'\nimport { Counter, CounterType } from './Counter'\nimport { DragHandler, DragHandlerType } from './DragHandler'\nimport { DragTracker } from './DragTracker'\nimport { EventHandlerType } from './EventHandler'\nimport { EventStore, EventStoreType } from './EventStore'\nimport { LimitType } from './Limit'\nimport { NodeRectType, NodeRects } from './NodeRects'\nimport { OptionsType } from './Options'\nimport { PercentOfView, PercentOfViewType } from './PercentOfView'\nimport { ResizeHandler, ResizeHandlerType } from './ResizeHandler'\nimport { ScrollBody, ScrollBodyType } from './ScrollBody'\nimport { ScrollBounds, ScrollBoundsType } from './ScrollBounds'\nimport { ScrollContain } from './ScrollContain'\nimport { ScrollLimit } from './ScrollLimit'\nimport { ScrollLooper, ScrollLooperType } from './ScrollLooper'\nimport { ScrollProgress, ScrollProgressType } from './ScrollProgress'\nimport { ScrollSnaps } from './ScrollSnaps'\nimport { SlideRegistry, SlideRegistryType } from './SlideRegistry'\nimport { ScrollTarget, ScrollTargetType } from './ScrollTarget'\nimport { ScrollTo, ScrollToType } from './ScrollTo'\nimport { SlideFocus, SlideFocusType } from './SlideFocus'\nimport { SlideLooper, SlideLooperType } from './SlideLooper'\nimport { SlidesHandler, SlidesHandlerType } from './SlidesHandler'\nimport { SlidesInView, SlidesInViewType } from './SlidesInView'\nimport { SlideSizes } from './SlideSizes'\nimport { SlidesToScroll, SlidesToScrollType } from './SlidesToScroll'\nimport { Translate, TranslateType } from './Translate'\nimport { arrayKeys, arrayLast, arrayLastIndex, WindowType } from './utils'\nimport { Vector1D, Vector1DType } from './Vector1d'\n\nexport type EngineType = {\n ownerDocument: Document\n ownerWindow: WindowType\n eventHandler: EventHandlerType\n axis: AxisType\n animation: AnimationsType\n scrollBounds: ScrollBoundsType\n scrollLooper: ScrollLooperType\n scrollProgress: ScrollProgressType\n index: CounterType\n indexPrevious: CounterType\n limit: LimitType\n location: Vector1DType\n offsetLocation: Vector1DType\n previousLocation: Vector1DType\n options: OptionsType\n percentOfView: PercentOfViewType\n scrollBody: ScrollBodyType\n dragHandler: DragHandlerType\n eventStore: EventStoreType\n slideLooper: SlideLooperType\n slidesInView: SlidesInViewType\n slidesToScroll: SlidesToScrollType\n target: Vector1DType\n translate: TranslateType\n resizeHandler: ResizeHandlerType\n slidesHandler: SlidesHandlerType\n scrollTo: ScrollToType\n scrollTarget: ScrollTargetType\n scrollSnapList: number[]\n scrollSnaps: number[]\n slideIndexes: number[]\n slideFocus: SlideFocusType\n slideRegistry: SlideRegistryType['slideRegistry']\n containerRect: NodeRectType\n slideRects: NodeRectType[]\n}\n\nexport function Engine(\n root: HTMLElement,\n container: HTMLElement,\n slides: HTMLElement[],\n ownerDocument: Document,\n ownerWindow: WindowType,\n options: OptionsType,\n eventHandler: EventHandlerType\n): EngineType {\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\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 { slideSizes, slideSizesWithGaps, startGap, endGap } = SlideSizes(\n axis,\n containerRect,\n slideRects,\n slides,\n readEdgeGap,\n ownerWindow\n )\n const slidesToScroll = SlidesToScroll(\n axis,\n viewSize,\n groupSlides,\n loop,\n containerRect,\n slideRects,\n startGap,\n endGap,\n pixelTolerance\n )\n const { snaps, snapsAligned } = ScrollSnaps(\n axis,\n alignment,\n containerRect,\n slideRects,\n slidesToScroll\n )\n const contentSize = -arrayLast(snaps) + arrayLast(slideSizesWithGaps)\n const { snapsContained, scrollContainLimit } = ScrollContain(\n viewSize,\n contentSize,\n snapsAligned,\n containScroll,\n pixelTolerance\n )\n const scrollSnaps = containSnaps ? snapsContained : snapsAligned\n const { limit } = ScrollLimit(contentSize, scrollSnaps, loop)\n\n // Indexes\n const index = Counter(arrayLastIndex(scrollSnaps), startIndex, loop)\n const indexPrevious = index.clone()\n const slideIndexes = arrayKeys(slides)\n\n // Animation\n const update: AnimationsUpdateType = ({\n dragHandler,\n scrollBody,\n scrollBounds,\n options: { loop }\n }) => {\n if (!loop) scrollBounds.constrain(dragHandler.pointerDown())\n scrollBody.seek()\n }\n\n const render: AnimationsRenderType = (\n {\n scrollBody,\n translate,\n location,\n offsetLocation,\n previousLocation,\n scrollLooper,\n slideLooper,\n dragHandler,\n animation,\n eventHandler,\n scrollBounds,\n options: { loop }\n },\n alpha\n ) => {\n const shouldSettle = scrollBody.settled()\n const withinBounds = !scrollBounds.shouldConstrain()\n const hasSettled = loop ? shouldSettle : shouldSettle && withinBounds\n const hasSettledAndIdle = hasSettled && !dragHandler.pointerDown()\n\n if (hasSettledAndIdle) animation.stop()\n\n const interpolatedLocation =\n location.get() * alpha + previousLocation.get() * (1 - alpha)\n\n offsetLocation.set(interpolatedLocation)\n\n if (loop) {\n scrollLooper.loop(scrollBody.direction())\n slideLooper.loop()\n }\n\n translate.to(offsetLocation.get())\n\n if (hasSettledAndIdle) eventHandler.emit('settle')\n if (!hasSettled) eventHandler.emit('scroll')\n }\n\n const animation = Animations(\n ownerDocument,\n ownerWindow,\n () => update(engine),\n (alpha: number) => render(engine, alpha)\n )\n\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(\n location,\n offsetLocation,\n previousLocation,\n target,\n duration,\n friction\n )\n const scrollTarget = ScrollTarget(\n loop,\n scrollSnaps,\n contentSize,\n limit,\n target\n )\n const scrollTo = ScrollTo(\n animation,\n index,\n indexPrevious,\n scrollBody,\n scrollTarget,\n target,\n eventHandler\n )\n const scrollProgress = ScrollProgress(limit)\n const eventStore = EventStore()\n const slidesInView = SlidesInView(\n container,\n slides,\n eventHandler,\n inViewThreshold\n )\n const { slideRegistry } = SlideRegistry(\n containSnaps,\n containScroll,\n scrollSnaps,\n scrollContainLimit,\n slidesToScroll,\n slideIndexes\n )\n const slideFocus = SlideFocus(\n root,\n slides,\n slideRegistry,\n scrollTo,\n scrollBody,\n eventStore,\n eventHandler,\n watchFocus\n )\n\n // Engine\n const engine: EngineType = {\n ownerDocument,\n ownerWindow,\n eventHandler,\n containerRect,\n slideRects,\n animation,\n axis,\n dragHandler: DragHandler(\n axis,\n root,\n ownerDocument,\n ownerWindow,\n target,\n DragTracker(axis, ownerWindow),\n location,\n animation,\n scrollTo,\n scrollBody,\n scrollTarget,\n index,\n eventHandler,\n percentOfView,\n dragFree,\n dragThreshold,\n skipSnaps,\n friction,\n watchDrag\n ),\n eventStore,\n percentOfView,\n index,\n indexPrevious,\n limit,\n location,\n offsetLocation,\n previousLocation,\n options,\n resizeHandler: ResizeHandler(\n container,\n eventHandler,\n ownerWindow,\n slides,\n axis,\n watchResize,\n nodeRects\n ),\n scrollBody,\n scrollBounds: ScrollBounds(\n limit,\n offsetLocation,\n target,\n scrollBody,\n percentOfView\n ),\n scrollLooper: ScrollLooper(contentSize, limit, offsetLocation, [\n location,\n offsetLocation,\n previousLocation,\n target\n ]),\n scrollProgress,\n scrollSnapList: scrollSnaps.map(scrollProgress.get),\n scrollSnaps,\n scrollTarget,\n scrollTo,\n slideLooper: SlideLooper(\n axis,\n viewSize,\n contentSize,\n slideSizes,\n slideSizesWithGaps,\n snaps,\n scrollSnaps,\n offsetLocation,\n slides\n ),\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\n return engine\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\n\ntype CallbackType = (emblaApi: EmblaCarouselType, evt: EmblaEventType) => void\ntype ListenersType = Partial<{ [key in EmblaEventType]: CallbackType[] }>\n\nexport type EmblaEventType = EmblaEventListType[keyof EmblaEventListType]\n\nexport interface EmblaEventListType {\n init: 'init'\n pointerDown: 'pointerDown'\n pointerUp: 'pointerUp'\n slidesChanged: 'slidesChanged'\n slidesInView: 'slidesInView'\n scroll: 'scroll'\n select: 'select'\n settle: 'settle'\n destroy: 'destroy'\n reInit: 'reInit'\n resize: 'resize'\n slideFocusStart: 'slideFocusStart'\n slideFocus: 'slideFocus'\n}\n\nexport type EventHandlerType = {\n init: (emblaApi: EmblaCarouselType) => void\n emit: (evt: EmblaEventType) => EventHandlerType\n on: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n off: (evt: EmblaEventType, cb: CallbackType) => EventHandlerType\n clear: () => void\n}\n\nexport function EventHandler(): EventHandlerType {\n let listeners: ListenersType = {}\n let api: EmblaCarouselType\n\n function init(emblaApi: EmblaCarouselType): void {\n api = emblaApi\n }\n\n function getListeners(evt: EmblaEventType): CallbackType[] {\n return listeners[evt] || []\n }\n\n function emit(evt: EmblaEventType): EventHandlerType {\n getListeners(evt).forEach((e) => e(api, evt))\n return self\n }\n\n function on(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).concat([cb])\n return self\n }\n\n function off(evt: EmblaEventType, cb: CallbackType): EventHandlerType {\n listeners[evt] = getListeners(evt).filter((e) => e !== cb)\n return self\n }\n\n function clear(): void {\n listeners = {}\n }\n\n const self: EventHandlerType = {\n init,\n emit,\n off,\n on,\n clear\n }\n return self\n}\n","import { AlignmentOptionType } from './Alignment'\nimport { AxisDirectionOptionType, AxisOptionType } from './Axis'\nimport { SlidesToScrollOptionType } from './SlidesToScroll'\nimport { ScrollContainOptionType } from './ScrollContain'\nimport { DragHandlerOptionType } from './DragHandler'\nimport { ResizeHandlerOptionType } from './ResizeHandler'\nimport { SlidesHandlerOptionType } from './SlidesHandler'\nimport { SlidesInViewOptionsType } from './SlidesInView'\nimport { FocusHandlerOptionType } from './SlideFocus'\n\nexport type LooseOptionsType = {\n [key: string]: unknown\n}\n\nexport type CreateOptionsType<Type extends LooseOptionsType> = Type & {\n active: boolean\n breakpoints: {\n [key: string]: Omit<Partial<CreateOptionsType<Type>>, 'breakpoints'>\n }\n}\n\nexport type OptionsType = CreateOptionsType<{\n align: AlignmentOptionType\n axis: AxisOptionType\n container: string | HTMLElement | null\n slides: string | HTMLElement[] | NodeListOf<HTMLElement> | null\n containScroll: ScrollContainOptionType\n direction: AxisDirectionOptionType\n slidesToScroll: SlidesToScrollOptionType\n dragFree: boolean\n dragThreshold: number\n inViewThreshold: SlidesInViewOptionsType\n loop: boolean\n skipSnaps: boolean\n duration: number\n startIndex: number\n watchDrag: DragHandlerOptionType\n watchResize: ResizeHandlerOptionType\n watchSlides: SlidesHandlerOptionType\n watchFocus: FocusHandlerOptionType\n}>\n\nexport const defaultOptions: OptionsType = {\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\nexport type EmblaOptionsType = Partial<OptionsType>\n","import { LooseOptionsType, CreateOptionsType } from './Options'\nimport { objectKeys, objectsMergeDeep, WindowType } from './utils'\n\ntype OptionsType = Partial<CreateOptionsType<LooseOptionsType>>\n\nexport type OptionsHandlerType = {\n mergeOptions: <TypeA extends OptionsType, TypeB extends OptionsType>(\n optionsA: TypeA,\n optionsB?: TypeB\n ) => TypeA\n optionsAtMedia: <Type extends OptionsType>(options: Type) => Type\n optionsMediaQueries: (optionsList: OptionsType[]) => MediaQueryList[]\n}\n\nexport function OptionsHandler(ownerWindow: WindowType): OptionsHandlerType {\n function mergeOptions<TypeA extends OptionsType, TypeB extends OptionsType>(\n optionsA: TypeA,\n optionsB?: TypeB\n ): TypeA {\n return <TypeA>objectsMergeDeep(optionsA, optionsB || {})\n }\n\n function optionsAtMedia<Type extends OptionsType>(options: Type): Type {\n const optionsAtMedia = options.breakpoints || {}\n const matchedMediaOptions = objectKeys(optionsAtMedia)\n .filter((media) => ownerWindow.matchMedia(media).matches)\n .map((media) => optionsAtMedia[media])\n .reduce((a, mediaOption) => mergeOptions(a, mediaOption), {})\n\n return mergeOptions(options, matchedMediaOptions)\n }\n\n function optionsMediaQueries(optionsList: OptionsType[]): MediaQueryList[] {\n return optionsList\n .map((options) => objectKeys(options.breakpoints || {}))\n .reduce((acc, mediaQueries) => acc.concat(mediaQueries), [])\n .map(ownerWindow.matchMedia)\n }\n\n const self: OptionsHandlerType = {\n mergeOptions,\n optionsAtMedia,\n optionsMediaQueries\n }\n return self\n}\n","import { EmblaCarouselType } from './EmblaCarousel'\nimport { OptionsHandlerType } from './OptionsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\n\nexport type PluginsHandlerType = {\n init: (\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ) => EmblaPluginsType\n destroy: () => void\n}\n\nexport function PluginsHandler(\n optionsHandler: OptionsHandlerType\n): PluginsHandlerType {\n let activePlugins: EmblaPluginType[] = []\n\n function init(\n emblaApi: EmblaCarouselType,\n plugins: EmblaPluginType[]\n ): EmblaPluginsType {\n activePlugins = plugins.filter(\n ({ options }) => optionsHandler.optionsAtMedia(options).active !== false\n )\n activePlugins.forEach((plugin) => plugin.init(emblaApi, optionsHandler))\n\n return plugins.reduce(\n (map, plugin) => Object.assign(map, { [plugin.name]: plugin }),\n {}\n )\n }\n\n function destroy(): void {\n activePlugins = activePlugins.filter((plugin) => plugin.destroy())\n }\n\n const self: PluginsHandlerType = {\n init,\n destroy\n }\n return self\n}\n","import { Engine, EngineType } from './Engine'\nimport { EventStore } from './EventStore'\nimport { EventHandler, EventHandlerType } from './EventHandler'\nimport { defaultOptions, EmblaOptionsType, OptionsType } from './Options'\nimport { OptionsHandler } from './OptionsHandler'\nimport { PluginsHandler } from './PluginsHandler'\nimport { EmblaPluginsType, EmblaPluginType } from './Plugins'\nimport { isString, WindowType } from './utils'\n\nexport type EmblaCarouselType = {\n canScrollNext: () => boolean\n canScrollPrev: () => boolean\n containerNode: () => HTMLElement\n internalEngine: () => EngineType\n destroy: () => void\n off: EventHandlerType['off']\n on: EventHandlerType['on']\n emit: EventHandlerType['emit']\n plugins: () => EmblaPluginsType\n previousScrollSnap: () => number\n reInit: (options?: EmblaOptionsType, plugins?: EmblaPluginType[]) => void\n rootNode: () => HTMLElement\n scrollNext: (jump?: boolean) => void\n scrollPrev: (jump?: boolean) => void\n scrollProgress: () => number\n scrollSnapList: () => number[]\n scrollTo: (index: number, jump?: boolean) => void\n selectedScrollSnap: () => number\n slideNodes: () => HTMLElement[]\n slidesInView: () => number[]\n slidesNotInView: () => number[]\n}\n\nfunction EmblaCarousel(\n root: HTMLElement,\n userOptions?: EmblaOptionsType,\n userPlugins?: EmblaPluginType[]\n): EmblaCarouselType {\n const ownerDocument = root.ownerDocument\n const ownerWindow = <WindowType>ownerDocument.defaultView\n const optionsHandler = OptionsHandler(ownerWindow)\n const pluginsHandler = PluginsHandler(optionsHandler)\n const mediaHandlers = EventStore()\n const eventHandler = EventHandler()\n const { mergeOptions, optionsAtMedia, optionsMediaQueries } = optionsHandler\n const { on, off, emit } = eventHandler\n const reInit = reActivate\n\n let destroyed = false\n let engine: EngineType\n let optionsBase = mergeOptions(defaultOptions, EmblaCarousel.globalOptions)\n let options = mergeOptions(optionsBase)\n let pluginList: EmblaPluginType[] = []\n let pluginApis: EmblaPluginsType\n\n let container: HTMLElement\n let slides: HTMLElement[]\n\n function storeElements(): void {\n const { container: userContainer, slides: userSlides } = options\n\n const customContainer = isString(userContainer)\n ? root.querySelector(userContainer)\n : userContainer\n container = <HTMLElement>(customContainer || root.children[0])\n\n const customSlides = isString(userSlides)\n ? container.querySelectorAll(userSlides)\n : userSlides\n slides = <HTMLElement[]>[].slice.call(customSlides || container.children)\n }\n\n function createEngine(options: OptionsType): EngineType {\n const engine = Engine(\n root,\n container,\n slides,\n ownerDocument,\n ownerWindow,\n options,\n eventHandler\n )\n\n if (options.loop && !engine.slideLooper.canLoop()) {\n const optionsWithoutLoop = Object.assign({}, options, { loop: false })\n return createEngine(optionsWithoutLoop)\n }\n return engine\n }\n\n function activate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n if (destroyed) return\n\n optionsBase = mergeOptions(optionsBase, withOptions)\n options = optionsAtMedia(optionsBase)\n pluginList = withPlugins || pluginList\n\n storeElements()\n\n engine = createEngine(options)\n\n optionsMediaQueries([\n optionsBase,\n ...pluginList.map(({ options }) => options)\n ]).forEach((query) => mediaHandlers.add(query, 'change', reActivate))\n\n if (!options.active) return\n\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\n if (engine.options.loop) engine.slideLooper.loop()\n if (container.offsetParent && slides.length) engine.dragHandler.init(self)\n\n pluginApis = pluginsHandler.init(self, pluginList)\n }\n\n function reActivate(\n withOptions?: EmblaOptionsType,\n withPlugins?: EmblaPluginType[]\n ): void {\n const startIndex = selectedScrollSnap()\n deActivate()\n activate(mergeOptions({ startIndex }, withOptions), withPlugins)\n eventHandler.emit('reInit')\n }\n\n function deActivate(): void {\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\n function destroy(): void {\n if (destroyed) return\n destroyed = true\n mediaHandlers.clear()\n deActivate()\n eventHandler.emit('destroy')\n eventHandler.clear()\n }\n\n function scrollTo(index: number, jump?: boolean, direction?: number): void {\n if (!options.active || destroyed) return\n engine.scrollBody\n .useBaseFriction()\n .useDuration(jump === true ? 0 : options.duration)\n engine.scrollTo.index(index, direction || 0)\n }\n\n function scrollNext(jump?: boolean): void {\n const next = engine.index.add(1).get()\n scrollTo(next, jump, -1)\n }\n\n function scrollPrev(jump?: boolean): void {\n const prev = engine.index.add(-1).get()\n scrollTo(prev, jump, 1)\n }\n\n function canScrollNext(): boolean {\n const next = engine.index.add(1).get()\n return next !== selectedScrollSnap()\n }\n\n function canScrollPrev(): boolean {\n const prev = engine.index.add(-1).get()\n return prev !== selectedScrollSnap()\n }\n\n function scrollSnapList(): number[] {\n return engine.scrollSnapList\n }\n\n function scrollProgress(): number {\n return engine.scrollProgress.get(engine.offsetLocation.get())\n }\n\n function selectedScrollSnap(): number {\n return engine.index.get()\n }\n\n function previousScrollSnap(): number {\n return engine.indexPrevious.get()\n }\n\n function slidesInView(): number[] {\n return engine.slidesInView.get()\n }\n\n function slidesNotInView(): number[] {\n return engine.slidesInView.get(false)\n }\n\n function plugins(): EmblaPluginsType {\n return pluginApis\n }\n\n function internalEngine(): EngineType {\n return engine\n }\n\n function rootNode(): HTMLElement {\n return root\n }\n\n function containerNode(): HTMLElement {\n return container\n }\n\n function slideNodes(): HTMLElement[] {\n return slides\n }\n\n const self: EmblaCarouselType = {\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\n activate(userOptions, userPlugins)\n setTimeout(() => eventHandler.emit('init'), 0)\n return self\n}\n\ndeclare namespace EmblaCarousel {\n let globalOptions: EmblaOptionsType | undefined\n}\n\nEmblaCarousel.globalOptions = undefined\n\nexport default EmblaCarousel\n","import { useRef, useEffect, useState, useCallback } from 'react'\nimport {\n areOptionsEqual,\n arePluginsEqual,\n canUseDOM\n} from 'embla-carousel-reactive-utils'\nimport EmblaCarousel, {\n EmblaCarouselType,\n EmblaOptionsType,\n EmblaPluginType\n} from 'embla-carousel'\n\nexport type EmblaViewportRefType = <ViewportElement extends HTMLElement>(\n instance: ViewportElement | null\n) => void\n\nexport type UseEmblaCarouselType = [\n EmblaViewportRefType,\n EmblaCarouselType | undefined\n]\n\nfunction useEmblaCarousel(\n options: EmblaOptionsType = {},\n plugins: EmblaPluginType[] = []\n): UseEmblaCarouselType {\n const storedOptions = useRef(options)\n const storedPlugins = useRef(plugins)\n const [emblaApi, setEmblaApi] = useState<EmblaCarouselType>()\n const [viewport, setViewport] = useState<HTMLElement>()\n\n const reInit = useCallback(() => {\n if (emblaApi) emblaApi.reInit(storedOptions.current, storedPlugins.current)\n }, [emblaApi])\n\n useEffect(() => {\n if (areOptionsEqual(storedOptions.current, options)) return\n storedOptions.current = options\n reInit()\n }, [options, reInit])\n\n useEffect(() => {\n if (arePluginsEqual(storedPlugins.current, plugins)) return\n storedPlugins.current = plugins\n reInit()\n }, [plugins, reInit])\n\n useEffect(() => {\n if (canUseDOM() && viewport) {\n EmblaCarousel.globalOptions = useEmblaCarousel.globalOptions\n const newEmblaApi = EmblaCarousel(\n viewport,\n storedOptions.current,\n storedPlugins.current\n )\n setEmblaApi(newEmblaApi)\n return () => newEmblaApi.destroy()\n } else {\n setEmblaApi(undefined)\n }\n }, [viewport, setEmblaApi])\n\n return [<EmblaViewportRefType>setViewport, emblaApi]\n}\n\ndeclare namespace useEmblaCarousel {\n let globalOptions: EmblaOptionsType | undefined\n}\n\nuseEmblaCarousel.globalOptions = undefined\n\nexport default useEmblaCarousel\n","import type { ComponentProps, HTMLAttributes, KeyboardEvent } from 'react';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport useEmblaCarousel, { type UseEmblaCarouselType } from 'embla-carousel-react';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\n\nimport { Button } from './button';\nimport { cn } from '../utils';\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 = createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nconst Carousel = forwardRef<HTMLDivElement, ComponentProps<'div'> & CarouselProps>(\n ({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = useState(false);\n const [canScrollNext, setCanScrollNext] = useState(false);\n\n const onSelect = useCallback((carouselApi: CarouselApi) => {\n if (!carouselApi) return;\n setCanScrollPrev(carouselApi.canScrollPrev());\n setCanScrollNext(carouselApi.canScrollNext());\n }, []);\n\n const scrollPrev = useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = useCallback(\n (event: 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 useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n 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 const contextValue = useMemo(\n () => ({\n carouselRef,\n api,\n opts,\n orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }),\n [carouselRef, api, opts, orientation, scrollPrev, scrollNext, canScrollPrev, canScrollNext],\n );\n\n return (\n <CarouselContext.Provider value={contextValue}>\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn('relative', className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n ref={ref}\n {...props}>\n {children}\n </div>\n </CarouselContext.Provider>\n );\n },\n);\nCarousel.displayName = 'Carousel';\n\nconst CarouselContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div\n ref={ref}\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className,\n )}\n {...props}\n />\n </div>\n );\n },\n);\n\nCarouselContent.displayName = 'CarouselContent';\n\nconst CarouselItem = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n />\n );\n },\n);\nCarouselItem.displayName = 'CarouselItem';\n\nconst CarouselPrevious = ({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: ComponentProps<typeof Button>) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -left-12 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}>\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n};\n\nconst CarouselNext = ({\n className,\n variant = 'outline',\n size = 'icon',\n ...props\n}: ComponentProps<typeof Button>) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n 'absolute size-8 rounded-full',\n orientation === 'horizontal'\n ? 'top-1/2 -right-12 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}>\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n};\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n","import { useEffect, useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\n\nimport type { CarouselApi } from '../../ui/carousel';\nimport { Carousel, CarouselContent, CarouselNext, CarouselPrevious } from '../../ui/carousel';\n\nexport const CarouselContainer = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n const [api, setApi] = useState<CarouselApi>();\n const [current, setCurrent] = useState(0);\n const [count, setCount] = useState(0);\n\n useEffect(() => {\n if (!api) return;\n\n setCount(api.scrollSnapList().length);\n setCurrent(api.selectedScrollSnap() + 1);\n api.on('select', () => {\n setCurrent(api.selectedScrollSnap() + 1);\n });\n }, [api]);\n\n return (\n <div className=\"flex w-full justify-center data-[align=center]:items-center data-[align=end]:items-end data-[align=start]:items-start\">\n <div\n className=\"mx-auto\n \">\n <Carousel\n {...attributes}\n setApi={setApi}\n opts={{ align: 'start', axis: 'x', loop: true }}\n orientation=\"horizontal\"\n className=\"w-full max-w-lg\">\n <CarouselContent>{children}</CarouselContent>\n <CarouselPrevious contentEditable={false} className=\"select-none\" />\n <CarouselNext contentEditable={false} className=\"select-none\" />\n </Carousel>\n <div\n contentEditable={false}\n className=\"select-none text-muted-foreground py-2 text-center text-sm\">\n Slide {current} of {count}\n </div>\n </div>\n </div>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nimport { Card, CardContent } from '../../ui/card';\nimport { CarouselItem } from '../../ui/carousel';\n\nexport const CarouselListItem = (props: PluginElementRenderProps) => {\n const { children } = props;\n\n return (\n <CarouselItem className=\"md:basis-1/2 lg:basis-1/3\">\n <div className=\"p-1\">\n <Card>\n <CardContent className=\"flex aspect-square items-center justify-center p-6\">\n {children}\n </CardContent>\n </Card>\n </div>\n </CarouselItem>\n );\n};\n","import { CarouselContainer } from './elements/carousel-container';\nimport { CarouselListItem } from './elements/carousel-item';\n\nexport const CarouselUI = {\n 'carousel-container': {\n render: CarouselContainer,\n },\n 'carousel-list-item': {\n render: CarouselListItem,\n },\n};\n"],"names":["isObject","subject","Object","prototype","toString","call","isRecord","Array","isArray","canUseDOM","window","document","createElement","areOptionsEqual","optionsA","optionsB","optionsAKeys","keys","optionsBKeys","length","breakpointsA","JSON","stringify","breakpoints","breakpointsB","every","key","valueA","valueB","sortAndMapPluginToOptions","plugins","concat","sort","a","b","name","map","plugin","options","arePluginsEqual","pluginsA","pluginsB","optionA","index","optionB","isNumber","isString","isBoolean","mathAbs","n","Math","abs","mathSign","sign","deltaAbs","factorAbs","diff","roundToTwoDecimals","num","round","arrayKeys","array","objectKeys","Number","arrayLast","arrayLastIndex","max","arrayIsLastIndex","arrayFromNumber","startAt","from","_","i","object","objectsMergeDeep","objectA","objectB","reduce","mergedObjects","currentObject","forEach","areObjects","isMouseEvent","evt","ownerWindow","MouseEvent","Alignment","align","viewSize","predefined","start","center","end","measure","self","EventStore","listeners","add","node","type","handler","passive","removeListener","addEventListener","removeEventListener","legacyMediaQueryList","addListener","push","clear","filter","remove","Animations","ownerDocument","update","render","documentVisibleHandler","fixedTimeStep","lastTimeStamp","accumulatedTime","animationId","init","hidden","reset","destroy","stop","animate","timeStamp","timeElapsed","alpha","requestAnimationFrame","cancelAnimationFrame","Axis","axis","contentDirection","isRightToLeft","isVertical","scroll","cross","startEdge","getStartEdge","endEdge","getEndEdge","measureSize","nodeRect","height","width","direction","Limit","min","reachedMin","reachedMax","reachedAny","constrain","removeOffset","ceil","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","mouse","touch","freeForceBoost","baseSpeed","isMoving","startScroll","startCross","pointerIsDown","preventScroll","preventClick","isMouse","emblaApi","downIfAllowed","down","preventDefault","undefined","up","click","addDragEvents","move","isFocusNode","nodeName","includes","forceBoost","boost","allowedForce","force","targetChanged","next","baseForce","byDistance","distance","byIndex","isMouseEvt","buttons","button","pointerDown","useFriction","useDuration","readPoint","emit","isTouchEvt","touches","lastScroll","lastCross","diffScroll","diffCross","cancelable","pointerMove","currentLocation","rawForce","pointerUp","forceFactor","speed","friction","stopPropagation","DragTracker","logInterval","startEvent","lastEvent","readTime","evtAxis","property","coord","expired","diffDrag","diffTime","isFlick","NodeRects","offsetTop","offsetLeft","offsetWidth","offsetHeight","offset","top","right","bottom","left","PercentOfView","ResizeHandler","container","slides","watchResize","nodeRects","observeNodes","resizeObserver","containerSize","slideSizes","destroyed","readSize","defaultCallback","entries","entry","isContainer","slideIndex","indexOf","lastSize","newSize","diffSize","reInit","ResizeObserver","observe","disconnect","ScrollBody","offsetLocation","previousLocation","baseDuration","scrollVelocity","scrollDirection","scrollDuration","scrollFriction","rawLocation","rawLocationPrevious","seek","displacement","isInstant","scrollDistance","settled","duration","velocity","useBaseDuration","useBaseFriction","ScrollBounds","limit","pullBackThreshold","edgeOffsetTolerance","frictionLimit","disabled","shouldConstrain","edge","diffToEdge","diffToTarget","subtract","toggleActive","active","ScrollContain","contentSize","snapsAligned","containScroll","pixelTolerance","scrollBounds","snapsBounded","measureBounded","scrollContainLimit","findScrollContainLimit","snapsContained","measureContained","usePixelTolerance","bound","snap","startSnap","endSnap","lastIndexOf","snapAligned","isFirst","isLast","scrollBound","parseFloat","toFixed","slice","ScrollLimit","scrollSnaps","ScrollLooper","vectors","jointSafety","shouldLoop","loopDistance","v","ScrollProgress","ScrollSnaps","alignment","containerRect","slideRects","slidesToScroll","groupSlides","alignments","measureSizes","snaps","measureUnaligned","measureAligned","rects","rect","g","SlideRegistry","containSnaps","slideIndexes","slideRegistry","createSlideRegistry","groupedSlideIndexes","doNotContain","group","groups","range","ScrollTarget","targetVector","minDistance","distances","findTargetSnap","ascDiffsToSnaps","shortcut","d1","d2","targets","matchingTargets","t","diffToSnap","targetSnapDistance","reachedBound","snapDistance","ScrollTo","indexCurrent","indexPrevious","distanceDiff","indexDiff","targetIndex","SlideFocus","root","eventStore","watchFocus","focusListenerOptions","capture","lastTabPressTime","nowTime","Date","getTime","scrollLeft","findIndex","registerTabPress","slide","event","code","Vector1D","initialValue","value","normalizeInput","Translate","translate","x","y","containerStyle","style","previousTarget","to","newTarget","transform","getAttribute","removeAttribute","SlideLooper","slideSizesWithGaps","roundingSafety","ascItems","descItems","reverse","loopPoints","startPoints","endPoints","removeSlideSizes","indexes","slidesInGap","gap","remainingGap","findSlideBounds","findLoopPoints","isEndEdge","slideBounds","initial","altered","boundEdge","loopPoint","slideLocation","canLoop","otherIndexes","shiftLocation","SlidesHandler","watchSlides","mutationObserver","mutations","mutation","MutationObserver","childList","SlidesInView","threshold","intersectionEntryMap","inViewCache","notInViewCache","intersectionObserver","IntersectionObserver","parentElement","createInViewList","inView","list","parseInt","isIntersecting","inViewMatch","notInViewMatch","SlideSizes","readEdgeGap","withEdgeGap","startGap","measureStartGap","endGap","measureEndGap","measureWithGaps","slideRect","getComputedStyle","getPropertyValue","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","resizeHandler","scrollSnapList","slidesHandler","EventHandler","api","getListeners","e","on","cb","off","defaultOptions","OptionsHandler","mergeOptions","optionsAtMedia","matchedMediaOptions","media","matchMedia","matches","mediaOption","optionsMediaQueries","optionsList","acc","mediaQueries","PluginsHandler","optionsHandler","activePlugins","assign","EmblaCarousel","userOptions","userPlugins","defaultView","pluginsHandler","mediaHandlers","reActivate","optionsBase","globalOptions","pluginList","pluginApis","storeElements","userContainer","userSlides","customContainer","querySelector","children","customSlides","querySelectorAll","createEngine","optionsWithoutLoop","activate","withOptions","withPlugins","query","offsetParent","selectedScrollSnap","deActivate","jump","scrollNext","scrollPrev","prev","canScrollNext","canScrollPrev","previousScrollSnap","slidesNotInView","internalEngine","containerNode","slideNodes","setTimeout","useEmblaCarousel","storedOptions","useRef","storedPlugins","setEmblaApi","useState","viewport","setViewport","useCallback","current","useEffect","newEmblaApi","_jsx","_jsxs"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,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]}
|