@fiddle-digital/string-tune 1.1.55 → 1.2.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/dist/index.cjs +1641 -2595
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +440 -263
- package/dist/index.d.ts +440 -263
- package/dist/index.js +1641 -2595
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1641 -2595
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -469,12 +469,13 @@ declare class StringObject {
|
|
|
469
469
|
* Mirror objects linked via `string-copy-from`.
|
|
470
470
|
*/
|
|
471
471
|
private mirrors;
|
|
472
|
+
private _cachedMirrorObjects;
|
|
473
|
+
private _cachedConnects;
|
|
474
|
+
private _mirrorsDirty;
|
|
472
475
|
/**
|
|
473
476
|
* Internal key-value store of dynamic object properties (like offsets, progress, etc.).
|
|
474
477
|
*/
|
|
475
478
|
private properties;
|
|
476
|
-
private eventNameCache;
|
|
477
|
-
private eventNameSuffixCache;
|
|
478
479
|
/**
|
|
479
480
|
* Modules currently connected to this object.
|
|
480
481
|
*/
|
|
@@ -484,6 +485,8 @@ declare class StringObject {
|
|
|
484
485
|
* Provides functionality to register, trigger, and manage event listeners.
|
|
485
486
|
*/
|
|
486
487
|
events: EventManager;
|
|
488
|
+
private eventNameCache;
|
|
489
|
+
private eventNameSuffixCache;
|
|
487
490
|
constructor(id: string, element: HTMLElement);
|
|
488
491
|
/**
|
|
489
492
|
* Returns a cached event name in one of these forms:
|
|
@@ -521,6 +524,8 @@ declare class StringObject {
|
|
|
521
524
|
remove(): void;
|
|
522
525
|
setInviewAutoBlocked(blocked: boolean): void;
|
|
523
526
|
isInviewAutoBlocked(): boolean;
|
|
527
|
+
setInviewManualActive(active: boolean): void;
|
|
528
|
+
isInviewManualActive(): boolean;
|
|
524
529
|
syncInviewClass(): void;
|
|
525
530
|
/**
|
|
526
531
|
* Shows the object, applies visual class and notifies connected modules.
|
|
@@ -539,6 +544,7 @@ declare class StringObject {
|
|
|
539
544
|
isConnectedTo(module: IStringModule): boolean;
|
|
540
545
|
setTokens(tokens: StringToken[]): void;
|
|
541
546
|
getToken(key: string): StringToken | null;
|
|
547
|
+
private updateMirrorsCache;
|
|
542
548
|
addMirror(mirror: StringMirrorObject): void;
|
|
543
549
|
removeMirror(id: string): void;
|
|
544
550
|
get mirrorObjects(): StringMirrorObject[];
|
|
@@ -1061,6 +1067,7 @@ interface ISplitOptionItem {
|
|
|
1061
1067
|
*/
|
|
1062
1068
|
interface ISplitOptions {
|
|
1063
1069
|
fit?: boolean;
|
|
1070
|
+
trimInlineGaps?: boolean;
|
|
1064
1071
|
line?: ISplitOptionItem[];
|
|
1065
1072
|
word?: ISplitOptionItem[];
|
|
1066
1073
|
char?: ISplitOptionItem[];
|
|
@@ -1237,6 +1244,12 @@ type AttributeMapping = {
|
|
|
1237
1244
|
transform?: (value: any) => any;
|
|
1238
1245
|
};
|
|
1239
1246
|
|
|
1247
|
+
interface ParseContext {
|
|
1248
|
+
element?: HTMLElement;
|
|
1249
|
+
boundingRect?: DOMRect;
|
|
1250
|
+
viewportHeight?: number;
|
|
1251
|
+
baseRem?: number;
|
|
1252
|
+
}
|
|
1240
1253
|
/**
|
|
1241
1254
|
* Base class for a module used in the string-tune system.
|
|
1242
1255
|
* Extend this class to create custom modules that respond to scroll, resize, input, etc.
|
|
@@ -1370,12 +1383,7 @@ declare class StringModule implements IStringModule {
|
|
|
1370
1383
|
* @param context Optional helper values like element or viewport size.
|
|
1371
1384
|
* @returns The parsed and transformed value.
|
|
1372
1385
|
*/
|
|
1373
|
-
protected parseAttribute(value: string | null, type: AttributeType, context?:
|
|
1374
|
-
element?: HTMLElement;
|
|
1375
|
-
boundingRect?: DOMRect;
|
|
1376
|
-
viewportHeight?: number;
|
|
1377
|
-
baseRem?: number;
|
|
1378
|
-
}): any;
|
|
1386
|
+
protected parseAttribute(value: string | null, type: AttributeType, context?: ParseContext): any;
|
|
1379
1387
|
/**
|
|
1380
1388
|
* Determines whether the module should attach to a given object,
|
|
1381
1389
|
* based on the presence of the module's `htmlKey` in the object keys.
|
|
@@ -1398,6 +1406,7 @@ declare class StringModule implements IStringModule {
|
|
|
1398
1406
|
* Registers the object internally when it enters the module’s scope.
|
|
1399
1407
|
*/
|
|
1400
1408
|
enterObject(id: string, object: StringObject): void;
|
|
1409
|
+
protected fastRemoveFromArray<T>(array: T[], index: number): void;
|
|
1401
1410
|
/**
|
|
1402
1411
|
* Unregisters the object when it leaves the module’s scope.
|
|
1403
1412
|
*/
|
|
@@ -1436,6 +1445,8 @@ declare class StringModule implements IStringModule {
|
|
|
1436
1445
|
* @param object The disconnected object.
|
|
1437
1446
|
*/
|
|
1438
1447
|
onObjectDisconnected(object: StringObject): void;
|
|
1448
|
+
protected get respectSelfDisable(): boolean;
|
|
1449
|
+
protected isPrimaryElementEnabled(object: StringObject): boolean;
|
|
1439
1450
|
/**
|
|
1440
1451
|
* Applies a style or callback to both the main element and all its connected elements.
|
|
1441
1452
|
*
|
|
@@ -2053,11 +2064,31 @@ declare class StringScrollbar extends StringModule {
|
|
|
2053
2064
|
* computes alignment/random values, and applies CSS vars.
|
|
2054
2065
|
*/
|
|
2055
2066
|
declare class StringSplit extends StringModule {
|
|
2067
|
+
/** Last content-width (px) at which each element was split. Keyed by element itself. */
|
|
2068
|
+
private lastSplitWidth;
|
|
2056
2069
|
constructor(context: StringContext);
|
|
2057
2070
|
onInit(): void;
|
|
2071
|
+
onObjectDisconnected(object: StringObject): void;
|
|
2058
2072
|
onResizeWidth(): void;
|
|
2059
2073
|
onObjectConnected(object: StringObject): void;
|
|
2060
|
-
|
|
2074
|
+
private extractTextContent;
|
|
2075
|
+
private getSplitOptions;
|
|
2076
|
+
private hasLineDrivenSplit;
|
|
2077
|
+
private needsWidthRebuild;
|
|
2078
|
+
private needsForcedRebuildOnFontLoad;
|
|
2079
|
+
private getDebugStoreKey;
|
|
2080
|
+
private writeDebugRecord;
|
|
2081
|
+
private isDebugEnabled;
|
|
2082
|
+
private getDebugLabel;
|
|
2083
|
+
private logConnectionStart;
|
|
2084
|
+
private captureBaselineSnapshot;
|
|
2085
|
+
private logSplitAnalysis;
|
|
2086
|
+
private getTokenDebugText;
|
|
2087
|
+
private logRenderedState;
|
|
2088
|
+
private applyFlexLineBreaks;
|
|
2089
|
+
private getBlockContainerContentWidth;
|
|
2090
|
+
private getElementContentWidth;
|
|
2091
|
+
split(element: HTMLElement, options: ISplitOptions, debugEnabled?: boolean): {
|
|
2061
2092
|
fragment: DocumentFragment;
|
|
2062
2093
|
result: DocumentFragment;
|
|
2063
2094
|
extraProps: Map<string, string>;
|
|
@@ -2591,104 +2622,36 @@ declare class StringRandom extends StringModule {
|
|
|
2591
2622
|
onObjectConnected(object: StringObject): void;
|
|
2592
2623
|
}
|
|
2593
2624
|
|
|
2594
|
-
/**
|
|
2595
|
-
* Base class for managing scroll behavior in the system.
|
|
2596
|
-
* Handles abstract scroll state and updates, intended for extension.
|
|
2597
|
-
*/
|
|
2598
2625
|
declare class ScrollController {
|
|
2599
|
-
/** Shared context containing data and tools */
|
|
2600
2626
|
protected context: StringContext;
|
|
2601
|
-
/** Reference to the document object */
|
|
2602
2627
|
protected document: Document;
|
|
2603
|
-
/** Name of the scroll mode (e.g. 'default', 'smooth', etc.) */
|
|
2604
2628
|
name: string;
|
|
2605
|
-
/** Whether the system is in programmatic scroll mode */
|
|
2606
2629
|
isProg: boolean;
|
|
2607
|
-
/** Whether parallax-related logic should be active */
|
|
2608
2630
|
isParallaxEnabled: boolean;
|
|
2609
|
-
|
|
2610
|
-
protected
|
|
2611
|
-
|
|
2612
|
-
* Current scroll direction.
|
|
2613
|
-
* - `true` — scrolling down
|
|
2614
|
-
* - `false` — scrolling up
|
|
2615
|
-
* - `null` — unknown (initial state)
|
|
2616
|
-
*/
|
|
2617
|
-
protected isBottomScrollDirection: boolean | null;
|
|
2631
|
+
protected _isVertical: boolean;
|
|
2632
|
+
protected _scrollDirState: number;
|
|
2633
|
+
protected _lastAppliedDirState: number;
|
|
2618
2634
|
protected isLastBottomScrollDirection: boolean;
|
|
2619
2635
|
protected scrollTriggerRules: Array<ScrollMarkRule>;
|
|
2620
|
-
/** Tracks whether this controller is currently active */
|
|
2621
2636
|
protected isActive: boolean;
|
|
2622
|
-
|
|
2623
|
-
protected lastAppliedDirection: boolean | null;
|
|
2624
|
-
/**
|
|
2625
|
-
* Sets scroll direction and updates internal scroll logic.
|
|
2626
|
-
* @param scrollDirection Either 'vertical' or 'horizontal'.
|
|
2627
|
-
*/
|
|
2628
|
-
set scrollDirection(scrollDirection: "vertical" | "horizontal");
|
|
2629
|
-
/**
|
|
2630
|
-
* Creates a new ScrollController instance.
|
|
2631
|
-
* @param context Shared context containing data and settings.
|
|
2632
|
-
*/
|
|
2637
|
+
set scrollDirection(dir: "vertical" | "horizontal");
|
|
2633
2638
|
constructor(context: StringContext);
|
|
2634
|
-
/**
|
|
2635
|
-
* Called when scroll direction changes (up ↔ down).
|
|
2636
|
-
* Override this callback in subclasses or instances.
|
|
2637
|
-
*/
|
|
2638
2639
|
onChangeDirection: () => void;
|
|
2639
|
-
/**
|
|
2640
|
-
* Called when scroll starts (user input).
|
|
2641
|
-
* Override this callback in subclasses or instances.
|
|
2642
|
-
*/
|
|
2643
2640
|
onScrollStart: () => void;
|
|
2644
|
-
/**
|
|
2645
|
-
* Called when scroll ends.
|
|
2646
|
-
* Override this callback in subclasses or instances.
|
|
2647
|
-
*/
|
|
2648
2641
|
onScrollStop: () => void;
|
|
2649
|
-
|
|
2650
|
-
* Scroll-to function called on each frame.
|
|
2651
|
-
* This will be reassigned depending on scroll direction.
|
|
2652
|
-
*/
|
|
2653
|
-
onCalcUpdate: () => void;
|
|
2654
|
-
/**
|
|
2655
|
-
* Called every animation frame.
|
|
2656
|
-
* Intended to be overridden in subclasses.
|
|
2657
|
-
*/
|
|
2642
|
+
onCalcUpdate(): void;
|
|
2658
2643
|
onFrame(): void;
|
|
2659
|
-
/**
|
|
2660
|
-
* Called when wheel event is fired.
|
|
2661
|
-
* Override to implement custom scroll interaction.
|
|
2662
|
-
* @param e Wheel event.
|
|
2663
|
-
*/
|
|
2664
2644
|
onWheel(e: any): void;
|
|
2665
|
-
/**
|
|
2666
|
-
* Called when native scroll event is fired.
|
|
2667
|
-
* Override to track native scroll position.
|
|
2668
|
-
* @param e Scroll event.
|
|
2669
|
-
*/
|
|
2670
2645
|
onScroll(e: any): void;
|
|
2646
|
+
onTouchStart(e: TouchEvent): void;
|
|
2647
|
+
onTouchMove(e: TouchEvent): void;
|
|
2648
|
+
onTouchEnd(e: TouchEvent): void;
|
|
2671
2649
|
disableScrollEvents(): void;
|
|
2672
2650
|
enableScrollEvents(): void;
|
|
2673
|
-
/**
|
|
2674
|
-
* Called when this controller becomes the active scroll engine.
|
|
2675
|
-
* Ensures event bindings are attached only once.
|
|
2676
|
-
*/
|
|
2677
2651
|
activate(): void;
|
|
2678
|
-
/**
|
|
2679
|
-
* Called when this controller is deactivated.
|
|
2680
|
-
* Ensures event bindings are detached only once.
|
|
2681
|
-
*/
|
|
2682
2652
|
deactivate(): void;
|
|
2683
|
-
/**
|
|
2684
|
-
* Allows controllers to clean up resources on global destroy.
|
|
2685
|
-
*/
|
|
2686
2653
|
destroy(): void;
|
|
2687
|
-
|
|
2688
|
-
* Updates scroll direction state, emits events, and toggles global classes.
|
|
2689
|
-
* Intended for reuse by custom scroll adapters.
|
|
2690
|
-
*/
|
|
2691
|
-
protected updateScrollDirection(newDirection: boolean): void;
|
|
2654
|
+
protected updateScrollDirection(isDown: boolean): void;
|
|
2692
2655
|
protected clearScrollingClasses(): void;
|
|
2693
2656
|
protected triggerScrollRules(): void;
|
|
2694
2657
|
addScrollMark(rule: ScrollMarkRule): void;
|
|
@@ -2699,11 +2662,31 @@ declare class ScrollController {
|
|
|
2699
2662
|
interface StringDevtoolState {
|
|
2700
2663
|
active: boolean;
|
|
2701
2664
|
}
|
|
2665
|
+
interface StringDevtoolHotkey {
|
|
2666
|
+
key: string;
|
|
2667
|
+
shiftKey?: boolean;
|
|
2668
|
+
ctrlKey?: boolean;
|
|
2669
|
+
altKey?: boolean;
|
|
2670
|
+
metaKey?: boolean;
|
|
2671
|
+
}
|
|
2672
|
+
interface StringDevtoolSubBadge {
|
|
2673
|
+
id: string;
|
|
2674
|
+
icon: string;
|
|
2675
|
+
label: string;
|
|
2676
|
+
/** Extra attribute used as a CSS selector hook (e.g. "data-string-grid-global-toggle"). */
|
|
2677
|
+
selectorAttribute?: string;
|
|
2678
|
+
/** Additional data-* attributes applied to the badge button. */
|
|
2679
|
+
attributes?: Record<string, string | boolean | number | null | undefined>;
|
|
2680
|
+
onClick: (anchorElement?: HTMLElement) => void;
|
|
2681
|
+
}
|
|
2702
2682
|
interface StringDevtoolDefinition {
|
|
2703
2683
|
id: string;
|
|
2704
2684
|
label: string;
|
|
2705
2685
|
icon: string;
|
|
2706
2686
|
order?: number;
|
|
2687
|
+
group?: number;
|
|
2688
|
+
hotkey?: StringDevtoolHotkey;
|
|
2689
|
+
subBadges?: StringDevtoolSubBadge[];
|
|
2707
2690
|
getState: () => StringDevtoolState;
|
|
2708
2691
|
setActive: (active: boolean) => void;
|
|
2709
2692
|
subscribe?: (listener: (state: StringDevtoolState) => void) => () => void;
|
|
@@ -2744,6 +2727,16 @@ interface StringDevModuleDefinitionConfig {
|
|
|
2744
2727
|
label: string;
|
|
2745
2728
|
icon: string;
|
|
2746
2729
|
order?: number;
|
|
2730
|
+
group?: number;
|
|
2731
|
+
hotkey?: StringDevtoolHotkey;
|
|
2732
|
+
}
|
|
2733
|
+
interface StringDevConnectsConfig {
|
|
2734
|
+
/** If true, connects to every StringObject (overlay default). If false, only explicit matches below + dev-inspect fallback. */
|
|
2735
|
+
global?: boolean;
|
|
2736
|
+
/** Connect to objects whose string="…" token list includes any of these keys. */
|
|
2737
|
+
keys?: string[];
|
|
2738
|
+
/** Connect to objects whose DOM element has any of these attributes present. */
|
|
2739
|
+
attributes?: string[];
|
|
2747
2740
|
}
|
|
2748
2741
|
interface StringDevOverlayConfig {
|
|
2749
2742
|
/** Unique layer name, e.g. "devtools-progress" */
|
|
@@ -2764,6 +2757,8 @@ interface StringDevModuleConfig extends StringDevModuleDefinitionConfig {
|
|
|
2764
2757
|
styles?: string | (() => string);
|
|
2765
2758
|
/** Overlay layer configuration. Declare for any module that uses a viewport layer. */
|
|
2766
2759
|
overlay?: StringDevOverlayConfig;
|
|
2760
|
+
/** Declare which StringObjects this module connects to. Replaces htmlKey assignment in constructor. */
|
|
2761
|
+
connects?: StringDevConnectsConfig;
|
|
2767
2762
|
}
|
|
2768
2763
|
declare class StringDevModule extends StringModule implements StringDevtoolProvider {
|
|
2769
2764
|
/** Declare module metadata statically. Subclasses override this. */
|
|
@@ -2771,12 +2766,18 @@ declare class StringDevModule extends StringModule implements StringDevtoolProvi
|
|
|
2771
2766
|
protected readonly overlayRegistry: StringDevOverlayRegistry;
|
|
2772
2767
|
private readonly acquiredViewportLayers;
|
|
2773
2768
|
private readonly devtoolListeners;
|
|
2769
|
+
private hotkeyHandler;
|
|
2774
2770
|
protected devtoolConfig: StringDevModuleDefinitionConfig | null;
|
|
2775
2771
|
constructor(context: StringContext);
|
|
2772
|
+
protected get respectSelfDisable(): boolean;
|
|
2773
|
+
protected get connectsConfig(): StringDevConnectsConfig | undefined;
|
|
2774
|
+
canConnect(object: StringObject): boolean;
|
|
2776
2775
|
protected getStyleScopeId(stylesText: string): string;
|
|
2777
2776
|
protected getStyles(): string | null;
|
|
2778
2777
|
getDevtoolDefinition(): StringDevtoolDefinition | null;
|
|
2778
|
+
protected getDevtoolSubBadges(): StringDevtoolSubBadge[];
|
|
2779
2779
|
protected configureDevtool(config: StringDevModuleDefinitionConfig): void;
|
|
2780
|
+
protected bindDevtoolHotkey(hotkey?: StringDevtoolHotkey): void;
|
|
2780
2781
|
protected emitDevtoolState(active?: boolean): void;
|
|
2781
2782
|
protected acquireViewportLayer(id: string, zIndex: number): StringDevViewportLayer;
|
|
2782
2783
|
protected releaseViewportLayer(id: string): void;
|
|
@@ -2793,7 +2794,7 @@ declare function buildGridCSS(): string;
|
|
|
2793
2794
|
* StringDevLayout — developer utility module for layout overlays.
|
|
2794
2795
|
*
|
|
2795
2796
|
* Usage:
|
|
2796
|
-
* <div string="
|
|
2797
|
+
* <div string="layout">...</div>
|
|
2797
2798
|
*
|
|
2798
2799
|
* No configuration attributes needed. All configuration happens
|
|
2799
2800
|
* through the interactive HUD panel (hover top-right corner).
|
|
@@ -2806,6 +2807,7 @@ declare function buildGridCSS(): string;
|
|
|
2806
2807
|
declare class StringDevLayout extends StringDevModule {
|
|
2807
2808
|
private gridManager;
|
|
2808
2809
|
private viewportLayer;
|
|
2810
|
+
private overlayLayer;
|
|
2809
2811
|
private overlays;
|
|
2810
2812
|
private huds;
|
|
2811
2813
|
private elementMap;
|
|
@@ -2814,15 +2816,29 @@ declare class StringDevLayout extends StringDevModule {
|
|
|
2814
2816
|
private enabled;
|
|
2815
2817
|
private needsMeasure;
|
|
2816
2818
|
private hasPendingMutate;
|
|
2819
|
+
private globalHost;
|
|
2820
|
+
private globalOverlay;
|
|
2821
|
+
private globalHUD;
|
|
2822
|
+
private globalSubBadge;
|
|
2817
2823
|
static devtool: {
|
|
2818
2824
|
id: string;
|
|
2819
2825
|
label: string;
|
|
2820
2826
|
icon: string;
|
|
2821
2827
|
order: number;
|
|
2828
|
+
group: number;
|
|
2829
|
+
hotkey: {
|
|
2830
|
+
key: string;
|
|
2831
|
+
shiftKey: boolean;
|
|
2832
|
+
};
|
|
2822
2833
|
styles: typeof buildGridCSS;
|
|
2834
|
+
connects: {
|
|
2835
|
+
global: boolean;
|
|
2836
|
+
keys: string[];
|
|
2837
|
+
};
|
|
2823
2838
|
};
|
|
2824
2839
|
constructor(context: StringContext);
|
|
2825
2840
|
onInit(): void;
|
|
2841
|
+
protected getDevtoolSubBadges(): StringDevtoolSubBadge[];
|
|
2826
2842
|
onObjectConnected(object: StringObject): void;
|
|
2827
2843
|
onObjectDisconnected(object: StringObject): void;
|
|
2828
2844
|
onResize(): void;
|
|
@@ -2843,9 +2859,10 @@ declare class StringDevLayout extends StringDevModule {
|
|
|
2843
2859
|
private handleMoveToEnd;
|
|
2844
2860
|
private handleSelectLayout;
|
|
2845
2861
|
private handleUpdateLayoutMinWidth;
|
|
2846
|
-
private
|
|
2847
|
-
private
|
|
2862
|
+
private handleAddLayout;
|
|
2863
|
+
private handleRemoveLayout;
|
|
2848
2864
|
private handleRenameInstance;
|
|
2865
|
+
private handleRenamePanelTitle;
|
|
2849
2866
|
private handleHUDOpen;
|
|
2850
2867
|
private handleHUDClose;
|
|
2851
2868
|
private handleLayoutPanelOpen;
|
|
@@ -2853,9 +2870,17 @@ declare class StringDevLayout extends StringDevModule {
|
|
|
2853
2870
|
private handleExport;
|
|
2854
2871
|
private handleImport;
|
|
2855
2872
|
private renderElement;
|
|
2873
|
+
private syncToResolved;
|
|
2874
|
+
private syncSelectedLayoutToViewport;
|
|
2856
2875
|
private refreshHUD;
|
|
2857
|
-
private
|
|
2858
|
-
private
|
|
2876
|
+
private ensureGlobalGrid;
|
|
2877
|
+
private syncGlobalHostSize;
|
|
2878
|
+
private renderGlobal;
|
|
2879
|
+
private refreshGlobalHUD;
|
|
2880
|
+
private toggleGlobalPanel;
|
|
2881
|
+
private syncGlobalSubBadgeState;
|
|
2882
|
+
private positionGlobalHudAtAnchor;
|
|
2883
|
+
private destroyGlobalGrid;
|
|
2859
2884
|
private destroyElement;
|
|
2860
2885
|
private ensureTriggerLayer;
|
|
2861
2886
|
private applyTriggerLayerState;
|
|
@@ -2877,7 +2902,14 @@ declare class StringDevLayout extends StringDevModule {
|
|
|
2877
2902
|
* Each devtool module returns an array of these to describe its settings panel.
|
|
2878
2903
|
*/
|
|
2879
2904
|
type StringDevUIFieldDescriptor = StringDevUIFieldNumber | StringDevUIFieldRange | StringDevUIFieldColor | StringDevUIFieldSelect | StringDevUIFieldToggle | StringDevUIFieldDivider;
|
|
2880
|
-
interface
|
|
2905
|
+
interface StringDevUIFieldDisabledWhen {
|
|
2906
|
+
readonly key: string;
|
|
2907
|
+
readonly equals: string | number | boolean;
|
|
2908
|
+
}
|
|
2909
|
+
interface StringDevUIFieldBase {
|
|
2910
|
+
readonly disabledWhen?: StringDevUIFieldDisabledWhen;
|
|
2911
|
+
}
|
|
2912
|
+
interface StringDevUIFieldNumber extends StringDevUIFieldBase {
|
|
2881
2913
|
readonly type: "number";
|
|
2882
2914
|
readonly key: string;
|
|
2883
2915
|
readonly label: string;
|
|
@@ -2886,7 +2918,7 @@ interface StringDevUIFieldNumber {
|
|
|
2886
2918
|
readonly max?: number;
|
|
2887
2919
|
readonly step?: number;
|
|
2888
2920
|
}
|
|
2889
|
-
interface StringDevUIFieldRange {
|
|
2921
|
+
interface StringDevUIFieldRange extends StringDevUIFieldBase {
|
|
2890
2922
|
readonly type: "range";
|
|
2891
2923
|
readonly key: string;
|
|
2892
2924
|
readonly label: string;
|
|
@@ -2894,6 +2926,12 @@ interface StringDevUIFieldRange {
|
|
|
2894
2926
|
readonly min: number;
|
|
2895
2927
|
readonly max: number;
|
|
2896
2928
|
readonly step?: number;
|
|
2929
|
+
/** Multiplies the stored value for display/editing in the UI. */
|
|
2930
|
+
readonly displayMultiplier?: number;
|
|
2931
|
+
/** Optional UI step in display-space (e.g. 10 for 0..100 opacity UX). */
|
|
2932
|
+
readonly displayStep?: number;
|
|
2933
|
+
/** Optional display-only suffix rendered next to the numeric value. */
|
|
2934
|
+
readonly suffix?: string;
|
|
2897
2935
|
/** When provided, a compact unit dropdown is shown next to the value input. */
|
|
2898
2936
|
readonly units?: ReadonlyArray<{
|
|
2899
2937
|
value: string;
|
|
@@ -2902,13 +2940,13 @@ interface StringDevUIFieldRange {
|
|
|
2902
2940
|
/** Default unit value (used when no persisted unit exists). */
|
|
2903
2941
|
readonly defaultUnit?: string;
|
|
2904
2942
|
}
|
|
2905
|
-
interface StringDevUIFieldColor {
|
|
2943
|
+
interface StringDevUIFieldColor extends StringDevUIFieldBase {
|
|
2906
2944
|
readonly type: "color";
|
|
2907
2945
|
readonly key: string;
|
|
2908
2946
|
readonly label: string;
|
|
2909
2947
|
readonly default: string;
|
|
2910
2948
|
}
|
|
2911
|
-
interface StringDevUIFieldSelect {
|
|
2949
|
+
interface StringDevUIFieldSelect extends StringDevUIFieldBase {
|
|
2912
2950
|
readonly type: "select";
|
|
2913
2951
|
readonly key: string;
|
|
2914
2952
|
readonly label: string;
|
|
@@ -2918,7 +2956,7 @@ interface StringDevUIFieldSelect {
|
|
|
2918
2956
|
label: string;
|
|
2919
2957
|
}>;
|
|
2920
2958
|
}
|
|
2921
|
-
interface StringDevUIFieldToggle {
|
|
2959
|
+
interface StringDevUIFieldToggle extends StringDevUIFieldBase {
|
|
2922
2960
|
readonly type: "toggle";
|
|
2923
2961
|
readonly key: string;
|
|
2924
2962
|
readonly label: string;
|
|
@@ -2998,8 +3036,94 @@ declare abstract class GridAdapter {
|
|
|
2998
3036
|
protected createPath(d: string, stroke: string, opacity: number, strokeWidth?: number, fill?: string): SVGPathElement;
|
|
2999
3037
|
}
|
|
3000
3038
|
|
|
3039
|
+
/**
|
|
3040
|
+
* StringDevRulers — developer utility module for guide-line rulers.
|
|
3041
|
+
*
|
|
3042
|
+
* Usage:
|
|
3043
|
+
* st.use(StringDevRulers)
|
|
3044
|
+
* st.use(StringDevRulers, { triggers: [...], grid: { type: "columns", count: 12, ... } })
|
|
3045
|
+
*
|
|
3046
|
+
* Default trigger: Shift + R
|
|
3047
|
+
*
|
|
3048
|
+
* Settings:
|
|
3049
|
+
* triggers — array of trigger descriptors (keyboard / element / event)
|
|
3050
|
+
* rulers-snap — grid step in px (0 = off)
|
|
3051
|
+
* rulers-snap-elements — snap to [string] element edges (default: true)
|
|
3052
|
+
* rulers-snap-threshold — snap pull radius in px (default: 8)
|
|
3053
|
+
* rulers-snap-selector — CSS selector for snap targets
|
|
3054
|
+
* grid — RulersLayoutGrid | RulersLayoutGrid[]
|
|
3055
|
+
*
|
|
3056
|
+
* Snap visual feedback:
|
|
3057
|
+
* amber → snapping to a DOM element edge / center
|
|
3058
|
+
* green → snapping to a layout-grid line
|
|
3059
|
+
*/
|
|
3060
|
+
declare class StringDevRulers extends StringDevModule {
|
|
3061
|
+
private manager;
|
|
3062
|
+
private overlay;
|
|
3063
|
+
private visible;
|
|
3064
|
+
private dockDisabled;
|
|
3065
|
+
private currentModeId;
|
|
3066
|
+
private readonly modeStore;
|
|
3067
|
+
private readonly viewportLayer;
|
|
3068
|
+
private _kbHandlers;
|
|
3069
|
+
private _elHandlers;
|
|
3070
|
+
private _evHandlers;
|
|
3071
|
+
static devtool: {
|
|
3072
|
+
id: string;
|
|
3073
|
+
label: string;
|
|
3074
|
+
icon: string;
|
|
3075
|
+
order: number;
|
|
3076
|
+
group: number;
|
|
3077
|
+
hotkey: {
|
|
3078
|
+
key: string;
|
|
3079
|
+
shiftKey: boolean;
|
|
3080
|
+
};
|
|
3081
|
+
styles: string;
|
|
3082
|
+
connects: {
|
|
3083
|
+
global: boolean;
|
|
3084
|
+
keys: string[];
|
|
3085
|
+
};
|
|
3086
|
+
};
|
|
3087
|
+
constructor(context: StringContext);
|
|
3088
|
+
onInit(): void;
|
|
3089
|
+
onSettingsChange(): void;
|
|
3090
|
+
onSubscribe(): void;
|
|
3091
|
+
onUnsubscribe(): void;
|
|
3092
|
+
onFrame(data: StringData): void;
|
|
3093
|
+
onResize(): void;
|
|
3094
|
+
destroy(): void;
|
|
3095
|
+
toggle(): void;
|
|
3096
|
+
show(): void;
|
|
3097
|
+
hide(): void;
|
|
3098
|
+
clear(): void;
|
|
3099
|
+
isVisible(): boolean;
|
|
3100
|
+
protected getDevtoolActiveState(): boolean;
|
|
3101
|
+
protected setDevtoolActiveState(active: boolean): void;
|
|
3102
|
+
protected getDevtoolSubBadges(): StringDevtoolSubBadge[];
|
|
3103
|
+
private _bindTriggers;
|
|
3104
|
+
private _unbindTriggers;
|
|
3105
|
+
private _applyAction;
|
|
3106
|
+
private setVisible;
|
|
3107
|
+
private setDockActive;
|
|
3108
|
+
private mountOverlay;
|
|
3109
|
+
private cycleMode;
|
|
3110
|
+
private switchMode;
|
|
3111
|
+
private applyStyleSettings;
|
|
3112
|
+
private clearStyleSettings;
|
|
3113
|
+
/** Normalises the `grid` setting to RulersLayoutGrid[] (or undefined). */
|
|
3114
|
+
private _resolveGrids;
|
|
3115
|
+
private syncOverlayMetrics;
|
|
3116
|
+
private pushScrollToOverlay;
|
|
3117
|
+
}
|
|
3118
|
+
|
|
3001
3119
|
type StringDevtoolsOverlayId = string;
|
|
3120
|
+
interface AnchorPoint {
|
|
3121
|
+
docX: number;
|
|
3122
|
+
docY: number;
|
|
3123
|
+
}
|
|
3002
3124
|
|
|
3125
|
+
type OverlayAxis = "y" | "x";
|
|
3126
|
+
type OverlayAnchor = "start" | "end";
|
|
3003
3127
|
interface OverlayBaseMetrics {
|
|
3004
3128
|
visible: boolean;
|
|
3005
3129
|
contentX: number;
|
|
@@ -3010,6 +3134,17 @@ interface OverlayBaseMetrics {
|
|
|
3010
3134
|
baseAnchorX: number;
|
|
3011
3135
|
baseAnchorY: number;
|
|
3012
3136
|
collisionOffset: number;
|
|
3137
|
+
axis: OverlayAxis;
|
|
3138
|
+
primarySize: number;
|
|
3139
|
+
crossSize: number;
|
|
3140
|
+
primaryContentOffset: number;
|
|
3141
|
+
viewportPrimarySize: number;
|
|
3142
|
+
}
|
|
3143
|
+
interface OverlayObjectGeometry {
|
|
3144
|
+
contentX: number;
|
|
3145
|
+
contentY: number;
|
|
3146
|
+
width: number;
|
|
3147
|
+
height: number;
|
|
3013
3148
|
}
|
|
3014
3149
|
interface StringDevOverlayBadgeInit {
|
|
3015
3150
|
targetId: string;
|
|
@@ -3023,20 +3158,29 @@ interface StringDevOverlayBadgeState {
|
|
|
3023
3158
|
disabled?: boolean;
|
|
3024
3159
|
title?: string;
|
|
3025
3160
|
html?: string;
|
|
3161
|
+
label?: string;
|
|
3026
3162
|
attributes?: Record<string, string | boolean | number | null | undefined>;
|
|
3027
3163
|
}
|
|
3028
3164
|
declare abstract class StringDevOverlayModule<TEntry = unknown, TMeasurement = unknown> extends StringDevModule {
|
|
3029
3165
|
private _viewportLayer?;
|
|
3166
|
+
private _badgeLayer?;
|
|
3167
|
+
private _hudLayer?;
|
|
3030
3168
|
protected get viewportLayer(): StringDevViewportLayer;
|
|
3169
|
+
protected get badgeLayer(): StringDevViewportLayer;
|
|
3170
|
+
protected get hudLayer(): StringDevViewportLayer;
|
|
3031
3171
|
protected readonly entries: Map<string, TEntry>;
|
|
3032
3172
|
protected readonly measurements: Map<string, TMeasurement>;
|
|
3033
3173
|
protected enabled: boolean;
|
|
3034
3174
|
protected needsMeasure: boolean;
|
|
3035
3175
|
protected hasPendingMutate: boolean;
|
|
3176
|
+
private _rafId;
|
|
3177
|
+
private _pendingSingleIds;
|
|
3036
3178
|
private readonly onOverlayLayoutChangeBind;
|
|
3037
3179
|
private get _overlayConfig();
|
|
3038
3180
|
/** Override to provide the overlay ID for the anchor/collision system. */
|
|
3039
3181
|
protected get overlayId(): StringDevtoolsOverlayId | null;
|
|
3182
|
+
/** Override to declare how many badge slots this overlay occupies. */
|
|
3183
|
+
protected get overlayBadgeCount(): number;
|
|
3040
3184
|
/** Override to define your viewport layer name. Falls back to devtool.overlay.layerName. */
|
|
3041
3185
|
protected get layerName(): string;
|
|
3042
3186
|
/** Override to define your viewport layer z-index. Falls back to devtool.overlay.zIndex. */
|
|
@@ -3068,11 +3212,29 @@ declare abstract class StringDevOverlayModule<TEntry = unknown, TMeasurement = u
|
|
|
3068
3212
|
onMutate(): void;
|
|
3069
3213
|
onResize(): void;
|
|
3070
3214
|
onDOMRebuild(): void;
|
|
3215
|
+
/**
|
|
3216
|
+
* Immediate synchronous full sync — use only when instant visual response
|
|
3217
|
+
* is required (e.g. setEnabled). For everything else prefer scheduleSync().
|
|
3218
|
+
*/
|
|
3071
3219
|
protected scheduleFullSync(): void;
|
|
3220
|
+
/**
|
|
3221
|
+
* Deferred full sync — batches multiple calls within the same animation
|
|
3222
|
+
* frame into a single measure+flush pass. Use for resize, layout changes,
|
|
3223
|
+
* object connected, and any other non-immediate triggers.
|
|
3224
|
+
*/
|
|
3225
|
+
protected scheduleSync(): void;
|
|
3226
|
+
/**
|
|
3227
|
+
* Deferred single-entry sync — measures and flushes only the given entry.
|
|
3228
|
+
* Multiple calls for different entries within the same frame are batched
|
|
3229
|
+
* together into one styleTxn flush. Use for per-object events like
|
|
3230
|
+
* object:inview or slider input where only one entry changes.
|
|
3231
|
+
*/
|
|
3232
|
+
protected scheduleSingleSync(entry: TEntry): void;
|
|
3072
3233
|
protected collectMeasurements(): void;
|
|
3073
3234
|
protected flushMeasurements(): void;
|
|
3074
3235
|
protected ensureLayer(): HTMLDivElement;
|
|
3075
3236
|
protected applyEnabledState(): void;
|
|
3237
|
+
private syncSlotRegistration;
|
|
3076
3238
|
protected resolveOverlayTargetId(object: StringObject): string;
|
|
3077
3239
|
protected resolveOverlayObjectDepth(element: HTMLElement): number;
|
|
3078
3240
|
protected createOverlayBadge(init: StringDevOverlayBadgeInit): HTMLButtonElement;
|
|
@@ -3081,19 +3243,66 @@ declare abstract class StringDevOverlayModule<TEntry = unknown, TMeasurement = u
|
|
|
3081
3243
|
visible: boolean;
|
|
3082
3244
|
docX: number;
|
|
3083
3245
|
docY: number;
|
|
3246
|
+
translate?: string;
|
|
3084
3247
|
} | undefined): void;
|
|
3248
|
+
protected getOverlayTargetLabel(object: StringObject): string;
|
|
3249
|
+
protected getViewportAnchorOffset(anchor: OverlayAnchor, metrics: OverlayBaseMetrics): number;
|
|
3250
|
+
protected getOverlayAnchorAdjustment(_object: StringObject, _anchor: AnchorPoint, _metrics?: {
|
|
3251
|
+
contentX: number;
|
|
3252
|
+
contentY: number;
|
|
3253
|
+
width: number;
|
|
3254
|
+
height: number;
|
|
3255
|
+
}): AnchorPoint;
|
|
3256
|
+
protected resolveRulerPanelOffset(contentX: number, contentY: number): {
|
|
3257
|
+
x: number;
|
|
3258
|
+
y: number;
|
|
3259
|
+
};
|
|
3085
3260
|
protected computeBaseMetrics(entry: any): OverlayBaseMetrics;
|
|
3086
|
-
|
|
3261
|
+
protected getHiddenMetrics(): OverlayBaseMetrics;
|
|
3087
3262
|
protected getObjectDocY(object: StringObject): number;
|
|
3263
|
+
protected resolveOverlayObjectGeometry(object: StringObject, element?: HTMLElement): OverlayObjectGeometry;
|
|
3088
3264
|
protected getViewportScrollLeft(): number;
|
|
3089
3265
|
protected getViewportScrollTop(): number;
|
|
3266
|
+
protected resolveLiveElementMetrics(element: HTMLElement, rect: DOMRect): {
|
|
3267
|
+
docLeft?: number;
|
|
3268
|
+
docTop?: number;
|
|
3269
|
+
width: number;
|
|
3270
|
+
height: number;
|
|
3271
|
+
};
|
|
3090
3272
|
destroy(): void;
|
|
3091
3273
|
}
|
|
3092
3274
|
|
|
3093
|
-
|
|
3275
|
+
type StringDevBadgeSlot = "top-left" | "top-right" | "bottom-right" | "bottom-left";
|
|
3276
|
+
interface StringDevBadgeSlotConfig {
|
|
3277
|
+
gap?: number;
|
|
3278
|
+
offsetX?: number;
|
|
3279
|
+
offsetY?: number;
|
|
3280
|
+
}
|
|
3281
|
+
interface StringDevBadgeDescriptor {
|
|
3282
|
+
id: string;
|
|
3283
|
+
slot?: StringDevBadgeSlot;
|
|
3284
|
+
group?: string;
|
|
3285
|
+
selectorAttribute?: string;
|
|
3286
|
+
depth?: number;
|
|
3287
|
+
attributes?: Record<string, string | boolean | number | null | undefined>;
|
|
3288
|
+
gap?: number;
|
|
3289
|
+
offsetX?: number;
|
|
3290
|
+
offsetY?: number;
|
|
3291
|
+
}
|
|
3292
|
+
interface StringDevManagedBadge {
|
|
3293
|
+
id: string;
|
|
3294
|
+
descriptor: StringDevBadgeDescriptor;
|
|
3295
|
+
element: HTMLButtonElement;
|
|
3296
|
+
}
|
|
3297
|
+
interface StringDevBadgePositionMeasurement {
|
|
3094
3298
|
visible: boolean;
|
|
3095
3299
|
docX: number;
|
|
3096
3300
|
docY: number;
|
|
3301
|
+
translate?: string;
|
|
3302
|
+
}
|
|
3303
|
+
interface StringDevBadgeMeasurement {
|
|
3304
|
+
visible: boolean;
|
|
3305
|
+
badges: Record<string, StringDevBadgePositionMeasurement>;
|
|
3097
3306
|
}
|
|
3098
3307
|
interface StringDevBadgeEntry<TExtra = undefined> {
|
|
3099
3308
|
object: StringObject;
|
|
@@ -3102,207 +3311,139 @@ interface StringDevBadgeEntry<TExtra = undefined> {
|
|
|
3102
3311
|
depth: number;
|
|
3103
3312
|
extra: TExtra;
|
|
3104
3313
|
cleanup: Array<() => void>;
|
|
3314
|
+
badges: Map<string, StringDevManagedBadge>;
|
|
3315
|
+
groups: Map<string, HTMLDivElement>;
|
|
3105
3316
|
}
|
|
3106
3317
|
declare abstract class StringDevBadgeOverlayModule<TExtra = undefined, TMeasurement extends StringDevBadgeMeasurement = StringDevBadgeMeasurement> extends StringDevOverlayModule<StringDevBadgeEntry<TExtra>, TMeasurement> {
|
|
3107
|
-
/** Override to define the data-attribute on the badge element. Falls back to devtool.overlay.badgeAttribute. */
|
|
3108
3318
|
protected get badgeAttribute(): string;
|
|
3109
3319
|
protected createOverlayEntry(object: StringObject): StringDevBadgeEntry<TExtra>;
|
|
3110
3320
|
protected destroyOverlayEntry(entry: StringDevBadgeEntry<TExtra>): void;
|
|
3111
|
-
protected measureEntry(
|
|
3321
|
+
protected measureEntry(entry: StringDevBadgeEntry<TExtra>, metrics: OverlayBaseMetrics): TMeasurement;
|
|
3112
3322
|
protected applyMeasurement(entry: StringDevBadgeEntry<TExtra>, measurement: TMeasurement | undefined): void;
|
|
3113
3323
|
protected onEnabledChange(_enabled: boolean): void;
|
|
3114
3324
|
protected createBadgeExtra(_object: StringObject, _badge: HTMLButtonElement, _targetId: string, _depth: number): TExtra;
|
|
3115
3325
|
protected destroyBadgeExtra(_entry: StringDevBadgeEntry<TExtra>): void;
|
|
3116
3326
|
protected bindBadge(_entry: StringDevBadgeEntry<TExtra>): Array<() => void> | void;
|
|
3117
3327
|
protected resolveBadgeDepth(object: StringObject): number;
|
|
3328
|
+
protected getBadgeSlotConfig(): Partial<Record<StringDevBadgeSlot, StringDevBadgeSlotConfig>>;
|
|
3329
|
+
protected getBadgeDescriptors(object: StringObject, targetId: string, depth: number): Array<StringDevBadgeDescriptor>;
|
|
3118
3330
|
protected getInitialBadgeAttributes(_object: StringObject, _targetId: string, _depth: number): Record<string, string | boolean | number | null | undefined> | undefined;
|
|
3119
3331
|
protected applyBadgeEnabledState(entry: StringDevBadgeEntry<TExtra>): void;
|
|
3120
3332
|
protected renderBadge(entry: StringDevBadgeEntry<TExtra>): void;
|
|
3121
3333
|
protected afterBadgeMeasurement(_entry: StringDevBadgeEntry<TExtra>, _measurement: TMeasurement | undefined): void;
|
|
3122
|
-
protected abstract onBadgeClick(entry: StringDevBadgeEntry<TExtra>, event: MouseEvent): void;
|
|
3123
|
-
protected abstract getBadgeState(entry: StringDevBadgeEntry<TExtra
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
zIndex: number;
|
|
3139
|
-
layerAttribute: string;
|
|
3140
|
-
overlayId: string;
|
|
3141
|
-
badgeAttribute: string;
|
|
3142
|
-
defaultEnabled: boolean;
|
|
3143
|
-
};
|
|
3144
|
-
};
|
|
3145
|
-
canConnect(_object: StringObject): boolean;
|
|
3146
|
-
protected createBadgeExtra(object: StringObject): InviewToggleExtra;
|
|
3147
|
-
protected bindBadge(entry: StringDevBadgeEntry<InviewToggleExtra>): Array<() => void>;
|
|
3148
|
-
protected onBadgeClick(entry: StringDevBadgeEntry<InviewToggleExtra>, _event: MouseEvent): void;
|
|
3149
|
-
protected getBadgeState(entry: StringDevBadgeEntry<InviewToggleExtra>): StringDevOverlayBadgeState;
|
|
3150
|
-
}
|
|
3151
|
-
|
|
3152
|
-
/**
|
|
3153
|
-
* StringDevRulers — developer utility module for guide-line rulers.
|
|
3154
|
-
*
|
|
3155
|
-
* Usage:
|
|
3156
|
-
* st.use(StringDevRulers)
|
|
3157
|
-
* st.use(StringDevRulers, { triggers: [...], grid: { type: "columns", count: 12, ... } })
|
|
3158
|
-
*
|
|
3159
|
-
* Default trigger: Shift + R
|
|
3160
|
-
*
|
|
3161
|
-
* Settings:
|
|
3162
|
-
* triggers — array of trigger descriptors (keyboard / element / event)
|
|
3163
|
-
* rulers-snap — grid step in px (0 = off)
|
|
3164
|
-
* rulers-snap-elements — snap to [string] element edges (default: true)
|
|
3165
|
-
* rulers-snap-threshold — snap pull radius in px (default: 8)
|
|
3166
|
-
* rulers-snap-selector — CSS selector for snap targets
|
|
3167
|
-
* grid — RulersLayoutGrid | RulersLayoutGrid[]
|
|
3168
|
-
*
|
|
3169
|
-
* Snap visual feedback:
|
|
3170
|
-
* amber → snapping to a DOM element edge / center
|
|
3171
|
-
* green → snapping to a layout-grid line
|
|
3172
|
-
*/
|
|
3173
|
-
declare class StringDevRulers extends StringDevModule {
|
|
3174
|
-
private manager;
|
|
3175
|
-
private overlay;
|
|
3176
|
-
private visible;
|
|
3177
|
-
private dockDisabled;
|
|
3178
|
-
private currentModeId;
|
|
3179
|
-
private readonly viewportLayer;
|
|
3180
|
-
private _kbHandlers;
|
|
3181
|
-
private _elHandlers;
|
|
3182
|
-
private _evHandlers;
|
|
3183
|
-
static devtool: {
|
|
3184
|
-
id: string;
|
|
3185
|
-
label: string;
|
|
3186
|
-
icon: string;
|
|
3187
|
-
order: number;
|
|
3188
|
-
styles: string;
|
|
3189
|
-
};
|
|
3190
|
-
constructor(context: StringContext);
|
|
3191
|
-
onInit(): void;
|
|
3192
|
-
onSettingsChange(): void;
|
|
3193
|
-
onSubscribe(): void;
|
|
3194
|
-
onUnsubscribe(): void;
|
|
3195
|
-
onFrame(data: StringData): void;
|
|
3196
|
-
onResize(): void;
|
|
3197
|
-
destroy(): void;
|
|
3198
|
-
toggle(): void;
|
|
3199
|
-
show(): void;
|
|
3200
|
-
hide(): void;
|
|
3201
|
-
isVisible(): boolean;
|
|
3202
|
-
protected getDevtoolActiveState(): boolean;
|
|
3203
|
-
protected setDevtoolActiveState(active: boolean): void;
|
|
3204
|
-
private _bindTriggers;
|
|
3205
|
-
private _unbindTriggers;
|
|
3206
|
-
private _applyAction;
|
|
3207
|
-
private setVisible;
|
|
3208
|
-
private setDockActive;
|
|
3209
|
-
private mountOverlay;
|
|
3210
|
-
private cycleMode;
|
|
3211
|
-
private switchMode;
|
|
3212
|
-
private applyStyleSettings;
|
|
3213
|
-
private clearStyleSettings;
|
|
3214
|
-
/** Normalises the `grid` setting to RulersLayoutGrid[] (or undefined). */
|
|
3215
|
-
private _resolveGrids;
|
|
3216
|
-
private syncOverlayMetrics;
|
|
3217
|
-
}
|
|
3218
|
-
|
|
3219
|
-
interface OffsetOverlayEntry {
|
|
3220
|
-
object: StringObject;
|
|
3221
|
-
root: HTMLDivElement;
|
|
3222
|
-
box: HTMLDivElement;
|
|
3223
|
-
topZone: HTMLDivElement;
|
|
3224
|
-
bottomZone: HTMLDivElement;
|
|
3225
|
-
topMarker: HTMLDivElement;
|
|
3226
|
-
bottomMarker: HTMLDivElement;
|
|
3227
|
-
topMarkerValue: HTMLSpanElement;
|
|
3228
|
-
bottomMarkerValue: HTMLSpanElement;
|
|
3229
|
-
badge: HTMLButtonElement;
|
|
3230
|
-
badgeDepth: number;
|
|
3231
|
-
onBadgeClick: (event: MouseEvent) => void;
|
|
3232
|
-
}
|
|
3233
|
-
interface OffsetOverlayMeasurement {
|
|
3234
|
-
visible: boolean;
|
|
3334
|
+
protected abstract onBadgeClick(entry: StringDevBadgeEntry<TExtra>, event: MouseEvent, badge: StringDevManagedBadge): void;
|
|
3335
|
+
protected abstract getBadgeState(entry: StringDevBadgeEntry<TExtra>, badge?: StringDevManagedBadge): StringDevOverlayBadgeState;
|
|
3336
|
+
private resolveBadgeSlotConfig;
|
|
3337
|
+
private resolveBadgePosition;
|
|
3338
|
+
}
|
|
3339
|
+
|
|
3340
|
+
interface InviewExtra {
|
|
3341
|
+
outline: HTMLDivElement;
|
|
3342
|
+
enterConnector: HTMLDivElement;
|
|
3343
|
+
exitConnector: HTMLDivElement;
|
|
3344
|
+
enterMarker: HTMLDivElement;
|
|
3345
|
+
exitMarker: HTMLDivElement;
|
|
3346
|
+
enterMarkerLabel: HTMLSpanElement;
|
|
3347
|
+
exitMarkerLabel: HTMLSpanElement;
|
|
3348
|
+
}
|
|
3349
|
+
interface InviewMeasurement extends StringDevBadgeMeasurement {
|
|
3235
3350
|
overlayVisible: boolean;
|
|
3236
3351
|
badgeVisible: boolean;
|
|
3352
|
+
markersVisible: boolean;
|
|
3237
3353
|
inview: boolean;
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3258
|
-
bottomMarkerValue: string;
|
|
3259
|
-
badgeDocX: number;
|
|
3260
|
-
badgeDocY: number;
|
|
3261
|
-
}
|
|
3262
|
-
declare class StringDevOffsets extends StringDevOverlayModule<OffsetOverlayEntry, OffsetOverlayMeasurement> {
|
|
3354
|
+
outlineDocX: number;
|
|
3355
|
+
outlineDocY: number;
|
|
3356
|
+
outlineWidth: number;
|
|
3357
|
+
outlineHeight: number;
|
|
3358
|
+
enterConnectorDocX: number;
|
|
3359
|
+
enterConnectorDocY: number;
|
|
3360
|
+
enterConnectorWidth: number;
|
|
3361
|
+
enterConnectorHeight: number;
|
|
3362
|
+
exitConnectorDocX: number;
|
|
3363
|
+
exitConnectorDocY: number;
|
|
3364
|
+
exitConnectorWidth: number;
|
|
3365
|
+
exitConnectorHeight: number;
|
|
3366
|
+
enterMarkerDocX: number;
|
|
3367
|
+
enterMarkerDocY: number;
|
|
3368
|
+
enterMarkerFlippedY: boolean;
|
|
3369
|
+
exitMarkerDocX: number;
|
|
3370
|
+
exitMarkerDocY: number;
|
|
3371
|
+
exitMarkerFlippedY: boolean;
|
|
3372
|
+
}
|
|
3373
|
+
declare class StringDevInview extends StringDevBadgeOverlayModule<InviewExtra, InviewMeasurement> {
|
|
3263
3374
|
static devtool: {
|
|
3264
3375
|
id: string;
|
|
3265
3376
|
label: string;
|
|
3266
3377
|
icon: string;
|
|
3267
3378
|
order: number;
|
|
3379
|
+
group: number;
|
|
3380
|
+
hotkey: {
|
|
3381
|
+
key: string;
|
|
3382
|
+
shiftKey: boolean;
|
|
3383
|
+
};
|
|
3268
3384
|
styles: string;
|
|
3269
3385
|
overlay: {
|
|
3270
3386
|
layerName: string;
|
|
3271
3387
|
zIndex: number;
|
|
3272
3388
|
layerAttribute: string;
|
|
3273
3389
|
overlayId: string;
|
|
3390
|
+
defaultEnabled: boolean;
|
|
3391
|
+
};
|
|
3392
|
+
connects: {
|
|
3393
|
+
global: boolean;
|
|
3274
3394
|
};
|
|
3275
3395
|
};
|
|
3396
|
+
protected get overlayBadgeCount(): number;
|
|
3397
|
+
protected getDevtoolSubBadges(): StringDevtoolSubBadge[];
|
|
3276
3398
|
private entryEnabled;
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3399
|
+
private markerSizeCache;
|
|
3400
|
+
private readonly disabledStore;
|
|
3401
|
+
private readonly markerStore;
|
|
3402
|
+
private disabledTargetIds;
|
|
3403
|
+
private markerOffsets;
|
|
3404
|
+
private stableCoarseViewportWidth;
|
|
3405
|
+
private stableCoarseViewportHeight;
|
|
3406
|
+
protected getBadgeDescriptors(_object: StringObject, _targetId: string, _depth: number): Array<StringDevBadgeDescriptor>;
|
|
3407
|
+
protected createBadgeExtra(object: StringObject, _badge: HTMLButtonElement, targetId: string, _depth: number): InviewExtra;
|
|
3408
|
+
protected destroyBadgeExtra(entry: StringDevBadgeEntry<InviewExtra>): void;
|
|
3409
|
+
protected bindBadge(entry: StringDevBadgeEntry<InviewExtra>): Array<() => void>;
|
|
3410
|
+
protected measureEntry(entry: StringDevBadgeEntry<InviewExtra>, metrics: OverlayBaseMetrics): InviewMeasurement;
|
|
3411
|
+
protected afterBadgeMeasurement(entry: StringDevBadgeEntry<InviewExtra>, measurement: InviewMeasurement | undefined): void;
|
|
3412
|
+
protected onBadgeClick(entry: StringDevBadgeEntry<InviewExtra>, _event: MouseEvent, badge: StringDevManagedBadge): void;
|
|
3413
|
+
protected getBadgeState(entry: StringDevBadgeEntry<InviewExtra>, badge?: StringDevManagedBadge): StringDevOverlayBadgeState;
|
|
3282
3414
|
private hiddenMeasurement;
|
|
3415
|
+
private getInviewBadgeState;
|
|
3416
|
+
private toggleInview;
|
|
3417
|
+
private isInviewBadgeActive;
|
|
3283
3418
|
private isEntryEnabled;
|
|
3284
3419
|
private setEntryEnabled;
|
|
3285
|
-
private
|
|
3420
|
+
private disableAllOffsets;
|
|
3421
|
+
private bindMarkerDrag;
|
|
3422
|
+
private getMarkerOffset;
|
|
3423
|
+
private setMarkerOffset;
|
|
3424
|
+
private syncMarkerContent;
|
|
3425
|
+
private getViewportMarkerLabel;
|
|
3426
|
+
private measureMarkerSize;
|
|
3427
|
+
private resolveLiveStickyGeometry;
|
|
3428
|
+
private clampMarkerPercentInViewport;
|
|
3429
|
+
private clampMarkerPercentInClientViewport;
|
|
3430
|
+
private syncCompactMode;
|
|
3431
|
+
private syncCompactModeForExtra;
|
|
3432
|
+
private setAttributeIfChanged;
|
|
3433
|
+
private getStableViewportHeight;
|
|
3286
3434
|
}
|
|
3287
3435
|
|
|
3288
3436
|
interface ProgressEntry {
|
|
3289
3437
|
object: StringObject;
|
|
3290
|
-
|
|
3438
|
+
hud: HTMLDivElement;
|
|
3291
3439
|
badge: HTMLButtonElement;
|
|
3292
|
-
panel: HTMLDivElement;
|
|
3293
|
-
title: HTMLSpanElement;
|
|
3294
|
-
slider: HTMLInputElement;
|
|
3295
|
-
easedValue: HTMLSpanElement;
|
|
3296
|
-
rawValue: HTMLSpanElement;
|
|
3297
|
-
rangeValue: HTMLSpanElement;
|
|
3298
3440
|
onBadgeClick: (event: MouseEvent) => void;
|
|
3299
|
-
onSliderInput: () => void;
|
|
3300
3441
|
}
|
|
3301
3442
|
interface ProgressMeasurement {
|
|
3302
3443
|
visible: boolean;
|
|
3303
3444
|
docX: number;
|
|
3304
3445
|
docY: number;
|
|
3305
|
-
|
|
3446
|
+
targetId: string;
|
|
3306
3447
|
progress: number;
|
|
3307
3448
|
rawProgress: number;
|
|
3308
3449
|
startPosition: number;
|
|
@@ -3316,6 +3457,11 @@ declare class StringDevProgress extends StringDevOverlayModule<ProgressEntry, Pr
|
|
|
3316
3457
|
label: string;
|
|
3317
3458
|
icon: string;
|
|
3318
3459
|
order: number;
|
|
3460
|
+
group: number;
|
|
3461
|
+
hotkey: {
|
|
3462
|
+
key: string;
|
|
3463
|
+
shiftKey: boolean;
|
|
3464
|
+
};
|
|
3319
3465
|
styles: string;
|
|
3320
3466
|
overlay: {
|
|
3321
3467
|
layerName: string;
|
|
@@ -3323,10 +3469,24 @@ declare class StringDevProgress extends StringDevOverlayModule<ProgressEntry, Pr
|
|
|
3323
3469
|
layerAttribute: string;
|
|
3324
3470
|
overlayId: string;
|
|
3325
3471
|
};
|
|
3472
|
+
connects: {
|
|
3473
|
+
keys: string[];
|
|
3474
|
+
};
|
|
3326
3475
|
};
|
|
3327
|
-
private
|
|
3328
|
-
private
|
|
3329
|
-
|
|
3476
|
+
private openTargetLabel;
|
|
3477
|
+
private panelRoot;
|
|
3478
|
+
private panelTitle;
|
|
3479
|
+
private panelSlider;
|
|
3480
|
+
private panelValue;
|
|
3481
|
+
private panelEasedValue;
|
|
3482
|
+
private panelPlayForwardButton;
|
|
3483
|
+
private panelPlayBackwardButton;
|
|
3484
|
+
private autoplayRaf;
|
|
3485
|
+
private autoplayDirection;
|
|
3486
|
+
private autoplayProgress;
|
|
3487
|
+
private readonly onPanelSliderInputBind;
|
|
3488
|
+
private unbindOutsideClick;
|
|
3489
|
+
constructor(context: StringContext);
|
|
3330
3490
|
onInit(): void;
|
|
3331
3491
|
destroy(): void;
|
|
3332
3492
|
protected createOverlayEntry(object: StringObject): ProgressEntry;
|
|
@@ -3338,25 +3498,40 @@ declare class StringDevProgress extends StringDevOverlayModule<ProgressEntry, Pr
|
|
|
3338
3498
|
private openPanel;
|
|
3339
3499
|
private closePanel;
|
|
3340
3500
|
private closeAllPanels;
|
|
3341
|
-
private
|
|
3501
|
+
private collectEntryHuds;
|
|
3502
|
+
private startAutoplay;
|
|
3503
|
+
private stopAutoplay;
|
|
3504
|
+
private syncPlayButtonState;
|
|
3505
|
+
private getEntryRange;
|
|
3342
3506
|
private resolveEntryRawProgress;
|
|
3343
3507
|
private resolveEasedProgress;
|
|
3344
3508
|
private setEntryProgressOverride;
|
|
3345
3509
|
private clearEntryProgressOverride;
|
|
3346
3510
|
private clearAllProgressOverrides;
|
|
3347
3511
|
private applyObjectProgress;
|
|
3512
|
+
private ensurePanel;
|
|
3513
|
+
private onPanelSliderInput;
|
|
3514
|
+
private renderPanel;
|
|
3515
|
+
private findEntryByTargetLabel;
|
|
3516
|
+
}
|
|
3517
|
+
|
|
3518
|
+
interface DevtoolsIconDef {
|
|
3519
|
+
id: string;
|
|
3520
|
+
viewBox: string;
|
|
3521
|
+
content: string;
|
|
3348
3522
|
}
|
|
3349
3523
|
|
|
3524
|
+
type DevtoolsIconSize = 12 | 16 | 20;
|
|
3350
3525
|
declare class StringDevIconRegistry {
|
|
3351
3526
|
private static instance;
|
|
3352
|
-
private
|
|
3527
|
+
private spriteRoot;
|
|
3353
3528
|
private constructor();
|
|
3354
3529
|
static getInstance(): StringDevIconRegistry;
|
|
3355
|
-
register(
|
|
3356
|
-
|
|
3357
|
-
|
|
3530
|
+
register(icon: DevtoolsIconDef): void;
|
|
3531
|
+
resolve(size: DevtoolsIconSize, name: string, ...modifiers: string[]): string;
|
|
3532
|
+
private ensureSprite;
|
|
3358
3533
|
}
|
|
3359
|
-
declare function resolveDevtoolsIcon(
|
|
3534
|
+
declare function resolveDevtoolsIcon(size: DevtoolsIconSize, name: string, ...modifiers: string[]): string;
|
|
3360
3535
|
|
|
3361
3536
|
type StringDevStyleTokens = Record<string, string>;
|
|
3362
3537
|
declare function buildDevtoolsThemeBlock(selectors: string | string[], overrides?: StringDevStyleTokens): string;
|
|
@@ -3497,6 +3672,7 @@ declare class DOMBatcher {
|
|
|
3497
3672
|
declare class StringTune {
|
|
3498
3673
|
private static readonly DEVTOOLS_ACCESS_URL;
|
|
3499
3674
|
private static readonly DEVTOOLS_LOG_PREFIX;
|
|
3675
|
+
private static readonly DEVTOOLS_ARTIFACT_SELECTORS;
|
|
3500
3676
|
/** Bound handler for the scroll start event */
|
|
3501
3677
|
private onScrollStartBind;
|
|
3502
3678
|
/** Bound handler for the scroll stop event */
|
|
@@ -3642,6 +3818,7 @@ declare class StringTune {
|
|
|
3642
3818
|
* @param settings Optional settings specific to this module.
|
|
3643
3819
|
*/
|
|
3644
3820
|
use(objectClass: typeof StringModule, settings?: any): void;
|
|
3821
|
+
private cleanupExistingDevtoolsArtifacts;
|
|
3645
3822
|
private instantiateModule;
|
|
3646
3823
|
private shouldDeferDevtoolModule;
|
|
3647
3824
|
private validateDevtoolsAccess;
|
|
@@ -3798,4 +3975,4 @@ declare class StringTune {
|
|
|
3798
3975
|
destroy(): void;
|
|
3799
3976
|
}
|
|
3800
3977
|
|
|
3801
|
-
export { CursorReactiveModule, DOMBatcher, GridAdapter, type RulersLayoutGrid, type RulersTriggerAction, ScrollController, type ScrollMarkRule as ScrollTriggerRule, StringAnchor, type StringContext, StringCursor, StringData, StringDelayLerpTracker, StringDevIconRegistry,
|
|
3978
|
+
export { CursorReactiveModule, DOMBatcher, GridAdapter, type RulersLayoutGrid, type RulersTriggerAction, ScrollController, type ScrollMarkRule as ScrollTriggerRule, StringAnchor, type StringContext, StringCursor, StringData, StringDelayLerpTracker, StringDevIconRegistry, StringDevInview, StringDevLayout, StringDevModule, StringDevOverlayRegistry, StringDevProgress, StringDevRulers, type StringDevStyleTokens, type StringDevtoolDefinition, type StringDevtoolProvider, type StringDevtoolState, StringFPSTracker, StringForm, StringGlide, StringImpulse, StringLazy, StringLerp, StringLerpTracker, StringLoading, StringMagnetic, StringMasonry, StringModule, StringObject, StringParallax, StringPositionTracker, StringProgress, StringProgressPart, StringRandom, StringResponsive, type StringRulersTrigger, StringScrollContainer, StringScrollbar, StringScroller, StringSequence, StringSplit, StringSpotlight, StringTune, StringVideoAutoplay, buildDevtoolsThemeBlock, StringTune as default, ensureStringDevtoolsSharedStyles, frameDOM, resolveDevtoolsIcon, styleTxn };
|