@pixodesk/svg-animator-core 1.0.41 → 1.0.44

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/README.md CHANGED
@@ -60,7 +60,7 @@ runtime crash on a non-browser platform.
60
60
  | **Text** | `materializeGlyphText`, `layoutGlyphTextChars`, `extendedPathForBrowser` |
61
61
  | **Node helpers** | `toDomProps`, `sanitizeAttributeValue`, `generateNewIds` |
62
62
  | **Playback engine** | `createAdapterAnimator` + the `PxPlatformAdapter` interface |
63
- | **Wire enums** | `PxTimelineEngine` / `PxTimelineEngineSetting`, `PxStartOn`, `PxOutAction`, `PxFinishAction`, `PxFillMode`, `PxPlaybackDirection`, `PxScrollKind`, `PxScrollAxis`, `PxScrollSource`, `PxScrollPhase`, `PxPinAlign`, `PxAlongPathMode`, `PxLoopRepeatAt`, `PxLoopDirection`, `PxStrokeTrimSubPaths`, `PxMaskType`, `PxCloneWithout`, `PxUnits`, `PxGradientType`, `PxGradientSpreadMethod`, `PxPathOverflow`, `PxLengthAdjust`, `PxTextPathMethod`, `PxTextPathSpacing` — every two-or-more-way wire selector is a named enum, not a bare string. Each is a const namespace AND the string type derived from it under the same name, so `PxStartOn.click` and `startOn?: PxStartOn` come from one import |
63
+ | **Wire enums** | `PxTimelineEngine` / `PxTimelineEngineSetting`, `PxTriggerStart`, `PxOffScreenAction`, `PxMouseOutAction`, `PxFinishAction`, `PxFillMode`, `PxPlaybackDirection`, `PxScrollKind`, `PxScrollAxis`, `PxScrollSource`, `PxScrollPhase`, `PxPinAlign`, `PxAlongPathMode`, `PxLoopRepeatAt`, `PxLoopDirection`, `PxStrokeTrimSubPaths`, `PxMaskType`, `PxCloneWithout`, `PxUnits`, `PxGradientType`, `PxGradientSpreadMethod`, `PxPathOverflow`, `PxLengthAdjust`, `PxTextPathMethod`, `PxTextPathSpacing` — every two-or-more-way wire selector is a named enum, not a bare string. Each is a const namespace AND the string type derived from it under the same name, so `PxTriggerStart.click` and `start?: PxTriggerStart` come from one import |
64
64
 
65
65
  ### Validating a document
66
66
 
@@ -311,10 +311,10 @@ declare const PX_WIRE_BASELINE_VERSION = "1.1";
311
311
  /**
312
312
  * Every `b` step from {@link PX_WIRE_BASELINE_VERSION} to {@link PX_WIRE_SCHEMA_VERSION}.
313
313
  *
314
- * EMPTY IS CORRECT TODAY: 1.1 is the baseline and nothing has moved since. It exists now because
315
- * the guard spec keys off it — bump `PX_WIRE_SCHEMA_VERSION` without adding the matching step
316
- * and the suite fails naming the gap. That is the whole point: the last three renames shipped
317
- * because nothing forced anyone to say they had happened.
314
+ * One step so far: the 1.2 trigger block. The guard spec keys off this table — bump
315
+ * `PX_WIRE_SCHEMA_VERSION` without adding the matching step and the suite fails naming the gap.
316
+ * That is the whole point: the last three renames shipped because nothing forced anyone to say
317
+ * they had happened.
318
318
  * @public @advanced
319
319
  */
320
320
  declare const PX_WIRE_STEPS: ReadonlyArray<PxWireVersionStep>;
@@ -404,24 +404,36 @@ type PxPlaybackDirection = typeof PxPlaybackDirection[keyof typeof PxPlaybackDir
404
404
  declare const PX_ANIM_SRC_ATTR_NAME = "data-px-animation-src";
405
405
  /** @internal */
406
406
  declare const PX_ANIM_ATTR_NAME = "_px_animator";
407
- /** `trigger.startOn` — what starts the animation. `programmatic` waits for `play()`. @public */
408
- declare const PxStartOn: {
407
+ /** `trigger.start` — what starts the animation. `none` waits for `play()`.
408
+ *
409
+ * There is no `scrollIntoView` member: visibility is not a trigger but a permission, and it is
410
+ * governed by `offScreen` + `visibilityThreshold` whatever starts the animation. `start: 'load'`
411
+ * behind the default gate is what `startOn: 'scrollIntoView'` used to mean. @public */
412
+ declare const PxTriggerStart: {
409
413
  readonly load: "load";
410
414
  readonly mouseOver: "mouseOver";
411
415
  readonly click: "click";
412
- readonly scrollIntoView: "scrollIntoView";
413
- readonly programmatic: "programmatic";
416
+ readonly none: "none";
417
+ };
418
+ type PxTriggerStart = typeof PxTriggerStart[keyof typeof PxTriggerStart];
419
+ /** `trigger.offScreen` — what happens while none of the graphic is on screen. No `reverse`:
420
+ * nobody can watch an animation play backwards off screen. @public */
421
+ declare const PxOffScreenAction: {
422
+ readonly pause: "pause";
423
+ readonly continue: "continue";
424
+ readonly reset: "reset";
414
425
  };
415
- type PxStartOn = typeof PxStartOn[keyof typeof PxStartOn];
416
- /** `trigger.outAction` — what happens when the trigger condition stops holding. @public */
417
- declare const PxOutAction: {
426
+ type PxOffScreenAction = typeof PxOffScreenAction[keyof typeof PxOffScreenAction];
427
+ /** `trigger.mouseOut` — what happens when the pointer leaves. Read only when
428
+ * `start` is `mouseOver`. @public */
429
+ declare const PxMouseOutAction: {
418
430
  readonly continue: "continue";
419
431
  readonly pause: "pause";
420
432
  readonly reset: "reset";
421
433
  readonly reverse: "reverse";
422
434
  };
423
- type PxOutAction = typeof PxOutAction[keyof typeof PxOutAction];
424
- /** `trigger.finishAction` — what happens after a NATURAL finish. @public */
435
+ type PxMouseOutAction = typeof PxMouseOutAction[keyof typeof PxMouseOutAction];
436
+ /** `trigger.finish` — what happens after a NATURAL finish. @public */
425
437
  declare const PxFinishAction: {
426
438
  readonly hold: "hold";
427
439
  readonly reset: "reset";
@@ -519,21 +531,27 @@ declare function mayUseNativeScrollTimeline(engine: PxTimelineEngineSetting | un
519
531
  * THE TRIGGER DEFAULTS — what a missing `trigger` field means. One table, declared by
520
532
  * `PxTriggerSchema` and applied by {@link resolveTrigger}, which every player calls (the web's
521
533
  * `setupAnimationTriggers`, the React Native component) — so a file behaves the same everywhere:
522
- * - `startOn` 'load' — a document is designed to play
523
- * - `outAction` 'continue' — leaving the trigger does not interrupt playback
524
- * - `scrollIntoViewThreshold` 0 — any visible pixel counts
534
+ * - `start` 'load' — a document is designed to play
535
+ * - `offScreen` 'pause' — an animation nobody can see does not run
536
+ * - `mouseOut` 'continue' — leaving the element does not interrupt playback
537
+ * - `visibilityThreshold` 0.5 — half of it must be on screen before it may run
538
+ * - `visibilityDebounce` 150 — and stay that way this long, so a fast scroll past starts nothing
525
539
  * @public @advanced
526
540
  */
527
541
  declare const PX_TRIGGER_DEFAULTS: {
528
- readonly startOn: "load";
529
- readonly outAction: "continue";
530
- readonly scrollIntoViewThreshold: 0;
542
+ readonly start: "load";
543
+ readonly offScreen: "pause";
544
+ readonly mouseOut: "continue";
545
+ readonly visibilityThreshold: 0.5;
546
+ readonly visibilityDebounce: 150;
531
547
  };
532
548
  /** A trigger with every default filled in. @public @advanced */
533
549
  interface PxResolvedTrigger {
534
- readonly startOn: NonNullable<PxTrigger['startOn']>;
535
- readonly outAction: NonNullable<PxTrigger['outAction']>;
536
- readonly scrollIntoViewThreshold: number;
550
+ readonly start: NonNullable<PxTrigger['start']>;
551
+ readonly offScreen: NonNullable<PxTrigger['offScreen']>;
552
+ readonly mouseOut: NonNullable<PxTrigger['mouseOut']>;
553
+ readonly visibilityThreshold: number;
554
+ readonly visibilityDebounce: number;
537
555
  }
538
556
  /** Which props drive playback. `apiRef` is deliberately NOT a mode: the handle is filled in
539
557
  * every mode, so passing it alone leaves the document's own trigger in charge. * @public
@@ -568,7 +586,7 @@ interface PxControlProps {
568
586
  play?: boolean;
569
587
  /** Hold the current frame; set it back to `false` to resume. */
570
588
  pause?: boolean;
571
- /** Start the way the document says — its own `startOn` / `outAction` trigger. */
589
+ /** Start the way the document says — its own `trigger` block. */
572
590
  autoplay?: boolean;
573
591
  }
574
592
  /** The chosen mode plus any conflict warnings — ready-made sentences, so three components
@@ -597,7 +615,7 @@ interface PxResolvedControlMode {
597
615
  declare function resolveControlMode(props: PxControlProps): PxResolvedControlMode;
598
616
  /**
599
617
  * True when the component must take the document's trigger over, by forcing
600
- * `startOn: 'programmatic'` into its config patch.
618
+ * `start: 'none'` into its config patch.
601
619
  *
602
620
  * Every mode except `autoplay` — INCLUDING `static`. A component given no control props at all
603
621
  * must not start on its own: `<PixodeskSvgAnimator doc={…} />` renders the first frame and waits.
@@ -605,7 +623,7 @@ declare function resolveControlMode(props: PxControlProps): PxResolvedControlMod
605
623
  * @public
606
624
  */
607
625
  declare function controlModeTakesOverTrigger(mode: PxControlMode): boolean;
608
- /** A document's trigger with the defaults filled in. (`finishAction` is not a start/stop decision:
626
+ /** A document's trigger with the defaults filled in. (`finish` is not a start/stop decision:
609
627
  * it reaches the engines as the runtime view's `resetOnFinish`.) * @public @advanced
610
628
  */
611
629
  declare function resolveTrigger(trigger: PxTrigger | undefined): PxResolvedTrigger;
@@ -753,6 +771,130 @@ declare function getBindings(doc: PxAnimatedSvgDocument): PxBinding[] | undefine
753
771
  /** @public @advanced */
754
772
  declare function getChildren(doc: PxAnimatedSvgDocument): PxNode[] | undefined;
755
773
 
774
+ /**
775
+ * Every diagnostic a player can report, as a number a host can switch on.
776
+ *
777
+ * The words are not in the build: each code's description lives in the comment on its member and
778
+ * is compiled into `docs/diagnostics.md`, which every diagnostic's `message` links to.
779
+ * @public
780
+ */
781
+ declare enum PxDiagnosticCode {
782
+ /**
783
+ * The player could not be built from this document — a document that passed validation but
784
+ * still broke the builder, or a bug in the player. Report it.
785
+ * @data the Error
786
+ */
787
+ buildFailed = 1001,
788
+ /**
789
+ * The file at `src` loaded, but it is not a Pixodesk animation document.
790
+ * @data the `src` URL
791
+ */
792
+ invalidDocumentAtSrc = 1002,
793
+ /**
794
+ * The page could not fetch `src`. The file may be perfect — this is the request failing.
795
+ * @data the `src` URL · the fetch error's message
796
+ */
797
+ loadFailed = 1003,
798
+ /**
799
+ * One element's animation could not be built, so that element stays static; the rest plays.
800
+ * @data the Error
801
+ */
802
+ animationBuildFailed = 1004,
803
+ /**
804
+ * An `effects` bucket does not match the schema, so that effect is ignored or degraded.
805
+ * @data the problem, with the node's path
806
+ */
807
+ effectsShape = 1101,
808
+ /**
809
+ * Part of the per-instance `timeline` override could not be applied — most often clock-only
810
+ * keys aimed at a scroll timeline.
811
+ * @data what could not be applied
812
+ */
813
+ timelineOverrideIgnored = 1102,
814
+ /**
815
+ * An SVG tag that can execute or load remote content was dropped from the rendered tree.
816
+ * @data the tag name
817
+ */
818
+ blockedTag = 1103,
819
+ /**
820
+ * The browser will not animate these attributes, so the document fell back to the frame loop.
821
+ * @data the attribute names
822
+ */
823
+ unsupportedAnimatedAttrs = 1104,
824
+ /** A bind-by-id document carries no `animator.bindings`, so nothing is animated. */
825
+ noBindings = 1105,
826
+ /**
827
+ * A binding names no element, or names animations that `definitions.animations` does not have.
828
+ * @data the binding
829
+ */
830
+ unresolvedBinding = 1106,
831
+ /** `setupAnimationTriggers` was given no root element, so no trigger was wired. */
832
+ triggersNoRoot = 1201,
833
+ /**
834
+ * The container selector matched nothing, so there is nothing to render into.
835
+ * @data the selector
836
+ */
837
+ noRootForSelector = 1202,
838
+ /** No container was given and the document's `id` matched no element already on the page. */
839
+ noRootElement = 1203,
840
+ /**
841
+ * A binding's selector matched no element, so that binding animates nothing.
842
+ * @data the selector
843
+ */
844
+ noElementsForSelector = 1206,
845
+ /**
846
+ * An attribute write found no element for this id — the rendered SVG was probably replaced.
847
+ * @data the id or selector
848
+ */
849
+ setAttributeNoElement = 1207,
850
+ /** `smoothing` needs the player's own driver, so the browser's scroll timeline was not used. */
851
+ scrollSmoothingNeedsOwnDriver = 1301,
852
+ /** The browser refused to build a native scroll timeline; the player measures progress itself. */
853
+ scrollNativeUnavailable = 1302,
854
+ /**
855
+ * `scroll.subject` is not a valid CSS selector, so the SVG itself is measured instead.
856
+ * @data the subject
857
+ */
858
+ scrollSubjectInvalid = 1303,
859
+ /**
860
+ * `scroll.subject` matched no element, so the SVG itself is measured instead.
861
+ * @data the subject
862
+ */
863
+ scrollSubjectNoMatch = 1304,
864
+ /** There is no root element to observe, so a scroll-driven animation stays on its first frame. */
865
+ scrollNoRootToObserve = 1305,
866
+ /** `animator.trigger` does not apply to a scroll timeline — the scrollbar is the playhead. */
867
+ scrollTriggerIgnored = 1306,
868
+ /** A playback rate of `0`, or a non-finite one, is rejected everywhere — use `pause()`. */
869
+ rateRejected = 1401,
870
+ /**
871
+ * Two control tiers were set at once. The higher one wins and the lower is ignored — see the
872
+ * control-mode rule.
873
+ * @data which props conflicted, and which won
874
+ */
875
+ controlPropsConflict = 1501,
876
+ /**
877
+ * The document could not be compiled into animation tracks, so `fallback` is shown.
878
+ * @data the Error
879
+ */
880
+ rnCompileFailed = 1601,
881
+ /**
882
+ * Rendering the compiled document threw, so `fallback` is shown.
883
+ * @data the Error
884
+ */
885
+ rnRenderFailed = 1602,
886
+ /**
887
+ * The error boundary caught a render failure below this component.
888
+ * @data the Error · the React component stack
889
+ */
890
+ rnBoundaryCaught = 1603,
891
+ /**
892
+ * `react-native-svg` cannot express part of this document, so it was left out or simplified.
893
+ * @data what was left out
894
+ */
895
+ rnUnsupported = 1604
896
+ }
897
+
756
898
  /**
757
899
  * Who can do something about a diagnostic.
758
900
  *
@@ -773,18 +915,29 @@ declare const PxDiagnosticKind: {
773
915
  readonly internal: "internal";
774
916
  };
775
917
  type PxDiagnosticKind = typeof PxDiagnosticKind[keyof typeof PxDiagnosticKind];
776
- /** One thing a player has to say. @public */
918
+ /**
919
+ * One thing a player has to say.
920
+ *
921
+ * The TEXT is not here, and is not in the bundle: `code` identifies the diagnostic and
922
+ * {@link https://github.com/pixodesk/pixodesk-svg-animator/blob/main/docs/diagnostics.md the
923
+ * codes page} carries the description. That is the trade this library makes — a smaller
924
+ * download, and a stable number you can switch on instead of matching a sentence that may be
925
+ * reworded. The specifics are in `data`.
926
+ * @public
927
+ */
777
928
  interface PxDiagnostic {
929
+ /** WHICH diagnostic this is — a permanent number; look it up on the codes page. */
930
+ readonly code: PxDiagnosticCode;
778
931
  /** Who can act on it — see {@link PxDiagnosticKind}. */
779
932
  readonly kind: PxDiagnosticKind;
780
- /** Human-readable, and never carries the console prefix. */
781
- readonly message: string;
782
933
  /**
783
- * Whatever the site had to hand: the offending binding, the element map, the raw error —
784
- * or, for a React Native render failure, `{ componentStack }`.
934
+ * What the site had to hand, in the order the code's `@data` lists: a selector, a URL, the
935
+ * offending binding, an inner problem. Everything a sentence would have interpolated.
785
936
  */
786
- readonly detail?: unknown;
787
- /** Present on errors: the Error that stopped the player. Its message is `message`. */
937
+ readonly data?: ReadonlyArray<unknown>;
938
+ /** The code and a link to its description — NOT the description itself, which is not shipped. */
939
+ readonly message: string;
940
+ /** Present on errors: the Error that stopped the player. */
788
941
  readonly error?: Error;
789
942
  }
790
943
  /**
@@ -799,15 +952,16 @@ interface PxDiagnosticsConfig {
799
952
  /**
800
953
  * IT PLAYS, but something was ignored, degraded or misspelled — an unknown easing, an
801
954
  * override that could not apply, an attribute the platform will not animate. Each
802
- * diagnostic says WHO can act on it via `kind` (`document` / `host` / `platform` / `usage` /
803
- * `internal`). Without this: `console.warn`.
955
+ * diagnostic says WHAT happened via `code` (a number — look it up on the codes page) and
956
+ * WHO can act on it via `kind` (`document` / `host` / `platform` / `usage` / `internal`);
957
+ * `data` carries the values the site had. Without this: `console.warn`.
804
958
  */
805
959
  onWarn?: (diagnostic: PxDiagnostic) => void;
806
960
  /**
807
961
  * THIS INSTANCE WILL NOT PLAY — the document failed to load, parse or build, or the render
808
962
  * threw: nothing rendered, `isReady()` false, the component's `fallback` shown. The player
809
963
  * stays inert rather than throwing at the caller. `diagnostic.error` is the Error; on React
810
- * Native `diagnostic.detail` carries `{ componentStack }` when the error boundary caught it.
964
+ * Native `diagnostic.data` carries the component stack when the error boundary caught it.
811
965
  * Without this: `console.error`.
812
966
  */
813
967
  onError?: (diagnostic: PxDiagnostic) => void;
@@ -823,10 +977,13 @@ interface PxDiagnosticsConfig {
823
977
  }
824
978
  /** The reporting channel a player writes to. @public */
825
979
  interface PxDiagnostics {
826
- /** Report something survivable — it plays. */
827
- warn(kind: PxDiagnosticKind, message: string, detail?: unknown): void;
828
- /** Report a failure that stopped this instance — it will not play. */
829
- error(kind: PxDiagnosticKind, error: Error | string, detail?: unknown): void;
980
+ /** Report something survivable — it plays. `data` is whatever the code's `@data` names. */
981
+ warn(kind: PxDiagnosticKind, code: PxDiagnosticCode, ...data: Array<unknown>): void;
982
+ /**
983
+ * Report a failure that stopped this instance — it will not play. An `Error` anywhere in
984
+ * `data` becomes the diagnostic's `error`, so a site can pass it wherever it reads best.
985
+ */
986
+ error(kind: PxDiagnosticKind, code: PxDiagnosticCode, ...data: Array<unknown>): void;
830
987
  }
831
988
  /**
832
989
  * Builds the channel a player reports through.
@@ -1331,16 +1488,20 @@ declare const PxElementAnimationSchema: PxSchema<string | Record<string, {} & {
1331
1488
  type PxElementAnimation = PxInfer<typeof PxElementAnimationSchema>;
1332
1489
  /** @public @advanced */
1333
1490
  declare const PxTriggerSchema: PxSchema<{} & {
1334
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
1335
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
1336
- finishAction?: "reset" | "hold" | undefined;
1337
- scrollIntoViewThreshold?: number | undefined;
1491
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
1492
+ offScreen?: "continue" | "pause" | "reset" | undefined;
1493
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
1494
+ finish?: "reset" | "hold" | undefined;
1495
+ visibilityThreshold?: number | undefined;
1496
+ visibilityDebounce?: number | undefined;
1338
1497
  }, false> & {
1339
1498
  readonly _shape: {
1340
- startOn: PxSchema<"load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined, true>;
1341
- outAction: PxSchema<"reverse" | "continue" | "pause" | "reset" | undefined, true>;
1342
- finishAction: PxSchema<"reset" | "hold" | undefined, true>;
1343
- scrollIntoViewThreshold: PxSchema<number | undefined, true>;
1499
+ start: PxSchema<"none" | "mouseOver" | "load" | "click" | undefined, true>;
1500
+ offScreen: PxSchema<"continue" | "pause" | "reset" | undefined, true>;
1501
+ mouseOut: PxSchema<"reverse" | "continue" | "pause" | "reset" | undefined, true>;
1502
+ finish: PxSchema<"reset" | "hold" | undefined, true>;
1503
+ visibilityThreshold: PxSchema<number | undefined, true>;
1504
+ visibilityDebounce: PxSchema<number | undefined, true>;
1344
1505
  };
1345
1506
  };
1346
1507
  /** Defines when and how an animation should be triggered. @public */
@@ -1562,14 +1723,16 @@ declare const PxTimelineSchema: PxSchema<({} & {
1562
1723
  frameRate?: number | undefined;
1563
1724
  duration?: number | undefined;
1564
1725
  trigger?: ({} & {
1565
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
1566
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
1567
- finishAction?: "reset" | "hold" | undefined;
1568
- scrollIntoViewThreshold?: number | undefined;
1726
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
1727
+ offScreen?: "continue" | "pause" | "reset" | undefined;
1728
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
1729
+ finish?: "reset" | "hold" | undefined;
1730
+ visibilityThreshold?: number | undefined;
1731
+ visibilityDebounce?: number | undefined;
1569
1732
  }) | undefined;
1570
1733
  delay?: number | undefined;
1571
1734
  iterations?: number | "infinite" | undefined;
1572
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
1735
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
1573
1736
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
1574
1737
  }) | ({
1575
1738
  type: "scroll";
@@ -1688,7 +1851,7 @@ interface _PxAnimatorConfig {
1688
1851
  *
1689
1852
  * The wire spells this as `timeline.type` ('time' — or absent — vs 'scroll'/'view');
1690
1853
  * `flattenAnimatorTimeline` folds it into this field for the engines.
1691
- * Distinct from `trigger.startOn`, which says what STARTS the animation: one
1854
+ * Distinct from `trigger.start`, which says what STARTS the animation: one
1692
1855
  * names the beginning, this one names what moves the playhead afterwards.
1693
1856
  * Design: app `svgeditor/animation/scroll-timeline.design.md`.
1694
1857
  */
@@ -1749,14 +1912,16 @@ declare const PxAnimatorConfigSchema: PxSchema<{} & {
1749
1912
  frameRate?: number | undefined;
1750
1913
  duration?: number | undefined;
1751
1914
  trigger?: ({} & {
1752
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
1753
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
1754
- finishAction?: "reset" | "hold" | undefined;
1755
- scrollIntoViewThreshold?: number | undefined;
1915
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
1916
+ offScreen?: "continue" | "pause" | "reset" | undefined;
1917
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
1918
+ finish?: "reset" | "hold" | undefined;
1919
+ visibilityThreshold?: number | undefined;
1920
+ visibilityDebounce?: number | undefined;
1756
1921
  }) | undefined;
1757
1922
  delay?: number | undefined;
1758
1923
  iterations?: number | "infinite" | undefined;
1759
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
1924
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
1760
1925
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
1761
1926
  }) | ({
1762
1927
  type: "scroll";
@@ -1871,14 +2036,16 @@ declare const PxAnimatorConfigSchema: PxSchema<{} & {
1871
2036
  frameRate?: number | undefined;
1872
2037
  duration?: number | undefined;
1873
2038
  trigger?: ({} & {
1874
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
1875
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
1876
- finishAction?: "reset" | "hold" | undefined;
1877
- scrollIntoViewThreshold?: number | undefined;
2039
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
2040
+ offScreen?: "continue" | "pause" | "reset" | undefined;
2041
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
2042
+ finish?: "reset" | "hold" | undefined;
2043
+ visibilityThreshold?: number | undefined;
2044
+ visibilityDebounce?: number | undefined;
1878
2045
  }) | undefined;
1879
2046
  delay?: number | undefined;
1880
2047
  iterations?: number | "infinite" | undefined;
1881
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
2048
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
1882
2049
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
1883
2050
  }) | ({
1884
2051
  type: "scroll";
@@ -7949,14 +8116,16 @@ declare const PxSvgNodeRootSchema: PxSchema<{} & {
7949
8116
  frameRate?: number | undefined;
7950
8117
  duration?: number | undefined;
7951
8118
  trigger?: ({} & {
7952
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
7953
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
7954
- finishAction?: "reset" | "hold" | undefined;
7955
- scrollIntoViewThreshold?: number | undefined;
8119
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
8120
+ offScreen?: "continue" | "pause" | "reset" | undefined;
8121
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
8122
+ finish?: "reset" | "hold" | undefined;
8123
+ visibilityThreshold?: number | undefined;
8124
+ visibilityDebounce?: number | undefined;
7956
8125
  }) | undefined;
7957
8126
  delay?: number | undefined;
7958
8127
  iterations?: number | "infinite" | undefined;
7959
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
8128
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
7960
8129
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
7961
8130
  }) | ({
7962
8131
  type: "scroll";
@@ -8076,14 +8245,16 @@ declare const PxSvgNodeRootSchema: PxSchema<{} & {
8076
8245
  frameRate?: number | undefined;
8077
8246
  duration?: number | undefined;
8078
8247
  trigger?: ({} & {
8079
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
8080
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
8081
- finishAction?: "reset" | "hold" | undefined;
8082
- scrollIntoViewThreshold?: number | undefined;
8248
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
8249
+ offScreen?: "continue" | "pause" | "reset" | undefined;
8250
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
8251
+ finish?: "reset" | "hold" | undefined;
8252
+ visibilityThreshold?: number | undefined;
8253
+ visibilityDebounce?: number | undefined;
8083
8254
  }) | undefined;
8084
8255
  delay?: number | undefined;
8085
8256
  iterations?: number | "infinite" | undefined;
8086
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
8257
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
8087
8258
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
8088
8259
  }) | ({
8089
8260
  type: "scroll";
@@ -8229,14 +8400,16 @@ declare const PxAnimatedSvgDocumentSchema: PxSchema<{
8229
8400
  frameRate?: number | undefined;
8230
8401
  duration?: number | undefined;
8231
8402
  trigger?: ({} & {
8232
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
8233
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
8234
- finishAction?: "reset" | "hold" | undefined;
8235
- scrollIntoViewThreshold?: number | undefined;
8403
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
8404
+ offScreen?: "continue" | "pause" | "reset" | undefined;
8405
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
8406
+ finish?: "reset" | "hold" | undefined;
8407
+ visibilityThreshold?: number | undefined;
8408
+ visibilityDebounce?: number | undefined;
8236
8409
  }) | undefined;
8237
8410
  delay?: number | undefined;
8238
8411
  iterations?: number | "infinite" | undefined;
8239
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
8412
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
8240
8413
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
8241
8414
  }) | ({
8242
8415
  type: "scroll";
@@ -9443,14 +9616,16 @@ declare const PxAnimatedSvgDocumentSchema: PxSchema<{
9443
9616
  frameRate?: number | undefined;
9444
9617
  duration?: number | undefined;
9445
9618
  trigger?: ({} & {
9446
- startOn?: "load" | "mouseOver" | "click" | "scrollIntoView" | "programmatic" | undefined;
9447
- outAction?: "reverse" | "continue" | "pause" | "reset" | undefined;
9448
- finishAction?: "reset" | "hold" | undefined;
9449
- scrollIntoViewThreshold?: number | undefined;
9619
+ start?: "none" | "mouseOver" | "load" | "click" | undefined;
9620
+ offScreen?: "continue" | "pause" | "reset" | undefined;
9621
+ mouseOut?: "reverse" | "continue" | "pause" | "reset" | undefined;
9622
+ finish?: "reset" | "hold" | undefined;
9623
+ visibilityThreshold?: number | undefined;
9624
+ visibilityDebounce?: number | undefined;
9450
9625
  }) | undefined;
9451
9626
  delay?: number | undefined;
9452
9627
  iterations?: number | "infinite" | undefined;
9453
- fillMode?: "forwards" | "backwards" | "both" | "none" | undefined;
9628
+ fillMode?: "none" | "forwards" | "backwards" | "both" | undefined;
9454
9629
  direction?: "reverse" | "normal" | "alternate" | "alternate-reverse" | undefined;
9455
9630
  }) | ({
9456
9631
  type: "scroll";
@@ -10984,4 +11159,4 @@ declare function diagnoseDocument(doc: unknown): PxDocumentDiagnosis;
10984
11159
  */
10985
11160
  declare function reportDocumentDiagnostics(doc: unknown, where: string): void;
10986
11161
 
10987
- export { PxLoopSchema as $, type PxDefinitions as A, PxDefinitionsSchema as B, type PxDiagnostic as C, PxDiagnosticKind as D, type PxDiagnostics as E, type PxDiagnosticsConfig as F, type PxEffects as G, PxEffectsSchema as H, type PxElementAnimation as I, PxElementAnimationSchema as J, PxFillGradientEffectSchema as K, PxFillMode as L, PxFinishAction as M, type PxGlyph as N, type PxGlyphFont as O, type PxAnimatedSvgDocument as P, PxGradientSpreadMethod as Q, PxGradientStopSchema as R, PxGradientType as S, type PxInfer as T, type PxKeyframe as U, PxKeyframeSchema as V, PxKeyframeValueSchema as W, PxLengthAdjust as X, type PxLoop as Y, PxLoopDirection as Z, PxLoopRepeatAt as _, type PxEngineCallbacks as a, generateNewIds as a$, PxMaskType as a0, PxMaskedByEffectSchema as a1, PxNodeBaseSchema as a2, PxNodeSchema as a3, PxOutAction as a4, PxPathOverflow as a5, PxPinAlign as a6, type PxPlaybackApi as a7, PxPlaybackDirection as a8, type PxPropertyAnimation as a9, PxTimelineSchema as aA, PxTransformByEffectSchema as aB, type PxTransformParts as aC, PxTransformPartsSchema as aD, type PxTransformValue as aE, PxTransformValueSchema as aF, type PxTrigger as aG, PxTriggerSchema as aH, PxUnits as aI, type PxValidationContext as aJ, type PxVec2 as aK, type PxWireConversionOptions as aL, type PxWireConversionResult as aM, PxWireStepKind as aN, type PxWireVersion as aO, PxWireVersionRelation as aP, type PxWireVersionStep as aQ, applyWireSteps as aR, calcAnimationValues as aS, compareWireVersion as aT, controlModeTakesOverTrigger as aU, convertWireDocument as aV, describeSchema as aW, diagnoseDocument as aX, downgradeWireDocument as aY, flattenAnimatorTimeline as aZ, formatWireVersion as a_, PxPropertyAnimationSchema as aa, type PxRemoveIndex as ab, PxRepeaterEffectSchema as ac, PxRetimeEffectSchema as ad, type PxSchema as ae, type PxSchemaDesc as af, type PxScroll as ag, PxScrollAxis as ah, PxScrollKind as ai, PxScrollPhase as aj, type PxScrollRangePoint as ak, PxScrollRangePointSchema as al, PxScrollRangeSchema as am, PxScrollSchema as an, PxScrollSource as ao, PxStrokeTrimEffectSchema as ap, PxStrokeTrimSubPaths as aq, type PxSvgNode as ar, PxSvgNodeRootSchema as as, PxTextEffectSchema as at, PxTextPathEffectSchema as au, PxTextPathMethod as av, PxTextPathSpacing as aw, type PxTimeline as ax, PxTimelineEngine as ay, PxTimelineEngineSetting as az, type PxAnimatorApi as b, getAnimatorConfig as b0, getBindings as b1, getChildren as b2, getDefinitions as b3, isNativeForced as b4, isPxDocument as b5, isValidPxDocument as b6, materializeAllInTree as b7, mayUseNativeScrollTimeline as b8, nestAnimatorTimeline as b9, generateUniqueId as bA, interpolateValue as bB, keyframeEasing as bC, keyframeValue as bD, materializeMotionPathInPropAnim as bE, mergeStaticTransformIntoAnimDef as bF, reportDocumentDiagnostics as bG, sanitizeAttributeValue as bH, normalizeBindings as ba, parseWireVersion as bb, px as bc, readWireVersion as bd, resolveControlMode as be, resolveTimelineEngine as bf, resolveTrigger as bg, schemaKeys as bh, toDomProps as bi, validateDocument as bj, validateNodeEffects as bk, wireVersionAdvice as bl, type PxAnimatable as bm, PX_ANIM_ATTR_NAME as bn, PX_ANIM_SRC_ATTR_NAME as bo, PX_CSS_ONLY_STYLE_PROPS as bp, PX_DISALLOWED_SVG_TAGS_LOWER as bq, PX_LOOP_JUMP_SHIFT_MS as br, PX_TEXT_CONTENT_ATTR as bs, PX_UNKNOWN_KEY_ERROR as bt, type PxAnyKeyframe as bu, type PxMaterializeAllOptions as bv, type PxNormalizedKeyframe as bw, type PxNormalizedPropertyAnimation as bx, createDiagnostics as by, deepClone as bz, type PxAnimatorConfig as c, PxStartOn as d, type PxNode as e, PX_TRANSFORM_PART_KEYS as f, PX_TRIGGER_DEFAULTS as g, PX_WIRE_BASELINE_VERSION as h, PX_WIRE_STEPS as i, PX_WIRE_VERSION as j, PX_WIRE_VERSION_KEY as k, PxAlongPathMode as l, PxAnimatedSvgDocumentSchema as m, type PxAnimationDefinition as n, type PxAnimatorCallbacks as o, PxAnimatorConfigSchema as p, type PxAnimatorHandle as q, PxAttrValueSchema as r, type PxBezierPath as s, PxBezierPathSchema as t, type PxBinding as u, PxClipPathEffectSchema as v, PxCloneEffectSchema as w, PxCloneWithout as x, PxControlMode as y, type PxControlProps as z };
11162
+ export { PxLoopRepeatAt as $, type PxDefinitions as A, PxDefinitionsSchema as B, type PxDiagnostic as C, PxDiagnosticCode as D, PxDiagnosticKind as E, type PxDiagnostics as F, type PxDiagnosticsConfig as G, type PxEffects as H, PxEffectsSchema as I, type PxElementAnimation as J, PxElementAnimationSchema as K, PxFillGradientEffectSchema as L, PxFillMode as M, PxFinishAction as N, type PxGlyph as O, type PxAnimatedSvgDocument as P, type PxGlyphFont as Q, PxGradientSpreadMethod as R, PxGradientStopSchema as S, PxGradientType as T, type PxInfer as U, type PxKeyframe as V, PxKeyframeSchema as W, PxKeyframeValueSchema as X, PxLengthAdjust as Y, type PxLoop as Z, PxLoopDirection as _, type PxEngineCallbacks as a, flattenAnimatorTimeline as a$, PxLoopSchema as a0, PxMaskType as a1, PxMaskedByEffectSchema as a2, PxMouseOutAction as a3, PxNodeBaseSchema as a4, PxNodeSchema as a5, PxOffScreenAction as a6, PxPathOverflow as a7, PxPinAlign as a8, type PxPlaybackApi as a9, PxTimelineEngine as aA, PxTimelineEngineSetting as aB, PxTimelineSchema as aC, PxTransformByEffectSchema as aD, type PxTransformParts as aE, PxTransformPartsSchema as aF, type PxTransformValue as aG, PxTransformValueSchema as aH, type PxTrigger as aI, PxTriggerSchema as aJ, PxUnits as aK, type PxValidationContext as aL, type PxVec2 as aM, type PxWireConversionOptions as aN, type PxWireConversionResult as aO, PxWireStepKind as aP, type PxWireVersion as aQ, PxWireVersionRelation as aR, type PxWireVersionStep as aS, applyWireSteps as aT, calcAnimationValues as aU, compareWireVersion as aV, controlModeTakesOverTrigger as aW, convertWireDocument as aX, describeSchema as aY, diagnoseDocument as aZ, downgradeWireDocument as a_, PxPlaybackDirection as aa, type PxPropertyAnimation as ab, PxPropertyAnimationSchema as ac, type PxRemoveIndex as ad, PxRepeaterEffectSchema as ae, PxRetimeEffectSchema as af, type PxSchema as ag, type PxSchemaDesc as ah, type PxScroll as ai, PxScrollAxis as aj, PxScrollKind as ak, PxScrollPhase as al, type PxScrollRangePoint as am, PxScrollRangePointSchema as an, PxScrollRangeSchema as ao, PxScrollSchema as ap, PxScrollSource as aq, PxStrokeTrimEffectSchema as ar, PxStrokeTrimSubPaths as as, type PxSvgNode as at, PxSvgNodeRootSchema as au, PxTextEffectSchema as av, PxTextPathEffectSchema as aw, PxTextPathMethod as ax, PxTextPathSpacing as ay, type PxTimeline as az, type PxAnimatorApi as b, formatWireVersion as b0, generateNewIds as b1, getAnimatorConfig as b2, getBindings as b3, getChildren as b4, getDefinitions as b5, isNativeForced as b6, isPxDocument as b7, isValidPxDocument as b8, materializeAllInTree as b9, createDiagnostics as bA, deepClone as bB, generateUniqueId as bC, interpolateValue as bD, keyframeEasing as bE, keyframeValue as bF, materializeMotionPathInPropAnim as bG, mergeStaticTransformIntoAnimDef as bH, reportDocumentDiagnostics as bI, sanitizeAttributeValue as bJ, mayUseNativeScrollTimeline as ba, nestAnimatorTimeline as bb, normalizeBindings as bc, parseWireVersion as bd, px as be, readWireVersion as bf, resolveControlMode as bg, resolveTimelineEngine as bh, resolveTrigger as bi, schemaKeys as bj, toDomProps as bk, validateDocument as bl, validateNodeEffects as bm, wireVersionAdvice as bn, type PxAnimatable as bo, PX_ANIM_ATTR_NAME as bp, PX_ANIM_SRC_ATTR_NAME as bq, PX_CSS_ONLY_STYLE_PROPS as br, PX_DISALLOWED_SVG_TAGS_LOWER as bs, PX_LOOP_JUMP_SHIFT_MS as bt, PX_TEXT_CONTENT_ATTR as bu, PX_UNKNOWN_KEY_ERROR as bv, type PxAnyKeyframe as bw, type PxMaterializeAllOptions as bx, type PxNormalizedKeyframe as by, type PxNormalizedPropertyAnimation as bz, type PxAnimatorConfig as c, PxTriggerStart as d, type PxNode as e, PX_TRANSFORM_PART_KEYS as f, PX_TRIGGER_DEFAULTS as g, PX_WIRE_BASELINE_VERSION as h, PX_WIRE_STEPS as i, PX_WIRE_VERSION as j, PX_WIRE_VERSION_KEY as k, PxAlongPathMode as l, PxAnimatedSvgDocumentSchema as m, type PxAnimationDefinition as n, type PxAnimatorCallbacks as o, PxAnimatorConfigSchema as p, type PxAnimatorHandle as q, PxAttrValueSchema as r, type PxBezierPath as s, PxBezierPathSchema as t, type PxBinding as u, PxClipPathEffectSchema as v, PxCloneEffectSchema as w, PxCloneWithout as x, PxControlMode as y, type PxControlProps as z };