@brandonsoccer22/gsap-editorial-carousel 0.1.2 → 0.1.3
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 +1 -1
- package/dist/index.cjs +605 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +79 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.js +600 -0
- package/dist/index.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +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"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { gsap as gsap$1 } from 'gsap';
|
|
2
|
+
|
|
3
|
+
type AnimationFactoryContext = {
|
|
4
|
+
el: Element;
|
|
5
|
+
tl: gsap$1.core.Timeline;
|
|
6
|
+
gsap: typeof gsap$1;
|
|
7
|
+
opts: {
|
|
8
|
+
dur: number;
|
|
9
|
+
delay: number;
|
|
10
|
+
ease?: string;
|
|
11
|
+
direction: 1 | -1;
|
|
12
|
+
at: number;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
type AnimationFactory = (ctx: AnimationFactoryContext) => void;
|
|
16
|
+
type CarouselOptions = {
|
|
17
|
+
loop: boolean;
|
|
18
|
+
initialIndex: number;
|
|
19
|
+
gsap?: typeof gsap$1;
|
|
20
|
+
selectors: {
|
|
21
|
+
root: string;
|
|
22
|
+
slide: string;
|
|
23
|
+
prev: string;
|
|
24
|
+
next: string;
|
|
25
|
+
dots: string;
|
|
26
|
+
dotTemplate: string;
|
|
27
|
+
};
|
|
28
|
+
classNames: {
|
|
29
|
+
activeSlide: string;
|
|
30
|
+
animatingRoot: string;
|
|
31
|
+
disabledControl: string;
|
|
32
|
+
dot: string;
|
|
33
|
+
activeDot: string;
|
|
34
|
+
};
|
|
35
|
+
defaults: {
|
|
36
|
+
dur: number;
|
|
37
|
+
ease: string;
|
|
38
|
+
};
|
|
39
|
+
transition: {
|
|
40
|
+
overlap: number;
|
|
41
|
+
};
|
|
42
|
+
onInit?: (instance: CarouselInstance) => void;
|
|
43
|
+
onBeforeChange?: (payload: {
|
|
44
|
+
from: number;
|
|
45
|
+
to: number;
|
|
46
|
+
direction: 1 | -1;
|
|
47
|
+
}) => void;
|
|
48
|
+
onAfterChange?: (payload: {
|
|
49
|
+
from: number;
|
|
50
|
+
to: number;
|
|
51
|
+
direction: 1 | -1;
|
|
52
|
+
}) => void;
|
|
53
|
+
};
|
|
54
|
+
type CarouselInstance = {
|
|
55
|
+
goTo: (index: number, opts?: {
|
|
56
|
+
immediate?: boolean;
|
|
57
|
+
}) => void;
|
|
58
|
+
next: (opts?: {
|
|
59
|
+
immediate?: boolean;
|
|
60
|
+
}) => void;
|
|
61
|
+
prev: (opts?: {
|
|
62
|
+
immediate?: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
destroy: () => void;
|
|
65
|
+
getIndex: () => number;
|
|
66
|
+
getCount: () => number;
|
|
67
|
+
isAnimating: () => boolean;
|
|
68
|
+
};
|
|
69
|
+
declare function createCarousel(rootInput: string | Element, options?: Partial<CarouselOptions>): CarouselInstance;
|
|
70
|
+
|
|
71
|
+
declare function registerGsapPlugins(...plugins: gsap.RegisterablePlugins[]): void;
|
|
72
|
+
|
|
73
|
+
type AnimationFactoryWithReverse = AnimationFactory & {
|
|
74
|
+
reverse?: AnimationFactory;
|
|
75
|
+
};
|
|
76
|
+
declare function registerAnimation(name: string, factory: AnimationFactoryWithReverse): void;
|
|
77
|
+
declare function registerAnimations(map: Record<string, AnimationFactoryWithReverse>): void;
|
|
78
|
+
|
|
79
|
+
export { type AnimationFactory, type AnimationFactoryContext, type CarouselInstance, type CarouselOptions, createCarousel, registerAnimation, registerAnimations, registerGsapPlugins };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { gsap as gsap$1 } from 'gsap';
|
|
2
|
+
|
|
3
|
+
type AnimationFactoryContext = {
|
|
4
|
+
el: Element;
|
|
5
|
+
tl: gsap$1.core.Timeline;
|
|
6
|
+
gsap: typeof gsap$1;
|
|
7
|
+
opts: {
|
|
8
|
+
dur: number;
|
|
9
|
+
delay: number;
|
|
10
|
+
ease?: string;
|
|
11
|
+
direction: 1 | -1;
|
|
12
|
+
at: number;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
type AnimationFactory = (ctx: AnimationFactoryContext) => void;
|
|
16
|
+
type CarouselOptions = {
|
|
17
|
+
loop: boolean;
|
|
18
|
+
initialIndex: number;
|
|
19
|
+
gsap?: typeof gsap$1;
|
|
20
|
+
selectors: {
|
|
21
|
+
root: string;
|
|
22
|
+
slide: string;
|
|
23
|
+
prev: string;
|
|
24
|
+
next: string;
|
|
25
|
+
dots: string;
|
|
26
|
+
dotTemplate: string;
|
|
27
|
+
};
|
|
28
|
+
classNames: {
|
|
29
|
+
activeSlide: string;
|
|
30
|
+
animatingRoot: string;
|
|
31
|
+
disabledControl: string;
|
|
32
|
+
dot: string;
|
|
33
|
+
activeDot: string;
|
|
34
|
+
};
|
|
35
|
+
defaults: {
|
|
36
|
+
dur: number;
|
|
37
|
+
ease: string;
|
|
38
|
+
};
|
|
39
|
+
transition: {
|
|
40
|
+
overlap: number;
|
|
41
|
+
};
|
|
42
|
+
onInit?: (instance: CarouselInstance) => void;
|
|
43
|
+
onBeforeChange?: (payload: {
|
|
44
|
+
from: number;
|
|
45
|
+
to: number;
|
|
46
|
+
direction: 1 | -1;
|
|
47
|
+
}) => void;
|
|
48
|
+
onAfterChange?: (payload: {
|
|
49
|
+
from: number;
|
|
50
|
+
to: number;
|
|
51
|
+
direction: 1 | -1;
|
|
52
|
+
}) => void;
|
|
53
|
+
};
|
|
54
|
+
type CarouselInstance = {
|
|
55
|
+
goTo: (index: number, opts?: {
|
|
56
|
+
immediate?: boolean;
|
|
57
|
+
}) => void;
|
|
58
|
+
next: (opts?: {
|
|
59
|
+
immediate?: boolean;
|
|
60
|
+
}) => void;
|
|
61
|
+
prev: (opts?: {
|
|
62
|
+
immediate?: boolean;
|
|
63
|
+
}) => void;
|
|
64
|
+
destroy: () => void;
|
|
65
|
+
getIndex: () => number;
|
|
66
|
+
getCount: () => number;
|
|
67
|
+
isAnimating: () => boolean;
|
|
68
|
+
};
|
|
69
|
+
declare function createCarousel(rootInput: string | Element, options?: Partial<CarouselOptions>): CarouselInstance;
|
|
70
|
+
|
|
71
|
+
declare function registerGsapPlugins(...plugins: gsap.RegisterablePlugins[]): void;
|
|
72
|
+
|
|
73
|
+
type AnimationFactoryWithReverse = AnimationFactory & {
|
|
74
|
+
reverse?: AnimationFactory;
|
|
75
|
+
};
|
|
76
|
+
declare function registerAnimation(name: string, factory: AnimationFactoryWithReverse): void;
|
|
77
|
+
declare function registerAnimations(map: Record<string, AnimationFactoryWithReverse>): void;
|
|
78
|
+
|
|
79
|
+
export { type AnimationFactory, type AnimationFactoryContext, type CarouselInstance, type CarouselOptions, createCarousel, registerAnimation, registerAnimations, registerGsapPlugins };
|