@flemo/core 1.29.0 → 1.30.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/core/TaskManger.d.ts +13 -0
- package/dist/core/engine/__tests__/architectureDoc.test.d.ts +10 -0
- package/dist/core/engine/__tests__/diagnosticRegistry.test.d.ts +10 -0
- package/dist/core/engine/__tests__/participantLayers.test.d.ts +1 -0
- package/dist/core/engine/__tests__/singleResolution.test.d.ts +1 -0
- package/dist/core/engine/arrivalHold.d.ts +1 -1
- package/dist/core/engine/cancelResume.d.ts +17 -0
- package/dist/core/engine/compositorWarmUp.d.ts +1 -1
- package/dist/core/engine/createSwipeController.d.ts +11 -0
- package/dist/core/engine/createTransitionEngine.d.ts +2 -1
- package/dist/core/engine/diagnosticFlags.d.ts +1 -10
- package/dist/core/engine/diagnosticRegistry.d.ts +38 -0
- package/dist/core/engine/flightHolds.d.ts +22 -0
- package/dist/core/engine/flightParticipants.d.ts +8 -0
- package/dist/core/engine/flightRouting.d.ts +70 -0
- package/dist/core/engine/gpuPipelinePrewarm.d.ts +1 -1
- package/dist/core/engine/imageDecodeOffloader.d.ts +1 -1
- package/dist/core/engine/landingGovernor.d.ts +3 -0
- package/dist/core/engine/participantLayers.d.ts +12 -0
- package/dist/core/engine/types.d.ts +1 -1
- package/dist/dom/__tests__/attributes.test.d.ts +10 -0
- package/dist/dom/attributes.d.ts +115 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.mjs +1517 -1658
- package/dist/navigate/store.d.ts +1 -0
- package/dist/platform/__tests__/displayCadence.test.d.ts +1 -0
- package/dist/platform/__tests__/displayProbe.test.d.ts +1 -0
- package/dist/platform/__tests__/engineProbes.test.d.ts +1 -0
- package/dist/platform/__tests__/legacyBlinkGate.test.d.ts +1 -0
- package/dist/platform/__tests__/profile.test.d.ts +1 -0
- package/dist/platform/__tests__/steadySixtyCadence.test.d.ts +1 -0
- package/dist/platform/displayCadence.d.ts +3 -0
- package/dist/platform/displayProbe.d.ts +5 -0
- package/dist/platform/engineProbes.d.ts +4 -0
- package/dist/platform/profile.d.ts +70 -0
- package/dist/{core/engine → platform}/steadySixtyCadence.d.ts +1 -1
- package/dist/runtime/__tests__/flemoRuntime.test.d.ts +1 -0
- package/dist/runtime/flemoRuntime.d.ts +9 -0
- package/dist/transition/compileTransitionStyles.d.ts +0 -1
- package/dist/transition/cubicBezier.d.ts +8 -0
- package/dist/transition/swipeSettle.d.ts +82 -1
- package/dist/transition/typing.d.ts +2 -2
- package/package.json +3 -3
- package/dist/core/engine/driverPolicy.d.ts +0 -12
- package/dist/core/engine/landingPixelSnap.d.ts +0 -10
- package/dist/core/engine/motionDriverKind.d.ts +0 -7
- package/dist/core/engine/transitionPlayer.d.ts +0 -40
- /package/dist/core/engine/__tests__/{driverPolicy.test.d.ts → createSwipeController.stuckGesture.test.d.ts} +0 -0
- /package/dist/core/engine/__tests__/{landingPixelSnap.test.d.ts → createSwipeController.velocity.test.d.ts} +0 -0
- /package/dist/core/engine/__tests__/{motionDriverKind.test.d.ts → flightParticipants.test.d.ts} +0 -0
- /package/dist/core/engine/__tests__/{steadySixtyCadence.test.d.ts → flightRouting.test.d.ts} +0 -0
- /package/dist/core/engine/__tests__/{transitionPlayer.test.d.ts → landingGovernor.test.d.ts} +0 -0
- /package/dist/{core/engine → platform}/governedCompiled.d.ts +0 -0
|
@@ -50,6 +50,19 @@ declare class TaskManager {
|
|
|
50
50
|
emitSignal(signalName: string): void;
|
|
51
51
|
private processPendingTasks;
|
|
52
52
|
private pendingWaiters;
|
|
53
|
+
/**
|
|
54
|
+
* Wake the queue on the next frame, so the terminal flip's commit and the
|
|
55
|
+
* queued flight's opening commit land in different ones.
|
|
56
|
+
*
|
|
57
|
+
* Falls straight through where there is no frame clock (SSR, a non-browser
|
|
58
|
+
* embedder): there is no commit to separate from.
|
|
59
|
+
*
|
|
60
|
+
* Reaching this at all takes a task genuinely PENDING ahead of the queued one
|
|
61
|
+
* — a waiter added to an empty queue resolves on the spot and never goes
|
|
62
|
+
* through the notify path, so a test that merely drives two tasks exercises
|
|
63
|
+
* nothing here. The suite holds a manual task open and queues behind it.
|
|
64
|
+
*/
|
|
65
|
+
private wakeQueueNextFrame;
|
|
53
66
|
private notifyPendingWaiters;
|
|
54
67
|
private waitForPendingTasks;
|
|
55
68
|
private onTaskStatusChange;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { HELD_ARRIVAL_ATTR } from '../../dom/attributes';
|
|
2
2
|
export default function createArrivalHold(scope: HTMLElement): () => void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { VariantMotion } from '../../transition/variantMotion';
|
|
2
|
+
export declare const RESUME_BUDGET = 4;
|
|
3
|
+
export interface CancelResumeConfig {
|
|
4
|
+
element: HTMLElement;
|
|
5
|
+
expectedName: string;
|
|
6
|
+
motion: VariantMotion;
|
|
7
|
+
isLive: () => boolean;
|
|
8
|
+
budgetUsed: () => number;
|
|
9
|
+
spendBudget: () => void;
|
|
10
|
+
onTerminal: () => void;
|
|
11
|
+
writer?: symbol;
|
|
12
|
+
}
|
|
13
|
+
export declare const wireCancelResume: (config: CancelResumeConfig) => {
|
|
14
|
+
attach: () => void;
|
|
15
|
+
detach: () => void;
|
|
16
|
+
fullRestart: () => void;
|
|
17
|
+
};
|
|
@@ -30,6 +30,17 @@ export interface SwipeController {
|
|
|
30
30
|
pointerMove: (event: PointerEvent) => void;
|
|
31
31
|
pointerUp: (event: PointerEvent) => void;
|
|
32
32
|
pointerCancel: (event: PointerEvent) => void;
|
|
33
|
+
lostPointerCapture: (event: PointerEvent) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Abandon whatever gesture is in flight, with no pointer to close it.
|
|
36
|
+
*
|
|
37
|
+
* The binding calls this when the SCREEN goes away underneath one: an unmount,
|
|
38
|
+
* or a freeze (which detaches the listeners but keeps this controller, since
|
|
39
|
+
* it outlives the effects). Without it the gesture state has exactly one way
|
|
40
|
+
* out — a pointerup carrying the id that armed it — and if the browser never
|
|
41
|
+
* delivers that event, nothing ever does. See the note on `abandon` below.
|
|
42
|
+
*/
|
|
43
|
+
abandon: () => void;
|
|
33
44
|
shouldPreventTouch: () => boolean;
|
|
34
45
|
}
|
|
35
46
|
export default function createSwipeController(config: SwipeControllerConfig): SwipeController;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { TransitionEngine, TransitionEngineDeps } from './types';
|
|
2
|
-
|
|
2
|
+
import { resetDisplayProbeForTests } from '../../platform/displayProbe';
|
|
3
|
+
export { resetDisplayProbeForTests };
|
|
3
4
|
export default function createTransitionEngine(deps: TransitionEngineDeps): TransitionEngine;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export declare const readLandingSnapFlag: () => boolean;
|
|
2
1
|
export declare const readImageHoldFlag: () => "on" | "off" | null;
|
|
3
2
|
export declare const readSettleGateFlag: () => boolean;
|
|
4
|
-
export declare const readHandoffFlag: () => boolean;
|
|
5
3
|
export declare const readArrivalHoldFlag: () => boolean;
|
|
6
4
|
export declare const readDesktopReleaseFlipFlag: () => boolean;
|
|
7
5
|
export declare const readCreepHeadFlag: () => boolean;
|
|
@@ -10,14 +8,7 @@ export declare const readDesktopHeadFlag: () => boolean;
|
|
|
10
8
|
export declare const readPrerasterFlag: () => boolean;
|
|
11
9
|
export declare const readRestLayerPromotionFlag: () => boolean;
|
|
12
10
|
export declare const readImageOffloadOverride: () => "on" | "off" | null;
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const JITTER_BAND_MAX_DEVICE_PX = 4;
|
|
15
|
-
export declare const snapshotApplyOverride: () => "scrub" | null;
|
|
16
|
-
export declare const handoffOverride: () => "on" | null;
|
|
17
|
-
export declare const snapOverride: () => "always" | "off" | "gate" | "hybrid" | null;
|
|
18
|
-
export declare const jitterBandMaxDevicePx: () => number;
|
|
19
|
-
export declare const handoffMs: () => number;
|
|
20
|
-
export declare const resetSessionOverrideCachesForTests: () => void;
|
|
11
|
+
export declare const readBlinkGovernedOverride: () => "on" | "off" | null;
|
|
21
12
|
export declare const residentScreenLayers: () => boolean;
|
|
22
13
|
export declare const resetResidentLayersForTesting: () => void;
|
|
23
14
|
export declare const shallowFreeze: () => boolean;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What kind of thing a flag is — which decides how a report should read it.
|
|
3
|
+
*
|
|
4
|
+
* - `production-state`: written by the library itself (a learned ledger). Never
|
|
5
|
+
* set by hand; the KEY STRINGS are frozen, since users' devices carry
|
|
6
|
+
* persisted values.
|
|
7
|
+
* - `production-default-with-override`: the library computes a default and the
|
|
8
|
+
* key overrides it both ways, for field debugging.
|
|
9
|
+
* - `opt-in-diagnostic`: default OFF. A measurement instrument that ships so a
|
|
10
|
+
* device session can be probed without a custom build.
|
|
11
|
+
*/
|
|
12
|
+
export type DiagnosticFlagKind = "production-state" | "production-default-with-override" | "opt-in-diagnostic";
|
|
13
|
+
export interface DiagnosticFlag {
|
|
14
|
+
readonly key: string;
|
|
15
|
+
readonly storage: "session" | "local";
|
|
16
|
+
readonly kind: DiagnosticFlagKind;
|
|
17
|
+
/** Accepted values, for a report or a panel to offer. */
|
|
18
|
+
readonly values: string;
|
|
19
|
+
/** The default when the key is unset. */
|
|
20
|
+
readonly fallback: string;
|
|
21
|
+
readonly effect: string;
|
|
22
|
+
}
|
|
23
|
+
/** Every `flemo:*` key the library reads today. */
|
|
24
|
+
export declare const DIAGNOSTIC_FLAGS: readonly DiagnosticFlag[];
|
|
25
|
+
export interface RetiredDiagnosticFlag {
|
|
26
|
+
readonly key: string;
|
|
27
|
+
readonly storage: "session" | "local";
|
|
28
|
+
/** What it used to do, and when it stopped doing it. */
|
|
29
|
+
readonly retiredWith: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Keys the library once read and no longer does. Declared so a report can say
|
|
33
|
+
* "this is set, and it does nothing" — residue that is merely unknown reads as
|
|
34
|
+
* a lead worth chasing, and one such key once burned a multi-day investigation.
|
|
35
|
+
*
|
|
36
|
+
* Values persisted on users' devices are never read again.
|
|
37
|
+
*/
|
|
38
|
+
export declare const RETIRED_DIAGNOSTIC_FLAGS: readonly RetiredDiagnosticFlag[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { TransitionName } from '../../transition/typing';
|
|
2
|
+
export interface FlightHoldsDeps {
|
|
3
|
+
/**
|
|
4
|
+
* Land any pending deferred landing NOW. A navigation starting inside a
|
|
5
|
+
* still-pending window must not let that window's reveal punch into it.
|
|
6
|
+
*/
|
|
7
|
+
readonly landNow: () => void;
|
|
8
|
+
/** Defer a release to the frames past the COMPLETED flip. */
|
|
9
|
+
readonly scheduleLanding: (land: () => void) => void;
|
|
10
|
+
}
|
|
11
|
+
export interface FlightHoldsInput {
|
|
12
|
+
readonly isTransitional: boolean;
|
|
13
|
+
readonly isActive: boolean;
|
|
14
|
+
readonly status: string;
|
|
15
|
+
readonly transitionName: TransitionName;
|
|
16
|
+
readonly getScope: () => HTMLElement | null | undefined;
|
|
17
|
+
}
|
|
18
|
+
export interface FlightHolds {
|
|
19
|
+
/** Reconcile every hold with what this drive run says the screen is doing. */
|
|
20
|
+
readonly sync: (input: FlightHoldsInput) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare const createFlightHolds: (deps: FlightHoldsDeps) => FlightHolds;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as resolveTransition } from '../../transition/resolveTransition';
|
|
2
|
+
import { TransitionVariant } from '../../transition/typing';
|
|
3
|
+
export declare const collectScreenParts: (scope: HTMLElement) => HTMLElement[];
|
|
4
|
+
export declare const collectVariantParts: (scope: HTMLElement, variant: TransitionVariant) => HTMLElement[];
|
|
5
|
+
export declare const collectFlightParts: (scope: HTMLElement, status: string) => HTMLElement[];
|
|
6
|
+
export declare const collectUnheldOuterParts: (scope: HTMLElement, status: string) => HTMLElement[];
|
|
7
|
+
export declare const collectStampedOuterParts: (scope: HTMLElement) => HTMLElement[];
|
|
8
|
+
export declare const statusChoreographySpanMs: (scope: HTMLElement, transition: ReturnType<typeof resolveTransition>, status: string) => number;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Transition } from '../../transition/typing';
|
|
2
|
+
export interface FlightRouting {
|
|
3
|
+
/** This flight has motion to drive at all (not skipped, and it resolves). */
|
|
4
|
+
readonly hasDrivableMotion: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* The engine may perform CLOCK SURGERY on this flight — the first-frame
|
|
7
|
+
* hold, the flight-start anchor, stall re-anchoring. Authored
|
|
8
|
+
* `driver: "native"` pins only, and never on Blink.
|
|
9
|
+
*
|
|
10
|
+
* Every one of those mutates a running animation's timing (WAAPI pause/play,
|
|
11
|
+
* startTime shifts), and the 2026-08 iPhone falsification series established
|
|
12
|
+
* that on WebKit any such touch costs the accelerated out-of-process path or
|
|
13
|
+
* desyncs its re-sync. The default therefore runs the compiled animation
|
|
14
|
+
* UNTOUCHED and protects the opening by release scheduling instead. An author
|
|
15
|
+
* who pins "native" takes the main-thread-presentation trade knowingly.
|
|
16
|
+
*/
|
|
17
|
+
readonly nativeSurgeryAllowed: boolean;
|
|
18
|
+
/** Touch WebKit on the governed compiled tier. */
|
|
19
|
+
readonly touchGoverned: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Touch WebKit whose STATUS also takes the flat head: POP always, PUSH once
|
|
22
|
+
* the settle gate has moved the mount weight out of the release.
|
|
23
|
+
*/
|
|
24
|
+
readonly forceCompiled: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* This flight gets the GOVERNED HEAD KIT — a flat opening segment baked into
|
|
27
|
+
* the keyframes, so a commit that ages the wall clock eats the head instead
|
|
28
|
+
* of the curve's start.
|
|
29
|
+
*/
|
|
30
|
+
readonly governedHead: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Desktop macOS Safari's own flat head: the same compiled clock presented
|
|
33
|
+
* from the main thread, with its own lengths and its own gate attribute.
|
|
34
|
+
* Arming it retires the birth anchor — two interventions on one clock is the
|
|
35
|
+
* pairing the touch tier was built to avoid.
|
|
36
|
+
*/
|
|
37
|
+
readonly desktopHead: boolean;
|
|
38
|
+
/** The head's length for this status, in milliseconds. 0 when there is none. */
|
|
39
|
+
readonly birthHoldMs: number;
|
|
40
|
+
/**
|
|
41
|
+
* A SLIDE on the governed touch tier. It stands the wall-clock accelerators
|
|
42
|
+
* down for the same reason `forceCompiled` does, and covers one case that
|
|
43
|
+
* predicate does not: a touch-WebKit PUSH with the settle gate turned off.
|
|
44
|
+
*
|
|
45
|
+
* Named `governedSoftenActive` until 2026-08, after the front-softening
|
|
46
|
+
* treatment it shipped beside. That treatment is gone; this outlived it
|
|
47
|
+
* because what it guards is the clock, not the curve.
|
|
48
|
+
*/
|
|
49
|
+
readonly governedSlide: boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Keep a frame source alive for the flight. Compiled Blink only: a
|
|
52
|
+
* compositor-driven flight leaves the main thread idle, and Chrome then
|
|
53
|
+
* paces its macOS ProMotion presentation unevenly — video-measured as
|
|
54
|
+
* drops and double-steps the eye reads as trembling.
|
|
55
|
+
*/
|
|
56
|
+
readonly framePacingKeepalive: boolean;
|
|
57
|
+
/** Arm the creep head beside the governed one (`flemo:creep`). */
|
|
58
|
+
readonly creepHead: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface FlightRoutingInput {
|
|
61
|
+
readonly status: string;
|
|
62
|
+
readonly transition: Transition;
|
|
63
|
+
/** The scope carries the skip marker for this flight. */
|
|
64
|
+
readonly skipAnimation: boolean;
|
|
65
|
+
/** The active variant resolves a motion. */
|
|
66
|
+
readonly hasActiveMotion: boolean;
|
|
67
|
+
/** The active variant has an authored animation at all. */
|
|
68
|
+
readonly hasAnimation: boolean;
|
|
69
|
+
}
|
|
70
|
+
export declare const resolveFlightRouting: (input: FlightRoutingInput) => FlightRouting;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { GPU_PREWARM_ATTR } from '../../dom/attributes';
|
|
2
2
|
export declare const PREWARM_SPAN_MS = 450;
|
|
3
3
|
export declare const resetGpuPipelinePrewarmForTesting: () => void;
|
|
4
4
|
export default function ensureGpuPipelinePrewarm(): () => void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { VariantMotion } from '../../transition/variantMotion';
|
|
2
|
+
import { PerceptualBox } from './perceptualSpan';
|
|
3
|
+
export declare const governedEasingForMotion: (motion: VariantMotion, box: PerceptualBox, devicePixelRatio: number, frameIntervalMs: number) => string | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { default as resolveTransition } from '../../transition/resolveTransition';
|
|
2
|
+
import { TransitionVariant } from '../../transition/typing';
|
|
3
|
+
export declare const holdParticipantLayers: (elements: {
|
|
4
|
+
scope: HTMLElement;
|
|
5
|
+
decorator?: HTMLElement | null;
|
|
6
|
+
bars?: (HTMLElement | null | undefined)[];
|
|
7
|
+
}, transition: ReturnType<typeof resolveTransition>, variant: TransitionVariant, owner: symbol) => void;
|
|
8
|
+
export declare const releaseParticipantLayers: (elements: {
|
|
9
|
+
scope?: HTMLElement | null;
|
|
10
|
+
decorator?: HTMLElement | null;
|
|
11
|
+
bars?: (HTMLElement | null | undefined)[];
|
|
12
|
+
}, owner: symbol) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NavigateStatus } from '../../navigate/store';
|
|
2
2
|
import { TransitionName } from '../../transition/typing';
|
|
3
|
-
export
|
|
3
|
+
export { SKIP_ANIMATION_ATTR } from '../../dom/attributes';
|
|
4
4
|
export interface TransitionEngineDeps {
|
|
5
5
|
getTransitionTaskId: () => string | null;
|
|
6
6
|
setDragStatus: (status: "IDLE" | "PENDING") => void;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** Shared prefix. Every attribute below starts with it. */
|
|
2
|
+
export declare const FLEMO_ATTR_PREFIX = "data-flemo-";
|
|
3
|
+
/** Marks a screen scope. Presence only — the value carries nothing. */
|
|
4
|
+
export declare const SCREEN_ATTR = "data-flemo-screen";
|
|
5
|
+
/** The navigation status this screen is rendering: a `NavigateStatus` value. */
|
|
6
|
+
export declare const STATUS_ATTR = "data-flemo-status";
|
|
7
|
+
/** `"true"` on the screen the navigation is moving TO, `"false"` on its partner. */
|
|
8
|
+
export declare const ACTIVE_ATTR = "data-flemo-active";
|
|
9
|
+
/** The resolved transition name, so the compiled rules select the right keyframes. */
|
|
10
|
+
export declare const TRANSITION_ATTR = "data-flemo-transition";
|
|
11
|
+
/**
|
|
12
|
+
* The owning Router's identity. The engine scopes a flight's choreography
|
|
13
|
+
* participants by this marker rather than by DOM structure: each screen sits in
|
|
14
|
+
* its own wrapper, a root Router renders no container, and two independent
|
|
15
|
+
* Routers may share a DOM parent — so structure cannot draw the line.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ROUTER_ATTR = "data-flemo-router";
|
|
18
|
+
/**
|
|
19
|
+
* `"true"` suppresses this screen's motion for one flight (an interrupted or
|
|
20
|
+
* restored navigation that must land without animating).
|
|
21
|
+
*/
|
|
22
|
+
export declare const SKIP_ANIMATION_ATTR = "data-flemo-skip-animation";
|
|
23
|
+
/** Marks a shared bar element. */
|
|
24
|
+
export declare const BAR_ATTR = "data-flemo-bar";
|
|
25
|
+
/** The bar's own active flag (see ACTIVE_ATTR). */
|
|
26
|
+
export declare const BAR_ACTIVE_ATTR = "data-flemo-bar-active";
|
|
27
|
+
/** The bar's own status (see STATUS_ATTR). */
|
|
28
|
+
export declare const BAR_STATUS_ATTR = "data-flemo-bar-status";
|
|
29
|
+
/**
|
|
30
|
+
* `"true"` while the bar RIDES its screen's keyframes — the compiled rule pairs
|
|
31
|
+
* the bar selector with the screen rule, so the pair moves in lockstep.
|
|
32
|
+
*/
|
|
33
|
+
export declare const BAR_RIDING_ATTR = "data-flemo-bar-riding";
|
|
34
|
+
/** The consumer-supplied shared-bar id, used to match a bar across screens. */
|
|
35
|
+
export declare const BAR_ID_ATTR = "data-flemo-bar-id";
|
|
36
|
+
/** The id's `typeof`, so `1` and `"1"` never match as the same bar. */
|
|
37
|
+
export declare const BAR_ID_TYPE_ATTR = "data-flemo-bar-id-type";
|
|
38
|
+
/** The transition name driving this bar. */
|
|
39
|
+
export declare const BAR_TRANSITION_ATTR = "data-flemo-bar-transition";
|
|
40
|
+
/** The layout spacer that reserves a shared bar's height in the screen flow. */
|
|
41
|
+
export declare const BAR_SPACER_ATTR = "data-flemo-bar-spacer";
|
|
42
|
+
/** Marks the decorator element (the dim/overlay layer between screens). */
|
|
43
|
+
export declare const DECORATOR_ATTR = "data-flemo-decorator";
|
|
44
|
+
/** The decorator definition's name, for its own compiled rules. */
|
|
45
|
+
export declare const DECORATOR_NAME_ATTR = "data-flemo-decorator-name";
|
|
46
|
+
/**
|
|
47
|
+
* A `<Part>`'s registered part-transition name. Parts self-carry their screen's
|
|
48
|
+
* status/active (STATUS_ATTR/ACTIVE_ATTR) so the compiled part selectors and
|
|
49
|
+
* the engine's participant scan can both find them.
|
|
50
|
+
*/
|
|
51
|
+
export declare const PART_NAME_ATTR = "data-flemo-part-name";
|
|
52
|
+
/**
|
|
53
|
+
* The animation hold. `"true"` pauses this element's compiled animation (and
|
|
54
|
+
* its descendant parts) at the from-pose; `"park"` parks it at its
|
|
55
|
+
* destination instead; `"false"` releases. The release flip is the moment a
|
|
56
|
+
* flight's clock starts.
|
|
57
|
+
*/
|
|
58
|
+
export declare const ANIM_HOLD_ATTR = "data-flemo-anim-hold";
|
|
59
|
+
/**
|
|
60
|
+
* The values ANIM_HOLD_ATTR takes. These are as much of the contract as the
|
|
61
|
+
* attribute name: the binding writes them, the compiled stylesheet generates
|
|
62
|
+
* one rule per parked form, and the engine's release watch compares against
|
|
63
|
+
* RELEASED. All four "held" forms pause the animation; they differ in where
|
|
64
|
+
* the held element sits while it waits.
|
|
65
|
+
*/
|
|
66
|
+
export declare const ANIM_HOLD: {
|
|
67
|
+
/** Paused at the keyframe's from-pose. */
|
|
68
|
+
readonly HELD: "true";
|
|
69
|
+
/** Released — the flight's clock starts on this write. */
|
|
70
|
+
readonly RELEASED: "false";
|
|
71
|
+
/** Pre-positioned at its DESTINATION, under an opaque cover. */
|
|
72
|
+
readonly PARK: "park";
|
|
73
|
+
/** The push-side mirror: the entering screen parked BELOW its cover. */
|
|
74
|
+
readonly PARK_UNDER: "park-under";
|
|
75
|
+
/** The promoted variant of PARK_UNDER, kept above so its raster survives. */
|
|
76
|
+
readonly PARK_OVER: "park-over";
|
|
77
|
+
};
|
|
78
|
+
/** The values the compiled hold rule must pause on. */
|
|
79
|
+
export declare const ANIM_HOLD_PAUSED_VALUES: readonly ["true", "park", "park-under", "park-over"];
|
|
80
|
+
/** Marks content parked by the in-flight arrival hold, pending its landing. */
|
|
81
|
+
export declare const HELD_ARRIVAL_ATTR = "data-flemo-held-arrival";
|
|
82
|
+
/** Marks an `<img>` whose reveal is held to the flight's rest. */
|
|
83
|
+
export declare const IMAGE_HOLD_ATTR = "data-flemo-img-hold";
|
|
84
|
+
/** The governed (touch WebKit) head kit. */
|
|
85
|
+
export declare const GOVERNED_ATTR = "data-flemo-governed";
|
|
86
|
+
/** The creep head: the head's end keyframe carries a hair of motion. */
|
|
87
|
+
export declare const CREEP_ATTR = "data-flemo-creep";
|
|
88
|
+
/** The desktop macOS Safari flat head, with its own lengths. */
|
|
89
|
+
export declare const DESK_HEAD_ATTR = "data-flemo-desk-head";
|
|
90
|
+
/** The compositor warm-up element. */
|
|
91
|
+
export declare const WARM_ATTR = "data-flemo-warm";
|
|
92
|
+
/** The warm-up's cadence video, when the desktop profile uses one. */
|
|
93
|
+
export declare const WARM_VIDEO_ATTR = "data-flemo-warm-video";
|
|
94
|
+
/** The one-shot GPU pipeline prewarm element. */
|
|
95
|
+
export declare const GPU_PREWARM_ATTR = "data-flemo-gpu-prewarm";
|
|
96
|
+
/**
|
|
97
|
+
* An offloaded `<img>`'s AUTHORED source, kept while `src` points at the
|
|
98
|
+
* decoded-to-scale replacement.
|
|
99
|
+
*/
|
|
100
|
+
export declare const OFFLOADED_SRC_ATTR = "data-flemo-image-src";
|
|
101
|
+
/**
|
|
102
|
+
* The devtools panel's shadow host. Owned by @flemo/devtools, reserved here so
|
|
103
|
+
* the name cannot be reused and so the engine's own scans can skip it.
|
|
104
|
+
*/
|
|
105
|
+
export declare const DEVTOOLS_PANEL_ATTR = "data-flemo-devtools-panel";
|
|
106
|
+
/** `[data-flemo-screen]` — presence selector for one attribute. */
|
|
107
|
+
export declare const attrSelector: (attribute: string) => string;
|
|
108
|
+
/** `[data-flemo-status="PUSHING"]` — value selector for one attribute. */
|
|
109
|
+
export declare const attrValueSelector: (attribute: string, value: string) => string;
|
|
110
|
+
/**
|
|
111
|
+
* Every attribute this library writes. Exported so a consumer, an e2e suite or
|
|
112
|
+
* a devtools build can assert against the shipped set instead of a hand-kept
|
|
113
|
+
* copy — the drift this module exists to end.
|
|
114
|
+
*/
|
|
115
|
+
export declare const FLEMO_ATTRIBUTES: readonly ["data-flemo-screen", "data-flemo-status", "data-flemo-active", "data-flemo-transition", "data-flemo-router", "data-flemo-skip-animation", "data-flemo-bar", "data-flemo-bar-active", "data-flemo-bar-status", "data-flemo-bar-riding", "data-flemo-bar-id", "data-flemo-bar-id-type", "data-flemo-bar-transition", "data-flemo-bar-spacer", "data-flemo-decorator", "data-flemo-decorator-name", "data-flemo-part-name", "data-flemo-anim-hold", "data-flemo-held-arrival", "data-flemo-img-hold", "data-flemo-governed", "data-flemo-creep", "data-flemo-desk-head", "data-flemo-warm", "data-flemo-warm-video", "data-flemo-gpu-prewarm", "data-flemo-image-src", "data-flemo-devtools-panel"];
|
package/dist/index.d.ts
CHANGED
|
@@ -36,15 +36,19 @@ export { default as registerTransitionDefinitions } from './transition/registerT
|
|
|
36
36
|
export { default as enteringInitialStyle, type EnteringInitialStyleInput } from './transition/enteringInitialStyle';
|
|
37
37
|
export { default as animateInline, clearInlineAnimation } from './transition/animateInline';
|
|
38
38
|
export { default as createTransitionEngine } from './core/engine/createTransitionEngine';
|
|
39
|
-
export { governedCompiledActive } from './
|
|
40
|
-
export {
|
|
39
|
+
export { governedCompiledActive } from './platform/governedCompiled';
|
|
40
|
+
export { startFlemoRuntime } from './runtime/flemoRuntime';
|
|
41
|
+
export { resolvePlatformProfile, restLayerPromotionEnabled, type PlatformProfile, type PlatformProfileInput } from './platform/profile';
|
|
42
|
+
export { FLEMO_ATTR_PREFIX, FLEMO_ATTRIBUTES, attrSelector, attrValueSelector, ANIM_HOLD, ANIM_HOLD_ATTR, ANIM_HOLD_PAUSED_VALUES, ACTIVE_ATTR, BAR_ACTIVE_ATTR, BAR_ATTR, BAR_ID_ATTR, BAR_ID_TYPE_ATTR, BAR_RIDING_ATTR, BAR_SPACER_ATTR, BAR_STATUS_ATTR, BAR_TRANSITION_ATTR, CREEP_ATTR, DECORATOR_ATTR, DECORATOR_NAME_ATTR, DESK_HEAD_ATTR, DEVTOOLS_PANEL_ATTR, GOVERNED_ATTR, GPU_PREWARM_ATTR, HELD_ARRIVAL_ATTR, IMAGE_HOLD_ATTR, PART_NAME_ATTR, ROUTER_ATTR, SCREEN_ATTR, STATUS_ATTR, TRANSITION_ATTR, WARM_ATTR, WARM_VIDEO_ATTR } from './dom/attributes';
|
|
43
|
+
export { DIAGNOSTIC_FLAGS, RETIRED_DIAGNOSTIC_FLAGS, type DiagnosticFlag, type DiagnosticFlagKind, type RetiredDiagnosticFlag } from './core/engine/diagnosticRegistry';
|
|
44
|
+
export { TRANSITIONAL_STATUS_VALUES } from './navigate/store';
|
|
41
45
|
export { SKIP_ANIMATION_ATTR, type TransitionEngine, type TransitionEngineDeps, type ScreenLifecycleInput } from './core/engine/types';
|
|
42
46
|
export { default as createSwipeController } from './core/engine/createSwipeController';
|
|
43
47
|
export { type SwipeController, type SwipeControllerConfig, type SwipeControllerElements, type SharedBarPresenceLike } from './core/engine/createSwipeController';
|
|
44
48
|
export { default as computeBarRiding, sharedBarsMatch, type BarRidingInput } from './screen/computeBarRiding';
|
|
45
49
|
export { animHoldKey, scheduleAnimHoldRelease, createAnimHoldCoordinator, eagerlyDecodeImages, ANIM_HOLD_RELEASE_BACKSTOP_MS, type AnimHoldInput, type AnimHoldCoordinator } from './screen/animStartAnchor';
|
|
46
|
-
export { detectBlinkEngine, isDesktopBlink, isLegacyAndroidBlink } from './
|
|
47
|
-
export {
|
|
50
|
+
export { detectBlinkEngine, isDesktopBlink, isLegacyAndroidBlink } from './platform/engineProbes';
|
|
51
|
+
export { steadySixtyDesktopProfile } from './platform/steadySixtyCadence';
|
|
48
52
|
export { swipeSettleSeconds, MIN_SETTLE_SECONDS, type SwipeSettleInput } from './transition/swipeSettle';
|
|
49
53
|
export { default as observeBarHeight } from './screen/observeBarHeight';
|
|
50
54
|
export { default as observeViewportScrollHeight } from './screen/observeViewportScrollHeight';
|