js.foresight 2.2.3 → 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 +105 -72
  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 -10
@@ -0,0 +1,309 @@
1
+ export type Rect = {
2
+ top: number;
3
+ left: number;
4
+ right: number;
5
+ bottom: number;
6
+ };
7
+ /**
8
+ * A callback function that is executed when a foresight interaction
9
+ * (e.g., hover, trajectory hit) occurs on a registered element.
10
+ */
11
+ export type ForesightCallback = () => void;
12
+ /**
13
+ * Represents the HTML element that is being tracked by the ForesightManager.
14
+ * This is typically a standard DOM `Element`.
15
+ */
16
+ export type ForesightElement = Element;
17
+ /**
18
+ * Represents a mouse position captured at a specific point in time.
19
+ * Used for tracking mouse movement history.
20
+ */
21
+ export type MousePosition = {
22
+ /** The (x, y) coordinates of the mouse. */
23
+ point: Point;
24
+ /** The timestamp (e.g., from `performance.now()`) when this position was recorded. */
25
+ time: number;
26
+ };
27
+ export type Point = {
28
+ x: number;
29
+ y: number;
30
+ };
31
+ export type TrajectoryPositions = {
32
+ positions: MousePosition[];
33
+ currentPoint: Point;
34
+ predictedPoint: Point;
35
+ };
36
+ /**
37
+ * Internal type representing the calculated boundaries of a foresight element,
38
+ * including its original dimensions and the expanded hit area.
39
+ */
40
+ export type ElementBounds = {
41
+ /** The expanded rectangle, including hitSlop, used for interaction detection. */
42
+ expandedRect: Rect;
43
+ /** The original bounding rectangle of the element, as returned by `getBoundingClientRect()`. */
44
+ originalRect?: DOMRectReadOnly | undefined;
45
+ /** The hit slop values applied to this element. */
46
+ hitSlop: Exclude<HitSlop, number>;
47
+ };
48
+ /**
49
+ * Represents trajectory hit related data for a foresight element.
50
+ */
51
+ export type TrajectoryHitData = {
52
+ /** True if the predicted mouse trajectory has intersected the element's expanded bounds. */
53
+ isTrajectoryHit: boolean;
54
+ /** The timestamp when the last trajectory hit occurred. */
55
+ trajectoryHitTime: number;
56
+ /** Timeout ID for expiring the trajectory hit state. */
57
+ trajectoryHitExpirationTimeoutId?: ReturnType<typeof setTimeout>;
58
+ };
59
+ export type ForesightRegisterResult = {
60
+ /** Whether the current device is a touch device. This is important as ForesightJS only works based on cursor movement. If the user is using a touch device you should handle prefetching differently */
61
+ isTouchDevice: boolean;
62
+ /** Whether the user has connection limitations (slow network (2g) or data saver enabled) that should prevent prefetching */
63
+ isLimitedConnection: boolean;
64
+ /** Whether ForesightJS will actively track this element. False if touch device or limited connection, true otherwise */
65
+ isRegistered: boolean;
66
+ /** Function to unregister the element */
67
+ unregister: () => void;
68
+ };
69
+ /**
70
+ * Represents the data associated with a registered foresight element.
71
+ */
72
+ export type ForesightElementData = Required<Pick<ForesightRegisterOptions, "callback" | "name">> & {
73
+ /** The boundary information for the element. */
74
+ elementBounds: ElementBounds;
75
+ /** True if the mouse cursor is currently hovering over the element's expanded bounds. */
76
+ isHovering: boolean;
77
+ /**
78
+ * Represents trajectory hit related data for a foresight element. Only used for the manager
79
+ */
80
+ trajectoryHitData: TrajectoryHitData;
81
+ /**
82
+ * Is the element intersecting with the viewport, usefull to track which element we should observe or not
83
+ */
84
+ isIntersectingWithViewport: boolean;
85
+ /**
86
+ * The element you registered
87
+ */
88
+ element: ForesightElement;
89
+ };
90
+ export type MouseCallbackCounts = {
91
+ hover: number;
92
+ trajectory: number;
93
+ };
94
+ export type TabCallbackCounts = {
95
+ reverse: number;
96
+ forwards: number;
97
+ };
98
+ export type ScrollDirection = "down" | "up" | "left" | "right" | "none";
99
+ export type ScrollCallbackCounts = Record<`${Exclude<ScrollDirection, "none">}`, number>;
100
+ export type CallbackHits = {
101
+ total: number;
102
+ mouse: MouseCallbackCounts;
103
+ tab: TabCallbackCounts;
104
+ scroll: ScrollCallbackCounts;
105
+ };
106
+ export type HitType = {
107
+ kind: "mouse";
108
+ subType: keyof MouseCallbackCounts;
109
+ } | {
110
+ kind: "tab";
111
+ subType: keyof TabCallbackCounts;
112
+ } | {
113
+ kind: "scroll";
114
+ subType: keyof ScrollCallbackCounts;
115
+ };
116
+ /**
117
+ * Snapshot of the current ForesightManager state
118
+ */
119
+ export type ForesightManagerData = {
120
+ registeredElements: ReadonlyMap<ForesightElement, ForesightElementData>;
121
+ globalSettings: Readonly<ForesightManagerSettings>;
122
+ globalCallbackHits: Readonly<CallbackHits>;
123
+ };
124
+ type BaseForesightManagerSettings = {
125
+ /**
126
+ * Number of mouse positions to keep in history for trajectory calculation.
127
+ * A higher number might lead to smoother but slightly delayed predictions.
128
+ *
129
+ *
130
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
131
+ *
132
+ *
133
+ * **This value is clamped between 2 and 30.**
134
+ * @default 8
135
+ */
136
+ positionHistorySize: number;
137
+ /**
138
+ *
139
+ * @deprecated will be removed from v4.0
140
+ * ForesightJS now have its stand-alone devtools library with the debugger built-in
141
+ * @link https://github.com/spaansba/ForesightJS-DevTools
142
+ */
143
+ debug: boolean;
144
+ /**
145
+ * How far ahead (in milliseconds) to predict the mouse trajectory.
146
+ * A larger value means the prediction extends further into the future. (meaning it will trigger callbacks sooner)
147
+ *
148
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
149
+ *
150
+ * **This value is clamped between 10 and 200.**
151
+ * @default 120
152
+ */
153
+ trajectoryPredictionTime: number;
154
+ /**
155
+ * Whether to enable mouse trajectory prediction.
156
+ * If false, only direct hover/interaction is considered.
157
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
158
+ * @default true
159
+ */
160
+ enableMousePrediction: boolean;
161
+ /**
162
+ * Toggles whether keyboard prediction is on
163
+ *
164
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
165
+ * @default true
166
+ */
167
+ enableTabPrediction: boolean;
168
+ /**
169
+ * Sets the pixel distance to check from the mouse position in the scroll direction.
170
+ *
171
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
172
+ *
173
+ * **This value is clamped between 30 and 300.**
174
+ * @default 150
175
+ */
176
+ scrollMargin: number;
177
+ /**
178
+ * Toggles whether scroll prediction is on
179
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
180
+ * @default true
181
+ */
182
+ enableScrollPrediction: boolean;
183
+ /**
184
+ * Tab stops away from an element to trigger callback. Only works when @argument enableTabPrediction is true
185
+ *
186
+ * **This value is clamped between 0 and 20.**
187
+ * @default 2
188
+ */
189
+ tabOffset: number;
190
+ /**
191
+ * A global callback that runs whenever a callback is fired for any
192
+ * registered element, just after the element's specific callback is fired.
193
+ *
194
+ * @param elementData - The ForesightTarget object for the element that triggered the event.
195
+ * @param managerData - Data about the ForesightManager
196
+ */
197
+ onAnyCallbackFired: (elementData: ForesightElementData, managerData: ForesightManagerData) => void;
198
+ };
199
+ /**
200
+ * Configuration options for the ForesightManager
201
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
202
+ */
203
+ export type ForesightManagerSettings = BaseForesightManagerSettings & {
204
+ defaultHitSlop: Exclude<HitSlop, number>;
205
+ };
206
+ /**
207
+ * Update options for the ForesightManager
208
+ * @link https://foresightjs.com/docs/getting_started/config#available-global-settings
209
+ */
210
+ export type UpdateForsightManagerSettings = BaseForesightManagerSettings & {
211
+ defaultHitSlop: HitSlop;
212
+ };
213
+ /**
214
+ * Type used to register elements to the foresight manager
215
+ */
216
+ export type ForesightRegisterOptions = {
217
+ element: ForesightElement;
218
+ callback: ForesightCallback;
219
+ hitSlop?: HitSlop;
220
+ /**
221
+ * @deprecated will be removed in V4.0
222
+ */
223
+ unregisterOnCallback?: boolean;
224
+ name?: string;
225
+ };
226
+ /**
227
+ * Usefull for if you want to create a custom button component in a modern framework (for example React).
228
+ * And you want to have the ForesightRegisterOptions used in ForesightManager.instance.register({})
229
+ * without the element as the element will be the ref of the component.
230
+ *
231
+ * @link https://foresightjs.com/docs/getting_started/typescript#foresightregisteroptionswithoutelement
232
+ */
233
+ export type ForesightRegisterOptionsWithoutElement = Omit<ForesightRegisterOptions, "element">;
234
+ /**
235
+ * Fully invisible "slop" around the element.
236
+ * Basically increases the hover hitbox
237
+ */
238
+ export type HitSlop = Rect | number;
239
+ /**
240
+ * Get all keys in UpdateForsightManagerSettings that are numeric
241
+ */
242
+ export type NumericSettingKeys = {
243
+ [K in keyof UpdateForsightManagerSettings]: UpdateForsightManagerSettings[K] extends number ? K : never;
244
+ }[keyof UpdateForsightManagerSettings];
245
+ /**
246
+ * Get all keys in UpdateForsightManagerSettings that are boolean
247
+ */
248
+ export type ManagerBooleanSettingKeys = {
249
+ [K in keyof UpdateForsightManagerSettings]: UpdateForsightManagerSettings[K] extends boolean ? K : never;
250
+ }[keyof UpdateForsightManagerSettings];
251
+ export interface ForesightEventMap {
252
+ elementRegistered: ElementRegisteredEvent;
253
+ elementUnregistered: ElementUnregisteredEvent;
254
+ elementDataUpdated: ElementDataUpdatedEvent;
255
+ callbackFired: CallbackFiredEvent;
256
+ mouseTrajectoryUpdate: MouseTrajectoryUpdateEvent;
257
+ scrollTrajectoryUpdate: ScrollTrajectoryUpdateEvent;
258
+ managerSettingsChanged: ManagerSettingsChangedEvent;
259
+ }
260
+ export type ForesightEventType = keyof ForesightEventMap;
261
+ export interface ForesightEvent {
262
+ type: ForesightEventType;
263
+ timestamp: number;
264
+ }
265
+ export interface ElementRegisteredEvent extends ForesightEvent {
266
+ type: "elementRegistered";
267
+ elementData: ForesightElementData;
268
+ }
269
+ export interface ElementUnregisteredEvent extends ForesightEvent {
270
+ type: "elementUnregistered";
271
+ elementData: ForesightElementData;
272
+ unregisterReason: ElementUnregisteredReason;
273
+ }
274
+ /**
275
+ * The reason an element was unregistered from ForesightManager's tracking.
276
+ * - `callbackHit`: The element was automatically unregistered after its callback fired.
277
+ * - `disconnected`: The element was automatically unregistered because it was removed from the DOM.
278
+ * - `apiCall`: The developer manually called the `unregister()` function for the element.
279
+ */
280
+ export type ElementUnregisteredReason = "callbackHit" | "disconnected" | "apiCall";
281
+ export interface ElementDataUpdatedEvent extends ForesightEvent {
282
+ type: "elementDataUpdated";
283
+ elementData: ForesightElementData;
284
+ updatedProp: "bounds" | "visibility";
285
+ }
286
+ export interface CallbackFiredEvent extends ForesightEvent {
287
+ type: "callbackFired";
288
+ elementData: ForesightElementData;
289
+ hitType: HitType;
290
+ managerData: ForesightManagerData;
291
+ }
292
+ export interface MouseTrajectoryUpdateEvent extends ForesightEvent {
293
+ type: "mouseTrajectoryUpdate";
294
+ trajectoryPositions: TrajectoryPositions;
295
+ predictionEnabled: boolean;
296
+ }
297
+ export interface ScrollTrajectoryUpdateEvent extends ForesightEvent {
298
+ type: "scrollTrajectoryUpdate";
299
+ currentPoint: Point;
300
+ predictedPoint: Point;
301
+ }
302
+ export interface ManagerSettingsChangedEvent extends ForesightEvent {
303
+ type: "managerSettingsChanged";
304
+ managerData: ForesightManagerData;
305
+ }
306
+ export type ForesightEventData = ElementRegisteredEvent | ElementUnregisteredEvent | ElementDataUpdatedEvent | CallbackFiredEvent | MouseTrajectoryUpdateEvent | ScrollTrajectoryUpdateEvent | ManagerSettingsChangedEvent;
307
+ export type ForesightEventListener = (event: ForesightEventData) => void;
308
+ export {};
309
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import "@testing-library/jest-dom";
2
+ export declare const createMockElement: (tag?: string, attributes?: Record<string, string>) => HTMLElement;
3
+ export declare const createMockRect: (x?: number, y?: number, width?: number, height?: number) => {
4
+ top: number;
5
+ left: number;
6
+ right: number;
7
+ bottom: number;
8
+ width: number;
9
+ height: number;
10
+ x: number;
11
+ y: number;
12
+ };
13
+ export declare const mockElementBounds: (element: Element, rect: Partial<DOMRect>) => void;
14
+ export declare const simulateMouseEvent: (type: string, element?: Element | Window, options?: Partial<MouseEvent>) => MouseEvent;
15
+ export declare const simulateKeyboardEvent: (type: string, element?: Element | Window, options?: Partial<KeyboardEvent>) => KeyboardEvent;
16
+ export declare const simulateScrollEvent: (element?: Element | Window, options?: Partial<Event>) => Event;
17
+ //# sourceMappingURL=test-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-setup.d.ts","sourceRoot":"","sources":["../test-setup.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAA;AA8ElC,eAAO,MAAM,iBAAiB,GAAI,YAAW,EAAE,aAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,gBAMrF,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,UAAK,EAAE,UAAK,EAAE,cAAW,EAAE,eAAY;;;;;;;;;CASpE,CAAA;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,SAazE,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,UAAS,OAAO,GAAG,MAAe,EAClC,UAAS,OAAO,CAAC,UAAU,CAAM,eAWlC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,EACZ,UAAS,OAAO,GAAG,MAAe,EAClC,UAAS,OAAO,CAAC,aAAa,CAAM,kBAUrC,CAAA;AAED,eAAO,MAAM,mBAAmB,GAC9B,UAAS,OAAO,GAAG,MAAe,EAClC,UAAS,OAAO,CAAC,KAAK,CAAM,UAS7B,CAAA"}