react-motion-gallery 2.0.2 → 2.0.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/dist/FullscreenRuntime-CEYIXWZZ.mjs +2666 -0
- package/dist/FullscreenRuntime-CEYIXWZZ.mjs.map +1 -0
- package/dist/FullscreenRuntime-D6G3BRAU.css +123 -0
- package/dist/FullscreenRuntime-D6G3BRAU.css.map +1 -0
- package/dist/chunk-HOCUKMYX.mjs +2634 -0
- package/dist/chunk-HOCUKMYX.mjs.map +1 -0
- package/dist/index.css +16 -16
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +2791 -8037
- package/dist/index.mjs.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/package.json +5 -6
- package/dist/index.d.ts +0 -534
- package/dist/index.js +0 -12669
- package/dist/index.js.map +0 -1
- package/dist/metafile-cjs.json +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/Gallery/shared/transitions/objectPosition.ts","../src/Gallery/shared/transitions/objectFitTransform.ts","../src/Gallery/fullscreen/fullscreenIntro.tsx","../src/Gallery/slider/sliderSub.tsx","../src/Gallery/shared/input/pointerTypes.ts","../src/Gallery/shared/input/dragTracker.ts","../src/Gallery/shared/motion/vector1d.ts","../src/Gallery/shared/motion/scrollBody.ts","../src/Gallery/shared/motion/limit.ts","../src/Gallery/shared/motion/scrollLooper.ts","../src/Gallery/shared/motion/scrollBounds.ts","../src/Gallery/shared/motion/scrollTarget.ts","../src/Gallery/shared/motion/eventStore.ts","../src/Gallery/shared/motion/animations.ts","../src/Gallery/shared/motion/counter.ts","../src/Gallery/shared/responsive.ts","../src/Gallery/shared/motion/baseLimit.ts","../src/Gallery/shared/motion/translate.ts","../src/Gallery/shared/types/axis.ts","../src/Gallery/slider/thumbnails/ThumbnailSlider.module.css","../src/Gallery/shared/skeleton/buildScopedSkeletonCountCss.ts","../src/Gallery/slider/controls/arrows.tsx","../src/Gallery/slider/thumbnails/ThumbnailSlider.tsx"],"names":["item","startAnimation","lastT","mathAbs","index","clamp","jsx","Fragment","root","next","rawKids","count","container","i","data","cw","scopeId","style","direction","target","indexCurrent","indexPrevious","body","allowedForce","force","len","dirIndex","nextIndex","dirBump","baseScrollTo","jsxs"],"mappings":"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","file":"chunk-HOCUKMYX.mjs","sourcesContent":["export function parseObjectPosition(op: string | null): { x: number; y: number } {\n if (!op) return { x: 0.5, y: 0.5 }\n const mapKW = (kw: string, isX: boolean) => {\n const lower = kw.toLowerCase()\n if (isX) {\n if (lower === 'left') return 0\n if (lower === 'center') return 0.5\n if (lower === 'right') return 1\n } else {\n if (lower === 'top') return 0\n if (lower === 'center') return 0.5\n if (lower === 'bottom') return 1\n }\n return NaN\n }\n const parts = op.trim().split(/\\s+/)\n let xf = 0.5, yf = 0.5\n if (parts.length >= 1) {\n const p0 = parts[0]\n if (p0.endsWith('%')) xf = Math.min(1, Math.max(0, parseFloat(p0) / 100))\n else {\n const m0 = mapKW(p0, true)\n if (!Number.isNaN(m0)) xf = m0\n }\n }\n if (parts.length >= 2) {\n const p1 = parts[1]\n if (p1.endsWith('%')) yf = Math.min(1, Math.max(0, parseFloat(p1) / 100))\n else {\n const m1 = mapKW(p1, false)\n if (!Number.isNaN(m1)) yf = m1\n }\n }\n return { x: xf, y: yf }\n }","export function coverTransformForRect(\n natW: number,\n natH: number,\n cropRect: DOMRect,\n objPos: { x: number; y: number } | null\n ) {\n const cropW = Math.max(1, cropRect.width);\n const cropH = Math.max(1, cropRect.height);\n\n const s = Math.max(cropW / Math.max(1, natW), cropH / Math.max(1, natH));\n\n const scaledW = natW * s;\n const scaledH = natH * s;\n\n const ox = objPos?.x ?? 0.5;\n const oy = objPos?.y ?? 0.5;\n\n const overflowX = Math.max(0, scaledW - cropW);\n const overflowY = Math.max(0, scaledH - cropH);\n\n const dx = (0.5 - ox) * overflowX;\n const dy = (0.5 - oy) * overflowY;\n\n const cx = cropRect.left + cropW / 2 + dx;\n const cy = cropRect.top + cropH / 2 + dy;\n\n return { cx, cy, scale: s };\n }\n\n export function containTransformForRect(\n natW: number,\n natH: number,\n cropRect: DOMRect,\n objPos: { x: number; y: number } | null\n ) {\n const cropW = Math.max(1, cropRect.width);\n const cropH = Math.max(1, cropRect.height);\n\n const s = Math.min(cropW / Math.max(1, natW), cropH / Math.max(1, natH));\n\n const scaledW = natW * s;\n const scaledH = natH * s;\n\n const ox = objPos?.x ?? 0.5;\n const oy = objPos?.y ?? 0.5;\n\n const extraX = Math.max(0, cropW - scaledW);\n const extraY = Math.max(0, cropH - scaledH);\n\n const left = cropRect.left + extraX * ox;\n const top = cropRect.top + extraY * oy;\n\n const cx = left + scaledW / 2;\n const cy = top + scaledH / 2;\n\n return { cx, cy, scale: s };\n }\n\n export function objectFitContentRect(\n natW: number,\n natH: number,\n box: DOMRect,\n fit: 'contain' | 'cover',\n objPos: { x: number; y: number }\n ) {\n const scale =\n fit === 'contain'\n ? Math.min(box.width / natW, box.height / natH)\n : Math.max(box.width / natW, box.height / natH);\n\n const w = natW * scale;\n const h = natH * scale;\n\n const left = box.left + (box.width - w) * objPos.x;\n const top = box.top + (box.height - h) * objPos.y;\n\n return new DOMRect(left, top, w, h);\n }","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { createRoot, Root } from \"react-dom/client\";\nimport { parseObjectPosition } from \"../shared/transitions/objectPosition\";\nimport {\n containTransformForRect,\n coverTransformForRect,\n objectFitContentRect,\n} from \"../shared/transitions/objectFitTransform\";\nimport type {\n FsCaptionPlacement,\n FullscreenOptions,\n FsCaptionRenderArgs,\n} from \"../fullscreen/types\";\nimport type { ElementStyle } from \"../shared/types/elements\";\n\ntype RefEl<T extends HTMLElement> = React.RefObject<T | null>;\n\nexport type FullscreenIntroArgs = {\n /** Source image element that was clicked/tapped. */\n origImg: HTMLImageElement;\n\n /** Index of the item you’re opening fullscreen to. */\n index: number;\n\n /** The resolved/normalized items the fullscreen slider will use. */\n normalizedItems: any[];\n\n /** Current RTL state (already resolved). */\n isRtl: boolean;\n\n /** CSS module map (needs: fullscreenOverlay, fsOverlayCaption, open) */\n styles: Record<string, string>;\n\n /** Fullscreen options (single unified source of truth). */\n fs: FullscreenOptions;\n\n /** Refs used by the rest of fullscreen system */\n overlayDivRef: RefEl<HTMLDivElement>;\n duplicateImgRef: RefEl<HTMLElement>;\n overlayCaptionRef: RefEl<HTMLDivElement>;\n overlayCaptionRootRef: React.RefObject<Root | null>;\n\n /**\n * If you have a thumbnails container in fullscreen, pass it so we can reserve content space\n * during the intro transform.\n */\n fsThumbContainerRef?: RefEl<HTMLElement>;\n\n /** State toggles in your fullscreen host */\n setShowFullscreenSlider: (v: boolean) => void;\n setFsFadeOpening: (v: boolean) => void;\n\n /** Optional: prevent gestures / pointer leak during intro */\n addShield?: (timeoutMs?: number) => void;\n\n /**\n * Your existing resolver:\n * - returns final placement (or null to mean “no caption area reserved”)\n */\n resolveFsCaptionPlacement: (\n placement: any,\n breakpoint: number | undefined,\n viewportWidth: number\n ) => FsCaptionPlacement | null;\n\n /**\n * Used to find a “slide element” to compute cover transforms.\n * Defaults: grid/masonry -> .rmg__grid-item, slider -> .rmg__slide\n */\n closestSelector?: string;\n};\n\nfunction elementStyleFromCfg(\n cfg?: { className?: string; style?: React.CSSProperties } | null\n): ElementStyle | undefined {\n if (!cfg) return undefined;\n const out: ElementStyle = {};\n if (cfg.className) out.className = cfg.className;\n if (cfg.style) out.style = cfg.style as any;\n return out;\n}\n\nfunction applyElementStyle(el: HTMLElement | null, cfg?: ElementStyle) {\n if (!el || !cfg) return;\n\n if (cfg.className) {\n cfg.className\n .split(\" \")\n .map((s) => s.trim())\n .filter(Boolean)\n .forEach((c) => el.classList.add(c));\n }\n\n if (cfg.style) {\n Object.assign(el.style, cfg.style);\n }\n}\n\nfunction detectVideoSlide(item: any, slideEl: HTMLElement) {\n return (\n item?.type === \"video\" ||\n item?.kind === \"video\" ||\n item?.mediaType === \"video\" ||\n !!item?.videoSrc ||\n !!item?.sources?.video ||\n !!item?.plyrSource ||\n !!(slideEl as any)?.dataset?.rmgVideo\n );\n}\n\n/**\n * Unified fullscreen intro for Slider / Grid / Masonry / Entries.\n * - Uses ONLY `fs: FullscreenOptions` for behavior.\n * - Computes clip-path + duplicate image transform intro (or fade intro).\n * - Optionally renders a temporary “overlay caption” during the intro.\n */\nexport function runFullscreenIntro(args: FullscreenIntroArgs) {\n const {\n origImg,\n index,\n normalizedItems,\n isRtl,\n styles,\n fs,\n overlayDivRef,\n duplicateImgRef,\n overlayCaptionRef,\n overlayCaptionRootRef,\n fsThumbContainerRef,\n setShowFullscreenSlider,\n setFsFadeOpening,\n addShield,\n resolveFsCaptionPlacement,\n closestSelector,\n } = args;\n\n if (!origImg) return;\n\n const DURATION_MS = fs.effects?.introDuration ?? 300;\n const EASING = fs.effects?.introEasing ?? \"cubic-bezier(.4,0,.22,1)\";\n\n addShield?.(400);\n\n const vw = document.documentElement.clientWidth;\n const vh = window.innerHeight;\n\n const slideEl =\n (origImg.closest(\n closestSelector ??\n // sensible default:\n (closestSelector === undefined ? \".rmg__grid-item, .rmg__slide\" : \"\")\n ) as HTMLElement) ||\n (origImg.parentElement as HTMLElement) ||\n origImg;\n\n const slideRect = slideEl.getBoundingClientRect();\n const imgRect = origImg.getBoundingClientRect();\n\n const natW = Math.max(1, origImg.naturalWidth || 0);\n const natH = Math.max(1, origImg.naturalHeight || 0);\n\n const insetForRect = (r: DOMRect) => {\n const top = r.top;\n const left = r.left;\n const right = vw - (r.left + r.width);\n const bottom = vh - (r.top + r.height);\n return `inset(${top}px ${right}px ${bottom}px ${left}px)`;\n };\n\n const fit = getComputedStyle(origImg).objectFit || \"cover\";\n const cs0 = getComputedStyle(origImg);\n const startObjPos = parseObjectPosition(cs0?.objectPosition ?? null);\n\n const visibleImgRect =\n fit === \"contain\"\n ? objectFitContentRect(natW, natH, imgRect, \"contain\", startObjPos)\n : imgRect;\n\n const startInset = insetForRect(visibleImgRect);\n\n // --- Overlay (fade layer behind fullscreen) ---\n const overlay = document.createElement(\"div\");\n overlay.className = styles.fullscreenOverlay;\n overlayDivRef.current = overlay;\n\n overlay.style.opacity = \"0\";\n overlay.style.pointerEvents = \"none\";\n overlay.style.transition = \"none\";\n\n document.body.appendChild(overlay);\n void overlay.offsetWidth;\n overlay.style.transition = `opacity ${DURATION_MS}ms ${EASING}`;\n\n // --- Reserve content area for caption + thumbnails ---\n const effectivePlacement = resolveFsCaptionPlacement(\n fs.caption?.placement,\n fs.caption?.breakpoint,\n vw\n );\n\n const DEFAULT_SIDE = 280;\n const DEFAULT_TOP_BOTTOM = 200;\n\n const sideWidth = fs.caption?.width ?? DEFAULT_SIDE;\n const topBottomHeight = fs.caption?.height ?? DEFAULT_TOP_BOTTOM;\n\n let contentLeft = 0;\n let contentRight = vw;\n let contentTop = 0;\n let contentBottom = vh;\n\n if (effectivePlacement === \"right\") {\n contentRight = Math.max(0, vw - sideWidth);\n } else if (effectivePlacement === \"left\") {\n contentLeft = Math.min(vw, sideWidth);\n } else if (effectivePlacement === \"top\") {\n contentTop = Math.min(vh, topBottomHeight);\n } else if (effectivePlacement === \"bottom\") {\n contentBottom = Math.max(0, vh - topBottomHeight);\n }\n\n const thumbPos = fs.thumbnails?.layout?.position;\n if (fsThumbContainerRef?.current && thumbPos) {\n const H = fsThumbContainerRef.current.offsetHeight;\n const W = fsThumbContainerRef.current.offsetWidth;\n\n if (thumbPos === \"top\") contentTop += H;\n else if (thumbPos === \"bottom\") contentBottom -= H;\n else if (thumbPos === \"left\") contentLeft += W;\n else if (thumbPos === \"right\") contentRight -= W;\n }\n\n const contentRect = new DOMRect(\n contentLeft,\n contentTop,\n Math.max(1, contentRight - contentLeft),\n Math.max(1, contentBottom - contentTop)\n );\n\n // --- Optional overlay caption (temporary, during intro) ---\n if (typeof fs.caption?.render === \"function\") {\n try {\n const overlayCaption = document.createElement(\"div\");\n overlayCaption.className = styles.fsOverlayCaption;\n overlayCaptionRef.current = overlayCaption;\n\n // base styles (same as your existing versions)\n const base: Partial<CSSStyleDeclaration> = {\n position: \"fixed\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"left\",\n padding: \"0.75rem 1rem\",\n color: \"#fff\",\n fontSize: \"0.875rem\",\n boxSizing: \"border-box\",\n pointerEvents: \"none\",\n transition:\n \"opacity 220ms cubic-bezier(.4,0,.22,1), transform 220ms cubic-bezier(.4,0,.22,1)\",\n zIndex: \"9999\",\n };\n\n if (effectivePlacement === \"right\") {\n base.top = thumbPos === \"top\" ? `${contentTop}px` : \"0\";\n base.bottom = \"0\";\n base.left = `${contentRight}px`;\n base.width = `${sideWidth}px`;\n base.height = thumbPos === \"bottom\" ? `${contentBottom}px` : \"auto\";\n } else if (effectivePlacement === \"left\") {\n base.top = thumbPos === \"top\" ? `${contentTop}px` : \"0\";\n base.bottom = \"0\";\n base.left = \"0\";\n base.width = `${sideWidth}px`;\n base.height = thumbPos === \"bottom\" ? `${contentBottom}px` : \"auto\";\n } else if (effectivePlacement === \"top\") {\n base.top = `${Math.max(0, contentTop - topBottomHeight)}px`;\n base.left = `${contentLeft}px`;\n base.right = `${Math.max(0, vw - contentRight)}px`;\n base.height = `${topBottomHeight}px`;\n } else if (effectivePlacement === \"bottom\") {\n const bottomOffset = Math.max(\n 0,\n vh - contentBottom - topBottomHeight\n );\n base.bottom = `${bottomOffset}px`;\n base.left = `${contentLeft}px`;\n base.right = `${Math.max(0, vw - contentRight)}px`;\n base.height = `${topBottomHeight}px`;\n } else {\n // if placement resolves to null, don’t reserve space; still allow overlay caption\n base.bottom = \"0\";\n base.left = \"0\";\n base.right = \"0\";\n base.height = \"auto\";\n }\n\n Object.assign(overlayCaption.style, base);\n\n // user overrides\n if (fs.caption?.className) {\n fs.caption.className\n .split(\" \")\n .map((s) => s.trim())\n .filter(Boolean)\n .forEach((c) => overlayCaption.classList.add(c));\n }\n if (fs.caption?.style) {\n Object.assign(overlayCaption.style, fs.caption.style);\n }\n\n overlay.appendChild(overlayCaption);\n\n const root = createRoot(overlayCaption);\n overlayCaptionRootRef.current = root;\n\n const item = normalizedItems[index];\n const captionNode = fs.caption.render({\n item,\n index,\n isZoomed: false,\n } satisfies FsCaptionRenderArgs);\n\n root.render(<>{captionNode}</>);\n } catch (err) {\n console.error(\"[RMG] Failed to render overlay caption\", err);\n }\n }\n\n const imageCount = normalizedItems.length;\n\n // --- Decide fade vs clip+transform intro ---\n const item = normalizedItems[index];\n const isVideoSlide = detectVideoSlide(item, slideEl);\n const forceFadeIntro = !!fs.effects?.introFade || isVideoSlide;\n\n let clipper: HTMLDivElement | null = null;\n let dup: HTMLImageElement | null = null;\n\n if (!forceFadeIntro) {\n clipper = document.createElement(\"div\");\n Object.assign(clipper.style, {\n position: \"fixed\",\n inset: \"0\",\n clipPath: startInset,\n willChange: \"clip-path\",\n transition: \"none\",\n zIndex: \"9998\",\n } as CSSStyleDeclaration);\n\n dup = document.createElement(\"img\");\n dup.src = (origImg as HTMLImageElement).currentSrc || origImg.src;\n\n Object.assign(dup.style, {\n position: \"fixed\",\n left: \"0\",\n top: \"0\",\n width: `${natW}px`,\n height: `${natH}px`,\n maxWidth: \"none\",\n maxHeight: \"none\",\n transformOrigin: \"50% 50%\",\n willChange: \"transform\",\n transition: \"none\",\n opacity: \"0\",\n display: \"block\",\n zIndex: \"9998\",\n } as CSSStyleDeclaration);\n\n duplicateImgRef.current = dup;\n\n clipper.appendChild(dup);\n // Append overlay + clipper in one go (reduces paint jitter)\n const frag = document.createDocumentFragment();\n frag.append(overlay, clipper);\n document.body.appendChild(frag);\n\n const startT =\n fit === \"contain\"\n ? containTransformForRect(natW, natH, visibleImgRect, startObjPos)\n : coverTransformForRect(natW, natH, slideRect, startObjPos);\n\n dup.style.transform =\n `translate3d(${startT.cx}px, ${startT.cy}px, 0)` +\n ` translate3d(${-natW / 2}px, ${-natH / 2}px, 0)` +\n ` scale(${startT.scale})`;\n\n void dup.offsetWidth;\n void clipper.offsetWidth;\n\n const fitsIntrinsic = natW <= contentRect.width && natH <= contentRect.height;\n const endObjPos = { x: 0.5, y: 0.5 };\n\n const endT = fitsIntrinsic\n ? {\n cx: contentRect.x + contentRect.width / 2,\n cy: contentRect.y + contentRect.height / 2,\n scale: 1,\n }\n : containTransformForRect(natW, natH, contentRect, endObjPos);\n\n const finalTransform =\n `translate3d(${endT.cx}px, ${endT.cy}px, 0)` +\n ` translate3d(${-natW / 2}px, ${-natH / 2}px, 0)` +\n ` scale(${endT.scale})`;\n\n function startAnimation() {\n // reset to start (important if decode resolves after layout changes)\n dup!.style.transform =\n `translate3d(${startT.cx}px, ${startT.cy}px, 0)` +\n ` translate3d(${-natW / 2}px, ${-natH / 2}px, 0)` +\n ` scale(${startT.scale})`;\n\n void dup!.offsetWidth;\n void clipper!.offsetWidth;\n void overlay.offsetWidth;\n\n clipper!.style.transition = `clip-path ${DURATION_MS}ms ${EASING}`;\n dup!.style.transition = `transform ${DURATION_MS}ms ${EASING}`;\n overlay.style.transition = `opacity ${DURATION_MS}ms ${EASING}`;\n\n requestAnimationFrame(() => {\n clipper!.style.clipPath = \"inset(0px 0px 0px 0px)\";\n dup!.style.transform = finalTransform;\n dup!.style.opacity = \"1\";\n overlay.style.opacity = \"1\";\n overlay.style.pointerEvents = \"auto\";\n if (overlayCaptionRef.current) {\n overlayCaptionRef.current.classList.add(styles.open);\n }\n });\n }\n\n const ready = (dup as any).decode\n ? (dup as HTMLImageElement).decode().catch(() => {})\n : new Promise<void>((resolve) => {\n if (dup!.complete) return resolve();\n dup!.addEventListener(\"load\", () => resolve(), { once: true });\n dup!.addEventListener(\"error\", () => resolve(), { once: true });\n });\n\n ready.then(() => startAnimation());\n\n // Open controls immediately (while animation runs)\n requestAnimationFrame(() => {\n overlay.style.opacity = \"1\";\n overlay.style.pointerEvents = \"auto\";\n });\n\n const onEnd = async (ev: TransitionEvent) => {\n if (ev.propertyName !== \"transform\") return;\n dup!.removeEventListener(\"transitionend\", onEnd);\n\n await new Promise((r) =>\n requestAnimationFrame(() => requestAnimationFrame(r))\n );\n\n setShowFullscreenSlider(true);\n\n requestAnimationFrame(() => {\n if (overlayCaptionRootRef.current) {\n overlayCaptionRootRef.current.unmount();\n overlayCaptionRootRef.current = null;\n }\n if (overlayCaptionRef.current) {\n overlayCaptionRef.current.remove();\n overlayCaptionRef.current = null;\n }\n clipper!.remove();\n dup!.remove();\n (duplicateImgRef as any).current = null;\n });\n };\n\n dup.addEventListener(\"transitionend\", onEnd, { once: true });\n return;\n }\n\n // --- Fade intro path ---\n requestAnimationFrame(() => {\n overlay.style.opacity = \"1\";\n overlay.style.pointerEvents = \"auto\";\n if (overlayCaptionRef.current) {\n overlayCaptionRef.current.classList.add(styles.open);\n }\n });\n\n flushSync(() => {\n setShowFullscreenSlider(true);\n setFsFadeOpening(true);\n });\n\n requestAnimationFrame(() => {\n setFsFadeOpening(false);\n });\n\n // cleanup overlay caption shortly after fade in\n window.setTimeout(() => {\n if (overlayCaptionRootRef.current) {\n overlayCaptionRootRef.current.unmount();\n overlayCaptionRootRef.current = null;\n }\n if (overlayCaptionRef.current) {\n overlayCaptionRef.current.remove();\n overlayCaptionRef.current = null;\n }\n }, DURATION_MS + 30);\n}\n\n/**\n * Small helper for Slider call-sites that currently have `(e, imgRef, index)`.\n * You can keep your click handler identical and just call this factory.\n */\nexport function createSliderFullscreenIntroRunner(deps: Omit<\n FullscreenIntroArgs,\n \"origImg\" | \"index\"\n>) {\n return function runFromSliderEvent(\n _e: React.PointerEvent<any>,\n imgRef: React.RefObject<HTMLImageElement | null>,\n index: number\n ) {\n const origImg = imgRef.current;\n if (!origImg) return;\n\n runFullscreenIntro({\n ...deps,\n origImg,\n index,\n closestSelector: deps.closestSelector ?? \".rmg__slide\",\n });\n };\n}","import { IndexMode } from \"../api/types\";\n\ntype IndexListener = () => void;\n\nexport type IndexEvent =\n | { type: 'set'; index: number; mode: IndexMode }\n | { type: 'bump'; delta: number; mode: IndexMode };\n\ntype EventListener = (ev: IndexEvent) => void;\n\nexport default function createIndexChannel(initialIndex = 0, initialMode: IndexMode = 'animated') {\n let index = initialIndex;\n let mode: IndexMode = initialMode;\n let lastEvent: IndexEvent = { type: 'set', index: initialIndex, mode: initialMode };\n\n const subs = new Set<IndexListener>();\n const evtSubs = new Set<EventListener>();\n\n let raf = 0;\n const schedule = () => {\n if (raf) return;\n raf = requestAnimationFrame(() => {\n raf = 0;\n const ev = lastEvent;\n evtSubs.forEach(fn => fn(ev));\n subs.forEach(fn => fn());\n });\n };\n\n return {\n get() { return { index, mode }; },\n\n set(next: number, m: IndexMode = 'animated', opts?: { silent?: boolean }) {\n index = next;\n mode = m;\n lastEvent = { type: 'set', index, mode: m };\n if (!opts?.silent) schedule();\n },\n\n bump(delta: number, m: IndexMode = 'animated', opts?: { silent?: boolean }) {\n lastEvent = { type: 'bump', delta: (delta | 0), mode: m };\n if (!opts?.silent) schedule();\n },\n\n subscribe(fn: IndexListener): () => void {\n subs.add(fn);\n return () => { subs.delete(fn); };\n },\n\n onEvent(fn: EventListener): () => void {\n evtSubs.add(fn);\n return () => { evtSubs.delete(fn); };\n },\n };\n}","export type WindowType = Window & typeof globalThis\nexport type AxisKey = 'x' | 'y'\nexport type PointerEventType = PointerEvent | MouseEvent | TouchEvent\n\nexport function isMouseEvent(evt: PointerEventType, ownerWindow: WindowType): evt is MouseEvent {\n return typeof ownerWindow.MouseEvent !== 'undefined' && evt instanceof ownerWindow.MouseEvent\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AxisKey, PointerEventType, WindowType } from \"./pointerTypes\"\n\nexport type DragAxis = {\n scroll: AxisKey\n cross?: AxisKey\n}\n\nexport type DragTrackerOptions = {\n axis: DragAxis\n ownerWindow: WindowType\n windowMs?: number\n recentMs?: number\n releaseFreshMs?: number\n stillMs?: number\n moveEps?: number\n flickVel?: number\n flickDist?: number\n minVel?: number\n}\n\nexport function createDragTracker(opts: DragTrackerOptions) {\n const {\n axis,\n ownerWindow,\n windowMs = 120,\n recentMs = 90,\n releaseFreshMs = 180,\n stillMs = 140,\n moveEps = 0.5,\n flickVel = 0.1,\n flickDist = 1,\n minVel = 0.06,\n } = opts\n\n const EPS = 1e-6\n\n type Sample = { t: number; dx: number; dy: number }\n let samples: Sample[] = []\n\n let startX = 0, startY = 0\n let lastX = 0, lastY = 0, lastT = 0\n let lastActiveT = 0\n\n function now(evt: PointerEventType): number {\n const ts = (evt as any).timeStamp as number | undefined\n const perf = ownerWindow?.performance?.now ? ownerWindow.performance.now() : Date.now()\n return (typeof ts === 'number' && ts > 0) ? ts : perf\n }\n\n function isMouse(evt: PointerEventType): evt is MouseEvent {\n return (ownerWindow as any).MouseEvent\n ? evt instanceof (ownerWindow as any).MouseEvent\n : 'clientX' in evt && !('touches' in (evt as any))\n }\n\n function readPoint(evt: PointerEventType, axisKey: AxisKey = axis.scroll) {\n const coord = axisKey === 'x' ? 'clientX' : 'clientY'\n if (isMouse(evt)) return (evt as MouseEvent)[coord]\n\n const te = evt as TouchEvent\n const touch =\n (te.touches && te.touches[0]) ||\n (te.changedTouches && te.changedTouches[0])\n\n return touch ? (touch as any)[coord] as number : (axisKey === 'x' ? lastX : lastY)\n }\n\n function trimTo(t: number) {\n const earliest = t - windowMs * 1.5\n while (samples.length && samples[0].t < earliest) samples.shift()\n }\n\n function velocityInWindow(endT: number, spanMs: number) {\n const startT = endT - spanMs\n let sumDx = 0, sumDy = 0\n let firstT = Number.POSITIVE_INFINITY, lastT = Number.NEGATIVE_INFINITY\n\n for (let i = samples.length - 1; i >= 0; i--) {\n const s = samples[i]\n if (s.t < startT) break\n\n firstT = Math.min(firstT, s.t)\n lastT = Math.max(lastT, s.t)\n\n const age = s.t - startT\n const w = 0.5 + 0.5 * (age / Math.max(spanMs, 1))\n\n sumDx += s.dx * w\n sumDy += s.dy * w\n }\n\n const dt = Math.max(lastT - firstT, EPS)\n return { vx: sumDx / dt, vy: sumDy / dt }\n }\n\n function displacementInWindow(endT: number, spanMs: number) {\n const startT = endT - spanMs\n let dx = 0, dy = 0\n\n for (let i = samples.length - 1; i >= 0; i--) {\n const s = samples[i]\n if (s.t < startT) break\n dx += s.dx\n dy += s.dy\n }\n\n return { dx, dy }\n }\n\n return {\n axis,\n\n pointerDown(evt: PointerEventType) {\n samples = []\n startX = lastX = readPoint(evt, 'x')\n startY = lastY = readPoint(evt, 'y')\n return { x: startX, y: startY }\n },\n\n pointerMove(evt: PointerEventType) {\n const t = now(evt)\n const x = readPoint(evt, 'x')\n const y = readPoint(evt, 'y')\n\n const dx = x - lastX\n const dy = y - lastY\n\n samples.push({ t, dx, dy })\n trimTo(t)\n\n if (Math.abs(dx) >= moveEps || Math.abs(dy) >= moveEps) lastActiveT = t\n\n lastX = x\n lastY = y\n lastT = t\n\n return { dx, dy }\n },\n\n pointerUp(evt: PointerEventType) {\n const t = now(evt)\n samples.push({ t, dx: 0, dy: 0 })\n trimTo(t)\n\n const sinceLastMove = t - lastT\n const idleMs = t - lastActiveT\n\n const releasedFresh = sinceLastMove <= releaseFreshMs\n const wasStill = idleMs > stillMs\n\n if (wasStill) return { fx: 0, fy: 0 }\n\n const { vx: vxRecent, vy: vyRecent } = velocityInWindow(t, recentMs)\n const { dx: dxRecent, dy: dyRecent } = displacementInWindow(t, recentMs)\n\n const intentX = releasedFresh && (Math.abs(vxRecent) >= flickVel || Math.abs(dxRecent) >= flickDist)\n const intentY = releasedFresh && (Math.abs(vyRecent) >= flickVel || Math.abs(dyRecent) >= flickDist)\n\n const { vx, vy } = velocityInWindow(t, windowMs)\n\n let fx = intentX ? vx : 0\n let fy = intentY ? vy : 0\n\n if (intentX && Math.abs(fx) < minVel) fx = (dxRecent >= 0 ? 1 : -1) * minVel\n if (intentY && Math.abs(fy) < minVel) fy = (dyRecent >= 0 ? 1 : -1) * minVel\n\n return { fx, fy }\n },\n\n readPoint,\n }\n}","export type Vector1DType = {\n get: () => number\n set: (n: number) => void\n add: (n: number) => void\n}\n\nexport function Vector1D(initial: number): Vector1DType {\n let v = initial\n return {\n get: () => v,\n set: (n) => {\n v = n\n },\n add: (n) => {\n v += n\n },\n }\n}","import type { Vector1DType } from './vector1d'\n\nexport type ScrollBodyType = ReturnType<typeof ScrollBody>\n\nexport function ScrollBody(\n location: Vector1DType,\n offsetLocation: Vector1DType,\n previousLocation: Vector1DType,\n target: Vector1DType,\n baseDuration: number,\n baseFriction: number\n) {\n let vel = 0\n let dir = 0\n let duration = baseDuration\n let friction = baseFriction\n let raw = location.get()\n let rawPrev = 0\n const mathAbs = Math.abs\n return {\n sync() { raw = location.get(); rawPrev = raw; return this },\n resetVelocity() { vel = 0; return this },\n useDuration(n: number) { duration = n; return this },\n useFriction(n: number) { friction = n; return this },\n useBaseDuration() { return this.useDuration(baseDuration) },\n useBaseFriction() { return this.useFriction(baseFriction) },\n duration() { return duration },\n frictionFactor() { return friction },\n direction() { return dir },\n velocity() { return vel },\n seek() {\n const curLoc = location.get()\n const curTgt = target.get()\n const disp = curTgt - curLoc\n const instant = !duration\n let d = 0\n if (instant) {\n vel = 0\n previousLocation.set(curTgt)\n location.set(curTgt)\n d = disp\n } else {\n previousLocation.set(curLoc)\n vel += disp / duration\n vel *= friction\n raw += vel\n location.add(vel)\n d = raw - rawPrev\n }\n dir = Math.sign(d)\n rawPrev = raw\n return this\n },\n settled() {\n const diff = target.get() - offsetLocation.get()\n return mathAbs(diff) < 0.001\n },\n }\n}","export type LimitType = ReturnType<typeof Limit>\n\nexport function Limit(min: number, max: number) {\n const span = max - min || 1\n\n return {\n min,\n max,\n reachedMin(n: number) { return n < min },\n reachedMax(n: number) { return n > max },\n constrain(n: number) { return Math.max(min, Math.min(max, n)) },\n\n reachedAny(n: number) {\n return n < min || n > max\n },\n removeOffset(n: number) {\n let x = n\n while (x < min) x += span\n while (x > max) x -= span\n return x\n },\n }\n}","import { Limit, LimitType } from \"./limit\"\nimport { Vector1DType } from \"./vector1d\"\n\nexport function ScrollLooper(\n contentSize: number,\n limit: LimitType,\n location: Vector1DType,\n vectors: Vector1DType[]\n) {\n const jointSafety = 0.1\n const min = limit.min + jointSafety\n const max = limit.max + jointSafety\n const l = Limit(min, max)\n\n function shouldLoop(direction: number) {\n if (direction === 1) return l.reachedMax(location.get())\n if (direction === -1) return l.reachedMin(location.get())\n return false\n }\n\n return {\n loop(direction: number) {\n if (!shouldLoop(direction)) return\n const shift = contentSize * (direction * -1)\n vectors.forEach(v => v.add(shift))\n }\n }\n}","import { Limit, LimitType } from \"./limit\"\nimport { ScrollBodyType } from \"./scrollBody\"\nimport { Vector1DType } from \"./vector1d\"\n\nexport type ScrollBoundsType = ReturnType<typeof ScrollBounds>\n\nexport function ScrollBounds(\n limit: LimitType,\n location: Vector1DType,\n target: Vector1DType,\n body: ScrollBodyType,\n pov: PercentOfViewType,\n selectDuration: number\n) {\n const pullBack = pov.measure(10)\n const edgeTol = pov.measure(50)\n const fricLim = Limit(0.1, 0.99)\n\n function reached() {\n return limit.reachedAny(target.get()) && limit.reachedAny(location.get())\n }\n\n return {\n reached,\n constrain(pointerDown: boolean) {\n if (!reached()) return\n const edge = limit.reachedMin(location.get()) ? 'min' : 'max'\n const distToEdge = Math.abs(limit[edge] - location.get())\n const distToTarget = target.get() - location.get()\n const f = fricLim.constrain(distToEdge / edgeTol)\n\n target.set(target.get() - distToTarget * f)\n\n if (!pointerDown && Math.abs(distToTarget) < pullBack) {\n target.set(limit.constrain(target.get()))\n body.useDuration(selectDuration).useBaseFriction()\n }\n },\n }\n}\n\nexport type PercentOfViewType = ReturnType<typeof PercentOfView>\n\nexport function PercentOfView(viewSize: number) {\n return {\n measure(n: number) {\n return (viewSize * n) / 100\n },\n }\n}","import { Limit } from \"./limit\"\nimport { Vector1DType } from \"./vector1d\"\n\nexport type BaseTarget = {\n distance: number\n index: number\n}\n\nexport type ScrollTargetType = {\n byIndex: (target: number, direction: number) => BaseTarget\n byDistance: (force: number, snap: boolean) => BaseTarget\n shortcut: (target: number, direction: number) => number\n}\n\nexport function ScrollTarget(\n loop: boolean,\n scrollSnaps: number[],\n contentSize: number,\n limit: ReturnType<typeof Limit>,\n targetVector: Vector1DType\n): ScrollTargetType {\n const { reachedAny, removeOffset, constrain } = limit\n\n function minDistance(distances: number[]): number {\n return distances\n .concat()\n .sort((a, b) => Math.abs(a) - Math.abs(b))[0]\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 dir = Math.sign(direction)\n const matchingTargets = targets.filter((t) => Math.sign(t) === dir)\n\n if (matchingTargets.length) return minDistance(matchingTargets)\n return arrayLast(targets) - contentSize\n }\n\n function findTargetSnap(target: number): BaseTarget {\n const distance = loop ? removeOffset(target) : constrain(target)\n const ascDiffsToSnaps = scrollSnaps\n .map((snap, index) => ({\n diff: shortcut(snap - distance, 0),\n index,\n }))\n .sort((d1, d2) => Math.abs(d1.diff) - Math.abs(d2.diff))\n\n const { index } = ascDiffsToSnaps[0]\n return { index, distance }\n }\n\n function byIndex(index: number, direction: number): BaseTarget {\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): BaseTarget {\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 return { byDistance, byIndex, shortcut }\n}\n\nconst mathAbs = Math.abs\n\nexport const mathSign = (n: number) => (n === 0 ? 0 : n > 0 ? 1 : -1)\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 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}","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport function EventStore() {\n const listeners: Array<() => void> = []\n return {\n add<T extends EventTarget>(\n t: T,\n type: string,\n fn: EventListenerOrEventListenerObject,\n opts?: AddEventListenerOptions | boolean\n ) {\n t.addEventListener(type, fn as any, opts as any)\n listeners.push(() => t.removeEventListener(type, fn as any, opts as any))\n return this\n },\n clear() {\n while (listeners.length) listeners.pop()?.()\n },\n }\n}","import { WindowType } from \"../input/pointerTypes\"\nimport { EventStore } from \"./eventStore\"\n\nexport type AnimationsType = {\n start: () => void\n stop: () => void\n init: () => void\n destroy: () => void\n resetBlend: () => void\n}\n\nexport function Animations(doc: Document, win: WindowType, update: () => void, render: (a: number) => void): AnimationsType {\n const fixed = 1000 / 60\n const visible = EventStore()\n let last: number | null = null\n let acc = 0\n let animId = 0\n function reset() {\n last = null\n acc = 0\n }\n function animate(ts: number) {\n if (!animId) return\n if (last == null) {\n last = ts\n update()\n update()\n }\n const dt = ts - (last as number)\n last = ts\n acc += dt\n while (acc >= fixed) {\n update()\n acc -= fixed\n }\n const alpha = acc / fixed\n render(alpha)\n if (animId) animId = win.requestAnimationFrame(animate)\n }\n return {\n init() {\n visible.add(doc, 'visibilitychange', () => {\n if (doc.hidden) reset()\n })\n },\n destroy() {\n this.stop()\n visible.clear()\n },\n start() {\n if (animId) return\n animId = win.requestAnimationFrame(animate)\n },\n stop() {\n win.cancelAnimationFrame(animId)\n animId = 0\n reset()\n },\n resetBlend() {\n reset()\n },\n }\n}","import { Limit } from \"./limit\"\n\nexport type CounterType = {\n get: () => number\n set: (n: number) => CounterType\n add: (n: number) => CounterType\n clone: () => CounterType\n}\n\nconst mathAbs = Math.abs\n\nexport function Counter(max: number, start: number, loop: boolean): 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}","import { ThumbnailPosition } from \"../slider/thumbnails/types\";\n\nexport const BREAKPOINT_MAP: Record<string, number> = {\n xs: 0,\n sm: 600,\n md: 900,\n lg: 1200,\n xl: 1536,\n};\n\nexport type BreakpointMap = Record<string, number>;\n\nexport type ResponsiveNumber =\n | number\n | string\n | Array<number | string>\n | Record<string, number | string>;\n\nexport type ResponsivePosition =\n | ThumbnailPosition\n | Array<ThumbnailPosition>\n | Record<string, ThumbnailPosition>;\n\nexport function parseNumberLike(v: number | string | undefined, fallback: number): number {\n if (v == null) return fallback;\n if (typeof v === 'number') return v;\n const n = parseFloat(v);\n return Number.isNaN(n) ? fallback : n;\n}\n\nexport function effectiveViewportWidth(raw: number): number {\n if (raw > 0) return raw;\n if (typeof window !== 'undefined' && window.innerWidth > 0) return window.innerWidth;\n return 1024;\n}\n\nexport function resolveNumberFromResponsive(\n value: ResponsiveNumber | undefined,\n fallback: number,\n viewportWidth: number,\n breakpointMap: BreakpointMap = BREAKPOINT_MAP\n): number {\n const vw = effectiveViewportWidth(viewportWidth);\n\n if (value == null) return fallback;\n\n if (typeof value === 'number' || typeof value === 'string') {\n return parseNumberLike(value as any, fallback);\n }\n\n if (Array.isArray(value)) {\n return resolveNumberFromResponsive(value[0] as any, fallback, vw, breakpointMap);\n }\n\n const entries = Object.entries(value)\n .map(([key, v]) => {\n const bp = breakpointMap[key] ?? (Number.isNaN(parseFloat(key)) ? 0 : parseFloat(key));\n return { minWidth: bp, value: v };\n })\n .sort((a, b) => a.minWidth - b.minWidth);\n\n let result = fallback;\n\n for (const bp of entries) {\n if (vw >= bp.minWidth) {\n result = resolveNumberFromResponsive(bp.value as any, result, vw, breakpointMap);\n }\n }\n\n return result;\n}\n\nexport function resolvePositionFromResponsive(\n value: ResponsivePosition | undefined,\n fallback: ThumbnailPosition,\n viewportWidth: number,\n breakpointMap: BreakpointMap = BREAKPOINT_MAP\n): ThumbnailPosition {\n const vw = effectiveViewportWidth(viewportWidth);\n\n if (value == null) return fallback;\n if (typeof value === 'string') return value;\n\n if (Array.isArray(value)) {\n return (value[0] ?? fallback) as ThumbnailPosition;\n }\n\n const entries = Object.entries(value)\n .map(([key, v]) => {\n const bp = breakpointMap[key] ?? (Number.isNaN(parseFloat(key)) ? 0 : parseFloat(key));\n return { minWidth: bp, value: v };\n })\n .sort((a, b) => a.minWidth - b.minWidth);\n\n let result: ThumbnailPosition = fallback;\n\n for (const bp of entries) {\n if (vw >= bp.minWidth) {\n result = resolvePositionFromResponsive(bp.value as any, result, vw, breakpointMap);\n }\n }\n\n return result;\n}\n\nexport function normalizeResponsiveToMinWidthRules(\n value: ResponsiveNumber | undefined,\n fallback: number,\n breakpointMap: BreakpointMap\n ): Array<{ minWidth: number; count: number }> {\n if (value == null) return [{ minWidth: 0, count: fallback }];\n\n if (typeof value === 'number' || typeof value === 'string') {\n const n = Math.floor(parseNumberLike(value as any, fallback));\n return [{ minWidth: 0, count: Math.max(0, n) }];\n }\n\n if (Array.isArray(value)) {\n return normalizeResponsiveToMinWidthRules(value[0] as any, fallback, breakpointMap);\n }\n\n const entries = Object.entries(value)\n .map(([key, v]) => {\n const bp =\n breakpointMap[key] ??\n (Number.isNaN(parseFloat(key)) ? 0 : parseFloat(key));\n const n = Math.floor(parseNumberLike(v as any, fallback));\n return { minWidth: bp, count: Math.max(0, n) };\n })\n .sort((a, b) => a.minWidth - b.minWidth);\n\n if (entries.length === 0) return [{ minWidth: 0, count: fallback }];\n\n if (entries[0].minWidth > 0) {\n entries.unshift({ minWidth: 0, count: fallback });\n } else if (entries[0].minWidth < 0) {\n entries[0] = { ...entries[0], minWidth: 0 };\n }\n\n return entries;\n }","export type BaseLimit = {\n min: number\n max: number\n reachedAny: (n: number) => boolean\n constrain: (n: number) => number\n removeOffset: (n: number) => number\n}\n\nexport function createBaseLimit(min: number, max: number): BaseLimit {\n const range = max - min || 1\n\n function constrain(n: number) {\n return Math.max(min, Math.min(max, n))\n }\n\n function reachedAny(n: number) {\n return n < min || n > max\n }\n\n function removeOffset(n: number) {\n let x = n\n while (x < min) x += range\n while (x > max) x -= range\n return x\n }\n\n return { min, max, constrain, reachedAny, removeOffset }\n}","import { AXSpec } from \"../types/axis\";\n\nexport function Translate(container: HTMLElement, AX: AXSpec) {\n let prev = NaN;\n function write(n: number) {\n if (n === prev) return;\n container.style.transform = AX.translate(n);\n prev = n;\n }\n return {\n to(target: number) { write(target); },\n get() { return prev; },\n resetCache() { prev = NaN; },\n };\n}\n\nexport function TranslateFullscreen(container: HTMLElement) {\n let prevX = NaN\n let prevY = NaN\n let lockY = false\n let lockedY = 0\n let suspended = false\n const round2 = (n: number) => Math.round(n * 100) / 100\n\n function write(nx: number, ny: number) {\n if (nx === prevX && ny === prevY) return\n container.style.transform = `translate3d(${nx}px, ${ny}px, 0)`\n prevX = nx\n prevY = ny\n }\n\n return {\n to(targetX: number, targetY = 0) {\n if (suspended) return\n const nx = round2(targetX)\n const ny = lockY ? lockedY : targetY\n write(nx, ny)\n },\n lockY(value?: number) {\n lockY = true\n lockedY = Math.round((value ?? prevY) || 0)\n write(prevX || 0, lockedY)\n },\n unlockY() { lockY = false },\n suspend(on = true) { suspended = on },\n get() { return { x: prevX, y: prevY } },\n resetCache() { prevX = NaN; prevY = NaN }\n }\n}","export type AXSpec = {\n main: 'x' | 'y';\n cross: 'x' | 'y';\n sizeKey: 'width' | 'height';\n clientKey: 'clientWidth' | 'clientHeight';\n startKey: 'left' | 'top';\n endKey: 'right' | 'bottom';\n translate: (n: number) => string;\n place: (n: number) => string;\n wheelDelta: (e: WheelEvent) => number;\n};\n\ntype AxisKey = 'x' | 'y'\n\nexport function Axis(isHorizontal: boolean): {\n scroll: AxisKey; cross: AxisKey; measureSize: (rect: DOMRect) => number;\n} {\n const scroll: AxisKey = isHorizontal ? 'x' : 'y'\n const cross: AxisKey = isHorizontal ? 'y' : 'x'\n return {\n scroll, cross,\n measureSize(rect: DOMRect) { return isHorizontal ? rect.width : rect.height },\n }\n}\nexport type AxisType = ReturnType<typeof Axis>\n\nexport function FullscreenAxis() {\n return {\n scroll: 'x' as const,\n cross: 'y' as const,\n direction(n: number) {\n return n\n },\n measureSize(rect: DOMRect) {\n return rect.width\n }\n }\n}\nexport type FullscreenAxisType = ReturnType<typeof FullscreenAxis>\n\nexport type FullscreenAxisLike = {\n scroll: 'x' | 'y'\n cross: 'x' | 'y'\n direction: (n: number) => number\n measureSize?: (rect: DOMRect) => number\n}\n\nexport function PanAxis() {\n return {\n scroll: 'x' as const,\n cross: 'y' as const,\n direction(n: number) {\n return n\n },\n }\n}\nexport type PanAxisType = ReturnType<typeof PanAxis>",".thumb {\n position: relative;\n border: 1px solid rgba(0,0,0,.12);\n border-radius: 6px;\n overflow: hidden;\n box-sizing: border-box;\n}\n\n.thumb::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: inherit;\n pointer-events: none;\n box-shadow: 0 0 0 2px #111 inset;\n opacity: 0;\n transition: opacity 120ms ease;\n z-index: 1;\n}\n\n.thumb[data-active=\"true\"]::after {\n opacity: 1;\n}\n\n.thumb :global(img) {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n position: relative;\n z-index: 0;\n}\n\n.fadeInStart {\n opacity: 0;\n}\n\n.fadeInActive {\n opacity: 1;\n transition:\n opacity var(--rmg-intro-duration, 420ms)\n var(--rmg-intro-easing, cubic-bezier(.2,.7,.2,1));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fadeInActive { transition: none; }\n .thumbSkeleton { animation: none; }\n}\n\n.thumbSkeletonOverlay {\n position: absolute;\n inset: 0;\n z-index: 5;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0.5rem;\n}\n\n.thumbSkeletonRow {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n.thumbSkeleton {\n border-radius: 6px;\n overflow: hidden;\n position: relative;\n\n background: linear-gradient(\n 90deg,\n var(--rmg-shimmer-c1, #f0f2f5) 25%,\n var(--rmg-shimmer-c2, #e6e9ef) 37%,\n var(--rmg-shimmer-c3, #f0f2f5) 63%\n );\n\n background-size: var(--rmg-shimmer-size, 400% 100%);\n animation: rmgShimmer var(--rmg-shimmer-duration, 1.2s)\n infinite var(--rmg-shimmer-timing, linear);\n}\n\n@keyframes rmgShimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n}\n\n.fade_container [data-rmg-thumb-index] > * {\n opacity: 0;\n transform: translateY(var(--rmg-intro-transform, 10px));\n\n transition:\n opacity var(--rmg-intro-duration, 300ms)\n var(--rmg-intro-easing, cubic-bezier(.2,.7,.2,1)),\n transform var(--rmg-intro-duration, 300ms)\n var(--rmg-intro-easing, cubic-bezier(.2,.7,.2,1));\n\n transition-delay: calc(\n var(--rmg-intro-index, 0) * var(--rmg-intro-stagger, 40ms)\n );\n\n will-change: opacity, transform;\n}\n\n.fade_container.fadeInActive [data-rmg-thumb-index] > * {\n opacity: 1;\n transform: translateY(0);\n}\n\n.ripple {\n position: absolute;\n border-radius: 50%;\n transform: scale(0);\n animation: ripple 600ms linear;\n background-color: rgba(0, 0, 0, 0.3);\n pointer-events: none;\n}\n\n@keyframes ripple {\n to {\n transform: scale(4);\n opacity: 0;\n }\n}","import { BreakpointMap, normalizeResponsiveToMinWidthRules, ResponsiveNumber } from \"../responsive\";\n\nexport function buildScopedSkeletonCountCss(args: {\n scopeId: string;\n responsiveCount: ResponsiveNumber | undefined;\n fallbackCount: number;\n breakpointMap: BreakpointMap;\n maxSlots: number;\n}): { cssText: string; ssrBaseCount: number } {\n const { scopeId, responsiveCount, fallbackCount, breakpointMap, maxSlots } = args;\n\n const rules = normalizeResponsiveToMinWidthRules(responsiveCount, fallbackCount, breakpointMap);\n\n const clamp = (n: number) => Math.max(0, Math.min(maxSlots, Math.floor(n)));\n\n const baseCount = clamp(rules[0]?.count ?? fallbackCount);\n\n const rootSel = `[data-rmg-scope=\"${scopeId}\"]`;\n const slotSel = `${rootSel} [data-rmg-skel-slot]`;\n\n const lines: string[] = [];\n\n lines.push(`${slotSel}{ display:none; }`);\n\n const showFirstN = (count: number) => {\n const c = clamp(count);\n if (c <= 0) return '';\n return Array.from({ length: c })\n .map((_, i) => `${rootSel} [data-rmg-skel-slot=\"${i + 1}\"]{ display:block; }`)\n .join('\\n');\n };\n\n lines.push(showFirstN(baseCount));\n\n for (const r of rules.slice(1)) {\n const c = clamp(r.count);\n lines.push(`@media (min-width:${r.minWidth}px){\\n${showFirstN(c)}\\n}`);\n }\n\n return { cssText: lines.join('\\n'), ssrBaseCount: baseCount };\n}","import * as React from \"react\";\n\nexport type ArrowRenderArgs = {\n ref: React.RefObject<HTMLDivElement | null>;\n onClick: () => void;\n hidden: boolean;\n disabled: boolean;\n createRipple: (el: HTMLElement) => void;\n className?: string;\n};\n\nexport type ArrowsRenderArgs = ArrowRenderArgs & { dir: \"prev\" | \"next\" };\n\nexport type RmgArrowsProps = {\n axisMain: \"x\" | \"y\";\n clientKey: \"clientWidth\" | \"clientHeight\";\n wrap: boolean;\n isRtl: boolean;\n showArrows?: boolean;\n selectedIndex: number;\n slideCount: number;\n measureRef: React.RefObject<HTMLElement | null>;\n viewportMainSizeRef: React.RefObject<number>;\n previous: () => void;\n next: () => void;\n prevButtonRef: React.RefObject<HTMLDivElement | null>;\n nextButtonRef: React.RefObject<HTMLDivElement | null>;\n createRipple: (el: HTMLElement) => void;\n arrowStyles?: React.CSSProperties;\n prevArrowStyles?: React.CSSProperties;\n nextArrowStyles?: React.CSSProperties;\n arrowClassName?: string;\n prevArrowClassName?: string;\n nextArrowClassName?: string;\n renderPrevArrow?: (args: ArrowRenderArgs) => React.ReactNode;\n renderNextArrow?: (args: ArrowRenderArgs) => React.ReactNode;\n renderArrows?: (args: ArrowsRenderArgs) => React.ReactNode;\n};\n\nfunction DefaultChevron({\n axisMain,\n direction,\n size = 32,\n}: {\n axisMain: \"x\" | \"y\";\n direction: \"prev\" | \"next\";\n size?: number;\n}) {\n const pathPrev = <path d=\"M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6z\" />;\n const pathNext = <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6z\" />;\n\n if (axisMain === \"y\") {\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n fill=\"#000\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n style={{ transform: \"rotate(90deg)\", transformOrigin: \"50% 50%\" }}\n >\n {direction === \"prev\" ? pathPrev : pathNext}\n </svg>\n );\n }\n\n return (\n <svg\n viewBox=\"0 0 24 24\"\n width={size}\n height={size}\n fill=\"#000\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden\n >\n {direction === \"prev\" ? pathPrev : pathNext}\n </svg>\n );\n}\n\nconst baseArrowStyle: React.CSSProperties = {\n position: \"absolute\",\n overflow: \"hidden\",\n backgroundColor: \"rgba(255, 255, 255, 0.75)\",\n boxShadow: \"0 0 5px rgba(0, 0, 0, 0.5)\",\n borderRadius: \"100%\",\n zIndex: 2,\n width: 36,\n height: 36,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"opacity 120ms\",\n};\n\nfunction prevPlacement(axisMain: \"x\" | \"y\"): React.CSSProperties {\n return axisMain === \"y\"\n ? { left: \"50%\", top: 10, transform: \"translateX(-50%)\" }\n : { left: 10, top: \"50%\", transform: \"translateY(-50%)\" };\n}\n\nfunction nextPlacement(axisMain: \"x\" | \"y\"): React.CSSProperties {\n return axisMain === \"y\"\n ? { left: \"50%\", bottom: 10, transform: \"translateX(-50%)\" }\n : { right: 10, top: \"50%\", transform: \"translateY(-50%)\" };\n}\n\nexport function RmgArrows(props: RmgArrowsProps) {\n const {\n axisMain,\n clientKey,\n wrap,\n isRtl,\n showArrows,\n selectedIndex,\n slideCount,\n measureRef,\n viewportMainSizeRef,\n previous,\n next,\n prevButtonRef,\n nextButtonRef,\n createRipple,\n arrowStyles,\n prevArrowStyles,\n nextArrowStyles,\n arrowClassName,\n prevArrowClassName,\n nextArrowClassName,\n renderPrevArrow,\n renderNextArrow,\n renderArrows,\n } = props;\n\n const atFirst = !wrap && selectedIndex <= 0;\n const atLast = !wrap && selectedIndex >= Math.max(0, slideCount - 1);\n\n const clientMain = measureRef.current\n ? ((measureRef.current as any)[clientKey] as number)\n : 0;\n\n const arrowsAutoHidden =\n !(slideCount > 1 && measureRef.current && viewportMainSizeRef.current > clientMain);\n\n const arrowsHidden = !showArrows || arrowsAutoHidden;\n\n const prevDisabled = arrowsHidden || (!wrap && (isRtl ? atLast : atFirst));\n const nextDisabled = arrowsHidden || (!wrap && (isRtl ? atFirst : atLast));\n\n const prevArrowStylesEffective: React.CSSProperties = {\n ...(arrowStyles ?? {}),\n ...(prevArrowStyles ?? {}),\n };\n\n const nextArrowStylesEffective: React.CSSProperties = {\n ...(arrowStyles ?? {}),\n ...(nextArrowStyles ?? {}),\n };\n\n const prevArrowClassNameEffective = [arrowClassName, prevArrowClassName]\n .filter(Boolean)\n .join(\" \");\n\n const nextArrowClassNameEffective = [arrowClassName, nextArrowClassName]\n .filter(Boolean)\n .join(\" \");\n\n function makeArrowOnClick(dir: \"prev\" | \"next\", hidden: boolean) {\n return () => {\n if (hidden) return;\n requestAnimationFrame(() => {\n if (dir === \"prev\") previous();\n else next();\n });\n };\n }\n\n const DefaultArrow = ({\n dir,\n ref,\n onClick,\n hidden,\n disabled,\n className,\n }: ArrowRenderArgs & { dir: \"prev\" | \"next\" }) => {\n const dim = disabled ? 0.35 : 1;\n const placement = dir === \"prev\" ? prevPlacement(axisMain) : nextPlacement(axisMain);\n const perDirStyles = dir === \"prev\" ? prevArrowStylesEffective : nextArrowStylesEffective;\n\n return (\n <div\n ref={ref}\n className={`rmgArrow rmgArrow--${dir} ${className ?? \"\"}`}\n onClick={(evt) => {\n if (hidden) return;\n createRipple(evt.currentTarget as HTMLElement);\n requestAnimationFrame(() => onClick());\n }}\n style={{\n ...baseArrowStyle,\n ...placement,\n ...perDirStyles,\n cursor: disabled ? \"default\" : \"pointer\",\n opacity: hidden ? 0 : dim,\n pointerEvents: hidden ? \"none\" : \"auto\",\n visibility: hidden ? \"hidden\" : \"visible\",\n }}\n aria-label={dir === \"prev\" ? \"Previous slide\" : \"Next slide\"}\n role=\"button\"\n title={\n disabled\n ? dir === \"prev\"\n ? \"At first slide\"\n : \"At last slide\"\n : dir === \"prev\"\n ? \"Previous\"\n : \"Next\"\n }\n >\n <DefaultChevron axisMain={axisMain} direction={dir} size={32} />\n </div>\n );\n };\n\n const renderArrow = (dir: \"prev\" | \"next\", args: ArrowRenderArgs) => {\n if (dir === \"prev\" && renderPrevArrow) return renderPrevArrow(args);\n if (dir === \"next\" && renderNextArrow) return renderNextArrow(args);\n if (renderArrows) return renderArrows({ ...args, dir });\n return DefaultArrow({ ...args, dir });\n };\n\n const prevArrowNode = renderArrow(\"prev\", {\n ref: prevButtonRef,\n hidden: arrowsHidden,\n disabled: prevDisabled,\n onClick: makeArrowOnClick(\"prev\", arrowsHidden),\n createRipple,\n className: prevArrowClassNameEffective,\n });\n\n const nextArrowNode = renderArrow(\"next\", {\n ref: nextButtonRef,\n hidden: arrowsHidden,\n disabled: nextDisabled,\n onClick: makeArrowOnClick(\"next\", arrowsHidden),\n createRipple,\n className: nextArrowClassNameEffective,\n });\n\n return (\n <>\n {prevArrowNode}\n {nextArrowNode}\n </>\n );\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\n'use client'\n\nimport {\n Children,\n ReactElement,\n ReactNode,\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport cls from './ThumbnailSlider.module.css'\nimport createIndexChannel from '../sliderSub'\nimport { createDragTracker } from '../../shared/input/dragTracker'\nimport { Vector1D, Vector1DType } from '../../shared/motion/vector1d'\nimport { ScrollBody, ScrollBodyType } from '../../shared/motion/scrollBody'\nimport { Limit, LimitType } from '../../shared/motion/limit'\nimport { ScrollLooper } from '../../shared/motion/scrollLooper'\nimport { ScrollBounds, ScrollBoundsType, PercentOfView, PercentOfViewType } from '../../shared/motion/scrollBounds'\nimport { BaseTarget, factorAbs, mathSign, ScrollTarget, ScrollTargetType } from '../../shared/motion/scrollTarget'\nimport { Animations, AnimationsType } from '../../shared/motion/animations'\nimport { EventStore } from '../../shared/motion/eventStore'\nimport { ThumbnailIntroOptions, ThumbnailLoadingOptions, ThumbnailPosition } from './types'\nimport { ArrowRenderArgs } from '../../shared/types/controls'\nimport { BreakpointMap } from '../../shared/responsive'\nimport { Counter, CounterType } from '../../shared/motion/counter'\nimport { buildScopedSkeletonCountCss } from '../../shared/skeleton/buildScopedSkeletonCountCss'\nimport { BaseLimit, createBaseLimit } from '../../shared/motion/baseLimit'\nimport { RmgArrows } from '../controls/arrows'\nimport { isMouseEvent } from '../../shared/input/pointerTypes'\nimport { WindowType } from '../../shared/input/pointerTypes'\nimport { Axis, AxisType, AXSpec } from '../../shared/types/axis'\nimport { Translate } from '../../shared/motion/translate'\n\nconst clamp = (n: number, lo: number, hi: number) => Math.max(lo, Math.min(hi, n))\n\nfunction DragTracker(axis: AxisType, ownerWindow: WindowType) {\n return createDragTracker({\n ownerWindow,\n axis,\n })\n}\n\ntype Page = {\n startIndex: number\n endIndex: number\n targetScroll: number\n}\n\ntype BaseScrollTo = {\n distance: (n: number, snap: boolean) => void\n index: (n: number, direction: number) => void\n}\n\ntype ThumbLayoutItem = { el: HTMLElement; start: number; end: number; size: number }\n\ntype Slide = { target: number; cells: { element: HTMLElement; index: number }[] }\n\ninterface ThumbnailSliderProps {\n children: ReactNode\n position: ThumbnailPosition\n thumbSize?: number\n className?: string\n style?: React.CSSProperties\n thumbnailWidth?: number | string\n thumbnailHeight?: number | string\n indexChannel?: ReturnType<typeof createIndexChannel>\n onSelectThumb?: (index: number) => void\n thumbnailsCenter?: boolean\n thumbnailsContainerWidth?: number | string\n thumbnailsContainerHeight?: number | string\n thumbnailsContainerClassName?: string\n thumbnailsContainerStyle?: React.CSSProperties\n thumbnailItemClassName?: string\n thumbnailItemStyle?: React.CSSProperties\n gap?: number\n freeScroll?: boolean\n groupCells?: boolean\n loop?: boolean\n direction?: 'ltr' | 'rtl';\n axis?: 'x' | 'y';\n skipSnaps?: boolean;\n centerActiveThumb?: boolean;\n selectDuration?: number;\n freeScrollDuration?: number;\n sliderFriction?: number;\n loadingOptions?: ThumbnailLoadingOptions;\n introOptions?: ThumbnailIntroOptions;\n breakpointMap?: BreakpointMap;\n rippleEnabled?: boolean;\n rippleClassName?: string;\n showArrows?: boolean;\n arrowStyles?: React.CSSProperties;\n arrowClassName?: string;\n prevArrowStyles?: React.CSSProperties;\n prevArrowClassName?: string;\n nextArrowStyles?: React. CSSProperties;\n nextArrowClassName?: string;\n renderArrows?: (args: ArrowRenderArgs & { dir: \"prev\" | \"next\" }) => React.ReactNode;\n renderPrevArrow?: (args: ArrowRenderArgs) => React.ReactNode;\n renderNextArrow?: (args: ArrowRenderArgs) => React.ReactNode;\n}\n\nexport default function ThumbnailSlider({\n children,\n position,\n thumbSize,\n className,\n style,\n thumbnailWidth,\n thumbnailHeight,\n indexChannel,\n onSelectThumb,\n thumbnailsCenter,\n thumbnailsContainerWidth,\n thumbnailsContainerHeight,\n thumbnailsContainerClassName,\n thumbnailsContainerStyle,\n thumbnailItemClassName,\n thumbnailItemStyle,\n gap = 8,\n freeScroll = true,\n groupCells = false,\n loop = false,\n direction = 'ltr',\n skipSnaps = false,\n centerActiveThumb = false,\n selectDuration = 25,\n freeScrollDuration = 43,\n sliderFriction = 0.68,\n loadingOptions,\n introOptions,\n breakpointMap = { xs: 0, sm: 640, md: 768, lg: 1024, xl: 1280 },\n rippleEnabled,\n rippleClassName,\n showArrows = false,\n arrowStyles,\n arrowClassName,\n prevArrowStyles,\n prevArrowClassName,\n nextArrowStyles,\n nextArrowClassName,\n renderArrows,\n renderPrevArrow,\n renderNextArrow\n}: ThumbnailSliderProps) {\n const isHorizontal = position === 'top' || position === 'bottom'\n const axis = Axis(isHorizontal);\n const isRtl = direction === 'rtl' ? true : false\n const sign = isHorizontal && isRtl ? -1 : 1;\n const containerRef = useRef<HTMLDivElement | null>(null)\n const trackRef = useRef<HTMLDivElement | null>(null)\n const scopeId = useId().replace(/:/g, \"-\");\n const channelRef = useRef(indexChannel ?? createIndexChannel())\n const [thumbLong, setThumbLong] = useState<number>(thumbSize ?? 0)\n const [thumbCross, setThumbCross] = useState<number>(0)\n const [contentLength, setContentLength] = useState<number>(0)\n const [containerLength, setContainerLength] = useState<number>(0)\n const locationRef = useRef<Vector1DType | null>(null)\n const previousLocationRef = useRef<Vector1DType | null>(null)\n const offsetLocationRef = useRef<Vector1DType | null>(null)\n const targetRef = useRef<Vector1DType | null>(null)\n const bodyRef = useRef<ScrollBodyType | null>(null)\n const translateRef = useRef<ReturnType<typeof Translate> | null>(null)\n const animRef = useRef<AnimationsType | null>(null)\n const limitRef = useRef<LimitType | null>(null)\n const boundsRef = useRef<ScrollBoundsType | null>(null)\n const povRef = useRef<PercentOfViewType | null>(null)\n const isAnimatingRef = useRef(false)\n const prevButtonRef = useRef<HTMLDivElement>(null)\n const nextButtonRef = useRef<HTMLDivElement>(null)\n const pagesRef = useRef<Page[]>([])\n type SnapMode = 'thumb' | 'base'\n const snapModeRef = useRef<SnapMode>('base')\n const pointerDownRef = useRef(false)\n const isPointerDown = useRef(false)\n const isClickRef = useRef(true)\n const xRef = useRef(0)\n const dragX = useRef(0)\n const previousDragX = useRef(0)\n const dragMoveTime = useRef<Date | null>(null)\n const sliderVelocity = useRef(0)\n const selectedIndexRef = useRef<number>(channelRef.current.get().index ?? 0)\n const rawKids = Children.toArray(children).filter(isValidElement) as ReactElement<ThumbnailSliderProps>[]\n const count = rawKids.length\n const baseOffsetRef = useRef(0);\n const downTargetRef = useRef<EventTarget | null>(null)\n const [inView, setInView] = useState(false);\n const [isReady, setIsReady] = useState(false);\n const readyRafRef = useRef<number | null>(null);\n const readyPaintedRef = useRef(false);\n const contentSizeRef = useRef(0)\n const loopLimitRef = useRef<ReturnType<typeof Limit> | null>(null)\n const scrollSnapsRef = useRef<number[]>([])\n const scrollContentSizeRef = useRef(0)\n const scrollLimitRef = useRef<BaseLimit | null>(null)\n const scrollTargetRef = useRef<ScrollTargetType | null>(null)\n const scrollToRef = useRef<BaseScrollTo | null>(null)\n const indexCurrentRef = useRef<CounterType | null>(null)\n const indexPreviousRef = useRef<CounterType | null>(null)\n const [buildKey, setBuildKey] = useState(0)\n const loopStableRef = useRef<boolean | null>(null)\n const [geomKey, setGeomKey] = useState(0)\n const lastGeomSigRef = useRef<string>('')\n const [wrap, setWrap] = useState(false)\n const isWrapping = useRef(false)\n const clonesCountRef = useRef(0)\n const visibleThumbsRef = useRef(1)\n const layoutRef = useRef<{ originals: ThumbLayoutItem[]; cw: number } | null>(null)\n const thumbCells = useRef<{ element: HTMLElement; index: number }[]>([]);\n const [clonedChildren, setClonedChildren] = useState<ReactElement<any>[]>([]);\n const lastCloneSigRef = useRef<string>('');\n const slidesRef = useRef<Slide[]>([])\n const [slidesState, setSlidesState] = useState<Slide[]>([])\n const [isMeasured, setIsMeasured] = useState(false)\n const cellToSlideRef = useRef<number[]>([])\n const sliderWidth = useRef(0)\n const [layoutReady, setLayoutReady] = useState(false)\n const prevActiveRef = useRef<number>(-1)\n const draggingAttr = 'data-rmg-drag';\n const activePointerIdRef = useRef<number | null>(null);\n const guardsStoreRef = useRef<ReturnType<typeof EventStore> | null>(null);\n\n const AX: AXSpec = useMemo(() => {\n const main = isHorizontal ? 'x' : 'y';\n const cross = isHorizontal ? 'y' : 'x';\n const sizeKey = isHorizontal ? 'width' : 'height';\n const clientKey = isHorizontal ? 'clientWidth' : 'clientHeight';\n const startKey = isHorizontal ? 'left' : 'top';\n const endKey = isHorizontal ? 'right' : 'bottom';\n\n const translate = (n: number) =>\n isHorizontal ? `translate3d(${n}px,0,0)` : `translate3d(0,${n}px,0)`;\n\n const place = (n: number) =>\n isHorizontal\n ? `translateX(${n}px) scale(var(--rmg-scale, 1))`\n : `translateY(${n}px) scale(var(--rmg-scale, 1))`;\n\n const wheelDelta = (e: WheelEvent) => (isHorizontal ? e.deltaX : e.deltaY);\n\n return { main, cross, sizeKey, clientKey, startKey, endKey, translate, place, wheelDelta };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [position]);\n\n useEffect(() => {\n const root = containerRef.current;\n if (!root) return;\n\n let canceled = false;\n\n if (typeof IntersectionObserver === 'undefined') {\n setInView(true);\n return;\n }\n\n const io = new IntersectionObserver(\n (entries) => {\n if (canceled) return;\n const ent = entries[0];\n setInView(!!ent?.isIntersecting);\n },\n {\n root: null,\n rootMargin: '200px 0px 200px 0px',\n threshold: 0.01,\n }\n );\n\n io.observe(root);\n\n return () => {\n canceled = true;\n io.disconnect();\n };\n }, []);\n\n function setWrapSafe(next: boolean) {\n if (loopStableRef.current === next) return\n loopStableRef.current = next\n\n setWrap(next)\n isWrapping.current = next\n\n setLayoutReady(false)\n\n setIsReady(false)\n readyPaintedRef.current = false\n\n setBuildKey((k) => k + 1)\n }\n\n function mod(n: number, m: number) {\n return ((n % m) + m) % m\n }\n\n function getCenterScroll(i: number) {\n const lay = layoutRef.current\n if (!lay?.originals?.length) return 0\n\n const o = lay.originals[i]\n if (!o) return 0\n\n const view = lay.cw || containerLength || 0\n const size = o.size\n\n const raw = o.start - (view - size) / 2\n\n if (!wrap) {\n const maxScroll = Math.max(0, contentLength - view)\n return clamp(raw, 0, maxScroll)\n }\n\n const W = contentLength || sliderWidth.current || 0\n if (!W) return 0\n return mod(raw, W)\n }\n\n function setTargetToScroll(scroll: number) {\n const tgt = targetRef.current\n if (!tgt) return\n\n const desired = -scroll\n\n if (!wrap) {\n tgt.set(desired)\n return\n }\n\n const W = contentLength || sliderWidth.current || 0\n if (!W) {\n tgt.set(desired)\n return\n }\n\n const cur = tgt.get()\n const c0 = desired\n const c1 = desired + W\n const c2 = desired - W\n\n const best =\n Math.abs(c0 - cur) <= Math.abs(c1 - cur) && Math.abs(c0 - cur) <= Math.abs(c2 - cur) ? c0 :\n Math.abs(c1 - cur) <= Math.abs(c2 - cur) ? c1 : c2\n\n tgt.set(best)\n }\n\n function cloneThumb(\n child: ReactElement<any>,\n key: string,\n canonicalIndex: number,\n elementIndex: number\n ) {\n return cloneElement(child as ReactElement<any>, {\n key,\n ['data-rmg-thumb-index' as any]: String(canonicalIndex),\n\n ref: (el: HTMLElement | null) => {\n if (!el) return;\n if (!thumbCells.current.some((c) => c.element === el)) {\n thumbCells.current.push({ element: el, index: elementIndex });\n }\n },\n\n style: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: thumbnailWidth,\n height: thumbnailHeight,\n cursor: 'pointer',\n userSelect: 'none',\n ...(thumbnailItemStyle || {}),\n ...(child.props?.style || {}),\n },\n\n className: [cls.thumb, thumbnailItemClassName, child.props?.className]\n .filter(Boolean)\n .join(' '),\n\n draggable: false,\n });\n }\n\n function computeCloneSig(originals: number, per: number) {\n return `${originals}|per=${per}|wrap=${wrap ? 1 : 0}`;\n }\n\n useEffect(() => {\n const el = trackRef.current;\n if (!el) return;\n\n const ro = new ResizeObserver(() => {\n const rawKids = Children\n .toArray(children)\n .filter(isValidElement) as ReactElement<any>[];\n\n const originals = rawKids.length;\n\n if (originals < 1) {\n clonesCountRef.current = 0;\n thumbCells.current = [];\n setClonedChildren([]);\n sliderWidth.current = 0;\n layoutRef.current = null;\n\n setWrapSafe(false);\n slidesRef.current = [];\n setSlidesState([]);\n cellToSlideRef.current = [];\n return;\n }\n\n const allEls = Array.from(el.children) as HTMLElement[];\n const clonesBefore = clonesCountRef.current;\n const clonesAfter = clonesBefore;\n const originalEls = allEls.slice(clonesBefore, allEls.length - clonesAfter);\n\n const cw = (el as any)[AX.clientKey] as number;\n\n let sum = 0;\n let count = 0;\n for (const slot of originalEls) {\n const w = slot.getBoundingClientRect()[AX.sizeKey];\n if (w === 0) {\n requestAnimationFrame(() => ro.observe(el));\n return;\n }\n if (sum + w <= cw) {\n sum += w;\n count++;\n } else {\n count++;\n break;\n }\n }\n\n const per = Math.max(2, Math.min(originals, count));\n\n const shouldLoop = wrap;\n clonesCountRef.current = shouldLoop ? per : 0;\n if (visibleThumbsRef.current !== per) visibleThumbsRef.current = per;\n\n const sig = computeCloneSig(originals, per);\n if (sig === lastCloneSigRef.current) return;\n lastCloneSigRef.current = sig;\n\n const slides: ReactElement<any>[] = [];\n thumbCells.current = [];\n\n if (shouldLoop) {\n slides.push(\n ...rawKids.slice(-per).map((c, i) => {\n const canonicalIndex = originals - per + i;\n const elementIndex = -per + i;\n return cloneThumb(c, `before-${i}`, canonicalIndex, elementIndex);\n })\n );\n }\n\n slides.push(\n ...rawKids.map((c, i) => {\n const canonicalIndex = i;\n const elementIndex = i;\n return cloneThumb(c, `original-${i}`, canonicalIndex, elementIndex);\n })\n );\n\n if (shouldLoop) {\n slides.push(\n ...rawKids.slice(0, per).map((c, i) => {\n const canonicalIndex = i;\n const elementIndex = i;\n return cloneThumb(c, `after-${i}`, canonicalIndex, elementIndex);\n })\n );\n }\n\n setClonedChildren(slides);\n });\n\n ro.observe(el);\n return () => ro.disconnect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n children,\n buildKey,\n wrap,\n gap,\n thumbSize,\n thumbLong,\n thumbnailWidth,\n thumbnailHeight,\n thumbnailItemClassName,\n thumbnailItemStyle,\n position,\n ]);\n\n function getThumbIndexFromEventTarget(t: EventTarget | null): number {\n const track = trackRef.current\n if (!track) return -1\n const el = t as HTMLElement | null\n if (!el) return -1\n\n const thumbEl = el.closest?.('[data-rmg-thumb-index]') as HTMLElement | null\n if (!thumbEl) return -1\n\n if (!track.contains(thumbEl)) return -1\n\n const raw = thumbEl.getAttribute('data-rmg-thumb-index')\n const idx = raw != null ? parseInt(raw, 10) : -1\n return Number.isFinite(idx) ? idx : -1\n }\n\n function commitThumbSelect(i: number) {\n if (i < 0 || i >= count) return;\n\n snapModeRef.current = 'thumb'\n\n setActiveThumb(i)\n\n channelRef.current.set(i, 'animated')\n onSelectThumb?.(i)\n }\n\n useEffect(() => {\n if (!thumbnailsCenter) {\n baseOffsetRef.current = 0;\n return;\n }\n if (!contentLength || !containerLength) return;\n\n if (contentLength <= containerLength) {\n baseOffsetRef.current = (containerLength - contentLength) / 2;\n } else {\n baseOffsetRef.current = 0;\n }\n }, [thumbnailsCenter, contentLength, containerLength]);\n\n useEffect(() => {\n const track = trackRef.current;\n const container = containerRef.current\n if (!track || !container) return;\n\n const schedule = () => {\n measureAndPosition()\n };\n\n function measureAndPosition() {\n const trackEl = trackRef.current;\n const container = containerRef.current\n if (!trackEl || !container) return\n\n const slideEls = Array.from(trackEl.children) as HTMLElement[];\n if (slideEls.length === 0) return;\n\n const sizes = slideEls.map((sl) => sl.getBoundingClientRect()[AX.sizeKey]);\n if (sizes.some((s) => s === 0)) {\n setTimeout(measureAndPosition, 0);\n return;\n }\n\n const contentSize =\n AX.main === \"x\" ? trackEl.scrollWidth : trackEl.scrollHeight;\n\n const clonesBefore = clonesCountRef.current;\n const beforeSizes = sizes.slice(0, clonesBefore);\n let running = -(beforeSizes.reduce((s, w) => s + w, 0) + gap * clonesBefore);\n slideEls.forEach((sl, i) => {\n sl.style.transformOrigin = 'center';\n sl.style.transform = AX.place(running * sign);\n running += sizes[i] + gap;\n });\n \n const origSizes = sizes.slice(clonesBefore, sizes.length - clonesBefore);\n let m0 = 0;\n const originalsForLayout = slideEls\n .slice(clonesBefore, slideEls.length - clonesBefore)\n .map((sl, i) => {\n const s = origSizes[i];\n const start = m0;\n const end = m0 + s;\n m0 += s + gap;\n return { el: sl, start, end, size: s };\n });\n\n layoutRef.current = {\n originals: originalsForLayout,\n cw: (trackEl as any)[AX.clientKey] as number,\n };\n\n const originalsCount = layoutRef.current?.originals?.length ?? 0;\n const innerGaps = Math.max(0, originalsCount - 1);\n const baseWidth = origSizes.reduce((sum, s) => sum + s, 0) + gap * innerGaps;\n sliderWidth.current = wrap ? baseWidth + (originalsCount > 0 ? gap : 0) : baseWidth;\n\n const cw = (trackEl as any)[AX.clientKey] as number;\n\n setContentLength(sliderWidth.current);\n\n setContainerLength(cw);\n\n const first = originalsForLayout[0]?.el;\n if (first) {\n const r = first.getBoundingClientRect();\n const long = r[AX.sizeKey];\n const cross = AX.main === 'x' ? r.height : r.width;\n\n setThumbLong(long || thumbSize || 0);\n setThumbCross(cross || 0);\n }\n \n const wantLoop = !!loop && originalsCount > 1 && contentSize > cw;\n\n const origSizesCsv = originalsForLayout.map((o) => o.size).join(\",\");\n const sig = `${origSizesCsv}|gap=${gap}|cw=${cw}|W=${contentSize}`;\n\n if (sig !== lastGeomSigRef.current) {\n lastGeomSigRef.current = sig;\n setGeomKey((k) => k + 1)\n }\n\n setWrapSafe(wantLoop);\n setIsMeasured(true);\n }\n\n const ro = new ResizeObserver(schedule);\n\n ro.observe(track);\n ro.observe(container)\n\n const vv = typeof window !== \"undefined\" ? window.visualViewport : null;\n vv?.addEventListener(\"resize\", schedule);\n\n window.addEventListener(\"resize\", schedule, { passive: true });\n\n schedule();\n\n return () => {\n ro.disconnect();\n vv?.removeEventListener(\"resize\", schedule);\n window.removeEventListener(\"resize\", schedule);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clonedChildren, gap, wrap, loop, AX, sign, position]);\n\n useEffect(() => {\n readyPaintedRef.current = false;\n setIsReady(false);\n\n if (readyRafRef.current != null) {\n cancelAnimationFrame(readyRafRef.current);\n readyRafRef.current = null;\n }\n\n const root = containerRef.current;\n const track = trackRef.current;\n\n const canBeReady =\n !!root &&\n !!track &&\n isMeasured &&\n layoutReady &&\n sliderWidth.current > 0 &&\n slidesRef.current.length > 0 &&\n !!(thumbSize || thumbLong);\n\n if (!canBeReady) return;\n\n readyRafRef.current = requestAnimationFrame(() => {\n readyRafRef.current = requestAnimationFrame(() => {\n readyPaintedRef.current = true;\n setIsReady(true);\n readyRafRef.current = null;\n });\n });\n\n return () => {\n if (readyRafRef.current != null) {\n cancelAnimationFrame(readyRafRef.current);\n readyRafRef.current = null;\n }\n };\n }, [\n isMeasured,\n layoutReady,\n geomKey,\n buildKey,\n wrap,\n count,\n contentLength,\n containerLength,\n thumbLong,\n thumbSize,\n position,\n ]);\n\n const getSnapTargets: () => number[] = () => (slidesRef.current || []).map((s) => s.target)\n const totalWidth = () => sliderWidth.current || 0\n\n useEffect(() => {\n const containerEl = trackRef.current\n if (!containerEl) return\n\n let canceled = false\n\n let retryTimer: number | null = null\n let tries = 0\n const MAX_TRIES = 5\n\n function retry() {\n if (canceled) return\n if (tries++ >= MAX_TRIES) return\n if (retryTimer != null) window.clearTimeout(retryTimer)\n retryTimer = window.setTimeout(() => {\n buildPages()\n }, 0)\n }\n\n const rawKids = Children.toArray(children).filter(isValidElement)\n const childCount = rawKids.length\n const clonesBefore = wrap ? visibleThumbsRef.current : 0\n const clonesAfter = clonesBefore\n const cw = (containerEl as any)[AX.clientKey] as number\n\n function buildPages() {\n if (canceled || !containerEl) return\n\n const allEls = Array.from(containerEl.children) as HTMLElement[]\n const originals = allEls.slice(clonesBefore, allEls.length - clonesAfter)\n const idxMap = new Map<HTMLElement, number>(originals.map((el, i) => [el, i]))\n\n const start0 = containerEl.getBoundingClientRect()[AX.startKey]\n const data = originals.map((el) => {\n const r = el.getBoundingClientRect()\n return {\n el,\n start: r[AX.startKey] - start0,\n end: r[AX.endKey] - start0,\n }\n })\n\n const pages: { els: HTMLElement[]; target: number }[] = []\n let i = 0\n\n if (groupCells) {\n while (i < childCount) {\n const startLeft = data[i]?.start ?? 0\n const viewRight = startLeft + cw\n\n let j = i\n while (j < childCount && (data[j]?.end ?? 0) <= viewRight) j++\n if (j === i) j++\n\n const slice = originals.slice(i, j)\n const isLast = j >= childCount\n\n let target = startLeft\n if (isLast && !wrap) {\n target = Math.max(0, (sliderWidth.current || 0) - cw)\n }\n if (i === 0) target = 0\n\n pages.push({ els: slice, target })\n i = j\n }\n } else {\n const L = layoutRef.current\n if (!L || !L.originals?.length) {\n retry()\n return\n }\n\n const data = L.originals\n const cw = L.cw\n\n const maxTarget = Math.max(0, (sliderWidth.current || 0) - cw)\n const EPS = 0.5\n\n if (wrap) {\n data.forEach((d, idx) => {\n const t = idx === 0 ? 0 : d.start\n pages.push({ els: [d.el], target: t })\n })\n } else {\n for (let idx = 0; idx < data.length; idx++) {\n const d = data[idx]\n let t = idx === 0 ? 0 : d.start\n t = Math.min(t, maxTarget)\n\n if (!pages.length || Math.abs(t - pages[pages.length - 1].target) > EPS) {\n pages.push({ els: [d.el], target: t })\n }\n\n if (Math.abs(t - maxTarget) <= EPS) break\n }\n\n const winStart = maxTarget - EPS\n const winEnd = maxTarget + cw + EPS\n\n const lastEls = data\n .filter((d) => d.start < winEnd && d.end > winStart)\n .map((d) => d.el)\n\n if (lastEls.length) {\n const lastT = pages[pages.length - 1]?.target ?? -1\n if (Math.abs(lastT - maxTarget) > EPS) {\n pages.push({ els: lastEls, target: maxTarget })\n } else {\n const uniq = new Set(pages[pages.length - 1].els.concat(lastEls))\n pages[pages.length - 1].els = Array.from(uniq)\n }\n } else {\n let safeIdx = -1\n for (let i = data.length - 1; i >= 0; i--) {\n if (data[i].start <= maxTarget + EPS) {\n safeIdx = i\n break\n }\n }\n const fallback = data[Math.max(0, safeIdx)]\n if (fallback) {\n const lastT = pages[pages.length - 1]?.target ?? -1\n if (Math.abs(lastT - maxTarget) > EPS) {\n pages.push({ els: [fallback.el], target: maxTarget })\n }\n }\n }\n }\n }\n\n const newSlides = pages.map((page) => ({\n target: page.target,\n cells: page.els.map((el) => ({\n element: el,\n index: idxMap.get(el)!,\n })),\n }))\n\n const hasNaN = newSlides.some((s) => Number.isNaN(s.target))\n const unstable = hasNaN || (wrap && newSlides.length === 1)\n if (unstable) {\n retry()\n return\n }\n\n const pagesAllowLoop = newSlides.length > 1\n\n setWrap(!!loop && pagesAllowLoop && sliderWidth.current > cw)\n isWrapping.current = !!loop && pagesAllowLoop && sliderWidth.current > cw\n\n slidesRef.current = newSlides\n setSlidesState(newSlides)\n\n setLayoutReady(true)\n\n const map: number[] = []\n newSlides.forEach((s, slideIdx) => {\n s.cells.forEach((c) => {\n map[c.index] = slideIdx\n })\n })\n cellToSlideRef.current = map\n }\n\n buildPages()\n\n return () => {\n canceled = true\n if (retryTimer != null) window.clearTimeout(retryTimer)\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clonedChildren, geomKey, position]);\n\n function getPageForIndex(i: number) {\n const pages = pagesRef.current\n if (!pages.length) return null\n for (let p = 0; p < pages.length; p++) {\n const pg = pages[p]\n if (i >= pg.startIndex && i < pg.endIndex) return pg\n }\n return pages[pages.length - 1] ?? null\n }\n\n function getScrollForIndex(i: number) {\n if (centerActiveThumb) return getCenterScroll(i)\n\n if (groupCells && !freeScroll && snapModeRef.current === 'thumb') {\n const pg = getPageForIndex(i)\n if (pg) return pg.targetScroll\n }\n\n return snapModeRef.current === 'thumb'\n ? getStartSnapScroll(i)\n : getCenteredScroll(i)\n }\n\n function setActiveThumb(i: number) {\n const track = trackRef.current\n if (!track) return\n\n const kids = Array.from(track.children) as HTMLElement[]\n for (const el of kids) el.removeAttribute('data-active')\n\n const key = String(i)\n const matches = track.querySelectorAll<HTMLElement>(`[data-rmg-thumb-index=\"${CSS.escape(key)}\"]`)\n matches.forEach((el) => el.setAttribute('data-active', 'true'))\n\n prevActiveRef.current = i\n }\n\n function ensureDragStyle(scopeId: string) {\n const id = 'rmg-drag-style-' + scopeId;\n if (document.getElementById(id)) return;\n const style = document.createElement('style');\n style.id = id;\n style.textContent = `\n /* Only while data-rmg-drag is present on this slider root */\n #${scopeId}[data-rmg-drag] { cursor: grabbing !important; }\n #${scopeId}[data-rmg-drag] * { cursor: grabbing !important; }\n `;\n document.head.appendChild(style);\n }\n\n useEffect(() => {\n if (containerRef.current) ensureDragStyle(scopeId);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [containerRef.current, scopeId]);\n\n function setDragCursor(on: boolean) {\n const root = containerRef.current;\n if (!root) return;\n\n if (on) {\n if (!root.hasAttribute(draggingAttr)) root.setAttribute(draggingAttr, '');\n return;\n }\n\n if (root.hasAttribute(draggingAttr)) root.removeAttribute(draggingAttr);\n activePointerIdRef.current = null;\n guardsStoreRef.current?.clear();\n guardsStoreRef.current = null;\n }\n\n useEffect(() => {\n const root = containerRef.current;\n if (!root) return;\n\n const onLeave = () => {\n if (pointerDownRef.current) setDragCursor(false);\n };\n const onEnter = () => {\n if (pointerDownRef.current && activePointerIdRef.current != null) setDragCursor(true);\n };\n\n root.addEventListener('mouseleave', onLeave, { passive: true });\n root.addEventListener('mouseenter', onEnter, { passive: true });\n return () => {\n root.removeEventListener('mouseleave', onLeave as any);\n root.removeEventListener('mouseenter', onEnter as any);\n };\n }, []);\n\n useEffect(() => {\n const ch = channelRef.current\n const unsub = ch.subscribe(() => {\n const { index, mode } = ch.get()\n selectedIndexRef.current = clamp(index, 0, Math.max(0, count - 1))\n setActiveThumb(selectedIndexRef.current)\n if (pointerDownRef.current) return\n\n snapModeRef.current = 'base'\n\n const scroll = getScrollForIndex(selectedIndexRef.current)\n\n if (mode === 'instant') {\n bodyRef.current?.useDuration(0).useFriction(1)\n setTargetToScroll(scroll)\n animRef.current?.start()\n } else {\n animateToScroll(scroll)\n }\n\n })\n return unsub\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [count, thumbnailsCenter, contentLength, containerLength])\n\n useEffect(() => {\n const track = trackRef.current\n if (!track) return\n const ready = !!(contentLength && containerLength && (thumbSize || thumbLong))\n if (!ready) return\n\n const maxIndex = Math.max(0, (track.children.length || count) - 1)\n const init = clamp(channelRef.current.get().index ?? 0, 0, maxIndex)\n setActiveThumb(init)\n animateToScroll(getScrollForIndex(init))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [count, contentLength, containerLength, thumbLong, thumbSize])\n\n function getCenteredScroll(i: number) {\n const lay = layoutRef.current\n if (!lay?.originals?.length) return 0\n\n const o = lay.originals[i]\n if (!o) return 0\n\n const view = lay.cw || containerLength || 0\n const size = o.size\n const centerWanted = o.start - (view - size) / 2\n const maxScroll = Math.max(0, contentLength - view)\n return clamp(centerWanted, 0, maxScroll)\n }\n\n function getStartSnapScroll(i: number) {\n const lay = layoutRef.current\n if (!lay?.originals?.length) return 0\n\n const o = lay.originals[i]\n if (!o) return 0\n\n const view = lay.cw || containerLength || 0\n const maxScroll = Math.max(0, contentLength - view)\n\n return clamp(o.start, 0, maxScroll)\n }\n\n function animateToScroll(scroll: number) {\n const isNarrow = thumbnailsCenter && contentLength <= containerLength\n if (isNarrow) return\n\n bodyRef.current?.useBaseDuration().useBaseFriction()\n\n setTargetToScroll(scroll)\n\n animRef.current?.start()\n }\n\n function indexFromX(loc: number) {\n const x = -loc\n const targets = getSnapTargets()\n const W = totalWidth()\n if (!targets.length) return 0\n let best = 0\n let min = Infinity\n for (let i = 0; i < targets.length; i++) {\n const base = targets[i]\n const candidates = !W || !wrap ? [base] : [base, base + W, base - W]\n for (const c of candidates) {\n const d = Math.abs(c - x)\n if (d < min) {\n min = d\n best = i\n }\n }\n }\n return best\n }\n\n function positionSlider() {\n const base = baseOffsetRef.current || 0\n const x = xRef.current || 0\n translateRef.current?.to((x + base) * sign)\n }\n\n function updateActiveIndexFromX(loc: number) {\n const indexCurrent = indexCurrentRef.current\n if (!indexCurrent) return\n\n const idxFromLoc = indexFromX(loc)\n const canonical = indexCurrent.get()\n\n if (idxFromLoc === canonical) return\n\n if (!pointerDownRef.current && isAnimatingRef.current) {\n return\n }\n\n indexCurrent.set(idxFromLoc)\n selectedIndexRef.current = idxFromLoc\n }\n\n function scrollToIndex(\n requested: number,\n opts: { jump?: boolean; direction?: number } = {}\n ) {\n const { jump = false, direction } = opts\n const indexCurrent = indexCurrentRef.current\n if (!scrollToRef.current || !bodyRef.current || !indexCurrent) return\n\n const targetIndex = indexCurrent.clone().set(requested).get()\n\n if (jump) {\n bodyRef.current.useDuration(0)\n } else {\n bodyRef.current.useBaseDuration().useBaseFriction()\n }\n\n const dir = typeof direction === 'number' ? direction : 0\n\n scrollToRef.current.index(targetIndex, dir)\n }\n\n function clampIndex(i: number, len: number) {\n return Math.max(0, Math.min(len - 1, i))\n }\n\n function previous() {\n const scrollTo = scrollToRef.current\n const body = bodyRef.current\n const indexCur = indexCurrentRef.current\n const len = slidesRef.current?.length ?? 0\n if (!scrollTo || !body || !indexCur || !len) return\n\n const cur = indexCur.get()\n const target = wrap\n ? ((cur - 1) % len + len) % len\n : clampIndex(cur - 1, len)\n\n body.useBaseDuration().useBaseFriction()\n scrollToIndex(target, { direction: 1 })\n }\n\n function next() {\n const scrollTo = scrollToRef.current\n const body = bodyRef.current\n const indexCur = indexCurrentRef.current\n const len = slidesRef.current?.length ?? 0\n if (!scrollTo || !body || !indexCur || !len) return\n\n const cur = indexCur.get()\n const target = wrap\n ? ((cur + 1) % len + len) % len\n : clampIndex(cur + 1, len)\n\n body.useBaseDuration().useBaseFriction()\n scrollToIndex(target, { direction: -1 })\n }\n\n useEffect(() => {\n const root = containerRef.current\n const track = trackRef.current\n if (\n !root || \n !track || \n !slidesRef.current?.length ||\n !layoutReady ||\n !isMeasured ||\n sliderWidth.current === 0\n ) {\n return\n }\n\n const isNarrow =\n !wrap && thumbnailsCenter && contentLength <= containerLength\n\n const base =\n isNarrow ? (containerLength - contentLength) / 2 : 0\n\n baseOffsetRef.current = base\n\n const startIdx = selectedIndexRef.current || 0;\n\n const location = Vector1D(0);\n const previousLocation = Vector1D(0);\n const offsetLocation = Vector1D(0);\n const target = Vector1D(0);\n\n locationRef.current = location;\n previousLocationRef.current = previousLocation;\n offsetLocationRef.current = offsetLocation;\n targetRef.current = target;\n\n const W = sliderWidth.current || 0\n\n const len = slidesRef.current.length || 1\n const counterMax = len - 1\n const startIndex = selectedIndexRef.current || 0\n\n const indexCurrent = Counter(counterMax, startIndex, true)\n const indexPrevious = Counter(counterMax, startIndex, true)\n\n indexCurrentRef.current = indexCurrent\n indexPreviousRef.current = indexPrevious\n\n contentSizeRef.current = W\n scrollContentSizeRef.current = W\n\n const scrollSnaps = slidesRef.current.map((slide) => {\n return -(slide.target)\n })\n scrollSnapsRef.current = scrollSnaps\n\n const initialSnap = scrollSnaps[startIdx] ?? 0\n\n location.set(initialSnap);\n previousLocation.set(initialSnap);\n offsetLocation.set(initialSnap);\n target.set(initialSnap);\n xRef.current = initialSnap;\n\n translateRef.current = Translate(track, AX);\n translateRef.current?.to((initialSnap + base) * sign)\n\n selectedIndexRef.current = startIdx;\n\n const minSnap = Math.min(...scrollSnaps)\n const maxSnap = Math.max(...scrollSnaps)\n\n loopLimitRef.current = wrap ? Limit(-W, 0) : Limit(minSnap, maxSnap)\n\n const baseLimit = wrap ? createBaseLimit(-W, 0) : createBaseLimit(minSnap, maxSnap)\n scrollLimitRef.current = baseLimit\n\n if (loopLimitRef.current) {\n scrollTargetRef.current = ScrollTarget(\n wrap,\n scrollSnaps,\n W,\n loopLimitRef.current,\n target\n )\n }\n\n function scrollTo(target: BaseTarget): void {\n const indexCurrent = indexCurrentRef.current\n const indexPrevious = indexPreviousRef.current\n if (!indexCurrent || !indexPrevious) return\n\n const distanceDiff = target.distance\n const indexDiff = target.index !== indexCurrent.get()\n\n targetRef.current!.add(distanceDiff)\n\n if (distanceDiff) {\n if (bodyRef.current!.duration()) {\n isAnimatingRef.current = true;\n animRef.current!.start()\n } else {\n bodyRef.current!.seek()\n positionSlider()\n }\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get())\n indexCurrent.set(target.index)\n\n const idx = indexCurrent.get()\n selectedIndexRef.current = idx\n\n setActiveThumb(idx)\n }\n }\n\n const baseScrollTo: BaseScrollTo = {\n distance(n, snap) {\n const st = scrollTargetRef.current\n if (!st) return\n const target = st.byDistance(n, snap)\n scrollTo(target)\n },\n index(n, direction) {\n const st = scrollTargetRef.current\n const indexCurrent = indexCurrentRef.current\n if (!st || !indexCurrent) return\n\n const targetIndex = indexCurrent.clone().set(n)\n const target = st.byIndex(targetIndex.get(), direction)\n\n scrollTo(target)\n },\n }\n\n scrollToRef.current = baseScrollTo\n\n const loLimit = Limit(-W, 0)\n const looper = wrap && W > 0\n ? ScrollLooper(\n W,\n loLimit,\n locationRef.current!,\n [locationRef.current!, previousLocationRef.current!, offsetLocationRef.current!, targetRef.current!]\n )\n : null\n\n const body = ScrollBody(location, offsetLocation, previousLocation, target, selectDuration, sliderFriction)\n bodyRef.current = body\n\n if (!wrap) {\n const cw = (track as any)[AX.clientKey] as number;\n const min = -(Math.max(0, sliderWidth.current - cw))\n const max = 0\n limitRef.current = Limit(isNaN(min) ? 0 : min, max)\n\n povRef.current = PercentOfView(cw)\n boundsRef.current = ScrollBounds(\n limitRef.current,\n offsetLocationRef.current!,\n targetRef.current!,\n bodyRef.current!,\n povRef.current,\n selectDuration\n )\n } else {\n limitRef.current = null\n boundsRef.current = null\n povRef.current = null\n }\n\n const anim = Animations(\n document,\n window as WindowType,\n () => {\n if (!wrap) {\n boundsRef.current?.constrain(pointerDownRef.current)\n }\n\n bodyRef.current?.seek()\n\n if (wrap && W > 0) {\n const body = bodyRef.current!\n const dir = body.direction() || Math.sign(targetRef.current!.get() - locationRef.current!.get()) || 0\n looper?.loop(dir)\n }\n\n xRef.current = locationRef.current!.get()\n },\n (alpha) => {\n const body = bodyRef.current\n const shouldSettle = body ? body.settled() : true\n const idle = shouldSettle && !pointerDownRef.current\n if (idle) {\n animRef.current?.stop()\n isAnimatingRef.current = false\n }\n const cur = locationRef.current!.get()\n const prev = previousLocationRef.current!.get()\n const loc = cur * alpha + prev * (1 - alpha)\n offsetLocationRef.current!.set(loc)\n xRef.current = loc\n positionSlider()\n updateActiveIndexFromX(loc)\n }\n )\n animRef.current = anim\n anim.init()\n\n const dragStore = EventStore()\n const moveStore = EventStore()\n const tracker = DragTracker(axis, window as WindowType)\n\n let isMouse = false\n let startMain = 0\n let startCross = 0\n let preventScroll = false\n\n function addDragEvents() {\n const node: any = isMouse ? document : root\n moveStore\n .add(node, 'touchmove', onMove as any)\n .add(node, 'touchend', onUp as any)\n .add(node, 'mousemove', onMove as any, { passive: false })\n .add(node, 'mouseup', onUp as any)\n }\n\n function onDown(evt: PointerEvent) {\n const isMouseEvt = isMouseEvent(evt as any, window as any)\n isMouse = isMouseEvt\n if (isMouseEvt && (evt as MouseEvent).button !== 0) return\n\n downTargetRef.current = evt.target\n\n setDragCursor(true);\n\n pointerDownRef.current = true\n isPointerDown.current = true\n isClickRef.current = true\n\n tracker.pointerDown(evt as any)\n startMain = tracker.readPoint(evt as any, AX.main)\n startCross = tracker.readPoint(evt as any, AX.cross)\n\n bodyRef.current!.useFriction(0).useDuration(0)\n targetRef.current!.set(locationRef.current!.get())\n\n addDragEvents()\n animRef.current?.start()\n }\n\n const freeBoost = { mouse: 500, touch: 600 }\n function forceBoost(rawForce: number) {\n const type = isMouse ? 'mouse' : 'touch'\n return rawForce * (freeBoost[type as 'mouse' | 'touch'])\n }\n\n function onMove(evt: PointerEvent) {\n const isTouchEvt = !isMouseEvent(evt as any, window as any)\n if (isTouchEvt && (evt as any).touches?.length >= 2) return onUp(evt)\n\n if (pointerDownRef.current && activePointerIdRef.current != null) setDragCursor(true);\n\n const lastMain = tracker.readPoint(evt as any, AX.main)\n const lastCross = tracker.readPoint(evt as any, AX.cross)\n const diffMain = Math.abs(lastMain - startMain)\n const diffCross = Math.abs(lastCross - startCross)\n\n if (diffMain > 5 || diffCross > 5) isClickRef.current = false\n\n if (!preventScroll && !isMouse) {\n if (!('cancelable' in evt) || !(evt as any).cancelable) return onUp(evt)\n preventScroll = diffMain > diffCross\n if (!preventScroll) return onUp(evt)\n }\n\n const { dx, dy } = tracker.pointerMove(evt as any)\n const deltaMain = (AX.main === 'x' ? dx : dy) * sign\n\n previousDragX.current = dragX.current;\n dragX.current = lastMain * sign\n\n sliderVelocity.current = deltaMain;\n dragMoveTime.current = new Date();\n\n bodyRef.current!.useFriction(0.3).useDuration(0.75);\n targetRef.current!.add(deltaMain);\n\n animRef.current?.start()\n if ((evt as any).cancelable) evt.preventDefault?.()\n }\n\n function onUp(evt: PointerEvent) {\n isPointerDown.current = false\n preventScroll = false\n pointerDownRef.current = false\n moveStore.clear()\n\n setDragCursor(false);\n\n if (isClickRef.current) {\n const idx = getThumbIndexFromEventTarget(evt.target)\n\n if (idx >= 0) {\n commitThumbSelect(idx)\n isMouse = false\n return\n }\n }\n\n if (freeScroll === false) {\n const end = tracker.pointerUp(evt as any)\n let rawForce = (AX.main === 'x' ? end.fx : end.fy)\n\n if (isRtl) rawForce = -rawForce\n\n const isMouseEvt = isMouseEvent(evt as any, window as any)\n const snapForceBoost = { mouse: 300, touch: 400 }\n const boost = snapForceBoost[isMouseEvt ? 'mouse' : 'touch']\n\n const boostedForce = rawForce * boost\n\n const baseScrollTarget = scrollTargetRef.current\n const baseScrollTo = scrollToRef.current\n const body = bodyRef.current\n\n if (!baseScrollTarget || !baseScrollTo || !body) {\n return\n }\n\n function allowedForce(force: number): number {\n const len = slidesRef.current.length || 1\n if (!len || !baseScrollTarget) return 0\n\n const curIndex = selectedIndexRef.current || 0\n const dir = mathSign(force)\n\n if (dir === 0) return 0\n\n if (!skipSnaps) {\n const dirIndex = dir * -1\n let nextIndex = curIndex + dirIndex\n\n if (!wrap) {\n if (nextIndex < 0 || nextIndex > len - 1) {\n nextIndex = curIndex\n }\n } else {\n nextIndex = ((nextIndex % len) + len) % len\n }\n\n const dirBump = slidesRef.current.length === 2 ? dir : 0;\n const nextTarget = baseScrollTarget.byIndex(nextIndex, dirBump)\n return nextTarget.distance\n }\n\n const baseTarget = baseScrollTarget.byDistance(force, true)\n let { index: proposedIndex } = baseTarget\n const { distance } = baseTarget\n\n const currentIndex = curIndex\n\n if (proposedIndex !== currentIndex) {\n if (!wrap) {\n proposedIndex = Math.max(0, Math.min(len - 1, proposedIndex))\n const clamped = baseScrollTarget.byIndex(proposedIndex, dir)\n return clamped.distance\n }\n return distance\n }\n\n const dirIndex = dir * -1\n let nextIndex = currentIndex + dirIndex\n\n if (wrap) {\n nextIndex = ((nextIndex % len) + len) % len\n } else {\n nextIndex = Math.max(0, Math.min(len - 1, nextIndex))\n if (nextIndex === currentIndex) {\n return 0\n }\n }\n\n const dirBump = slidesRef.current.length === 2 ? dir : 0;\n\n const forced = baseScrollTarget.byIndex(nextIndex, dirBump)\n return forced.distance\n }\n \n const force = allowedForce(boostedForce)\n\n const baseSpeed = selectDuration\n const baseFriction = sliderFriction\n const forceFactor = factorAbs(boostedForce, force)\n const speed = baseSpeed - 10 * forceFactor\n const friction = baseFriction + forceFactor / 50\n\n body.useDuration(speed).useFriction(friction)\n\n baseScrollTo.distance(force, true)\n } else {\n const end = tracker.pointerUp(evt as any)\n const raw = (AX.main === 'x' ? end.fx : end.fy)\n const boosted = forceBoost(raw)\n const force = boosted\n const factor = Math.min(1, Math.abs(raw) > 0 ? Math.abs((Math.abs(boosted) - Math.abs(force)) / (raw || 1)) : 0)\n const speed = freeScrollDuration - 10 * factor\n const friction = sliderFriction + factor / 50\n bodyRef.current!.useDuration(speed).useFriction(friction)\n\n targetRef.current!.add(force)\n\n anim.start()\n isMouse = false\n }\n }\n\n dragStore\n .add(root, 'dragstart', (evt) => (evt as Event).preventDefault(), { passive: false })\n .add(root, 'touchstart', onDown as any)\n .add(root, 'mousedown', onDown as any, { passive: true })\n .add(root, 'touchcancel', onUp as any)\n .add(root, 'contextmenu', onUp as any)\n\n function onWheel(e: WheelEvent) {\n const primary = isHorizontal ? e.deltaX : e.deltaY\n const primaryAbs = Math.abs(primary)\n const crossAbs = Math.abs(isHorizontal ? e.deltaY : e.deltaX)\n if (primaryAbs <= crossAbs) return\n\n if (contentLength <= containerLength) return;\n\n const cur = (offsetLocationRef.current?.get() ?? 0) - (AX.wheelDelta(e) * sign);\n let next = cur;\n if (!wrap && limitRef.current) next = limitRef.current.constrain(cur);\n\n targetRef.current?.set(next);\n bodyRef.current?.useDuration(0).useFriction(1);\n\n animRef.current?.start();\n xRef.current = next;\n positionSlider();\n if ((e as any).cancelable) e.preventDefault?.();\n }\n root.addEventListener('wheel', onWheel as any, { passive: false })\n\n return () => {\n dragStore.clear()\n moveStore.clear()\n root.removeEventListener('wheel', onWheel as any)\n animRef.current?.destroy()\n animRef.current = null\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [count, contentLength, containerLength, position, slidesState.length, layoutReady, geomKey, isMeasured, wrap]);\n\n useEffect(() => {\n const isNarrow =\n !wrap && thumbnailsCenter && contentLength <= containerLength\n\n const base = isNarrow ? baseOffsetRef.current : 0\n\n const min = -(Math.max(0, contentLength - containerLength))\n const max = 0\n\n const nextLimit = Limit(isNaN(min) ? 0 : min, max)\n limitRef.current = nextLimit\n\n if (pointerDownRef.current) return\n if (isAnimatingRef.current) return\n\n const cur = targetRef.current?.get() ?? 0\n const clamped = nextLimit.constrain(cur)\n\n if (Math.abs(clamped - cur) < 0.001) return\n\n locationRef.current?.set(clamped)\n previousLocationRef.current?.set(clamped)\n offsetLocationRef.current?.set(clamped)\n targetRef.current?.set(clamped)\n xRef.current = clamped\n\n translateRef.current?.to((clamped + base) * sign)\n }, [contentLength, containerLength, thumbnailsCenter, sign, wrap])\n\n useEffect(() => {\n if (!contentLength || !containerLength || !(thumbSize || thumbLong)) return\n const i = clamp(channelRef.current.get().index ?? 0, 0, Math.max(0, count - 1))\n animateToScroll(getScrollForIndex(i))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [contentLength, containerLength, thumbLong, thumbSize, count])\n\n const normalizedLoading = useMemo(() => {\n const src = loadingOptions ?? {};\n return {\n isLoading: src.isLoading,\n skeletonCount: src.skeletonCount,\n renderLoading: src.renderLoading,\n };\n }, [loadingOptions]);\n\n const normalizedIntro = useMemo(() => {\n const src = introOptions ?? {};\n return {\n renderIntro: src.renderIntro,\n staggerMs: src.staggerMs ?? 40,\n transform: src.transform ?? 10,\n durationMs: src.durationMs ?? 300,\n easing: src.easing ?? 'cubic-bezier(.2,.7,.2,1)',\n };\n }, [introOptions]);\n\n const renderedThumbs = (clonedChildren.length\n ? clonedChildren\n : rawKids.map((c, i) => cloneThumb(c, `fallback-${i}`, i, i))\n );\n\n const introChildren = useMemo(() => {\n return renderedThumbs.map((child: any, i: number) => {\n if (!isValidElement(child)) return child;\n\n const el = child as React.ReactElement<any>;\n const prevStyle = (el.props?.style || {}) as React.CSSProperties;\n\n return cloneElement<any>(el, {\n ...el.props,\n 'data-rmg-index': i,\n style: {\n ...prevStyle,\n ['--rmg-intro-index' as any]: i,\n } as React.CSSProperties & Record<string, any>,\n });\n });\n }, [renderedThumbs]);\n\n const MAX_SKELETONS = 12;\n\n const fallbackCount = 6;\n\n const { cssText: skeletonCss, ssrBaseCount: skeletonCountBase } = useMemo(() => {\n return buildScopedSkeletonCountCss({\n scopeId,\n responsiveCount: normalizedLoading.skeletonCount,\n fallbackCount,\n breakpointMap,\n maxSlots: MAX_SKELETONS,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scopeId, normalizedLoading.skeletonCount, breakpointMap]);\n\n const defaultThumbSkeleton = (\n <div className={cls.thumbSkeletonOverlay} data-rmg-skel-part=\"overlay\">\n <div\n className={cls.thumbSkeletonRow}\n data-rmg-skel-part=\"row\"\n style={{\n gap,\n flexDirection: isHorizontal ? 'row' : 'column',\n }}\n >\n {Array.from({ length: MAX_SKELETONS }).map((_, i) => (\n <div\n key={`rmg-thumb-skel-${i}`}\n className={cls.thumbSkeleton}\n data-rmg-skel-slot={i + 1}\n style={{\n width: isHorizontal ? (thumbnailWidth ?? thumbSize ?? 64) : '100%',\n height: isHorizontal ? '100%' : (thumbnailHeight ?? thumbSize ?? 64),\n }}\n />\n ))}\n </div>\n </div>\n );\n\n const showLoading =\n normalizedLoading.isLoading != null\n ? !!normalizedLoading.isLoading\n : !isReady;\n\n const loadingNode = showLoading\n ? (\n normalizedLoading.renderLoading\n ? normalizedLoading.renderLoading({ layout: 'thumbnails', count: skeletonCountBase })\n : defaultThumbSkeleton\n )\n : null;\n\n const fadeClass =\n showLoading\n ? ''\n : (isReady && inView)\n ? cls.fadeInActive\n : cls.fadeInStart;\n\n const baseContainerProps: React.HTMLAttributes<HTMLDivElement> = {\n className: [cls.fade_container, fadeClass].filter(Boolean).join(' '),\n 'aria-busy': showLoading ? true : undefined,\n };\n\n const outerStyle: React.CSSProperties = {\n overflow: 'hidden',\n ...(isHorizontal\n ? { width: thumbnailsContainerWidth, height: thumbCross ? '100%' : 'auto' }\n : { height: thumbnailsContainerHeight, width: thumbLong ? '100%' : 'auto' }),\n ...(style || {}),\n }\n\n const trackStyle: React.CSSProperties = {\n width: isHorizontal ? '100%' : (thumbnailWidth ?? '100%'),\n height: isHorizontal ? (thumbnailHeight ?? '100%') : '100%',\n willChange: 'transform',\n backfaceVisibility: 'hidden',\n touchAction: 'none',\n visibility: isReady ? 'visible' : 'hidden',\n }\n\n const effectiveRippleEnabled = rippleEnabled !== false;\n const effectiveRippleClass = (rippleClassName && rippleClassName.trim().length > 0)\n ? rippleClassName\n : cls.ripple;\n\n const createRipple = useCallback((container: HTMLElement) => {\n if (!effectiveRippleEnabled || !container) return;\n\n const old = container.querySelector<HTMLElement>('[data-rmg-ripple]');\n if (old) old.remove();\n\n const rect = container.getBoundingClientRect();\n const diameter = Math.max(rect.width, rect.height);\n const radius = diameter / 2;\n const x = rect.width / 2 - radius;\n const y = rect.height / 2 - radius;\n\n const span = document.createElement('span');\n span.setAttribute('data-rmg-ripple', '');\n if (effectiveRippleClass) {\n span.className = effectiveRippleClass;\n }\n\n span.style.width = `${diameter}px`;\n span.style.height = `${diameter}px`;\n span.style.left = `${x}px`;\n span.style.top = `${y}px`;\n\n container.appendChild(span);\n span.addEventListener('animationend', () => span.remove(), { once: true });\n }, [effectiveRippleEnabled, effectiveRippleClass]);\n\n const arrowNodes = (\n <RmgArrows\n axisMain={AX.main}\n clientKey={AX.clientKey}\n wrap={wrap}\n isRtl={isRtl}\n showArrows={showArrows}\n selectedIndex={selectedIndexRef.current}\n slideCount={slidesRef.current?.length ?? 0}\n measureRef={trackRef}\n viewportMainSizeRef={sliderWidth}\n previous={previous}\n next={next}\n prevButtonRef={prevButtonRef}\n nextButtonRef={nextButtonRef}\n createRipple={createRipple}\n arrowStyles={arrowStyles}\n prevArrowStyles={prevArrowStyles}\n nextArrowStyles={nextArrowStyles}\n arrowClassName={arrowClassName}\n prevArrowClassName={prevArrowClassName}\n nextArrowClassName={nextArrowClassName}\n renderPrevArrow={renderPrevArrow}\n renderNextArrow={renderNextArrow}\n renderArrows={renderArrows}\n />\n );\n\n const inner = (\n <>\n {arrowNodes}\n <div ref={trackRef} style={trackStyle}>\n {introChildren}\n </div>\n </>\n );\n\n const root = (\n <div\n {...baseContainerProps}\n ref={containerRef}\n id={scopeId}\n data-rmg-scope={scopeId}\n className={[className, thumbnailsContainerClassName, baseContainerProps.className]\n .filter(Boolean)\n .join(' ')\n }\n style={{\n ...outerStyle,\n ...(thumbnailsContainerStyle || {}),\n ...(baseContainerProps.style || {}),\n ['--rmg-intro-stagger' as any]: `${normalizedIntro.staggerMs}ms`,\n ['--rmg-intro-transform' as any]: `${normalizedIntro.transform}px`,\n ['--rmg-intro-duration' as any]: `${normalizedIntro.durationMs}ms`,\n ['--rmg-intro-easing' as any]: normalizedIntro.easing,\n }}\n >\n {loadingNode}\n {normalizedIntro.renderIntro\n ? normalizedIntro.renderIntro(\n { active: isReady && inView, containerProps: baseContainerProps },\n inner\n )\n : inner}\n </div>\n );\n\n return (\n <>\n {skeletonCss && <style dangerouslySetInnerHTML={{ __html: skeletonCss }} />}\n {root}\n </>\n );\n}"]}
|
package/dist/index.css
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/* src/Gallery/fullscreen/FullscreenSlider.module.css */
|
|
2
|
-
.rtl {
|
|
3
|
-
}
|
|
4
|
-
.track {
|
|
5
|
-
position: relative;
|
|
6
|
-
left: 0;
|
|
7
|
-
}
|
|
8
|
-
.rtl .track {
|
|
9
|
-
left: auto;
|
|
10
|
-
right: 0;
|
|
11
|
-
}
|
|
12
|
-
[data-rmg-plyr-provider=mp4] :global(.plyr__video-wrapper),
|
|
13
|
-
[data-rmg-plyr-provider=vimeo] :global(.plyr__video-wrapper) {
|
|
14
|
-
pointer-events: none !important;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
1
|
/* src/Gallery/slider/Slider.module.css */
|
|
18
2
|
.rtl {
|
|
19
3
|
}
|
|
@@ -705,4 +689,20 @@
|
|
|
705
689
|
opacity: 0;
|
|
706
690
|
}
|
|
707
691
|
}
|
|
692
|
+
|
|
693
|
+
/* src/Gallery/fullscreen/FullscreenSlider.module.css */
|
|
694
|
+
.rtl {
|
|
695
|
+
}
|
|
696
|
+
.track {
|
|
697
|
+
position: relative;
|
|
698
|
+
left: 0;
|
|
699
|
+
}
|
|
700
|
+
.rtl .track {
|
|
701
|
+
left: auto;
|
|
702
|
+
right: 0;
|
|
703
|
+
}
|
|
704
|
+
[data-rmg-plyr-provider=mp4] :global(.plyr__video-wrapper),
|
|
705
|
+
[data-rmg-plyr-provider=vimeo] :global(.plyr__video-wrapper) {
|
|
706
|
+
pointer-events: none !important;
|
|
707
|
+
}
|
|
708
708
|
/*# sourceMappingURL=index.css.map */
|