js.foresight-devtools 1.4.0 → 2.1.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Bart Spaans
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # js.foresight-devtools
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/js.foresight-devtools.svg)](https://www.npmjs.com/package/js.foresight-devtools)
4
+ [![npm downloads](https://img.shields.io/npm/dt/js.foresight-devtools.svg)](https://www.npmjs.com/package/js.foresight-devtools)
4
5
  [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)
5
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
7
 
@@ -8,6 +9,8 @@
8
9
 
9
10
  These tools are built entirely using `ForesightJS`'s [built-in events](/docs/events), demonstrating how you can create your own monitoring and debugging tools using the same event system.
10
11
 
12
+ Since the devtools observe the `ForesightManager` directly, they work with every Foresight integration: the [`js.foresight`](https://foresightjs.com/docs/getting-started/quick-start) core, the official [React](https://foresightjs.com/docs/react/installation) and [Vue](https://foresightjs.com/docs/vue/installation) packages, or your own [custom binding](https://foresightjs.com/docs/other-frameworks).
13
+
11
14
  ## Installation
12
15
 
13
16
  To install the `ForesightJS` Development Tools package, use your preferred package manager:
@@ -31,16 +34,19 @@ ForesightManager.initialize({})
31
34
 
32
35
  // Initialize the development tools (all options are optional)
33
36
  ForesightDevtools.initialize({
34
- showDebugger: true,
37
+ show: {
38
+ controlPanel: true, // show the floating control panel
39
+ nameTags: true, // show the element name above each registered element
40
+ elementOverlays: true, // show the hit-slop boundary around each registered element
41
+ mouseTrajectory: true, // show the predicted mouse trajectory line
42
+ scrollTrajectory: true, // show the predicted scroll trajectory line
43
+ },
35
44
  isControlPanelDefaultMinimized: false, // optional setting which allows you to minimize the control panel on default
36
- showNameTags: true, // optional setting which shows the name of the element
37
45
  sortElementList: "visibility", // optional setting for how the elements in the control panel are sorted
38
46
  logging: {
39
47
  logLocation: "controlPanel", // Where to log the Foresight Events
40
48
  callbackCompleted: true,
41
- elementReactivated: true,
42
49
  callbackInvoked: true,
43
- elementDataUpdated: false,
44
50
  elementRegistered: false,
45
51
  elementUnregistered: false,
46
52
  managerSettingsChanged: true,
@@ -0,0 +1,612 @@
1
+ import { LitElement, PropertyValues, TemplateResult } from "lit";
2
+ import { CallbackHitType, CallbackHits, ForesightElement, ForesightElementState, ForesightEvent, ForesightManagerData, ForesightManagerSettings, ForesightPoint, HitSlop, ScrollDirection, UpdatedManagerSetting } from "js.foresight";
3
+
4
+ //#region src/types/types.d.ts
5
+ type DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T;
6
+ type ShowSettings = {
7
+ /**
8
+ * Show the debugger control panel.
9
+ * @default true
10
+ */
11
+ controlPanel: boolean;
12
+ /**
13
+ * Show name tags above each registered element.
14
+ * @default true
15
+ */
16
+ nameTags: boolean;
17
+ /**
18
+ * Show element hit-slop overlays (the expanded boundary around each registered element).
19
+ *
20
+ * Note: turning this off also hides name tags, since the labels live inside
21
+ * the same overlay host.
22
+ *
23
+ * @default true
24
+ */
25
+ elementOverlays: boolean;
26
+ /**
27
+ * Show the predicted mouse trajectory line.
28
+ * @default true
29
+ */
30
+ mouseTrajectory: boolean;
31
+ /**
32
+ * Show the predicted scroll trajectory line.
33
+ * @default true
34
+ */
35
+ scrollTrajectory: boolean;
36
+ };
37
+ type ShowKey = keyof ShowSettings;
38
+ type DevtoolsSettings = {
39
+ /**
40
+ * Granular visibility flags for the devtools UI.
41
+ *
42
+ * @link https://foresightjs.com/docs/getting_started/debug
43
+ */
44
+ show: ShowSettings;
45
+ /**
46
+ * Determines if the debugger control panel should be initialized in a minimized state.
47
+ *
48
+ * @link https://foresightjs.com/docs/getting_started/debug
49
+ *
50
+ * @default false
51
+ */
52
+ isControlPanelDefaultMinimized: boolean;
53
+ /**
54
+ * Specifies the default sorting order for the list of registered elements in the debugger panel.
55
+ * - `'visibility'`: Sorts elements by their viewport visibility (visible elements first),
56
+ * with a secondary documentOrder sort.
57
+ * - `'documentOrder'`: Sorts elements based on their order of appearance in the
58
+ * document's structure (matching the HTML source).
59
+ * - `'insertionOrder'`: Sorts by registration order.
60
+ *
61
+ *
62
+ * @link https://foresightjs.com/docs/getting_started/debug
63
+ *
64
+ * @default 'visibility'
65
+ *
66
+ */
67
+ sortElementList: SortElementList;
68
+ logging: LogEvents & {
69
+ logLocation: LoggingLocations;
70
+ };
71
+ };
72
+ type LogEvents = { [K in ForesightEvent]: boolean };
73
+ type LoggingLocations = "controlPanel" | "console" | "both" | "none";
74
+ type SortElementList = "documentOrder" | "visibility" | "insertionOrder";
75
+ type DebuggerBooleanSettingKeys = ShowKey;
76
+ //#endregion
77
+ //#region src/lit-entry/control-panel/base-tab/chip.d.ts
78
+ declare class ChipElement extends LitElement {
79
+ static styles: any[];
80
+ title: string;
81
+ render(): any;
82
+ }
83
+ declare global {
84
+ interface HTMLElementTagNameMap {
85
+ "chip-element": ChipElement;
86
+ }
87
+ } //# sourceMappingURL=chip.d.ts.map
88
+ //#endregion
89
+ //#region src/lit-entry/control-panel/base-tab/tab-content.d.ts
90
+ declare class TabContent extends LitElement {
91
+ static styles: any[];
92
+ noContentMessage: string;
93
+ hasContent: boolean;
94
+ render(): any;
95
+ }
96
+ declare global {
97
+ interface HTMLElementTagNameMap {
98
+ "tab-content": TabContent;
99
+ }
100
+ } //# sourceMappingURL=tab-content.d.ts.map
101
+ //#endregion
102
+ //#region src/lit-entry/control-panel/base-tab/tab-header.d.ts
103
+ declare class TabHeader extends LitElement {
104
+ static styles: any[];
105
+ render(): any;
106
+ }
107
+ declare global {
108
+ interface HTMLElementTagNameMap {
109
+ "tab-header": TabHeader;
110
+ }
111
+ } //# sourceMappingURL=tab-header.d.ts.map
112
+ //#endregion
113
+ //#region src/lit-entry/control-panel/dropdown/base-dropdown.d.ts
114
+ type DropdownOption = {
115
+ value: string;
116
+ label: string;
117
+ title: string;
118
+ icon: TemplateResult;
119
+ };
120
+ declare abstract class BaseDropdown extends LitElement {
121
+ private static currentlyOpen;
122
+ static styles: any[];
123
+ protected isDropdownOpen: boolean;
124
+ dropdownOptions: DropdownOption[];
125
+ connectedCallback(): void;
126
+ disconnectedCallback(): void;
127
+ protected _toggleDropdown: (event: MouseEvent) => void;
128
+ protected _closeDropdown(): void;
129
+ protected _positionDropdown(): void;
130
+ protected _handleOutsideClick: (event: MouseEvent) => void;
131
+ protected abstract _handleOptionClick(option: DropdownOption): void;
132
+ protected abstract _getTriggerIcon(): TemplateResult;
133
+ protected abstract _isOptionSelected(option: DropdownOption): boolean;
134
+ protected abstract _getTriggerTitle(): string;
135
+ protected abstract _getTriggerLabel(): string;
136
+ render(): any;
137
+ }
138
+ //#endregion
139
+ //#region src/lit-entry/control-panel/dropdown/single-select-dropdown.d.ts
140
+ declare class SingleSelectDropdown extends BaseDropdown {
141
+ selectedOptionValue: string;
142
+ onSelectionChange?: (value: string) => void;
143
+ connectedCallback(): void;
144
+ willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
145
+ protected _handleOptionClick(option: DropdownOption): void;
146
+ protected _getTriggerIcon(): TemplateResult;
147
+ protected _isOptionSelected(option: DropdownOption): boolean;
148
+ protected _getTriggerTitle(): string;
149
+ protected _getTriggerLabel(): string;
150
+ private _getSelectedOption;
151
+ }
152
+ declare global {
153
+ interface HTMLElementTagNameMap {
154
+ "single-select-dropdown": SingleSelectDropdown;
155
+ }
156
+ } //# sourceMappingURL=single-select-dropdown.d.ts.map
157
+ //#endregion
158
+ //#region src/lit-entry/control-panel/copy-icon/copy-icon.d.ts
159
+ declare class CopyIcon extends LitElement {
160
+ static styles: any;
161
+ title: string;
162
+ onCopy?: (event: MouseEvent) => Promise<void> | void;
163
+ private isCopied;
164
+ private copyTimeout;
165
+ private handleClick;
166
+ disconnectedCallback(): void;
167
+ render(): any;
168
+ }
169
+ declare global {
170
+ interface HTMLElementTagNameMap {
171
+ "copy-icon": CopyIcon;
172
+ }
173
+ } //# sourceMappingURL=copy-icon.d.ts.map
174
+ //#endregion
175
+ //#region src/lit-entry/control-panel/base-tab/expandable-item.d.ts
176
+ declare class ExpandableItem extends LitElement {
177
+ static styles: any[];
178
+ borderColor: string;
179
+ showCopyButton: boolean;
180
+ itemId: string;
181
+ isExpanded: boolean;
182
+ onToggle: ((itemId: string) => void) | undefined;
183
+ private toggleExpand;
184
+ private handleCopy;
185
+ render(): any;
186
+ }
187
+ declare global {
188
+ interface HTMLElementTagNameMap {
189
+ "expandable-item": ExpandableItem;
190
+ }
191
+ } //# sourceMappingURL=expandable-item.d.ts.map
192
+ //#endregion
193
+ //#region src/lit-entry/control-panel/element-tab/reactivate-countdown.d.ts
194
+ declare class ReactivateCountdown extends LitElement {
195
+ static styles: any[];
196
+ element: ForesightElement;
197
+ state: ForesightElementState;
198
+ private remainingTime;
199
+ private isCountdownActive;
200
+ private intervalId;
201
+ private startTime;
202
+ private lastDisplayedTime;
203
+ private countdownForElement;
204
+ private countdownReactivateAfter;
205
+ connectedCallback(): void;
206
+ disconnectedCallback(): void;
207
+ willUpdate(changedProperties: Map<string | number | symbol, unknown>): void;
208
+ private checkAndStartCountdown;
209
+ private startCountdown;
210
+ private clearCountdown;
211
+ private handleTimerClick;
212
+ private formatTime;
213
+ render(): any;
214
+ }
215
+ declare global {
216
+ interface HTMLElementTagNameMap {
217
+ "reactivate-countdown": ReactivateCountdown;
218
+ }
219
+ } //# sourceMappingURL=reactivate-countdown.d.ts.map
220
+ //#endregion
221
+ //#region src/lit-entry/control-panel/element-tab/single-element.d.ts
222
+ declare class SingleElement extends LitElement {
223
+ static styles: any[];
224
+ element: ForesightElement;
225
+ state: ForesightElementState;
226
+ isExpanded: boolean;
227
+ onToggle: ((elementId: string) => void) | undefined;
228
+ private currentDeviceStrategy;
229
+ private _abortController;
230
+ connectedCallback(): void;
231
+ disconnectedCallback(): void;
232
+ private getInactiveReasons;
233
+ private getBorderColor;
234
+ private getStatusIndicatorClass;
235
+ private getStatusText;
236
+ private formatElementDetails;
237
+ private handleUnregister;
238
+ private handleToggleEnabled;
239
+ render(): any;
240
+ }
241
+ declare global {
242
+ interface HTMLElementTagNameMap {
243
+ "single-element": SingleElement;
244
+ }
245
+ } //# sourceMappingURL=single-element.d.ts.map
246
+ //#endregion
247
+ //#region src/lit-entry/control-panel/element-tab/element-tab.d.ts
248
+ declare class ElementTab extends LitElement {
249
+ static styles: any;
250
+ private get hitCount();
251
+ private sortDropdown;
252
+ private sortOrder;
253
+ private elementListItems;
254
+ private noContentMessage;
255
+ private expandedElementIds;
256
+ private activeSectionCollapsed;
257
+ private inactiveSectionCollapsed;
258
+ private _abortController;
259
+ private _elementSubscriptions;
260
+ private _pendingElementUpdates;
261
+ private _updateDebounceId;
262
+ private _cachedActiveElements;
263
+ private _cachedInactiveElements;
264
+ private _elementsCacheDirty;
265
+ constructor();
266
+ private handleSortChange;
267
+ private handleElementToggle;
268
+ private _generateHitsChipTitle;
269
+ private _subscribeToElement;
270
+ private _unsubscribeFromElement;
271
+ connectedCallback(): void;
272
+ disconnectedCallback(): void;
273
+ private _scheduleDebouncedUpdate;
274
+ private _flushPendingUpdates;
275
+ private updateElementListFromManager;
276
+ private getSortedElements;
277
+ private _recomputeElementsCache;
278
+ private get activeElements();
279
+ private get inactiveElements();
280
+ private sortByDocumentPosition;
281
+ private renderElementSection;
282
+ render(): any;
283
+ }
284
+ declare global {
285
+ interface HTMLElementTagNameMap {
286
+ "element-tab": ElementTab;
287
+ }
288
+ } //# sourceMappingURL=element-tab.d.ts.map
289
+ //#endregion
290
+ //#region src/lit-entry/control-panel/dropdown/multi-select-dropdown.d.ts
291
+ declare class MultiSelectDropdown extends BaseDropdown {
292
+ static styles: any[];
293
+ selectedValues: string[];
294
+ onSelectionChange?: (changedValue: string, isSelected: boolean) => void;
295
+ protected _handleOptionClick(option: DropdownOption): void;
296
+ protected _getTriggerIcon(): TemplateResult;
297
+ protected _isOptionSelected(option: DropdownOption): boolean;
298
+ protected _getTriggerTitle(): string;
299
+ protected _getTriggerLabel(): string;
300
+ render(): any;
301
+ }
302
+ declare global {
303
+ interface HTMLElementTagNameMap {
304
+ "multi-select-dropdown": MultiSelectDropdown;
305
+ }
306
+ } //# sourceMappingURL=multi-select-dropdown.d.ts.map
307
+ //#endregion
308
+ //#region src/helpers/safeSerializeEventData.d.ts
309
+ type SerializedEventType = ForesightEvent | "serializationError" | "managerDataPayload";
310
+ interface PayloadBase {
311
+ type: SerializedEventType;
312
+ localizedTimestamp: string;
313
+ summary: string;
314
+ logId: string;
315
+ }
316
+ interface ElementRegisteredPayload extends PayloadBase {
317
+ type: "elementRegistered";
318
+ name: string;
319
+ id: string;
320
+ state: ForesightElementState;
321
+ hitslop: HitSlop;
322
+ meta: Record<string, unknown>;
323
+ }
324
+ interface ElementUnregisteredEvent extends PayloadBase {
325
+ type: "elementUnregistered";
326
+ name: string;
327
+ id: string;
328
+ state: ForesightElementState;
329
+ meta: Record<string, unknown>;
330
+ wasLastRegisteredElement: boolean;
331
+ }
332
+ interface CallbackInvokedPayload extends PayloadBase {
333
+ type: "callbackInvoked";
334
+ name: string;
335
+ hitType: CallbackHitType;
336
+ state: ForesightElementState;
337
+ meta: Record<string, unknown>;
338
+ }
339
+ interface CallbackCompletedPayload extends PayloadBase {
340
+ type: "callbackCompleted";
341
+ elapsed: string;
342
+ name: string;
343
+ hitType: CallbackHitType;
344
+ status: "success" | "error" | undefined;
345
+ errorMessage: string | undefined | null;
346
+ state: ForesightElementState;
347
+ wasLastActiveElement: boolean;
348
+ meta: Record<string, unknown>;
349
+ }
350
+ interface MouseTrajectoryUpdatePayload extends PayloadBase {
351
+ type: "mouseTrajectoryUpdate";
352
+ currentPoint: ForesightPoint;
353
+ predictedPoint: ForesightPoint;
354
+ positionCount: number;
355
+ mousePredictionEnabled: boolean;
356
+ }
357
+ interface ScrollTrajectoryUpdatePayload extends PayloadBase {
358
+ type: "scrollTrajectoryUpdate";
359
+ currentPoint: ForesightPoint;
360
+ predictedPoint: ForesightPoint;
361
+ scrollDirection: ScrollDirection;
362
+ }
363
+ interface ManagerSettingsChangedPayload extends PayloadBase {
364
+ type: "managerSettingsChanged";
365
+ globalSettings: ForesightManagerSettings;
366
+ settingsChanged: UpdatedManagerSetting[];
367
+ }
368
+ interface DeviceStrategyChangedPayload extends PayloadBase {
369
+ type: "deviceStrategyChanged";
370
+ oldStrategy: string;
371
+ newStrategy: string;
372
+ }
373
+ interface SerializationErrorPayload extends PayloadBase {
374
+ type: "serializationError";
375
+ error: "Failed to serialize event data";
376
+ errorMessage: string;
377
+ }
378
+ interface ManagerDataPayload extends PayloadBase {
379
+ type: "managerDataPayload";
380
+ warning: string;
381
+ globalCallbackHits: CallbackHits;
382
+ eventListenerCount: Record<string, number>;
383
+ managerSettings: ForesightManagerSettings;
384
+ registeredElements: Array<ForesightElementState & {
385
+ elementInfo: string;
386
+ }>;
387
+ loadedModules: ForesightManagerData["loadedModules"];
388
+ }
389
+ type SerializedEventData = ElementRegisteredPayload | ElementUnregisteredEvent | CallbackInvokedPayload | CallbackCompletedPayload | MouseTrajectoryUpdatePayload | ScrollTrajectoryUpdatePayload | ManagerSettingsChangedPayload | DeviceStrategyChangedPayload | ManagerDataPayload | SerializationErrorPayload;
390
+ //#endregion
391
+ //#region src/lit-entry/control-panel/log-tab/single-log.d.ts
392
+ declare class SingleLog extends LitElement {
393
+ static styles: any[];
394
+ log: SerializedEventData;
395
+ constructor(log: SerializedEventData);
396
+ isExpanded: boolean;
397
+ onToggle: ((logId: string) => void) | undefined;
398
+ protected updated(changedProperties: PropertyValues<this>): void;
399
+ private serializeLogDataWithoutSummary;
400
+ private getLogTypeColor;
401
+ private getEventDisplayName;
402
+ private truncateLogSummary;
403
+ render(): any;
404
+ }
405
+ declare global {
406
+ interface HTMLElementTagNameMap {
407
+ "single-log": SingleLog;
408
+ }
409
+ } //# sourceMappingURL=single-log.d.ts.map
410
+ //#endregion
411
+ //#region src/lit-entry/control-panel/log-tab/log-tab.d.ts
412
+ declare class LogTab extends LitElement {
413
+ static styles: any[];
414
+ private store;
415
+ private logDropdown;
416
+ private filterDropdown;
417
+ private expandedLogIds;
418
+ noContentMessage: string;
419
+ private _unsubscribeStore;
420
+ constructor();
421
+ private handleLogLocationChange;
422
+ private handleFilterChange;
423
+ private getSelectedEventFilters;
424
+ private shouldShowPerformanceWarning;
425
+ private getNoLogsMessage;
426
+ private handleLogToggle;
427
+ private clearLogs;
428
+ private logManagerData;
429
+ connectedCallback(): void;
430
+ disconnectedCallback(): void;
431
+ render(): any;
432
+ }
433
+ declare global {
434
+ interface HTMLElementTagNameMap {
435
+ "log-tab": LogTab;
436
+ }
437
+ } //# sourceMappingURL=log-tab.d.ts.map
438
+ //#endregion
439
+ //#region src/lit-entry/control-panel/settings-tab/setting-item/setting-item.d.ts
440
+ declare class SettingItem extends LitElement {
441
+ static styles: any[];
442
+ header: string;
443
+ description: string;
444
+ render(): any;
445
+ }
446
+ declare global {
447
+ interface HTMLElementTagNameMap {
448
+ "setting-item": SettingItem;
449
+ }
450
+ } //# sourceMappingURL=setting-item.d.ts.map
451
+ //#endregion
452
+ //#region src/lit-entry/control-panel/settings-tab/setting-item/setting-item-checkbox.d.ts
453
+ type ShowSettingKey = `show.${ShowKey}`;
454
+ declare class SettingItemCheckbox extends LitElement {
455
+ static styles: any[];
456
+ isChecked: boolean;
457
+ header: string;
458
+ description: string;
459
+ setting: keyof ForesightManagerSettings | keyof DevtoolsSettings | ShowSettingKey;
460
+ private handleCheckboxChange;
461
+ render(): any;
462
+ }
463
+ declare global {
464
+ interface HTMLElementTagNameMap {
465
+ "setting-item-checkbox": SettingItemCheckbox;
466
+ }
467
+ }
468
+ //#endregion
469
+ //#region src/lit-entry/control-panel/settings-tab/setting-item/setting-item-range.d.ts
470
+ declare class SettingItemRange extends LitElement {
471
+ static styles: any[];
472
+ minValue: number;
473
+ maxValue: number;
474
+ currentValue: number;
475
+ unit: string;
476
+ header: string;
477
+ description: string;
478
+ setting: keyof ForesightManagerSettings;
479
+ private displayValue;
480
+ private handleRangeInput;
481
+ private handleRangeChange;
482
+ willUpdate(changedProperties: PropertyValues): void;
483
+ render(): any;
484
+ }
485
+ declare global {
486
+ interface HTMLElementTagNameMap {
487
+ "setting-item-range": SettingItemRange;
488
+ }
489
+ } //# sourceMappingURL=setting-item-range.d.ts.map
490
+ //#endregion
491
+ //#region src/lit-entry/control-panel/settings-tab/settings-tab.d.ts
492
+ declare class SettingsTab extends LitElement {
493
+ static styles: any;
494
+ private managerSettings;
495
+ private initialSettings;
496
+ private devtoolsSettings;
497
+ private changedSettings;
498
+ private currentCorner;
499
+ private touchDeviceStrategyOptions;
500
+ private minimumConnectionTypeOptions;
501
+ private cornerOptions;
502
+ private _abortController;
503
+ constructor();
504
+ connectedCallback(): void;
505
+ disconnectedCallback(): void;
506
+ private _updateChangedSettings;
507
+ private _checkManagerSettingsChanges;
508
+ private _checkDevtoolsSettingsChanges;
509
+ private _handleDevtoolsSettingChange;
510
+ private _handleTouchDeviceStrategyChange;
511
+ private _handleMinimumConnectionTypeChange;
512
+ private _handleCornerChange;
513
+ private getCurrentCorner;
514
+ private handleCopySettings;
515
+ private generateSettingsCode;
516
+ render(): any;
517
+ }
518
+ declare global {
519
+ interface HTMLElementTagNameMap {
520
+ "settings-tab": SettingsTab;
521
+ }
522
+ } //# sourceMappingURL=settings-tab.d.ts.map
523
+ //#endregion
524
+ //#region src/lit-entry/debug-overlay/element-overlays.d.ts
525
+ declare class ElementOverlays extends LitElement {
526
+ private overlayMap;
527
+ private callbackAnimations;
528
+ private _elementSubscriptions;
529
+ private containerElement;
530
+ showNameTags: boolean;
531
+ static styles: any[];
532
+ private _abortController;
533
+ connectedCallback(): void;
534
+ protected willUpdate(changed: PropertyValues<this>): void;
535
+ private _subscribeToElement;
536
+ private _unsubscribeFromElement;
537
+ private createOverlay;
538
+ /**
539
+ * The slop area is the element's own shape offset outward by the hit slop:
540
+ * every corner keeps the element's border radius, grown by the slop on each
541
+ * axis. Sharp corners stay sharp, since offsetting a rectangle outward does
542
+ * not round its corners.
543
+ */
544
+ private expandedBorderRadius;
545
+ private updateSlopArea;
546
+ private updateNameLabel;
547
+ private createOrUpdateElementOverlay;
548
+ private removeElementOverlay;
549
+ private clearCallbackAnimationTimeout;
550
+ private highlightElementCallback;
551
+ private unhighlightElementCallback;
552
+ updateNameTagVisibility(showNameTags: boolean): void;
553
+ disconnectedCallback(): void;
554
+ render(): any;
555
+ }
556
+ declare global {
557
+ interface HTMLElementTagNameMap {
558
+ "element-overlays": ElementOverlays;
559
+ }
560
+ } //# sourceMappingURL=element-overlays.d.ts.map
561
+ //#endregion
562
+ //#region src/lit-entry/debug-overlay/debug-overlay.d.ts
563
+ declare class DebugOverlay extends LitElement {
564
+ static styles: any[];
565
+ private _abortController;
566
+ private _strategy;
567
+ showElementOverlays: boolean;
568
+ showMouseTrajectory: boolean;
569
+ showScrollTrajectory: boolean;
570
+ showNameTags: boolean;
571
+ connectedCallback(): void;
572
+ private handleDeviceStrategyChange;
573
+ disconnectedCallback(): void;
574
+ render(): any;
575
+ }
576
+ declare global {
577
+ interface HTMLElementTagNameMap {
578
+ "debug-overlay": DebugOverlay;
579
+ }
580
+ } //# sourceMappingURL=debug-overlay.d.ts.map
581
+ //#endregion
582
+ //#region src/lit-entry/foresight-devtools.d.ts
583
+ declare class ForesightDevtools extends LitElement {
584
+ static styles: any[];
585
+ private isInitialized;
586
+ private static _instance;
587
+ devtoolsSettings: Required<DevtoolsSettings>;
588
+ private constructor();
589
+ private static createAndAppendInstance;
590
+ static initialize(props?: DeepPartial<DevtoolsSettings>): ForesightDevtools;
591
+ static get instance(): ForesightDevtools;
592
+ disconnectedCallback(): void;
593
+ private shouldUpdateSetting;
594
+ private updateLoggingSetting;
595
+ private updateShowSetting;
596
+ /**
597
+ * Set every flag inside `show` to the same value. Useful for "turn the
598
+ * entire devtools UI off" without listing each key.
599
+ */
600
+ setAllShow(value: boolean): void;
601
+ alterDevtoolsSettings(props?: DeepPartial<DevtoolsSettings>): void;
602
+ private cleanup;
603
+ render(): any;
604
+ }
605
+ declare global {
606
+ interface HTMLElementTagNameMap {
607
+ "foresight-devtools": ForesightDevtools;
608
+ }
609
+ } //# sourceMappingURL=foresight-devtools.d.ts.map
610
+ //#endregion
611
+ export { type DebuggerBooleanSettingKeys, type DevtoolsSettings, ForesightDevtools, type SortElementList };
612
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/types.ts","../src/lit-entry/control-panel/base-tab/chip.ts","../src/lit-entry/control-panel/base-tab/tab-content.ts","../src/lit-entry/control-panel/base-tab/tab-header.ts","../src/lit-entry/control-panel/dropdown/base-dropdown.ts","../src/lit-entry/control-panel/dropdown/single-select-dropdown.ts","../src/lit-entry/control-panel/copy-icon/copy-icon.ts","../src/lit-entry/control-panel/base-tab/expandable-item.ts","../src/lit-entry/control-panel/element-tab/reactivate-countdown.ts","../src/lit-entry/control-panel/element-tab/single-element.ts","../src/lit-entry/control-panel/element-tab/element-tab.ts","../src/lit-entry/control-panel/dropdown/multi-select-dropdown.ts","../src/helpers/safeSerializeEventData.ts","../src/lit-entry/control-panel/log-tab/single-log.ts","../src/lit-entry/control-panel/log-tab/log-tab.ts","../src/lit-entry/control-panel/settings-tab/setting-item/setting-item.ts","../src/lit-entry/control-panel/settings-tab/setting-item/setting-item-checkbox.ts","../src/lit-entry/control-panel/settings-tab/setting-item/setting-item-range.ts","../src/lit-entry/control-panel/settings-tab/settings-tab.ts","../src/lit-entry/debug-overlay/element-overlays.ts","../src/lit-entry/debug-overlay/debug-overlay.ts","../src/lit-entry/foresight-devtools.ts"],"mappings":"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"}