@flemo/core 2.2.0 → 2.2.2

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.
@@ -22,6 +22,12 @@ export interface MorphSide {
22
22
  padding: string;
23
23
  margin: string;
24
24
  paint: Record<string, string>;
25
+ /** Whether this end is one line of text (see MorphSnapshot.singleLine). */
26
+ singleLine: boolean;
27
+ /** This end's first text run height (see MorphSnapshot.textHeight). */
28
+ textHeight: number | null;
29
+ /** Where this end's line was actually rendered (see MorphSnapshot.leadOffset). */
30
+ leadOffset: number | null;
25
31
  /**
26
32
  * Whether this screen's transition MOVES it — read from the DEFINITION, not
27
33
  * from the element: at the moment a flight is staged the arriving screen is
@@ -33,11 +39,4 @@ export interface MorphSide {
33
39
  screenDuration: number;
34
40
  screenEase: AnimationOptions["ease"];
35
41
  }
36
- /**
37
- * Where one side of a morph really is, and how long its screen takes.
38
- *
39
- * The screen is read from the DOM PROTOCOL — its transition name is an
40
- * attribute — rather than from a store, so a morph works the same for any
41
- * binding and needs nothing threaded through from the consumer's tree.
42
- */
43
- export declare const resolveMorphSide: (element: HTMLElement, screen: HTMLElement, variant: TransitionVariant) => MorphSide;
42
+ export declare const resolveMorphSide: (element: HTMLElement, owner: HTMLElement | null, variant: TransitionVariant) => MorphSide;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * A PART IS NOT LAID OUT AT THE SIZES THE BOX PASSES THROUGH.
3
+ *
4
+ * A morph's box animates so that the subtree can lay itself out at every size
5
+ * on the way, which is what makes the artwork and the paired type GROW. A
6
+ * `<Part>` is the opposite declaration: it is the content that is NOT paired,
7
+ * that the flight hides and brings back on its own clock, precisely because it
8
+ * has no business being laid out at a cell's width.
9
+ *
10
+ * It was laid out there anyway. The part's own box still rode the growing box,
11
+ * so a page of copy inside a card re-wrapped the whole way up, and the part is
12
+ * brought back before the box has finished growing. Measured on the reference
13
+ * detail, frame by frame: the body copy stood at 147.88px tall for the first
14
+ * twenty frames of the flight, dropped a line to 126.75px on the twenty-first,
15
+ * and the facts list and the buy button under it jumped 23.55px up the screen
16
+ * in that one frame, with the copy already at full opacity.
17
+ *
18
+ * So a part is laid out ONCE, at the width it will rest at, and the box's
19
+ * growth is a clip over it rather than a re-wrap of it. Nothing is lost: the
20
+ * part is not on glass at those sizes, and where it is on glass the width is
21
+ * the one it lands at.
22
+ *
23
+ * The width alone. A part's HEIGHT is where the growth actually shows through
24
+ * to the parts below it, and holding that would pin a subtree to a height its
25
+ * own copy no longer needs.
26
+ */
27
+ export declare const pinPartWidths: (element: HTMLElement) => (() => void);
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flemo/core",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
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",