js.foresight 3.0.0 → 3.0.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 (97) hide show
  1. package/README.md +5 -123
  2. package/dist/Manager/ForesightManager.d.ts +89 -0
  3. package/dist/Manager/ForesightManager.d.ts.map +1 -0
  4. package/dist/Manager/ForesightManager.js +639 -0
  5. package/dist/Manager/ForesightManager.js.map +1 -0
  6. package/dist/Manager/constants.d.ts +23 -0
  7. package/dist/Manager/constants.d.ts.map +1 -0
  8. package/dist/Manager/constants.js +24 -0
  9. package/dist/Manager/constants.js.map +1 -0
  10. package/dist/Manager/helpers/clampNumber.d.ts +2 -0
  11. package/dist/Manager/helpers/clampNumber.d.ts.map +1 -0
  12. package/dist/Manager/helpers/clampNumber.js +10 -0
  13. package/dist/Manager/helpers/clampNumber.js.map +1 -0
  14. package/dist/Manager/helpers/getFocusedElementIndex.d.ts +15 -0
  15. package/dist/Manager/helpers/getFocusedElementIndex.d.ts.map +1 -0
  16. package/dist/Manager/helpers/getFocusedElementIndex.js +27 -0
  17. package/dist/Manager/helpers/getFocusedElementIndex.js.map +1 -0
  18. package/dist/Manager/helpers/getScrollDirection.d.ts +3 -0
  19. package/dist/Manager/helpers/getScrollDirection.d.ts.map +1 -0
  20. package/dist/Manager/helpers/getScrollDirection.js +21 -0
  21. package/dist/Manager/helpers/getScrollDirection.js.map +1 -0
  22. package/dist/Manager/helpers/lineSigmentIntersectsRect.d.ts +12 -0
  23. package/dist/Manager/helpers/lineSigmentIntersectsRect.d.ts.map +1 -0
  24. package/dist/Manager/helpers/lineSigmentIntersectsRect.js +52 -0
  25. package/dist/Manager/helpers/lineSigmentIntersectsRect.js.map +1 -0
  26. package/dist/Manager/helpers/predictNextMousePosition.d.ts +19 -0
  27. package/dist/Manager/helpers/predictNextMousePosition.d.ts.map +1 -0
  28. package/dist/Manager/helpers/predictNextMousePosition.js +43 -0
  29. package/dist/Manager/helpers/predictNextMousePosition.js.map +1 -0
  30. package/dist/Manager/helpers/predictNextScrollPosition.d.ts +6 -0
  31. package/dist/Manager/helpers/predictNextScrollPosition.d.ts.map +1 -0
  32. package/dist/Manager/helpers/predictNextScrollPosition.js +20 -0
  33. package/dist/Manager/helpers/predictNextScrollPosition.js.map +1 -0
  34. package/dist/Manager/helpers/rectAndHitSlop.d.ts +33 -0
  35. package/dist/Manager/helpers/rectAndHitSlop.d.ts.map +1 -0
  36. package/dist/Manager/helpers/rectAndHitSlop.js +66 -0
  37. package/dist/Manager/helpers/rectAndHitSlop.js.map +1 -0
  38. package/dist/Manager/helpers/shouldUpdateSetting.d.ts +11 -0
  39. package/dist/Manager/helpers/shouldUpdateSetting.d.ts.map +1 -0
  40. package/dist/Manager/helpers/shouldUpdateSetting.js +16 -0
  41. package/dist/Manager/helpers/shouldUpdateSetting.js.map +1 -0
  42. package/dist/helpers/shouldRegister.d.ts +8 -0
  43. package/dist/helpers/shouldRegister.d.ts.map +1 -0
  44. package/dist/helpers/shouldRegister.js +31 -0
  45. package/dist/helpers/shouldRegister.js.map +1 -0
  46. package/dist/index.d.ts +9 -7
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +2 -3
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.mjs +1 -2
  51. package/dist/index.mjs.map +1 -1
  52. package/dist/src/Manager/ForesightManager.d.ts +89 -0
  53. package/dist/src/Manager/ForesightManager.d.ts.map +1 -0
  54. package/dist/src/Manager/ForesightManager.test.d.ts +2 -0
  55. package/dist/src/Manager/ForesightManager.test.d.ts.map +1 -0
  56. package/dist/src/Manager/constants.d.ts +23 -0
  57. package/dist/src/Manager/constants.d.ts.map +1 -0
  58. package/dist/src/Manager/helpers/clampNumber.d.ts +2 -0
  59. package/dist/src/Manager/helpers/clampNumber.d.ts.map +1 -0
  60. package/dist/src/Manager/helpers/clampNumber.test.d.ts +2 -0
  61. package/dist/src/Manager/helpers/clampNumber.test.d.ts.map +1 -0
  62. package/dist/src/Manager/helpers/getFocusedElementIndex.d.ts +15 -0
  63. package/dist/src/Manager/helpers/getFocusedElementIndex.d.ts.map +1 -0
  64. package/dist/src/Manager/helpers/getFocusedElementIndex.test.d.ts +2 -0
  65. package/dist/src/Manager/helpers/getFocusedElementIndex.test.d.ts.map +1 -0
  66. package/dist/src/Manager/helpers/getScrollDirection.d.ts +3 -0
  67. package/dist/src/Manager/helpers/getScrollDirection.d.ts.map +1 -0
  68. package/dist/src/Manager/helpers/lineSegmentIntersectsRect.test.d.ts +2 -0
  69. package/dist/src/Manager/helpers/lineSegmentIntersectsRect.test.d.ts.map +1 -0
  70. package/dist/src/Manager/helpers/lineSigmentIntersectsRect.d.ts +12 -0
  71. package/dist/src/Manager/helpers/lineSigmentIntersectsRect.d.ts.map +1 -0
  72. package/dist/src/Manager/helpers/predictNextMousePosition.d.ts +19 -0
  73. package/dist/src/Manager/helpers/predictNextMousePosition.d.ts.map +1 -0
  74. package/dist/src/Manager/helpers/predictNextMousePosition.test.d.ts +2 -0
  75. package/dist/src/Manager/helpers/predictNextMousePosition.test.d.ts.map +1 -0
  76. package/dist/src/Manager/helpers/predictNextScrollPosition.d.ts +6 -0
  77. package/dist/src/Manager/helpers/predictNextScrollPosition.d.ts.map +1 -0
  78. package/dist/src/Manager/helpers/rectAndHitSlop.d.ts +33 -0
  79. package/dist/src/Manager/helpers/rectAndHitSlop.d.ts.map +1 -0
  80. package/dist/src/Manager/helpers/rectAndHitSlop.test.d.ts +2 -0
  81. package/dist/src/Manager/helpers/rectAndHitSlop.test.d.ts.map +1 -0
  82. package/dist/src/Manager/helpers/shouldUpdateSetting.d.ts +11 -0
  83. package/dist/src/Manager/helpers/shouldUpdateSetting.d.ts.map +1 -0
  84. package/dist/src/helpers/shouldRegister.d.ts +8 -0
  85. package/dist/src/helpers/shouldRegister.d.ts.map +1 -0
  86. package/dist/src/index.d.ts +3 -0
  87. package/dist/src/index.d.ts.map +1 -0
  88. package/dist/src/types/types.d.ts +309 -0
  89. package/dist/src/types/types.d.ts.map +1 -0
  90. package/dist/test-setup.d.ts +17 -0
  91. package/dist/test-setup.d.ts.map +1 -0
  92. package/dist/tsconfig.tsbuildinfo +1 -0
  93. package/dist/types/types.d.ts +312 -0
  94. package/dist/types/types.d.ts.map +1 -0
  95. package/dist/types/types.js +2 -0
  96. package/dist/types/types.js.map +1 -0
  97. package/package.json +11 -13
@@ -0,0 +1,89 @@
1
+ import type { ForesightElement, ForesightElementData, ForesightEventMap, ForesightEventType, ForesightManagerData, ForesightRegisterOptions, ForesightRegisterResult, UpdateForsightManagerSettings } from "../types/types";
2
+ /**
3
+ * Manages the prediction of user intent based on mouse trajectory and element interactions.
4
+ *
5
+ * ForesightManager is a singleton class responsible for:
6
+ * - Registering HTML elements to monitor.
7
+ * - Tracking mouse movements and predicting future cursor positions.
8
+ * - Detecting when a predicted trajectory intersects with a registered element's bounds.
9
+ * - Invoking callbacks associated with elements upon predicted or actual interaction.
10
+ * - Optionally unregistering elements after their callback is triggered.
11
+ * - Handling global settings for prediction behavior (e.g., history size, prediction time).
12
+ * - Automatically updating element bounds on resize using {@link ResizeObserver}.
13
+ * - Automatically unregistering elements removed from the DOM using {@link MutationObserver}.
14
+ * - Detecting broader layout shifts via {@link MutationObserver} to update element positions.
15
+ *
16
+ * It should be initialized once using {@link ForesightManager.initialize} and then
17
+ * accessed via the static getter {@link ForesightManager.instance}.
18
+ */
19
+ export declare class ForesightManager {
20
+ private static manager;
21
+ private elements;
22
+ private isSetup;
23
+ private _globalCallbackHits;
24
+ private _globalSettings;
25
+ private trajectoryPositions;
26
+ private tabbableElementsCache;
27
+ private lastFocusedIndex;
28
+ private predictedScrollPoint;
29
+ private scrollDirection;
30
+ private domObserver;
31
+ private positionObserver;
32
+ private lastKeyDown;
33
+ private globalListenersController;
34
+ private eventListeners;
35
+ private constructor();
36
+ static initialize(props?: Partial<UpdateForsightManagerSettings>): ForesightManager;
37
+ addEventListener<K extends ForesightEventType>(eventType: K, listener: (event: ForesightEventMap[K]) => void, options?: {
38
+ signal?: AbortSignal;
39
+ }): (() => void) | undefined;
40
+ removeEventListener<K extends ForesightEventType>(eventType: K, listener: (event: ForesightEventMap[K]) => void): void;
41
+ logSubscribers(): void;
42
+ private emit;
43
+ get getManagerData(): Readonly<ForesightManagerData>;
44
+ static get isInitiated(): Readonly<boolean>;
45
+ static get instance(): ForesightManager;
46
+ get registeredElements(): ReadonlyMap<ForesightElement, ForesightElementData>;
47
+ register({ element, callback, hitSlop, name, }: ForesightRegisterOptions): ForesightRegisterResult;
48
+ private unregister;
49
+ private updateNumericSettings;
50
+ private updateBooleanSetting;
51
+ alterGlobalSettings(props?: Partial<UpdateForsightManagerSettings>): void;
52
+ private forceUpdateAllElementBounds;
53
+ private updatePointerState;
54
+ /**
55
+ * Processes elements that unregister after a single callback.
56
+ *
57
+ * This is a "fire-and-forget" handler. Its only goal is to trigger the
58
+ * callback once. It does so if the mouse trajectory is predicted to hit the
59
+ * element (if prediction is on) OR if the mouse physically hovers over it.
60
+ * It does not track state, as the element is immediately unregistered.
61
+ *
62
+ * @param elementData - The data object for the foresight element.
63
+ * @param element - The HTML element being interacted with.
64
+ */
65
+ private handleCallbackInteraction;
66
+ private handleMouseMove;
67
+ /**
68
+ * Detects when registered elements are removed from the DOM and automatically unregisters them to prevent stale references.
69
+ *
70
+ * @param mutationsList - Array of MutationRecord objects describing the DOM changes
71
+ *
72
+ */
73
+ private handleDomMutations;
74
+ private handleKeyDown;
75
+ private handleFocusIn;
76
+ private updateHitCounters;
77
+ private callCallback;
78
+ /**
79
+ * ONLY use this function when you want to change the rect bounds via code, if the rects are changing because of updates in the DOM do not use this function.
80
+ * We need an observer for that
81
+ */
82
+ private forceUpdateElementBounds;
83
+ private updateElementBounds;
84
+ private handleScrollPrefetch;
85
+ private handlePositionChange;
86
+ private initializeGlobalListeners;
87
+ private removeGlobalListeners;
88
+ }
89
+ //# sourceMappingURL=ForesightManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForesightManager.d.ts","sourceRoot":"","sources":["../../../src/Manager/ForesightManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EAEpB,wBAAwB,EACxB,uBAAuB,EAOvB,6BAA6B,EAC9B,MAAM,gBAAgB,CAAA;AAkCvB;;;;;;;;;;;;;;;;GAgBG;AAEH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAyD;IACzE,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,mBAAmB,CAgB1B;IACD,OAAO,CAAC,eAAe,CAmBtB;IACD,OAAO,CAAC,mBAAmB,CAI1B;IAED,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,gBAAgB,CAAsB;IAE9C,OAAO,CAAC,oBAAoB,CAAqB;IACjD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,gBAAgB,CAAgC;IAExD,OAAO,CAAC,WAAW,CAA6B;IAGhD,OAAO,CAAC,yBAAyB,CAA+B;IAEhE,OAAO,CAAC,cAAc,CAA+D;IAGrF,OAAO;WAEO,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAAG,gBAAgB;IAUnF,gBAAgB,CAAC,CAAC,SAAS,kBAAkB,EAClD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC/C,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;IAa7B,mBAAmB,CAAC,CAAC,SAAS,kBAAkB,EACrD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,GAC9C,IAAI;IAWA,cAAc,IAAI,IAAI;IA+B7B,OAAO,CAAC,IAAI;IAaZ,IAAW,cAAc,IAAI,QAAQ,CAAC,oBAAoB,CAAC,CAM1D;IAED,WAAkB,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,CAEjD;IAED,WAAkB,QAAQ,IAAI,gBAAgB,CAE7C;IAED,IAAW,kBAAkB,IAAI,WAAW,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAEnF;IAEM,QAAQ,CAAC,EACd,OAAO,EACP,QAAQ,EACR,OAAO,EACP,IAAI,GACL,EAAE,wBAAwB,GAAG,uBAAuB;IAwDrD,OAAO,CAAC,UAAU;IA6BlB,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,oBAAoB;IAWrB,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,GAAG,IAAI;IA2FhF,OAAO,CAAC,2BAA2B;IAUnC,OAAO,CAAC,kBAAkB;IAY1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,eAAe,CAiBtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB,CAezB;IAMD,OAAO,CAAC,aAAa,CAIpB;IAED,OAAO,CAAC,aAAa,CAgDpB;IAED,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,oBAAoB,CAyB3B;IAED,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,qBAAqB;CAW9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ForesightManager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForesightManager.test.d.ts","sourceRoot":"","sources":["../../../src/Manager/ForesightManager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ export declare const MIN_TRAJECTORY_PREDICTION_TIME: number;
2
+ export declare const MAX_TRAJECTORY_PREDICTION_TIME: number;
3
+ export declare const DEFAULT_TRAJECTORY_PREDICTION_TIME: number;
4
+ export declare const TRAJECTORY_PREDICTION_TIME_UNIT: string;
5
+ export declare const MIN_POSITION_HISTORY_SIZE: number;
6
+ export declare const MAX_POSITION_HISTORY_SIZE: number;
7
+ export declare const DEFAULT_POSITION_HISTORY_SIZE: number;
8
+ export declare const POSITION_HISTORY_SIZE_UNIT: string;
9
+ export declare const MIN_TAB_OFFSET: number;
10
+ export declare const MAX_TAB_OFFSET: number;
11
+ export declare const DEFAULT_TAB_OFFSET: number;
12
+ export declare const TAB_OFFSET_UNIT: string;
13
+ export declare const MIN_HITSLOP: number;
14
+ export declare const MAX_HITSLOP: number;
15
+ export declare const DEFAULT_HITSLOP: number;
16
+ export declare const DEFAULT_SCROLL_MARGIN: number;
17
+ export declare const MIN_SCROLL_MARGIN: number;
18
+ export declare const MAX_SCROLL_MARGIN: number;
19
+ export declare const SCROLL_MARGIN_UNIT: string;
20
+ export declare const DEFAULT_ENABLE_TAB_PREDICTION: boolean;
21
+ export declare const DEFAULT_ENABLE_MOUSE_PREDICTION: boolean;
22
+ export declare const DEFAULT_ENABLE_SCROLL_PREDICTION: boolean;
23
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/Manager/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,8BAA8B,EAAE,MAAW,CAAC;AACzD,eAAO,MAAM,8BAA8B,EAAE,MAAY,CAAC;AAC1D,eAAO,MAAM,kCAAkC,EAAE,MAAY,CAAC;AAC9D,eAAO,MAAM,+BAA+B,EAAE,MAAa,CAAC;AAE5D,eAAO,MAAM,yBAAyB,EAAE,MAAU,CAAC;AACnD,eAAO,MAAM,yBAAyB,EAAE,MAAW,CAAC;AACpD,eAAO,MAAM,6BAA6B,EAAE,MAAU,CAAC;AACvD,eAAO,MAAM,0BAA0B,EAAE,MAAiB,CAAC;AAE3D,eAAO,MAAM,cAAc,EAAE,MAAU,CAAC;AACxC,eAAO,MAAM,cAAc,EAAE,MAAW,CAAC;AACzC,eAAO,MAAM,kBAAkB,EAAE,MAAU,CAAC;AAC5C,eAAO,MAAM,eAAe,EAAE,MAAe,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,MAAU,CAAC;AACrC,eAAO,MAAM,WAAW,EAAE,MAAa,CAAC;AACxC,eAAO,MAAM,eAAe,EAAE,MAAU,CAAC;AAEzC,eAAO,MAAM,qBAAqB,EAAE,MAAY,CAAC;AACjD,eAAO,MAAM,iBAAiB,EAAE,MAAW,CAAC;AAC5C,eAAO,MAAM,iBAAiB,EAAE,MAAY,CAAC;AAC7C,eAAO,MAAM,kBAAkB,EAAE,MAAa,CAAC;AAE/C,eAAO,MAAM,6BAA6B,EAAE,OAAc,CAAC;AAC3D,eAAO,MAAM,+BAA+B,EAAE,OAAc,CAAC;AAC7D,eAAO,MAAM,gCAAgC,EAAE,OAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function clampNumber(number: number, lowerBound: number, upperBound: number, settingName: string): number;
2
+ //# sourceMappingURL=clampNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampNumber.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/clampNumber.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,UAapB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clampNumber.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clampNumber.test.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/clampNumber.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { FocusableElement } from "tabbable";
2
+ /**
3
+ * Finds the index of a focused element within a cache of tabbable elements.
4
+ * It uses a predictive search for O(1) performance in the common case of
5
+ * sequential tabbing, and falls back to a linear search O(n) if the
6
+ * prediction fails.
7
+ *
8
+ * @param isReversed - True if the user is tabbing backward (Shift+Tab).
9
+ * @param lastFocusedIndex - The index of the previously focused element, or null if none.
10
+ * @param tabbableElementsCache - The array of all tabbable elements.
11
+ * @param targetElement - The new HTML element that has received focus.
12
+ * @returns The index of the targetElement in the cache, or -1 if not found.
13
+ */
14
+ export declare function getFocusedElementIndex(isReversed: boolean, lastFocusedIndex: number | null, tabbableElementsCache: FocusableElement[], targetElement: HTMLElement): number;
15
+ //# sourceMappingURL=getFocusedElementIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFocusedElementIndex.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/getFocusedElementIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEhD;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,OAAO,EACnB,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAC/B,qBAAqB,EAAE,gBAAgB,EAAE,EACzC,aAAa,EAAE,WAAW,GACzB,MAAM,CAiBR"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=getFocusedElementIndex.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFocusedElementIndex.test.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/getFocusedElementIndex.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { Rect, ScrollDirection } from "../../types/types";
2
+ export declare function getScrollDirection(oldRect: Rect, newRect: Rect): ScrollDirection;
3
+ //# sourceMappingURL=getScrollDirection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getScrollDirection.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/getScrollDirection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE9D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,eAAe,CAoBhF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lineSegmentIntersectsRect.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineSegmentIntersectsRect.test.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/lineSegmentIntersectsRect.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { Point, Rect } from "../../types/types";
2
+ /**
3
+ * Determines if a line segment intersects with a given rectangle.
4
+ * This function implements the Liang-Barsky line clipping algorithm.
5
+ *
6
+ * @param p1 - The starting {@link Point} of the line segment.
7
+ * @param p2 - The ending {@link Point} of the line segment.
8
+ * @param rect - The {@link Rect} to check for intersection.
9
+ * @returns `true` if the line segment intersects the rectangle, `false` otherwise.
10
+ */
11
+ export declare function lineSegmentIntersectsRect(p1: Point, p2: Point, rect: Rect): boolean;
12
+ //# sourceMappingURL=lineSigmentIntersectsRect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineSigmentIntersectsRect.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/lineSigmentIntersectsRect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAiCnF"}
@@ -0,0 +1,19 @@
1
+ import type { MousePosition, Point } from "../../types/types";
2
+ /**
3
+ * Predicts the next mouse position based on a history of recent movements.
4
+ * It calculates velocity from the historical data and extrapolates a future point.
5
+ * The `history` array is mutated by this function: the new `currentPoint` is added,
6
+ * and if the history exceeds `positionHistorySize`, the oldest entry is removed.
7
+ *
8
+ * @param currentPoint - The current actual mouse coordinates.
9
+ * @param history - An array of previous mouse positions with timestamps.
10
+ * This array will be modified by this function.
11
+ * @param positionHistorySize - The maximum number of past positions to store and consider
12
+ * for the prediction.
13
+ * @param trajectoryPredictionTimeInMs - How far into the future (in milliseconds)
14
+ * to predict the mouse position.
15
+ * @returns The predicted {@link Point} (x, y coordinates). If history is insufficient
16
+ * (less than 2 points) or time delta is zero, returns the `currentPoint`.
17
+ */
18
+ export declare function predictNextMousePosition(currentPoint: Point, history: MousePosition[], positionHistorySize: number, trajectoryPredictionTimeInMs: number): Point;
19
+ //# sourceMappingURL=predictNextMousePosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictNextMousePosition.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/predictNextMousePosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,KAAK,EACnB,OAAO,EAAE,aAAa,EAAE,EACxB,mBAAmB,EAAE,MAAM,EAC3B,4BAA4B,EAAE,MAAM,GACnC,KAAK,CAgCP"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=predictNextMousePosition.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictNextMousePosition.test.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/predictNextMousePosition.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { Point, ScrollDirection } from "../../types/types";
2
+ export declare function predictNextScrollPosition(currentPoint: Point, direction: ScrollDirection, scrollMargin: number): {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ //# sourceMappingURL=predictNextScrollPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictNextScrollPosition.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/predictNextScrollPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAE/D,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,KAAK,EACnB,SAAS,EAAE,eAAe,EAC1B,YAAY,EAAE,MAAM;;;EAoBrB"}
@@ -0,0 +1,33 @@
1
+ import type { HitSlop, Point, Rect } from "../../types/types";
2
+ /**
3
+ * Normalizes a `hitSlop` value into a {@link Rect} object.
4
+ * If `hitSlop` is a number, it's applied uniformly to all sides (top, left, right, bottom).
5
+ * If `hitSlop` is already a `Rect` object, it's returned as is.
6
+ *
7
+ * @param hitSlop - A number for uniform slop, or a {@link Rect} object for specific slop per side.
8
+ * @returns A {@link Rect} object with `top`, `left`, `right`, and `bottom` properties.
9
+ */
10
+ export declare function normalizeHitSlop(hitSlop: HitSlop): Rect;
11
+ /**
12
+ * Calculates an expanded rectangle by applying a `hitSlop` to a base rectangle.
13
+ * The `hitSlop` values define how much to extend each side of the `baseRect` outwards.
14
+ *
15
+ * @param baseRect - The original {@link Rect} or `DOMRect` to expand.
16
+ * @param hitSlop - A {@link Rect} object defining how much to expand each side
17
+ * (e.g., `hitSlop.left` expands the left boundary further to the left).
18
+ * @returns A new {@link Rect} object representing the expanded area.
19
+ */
20
+ export declare function getExpandedRect(baseRect: Rect | DOMRect, hitSlop: Rect): Rect;
21
+ /**
22
+ * Checks if two rectangle objects are equal by comparing their respective
23
+ * `top`, `left`, `right`, and `bottom` properties.
24
+ * Handles cases where one or both rects might be null or undefined.
25
+ *
26
+ * @param rect1 - The first {@link Rect} object to compare.
27
+ * @param rect2 - The second {@link Rect} object to compare.
28
+ * @returns `true` if the rectangles have identical dimensions or if both are null/undefined,
29
+ * `false` otherwise.
30
+ */
31
+ export declare function areRectsEqual(rect1: Rect, rect2: Rect): boolean;
32
+ export declare function isPointInRectangle(point: Point, rect: Rect): boolean;
33
+ //# sourceMappingURL=rectAndHitSlop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectAndHitSlop.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/rectAndHitSlop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAI7D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiBvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,CAO7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,OAAO,CAQ/D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAIpE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rectAndHitSlop.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rectAndHitSlop.test.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/rectAndHitSlop.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Checks if a setting should be updated.
3
+ * Returns true if the newValue is defined and different from the currentValue.
4
+ * Uses a type predicate to narrow the type of newValue in the calling scope.
5
+ *
6
+ * @param newValue The potentially new value for the setting (can be undefined).
7
+ * @param currentValue The current value of the setting.
8
+ * @returns True if the setting should be updated, false otherwise.
9
+ */
10
+ export declare function shouldUpdateSetting<T>(newValue: T | undefined, currentValue: T): newValue is NonNullable<T>;
11
+ //# sourceMappingURL=shouldUpdateSetting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldUpdateSetting.d.ts","sourceRoot":"","sources":["../../../../src/Manager/helpers/shouldUpdateSetting.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,QAAQ,EAAE,CAAC,GAAG,SAAS,EACvB,YAAY,EAAE,CAAC,GACd,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAK5B"}
@@ -0,0 +1,8 @@
1
+ type ShouldRegister = {
2
+ shouldRegister: boolean;
3
+ isTouchDevice: boolean;
4
+ isLimitedConnection: boolean;
5
+ };
6
+ export declare function evaluateRegistrationConditions(): ShouldRegister;
7
+ export {};
8
+ //# sourceMappingURL=shouldRegister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shouldRegister.d.ts","sourceRoot":"","sources":["../../../src/helpers/shouldRegister.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,mBAAmB,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,wBAAgB,8BAA8B,IAAI,cAAc,CAK/D"}
@@ -0,0 +1,3 @@
1
+ export { ForesightManager } from "./Manager/ForesightManager";
2
+ export type { Rect as ForesightRect, ForesightElement, ForesightRegisterResult, UpdateForsightManagerSettings, ForesightManagerSettings, ForesightRegisterOptions, ForesightRegisterOptionsWithoutElement, ForesightElementData, CallbackHits as ForesightCallbackHits, ForesightEvent, ElementRegisteredEvent, ElementUnregisteredEvent, ElementDataUpdatedEvent, CallbackFiredEvent, MouseTrajectoryUpdateEvent, ScrollTrajectoryUpdateEvent, ManagerSettingsChangedEvent, HitSlop, } from "./types/types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,YAAY,EACV,IAAI,IAAI,aAAa,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,sCAAsC,EACtC,oBAAoB,EACpB,YAAY,IAAI,qBAAqB,EACrC,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC3B,OAAO,GACR,MAAM,eAAe,CAAA"}