@flemo/core 2.2.2 → 2.3.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.
@@ -94,7 +94,6 @@ export interface MorphSnapshot {
94
94
  */
95
95
  leadOffset: number | null;
96
96
  }
97
- export declare const rectCentre: (rect: MorphRect) => PosePoint;
98
97
  /**
99
98
  * Is a box of this height a single line of type?
100
99
  *
@@ -13,7 +13,6 @@ export interface PaintChannel {
13
13
  */
14
14
  normalize?: (value: string) => string;
15
15
  }
16
- export declare const PAINT_CHANNELS: readonly PaintChannel[];
17
16
  type Styles = Record<string, string | undefined> | null | undefined;
18
17
  /** Both ends' values for every channel, keyed by the property a keyframe wants. */
19
18
  export declare const capturePaint: (styles: Styles) => Record<string, string>;
@@ -49,7 +49,6 @@ export declare const PINNED_BOX: string;
49
49
  export declare const PINNED_BOX_HEIGHT: string;
50
50
  /** One end of a pinned box, as the keyframe declarations that drive it. */
51
51
  export declare const pinnedBoxDecls: (width: number, height: number, indent?: string) => string;
52
- export declare const RULER: number;
53
52
  export declare const onRuler: (value: number) => number;
54
53
  export declare const pinnedBoxDeclsOnRuler: (width: number, height: number, indent?: string) => string;
55
54
  /** The `letter-spacing` an element wears while its tracking is corrected. */
@@ -1,4 +1,3 @@
1
- export declare const HIGH_REFRESH_MAX_INTERVAL_MS = 12;
2
1
  export declare const reportInFlightCadence: (rawMedianMs: number, rawMaxMs?: number) => void;
3
2
  export declare const steadySixtyVerified: () => boolean;
4
3
  export declare const steadySixtyDesktopProfile: () => boolean;
@@ -6,8 +6,6 @@ export interface AnimHoldInput {
6
6
  }
7
7
  export declare function animHoldKey(input: AnimHoldInput): string | null;
8
8
  export declare const ANIM_HOLD_RELEASE_BACKSTOP_MS = 300;
9
- export declare const ANIM_HOLD_DECODE_CAP_MS = 150;
10
- export declare function collectDecodableImages(scope: HTMLElement): HTMLImageElement[];
11
9
  export declare function eagerlyDecodeImages(scope: HTMLElement | null): void;
12
10
  export interface AnimHoldReleaseOptions {
13
11
  extraFrames?: number;
@@ -12,13 +12,6 @@ export declare const easingToCss: (ease: AnimationOptions["ease"] | undefined) =
12
12
  export declare const dedupeKeyframeBlocks: (css: string) => string;
13
13
  export declare const animationName: (scope: "screen" | "decorator" | "part", name: string, variant: TransitionVariant) => string;
14
14
  export declare const decoratorAnimationName: (transitionName: string, decoratorName: string, variant: TransitionVariant) => string;
15
- export declare const HEAD_SUFFIXES: {
16
- readonly governed: "gov";
17
- readonly desktop: "deskhead";
18
- readonly creep: "govcreep";
19
- readonly governedPark: "govpark";
20
- readonly desktopPark: "deskpark";
21
- };
22
15
  export declare const HEAD_ANIMATION_SUFFIXES: string[];
23
16
  export declare const matchesFlightAnimationName: (eventName: string, expectedName: string) => boolean;
24
17
  export declare const compileTransitionStyles: (transitions: Iterable<Transition>, decorators: Iterable<Decorator>, partTransitions?: Iterable<PartTransition>) => string;
@@ -18,6 +18,35 @@ export declare const RELEASE_LAUNCH_SLOPE = 1.6;
18
18
  */
19
19
  export declare const MIN_LAUNCH_SLOPE = 0.5;
20
20
  export declare const MIN_REVERSAL_SECONDS = 0.28;
21
+ /**
22
+ * The fastest a landing may cross the screen, as a multiple of the AUTHORED
23
+ * motion's own average speed.
24
+ *
25
+ * `MIN_SETTLE_SECONDS` is a floor on TIME, and time is the wrong unit for the
26
+ * thing it is protecting against. What reads as a cut is not a short landing,
27
+ * it is a fast one: 120ms is generous for the last twenty pixels and a
28
+ * teleport for a whole screen. A flick that reports several thousand px/s —
29
+ * which a coalesced pointer stream does for any quick finger — drove the
30
+ * by-speed term under that floor with almost the entire screen still to
31
+ * cross, and the screen was simply gone. Device-reported as "when the swipe is
32
+ * too fast it just vanishes with no transition".
33
+ *
34
+ * So the floor scales with what is left to travel: a release may outrun the
35
+ * authored motion, because the finger genuinely was faster, but not without
36
+ * limit. At 3x, a full-width cupertino landing bottoms out near 0.21s against
37
+ * its authored 0.7s — brisk, continuous with the gesture, and still
38
+ * unmistakably motion. Expressed against the author's own clock and span
39
+ * rather than as pixels per second, so it means the same thing on any screen
40
+ * and under any transition.
41
+ *
42
+ * THE NUMBER IS A CEILING ON THE ARTIFACT, NOT ON THE FINGER. A human flick
43
+ * tops out around six or seven screen-widths a second; the readings that
44
+ * produced the defect were several times that, which is a coalesced pointer
45
+ * pair over a 4ms gap rather than a hand. 3x leaves every honoured release in
46
+ * the device-judged table above exactly where it was — the fastest of them
47
+ * departs at 2.8x — and only clips what no finger did.
48
+ */
49
+ export declare const MAX_RELEASE_SPEEDUP = 3;
21
50
  export interface SwipeSettleInput {
22
51
  remainingPx: number;
23
52
  spanPx: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/core",
3
- "version": "2.2.2",
3
+ "version": "2.3.0",
4
4
  "description": "Framework-agnostic primitives for flemo: history, navigation, transitions, task manager.",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.mjs",
File without changes