@brandonsoccer22/gsap-editorial-carousel 0.1.3 → 0.1.4
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/README.md +6 -1
- package/dist/index.cjs +426 -55
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +426 -55
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/styles.css +3 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dom.ts","../src/a11y.ts","../src/registry.ts","../src/defaults.ts","../src/timeline.ts","../src/reducedMotion.ts","../src/carousel.ts","../src/gsap.ts"],"names":["gsap","_a","_b","_c","_d"],"mappings":"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","file":"index.cjs","sourcesContent":["export function resolveRoot(root: string | Element): HTMLElement {\n if (typeof root === \"string\") {\n const el = document.querySelector(root);\n if (!el) {\n throw new Error(`Carousel root not found for selector: ${root}`);\n }\n if (!(el instanceof HTMLElement)) {\n throw new Error(`Carousel root must be an HTMLElement for selector: ${root}`);\n }\n return el;\n }\n if (!(root instanceof HTMLElement)) {\n throw new Error(\"Carousel root must be an HTMLElement.\");\n }\n return root;\n}\n\nexport function qs<T extends Element>(root: ParentNode, selector: string): T | null {\n return root.querySelector(selector) as T | null;\n}\n\nexport function qsa<T extends Element>(root: ParentNode, selector: string): T[] {\n return Array.from(root.querySelectorAll(selector)) as T[];\n}\n\nexport function toggleClass(el: Element, name: string, active: boolean): void {\n if (active) {\n el.classList.add(name);\n } else {\n el.classList.remove(name);\n }\n}\n\nexport function setAriaDisabled(el: Element, disabled: boolean): void {\n el.setAttribute(\"aria-disabled\", disabled ? \"true\" : \"false\");\n}\n\nexport function setDisabled(\n el: Element | null,\n disabled: boolean,\n disabledClass: string\n): void {\n if (!el) return;\n const isButton = el instanceof HTMLButtonElement || el instanceof HTMLInputElement;\n if (isButton) {\n (el as HTMLButtonElement | HTMLInputElement).disabled = disabled;\n }\n setAriaDisabled(el, disabled);\n toggleClass(el, disabledClass, disabled);\n}\n\nexport function isFocusableWithin(root: Element, target: Element | null): boolean {\n return !!target && root.contains(target);\n}\n\nexport function ensureRootFocusable(root: HTMLElement): void {\n if (!root.hasAttribute(\"tabindex\")) {\n root.setAttribute(\"tabindex\", \"0\");\n }\n}\n","import { toggleClass } from \"./dom\";\n\nexport function setSlidesState(\n slides: Element[],\n activeIndex: number,\n activeClass: string\n): void {\n slides.forEach((slide, index) => {\n const isActive = index === activeIndex;\n slide.setAttribute(\"aria-hidden\", isActive ? \"false\" : \"true\");\n toggleClass(slide, activeClass, isActive);\n });\n}\n\nexport function setDotsState(\n dots: Element[],\n activeIndex: number,\n activeClass: string\n): void {\n dots.forEach((dot, index) => {\n const isActive = index === activeIndex;\n if (isActive) {\n dot.setAttribute(\"aria-current\", \"true\");\n } else {\n dot.removeAttribute(\"aria-current\");\n }\n toggleClass(dot, activeClass, isActive);\n });\n}\n","import type { AnimationFactory } from \"./carousel\";\n\nexport type AnimationFactoryWithReverse = AnimationFactory & {\n reverse?: AnimationFactory;\n};\n\nconst registry = new Map<string, AnimationFactoryWithReverse>();\n\nexport function registerAnimation(name: string, factory: AnimationFactoryWithReverse): void {\n registry.set(name, factory);\n}\n\nexport function registerAnimations(map: Record<string, AnimationFactoryWithReverse>): void {\n Object.entries(map).forEach(([name, factory]) => {\n registerAnimation(name, factory);\n });\n}\n\nexport function getAnimation(name: string): AnimationFactoryWithReverse | undefined {\n return registry.get(name);\n}\n\nexport function listAnimations(): string[] {\n return Array.from(registry.keys());\n}\n","import { registerAnimations } from \"./registry\";\nimport type { AnimationFactoryWithReverse } from \"./registry\";\n\nexport const defaultSelectors = {\n root: \"[data-carousel]\",\n slide: \"[data-carousel-slide], .gsap-carousel__slide\",\n prev: \"[data-carousel-prev]\",\n next: \"[data-carousel-next]\",\n dots: \"[data-carousel-dots]\",\n dotTemplate: \"[data-carousel-dot-template]\"\n};\n\nexport const defaultClassNames = {\n activeSlide: \"is-active\",\n animatingRoot: \"is-animating\",\n disabledControl: \"is-disabled\",\n dot: \"gsap-carousel__dot\",\n activeDot: \"is-active\"\n};\n\nexport const defaultOptions = {\n loop: true,\n initialIndex: 0,\n transition: {\n overlap: 0\n },\n defaults: {\n dur: 0.6,\n ease: \"power2.out\"\n }\n};\n\nlet didRegister = false;\n\nexport function ensureDefaultAnimationsRegistered(): void {\n if (didRegister) return;\n didRegister = true;\n\n const fadeIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0 },\n {\n autoAlpha: 1,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n const fadeUp: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: 24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeUp.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n const slideIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: opts.direction * 40 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n slideIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: opts.direction * -24,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n registerAnimations({\n \"fade-in\": fadeIn,\n \"fade-up\": fadeUp,\n \"slide-in\": slideIn\n });\n}\n","import type { gsap as GsapInstance } from \"gsap\";\nimport type { CarouselOptions } from \"./carousel\";\nimport { getAnimation, listAnimations } from \"./registry\";\n\nconst defaultExitDuration = 0.25;\ntype GsapTimeline = ReturnType<typeof GsapInstance[\"timeline\"]>;\n\ntype AnimItem = {\n el: Element;\n animName: string;\n seq: number;\n exitSeq: number;\n dur: number;\n delay: number;\n ease?: string;\n at?: string;\n};\n\nfunction getDataNumber(el: Element, name: string, fallback: number): number {\n const value = el.getAttribute(name);\n if (!value) return fallback;\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction getDataString(el: Element, name: string): string | undefined {\n const value = el.getAttribute(name);\n return value && value.trim() ? value.trim() : undefined;\n}\n\nfunction parsePositionOffset(value?: string): number | null {\n if (!value) return null;\n const trimmed = value.trim();\n const numberPattern = /^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)$/;\n const relativeMatch = trimmed.match(/^([+-])=([+-]?(?:\\d+\\.?\\d*|\\.\\d+))$/);\n\n if (relativeMatch) {\n const amount = Number.parseFloat(relativeMatch[2]);\n if (!Number.isFinite(amount)) return null;\n return relativeMatch[1] === \"+\" ? amount : -amount;\n }\n\n if (numberPattern.test(trimmed)) {\n const amount = Number.parseFloat(trimmed);\n return Number.isFinite(amount) ? amount : null;\n }\n\n return null;\n}\n\nfunction findAnimationName(el: Element): string | null {\n const classList = Array.from(el.classList);\n for (const className of classList) {\n if (getAnimation(className)) return className;\n }\n return null;\n}\n\nfunction collectAnimItems(slide: Element, options: CarouselOptions): AnimItem[] {\n const elements = Array.from(slide.querySelectorAll(\"[class]\"));\n const items: AnimItem[] = [];\n\n elements.forEach((el) => {\n const animName = findAnimationName(el);\n if (!animName) return;\n const seq = Math.max(1, Math.floor(getDataNumber(el, \"data-seq\", 1)));\n const exitSeq = Math.max(1, Math.floor(getDataNumber(el, \"data-exit-seq\", seq)));\n const dur = getDataNumber(el, \"data-dur\", options.defaults.dur);\n const delay = getDataNumber(el, \"data-delay\", 0);\n const ease = getDataString(el, \"data-ease\") ?? options.defaults.ease;\n const at = getDataString(el, \"data-at\");\n\n items.push({ el, animName, seq, exitSeq, dur, delay, ease, at });\n });\n\n return items;\n}\n\nfunction groupBySequence(\n items: AnimItem[],\n getSequence: (item: AnimItem) => number\n): Map<number, AnimItem[]> {\n const map = new Map<number, AnimItem[]>();\n items.forEach((item) => {\n const sequence = getSequence(item);\n const bucket = map.get(sequence) ?? [];\n bucket.push(item);\n map.set(sequence, bucket);\n });\n return map;\n}\n\nexport function buildSlideEnterTimeline(\n slide: Element,\n direction: 1 | -1,\n options: CarouselOptions,\n gsapInstance: typeof GsapInstance\n): GsapTimeline {\n const tl = gsapInstance.timeline();\n const items = collectAnimItems(slide, options);\n if (!items.length) return tl;\n\n const grouped = groupBySequence(items, (item) => item.seq);\n const order = Array.from(grouped.keys()).sort((a, b) => a - b);\n\n let cursor = 0;\n order.forEach((seq) => {\n const group = grouped.get(seq);\n if (!group) return;\n let groupMax = 0;\n\n group.forEach((item) => {\n const factory = getAnimation(item.animName);\n if (!factory) return;\n const offset = parsePositionOffset(item.at) ?? 0;\n const position = cursor + offset;\n\n factory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.dur,\n delay: item.delay,\n ease: item.ease,\n direction,\n at: position\n }\n });\n groupMax = Math.max(groupMax, offset + item.delay + item.dur);\n });\n\n cursor += Math.max(groupMax, 0);\n });\n\n return tl;\n}\n\nexport function buildSlideExitTimeline(\n slide: Element,\n direction: 1 | -1,\n options: CarouselOptions,\n gsapInstance: typeof GsapInstance\n): GsapTimeline {\n const tl = gsapInstance.timeline();\n const items = collectAnimItems(slide, options);\n if (!items.length) return tl;\n\n const grouped = groupBySequence(items, (item) => item.exitSeq);\n const order = Array.from(grouped.keys()).sort((a, b) => a - b);\n\n let cursor = 0;\n order.forEach((seq) => {\n const group = grouped.get(seq);\n if (!group) return;\n let groupMax = 0;\n\n group.forEach((item) => {\n const exitName = getDataString(item.el, \"data-exit\");\n const factory = exitName ? getAnimation(exitName) : getAnimation(item.animName);\n const reverseFactory = factory && \"reverse\" in factory ? factory.reverse : undefined;\n const offset = parsePositionOffset(item.at) ?? 0;\n const position = cursor + offset;\n\n let usedDuration = item.dur;\n\n if (exitName && factory) {\n factory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.dur,\n delay: item.delay,\n ease: item.ease,\n direction,\n at: position\n }\n });\n } else if (!exitName && reverseFactory) {\n reverseFactory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.dur,\n delay: item.delay,\n ease: item.ease,\n direction,\n at: position\n }\n });\n } else {\n usedDuration = Math.min(item.dur, defaultExitDuration);\n tl.to(\n item.el,\n {\n autoAlpha: 0,\n duration: usedDuration,\n delay: item.delay,\n ease: item.ease\n },\n position\n );\n }\n\n groupMax = Math.max(groupMax, offset + item.delay + usedDuration);\n });\n\n cursor += Math.max(groupMax, 0);\n });\n\n return tl;\n}\n\nexport function getRegisteredAnimationNames(): string[] {\n return listAnimations();\n}\n","export function prefersReducedMotion(): boolean {\n if (typeof window === \"undefined\" || !(\"matchMedia\" in window)) {\n return false;\n }\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n","import { gsap } from \"gsap\";\nimport { setDotsState, setSlidesState } from \"./a11y\";\nimport {\n ensureRootFocusable,\n isFocusableWithin,\n qsa,\n qs,\n resolveRoot,\n setAriaDisabled,\n setDisabled,\n toggleClass\n} from \"./dom\";\nimport { ensureDefaultAnimationsRegistered, defaultClassNames, defaultOptions, defaultSelectors } from \"./defaults\";\nimport { buildSlideEnterTimeline, buildSlideExitTimeline } from \"./timeline\";\nimport { prefersReducedMotion } from \"./reducedMotion\";\n\nexport type AnimationFactoryContext = {\n el: Element;\n tl: gsap.core.Timeline;\n gsap: typeof gsap;\n opts: {\n dur: number;\n delay: number;\n ease?: string;\n direction: 1 | -1;\n at: number;\n };\n};\n\nexport type AnimationFactory = (ctx: AnimationFactoryContext) => void;\n\nexport type CarouselOptions = {\n loop: boolean;\n initialIndex: number;\n gsap?: typeof gsap;\n selectors: {\n root: string;\n slide: string;\n prev: string;\n next: string;\n dots: string;\n dotTemplate: string;\n };\n classNames: {\n activeSlide: string;\n animatingRoot: string;\n disabledControl: string;\n dot: string;\n activeDot: string;\n };\n defaults: {\n dur: number;\n ease: string;\n };\n transition: {\n overlap: number;\n };\n onInit?: (instance: CarouselInstance) => void;\n onBeforeChange?: (payload: { from: number; to: number; direction: 1 | -1 }) => void;\n onAfterChange?: (payload: { from: number; to: number; direction: 1 | -1 }) => void;\n};\n\nexport type CarouselInstance = {\n goTo: (index: number, opts?: { immediate?: boolean }) => void;\n next: (opts?: { immediate?: boolean }) => void;\n prev: (opts?: { immediate?: boolean }) => void;\n destroy: () => void;\n getIndex: () => number;\n getCount: () => number;\n isAnimating: () => boolean;\n};\n\ntype ResolvedControls = {\n prev: Element | null;\n next: Element | null;\n dotsContainer: HTMLElement | null;\n dotTemplate: HTMLElement | null;\n dots: Element[];\n};\n\ntype TransitionState = {\n activeTimeline: gsap.core.Timeline | null;\n};\n\nconst generatedDotSelector = \"[data-carousel-dot=\\\"true\\\"]\";\n\nexport function createCarousel(\n rootInput: string | Element,\n options: Partial<CarouselOptions> = {}\n): CarouselInstance {\n ensureDefaultAnimationsRegistered();\n\n const root = resolveRoot(rootInput);\n const gsapInstance = options.gsap ?? gsap;\n ensureRootFocusable(root);\n const ctx = gsapInstance.context(() => {}, root);\n\n const resolved: CarouselOptions = {\n loop: options.loop ?? defaultOptions.loop,\n initialIndex: options.initialIndex ?? defaultOptions.initialIndex,\n transition: { ...defaultOptions.transition, ...options.transition },\n selectors: { ...defaultSelectors, ...options.selectors },\n classNames: { ...defaultClassNames, ...options.classNames },\n defaults: { ...defaultOptions.defaults, ...options.defaults },\n onInit: options.onInit,\n onBeforeChange: options.onBeforeChange,\n onAfterChange: options.onAfterChange\n };\n\n const slides = qsa(root, resolved.selectors.slide);\n if (!slides.length) {\n throw new Error(\"Carousel requires at least one slide element.\");\n }\n\n const controls = resolveControls(root, resolved, slides.length);\n const reducedMotion = prefersReducedMotion();\n const state: TransitionState = { activeTimeline: null };\n\n let currentIndex = normalizeIndex(resolved.initialIndex, slides.length, resolved.loop);\n let animating = false;\n\n setSlidesState(slides, currentIndex, resolved.classNames.activeSlide);\n setDotsState(controls.dots, currentIndex, resolved.classNames.activeDot);\n\n const onPrevClick = (event: Event) => {\n event.preventDefault();\n prev();\n };\n\n const onNextClick = (event: Event) => {\n event.preventDefault();\n next();\n };\n\n const onDotsClick = (event: Event) => {\n const target = (event.target as Element | null)?.closest(generatedDotSelector);\n if (!target) return;\n event.preventDefault();\n const indexAttr = target.getAttribute(\"data-carousel-dot-index\");\n if (!indexAttr) return;\n const index = Number.parseInt(indexAttr, 10);\n if (!Number.isFinite(index)) return;\n goTo(index);\n };\n\n // const onKeydown = (event: KeyboardEvent) => {\n // if (animating) return;\n // if (!isFocusableWithin(root, document.activeElement)) return;\n // if (event.key === \"ArrowLeft\") {\n // event.preventDefault();\n // prev();\n // } else if (event.key === \"ArrowRight\") {\n // event.preventDefault();\n // next();\n // }\n // };\n\n controls.prev?.addEventListener(\"click\", onPrevClick);\n controls.next?.addEventListener(\"click\", onNextClick);\n controls.dotsContainer?.addEventListener(\"click\", onDotsClick);\n //if enabled in the future, also enable root.removeEventListener(\"keydown\", onKeydown); below\n //root.addEventListener(\"keydown\", onKeydown);\n\n const instance: CarouselInstance = {\n goTo,\n next,\n prev,\n destroy,\n getIndex: () => currentIndex,\n getCount: () => slides.length,\n isAnimating: () => animating\n };\n\n resolved.onInit?.(instance);\n\n function disableControls(disabled: boolean): void {\n toggleClass(root, resolved.classNames.animatingRoot, disabled);\n setDisabled(controls.prev, disabled, resolved.classNames.disabledControl);\n setDisabled(controls.next, disabled, resolved.classNames.disabledControl);\n if (controls.dotsContainer) {\n setAriaDisabled(controls.dotsContainer, disabled);\n }\n controls.dots.forEach((dot) => {\n setAriaDisabled(dot, disabled);\n toggleClass(dot, resolved.classNames.disabledControl, disabled);\n });\n }\n\n function applyActiveState(nextIndex: number): void {\n currentIndex = nextIndex;\n setSlidesState(slides, currentIndex, resolved.classNames.activeSlide);\n setDotsState(controls.dots, currentIndex, resolved.classNames.activeDot);\n }\n\n function finalizeTransition(from: number, to: number, direction: 1 | -1): void {\n animating = false;\n disableControls(false);\n state.activeTimeline = null;\n resolved.onAfterChange?.({ from, to, direction });\n }\n\n function transitionTo(nextIndex: number, immediate?: boolean): void {\n if (animating) return;\n if (nextIndex === currentIndex) return;\n\n const from = currentIndex;\n const to = nextIndex;\n const direction = getDirection(from, to, slides.length, resolved.loop);\n\n animating = true;\n disableControls(true);\n resolved.onBeforeChange?.({ from, to, direction });\n\n if (immediate || reducedMotion) {\n applyActiveState(to);\n finalizeTransition(from, to, direction);\n return;\n }\n\n const exitTl = ctx.add(() => buildSlideExitTimeline(slides[from], direction, resolved, gsapInstance)) as gsap.core.Timeline;\n const enterTl = ctx.add(() => buildSlideEnterTimeline(slides[to], direction, resolved, gsapInstance)) as gsap.core.Timeline;\n\n const master = ctx.add(\n () =>\n gsapInstance.timeline({\n onComplete: () => {\n finalizeTransition(from, to, direction);\n }\n })\n ) as gsap.core.Timeline;\n\n state.activeTimeline = master;\n const overlap = Math.max(0, resolved.transition.overlap);\n const enterAt = Math.max(0, exitTl.duration() - overlap);\n master.add(exitTl, 0);\n master.add(() => applyActiveState(to), enterAt);\n master.add(enterTl, enterAt);\n }\n\n function goTo(index: number, opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = normalizeIndex(index, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function next(opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = resolveNextIndex(currentIndex, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function prev(opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = resolvePrevIndex(currentIndex, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function destroy(): void {\n controls.prev?.removeEventListener(\"click\", onPrevClick);\n controls.next?.removeEventListener(\"click\", onNextClick);\n controls.dotsContainer?.removeEventListener(\"click\", onDotsClick);\n //root.removeEventListener(\"keydown\", onKeydown);\n\n state.activeTimeline?.kill();\n animating = false;\n ctx.revert();\n\n if (controls.dotsContainer) {\n controls.dotsContainer.querySelectorAll(generatedDotSelector).forEach((dot) => {\n dot.remove();\n });\n }\n if (controls.dotTemplate) {\n controls.dotTemplate.hidden = false;\n }\n }\n\n return instance;\n}\n\nfunction resolveControls(root: Element, options: CarouselOptions, slideCount: number): ResolvedControls {\n const rootId = root.getAttribute(\"id\");\n const queryWithFallback = <T extends Element>(selector: string): T | null => {\n if (rootId) {\n const scoped = document.querySelector<T>(`${selector}[data-for=\"${rootId}\"]`);\n if (scoped) return scoped;\n }\n return qs<T>(root, selector);\n };\n\n const prev = queryWithFallback<Element>(options.selectors.prev);\n const next = queryWithFallback<Element>(options.selectors.next);\n const dotsContainer = queryWithFallback<HTMLElement>(options.selectors.dots);\n const dotTemplate = dotsContainer ? qs<HTMLElement>(dotsContainer, options.selectors.dotTemplate) : null;\n\n const dots = dotsContainer\n ? setupDots(dotsContainer, dotTemplate, options, slideCount)\n : [];\n\n return { prev, next, dotsContainer, dotTemplate, dots };\n}\n\nfunction setupDots(\n container: HTMLElement,\n template: HTMLElement | null,\n options: CarouselOptions,\n slideCount: number\n): Element[] {\n const dots = qsa(container, generatedDotSelector);\n dots.forEach((dot) => dot.remove());\n\n if (!template) return [];\n\n const clones: Element[] = [];\n\n for (let i = 0; i < slideCount; i += 1) {\n const clone = template.cloneNode(true) as Element;\n clone.removeAttribute(\"id\");\n clone.setAttribute(\"data-carousel-dot\", \"true\");\n clone.setAttribute(\"data-carousel-dot-index\", String(i));\n clone.setAttribute(\"aria-label\", `Go to slide ${i + 1}`);\n clone.classList.add(options.classNames.dot);\n if (clone instanceof HTMLButtonElement && !clone.getAttribute(\"type\")) {\n clone.setAttribute(\"type\", \"button\");\n }\n container.appendChild(clone);\n clones.push(clone);\n }\n\n template.hidden = true;\n\n return clones;\n}\n\nfunction normalizeIndex(index: number, count: number, loop: boolean): number {\n if (count <= 0) return 0;\n if (loop) {\n const wrapped = ((index % count) + count) % count;\n return wrapped;\n }\n if (index < 0) return 0;\n if (index >= count) return count - 1;\n return index;\n}\n\nfunction resolveNextIndex(current: number, count: number, loop: boolean): number {\n if (count <= 0) return current;\n if (current + 1 < count) return current + 1;\n return loop ? 0 : current;\n}\n\nfunction resolvePrevIndex(current: number, count: number, loop: boolean): number {\n if (count <= 0) return current;\n if (current - 1 >= 0) return current - 1;\n return loop ? count - 1 : current;\n}\n\nfunction getDirection(from: number, to: number, count: number, loop: boolean): 1 | -1 {\n if (!loop) return to > from ? 1 : -1;\n if (from === count - 1 && to === 0) return 1;\n if (from === 0 && to === count - 1) return -1;\n return to > from ? 1 : -1;\n}\n","import { gsap } from \"gsap\";\n\nexport function registerGsapPlugins(\n ...plugins: gsap.RegisterablePlugins[]\n): void {\n gsap.registerPlugin(...plugins);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/dom.ts","../src/a11y.ts","../src/registry.ts","../src/defaults.ts","../src/timeline.ts","../src/reducedMotion.ts","../src/carousel.ts","../src/gsap.ts"],"names":["gsap","_a","_b"],"mappings":"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","file":"index.cjs","sourcesContent":["export function resolveRoot(root: string | Element): HTMLElement {\n if (typeof root === \"string\") {\n const el = document.querySelector(root);\n if (!el) {\n throw new Error(`Carousel root not found for selector: ${root}`);\n }\n if (!(el instanceof HTMLElement)) {\n throw new Error(`Carousel root must be an HTMLElement for selector: ${root}`);\n }\n return el;\n }\n if (!(root instanceof HTMLElement)) {\n throw new Error(\"Carousel root must be an HTMLElement.\");\n }\n return root;\n}\n\nexport function qs<T extends Element>(root: ParentNode, selector: string): T | null {\n return root.querySelector(selector) as T | null;\n}\n\nexport function qsa<T extends Element>(root: ParentNode, selector: string): T[] {\n return Array.from(root.querySelectorAll(selector)) as T[];\n}\n\nexport function toggleClass(el: Element, name: string, active: boolean): void {\n if (active) {\n el.classList.add(name);\n } else {\n el.classList.remove(name);\n }\n}\n\nexport function setAriaDisabled(el: Element, disabled: boolean): void {\n el.setAttribute(\"aria-disabled\", disabled ? \"true\" : \"false\");\n}\n\nexport function setDisabled(\n el: Element | null,\n disabled: boolean,\n disabledClass: string\n): void {\n if (!el) return;\n const isButton = el instanceof HTMLButtonElement || el instanceof HTMLInputElement;\n if (isButton) {\n (el as HTMLButtonElement | HTMLInputElement).disabled = disabled;\n }\n setAriaDisabled(el, disabled);\n toggleClass(el, disabledClass, disabled);\n}\n\nexport function isFocusableWithin(root: Element, target: Element | null): boolean {\n return !!target && root.contains(target);\n}\n\nexport function ensureRootFocusable(root: HTMLElement): void {\n if (!root.hasAttribute(\"tabindex\")) {\n root.setAttribute(\"tabindex\", \"0\");\n }\n}\n","import { toggleClass } from \"./dom\";\n\nexport function setSlidesState(\n slides: Element[],\n activeIndex: number,\n activeClass: string\n): void {\n slides.forEach((slide, index) => {\n const isActive = index === activeIndex;\n slide.setAttribute(\"aria-hidden\", isActive ? \"false\" : \"true\");\n if (isActive) {\n slide.removeAttribute(\"inert\");\n } else {\n slide.setAttribute(\"inert\", \"\");\n }\n toggleClass(slide, activeClass, isActive);\n });\n}\n\nexport function setDotsState(\n dots: Element[],\n activeIndex: number,\n activeClass: string\n): void {\n dots.forEach((dot, index) => {\n const isActive = index === activeIndex;\n if (isActive) {\n dot.setAttribute(\"aria-current\", \"true\");\n } else {\n dot.removeAttribute(\"aria-current\");\n }\n toggleClass(dot, activeClass, isActive);\n });\n}\n","import type { AnimationFactory } from \"./carousel\";\n\nexport type AnimationFactoryWithReverse = AnimationFactory & {\n reverse?: AnimationFactory;\n};\n\nconst registry = new Map<string, AnimationFactoryWithReverse>();\n\nexport function registerAnimation(name: string, factory: AnimationFactoryWithReverse): void {\n registry.set(name, factory);\n}\n\nexport function registerAnimations(map: Record<string, AnimationFactoryWithReverse>): void {\n Object.entries(map).forEach(([name, factory]) => {\n registerAnimation(name, factory);\n });\n}\n\nexport function getAnimation(name: string): AnimationFactoryWithReverse | undefined {\n return registry.get(name);\n}\n\nexport function listAnimations(): string[] {\n return Array.from(registry.keys());\n}\n","import { registerAnimations } from \"./registry\";\nimport type { AnimationFactoryWithReverse } from \"./registry\";\n\nexport const defaultSelectors = {\n root: \"[data-carousel]\",\n slide: \"[data-carousel-slide], .gsap-carousel__slide\",\n prev: \"[data-carousel-prev]\",\n next: \"[data-carousel-next]\",\n dots: \"[data-carousel-dots]\",\n dotTemplate: \"[data-carousel-dot-template]\"\n};\n\nexport const defaultClassNames = {\n activeSlide: \"is-active\",\n animatingRoot: \"is-animating\",\n disabledControl: \"is-disabled\",\n dot: \"gsap-carousel__dot\",\n activeDot: \"is-active\"\n};\n\nexport const defaultOptions = {\n loop: true,\n initialIndex: 0,\n transition: {\n overlap: 0\n },\n defaults: {\n dur: 0.6,\n ease: \"power2.out\"\n }\n};\n\nlet didRegister = false;\n\nexport function ensureDefaultAnimationsRegistered(): void {\n if (didRegister) return;\n didRegister = true;\n\n // fade-in: opacity 0 -> 1.\n const fadeIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0 },\n {\n autoAlpha: 1,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-up: enter from below with upward motion.\n const fadeUp: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: 24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeUp.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-down: enter from above with downward motion.\n const fadeDown: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: -24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeDown.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: 12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // slide-in: enter from direction (left/right).\n const slideIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: opts.direction * 40 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n slideIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: opts.direction * -24,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-out: opacity 1 -> 0.\n const fadeOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n fadeOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 1,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n // slide-out: exit toward direction (left/right).\n const slideOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: opts.direction * -24,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n slideOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n registerAnimations({\n \"fade-in\": fadeIn,\n \"fade-down\": fadeDown,\n \"fade-down-in\": fadeDownIn,\n \"fade-down-out\": fadeDownOut,\n \"fade-out\": fadeOut,\n \"fade-up\": fadeUp,\n \"fade-up-in\": fadeUpIn,\n \"fade-up-out\": fadeUpOut,\n \"fade-start-in\": fadeStartIn,\n \"fade-start-out\": fadeStartOut,\n \"fade-end-in\": fadeEndIn,\n \"fade-end-out\": fadeEndOut,\n \"slide-in\": slideIn,\n \"slide-out\": slideOut\n });\n}\n // fade-up-in: enter from below with upward motion.\n const fadeUpIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: 24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeUpIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-up-out: exit upward while fading out.\n const fadeUpOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n fadeUpOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: 24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n // fade-down-in: enter from above with downward motion.\n const fadeDownIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: -24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeDownIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: 12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-down-out: exit downward while fading out.\n const fadeDownOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n y: 12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n fadeDownOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, y: -24 },\n {\n autoAlpha: 1,\n y: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n // fade-start-in: enter from inline-start (left in LTR).\n const fadeStartIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: -24 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeStartIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-start-out: exit toward inline-start (left in LTR).\n const fadeStartOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: -12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n fadeStartOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: -24 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n // fade-end-in: enter from inline-end (right in LTR).\n const fadeEndIn: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: 24 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n\n fadeEndIn.reverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: 12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n // fade-end-out: exit toward inline-end (right in LTR).\n const fadeEndOut: AnimationFactoryWithReverse = ({ el, gsap, opts, tl }) => {\n tl.to(\n el,\n {\n autoAlpha: 0,\n x: 12,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n tl.set(el, { autoAlpha: 0 }, \">\");\n };\n\n fadeEndOut.reverse = ({ el, gsap, opts, tl }) => {\n tl.fromTo(\n el,\n { autoAlpha: 0, x: 24 },\n {\n autoAlpha: 1,\n x: 0,\n duration: opts.dur,\n delay: opts.delay,\n ease: opts.ease\n },\n opts.at\n );\n };\n","import type { gsap as GsapInstance } from \"gsap\";\nimport type { CarouselOptions } from \"./carousel\";\nimport { getAnimation, listAnimations } from \"./registry\";\n\ntype GsapTimeline = ReturnType<typeof GsapInstance[\"timeline\"]>;\n\ntype AnimItem = {\n el: Element;\n animName: string;\n seq: number;\n exitSeq: number;\n dur: number;\n delay: number;\n ease?: string;\n exitDur: number;\n exitDelay: number;\n exitEase?: string;\n at?: string;\n};\n\nfunction getDataNumber(el: Element, name: string, fallback: number): number {\n const value = el.getAttribute(name);\n if (!value) return fallback;\n const parsed = Number.parseFloat(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction getDataString(el: Element, name: string): string | undefined {\n const value = el.getAttribute(name);\n return value && value.trim() ? value.trim() : undefined;\n}\n\nfunction parsePositionOffset(value?: string): number | null {\n if (!value) return null;\n const trimmed = value.trim();\n const numberPattern = /^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)$/;\n const relativeMatch = trimmed.match(/^([+-])=([+-]?(?:\\d+\\.?\\d*|\\.\\d+))$/);\n\n if (relativeMatch) {\n const amount = Number.parseFloat(relativeMatch[2]);\n if (!Number.isFinite(amount)) return null;\n return relativeMatch[1] === \"+\" ? amount : -amount;\n }\n\n if (numberPattern.test(trimmed)) {\n const amount = Number.parseFloat(trimmed);\n return Number.isFinite(amount) ? amount : null;\n }\n\n return null;\n}\n\nfunction findAnimationName(el: Element): string | null {\n const classList = Array.from(el.classList);\n for (const className of classList) {\n if (getAnimation(className)) return className;\n }\n return null;\n}\n\nfunction collectExternalControls(slide: Element, options: CarouselOptions): Element[] {\n const root = slide.closest(options.selectors.root);\n if (!root) return [];\n\n const rootId = root.getAttribute(\"id\");\n const selector = `${options.selectors.prev}, ${options.selectors.next}`;\n let candidates: Element[] = [];\n\n if (rootId) {\n const scopedSelector = `${selector}[data-for=\"${rootId}\"]`;\n candidates = Array.from(document.querySelectorAll(scopedSelector));\n if (!candidates.length) {\n candidates = Array.from(root.querySelectorAll(selector));\n }\n } else {\n candidates = Array.from(root.querySelectorAll(selector));\n }\n\n return candidates.filter((el) => !el.closest(options.selectors.slide));\n}\n\nfunction collectAnimItems(slide: Element, options: CarouselOptions): AnimItem[] {\n const elements = Array.from(slide.querySelectorAll(\"[class]\"));\n const externalControls = collectExternalControls(slide, options);\n const items: AnimItem[] = [];\n\n elements.concat(externalControls).forEach((el) => {\n const animName = findAnimationName(el);\n if (!animName) return;\n const seq = Math.max(1, Math.floor(getDataNumber(el, \"data-seq\", 1)));\n const exitSeq = Math.max(1, Math.floor(getDataNumber(el, \"data-exit-seq\", seq)));\n const dur = getDataNumber(el, \"data-dur\", options.defaults.dur);\n const delay = getDataNumber(el, \"data-delay\", 0);\n const ease = getDataString(el, \"data-ease\") ?? options.defaults.ease;\n const exitDur = getDataNumber(el, \"data-exit-dur\", dur);\n const exitDelay = getDataNumber(el, \"data-exit-delay\", delay);\n const exitEase = getDataString(el, \"data-exit-ease\") ?? ease;\n const at = getDataString(el, \"data-at\");\n\n items.push({ el, animName, seq, exitSeq, dur, delay, ease, exitDur, exitDelay, exitEase, at });\n });\n\n return items;\n}\n\nfunction groupBySequence(\n items: AnimItem[],\n getSequence: (item: AnimItem) => number\n): Map<number, AnimItem[]> {\n const map = new Map<number, AnimItem[]>();\n items.forEach((item) => {\n const sequence = getSequence(item);\n const bucket = map.get(sequence) ?? [];\n bucket.push(item);\n map.set(sequence, bucket);\n });\n return map;\n}\n\nexport function buildSlideEnterTimeline(\n slide: Element,\n direction: 1 | -1,\n options: CarouselOptions,\n gsapInstance: typeof GsapInstance\n): GsapTimeline {\n const tl = gsapInstance.timeline();\n const items = collectAnimItems(slide, options);\n if (!items.length) return tl;\n\n const grouped = groupBySequence(items, (item) => item.seq);\n const order = Array.from(grouped.keys()).sort((a, b) => a - b);\n\n let cursor = 0;\n order.forEach((seq) => {\n const group = grouped.get(seq);\n if (!group) return;\n let groupMax = 0;\n\n group.forEach((item) => {\n const factory = getAnimation(item.animName);\n if (!factory) return;\n const offset = parsePositionOffset(item.at) ?? 0;\n const position = cursor + offset;\n\n factory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.dur,\n delay: item.delay,\n ease: item.ease,\n direction,\n at: position\n }\n });\n groupMax = Math.max(groupMax, offset + item.delay + item.dur);\n });\n\n cursor += Math.max(groupMax, 0);\n });\n\n return tl;\n}\n\nexport function buildSlideExitTimeline(\n slide: Element,\n direction: 1 | -1,\n options: CarouselOptions,\n gsapInstance: typeof GsapInstance\n): GsapTimeline {\n const tl = gsapInstance.timeline();\n const items = collectAnimItems(slide, options);\n if (!items.length) return tl;\n\n const grouped = groupBySequence(items, (item) => item.exitSeq);\n const order = Array.from(grouped.keys()).sort((a, b) => a - b);\n\n let cursor = 0;\n order.forEach((seq) => {\n const group = grouped.get(seq);\n if (!group) return;\n let groupMax = 0;\n\n group.forEach((item) => {\n const exitName = getDataString(item.el, \"data-exit\");\n const factory = exitName ? getAnimation(exitName) : getAnimation(item.animName);\n const reverseFactory = factory && \"reverse\" in factory ? factory.reverse : undefined;\n const offset = parsePositionOffset(item.at) ?? 0;\n const position = cursor + offset;\n\n let usedDuration = item.exitDur;\n\n if (exitName && factory) {\n factory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.exitDur,\n delay: item.exitDelay,\n ease: item.exitEase,\n direction,\n at: position\n }\n });\n } else if (!exitName && reverseFactory) {\n reverseFactory({\n el: item.el,\n tl,\n gsap: gsapInstance,\n opts: {\n dur: item.exitDur,\n delay: item.exitDelay,\n ease: item.exitEase,\n direction,\n at: position\n }\n });\n } else {\n tl.to(\n item.el,\n {\n autoAlpha: 0,\n duration: usedDuration,\n delay: item.exitDelay,\n ease: item.exitEase\n },\n position\n );\n }\n\n groupMax = Math.max(groupMax, offset + item.exitDelay + usedDuration);\n });\n\n cursor += Math.max(groupMax, 0);\n });\n\n return tl;\n}\n\nexport function getRegisteredAnimationNames(): string[] {\n return listAnimations();\n}\n","export function prefersReducedMotion(): boolean {\n if (typeof window === \"undefined\" || !(\"matchMedia\" in window)) {\n return false;\n }\n return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n","import { gsap } from \"gsap\";\nimport { setDotsState, setSlidesState } from \"./a11y\";\nimport {\n ensureRootFocusable,\n isFocusableWithin,\n qsa,\n qs,\n resolveRoot,\n setAriaDisabled,\n setDisabled,\n toggleClass\n} from \"./dom\";\nimport { ensureDefaultAnimationsRegistered, defaultClassNames, defaultOptions, defaultSelectors } from \"./defaults\";\nimport { buildSlideEnterTimeline, buildSlideExitTimeline } from \"./timeline\";\nimport { prefersReducedMotion } from \"./reducedMotion\";\n\nexport type AnimationFactoryContext = {\n el: Element;\n tl: gsap.core.Timeline;\n gsap: typeof gsap;\n opts: {\n dur: number;\n delay: number;\n ease?: string;\n direction: 1 | -1;\n at: number;\n };\n};\n\nexport type AnimationFactory = (ctx: AnimationFactoryContext) => void;\n\nexport type CarouselOptions = {\n loop: boolean;\n initialIndex: number;\n gsap?: typeof gsap;\n selectors: {\n root: string;\n slide: string;\n prev: string;\n next: string;\n dots: string;\n dotTemplate: string;\n };\n classNames: {\n activeSlide: string;\n animatingRoot: string;\n disabledControl: string;\n dot: string;\n activeDot: string;\n };\n defaults: {\n dur: number;\n ease: string;\n };\n transition: {\n overlap: number;\n exitOverlap?: number;\n };\n onInit?: (instance: CarouselInstance) => void;\n onBeforeChange?: (payload: { from: number; to: number; direction: 1 | -1 }) => void;\n onAfterChange?: (payload: { from: number; to: number; direction: 1 | -1 }) => void;\n};\n\nexport type CarouselInstance = {\n goTo: (index: number, opts?: { immediate?: boolean }) => void;\n next: (opts?: { immediate?: boolean }) => void;\n prev: (opts?: { immediate?: boolean }) => void;\n destroy: () => void;\n getIndex: () => number;\n getCount: () => number;\n isAnimating: () => boolean;\n};\n\ntype ResolvedControls = {\n prev: Element[];\n next: Element[];\n dotsContainers: HTMLElement[];\n dotTemplates: Array<HTMLElement | null>;\n dots: Element[][];\n};\n\ntype TransitionState = {\n activeTimeline: gsap.core.Timeline | null;\n};\n\nconst generatedDotSelector = \"[data-carousel-dot=\\\"true\\\"]\";\n\nexport function createCarousel(\n rootInput: string | Element,\n options: Partial<CarouselOptions> = {}\n): CarouselInstance {\n ensureDefaultAnimationsRegistered();\n\n const root = resolveRoot(rootInput);\n const gsapInstance = options.gsap ?? gsap;\n ensureRootFocusable(root);\n const ctx = gsapInstance.context(() => {}, root);\n\n const resolved: CarouselOptions = {\n loop: options.loop ?? defaultOptions.loop,\n initialIndex: options.initialIndex ?? defaultOptions.initialIndex,\n transition: { ...defaultOptions.transition, ...options.transition },\n selectors: { ...defaultSelectors, ...options.selectors },\n classNames: { ...defaultClassNames, ...options.classNames },\n defaults: { ...defaultOptions.defaults, ...options.defaults },\n onInit: options.onInit,\n onBeforeChange: options.onBeforeChange,\n onAfterChange: options.onAfterChange\n };\n\n const slides = qsa(root, resolved.selectors.slide);\n if (!slides.length) {\n throw new Error(\"Carousel requires at least one slide element.\");\n }\n\n const controls = resolveControls(root, resolved, slides.length);\n const reducedMotion = prefersReducedMotion();\n const state: TransitionState = { activeTimeline: null };\n\n let currentIndex = normalizeIndex(resolved.initialIndex, slides.length, resolved.loop);\n let animating = false;\n\n setSlidesState(slides, currentIndex, resolved.classNames.activeSlide);\n setAllDotsState(currentIndex);\n\n const onPrevClick = (event: Event) => {\n event.preventDefault();\n prev();\n };\n\n const onNextClick = (event: Event) => {\n event.preventDefault();\n next();\n };\n\n const onDotsClick = (event: Event) => {\n const target = (event.target as Element | null)?.closest(generatedDotSelector);\n if (!target) return;\n event.preventDefault();\n const indexAttr = target.getAttribute(\"data-carousel-dot-index\");\n if (!indexAttr) return;\n const index = Number.parseInt(indexAttr, 10);\n if (!Number.isFinite(index)) return;\n if (animating) return;\n const nextIndex = normalizeIndex(index, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n setAllDotsState(nextIndex);\n goTo(nextIndex);\n };\n\n // const onKeydown = (event: KeyboardEvent) => {\n // if (animating) return;\n // if (!isFocusableWithin(root, document.activeElement)) return;\n // if (event.key === \"ArrowLeft\") {\n // event.preventDefault();\n // prev();\n // } else if (event.key === \"ArrowRight\") {\n // event.preventDefault();\n // next();\n // }\n // };\n\n controls.prev.forEach((control) => control.addEventListener(\"click\", onPrevClick));\n controls.next.forEach((control) => control.addEventListener(\"click\", onNextClick));\n controls.dotsContainers.forEach((container) => container.addEventListener(\"click\", onDotsClick));\n //if enabled in the future, also enable root.removeEventListener(\"keydown\", onKeydown); below\n //root.addEventListener(\"keydown\", onKeydown);\n\n const instance: CarouselInstance = {\n goTo,\n next,\n prev,\n destroy,\n getIndex: () => currentIndex,\n getCount: () => slides.length,\n isAnimating: () => animating\n };\n\n resolved.onInit?.(instance);\n\n function disableControls(disabled: boolean): void {\n toggleClass(root, resolved.classNames.animatingRoot, disabled);\n controls.prev.forEach((control) => {\n setDisabled(control, disabled, resolved.classNames.disabledControl);\n });\n controls.next.forEach((control) => {\n setDisabled(control, disabled, resolved.classNames.disabledControl);\n });\n controls.dotsContainers.forEach((container) => {\n setAriaDisabled(container, disabled);\n });\n controls.dots.forEach((dotGroup) => {\n dotGroup.forEach((dot) => {\n setAriaDisabled(dot, disabled);\n toggleClass(dot, resolved.classNames.disabledControl, disabled);\n });\n });\n }\n\n function setAllDotsState(activeIndex: number): void {\n controls.dots.forEach((dotGroup) => {\n setDotsState(dotGroup, activeIndex, resolved.classNames.activeDot);\n });\n }\n\n function applyActiveState(nextIndex: number): void {\n currentIndex = nextIndex;\n setSlidesState(slides, currentIndex, resolved.classNames.activeSlide);\n setAllDotsState(currentIndex);\n }\n\n function finalizeTransition(from: number, to: number, direction: 1 | -1): void {\n animating = false;\n disableControls(false);\n state.activeTimeline = null;\n resolved.onAfterChange?.({ from, to, direction });\n }\n\n function transitionTo(nextIndex: number, immediate?: boolean): void {\n if (animating) return;\n if (nextIndex === currentIndex) return;\n\n const from = currentIndex;\n const to = nextIndex;\n const direction = getDirection(from, to, slides.length, resolved.loop);\n\n animating = true;\n disableControls(true);\n resolved.onBeforeChange?.({ from, to, direction });\n\n if (immediate || reducedMotion) {\n applyActiveState(to);\n finalizeTransition(from, to, direction);\n return;\n }\n\n const exitTl = ctx.add(() => buildSlideExitTimeline(slides[from], direction, resolved, gsapInstance)) as gsap.core.Timeline;\n const enterTl = ctx.add(() => buildSlideEnterTimeline(slides[to], direction, resolved, gsapInstance)) as gsap.core.Timeline;\n\n const master = ctx.add(\n () =>\n gsapInstance.timeline({\n onComplete: () => {\n finalizeTransition(from, to, direction);\n }\n })\n ) as gsap.core.Timeline;\n\n state.activeTimeline = master;\n const overlap = Math.max(0, resolved.transition.exitOverlap ?? resolved.transition.overlap);\n const enterAt = Math.max(0, exitTl.duration() - overlap);\n master.add(exitTl, 0);\n master.add(() => applyActiveState(to), enterAt);\n master.add(enterTl, enterAt);\n }\n\n function goTo(index: number, opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = normalizeIndex(index, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function next(opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = resolveNextIndex(currentIndex, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n setAllDotsState(nextIndex);\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function prev(opts?: { immediate?: boolean }): void {\n if (animating) return;\n const nextIndex = resolvePrevIndex(currentIndex, slides.length, resolved.loop);\n if (nextIndex === currentIndex) return;\n setAllDotsState(nextIndex);\n transitionTo(nextIndex, opts?.immediate);\n }\n\n function destroy(): void {\n controls.prev.forEach((control) => control.removeEventListener(\"click\", onPrevClick));\n controls.next.forEach((control) => control.removeEventListener(\"click\", onNextClick));\n controls.dotsContainers.forEach((container) => container.removeEventListener(\"click\", onDotsClick));\n //root.removeEventListener(\"keydown\", onKeydown);\n\n state.activeTimeline?.kill();\n animating = false;\n ctx.revert();\n\n controls.dotsContainers.forEach((container) => {\n container.querySelectorAll(generatedDotSelector).forEach((dot) => {\n dot.remove();\n });\n });\n controls.dotTemplates.forEach((template) => {\n if (template) {\n template.hidden = false;\n }\n });\n }\n\n return instance;\n}\n\nfunction resolveControls(root: Element, options: CarouselOptions, slideCount: number): ResolvedControls {\n const rootId = root.getAttribute(\"id\");\n const queryAllWithFallback = <T extends Element>(selector: string): T[] => {\n if (rootId) {\n const scoped = Array.from(document.querySelectorAll<T>(`${selector}[data-for=\"${rootId}\"]`));\n if (scoped.length) return scoped;\n }\n return qsa<T>(root, selector);\n };\n\n const prev = queryAllWithFallback<Element>(options.selectors.prev);\n const next = queryAllWithFallback<Element>(options.selectors.next);\n const dotsContainers = queryAllWithFallback<HTMLElement>(options.selectors.dots);\n const dotTemplates: Array<HTMLElement | null> = [];\n const dots = dotsContainers.map((container) => {\n const template = qs<HTMLElement>(container, options.selectors.dotTemplate);\n dotTemplates.push(template);\n return setupDots(container, template, options, slideCount);\n });\n\n return { prev, next, dotsContainers, dotTemplates, dots };\n}\n\nfunction setupDots(\n container: HTMLElement,\n template: HTMLElement | null,\n options: CarouselOptions,\n slideCount: number\n): Element[] {\n const dots = qsa(container, generatedDotSelector);\n dots.forEach((dot) => dot.remove());\n\n if (!template) return [];\n\n const clones: Element[] = [];\n const disableOpacityAttr = template.getAttribute(\"data-carousel-disable-opacity\");\n\n for (let i = 0; i < slideCount; i += 1) {\n const clone = template.cloneNode(true) as Element;\n clone.removeAttribute(\"id\");\n clone.setAttribute(\"data-carousel-dot\", \"true\");\n clone.setAttribute(\"data-carousel-dot-index\", String(i));\n if (disableOpacityAttr !== null) {\n clone.setAttribute(\"data-carousel-disable-opacity\", disableOpacityAttr);\n } else {\n clone.removeAttribute(\"data-carousel-disable-opacity\");\n }\n clone.setAttribute(\"aria-label\", `Go to slide ${i + 1}`);\n clone.classList.add(options.classNames.dot);\n if (clone instanceof HTMLButtonElement && !clone.getAttribute(\"type\")) {\n clone.setAttribute(\"type\", \"button\");\n }\n container.appendChild(clone);\n clones.push(clone);\n }\n\n template.hidden = true;\n\n return clones;\n}\n\nfunction normalizeIndex(index: number, count: number, loop: boolean): number {\n if (count <= 0) return 0;\n if (loop) {\n const wrapped = ((index % count) + count) % count;\n return wrapped;\n }\n if (index < 0) return 0;\n if (index >= count) return count - 1;\n return index;\n}\n\nfunction resolveNextIndex(current: number, count: number, loop: boolean): number {\n if (count <= 0) return current;\n if (current + 1 < count) return current + 1;\n return loop ? 0 : current;\n}\n\nfunction resolvePrevIndex(current: number, count: number, loop: boolean): number {\n if (count <= 0) return current;\n if (current - 1 >= 0) return current - 1;\n return loop ? count - 1 : current;\n}\n\nfunction getDirection(from: number, to: number, count: number, loop: boolean): 1 | -1 {\n if (!loop) return to > from ? 1 : -1;\n if (from === count - 1 && to === 0) return 1;\n if (from === 0 && to === count - 1) return -1;\n return to > from ? 1 : -1;\n}\n","import { gsap } from \"gsap\";\n\nexport function registerGsapPlugins(\n ...plugins: gsap.RegisterablePlugins[]\n): void {\n gsap.registerPlugin(...plugins);\n}\n"]}
|
package/dist/index.d.cts
CHANGED