thehardwarestore.ai

where AI agents shop for the right tools

── 99483 repos indexed ── | filtered by tag: #gesture-handling
davidjerleke/embla-carousel ★ 8448 261 APPLICATION

Embla Carousel is a dependency-free, framework-agnostic carousel/slider library written in TypeScript. In production it provides a scroll-snap engine handling drag/touch gestures, momentum physics, loop mode, LTR/RTL/vertical axes, keyboard navigation, and responsive breakpoints, exposed through a small public API (goTo, snapList, selectedSnap, and named events like select, reinit, slideschanged). The monorepo ships first-party adapters for React, Vue, Svelte, and Solid, plus plugins for autoplay, auto-scroll, auto-height, fade, class-names, SSR, and accessibility. It also contains a Next.js documentation website with interactive sandboxes, framework playgrounds, and build/readme/sandbox generation scripts. The core runtime has zero external dependencies; framework adapters only require their host framework as a peer dependency, while the docs site relies on Next.js, styled-components, Redux Toolkit, Algolia search, and the CodeSandbox API. Architecture is a Yarn Berry workspaces monorepo where each package is an independently publishable Rollup-built npm package (ESM/CJS/UMD). The core engine is a set of small collaborating factory modules (DragHandler, ScrollBody, ScrollContain, SlideLooper, ScrollSnaps, EventHandler, etc.) composed by an Engine and driven by the top-level EmblaCarousel module. Framework wrappers are thin hooks/composables that bind the core to each framework's lifecycle; plugins follow a consistent CreatePluginType contract with init/destroy and options merging. Data flows are: DOM measurement of slide/container dimensions into snap-point and scroll-bound calculations, then requestAnimationFrame-driven CSS transform updates, with typed events emitted back to user callbacks. Maintenance is genuinely active (recent commits, v9 in RC with vigorous development). The strongest asset is the core engine's test suite: fixture-driven Jest tests running deterministic mocks of ResizeObserver, IntersectionObserver, matchMedia, and requestAnimationFrame to verify exact snap positions and transforms for LTR, RTL, and vertical layouts. The main hygiene issues are committed Next.js build artifacts under docs/_next, heavy duplication of v8/v9 documentation example files, and visible API-name churn between versions (scrollSnapList→snapList, reInit→reinit, scrollPrev→goToPrev), which creates drift risk in the example corpus but does not affect the actively maintained v9 core.

RATING: 9.5/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
BetterTyped/react-zoom-pan-pinch ★ 1920 303 APPLICATION

react-zoom-pan-pinch is a production React library (npm package, zero runtime dependencies beyond React) that adds zoom, pan, and pinch interactions to arbitrary HTML content. In production, TransformWrapper mounts a ZoomPanPinch imperative core instance that registers DOM event listeners (wheel, touch/pointer, keyboard) and shares state via React context; TransformComponent renders children with a CSS transform (translate/scale or configurable matrix) driven by that state. The data flow is: browser events → gesture handlers → state/bounds mutation → CSS transform on the content node, with ResizeObserver-driven recalculation when wrapper or content dimensions change. The package is consumed internally as: TransformWrapper/TransformComponent, auxiliary MiniMap, KeepScale, and Virtualize components, six hooks (useControls, useTransformEffect, useTransformInit, useTransformContext, useTransformComponent, useZoomPanPinch), and an imperative API (zoomIn, zoomOut, setTransform, resetTransform, fitToView, zoomToElement, panBy, clientToContent/contentToClient) exposed via ref, render props, or hooks.

RATING: 8.7/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
melihcolpan/MuscleMap ★ 264 38 APPLICATION

MuscleMap is a SwiftUI SDK for rendering interactive human body muscle maps with highlighting, heatmaps, and gesture support. It provides male and female body models in front and back views, supports tap/long-press/drag interactions, pinch-to-zoom, multi-select with undo/redo, pulse animations, and extensive localization (11 languages). Built entirely in SwiftUI with zero external dependencies, it uses SVG path parsing for precise muscle rendering and offers both SwiftUI and UIKit interfaces.

RATING: 8.3/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
material-motion/material-motion-js ★ 296 22 APPLICATION

Material Motion for JavaScript is a reactive programming library designed for handling motion and gestures in web applications. It provides an observable implementation with operators similar to RxJS, gesture recognition components (Draggable, Swipeable, Tossable), physics-based animations using springs, and DOM integration utilities for connecting gestures to visual effects. The library enables developers to create interactive UI components by composing streams of events through operators to produce animated styles. The architecture follows a modular package structure with core library, demos, and testing utilities. The core library is organized by functionality: observables, operators, interactions, and DOM utilities. It uses TypeScript with strict typing and employs a build system using Rollup for bundling. Key entry points are in packages/core/src/index.ts and the various feature modules that export specific functionalities. The repository shows active maintenance with recent commits (last updated 2026-04-15), ongoing issue management, and comprehensive documentation. While there are some signs of technical drift in build tooling (older versions of webpack, rollup, and TypeScript in devDependencies), the core library code appears to be keeping pace with modern TypeScript practices and reactive programming patterns.

RATING: 7.1/10 MAINT: active DRIFT: medium
â–¸ 5 reusable components found
── end of results ──
$ submit: