scroll-system 1.0.1 → 1.1.1

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.
Files changed (79) hide show
  1. package/README.md +138 -3
  2. package/dist/components/AriaLiveRegion.d.ts +18 -0
  3. package/dist/components/AriaLiveRegion.d.ts.map +1 -0
  4. package/dist/components/ControlledView.d.ts +16 -0
  5. package/dist/components/ControlledView.d.ts.map +1 -0
  6. package/dist/components/FullView.d.ts +20 -0
  7. package/dist/components/FullView.d.ts.map +1 -0
  8. package/dist/components/LazyView.d.ts +33 -0
  9. package/dist/components/LazyView.d.ts.map +1 -0
  10. package/dist/components/NestedScrollView.d.ts +38 -0
  11. package/dist/components/NestedScrollView.d.ts.map +1 -0
  12. package/dist/components/ScrollContainer.d.ts +9 -0
  13. package/dist/components/ScrollContainer.d.ts.map +1 -0
  14. package/dist/components/ScrollDebugOverlay.d.ts +17 -0
  15. package/dist/components/ScrollDebugOverlay.d.ts.map +1 -0
  16. package/dist/components/ScrollLockedView.d.ts +10 -0
  17. package/dist/components/ScrollLockedView.d.ts.map +1 -0
  18. package/dist/components/index.d.ts +9 -0
  19. package/dist/components/index.d.ts.map +1 -0
  20. package/dist/constants.d.ts +17 -0
  21. package/dist/constants.d.ts.map +1 -0
  22. package/dist/hooks/index.d.ts +21 -0
  23. package/dist/hooks/index.d.ts.map +1 -0
  24. package/dist/hooks/useAutoScroll.d.ts +41 -0
  25. package/dist/hooks/useAutoScroll.d.ts.map +1 -0
  26. package/dist/hooks/useDragHandler.d.ts +28 -0
  27. package/dist/hooks/useDragHandler.d.ts.map +1 -0
  28. package/dist/hooks/useFocusManagement.d.ts +19 -0
  29. package/dist/hooks/useFocusManagement.d.ts.map +1 -0
  30. package/dist/hooks/useGestureConfig.d.ts +37 -0
  31. package/dist/hooks/useGestureConfig.d.ts.map +1 -0
  32. package/dist/hooks/useGlobalProgress.d.ts +36 -0
  33. package/dist/hooks/useGlobalProgress.d.ts.map +1 -0
  34. package/dist/hooks/useHashSync.d.ts +24 -0
  35. package/dist/hooks/useHashSync.d.ts.map +1 -0
  36. package/dist/hooks/useInfiniteScroll.d.ts +41 -0
  37. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
  38. package/dist/hooks/useKeyboardHandler.d.ts +20 -0
  39. package/dist/hooks/useKeyboardHandler.d.ts.map +1 -0
  40. package/dist/hooks/useMetricsReporter.d.ts +23 -0
  41. package/dist/hooks/useMetricsReporter.d.ts.map +1 -0
  42. package/dist/hooks/useNavigation.d.ts +42 -0
  43. package/dist/hooks/useNavigation.d.ts.map +1 -0
  44. package/dist/hooks/useParallax.d.ts +33 -0
  45. package/dist/hooks/useParallax.d.ts.map +1 -0
  46. package/dist/hooks/usePreload.d.ts +31 -0
  47. package/dist/hooks/usePreload.d.ts.map +1 -0
  48. package/dist/hooks/useScrollAnalytics.d.ts +40 -0
  49. package/dist/hooks/useScrollAnalytics.d.ts.map +1 -0
  50. package/dist/hooks/useScrollLock.d.ts +40 -0
  51. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  52. package/dist/hooks/useScrollSystem.d.ts +16 -0
  53. package/dist/hooks/useScrollSystem.d.ts.map +1 -0
  54. package/dist/hooks/useSnapPoints.d.ts +77 -0
  55. package/dist/hooks/useSnapPoints.d.ts.map +1 -0
  56. package/dist/hooks/useTouchHandler.d.ts +12 -0
  57. package/dist/hooks/useTouchHandler.d.ts.map +1 -0
  58. package/dist/hooks/useViewProgress.d.ts +22 -0
  59. package/dist/hooks/useViewProgress.d.ts.map +1 -0
  60. package/dist/hooks/useViewRegistration.d.ts +25 -0
  61. package/dist/hooks/useViewRegistration.d.ts.map +1 -0
  62. package/dist/hooks/useWheelHandler.d.ts +8 -0
  63. package/dist/hooks/useWheelHandler.d.ts.map +1 -0
  64. package/dist/index.d.ts +16 -2009
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +878 -284
  67. package/dist/index.mjs +817 -212
  68. package/dist/store/index.d.ts +2 -0
  69. package/dist/store/index.d.ts.map +1 -0
  70. package/dist/store/navigation.store.d.ts +23 -0
  71. package/dist/store/navigation.store.d.ts.map +1 -0
  72. package/dist/types/index.d.ts +315 -0
  73. package/dist/types/index.d.ts.map +1 -0
  74. package/dist/utils/index.d.ts +21 -0
  75. package/dist/utils/index.d.ts.map +1 -0
  76. package/dist/utils/normalizeWheel.d.ts +10 -0
  77. package/dist/utils/normalizeWheel.d.ts.map +1 -0
  78. package/package.json +4 -2
  79. package/dist/index.d.mts +0 -2010
@@ -0,0 +1,41 @@
1
+ /**
2
+ * useInfiniteScroll Hook
3
+ * ========================================
4
+ * Enables infinite/loop scroll behavior.
5
+ * Wraps navigation from last view to first and vice versa.
6
+ */
7
+ import type { InfiniteScrollConfig } from "../types";
8
+ export interface InfiniteScrollState {
9
+ /** Whether infinite scroll is enabled */
10
+ isEnabled: boolean;
11
+ /** Enable infinite scroll */
12
+ enable: () => void;
13
+ /** Disable infinite scroll */
14
+ disable: () => void;
15
+ /** Toggle infinite scroll */
16
+ toggle: () => void;
17
+ /** Check if can loop forward (at last view) */
18
+ canLoopForward: boolean;
19
+ /** Check if can loop backward (at first view) */
20
+ canLoopBackward: boolean;
21
+ }
22
+ /**
23
+ * Hook to control infinite scroll behavior.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * // Simple usage - enable infinite scroll
28
+ * useInfiniteScroll({ enabled: true });
29
+ *
30
+ * // With controls
31
+ * const { isEnabled, toggle } = useInfiniteScroll({ enabled: true });
32
+ *
33
+ * return (
34
+ * <button onClick={toggle}>
35
+ * Loop: {isEnabled ? 'ON' : 'OFF'}
36
+ * </button>
37
+ * );
38
+ * ```
39
+ */
40
+ export declare function useInfiniteScroll(config?: boolean | InfiniteScrollConfig): InfiniteScrollState;
41
+ //# sourceMappingURL=useInfiniteScroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInfiniteScroll.d.ts","sourceRoot":"","sources":["../../hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAOrD,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,+CAA+C;IAC/C,cAAc,EAAE,OAAO,CAAC;IACxB,iDAAiD;IACjD,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,OAAO,GAAG,oBAA4B,GAC7C,mBAAmB,CA4CrB"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Scroll System - Keyboard Handler
3
+ * =========================================
4
+ * Captures keyboard input and translates it to navigation intentions.
5
+ *
6
+ * Supported Keys:
7
+ * - ArrowUp / ArrowDown: Navigate between views
8
+ * - PageUp / PageDown: Navigate between views
9
+ * - Space: Navigate to next view (Shift+Space for previous)
10
+ * - Home / End: Go to first / last view
11
+ */
12
+ export interface UseKeyboardHandlerOptions {
13
+ /** Enable/disable keyboard navigation (default: true) */
14
+ enabled?: boolean;
15
+ /** Prevent default behavior for handled keys (default: true) */
16
+ preventDefault?: boolean;
17
+ }
18
+ export declare function useKeyboardHandler(options?: UseKeyboardHandlerOptions): void;
19
+ export default useKeyboardHandler;
20
+ //# sourceMappingURL=useKeyboardHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyboardHandler.d.ts","sourceRoot":"","sources":["../../hooks/useKeyboardHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,QA8EzE;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Scroll System - Metrics Reporter Hook
3
+ * =============================================
4
+ * Hook reutilizable para medir y reportar métricas al Store.
5
+ * Encapsula ResizeObserver y Scroll Listeners.
6
+ *
7
+ * Performance: Throttled to ~15fps (66ms) for scroll events.
8
+ */
9
+ import type { ScrollDirection } from "../types";
10
+ interface UseMetricsReporterOptions {
11
+ id: string;
12
+ isActive: boolean;
13
+ scrollDirection: ScrollDirection;
14
+ onScrollProgress?: (progress: number) => void;
15
+ /** Custom throttle interval (default: 66ms / ~15fps) */
16
+ throttleMs?: number;
17
+ }
18
+ export declare function useMetricsReporter({ id, isActive, scrollDirection, onScrollProgress, throttleMs, }: UseMetricsReporterOptions): {
19
+ scrollRef: import("react").RefObject<HTMLDivElement>;
20
+ measureAndReport: () => void;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=useMetricsReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMetricsReporter.d.ts","sourceRoot":"","sources":["../../hooks/useMetricsReporter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAe,eAAe,EAAE,MAAM,UAAU,CAAC;AAK7D,UAAU,yBAAyB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,eAAe,CAAC;IACjC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,EAAE,EACF,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,UAA+B,GAChC,EAAE,yBAAyB;;;EAiE3B"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * PABRIX Scroll System - Navigation Hook
3
+ * =======================================
4
+ * Hook principal para interactuar con el sistema de navegación.
5
+ * Provee una API limpia y tipada para controlar la navegación.
6
+ */
7
+ /**
8
+ * Hook para acceder a la API de navegación del sistema de scroll
9
+ *
10
+ * @deprecated Use `useScrollSystem` instead. This hook will be removed in future versions.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const { goToView, goToNext, activeIndex } = useNavigation();
15
+ *
16
+ * // Navegar a una vista específica
17
+ * goToView('hero');
18
+ * goToView(2);
19
+ *
20
+ * // Navegar secuencialmente
21
+ * goToNext();
22
+ * goToPrevious();
23
+ * ```
24
+ */
25
+ export declare function useNavigation(): {
26
+ goToView: (indexOrId: number | string) => void;
27
+ goToNext: () => void;
28
+ goToPrevious: () => void;
29
+ lockScroll: () => void;
30
+ unlockScroll: () => void;
31
+ activeIndex: number;
32
+ activeId: string | null;
33
+ totalViews: number;
34
+ isTransitioning: boolean;
35
+ isScrollLocked: boolean;
36
+ canNavigateNext: boolean;
37
+ canNavigatePrevious: boolean;
38
+ isFirstView: boolean;
39
+ isLastView: boolean;
40
+ progress: number;
41
+ };
42
+ //# sourceMappingURL=useNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNavigation.d.ts","sourceRoot":"","sources":["../../hooks/useNavigation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa;;;;;;;;;;;;;;;;EAmF5B"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * useParallax Hook
3
+ * ========================================
4
+ * Enables parallax effects for elements within views.
5
+ * Calculates transform values based on scroll progress.
6
+ */
7
+ import type { ParallaxConfig, ParallaxState } from "../types";
8
+ /**
9
+ * Hook to create parallax effects within views.
10
+ *
11
+ * @param viewId - The ID of the view this parallax belongs to
12
+ * @param config - Parallax configuration
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * function HeroSection() {
17
+ * const { style } = useParallax("hero", { speed: 0.3 });
18
+ *
19
+ * return (
20
+ * <div style={style}>
21
+ * <img src="/background.jpg" alt="Background" />
22
+ * </div>
23
+ * );
24
+ * }
25
+ * ```
26
+ */
27
+ export declare function useParallax(viewId: string, config?: ParallaxConfig): ParallaxState;
28
+ /**
29
+ * Simplified hook for parallax on active view only.
30
+ * Uses global progress instead of view-specific calculations.
31
+ */
32
+ export declare function useActiveParallax(config?: ParallaxConfig): ParallaxState;
33
+ //# sourceMappingURL=useParallax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useParallax.d.ts","sourceRoot":"","sources":["../../hooks/useParallax.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAkB9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,cAAmB,GAC1B,aAAa,CAsDf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,cAAmB,GAAG,aAAa,CAiC5E"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * usePreload Hook
3
+ * ========================================
4
+ * Manages view preloading for smoother transitions.
5
+ * Pre-renders adjacent views based on configuration.
6
+ */
7
+ import type { PreloadConfig } from "../types";
8
+ export interface PreloadState {
9
+ /** Whether a specific view should be preloaded */
10
+ shouldPreload: (viewId: string) => boolean;
11
+ /** List of view IDs that should be preloaded */
12
+ preloadedViewIds: string[];
13
+ /** Check if a view is currently preloaded */
14
+ isPreloaded: (viewId: string) => boolean;
15
+ }
16
+ /**
17
+ * Hook to manage view preloading.
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * const { shouldPreload, preloadedViewIds } = usePreload({ ahead: 2, behind: 1 });
22
+ *
23
+ * // In your view component:
24
+ * if (!shouldPreload(viewId)) {
25
+ * return <Placeholder />;
26
+ * }
27
+ * return <ActualContent />;
28
+ * ```
29
+ */
30
+ export declare function usePreload(config?: PreloadConfig): PreloadState;
31
+ //# sourceMappingURL=usePreload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePreload.d.ts","sourceRoot":"","sources":["../../hooks/usePreload.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAQ9C,MAAM,WAAW,YAAY;IAC3B,kDAAkD;IAClD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,aAAkB,GAAG,YAAY,CA8DnE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Scroll System - Analytics Hook
3
+ * ================================
4
+ * Tracks view engagement metrics for analytics.
5
+ */
6
+ export interface ViewAnalytics {
7
+ viewId: string;
8
+ viewIndex: number;
9
+ enterTime: number;
10
+ exitTime: number | null;
11
+ duration: number;
12
+ isActive: boolean;
13
+ }
14
+ export interface UseScrollAnalyticsOptions {
15
+ /** Callback when user enters a view */
16
+ onViewEnter?: (analytics: ViewAnalytics) => void;
17
+ /** Callback when user exits a view */
18
+ onViewExit?: (analytics: ViewAnalytics) => void;
19
+ /** Enable/disable tracking (default: true) */
20
+ enabled?: boolean;
21
+ }
22
+ /**
23
+ * Hook for tracking view engagement analytics.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * useScrollAnalytics({
28
+ * onViewEnter: (data) => analytics.track("view_enter", data),
29
+ * onViewExit: (data) => analytics.track("view_exit", { ...data, duration: data.duration }),
30
+ * });
31
+ * ```
32
+ */
33
+ export declare function useScrollAnalytics(options?: UseScrollAnalyticsOptions): {
34
+ currentViewId: string | null;
35
+ currentViewIndex: number;
36
+ viewStartTime: number;
37
+ getTimeInView: () => number;
38
+ };
39
+ export default useScrollAnalytics;
40
+ //# sourceMappingURL=useScrollAnalytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollAnalytics.d.ts","sourceRoot":"","sources":["../../hooks/useScrollAnalytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,uCAAuC;IACvC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IACjD,sCAAsC;IACtC,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B;;;;;EAsEzE;AAED,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * useScrollLock Hook
3
+ * ========================================
4
+ * Programmatic control for locking/unlocking scroll navigation.
5
+ * Useful for modals, forms, or any scenario requiring temporary navigation prevention.
6
+ */
7
+ export interface ScrollLockState {
8
+ /** Whether global navigation is currently locked */
9
+ isLocked: boolean;
10
+ /** Lock global navigation */
11
+ lock: () => void;
12
+ /** Unlock global navigation */
13
+ unlock: () => void;
14
+ /** Toggle lock state */
15
+ toggle: () => void;
16
+ /** Lock a specific view by ID */
17
+ lockView: (viewId: string) => void;
18
+ /** Unlock a specific view by ID */
19
+ unlockView: (viewId: string) => void;
20
+ }
21
+ /**
22
+ * Hook for programmatic control of scroll navigation locking.
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * const { lock, unlock, isLocked } = useScrollLock();
27
+ *
28
+ * const openModal = () => {
29
+ * lock();
30
+ * setModalOpen(true);
31
+ * };
32
+ *
33
+ * const closeModal = () => {
34
+ * unlock();
35
+ * setModalOpen(false);
36
+ * };
37
+ * ```
38
+ */
39
+ export declare function useScrollLock(): ScrollLockState;
40
+ //# sourceMappingURL=useScrollLock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollLock.d.ts","sourceRoot":"","sources":["../../hooks/useScrollLock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,wBAAwB;IACxB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iCAAiC;IACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,mCAAmC;IACnC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,IAAI,eAAe,CAiC/C"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Scroll System - Public API Hook
3
+ * =======================================
4
+ * Facade principal para el uso de la librería.
5
+ * Expone una API estable y documentada.
6
+ */
7
+ import type { ScrollSystemAPI } from "../types";
8
+ /**
9
+ * Hook principal para consumir el sistema de scroll.
10
+ * Retorna la API pública del sistema.
11
+ */
12
+ export declare function useScrollSystem(): ScrollSystemAPI & {
13
+ isDragging: boolean;
14
+ isTransitioning: boolean;
15
+ };
16
+ //# sourceMappingURL=useScrollSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollSystem.d.ts","sourceRoot":"","sources":["../../hooks/useScrollSystem.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD;;;GAGG;AACH,wBAAgB,eAAe,IAAI,eAAe,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,CAqFrG"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * useSnapPoints Hook
3
+ * ========================================
4
+ * Manages snap points within views for sub-view navigation.
5
+ * Enables multiple "stops" within a single scrollable view.
6
+ */
7
+ import type { SnapPoint } from "../types";
8
+ export interface UseSnapPointsOptions {
9
+ /** The view ID this snap points system belongs to */
10
+ viewId: string;
11
+ /** Array of snap points */
12
+ points: SnapPoint[];
13
+ /** Threshold for snapping (0-1, default: 0.1) */
14
+ snapThreshold?: number;
15
+ /** Enable smooth scrolling to snap points */
16
+ smoothScroll?: boolean;
17
+ }
18
+ export interface SnapPointsState {
19
+ /** Current active snap point */
20
+ activePoint: SnapPoint | null;
21
+ /** Index of the active snap point */
22
+ activeIndex: number;
23
+ /** Navigate to a specific snap point */
24
+ goToPoint: (pointId: string) => void;
25
+ /** Navigate to next snap point */
26
+ goToNextPoint: () => void;
27
+ /** Navigate to previous snap point */
28
+ goToPrevPoint: () => void;
29
+ /** All snap points with active state */
30
+ points: (SnapPoint & {
31
+ isActive: boolean;
32
+ })[];
33
+ /** Current progress within snap points (0-1) */
34
+ progress: number;
35
+ }
36
+ /**
37
+ * Hook to manage snap points within a view.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * const snapPoints = [
42
+ * { id: 'intro', position: 0, label: 'Introduction' },
43
+ * { id: 'features', position: 0.33, label: 'Features' },
44
+ * { id: 'pricing', position: 0.66, label: 'Pricing' },
45
+ * { id: 'cta', position: 1, label: 'Get Started' },
46
+ * ];
47
+ *
48
+ * function LongView() {
49
+ * const { activePoint, goToNextPoint } = useSnapPoints({
50
+ * viewId: 'landing',
51
+ * points: snapPoints,
52
+ * });
53
+ *
54
+ * return (
55
+ * <div>
56
+ * <nav>
57
+ * {snapPoints.map(p => (
58
+ * <button key={p.id} className={activePoint?.id === p.id ? 'active' : ''}>
59
+ * {p.label}
60
+ * </button>
61
+ * ))}
62
+ * </nav>
63
+ * <button onClick={goToNextPoint}>Next Section</button>
64
+ * </div>
65
+ * );
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function useSnapPoints(options: UseSnapPointsOptions): SnapPointsState;
70
+ /**
71
+ * Utility to create snap points from an array of positions.
72
+ */
73
+ export declare function createSnapPoints(positions: number[], options?: {
74
+ prefix?: string;
75
+ labels?: string[];
76
+ }): SnapPoint[];
77
+ //# sourceMappingURL=useSnapPoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSnapPoints.d.ts","sourceRoot":"","sources":["../../hooks/useSnapPoints.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,UAAU,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,kCAAkC;IAClC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,sCAAsC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,wCAAwC;IACxC,MAAM,EAAE,CAAC,SAAS,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,CAAC;IAC9C,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,eAAe,CA+H5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/C,SAAS,EAAE,CAQb"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Scroll System - Touch Handler
3
+ * =====================================
4
+ * Determina la INTENCIÓN del usuario basada en Gestos Táctiles (Swipe).
5
+ * Traduce Touch Events -> Intention -> Store.processIntention()
6
+ */
7
+ export interface UseTouchHandlerOptions {
8
+ /** Enable/disable the touch handler (default: true) */
9
+ enabled?: boolean;
10
+ }
11
+ export declare function useTouchHandler(options?: UseTouchHandlerOptions): void;
12
+ //# sourceMappingURL=useTouchHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTouchHandler.d.ts","sourceRoot":"","sources":["../../hooks/useTouchHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,QA6DnE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * PABRIX Scroll System - View Progress Hook (Read Only)
3
+ * ======================================================
4
+ * Hook para obtener el progreso de scroll de una vista desde el Store.
5
+ * NOTA: Ya no actualiza el progreso, solo lo lee.
6
+ * Las actualizaciones ocurren vía useMetricsReporter.
7
+ */
8
+ import type { NavigationState } from "../types";
9
+ interface UseViewProgressResult {
10
+ progress: number;
11
+ isAtStart: boolean;
12
+ isAtEnd: boolean;
13
+ navigation: NavigationState;
14
+ }
15
+ export declare function useViewProgress(viewId: string): UseViewProgressResult;
16
+ export declare function useActiveViewProgress(): {
17
+ progress: number;
18
+ hasInternalScroll: boolean;
19
+ viewType: import("..").ViewType;
20
+ };
21
+ export {};
22
+ //# sourceMappingURL=useViewProgress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewProgress.d.ts","sourceRoot":"","sources":["../../hooks/useViewProgress.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB,CAmBrE;AAED,wBAAgB,qBAAqB;;;;EAWpC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Scroll System - View Registration Hook
3
+ * ==============================================
4
+ * Hook para registrar vistas en el sistema.
5
+ * Maneja el ciclo de vida de registro/des-registro.
6
+ */
7
+ import type { ViewConfig } from "../types";
8
+ interface UseViewRegistrationOptions {
9
+ config: ViewConfig;
10
+ onActivate?: () => void;
11
+ onDeactivate?: () => void;
12
+ onEnterStart?: () => void;
13
+ onEnterEnd?: () => void;
14
+ onExitStart?: () => void;
15
+ onExitEnd?: () => void;
16
+ }
17
+ export declare function useViewRegistration({ config, onActivate, onDeactivate, onEnterStart, onEnterEnd, onExitStart, onExitEnd, }: UseViewRegistrationOptions): {
18
+ isActive: boolean;
19
+ viewState: import("..").ViewState | undefined;
20
+ index: number;
21
+ scrollProgress: number;
22
+ navigation: import("..").NavigationState;
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=useViewRegistration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewRegistration.d.ts","sourceRoot":"","sources":["../../hooks/useViewRegistration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,UAAU,0BAA0B;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,GACV,EAAE,0BAA0B;;;;;;EAsF5B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * PABRIX Scroll System - Wheel Handler
3
+ * =====================================
4
+ * Determina la INTENCIÓN del usuario basada en eventos de Wheel.
5
+ * Traduce deltaY -> Intention -> Store.processIntention()
6
+ */
7
+ export declare function useWheelHandler(): void;
8
+ //# sourceMappingURL=useWheelHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWheelHandler.d.ts","sourceRoot":"","sources":["../../hooks/useWheelHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,wBAAgB,eAAe,SA2F9B"}