@flemo/core 1.23.0 → 1.24.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.
Files changed (34) hide show
  1. package/dist/core/engine/__tests__/createTransitionEngine.steadySixty.test.d.ts +1 -0
  2. package/dist/core/engine/__tests__/diagnosticFlags.test.d.ts +1 -0
  3. package/dist/core/engine/__tests__/documentedDefaults.test.d.ts +1 -0
  4. package/dist/core/engine/__tests__/flightWindow.test.d.ts +1 -0
  5. package/dist/core/engine/__tests__/imageRevealHold.test.d.ts +1 -0
  6. package/dist/core/engine/__tests__/lowPowerCadence.test.d.ts +1 -0
  7. package/dist/core/engine/__tests__/steadySixtyCadence.test.d.ts +1 -0
  8. package/dist/core/engine/compositorWarmUp.d.ts +1 -0
  9. package/dist/core/engine/createSwipeController.d.ts +7 -4
  10. package/dist/core/engine/createTransitionEngine.d.ts +1 -0
  11. package/dist/core/engine/diagnosticFlags.d.ts +19 -0
  12. package/dist/core/engine/driverPolicy.d.ts +2 -13
  13. package/dist/core/engine/flightWindow.d.ts +5 -0
  14. package/dist/core/engine/imageRevealHold.d.ts +2 -0
  15. package/dist/core/engine/landingPixelSnap.d.ts +5 -0
  16. package/dist/core/engine/layerSettleHold.d.ts +1 -1
  17. package/dist/core/engine/lowPowerCadence.d.ts +6 -0
  18. package/dist/core/engine/nativeStallAnchor.d.ts +2 -1
  19. package/dist/core/engine/responseHold.d.ts +1 -0
  20. package/dist/core/engine/steadySixtyCadence.d.ts +5 -0
  21. package/dist/core/engine/transitionPlayer.d.ts +10 -1
  22. package/dist/index.d.ts +7 -4
  23. package/dist/index.mjs +1828 -1291
  24. package/dist/screen/animStartAnchor.d.ts +1 -0
  25. package/dist/screen/computeBarRiding.d.ts +9 -1
  26. package/dist/screen/computeScreenFreeze.d.ts +1 -1
  27. package/dist/screen/store.d.ts +12 -1
  28. package/dist/transition/__tests__/resolveTransition.test.d.ts +1 -0
  29. package/dist/transition/compileTransitionStyles.d.ts +2 -0
  30. package/package.json +3 -3
  31. package/dist/transition/__tests__/coverageBranches.test.d.ts +0 -6
  32. /package/dist/core/{__tests__/taskManagerBranches.test.d.ts → engine/__tests__/createTransitionEngine.flightImageHold.test.d.ts} +0 -0
  33. /package/dist/{history/__tests__/historyDriverBranches.test.d.ts → core/engine/__tests__/createTransitionEngine.governedHead.test.d.ts} +0 -0
  34. /package/dist/{transition/__tests__/swipe.test.d.ts → core/engine/__tests__/createTransitionEngine.outerPartHold.test.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1,3 @@
1
1
  export declare const WARM_ATTR = "data-flemo-warm";
2
+ export declare const resetCompositorWarmForTesting: () => void;
2
3
  export default function holdCompositorWarm(): () => void;
@@ -1,9 +1,8 @@
1
1
  import { Transition } from '../../transition/typing';
2
+ import { SharedBarPresenceLike } from '../../screen/computeBarRiding';
3
+ import { SharedBarId, SharedBarsMetadata } from '../../screen/store';
2
4
  import { Decorator } from '../../transition/decorator/typing';
3
- export interface SharedBarPresenceLike {
4
- topBar: boolean;
5
- bottomBar: boolean;
6
- }
5
+ export type { SharedBarPresenceLike } from '../../screen/computeBarRiding';
7
6
  export interface SwipeControllerElements {
8
7
  scope: HTMLElement | null;
9
8
  screenContainer: HTMLElement | null;
@@ -17,9 +16,12 @@ export interface SwipeControllerConfig {
17
16
  getElements: () => SwipeControllerElements;
18
17
  hasSharedTopBar: () => boolean;
19
18
  hasSharedBottomBar: () => boolean;
19
+ getSharedTopBarId?: () => SharedBarId | undefined;
20
+ getSharedBottomBarId?: () => SharedBarId | undefined;
20
21
  getViewportScrollHeight: () => number;
21
22
  isReadyForDrag: () => boolean;
22
23
  getPartnerBars: () => SharedBarPresenceLike | undefined;
24
+ getPartnerBarMetadata?: () => SharedBarsMetadata | undefined;
23
25
  setDragStatus: (status: "IDLE" | "PENDING") => void;
24
26
  back: () => void;
25
27
  }
@@ -27,6 +29,7 @@ export interface SwipeController {
27
29
  pointerDown: (event: PointerEvent) => void;
28
30
  pointerMove: (event: PointerEvent) => void;
29
31
  pointerUp: (event: PointerEvent) => void;
32
+ pointerCancel: (event: PointerEvent) => void;
30
33
  shouldPreventTouch: () => boolean;
31
34
  }
32
35
  export default function createSwipeController(config: SwipeControllerConfig): SwipeController;
@@ -1,2 +1,3 @@
1
1
  import { TransitionEngine, TransitionEngineDeps } from './types';
2
+ export declare const resetDisplayProbeForTests: () => void;
2
3
  export default function createTransitionEngine(deps: TransitionEngineDeps): TransitionEngine;
@@ -0,0 +1,19 @@
1
+ export declare const readLandingSnapFlag: () => boolean;
2
+ export declare const readImageHoldFlag: () => "on" | "off" | null;
3
+ export declare const readSettleGateFlag: () => boolean;
4
+ export declare const readHandoffFlag: () => boolean;
5
+ export declare const readArrivalHoldFlag: () => boolean;
6
+ export declare const readPrerasterFlag: () => boolean;
7
+ export declare const readImageOffloadOverride: () => "on" | "off" | null;
8
+ export declare const HANDOFF_MS_DEFAULT: number;
9
+ export declare const JITTER_BAND_MAX_DEVICE_PX = 4;
10
+ export declare const snapshotApplyOverride: () => "scrub" | null;
11
+ export declare const handoffOverride: () => "on" | null;
12
+ export declare const snapOverride: () => "always" | "off" | "gate" | "hybrid" | null;
13
+ export declare const jitterBandMaxDevicePx: () => number;
14
+ export declare const handoffMs: () => number;
15
+ export declare const resetSessionOverrideCachesForTests: () => void;
16
+ export declare const residentScreenLayers: () => boolean;
17
+ export declare const resetResidentLayersForTesting: () => void;
18
+ export declare const shallowFreeze: () => boolean;
19
+ export declare const resetShallowFreezeForTesting: () => void;
@@ -1,21 +1,10 @@
1
- export interface DriverPolicyStorage {
2
- read: () => string | null;
3
- write: (value: string) => void;
4
- }
5
1
  export declare const FORCE_PIN_TTL_MS: number;
6
2
  export interface DriverPolicy {
7
3
  playerAllowed: () => boolean;
8
4
  pinnedDriver: () => "css" | "raf" | null;
9
- beginRun: () => void;
10
- reportGap: (gapMs: number) => void;
11
- endRun: (frameIntervalMs?: number) => void;
12
- stats: () => {
13
- runGaps: number[];
14
- strikes: number;
15
- demoted: boolean;
16
- };
17
5
  }
18
6
  export declare const detectBlinkEngine: () => boolean;
19
- export declare const createDriverPolicy: (storage?: DriverPolicyStorage, playerByDefault?: boolean, demotable?: boolean) => DriverPolicy;
7
+ export declare const isLegacyAndroidBlink: () => boolean;
8
+ export declare const createDriverPolicy: (playerByDefault?: boolean) => DriverPolicy;
20
9
  declare const driverPolicy: DriverPolicy;
21
10
  export default driverPolicy;
@@ -0,0 +1,5 @@
1
+ export declare function beginFlightWindow(): () => void;
2
+ export declare const flightWindowActive: () => boolean;
3
+ export declare function onFlightWindowStart(callback: () => void): () => void;
4
+ export declare function onFlightWindowIdle(callback: () => void): void;
5
+ export declare const resetFlightWindowForTests: () => void;
@@ -0,0 +1,2 @@
1
+ export declare function beginImageRevealHold(scope: Element | null, backstopMs: number, unpaintedOnly?: boolean): () => void;
2
+ export default beginImageRevealHold;
@@ -3,3 +3,8 @@ import { PerceptualBox } from './perceptualSpan';
3
3
  export declare const SNAP_VELOCITY_DEVICE_PX_PER_FRAME = 40;
4
4
  export declare const SNAP_BAND_MAX_DEVICE_PX = 480;
5
5
  export declare const snappedEasingForMotion: (motion: VariantMotion, box: PerceptualBox, devicePixelRatio: number) => string | null;
6
+ export declare const governedEasingForMotion: (motion: VariantMotion, box: PerceptualBox, devicePixelRatio: number, frameIntervalMs: number) => string | null;
7
+ export declare const governedBezierForMotion: (motion: VariantMotion | null, box: PerceptualBox, devicePixelRatio: number, frameIntervalMs: number) => {
8
+ easing: string;
9
+ durationMs: number;
10
+ } | null;
@@ -1,5 +1,5 @@
1
1
  import { Transition } from '../../transition/typing';
2
+ export { resetResidentLayersForTesting } from './diagnosticFlags';
2
3
  export declare const LAYER_SETTLE_MS = 300;
3
- export declare const resetResidentLayersForTesting: () => void;
4
4
  export declare const holdScopeLayer: (scope: HTMLElement, transitionLike: Pick<Transition, "initial" | "variants">, containment?: boolean, owner?: symbol) => void;
5
5
  export declare const releaseScopeLayerAfterSettle: (scope: HTMLElement, owner?: symbol) => void;
@@ -0,0 +1,6 @@
1
+ export declare const lowPowerCadenceActive: () => boolean;
2
+ export declare const governedCompiledActive: () => boolean;
3
+ export declare const lowPowerFrameIntervalMs: () => number | null;
4
+ export declare const resetLowPowerCadenceForTests: () => void;
5
+ export declare const probeLowPowerCadence: (attempt?: number) => void;
6
+ export declare const armLowPowerCadenceLifecycle: () => void;
@@ -1,4 +1,5 @@
1
1
  export declare const NATIVE_STALL_STEP_MS: number;
2
2
  export declare function holdNativeClocksToFirstFrame(scope: HTMLElement, elements: () => (HTMLElement | null | undefined)[], onHeld?: () => void): () => void;
3
- export declare function anchorNativeFlightStart(elements: () => (HTMLElement | null | undefined)[], onShift?: (excessMs: number) => void): () => void;
3
+ export declare function anchorNativeFlightStart(elements: () => (HTMLElement | null | undefined)[], onShift?: (excessMs: number) => void, holdFirstFrame?: boolean, firstTickOnly?: boolean): () => void;
4
4
  export declare function watchNativeStalls(elements: () => (HTMLElement | null | undefined)[], onStall?: (excessMs: number) => void): () => void;
5
+ export declare function armFlightStartAnchorAtRelease(scope: HTMLElement, elements: () => (HTMLElement | null | undefined)[], onShift?: (excessMs: number) => void, holdFirstFrame?: boolean, firstTickOnly?: boolean): () => void;
@@ -1,3 +1,4 @@
1
1
  export declare function beginResponseHold(backstopMs?: number): () => void;
2
2
  export declare const heldResponseCount: () => number;
3
3
  export declare const responseHoldDepth: () => number;
4
+ export declare const reinstallResponseHoldForTests: () => void;
@@ -0,0 +1,5 @@
1
+ export declare const HIGH_REFRESH_MAX_INTERVAL_MS = 12;
2
+ export declare const reportInFlightCadence: (rawMedianMs: number, rawMaxMs?: number) => void;
3
+ export declare const steadySixtyVerified: () => boolean;
4
+ export declare const steadySixtyPlayerEligible: () => boolean;
5
+ export declare const resetSteadySixtyForTests: () => void;
@@ -1,10 +1,18 @@
1
1
  import { VariantMotion } from '../../transition/variantMotion';
2
+ export { resetSessionOverrideCachesForTests } from './diagnosticFlags';
2
3
  export declare const isPlayerDrivable: (motion: VariantMotion) => boolean;
3
4
  export interface SnapMemory {
4
5
  x: number | null;
5
6
  y: number | null;
7
+ landingX?: number | null;
8
+ landingY?: number | null;
9
+ writtenX?: number | null;
10
+ writtenY?: number | null;
11
+ pendingLanding?: boolean;
12
+ glide?: boolean;
6
13
  }
7
- export declare const resetSessionOverrideCachesForTests: () => void;
14
+ export declare const learnedFrameIntervalMs: () => number;
15
+ export declare const reportDisplayIntervalMs: (intervalMs: number) => void;
8
16
  export interface PlayerScheduler {
9
17
  request: (callback: (time: number) => void) => number;
10
18
  cancel: (handle: number) => void;
@@ -15,6 +23,7 @@ export interface TrackInput {
15
23
  motion: VariantMotion;
16
24
  role: "active" | "passive";
17
25
  onComplete?: () => void;
26
+ status?: string;
18
27
  }
19
28
  export interface TransitionPlayerRegistry {
20
29
  join: (taskId: string, input: TrackInput) => (() => void) | null;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { default as TaskManger } from './core/TaskManger';
1
+ export { default as TaskManger, default as TaskManager } from './core/TaskManger';
2
2
  export { default as createHistoryStore, type History, type HistoryStore, type HistoryStoreApi } from './history/store';
3
3
  export { default as seedInitialHistory } from './history/seedInitialHistory';
4
4
  export { default as ensureWindowHistoryState } from './history/ensureWindowHistoryState';
@@ -11,7 +11,7 @@ export { markSelfInducedPop, consumeSelfInducedPop, createSelfPopGuard, type Sel
11
11
  export { default as createNavigationController, type NavigationControllerDeps, type DistanceOptions, type NavigateOptions, type PopOptions } from './navigate/createNavigationController';
12
12
  export { default as createStepController, readStepParams, appendParamsQuery, subscribeStepParamsRestore, type StepControllerDeps } from './navigate/createStepController';
13
13
  export { default as createRouterScope, type FlemoStores, type CreateRouterScopeInput } from './core/createRouterScope';
14
- export { default as createScreenStore, type ScreenStore, type ScreenStoreApi, type SharedBarPresence, type ScreenSurface } from './screen/store';
14
+ export { default as createScreenStore, type ScreenStore, type ScreenStoreApi, type SharedBarPresence, type SharedBarId, type SharedBarMetadata, type SharedBarsMetadata, type ScreenSurface } from './screen/store';
15
15
  export { default as createScreenSelector, type ScreenSelection } from './screen/createScreenSelector';
16
16
  export { default as computeScreenFreeze, computeScreenFreezeMode, type ScreenFreezeInput, type ScreenFreezeMode } from './screen/computeScreenFreeze';
17
17
  export { default as createTransition } from './transition/createTransition';
@@ -36,12 +36,15 @@ 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 { lowPowerCadenceActive, governedCompiledActive } from './core/engine/lowPowerCadence';
40
+ export { readSettleGateFlag, readPrerasterFlag, readImageOffloadOverride } from './core/engine/diagnosticFlags';
39
41
  export { SKIP_ANIMATION_ATTR, type TransitionEngine, type TransitionEngineDeps, type ScreenLifecycleInput } from './core/engine/types';
40
42
  export { default as createSwipeController } from './core/engine/createSwipeController';
41
43
  export { type SwipeController, type SwipeControllerConfig, type SwipeControllerElements, type SharedBarPresenceLike } from './core/engine/createSwipeController';
42
- export { default as computeBarRiding, type BarRidingInput } from './screen/computeBarRiding';
44
+ export { default as computeBarRiding, sharedBarsMatch, type BarRidingInput } from './screen/computeBarRiding';
43
45
  export { animHoldKey, scheduleAnimHoldRelease, createAnimHoldCoordinator, eagerlyDecodeImages, ANIM_HOLD_RELEASE_BACKSTOP_MS, type AnimHoldInput, type AnimHoldCoordinator } from './screen/animStartAnchor';
44
- export { detectBlinkEngine } from './core/engine/driverPolicy';
46
+ export { detectBlinkEngine, isLegacyAndroidBlink } from './core/engine/driverPolicy';
47
+ export { steadySixtyPlayerEligible } from './core/engine/steadySixtyCadence';
45
48
  export { default as observeBarHeight } from './screen/observeBarHeight';
46
49
  export { default as observeViewportScrollHeight } from './screen/observeViewportScrollHeight';
47
50
  export { default as holdCompositorWarm } from './core/engine/compositorWarmUp';