@flemo/core 2.2.1 → 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.
@@ -49,6 +49,21 @@ export declare const BAR_SPACER_ATTR = "data-flemo-bar-spacer";
49
49
  export declare const DECORATOR_ATTR = "data-flemo-decorator";
50
50
  /** The decorator definition's name, for its own compiled rules. */
51
51
  export declare const DECORATOR_NAME_ATTR = "data-flemo-decorator-name";
52
+ /**
53
+ * The screen a decorator belongs to, on every copy of it.
54
+ *
55
+ * A decorator is not one element. A screen with a `<Layer>` slot renders its
56
+ * dim TWICE — once in its own container, once portalled into the layer host so
57
+ * the dim also covers what the overlay carried out of the screen — and the
58
+ * copy is the one that paints on top. Everything that has to reach "this
59
+ * screen's dim" was reaching the in-container one by a ref or an own-child
60
+ * query, so the copy, which is what the eye is on, was reached by nothing: a
61
+ * swipe drove the original under it while the visible one stood still.
62
+ *
63
+ * The id is the screen's, so a lookup names the OWNER rather than a position,
64
+ * and finds however many copies that owner rendered.
65
+ */
66
+ export declare const DECORATOR_OWNER_ATTR = "data-flemo-decorator-owner";
52
67
  /**
53
68
  * The HOST: one childless box per screen chain, rendered by the OUTERMOST
54
69
  * screen's container and inherited by every screen nested inside it. Outermost
@@ -148,6 +163,22 @@ export declare const MORPH_ROLE: {
148
163
  * different morph choreography per element. Absent means the default preset.
149
164
  */
150
165
  export declare const MORPH_NAME_ATTR = "data-flemo-morph-name";
166
+ /**
167
+ * The PAIRING KEY (`layoutId`), written out so the pairing is observable.
168
+ *
169
+ * The runtime keeps the key in its own registry and never needed it in the DOM,
170
+ * which made the single most common morph failure — two ends that never paired
171
+ * — invisible to everything outside the runtime: the element simply does not
172
+ * fly, and nothing on the page says why. Four separate investigations began by
173
+ * rebuilding a private tracer to answer "did these two find each other".
174
+ *
175
+ * With the key on the element, an inspector (and `@flemo/devtools`) can group
176
+ * the ends itself and report a pairable set that never flew. Written once and
177
+ * only when it changes — a morph is re-registered on every status change, and
178
+ * an attribute write invalidates that element's style (see the ownership note
179
+ * in attachMorph, where two such writes were device-measured as judder).
180
+ */
181
+ export declare const MORPH_ID_ATTR = "data-flemo-morph-id";
151
182
  /**
152
183
  * The per-Router FLIGHT LAYER: the box a shared element is staged in while it
153
184
  * travels. Rendered by the binding (a Router knows which box bounds its
@@ -289,4 +320,4 @@ export declare const attrValueSelector: (attribute: string, value: string) => st
289
320
  * a devtools build can assert against the shipped set instead of a hand-kept
290
321
  * copy — the drift this module exists to end.
291
322
  */
292
- 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-layer-host", "data-flemo-layer-owner", "data-flemo-layer-slot", "data-flemo-part-name", "data-flemo-part-layer", "data-flemo-part-home", "data-flemo-part-stand-in", "data-flemo-morph", "data-flemo-morph-camera", "data-flemo-morph-ghost", "data-flemo-morph-layer", "data-flemo-morph-name", "data-flemo-morph-slot", "data-flemo-morph-stand-in", "data-flemo-morph-sheet", "data-flemo-anim-hold", "data-flemo-held-arrival", "data-flemo-img-hold", "data-flemo-governed", "data-flemo-creep", "data-flemo-desk-head", "data-flemo-park-head", "data-flemo-warm", "data-flemo-gpu-prewarm", "data-flemo-image-src", "data-flemo-devtools-panel"];
323
+ 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-decorator-owner", "data-flemo-layer-host", "data-flemo-layer-owner", "data-flemo-layer-slot", "data-flemo-part-name", "data-flemo-part-layer", "data-flemo-part-home", "data-flemo-part-stand-in", "data-flemo-morph", "data-flemo-morph-camera", "data-flemo-morph-ghost", "data-flemo-morph-id", "data-flemo-morph-layer", "data-flemo-morph-name", "data-flemo-morph-slot", "data-flemo-morph-stand-in", "data-flemo-morph-sheet", "data-flemo-anim-hold", "data-flemo-held-arrival", "data-flemo-img-hold", "data-flemo-governed", "data-flemo-creep", "data-flemo-desk-head", "data-flemo-park-head", "data-flemo-warm", "data-flemo-gpu-prewarm", "data-flemo-image-src", "data-flemo-devtools-panel"];
@@ -22,4 +22,13 @@ export interface PreserveAnimationsOptions {
22
22
  * Runs `move` — the re-parent — and carries the subtree's animation clocks
23
23
  * across it.
24
24
  */
25
- export declare function preserveAnimations(root: Element, move: () => void, options?: PreserveAnimationsOptions): void;
25
+ /**
26
+ * Move an element without restarting the animations inside it.
27
+ *
28
+ * Returns HOW MANY it had to carry, because asking is the expensive half: each
29
+ * `getAnimations({ subtree: true })` forces a style recalculation, and a flight
30
+ * lands with every one of its participants asking twice in the same frame.
31
+ * Measured on the reference grid, that frame ran 75ms. A caller that already
32
+ * knows the answer is zero can skip the question entirely.
33
+ */
34
+ export declare function preserveAnimations(root: Element, move: () => void, options?: PreserveAnimationsOptions): number;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { default as TaskManger, default as TaskManager } from './core/TaskManger';
1
+ export { default as TaskManger, default as TaskManager } from './core/TaskManager';
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';
@@ -51,7 +51,7 @@ export { default as createTransitionEngine } from './core/engine/createTransitio
51
51
  export { governedCompiledActive } from './platform/governedCompiled';
52
52
  export { startFlemoRuntime } from './runtime/flemoRuntime';
53
53
  export { resolvePlatformProfile, type PlatformProfile, type PlatformProfileInput } from './platform/profile';
54
- 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, LAYER_HOST_ATTR, LAYER_OWNER_ATTR, LAYER_SLOT_ATTR, MORPH_ATTR, MORPH_LAYER_ATTR, MORPH_NAME_ATTR, MORPH_ROLE, MORPH_SLOT_ATTR, MORPH_SHEET_ATTR, PARK_HEAD_ATTR, PART_HOME_ATTR, PART_LAYER_ATTR, PART_NAME_ATTR, ROUTER_ATTR, SCREEN_ATTR, STATUS_ATTR, TRANSITION_ATTR, WARM_ATTR } from './dom/attributes';
54
+ 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, LAYER_HOST_ATTR, LAYER_OWNER_ATTR, LAYER_SLOT_ATTR, MORPH_ATTR, MORPH_CAMERA_ATTR, MORPH_GHOST_ATTR, MORPH_ID_ATTR, MORPH_LAYER_ATTR, MORPH_NAME_ATTR, MORPH_ROLE, MORPH_SLOT_ATTR, MORPH_SHEET_ATTR, MORPH_STAND_IN_ATTR, PARK_HEAD_ATTR, PART_HOME_ATTR, PART_LAYER_ATTR, PART_NAME_ATTR, ROUTER_ATTR, SCREEN_ATTR, STATUS_ATTR, TRANSITION_ATTR, WARM_ATTR } from './dom/attributes';
55
55
  export { OVERLAY_LEVEL, SCREEN_STACKING_ORDER, UNNUMBERED_LEVEL } from './dom/stacking';
56
56
  export { TRANSITIONAL_STATUS_VALUES } from './navigate/store';
57
57
  export { SKIP_ANIMATION_ATTR, type TransitionEngine, type TransitionEngineDeps, type ScreenLifecycleInput } from './core/engine/types';