gesso-core 0.7.0 → 0.8.1
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/CHANGELOG.md +29 -0
- package/dist/{CanvasSurface-BpgbOku2.js → CanvasSurface-CkRHlmpu.js} +3550 -2648
- package/dist/CanvasSurface-CkRHlmpu.js.map +1 -0
- package/dist/{index-B5r1ETCh.d.ts → index-BSoAnZP0.d.ts} +876 -307
- package/dist/index.d.ts +2 -2
- package/dist/index.js +654 -210
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
- package/dist/CanvasSurface-BpgbOku2.js.map +0 -1
|
@@ -8,6 +8,13 @@ import { BehaviorSubject, Observable, Subject } from "rxjs";
|
|
|
8
8
|
* easing — so nothing downstream clamps what it returns.
|
|
9
9
|
*/
|
|
10
10
|
type UiEasing = (t: number) => number;
|
|
11
|
+
/**
|
|
12
|
+
* The easing as CSS writes it, `cubic-bezier(0.2, 0, 0, 1)` or `linear`,
|
|
13
|
+
* for an easing made by `cubicBezier` or `linear`; undefined for one
|
|
14
|
+
* that is only a function, which CSS cannot name. What a design tool's
|
|
15
|
+
* handoff writes into a `transition`.
|
|
16
|
+
*/
|
|
17
|
+
declare function easingCss(easing: UiEasing): string | undefined;
|
|
11
18
|
/** Progress equals time. What a spinner and a sweep want. */
|
|
12
19
|
declare const linear: UiEasing;
|
|
13
20
|
/**
|
|
@@ -291,11 +298,30 @@ declare function interpolatorFor(from: unknown, to: unknown): UiInterpolator<unk
|
|
|
291
298
|
* it has forty opinions. the rule for colour —
|
|
292
299
|
* tokens only, never a literal in a component — applies to time.
|
|
293
300
|
*/
|
|
294
|
-
type UiDurationToken = 'instant' | 'fast' | 'normal' | 'slow' | 'deliberate';
|
|
301
|
+
type UiDurationToken = 'instant' | 'fast' | 'normal' | 'slow' | 'deliberate' | (keyof UiDurationExtensions & string);
|
|
295
302
|
/** The named curves; see `UiEasing.ts` for what each one is for. */
|
|
296
|
-
type UiEasingToken = keyof typeof easings;
|
|
303
|
+
type UiEasingToken = keyof typeof easings | (keyof UiEasingExtensions & string);
|
|
297
304
|
/** The named springs, for a movement that follows a gesture. */
|
|
298
|
-
type UiSpringToken = 'gentle' | 'snappy' | 'stiff';
|
|
305
|
+
type UiSpringToken = 'gentle' | 'snappy' | 'stiff' | (keyof UiSpringExtensions & string);
|
|
306
|
+
/**
|
|
307
|
+
* Names an application adds to the vocabulary, as typography roles are
|
|
308
|
+
* added (`UiTypographyExtensions`): a design's own `press` beside
|
|
309
|
+
* `fast`, given its value in the motion it provides (`defineMotion`).
|
|
310
|
+
*
|
|
311
|
+
* declare module 'gesso-core' {
|
|
312
|
+
* interface UiDurationExtensions {
|
|
313
|
+
* readonly press: unknown;
|
|
314
|
+
* }
|
|
315
|
+
* }
|
|
316
|
+
*
|
|
317
|
+
* Only the key is used. Declaring one makes `transition={{ opacity:
|
|
318
|
+
* 'press' }}` legal and a misspelling a compile error.
|
|
319
|
+
*/
|
|
320
|
+
interface UiDurationExtensions {}
|
|
321
|
+
/** Curves an application names; see `UiDurationExtensions`. */
|
|
322
|
+
interface UiEasingExtensions {}
|
|
323
|
+
/** Springs an application names; see `UiDurationExtensions`. */
|
|
324
|
+
interface UiSpringExtensions {}
|
|
299
325
|
/**
|
|
300
326
|
* A spring, in the physical sense: `stiffness` pulls towards the
|
|
301
327
|
* target, `damping` resists velocity, `mass` resists both.
|
|
@@ -314,21 +340,42 @@ interface UiSpringSpec {
|
|
|
314
340
|
/**
|
|
315
341
|
* A vocabulary of motion, beside the palette and the type scale.
|
|
316
342
|
*
|
|
317
|
-
* It is deliberately **not** a field on `UiTheme
|
|
318
|
-
* resolved per node
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
* the
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
* is per runtime, as everything else in front of the graph is.
|
|
343
|
+
* It is deliberately **not** a field on `UiTheme`: a theme value is
|
|
344
|
+
* resolved per node at paint, and a name in an animation is resolved
|
|
345
|
+
* once, when the animation starts. An application that wants a
|
|
346
|
+
* different feel installs one with `AnimationService.setMotion`, for
|
|
347
|
+
* the whole runtime, and a part of the tree may provide another over it
|
|
348
|
+
* (`UiEnvironmentKeys.motion`): a name in a `transition` or a `motion`
|
|
349
|
+
* state resolves against the motion where it is drawn (`motionOf`).
|
|
325
350
|
*/
|
|
326
351
|
interface UiMotion {
|
|
327
352
|
readonly durations: Readonly<Record<UiDurationToken, number>>;
|
|
328
353
|
readonly easings: Readonly<Record<UiEasingToken, UiEasing>>;
|
|
329
354
|
readonly springs: Readonly<Record<UiSpringToken, UiSpringSpec>>;
|
|
330
355
|
}
|
|
356
|
+
/** What a design changes in the vocabulary: any name, its own included. */
|
|
357
|
+
interface UiMotionChanges {
|
|
358
|
+
readonly durations?: Readonly<Partial<Record<UiDurationToken, number>>>;
|
|
359
|
+
readonly easings?: Readonly<Partial<Record<UiEasingToken, UiEasing>>>;
|
|
360
|
+
readonly springs?: Readonly<Partial<Record<UiSpringToken, UiSpringSpec>>>;
|
|
361
|
+
}
|
|
331
362
|
declare const defaultMotion: UiMotion;
|
|
363
|
+
/**
|
|
364
|
+
* A vocabulary with a design's own values, Gesso's for the rest:
|
|
365
|
+
*
|
|
366
|
+
* export const motion = defineMotion({ durations: { fast: 100, press: 90 } });
|
|
367
|
+
*
|
|
368
|
+
* Provided to a part of the tree (`UiEnvironmentKeys.motion`) or to the
|
|
369
|
+
* whole runtime (`AnimationService.setMotion`), it is what a name in a
|
|
370
|
+
* `transition`, a `motion` state or `AnimationService` resolves to.
|
|
371
|
+
*/
|
|
372
|
+
declare function defineMotion(changes: UiMotionChanges): UiMotion;
|
|
373
|
+
/** A duration by name or in milliseconds, as `motion` has it; `normal` for a name it lacks. */
|
|
374
|
+
declare function durationIn(motion: UiMotion, duration: number | UiDurationToken | undefined): number;
|
|
375
|
+
/** A curve by name, or given outright; `standard` for none or a name it lacks. */
|
|
376
|
+
declare function easingIn(motion: UiMotion, easing: UiEasing | UiEasingToken | undefined): UiEasing;
|
|
377
|
+
/** A spring by name, or given outright; `snappy` for none or a name it lacks. */
|
|
378
|
+
declare function springIn(motion: UiMotion, spring: UiSpringSpec | UiSpringToken | undefined): UiSpringSpec;
|
|
332
379
|
//#endregion
|
|
333
380
|
//#region src/animation/UiAnimation.d.ts
|
|
334
381
|
/**
|
|
@@ -499,7 +546,8 @@ declare abstract class UiAnimation<T> {
|
|
|
499
546
|
*/
|
|
500
547
|
continueFrom(previous: UiAnimation<T>): void;
|
|
501
548
|
protected onBegin(): void;
|
|
502
|
-
|
|
549
|
+
/** `hold`: at its end, stay there, unfinished, to be sampled again at an earlier time (`UiClock.holding`). */
|
|
550
|
+
advance(now: number, hold?: boolean): void;
|
|
503
551
|
/**
|
|
504
552
|
* Moves the ideal timeline on by one step.
|
|
505
553
|
*
|
|
@@ -597,13 +645,15 @@ declare function createTween<T>(cell: AnimatedCell<T>, to: T, options: UiTweenOp
|
|
|
597
645
|
*/
|
|
598
646
|
type UiTransitionSpec = {
|
|
599
647
|
readonly kind: 'tween';
|
|
600
|
-
|
|
601
|
-
readonly
|
|
648
|
+
/** Milliseconds, or a name resolved against the motion where it is drawn. */
|
|
649
|
+
readonly duration: number | UiDurationToken;
|
|
650
|
+
readonly easing?: UiEasing | UiEasingToken;
|
|
602
651
|
readonly stepMs?: number;
|
|
603
652
|
readonly reducedMotion?: UiReducedMotionPolicy;
|
|
604
653
|
} | {
|
|
605
654
|
readonly kind: 'spring';
|
|
606
|
-
|
|
655
|
+
/** Given outright, or a name resolved against the motion where it is drawn. */
|
|
656
|
+
readonly spring: UiSpringSpec | UiSpringToken;
|
|
607
657
|
readonly restDelta?: number;
|
|
608
658
|
readonly reducedMotion?: UiReducedMotionPolicy;
|
|
609
659
|
};
|
|
@@ -615,10 +665,10 @@ type UiTransitionSpec = {
|
|
|
615
665
|
* transition does. A spring is for a property that is one number, like
|
|
616
666
|
* `opacity`: a transform only tweens (see `spring`).
|
|
617
667
|
*/
|
|
618
|
-
type UiTransitionValue = number | UiTransitionSpec;
|
|
668
|
+
type UiTransitionValue = number | UiDurationToken | UiTransitionSpec;
|
|
619
669
|
/** A tween of `duration` milliseconds along `easing`. */
|
|
620
|
-
declare function tween(duration: number, options?: {
|
|
621
|
-
easing?: UiEasing;
|
|
670
|
+
declare function tween(duration: number | UiDurationToken, options?: {
|
|
671
|
+
easing?: UiEasing | UiEasingToken;
|
|
622
672
|
stepMs?: number;
|
|
623
673
|
reducedMotion?: UiReducedMotionPolicy;
|
|
624
674
|
}): UiTransitionSpec;
|
|
@@ -639,143 +689,6 @@ declare function normalizeTransition(value: UiTransitionValue): UiTransitionSpec
|
|
|
639
689
|
*/
|
|
640
690
|
declare function assertTransitionMap(nodeId: string, value: unknown, isKnownProperty: (name: string) => boolean): ReadonlyMap<string, UiTransitionSpec>;
|
|
641
691
|
//#endregion
|
|
642
|
-
//#region src/animation/AnimationDriver.d.ts
|
|
643
|
-
/**
|
|
644
|
-
* The running animations of one runtime, and the thing the `ticks`
|
|
645
|
-
* phase advances.
|
|
646
|
-
*
|
|
647
|
-
* **One animation per cell.** Starting a second one on a cell
|
|
648
|
-
* supersedes the first, which completes without reaching its target.
|
|
649
|
-
* That rule is not a simplification: it is what makes a gesture work
|
|
650
|
-
* — every retarget while a finger moves is a new animation on the same
|
|
651
|
-
* cell — and it removes the whole question of what two animations
|
|
652
|
-
* writing one value would mean.
|
|
653
|
-
*
|
|
654
|
-
* The driver is per runtime for the reason `MediaService` is: the
|
|
655
|
-
* playground runs several runtimes in one worker, and a module-level
|
|
656
|
-
* set of animations would tick a disposed runtime's cells.
|
|
657
|
-
*/
|
|
658
|
-
declare class AnimationDriver {
|
|
659
|
-
private readonly running;
|
|
660
|
-
private reducedMotion;
|
|
661
|
-
private hidden;
|
|
662
|
-
private wake;
|
|
663
|
-
/**
|
|
664
|
-
* Called when an animation enters the running set on an idle driver.
|
|
665
|
-
*
|
|
666
|
-
* The runtime arms a frame here. Without it an animation started
|
|
667
|
-
* from a click handler that changes nothing else would never get a
|
|
668
|
-
* first frame: the scheduler arms only on dirt, the animation's dirt
|
|
669
|
-
* is made inside a frame, and no frame would ever come. Re-arming
|
|
670
|
-
* *between* frames is `scheduleAnimationTick`'s job; this is only
|
|
671
|
-
* the first one.
|
|
672
|
-
*/
|
|
673
|
-
setWakeListener(listener: (() => void) | null): void;
|
|
674
|
-
/** Whether anything is running, so the `ticks` phase can report 0. */
|
|
675
|
-
get isRunning(): boolean;
|
|
676
|
-
get size(): number;
|
|
677
|
-
/** Whether a person has asked for less motion; see `UiReducedMotionPolicy`. */
|
|
678
|
-
get isReducedMotion(): boolean;
|
|
679
|
-
/**
|
|
680
|
-
* Whether an animation should be put where it is going instead of
|
|
681
|
-
* being run there.
|
|
682
|
-
*
|
|
683
|
-
* Two questions with one answer: a person who has asked for less
|
|
684
|
-
* motion and a page nobody is looking at both want the end state and
|
|
685
|
-
* not the journey to it, and in both cases `keep` is the way an
|
|
686
|
-
* animation says its movement is the information rather than the
|
|
687
|
-
* decoration.
|
|
688
|
-
*/
|
|
689
|
-
private lands;
|
|
690
|
-
/**
|
|
691
|
-
* Starts an animation, replacing whatever was driving its cell.
|
|
692
|
-
*
|
|
693
|
-
* Returns the values it will write. Under reduced motion, or while
|
|
694
|
-
* the document is hidden, an animation whose policy is `snap` never
|
|
695
|
-
* enters the set at all: the cell takes its target here, in the
|
|
696
|
-
* caller's turn, and the returned observable has already completed.
|
|
697
|
-
* So a reduced-motion app runs no animation frames, rather than
|
|
698
|
-
* running them and drawing the same thing sixty times.
|
|
699
|
-
*/
|
|
700
|
-
start<T>(animation: UiAnimation<T>): Observable<T>;
|
|
701
|
-
/** The animation currently driving a cell, if any. */
|
|
702
|
-
animationFor<T>(cell: AnimatedCell<T>): UiAnimation<T> | undefined;
|
|
703
|
-
/**
|
|
704
|
-
* Stops whatever is driving a cell, leaving it where it stands.
|
|
705
|
-
*
|
|
706
|
-
* This is how a node leaving the tree releases its animations, which
|
|
707
|
-
* is the leak the media tier names for image bitmaps and which
|
|
708
|
-
* matters here too: a driver holding a cell holds every closure the
|
|
709
|
-
* component that made it captured.
|
|
710
|
-
*/
|
|
711
|
-
stop<T>(cell: AnimatedCell<T>): boolean;
|
|
712
|
-
stopAll(): void;
|
|
713
|
-
/**
|
|
714
|
-
* A person's motion preference changed.
|
|
715
|
-
*
|
|
716
|
-
* Turning it on finishes everything already in flight that is
|
|
717
|
-
* willing to be finished, rather than leaving a dialog stuck
|
|
718
|
-
* half-faded until the animation it was told not to run runs out.
|
|
719
|
-
*/
|
|
720
|
-
setReducedMotion(reduced: boolean): void;
|
|
721
|
-
/**
|
|
722
|
-
* The document went out of sight, or came back.
|
|
723
|
-
*
|
|
724
|
-
* A hidden page still paints. The runtime deliberately keeps giving
|
|
725
|
-
* frames to a change that genuinely happened, so the canvas holds a
|
|
726
|
-
* correct picture rather than whatever was on it when the tab went
|
|
727
|
-
* away, and a route loaded hidden is drawn once its images have
|
|
728
|
-
* decoded rather than being left half empty. What it does not do is
|
|
729
|
-
* advance animations, because frames spent watching something move
|
|
730
|
-
* that nobody can see are frames spent for nothing.
|
|
731
|
-
*
|
|
732
|
-
* Those two together leave an animation frozen at whatever value it
|
|
733
|
-
* had reached, and painted there. For most animations that is
|
|
734
|
-
* harmless: a colour halfway between two colours is still a colour.
|
|
735
|
-
* For an **entrance** it is not, because an entrance begins at
|
|
736
|
-
* `opacity: 0` and its frozen first value is an element that is not
|
|
737
|
-
* there. Segue's track page, opened in a background tab, held sixty
|
|
738
|
-
* two pixels of empty page where its play button belonged, and every
|
|
739
|
-
* screen built from `motion({ initial })` did the same. It came back
|
|
740
|
-
* the moment the tab did, which is exactly why it reads as a
|
|
741
|
-
* rendering bug rather than as a tab that is not being drawn.
|
|
742
|
-
*
|
|
743
|
-
* So a hidden page lands its animations instead of freezing them, in
|
|
744
|
-
* the same way and for the same reason a reduced-motion preference
|
|
745
|
-
* does: what an animation has to say to nobody is nothing, and the
|
|
746
|
-
* state it was going to end at is the one the page should be holding
|
|
747
|
-
* while it waits to be looked at. An animation whose movement is the
|
|
748
|
-
* information (`keep`) is left alone either way, so a spinner is
|
|
749
|
-
* still a spinner when the tab comes back.
|
|
750
|
-
*/
|
|
751
|
-
setHidden(hidden: boolean): void;
|
|
752
|
-
/** Puts everything that may be landed where it was going. */
|
|
753
|
-
private landRunning;
|
|
754
|
-
/**
|
|
755
|
-
* When the earliest animation next wants a frame, or undefined when
|
|
756
|
-
* nothing is running.
|
|
757
|
-
*
|
|
758
|
-
* This is the whole answer to "how does an animation keep frames
|
|
759
|
-
* coming on an idle app". The runtime asks after every frame: an
|
|
760
|
-
* answer at or before `now` means arm the next frame, a later one
|
|
761
|
-
* means a timer, and undefined means arm nothing — which is why an
|
|
762
|
-
* idle app's profile reads `ticks 0.00` for the strong reason (no
|
|
763
|
-
* frames at all) rather than the weak one (frames that did nothing).
|
|
764
|
-
*/
|
|
765
|
-
nextTickAt(now: number): number | undefined;
|
|
766
|
-
/**
|
|
767
|
-
* Advances every animation whose next sample is due, writing each
|
|
768
|
-
* one's cell. This is the `ticks` phase.
|
|
769
|
-
*
|
|
770
|
-
* It runs before the dirty set is snapshotted for exactly the reason
|
|
771
|
-
* `patches` and `environment` do: the writes it makes have to belong
|
|
772
|
-
* to the frame about to be collected, or a frame would draw the
|
|
773
|
-
* previous tick's values and every animation would run one frame
|
|
774
|
-
* behind.
|
|
775
|
-
*/
|
|
776
|
-
advance(now: number): void;
|
|
777
|
-
}
|
|
778
|
-
//#endregion
|
|
779
692
|
//#region src/graph/DirtyFlags.d.ts
|
|
780
693
|
declare enum DirtyFlags {
|
|
781
694
|
None = 0,
|
|
@@ -841,6 +754,27 @@ declare function createEnvironmentKey<T>(options: {
|
|
|
841
754
|
* declared as a key.
|
|
842
755
|
*/
|
|
843
756
|
declare function findEnvironmentKey(name: string): UiEnvironmentKey<unknown> | undefined;
|
|
757
|
+
/**
|
|
758
|
+
* A value a node provides for a key of your own, to everything under
|
|
759
|
+
* it: `provide={[provided(Session, session)]}`.
|
|
760
|
+
*
|
|
761
|
+
* The keys Gesso declares are provided by props of their own (`theme`,
|
|
762
|
+
* `pointer`, `contentColor`); this is how a key made with
|
|
763
|
+
* `createEnvironmentKey` is. A component under the node reads it with
|
|
764
|
+
* `ctx.environment(key)`. What the environment holds is compared by
|
|
765
|
+
* the key's `compare`, else by identity, so a value that changes often
|
|
766
|
+
* is better provided as a source (a cell) than as each new value: the
|
|
767
|
+
* source is set once and never compares unequal again.
|
|
768
|
+
*/
|
|
769
|
+
interface UiProvision<T = unknown> {
|
|
770
|
+
readonly key: UiEnvironmentKey<T>;
|
|
771
|
+
readonly value: T;
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* A value for `key`, for a node's `provide`. Typed against the key
|
|
775
|
+
* here and erased in the result, so one list holds keys of any type.
|
|
776
|
+
*/
|
|
777
|
+
declare function provided<T>(key: UiEnvironmentKey<T>, value: T): UiProvision;
|
|
844
778
|
//#endregion
|
|
845
779
|
//#region src/environment/UiEnvironment.d.ts
|
|
846
780
|
/**
|
|
@@ -909,6 +843,86 @@ declare class UiEnvironment {
|
|
|
909
843
|
providesOwn(name: string): boolean;
|
|
910
844
|
}
|
|
911
845
|
//#endregion
|
|
846
|
+
//#region src/layout/LayoutTypes.d.ts
|
|
847
|
+
interface Size {
|
|
848
|
+
width: number;
|
|
849
|
+
height: number;
|
|
850
|
+
}
|
|
851
|
+
interface LayoutBox {
|
|
852
|
+
x: number;
|
|
853
|
+
y: number;
|
|
854
|
+
width: number;
|
|
855
|
+
height: number;
|
|
856
|
+
}
|
|
857
|
+
/**
|
|
858
|
+
* Options applied to a Constraints instance.
|
|
859
|
+
*
|
|
860
|
+
* An explicit width/height makes that axis tight
|
|
861
|
+
* (min === max), mirroring CSS replaced sizing.
|
|
862
|
+
*/
|
|
863
|
+
interface TightenOptions {
|
|
864
|
+
width?: number;
|
|
865
|
+
height?: number;
|
|
866
|
+
minWidth?: number;
|
|
867
|
+
maxWidth?: number;
|
|
868
|
+
minHeight?: number;
|
|
869
|
+
maxHeight?: number;
|
|
870
|
+
}
|
|
871
|
+
/**
|
|
872
|
+
* Immutable bounds handed down the layout tree.
|
|
873
|
+
*
|
|
874
|
+
* Unbounded axes use Infinity for max.
|
|
875
|
+
*/
|
|
876
|
+
declare class Constraints {
|
|
877
|
+
readonly minWidth: number;
|
|
878
|
+
readonly maxWidth: number;
|
|
879
|
+
readonly minHeight: number;
|
|
880
|
+
readonly maxHeight: number;
|
|
881
|
+
constructor(minWidth?: number, maxWidth?: number, minHeight?: number, maxHeight?: number);
|
|
882
|
+
static unbounded(): Constraints;
|
|
883
|
+
static tight(width: number, height: number): Constraints;
|
|
884
|
+
static loose(width: number, height: number): Constraints;
|
|
885
|
+
hasBoundedWidth(): boolean;
|
|
886
|
+
hasBoundedHeight(): boolean;
|
|
887
|
+
}
|
|
888
|
+
/** What one layout call did; see LayoutEngine.stats. */
|
|
889
|
+
interface LayoutStats {
|
|
890
|
+
/** Nodes whose measure ran (memo hits excluded). */
|
|
891
|
+
measured: number;
|
|
892
|
+
/** Nodes whose place ran. */
|
|
893
|
+
placed: number;
|
|
894
|
+
/** Laid-out subtrees that moved without changing size, and were shifted rather than placed again. */
|
|
895
|
+
shifted: number;
|
|
896
|
+
/** Subtrees laid out from a relayout boundary instead of the root. */
|
|
897
|
+
relayoutRoots: number;
|
|
898
|
+
/** Whether the pass started from the root. */
|
|
899
|
+
fullLayout: boolean;
|
|
900
|
+
/** Every node whose measure ran, in order, when `LayoutEngine.trace` is on. */
|
|
901
|
+
measuredNodes: UiNode[];
|
|
902
|
+
}
|
|
903
|
+
/**
|
|
904
|
+
* The result of a full layout pass for the layout root.
|
|
905
|
+
*
|
|
906
|
+
* Descendant geometry is read from LayoutRecords.
|
|
907
|
+
*/
|
|
908
|
+
interface LayoutResult {
|
|
909
|
+
root: UiNode;
|
|
910
|
+
box: LayoutBox;
|
|
911
|
+
contentWidth: number;
|
|
912
|
+
contentHeight: number;
|
|
913
|
+
scrollX: number;
|
|
914
|
+
scrollY: number;
|
|
915
|
+
clip: LayoutBox;
|
|
916
|
+
}
|
|
917
|
+
declare function clampSize(constraints: Constraints, width: number, height: number): Size;
|
|
918
|
+
declare function constraintsEqual(a: Constraints, b: Constraints): boolean;
|
|
919
|
+
/**
|
|
920
|
+
* Returns new constraints with the options applied on top of
|
|
921
|
+
* the supplied constraints. Explicit sizes make an axis tight,
|
|
922
|
+
* min/max values tighten the existing bounds.
|
|
923
|
+
*/
|
|
924
|
+
declare function tightenConstraints(constraints: Constraints, options: TightenOptions): Constraints;
|
|
925
|
+
//#endregion
|
|
912
926
|
//#region src/layout/TextMeasurer.d.ts
|
|
913
927
|
type TextWrap = 'word' | 'char' | 'none';
|
|
914
928
|
type TextOverflow = 'clip' | 'ellipsis';
|
|
@@ -1880,8 +1894,11 @@ declare const UI_SUBGRID_AXES: readonly UiSubgridAxis[];
|
|
|
1880
1894
|
declare function validateSubgrid(value: unknown): string | undefined;
|
|
1881
1895
|
type UiPosition = 'static' | 'relative' | 'absolute' | 'sticky';
|
|
1882
1896
|
type UiOverflow = 'visible' | 'hidden' | 'scroll' | 'auto';
|
|
1883
|
-
/**
|
|
1884
|
-
|
|
1897
|
+
/**
|
|
1898
|
+
* Side and alignment of an anchored node against its anchor, or `over`
|
|
1899
|
+
* it: laid over the anchor's box, grown by the offset on every side.
|
|
1900
|
+
*/
|
|
1901
|
+
type UiPlacement = 'over' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end';
|
|
1885
1902
|
type UiTextWrapValue = 'word' | 'char' | 'none';
|
|
1886
1903
|
type UiTextOverflowValue = 'clip' | 'ellipsis';
|
|
1887
1904
|
/**
|
|
@@ -2062,6 +2079,12 @@ interface UiPropertyOverride {
|
|
|
2062
2079
|
readonly name: string;
|
|
2063
2080
|
order: number;
|
|
2064
2081
|
value: unknown;
|
|
2082
|
+
/**
|
|
2083
|
+
* Drawn at once, past any transition the node declares, and taken
|
|
2084
|
+
* away at once too: a design tool's preview of a value being chosen,
|
|
2085
|
+
* which has to keep up with the drag that chooses it.
|
|
2086
|
+
*/
|
|
2087
|
+
readonly snap?: boolean;
|
|
2065
2088
|
}
|
|
2066
2089
|
/**
|
|
2067
2090
|
* The cascade for one overridden property: the element's own value,
|
|
@@ -2087,9 +2110,23 @@ interface UiPropertyOverrides {
|
|
|
2087
2110
|
interface UiNodeTransitions {
|
|
2088
2111
|
/** Takes over a write by animating towards it, or declines it. */
|
|
2089
2112
|
write(property: NodeProperty, value: unknown, flags: DirtyFlags): boolean;
|
|
2113
|
+
/** Stops animating one property, leaving it where it stands, for a write that is drawn at once. */
|
|
2114
|
+
cancel(property: NodeProperty): void;
|
|
2115
|
+
/** What the element declares, by property, as written: a name stays a name. For a tool that reads it. */
|
|
2116
|
+
readonly declared: ReadonlyMap<NodeProperty, UiTransitionSpec>;
|
|
2090
2117
|
/** Cancels everything, for a node leaving the tree. */
|
|
2091
2118
|
release(): void;
|
|
2092
2119
|
}
|
|
2120
|
+
/**
|
|
2121
|
+
* What a held subtree is waiting to do: the marks its descendants were
|
|
2122
|
+
* given while it was held, and the environment its descendants are to
|
|
2123
|
+
* take again when it is let go. See `UiGraph.hold`.
|
|
2124
|
+
*/
|
|
2125
|
+
interface UiHold {
|
|
2126
|
+
readonly pending: Map<UiNode, DirtyFlags>;
|
|
2127
|
+
/** The inherited-property flags a rebuild of the subtree's environment is owed, or None. */
|
|
2128
|
+
environment: DirtyFlags;
|
|
2129
|
+
}
|
|
2093
2130
|
declare class UiNode {
|
|
2094
2131
|
readonly id: NodeId;
|
|
2095
2132
|
readonly type: UiNodeType;
|
|
@@ -2153,111 +2190,260 @@ declare class UiNode {
|
|
|
2153
2190
|
*/
|
|
2154
2191
|
environment: UiEnvironment | null;
|
|
2155
2192
|
/**
|
|
2156
|
-
* Shapes the node's modifiers put in its own paint pass, merged in
|
|
2157
|
-
* modifier order.
|
|
2193
|
+
* Shapes the node's modifiers put in its own paint pass, merged in
|
|
2194
|
+
* modifier order.
|
|
2195
|
+
*
|
|
2196
|
+
* Null until a modifier decorates, so the cost to an undecorated
|
|
2197
|
+
* node is the one null check each renderer already makes per node,
|
|
2198
|
+
* and a tree of ten thousand plain boxes pays nothing. Written only
|
|
2199
|
+
* through `UiModifierHost.decorate`; see `rendering/Decorations.ts`
|
|
2200
|
+
* for what a shape means and where it lands.
|
|
2201
|
+
*/
|
|
2202
|
+
decorations: readonly DecorationShape[] | null;
|
|
2203
|
+
/**
|
|
2204
|
+
* How this node's properties get from one value to the next.
|
|
2205
|
+
*
|
|
2206
|
+
* Null until the element declares a `transition`, so the cost to a
|
|
2207
|
+
* tree without one is a field read on the property write path — the
|
|
2208
|
+
* same shape, and the same argument, as `overrides` above.
|
|
2209
|
+
*/
|
|
2210
|
+
transitions: UiNodeTransitions | null;
|
|
2211
|
+
/**
|
|
2212
|
+
* Set on a node whose subtree is held (see `UiGraph.hold`): what its
|
|
2213
|
+
* descendants were marked dirty with while it was, to be marked again
|
|
2214
|
+
* when it is let go. Null on every node that holds nothing.
|
|
2215
|
+
*/
|
|
2216
|
+
hold: UiHold | null;
|
|
2217
|
+
/**
|
|
2218
|
+
* The held node this one is inside, or null. Kept on every descendant
|
|
2219
|
+
* of a held node, so a mark finds out it is to wait with one field
|
|
2220
|
+
* read rather than a walk up the tree.
|
|
2221
|
+
*/
|
|
2222
|
+
heldBy: UiNode | null;
|
|
2223
|
+
hasChildren(): boolean;
|
|
2224
|
+
isDirty(): boolean;
|
|
2225
|
+
getProperty<T>(property: NodeProperty): T | undefined;
|
|
2226
|
+
setProperty<T>(property: NodeProperty, value: T): void;
|
|
2227
|
+
/** Removes a property; whether it was there. */
|
|
2228
|
+
removeProperty(property: NodeProperty): boolean;
|
|
2229
|
+
}
|
|
2230
|
+
//#endregion
|
|
2231
|
+
//#region src/animation/UiClock.d.ts
|
|
2232
|
+
/**
|
|
2233
|
+
* How time passes for the animations under a node: at a speed of its
|
|
2234
|
+
* own, or not at all.
|
|
2235
|
+
*
|
|
2236
|
+
* A node provides one to its subtree,
|
|
2237
|
+
* `provide={[provided(UiEnvironmentKeys.clock, clock)]}`, and every
|
|
2238
|
+
* animation started there runs on it: a transition, a `motion` state,
|
|
2239
|
+
* hover and press, and `AnimationService.animate` given the node it
|
|
2240
|
+
* animates `on`. Nothing provided is real time.
|
|
2241
|
+
*
|
|
2242
|
+
* What a design tool needs to show one screen two ways at once. The
|
|
2243
|
+
* frames on its board are pictures: under a `settled` clock every
|
|
2244
|
+
* animation lands where it is going the moment it starts, and a loop
|
|
2245
|
+
* holds still. The screen it plays runs at the person's own speed, a
|
|
2246
|
+
* quarter of it to watch a press closely, or paused. Reduced motion and
|
|
2247
|
+
* a hidden page are the whole app's; this is one part of it.
|
|
2248
|
+
*
|
|
2249
|
+
* An animation takes all its time from the driver, which hands each
|
|
2250
|
+
* the local time of its clock, so nothing inside a tween or a spring
|
|
2251
|
+
* knows; and the driver asks for the next frame in real time, so a
|
|
2252
|
+
* slowed clock asks for frames as often as it needs them and a paused
|
|
2253
|
+
* one asks for none.
|
|
2254
|
+
*/
|
|
2255
|
+
declare class UiClock {
|
|
2256
|
+
private rate;
|
|
2257
|
+
/** A real time and the local time it was, from the last change of speed: where local time is measured from. */
|
|
2258
|
+
private anchor;
|
|
2259
|
+
/** The real time last asked about, where a change of speed takes effect. */
|
|
2260
|
+
private lastReal;
|
|
2261
|
+
/** Every animation lands where it is going, and none runs. */
|
|
2262
|
+
settled: boolean;
|
|
2263
|
+
/**
|
|
2264
|
+
* Animations that reach their end stay, held there, rather than
|
|
2265
|
+
* finishing: so moving the time back (`seek`) plays them back. What a
|
|
2266
|
+
* design tool scrubs a transition with; let go, they finish as they
|
|
2267
|
+
* would have. A spring, which is worked out step by step rather than
|
|
2268
|
+
* from the time, holds but does not run back.
|
|
2269
|
+
*/
|
|
2270
|
+
holding: boolean;
|
|
2271
|
+
/** Bumped by `seek`, so a driver knows to draw again at the new time. */
|
|
2272
|
+
moves: number;
|
|
2273
|
+
constructor(options?: {
|
|
2274
|
+
readonly speed?: number;
|
|
2275
|
+
readonly settled?: boolean;
|
|
2276
|
+
});
|
|
2277
|
+
/** How fast time passes: 1 is real time, 0.25 a quarter of it, 0 paused. */
|
|
2278
|
+
get speed(): number;
|
|
2279
|
+
set speed(next: number);
|
|
2280
|
+
/** The local time now, as last asked: where a seek is measured from. */
|
|
2281
|
+
get now(): number;
|
|
2282
|
+
/**
|
|
2283
|
+
* Puts local time at `at`, from now on: forward, or back to replay
|
|
2284
|
+
* what is held (`holding`). Paused, it stays there; running, it goes
|
|
2285
|
+
* on from there.
|
|
2286
|
+
*/
|
|
2287
|
+
seek(at: number): void;
|
|
2288
|
+
/** The local time at real time `now`. The first time asked, the two agree. */
|
|
2289
|
+
local(now: number): number;
|
|
2290
|
+
/** The real time at which local time `at` comes; Infinity while paused. */
|
|
2291
|
+
real(at: number): number;
|
|
2292
|
+
}
|
|
2293
|
+
/** The motion vocabulary names resolve to under `node`: the nearest provided above it, or Gesso's. */
|
|
2294
|
+
declare function motionOf(node: UiNode | null | undefined): UiMotion;
|
|
2295
|
+
/** The clock the animations under `node` run on: the nearest one provided above it, or null for real time. */
|
|
2296
|
+
declare function clockOf(node: UiNode | null | undefined): UiClock | null;
|
|
2297
|
+
//#endregion
|
|
2298
|
+
//#region src/animation/AnimationDriver.d.ts
|
|
2299
|
+
/**
|
|
2300
|
+
* The running animations of one runtime, and the thing the `ticks`
|
|
2301
|
+
* phase advances.
|
|
2302
|
+
*
|
|
2303
|
+
* **One animation per cell.** Starting a second one on a cell
|
|
2304
|
+
* supersedes the first, which completes without reaching its target.
|
|
2305
|
+
* That rule is not a simplification: it is what makes a gesture work
|
|
2306
|
+
* — every retarget while a finger moves is a new animation on the same
|
|
2307
|
+
* cell — and it removes the whole question of what two animations
|
|
2308
|
+
* writing one value would mean.
|
|
2309
|
+
*
|
|
2310
|
+
* The driver is per runtime for the reason `MediaService` is: the
|
|
2311
|
+
* playground runs several runtimes in one worker, and a module-level
|
|
2312
|
+
* set of animations would tick a disposed runtime's cells.
|
|
2313
|
+
*/
|
|
2314
|
+
declare class AnimationDriver {
|
|
2315
|
+
private readonly running;
|
|
2316
|
+
/** The clock each running animation was started on, when it was not real time; see `UiClock`. */
|
|
2317
|
+
private readonly clocks;
|
|
2318
|
+
/** Each clock's `moves` as last drawn: one moved since (a seek) is drawn at its new time at once. */
|
|
2319
|
+
private readonly seenMoves;
|
|
2320
|
+
private reducedMotion;
|
|
2321
|
+
private hidden;
|
|
2322
|
+
private advancing;
|
|
2323
|
+
private wake;
|
|
2324
|
+
/**
|
|
2325
|
+
* Called when an animation enters the running set on an idle driver.
|
|
2326
|
+
*
|
|
2327
|
+
* The runtime arms a frame here. Without it an animation started
|
|
2328
|
+
* from a click handler that changes nothing else would never get a
|
|
2329
|
+
* first frame: the scheduler arms only on dirt, the animation's dirt
|
|
2330
|
+
* is made inside a frame, and no frame would ever come. Re-arming
|
|
2331
|
+
* *between* frames is `scheduleAnimationTick`'s job; this is only
|
|
2332
|
+
* the first one.
|
|
2333
|
+
*/
|
|
2334
|
+
setWakeListener(listener: (() => void) | null): void;
|
|
2335
|
+
/**
|
|
2336
|
+
* Whether a frame of the running animations is being written now: a
|
|
2337
|
+
* value written meanwhile is a step of an animation, not a change for
|
|
2338
|
+
* a transition to animate again.
|
|
2339
|
+
*/
|
|
2340
|
+
get isAdvancing(): boolean;
|
|
2341
|
+
/** Whether anything is running, so the `ticks` phase can report 0. */
|
|
2342
|
+
get isRunning(): boolean;
|
|
2343
|
+
get size(): number;
|
|
2344
|
+
/** Whether a person has asked for less motion; see `UiReducedMotionPolicy`. */
|
|
2345
|
+
get isReducedMotion(): boolean;
|
|
2346
|
+
/**
|
|
2347
|
+
* Whether an animation should be put where it is going instead of
|
|
2348
|
+
* being run there.
|
|
2349
|
+
*
|
|
2350
|
+
* Two questions with one answer: a person who has asked for less
|
|
2351
|
+
* motion and a page nobody is looking at both want the end state and
|
|
2352
|
+
* not the journey to it, and in both cases `keep` is the way an
|
|
2353
|
+
* animation says its movement is the information rather than the
|
|
2354
|
+
* decoration.
|
|
2355
|
+
*/
|
|
2356
|
+
private lands;
|
|
2357
|
+
/**
|
|
2358
|
+
* Starts an animation, replacing whatever was driving its cell.
|
|
2359
|
+
*
|
|
2360
|
+
* Returns the values it will write. Under reduced motion, or while
|
|
2361
|
+
* the document is hidden, an animation whose policy is `snap` never
|
|
2362
|
+
* enters the set at all: the cell takes its target here, in the
|
|
2363
|
+
* caller's turn, and the returned observable has already completed.
|
|
2364
|
+
* So a reduced-motion app runs no animation frames, rather than
|
|
2365
|
+
* running them and drawing the same thing sixty times.
|
|
2366
|
+
*/
|
|
2367
|
+
start<T>(animation: UiAnimation<T>, clock?: UiClock | null): Observable<T>;
|
|
2368
|
+
/** The animation currently driving a cell, if any. */
|
|
2369
|
+
animationFor<T>(cell: AnimatedCell<T>): UiAnimation<T> | undefined;
|
|
2370
|
+
/**
|
|
2371
|
+
* Stops whatever is driving a cell, leaving it where it stands.
|
|
2372
|
+
*
|
|
2373
|
+
* This is how a node leaving the tree releases its animations, which
|
|
2374
|
+
* is the leak the media tier names for image bitmaps and which
|
|
2375
|
+
* matters here too: a driver holding a cell holds every closure the
|
|
2376
|
+
* component that made it captured.
|
|
2377
|
+
*/
|
|
2378
|
+
stop<T>(cell: AnimatedCell<T>): boolean;
|
|
2379
|
+
stopAll(): void;
|
|
2380
|
+
/**
|
|
2381
|
+
* A person's motion preference changed.
|
|
2382
|
+
*
|
|
2383
|
+
* Turning it on finishes everything already in flight that is
|
|
2384
|
+
* willing to be finished, rather than leaving a dialog stuck
|
|
2385
|
+
* half-faded until the animation it was told not to run runs out.
|
|
2386
|
+
*/
|
|
2387
|
+
setReducedMotion(reduced: boolean): void;
|
|
2388
|
+
/**
|
|
2389
|
+
* The document went out of sight, or came back.
|
|
2390
|
+
*
|
|
2391
|
+
* A hidden page still paints. The runtime deliberately keeps giving
|
|
2392
|
+
* frames to a change that genuinely happened, so the canvas holds a
|
|
2393
|
+
* correct picture rather than whatever was on it when the tab went
|
|
2394
|
+
* away, and a route loaded hidden is drawn once its images have
|
|
2395
|
+
* decoded rather than being left half empty. What it does not do is
|
|
2396
|
+
* advance animations, because frames spent watching something move
|
|
2397
|
+
* that nobody can see are frames spent for nothing.
|
|
2398
|
+
*
|
|
2399
|
+
* Those two together leave an animation frozen at whatever value it
|
|
2400
|
+
* had reached, and painted there. For most animations that is
|
|
2401
|
+
* harmless: a colour halfway between two colours is still a colour.
|
|
2402
|
+
* For an **entrance** it is not, because an entrance begins at
|
|
2403
|
+
* `opacity: 0` and its frozen first value is an element that is not
|
|
2404
|
+
* there. Segue's track page, opened in a background tab, held sixty
|
|
2405
|
+
* two pixels of empty page where its play button belonged, and every
|
|
2406
|
+
* screen built from `motion({ initial })` did the same. It came back
|
|
2407
|
+
* the moment the tab did, which is exactly why it reads as a
|
|
2408
|
+
* rendering bug rather than as a tab that is not being drawn.
|
|
2409
|
+
*
|
|
2410
|
+
* So a hidden page lands its animations instead of freezing them, in
|
|
2411
|
+
* the same way and for the same reason a reduced-motion preference
|
|
2412
|
+
* does: what an animation has to say to nobody is nothing, and the
|
|
2413
|
+
* state it was going to end at is the one the page should be holding
|
|
2414
|
+
* while it waits to be looked at. An animation whose movement is the
|
|
2415
|
+
* information (`keep`) is left alone either way, so a spinner is
|
|
2416
|
+
* still a spinner when the tab comes back.
|
|
2417
|
+
*/
|
|
2418
|
+
setHidden(hidden: boolean): void;
|
|
2419
|
+
/** Puts everything that may be landed where it was going. */
|
|
2420
|
+
private landRunning;
|
|
2421
|
+
/**
|
|
2422
|
+
* When the earliest animation next wants a frame, or undefined when
|
|
2423
|
+
* nothing is running.
|
|
2158
2424
|
*
|
|
2159
|
-
*
|
|
2160
|
-
*
|
|
2161
|
-
*
|
|
2162
|
-
*
|
|
2163
|
-
*
|
|
2425
|
+
* This is the whole answer to "how does an animation keep frames
|
|
2426
|
+
* coming on an idle app". The runtime asks after every frame: an
|
|
2427
|
+
* answer at or before `now` means arm the next frame, a later one
|
|
2428
|
+
* means a timer, and undefined means arm nothing — which is why an
|
|
2429
|
+
* idle app's profile reads `ticks 0.00` for the strong reason (no
|
|
2430
|
+
* frames at all) rather than the weak one (frames that did nothing).
|
|
2164
2431
|
*/
|
|
2165
|
-
|
|
2432
|
+
nextTickAt(now: number): number | undefined;
|
|
2166
2433
|
/**
|
|
2167
|
-
*
|
|
2434
|
+
* Advances every animation whose next sample is due, writing each
|
|
2435
|
+
* one's cell. This is the `ticks` phase.
|
|
2168
2436
|
*
|
|
2169
|
-
*
|
|
2170
|
-
*
|
|
2171
|
-
*
|
|
2437
|
+
* It runs before the dirty set is snapshotted for exactly the reason
|
|
2438
|
+
* `patches` and `environment` do: the writes it makes have to belong
|
|
2439
|
+
* to the frame about to be collected, or a frame would draw the
|
|
2440
|
+
* previous tick's values and every animation would run one frame
|
|
2441
|
+
* behind.
|
|
2172
2442
|
*/
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
getProperty<T>(property: NodeProperty): T | undefined;
|
|
2177
|
-
setProperty<T>(property: NodeProperty, value: T): void;
|
|
2178
|
-
/** Removes a property; whether it was there. */
|
|
2179
|
-
removeProperty(property: NodeProperty): boolean;
|
|
2180
|
-
}
|
|
2181
|
-
//#endregion
|
|
2182
|
-
//#region src/layout/LayoutTypes.d.ts
|
|
2183
|
-
interface Size {
|
|
2184
|
-
width: number;
|
|
2185
|
-
height: number;
|
|
2186
|
-
}
|
|
2187
|
-
interface LayoutBox {
|
|
2188
|
-
x: number;
|
|
2189
|
-
y: number;
|
|
2190
|
-
width: number;
|
|
2191
|
-
height: number;
|
|
2192
|
-
}
|
|
2193
|
-
/**
|
|
2194
|
-
* Options applied to a Constraints instance.
|
|
2195
|
-
*
|
|
2196
|
-
* An explicit width/height makes that axis tight
|
|
2197
|
-
* (min === max), mirroring CSS replaced sizing.
|
|
2198
|
-
*/
|
|
2199
|
-
interface TightenOptions {
|
|
2200
|
-
width?: number;
|
|
2201
|
-
height?: number;
|
|
2202
|
-
minWidth?: number;
|
|
2203
|
-
maxWidth?: number;
|
|
2204
|
-
minHeight?: number;
|
|
2205
|
-
maxHeight?: number;
|
|
2206
|
-
}
|
|
2207
|
-
/**
|
|
2208
|
-
* Immutable bounds handed down the layout tree.
|
|
2209
|
-
*
|
|
2210
|
-
* Unbounded axes use Infinity for max.
|
|
2211
|
-
*/
|
|
2212
|
-
declare class Constraints {
|
|
2213
|
-
readonly minWidth: number;
|
|
2214
|
-
readonly maxWidth: number;
|
|
2215
|
-
readonly minHeight: number;
|
|
2216
|
-
readonly maxHeight: number;
|
|
2217
|
-
constructor(minWidth?: number, maxWidth?: number, minHeight?: number, maxHeight?: number);
|
|
2218
|
-
static unbounded(): Constraints;
|
|
2219
|
-
static tight(width: number, height: number): Constraints;
|
|
2220
|
-
static loose(width: number, height: number): Constraints;
|
|
2221
|
-
hasBoundedWidth(): boolean;
|
|
2222
|
-
hasBoundedHeight(): boolean;
|
|
2223
|
-
}
|
|
2224
|
-
/** What one layout call did; see LayoutEngine.stats. */
|
|
2225
|
-
interface LayoutStats {
|
|
2226
|
-
/** Nodes whose measure ran (memo hits excluded). */
|
|
2227
|
-
measured: number;
|
|
2228
|
-
/** Nodes whose place ran. */
|
|
2229
|
-
placed: number;
|
|
2230
|
-
/** Laid-out subtrees that moved without changing size, and were shifted rather than placed again. */
|
|
2231
|
-
shifted: number;
|
|
2232
|
-
/** Subtrees laid out from a relayout boundary instead of the root. */
|
|
2233
|
-
relayoutRoots: number;
|
|
2234
|
-
/** Whether the pass started from the root. */
|
|
2235
|
-
fullLayout: boolean;
|
|
2236
|
-
/** Every node whose measure ran, in order, when `LayoutEngine.trace` is on. */
|
|
2237
|
-
measuredNodes: UiNode[];
|
|
2238
|
-
}
|
|
2239
|
-
/**
|
|
2240
|
-
* The result of a full layout pass for the layout root.
|
|
2241
|
-
*
|
|
2242
|
-
* Descendant geometry is read from LayoutRecords.
|
|
2243
|
-
*/
|
|
2244
|
-
interface LayoutResult {
|
|
2245
|
-
root: UiNode;
|
|
2246
|
-
box: LayoutBox;
|
|
2247
|
-
contentWidth: number;
|
|
2248
|
-
contentHeight: number;
|
|
2249
|
-
scrollX: number;
|
|
2250
|
-
scrollY: number;
|
|
2251
|
-
clip: LayoutBox;
|
|
2443
|
+
advance(now: number): void;
|
|
2444
|
+
private advanceRunning;
|
|
2445
|
+
private advanceEach;
|
|
2252
2446
|
}
|
|
2253
|
-
declare function clampSize(constraints: Constraints, width: number, height: number): Size;
|
|
2254
|
-
declare function constraintsEqual(a: Constraints, b: Constraints): boolean;
|
|
2255
|
-
/**
|
|
2256
|
-
* Returns new constraints with the options applied on top of
|
|
2257
|
-
* the supplied constraints. Explicit sizes make an axis tight,
|
|
2258
|
-
* min/max values tighten the existing bounds.
|
|
2259
|
-
*/
|
|
2260
|
-
declare function tightenConstraints(constraints: Constraints, options: TightenOptions): Constraints;
|
|
2261
2447
|
//#endregion
|
|
2262
2448
|
//#region src/animation/UiSharedElements.d.ts
|
|
2263
2449
|
/**
|
|
@@ -3238,8 +3424,11 @@ interface ComponentResolver {
|
|
|
3238
3424
|
* Called on every reconcile pass that reaches the slot. Returning
|
|
3239
3425
|
* the same value for an unchanged component is expected; the
|
|
3240
3426
|
* builder reconciles it idempotently.
|
|
3427
|
+
*
|
|
3428
|
+
* `anchor` is the slot's node, already under its parent, so what
|
|
3429
|
+
* the component is placed in can be read while its body runs.
|
|
3241
3430
|
*/
|
|
3242
|
-
resolve(element: ComponentLikeElement, anchorId: string): UiChild;
|
|
3431
|
+
resolve(element: ComponentLikeElement, anchorId: string, anchor?: UiNode): UiChild;
|
|
3243
3432
|
/**
|
|
3244
3433
|
* Tears down the host owning `anchorId`.
|
|
3245
3434
|
*
|
|
@@ -3333,6 +3522,12 @@ type FocusModality = 'pointer' | 'keyboard';
|
|
|
3333
3522
|
* dialog modal for the keyboard. `popScope()` restores focus to
|
|
3334
3523
|
* whatever held it when the scope was pushed. Components reach both
|
|
3335
3524
|
* through `FocusService`, never directly.
|
|
3525
|
+
*
|
|
3526
|
+
* A scope inside a bound (`setFocusBounds`) is modal only inside it. A
|
|
3527
|
+
* dialog open in one of a design tool's frames confines the keyboard in
|
|
3528
|
+
* that frame, when it is there, and leaves the tool around it, and every
|
|
3529
|
+
* other frame, to the person: it takes no focus from outside, and gives
|
|
3530
|
+
* none back when it closes.
|
|
3336
3531
|
*/
|
|
3337
3532
|
declare class UiFocusManager {
|
|
3338
3533
|
private readonly dispatcher;
|
|
@@ -3349,11 +3544,17 @@ declare class UiFocusManager {
|
|
|
3349
3544
|
private readonly listeners;
|
|
3350
3545
|
private readonly scopeListeners;
|
|
3351
3546
|
private readonly scopes;
|
|
3547
|
+
private isBound;
|
|
3352
3548
|
/** The field of each editing group that last had focus, where Tab back into the group lands. */
|
|
3353
3549
|
private readonly groupEntries;
|
|
3354
3550
|
constructor(root: UiNode, dispatcher: UiInputDispatcher);
|
|
3355
3551
|
/** The root used for focus-order traversal. Clears any active scope. */
|
|
3356
3552
|
setRoot(root: UiNode): void;
|
|
3553
|
+
/**
|
|
3554
|
+
* Which nodes bound a scope taken inside them: a trap under one is
|
|
3555
|
+
* modal only inside it. `OverlayScope`'s, set by the framework.
|
|
3556
|
+
*/
|
|
3557
|
+
setFocusBounds(isBound: ((node: UiNode) => boolean) | null): void;
|
|
3357
3558
|
/** The node that currently holds logical focus, or null. */
|
|
3358
3559
|
get focusedNode(): UiNode | null;
|
|
3359
3560
|
hasFocus(): boolean;
|
|
@@ -3421,7 +3622,8 @@ declare class UiFocusManager {
|
|
|
3421
3622
|
/** Moves focus to the previous focusable node, wrapping to the last. */
|
|
3422
3623
|
focusPrevious(): boolean;
|
|
3423
3624
|
/**
|
|
3424
|
-
* Confines focus to `root` until the matching `popScope
|
|
3625
|
+
* Confines focus to `root` until the matching `popScope`; inside a
|
|
3626
|
+
* bound, only for focus inside it (see the class's note).
|
|
3425
3627
|
*
|
|
3426
3628
|
* Focus that is outside the new scope moves to its first focusable,
|
|
3427
3629
|
* so the very next Tab stays inside; a scope with nothing focusable
|
|
@@ -3491,6 +3693,12 @@ declare class UiFocusManager {
|
|
|
3491
3693
|
* stops, which is what lets a dialog body be the keyboard's home of
|
|
3492
3694
|
* last resort without becoming a stop of its own.
|
|
3493
3695
|
*/
|
|
3696
|
+
/**
|
|
3697
|
+
* The tab stops under `within`, or in the active scope, in the order
|
|
3698
|
+
* Tab visits them: what a design tool numbers to show a screen's
|
|
3699
|
+
* keyboard order.
|
|
3700
|
+
*/
|
|
3701
|
+
tabStops(within?: UiNode): UiNode[];
|
|
3494
3702
|
private collectFocusable;
|
|
3495
3703
|
/** Whether an ancestor is hidden or disabled, which takes the node's focus away with it. */
|
|
3496
3704
|
private insideHidden;
|
|
@@ -3498,6 +3706,18 @@ declare class UiFocusManager {
|
|
|
3498
3706
|
private groupOf;
|
|
3499
3707
|
/** Whether the node may hold focus given the active scope, if any. */
|
|
3500
3708
|
private withinScope;
|
|
3709
|
+
/**
|
|
3710
|
+
* The innermost scope that confines a node: a bounded one only inside
|
|
3711
|
+
* its bound, so a node, or no focus at all, outside it answers to the
|
|
3712
|
+
* scope under it.
|
|
3713
|
+
*/
|
|
3714
|
+
private scopeFor;
|
|
3715
|
+
/**
|
|
3716
|
+
* The bound above a scope's root, found once the root is in the tree
|
|
3717
|
+
* (a trap is taken from a `ref`, which may fire before) and kept, so
|
|
3718
|
+
* a scope whose subtree has gone still knows it.
|
|
3719
|
+
*/
|
|
3720
|
+
private boundOf;
|
|
3501
3721
|
/** Whether the node is still connected to the traversal root. */
|
|
3502
3722
|
private isAttached;
|
|
3503
3723
|
private isWithin;
|
|
@@ -3644,6 +3864,19 @@ interface UiModifierHost {
|
|
|
3644
3864
|
* one is painted unsettled and warned about rather than hanging.
|
|
3645
3865
|
*/
|
|
3646
3866
|
onLayout(listener: (box: LayoutBox) => void): void;
|
|
3867
|
+
/**
|
|
3868
|
+
* Called after any frame that changed the node's `flowBox` or its own
|
|
3869
|
+
* scroll offset, with the `flowBox`; not when a scroll or a transform
|
|
3870
|
+
* above it only moves it on screen. Removed on detach.
|
|
3871
|
+
*
|
|
3872
|
+
* The one to use when what the listener reads is the node's own place
|
|
3873
|
+
* in the layout — its size for a breakpoint, its box for a layout
|
|
3874
|
+
* animation, its offset for a scroll position — which a pan of a
|
|
3875
|
+
* design tool's board, or a page's scroll, does not change. Asking
|
|
3876
|
+
* nothing on those frames is most of what it is for. Runs where
|
|
3877
|
+
* `onLayout` runs, with the same freedom to change layout.
|
|
3878
|
+
*/
|
|
3879
|
+
onFlowLayout(listener: (box: LayoutBox) => void): void;
|
|
3647
3880
|
/**
|
|
3648
3881
|
* The value the node inherits for an environment key: what the
|
|
3649
3882
|
* nearest provider above it supplies, else the key's default.
|
|
@@ -3819,6 +4052,8 @@ interface UiModifierLayout {
|
|
|
3819
4052
|
*/
|
|
3820
4053
|
viewport?(): LayoutBox | null;
|
|
3821
4054
|
onLayout(node: UiNode, listener: (box: LayoutBox) => void): () => void;
|
|
4055
|
+
/** See `UiModifierHost.onFlowLayout`. Absent, `onLayout` stands in, which tells a listener more often, never less. */
|
|
4056
|
+
onFlowLayout?(node: UiNode, listener: (box: LayoutBox) => void): () => void;
|
|
3822
4057
|
}
|
|
3823
4058
|
/**
|
|
3824
4059
|
* Where a modifier's focus access comes from.
|
|
@@ -3870,6 +4105,8 @@ declare class UiModifierSet {
|
|
|
3870
4105
|
private decorationsFor;
|
|
3871
4106
|
/** The names of what is attached, in order, for the inspector. */
|
|
3872
4107
|
get names(): string[];
|
|
4108
|
+
/** What is attached, each kind with its current arguments, in order: for a tool reading what a node does. */
|
|
4109
|
+
get modifiers(): readonly UiModifier[];
|
|
3873
4110
|
get size(): number;
|
|
3874
4111
|
/**
|
|
3875
4112
|
* Brings the attached set in line with what the element declares.
|
|
@@ -4628,6 +4865,14 @@ declare const BOX_SHADOW_BLUR_REACH = 1.5;
|
|
|
4628
4865
|
* one's hole shrinks with it. A square corner stays square, as CSS
|
|
4629
4866
|
* keeps it.
|
|
4630
4867
|
*/
|
|
4868
|
+
/**
|
|
4869
|
+
* A box's corner radius as its shadows take it: no more than half its
|
|
4870
|
+
* shorter side, as CSS shrinks radii to fit the box before a shadow is
|
|
4871
|
+
* spread from them. A box of no size with a 16 radius has no corners,
|
|
4872
|
+
* so the hole an outer shadow leaves under it is nothing: a spotlight's
|
|
4873
|
+
* hole shrunk to a point showed a 16-pixel circle where there was none.
|
|
4874
|
+
*/
|
|
4875
|
+
declare function fittedShadowRadius(boxRadius: number, width: number, height: number): number;
|
|
4631
4876
|
declare function boxShadowRadius(boxRadius: number, spreadRadius: number, inset: boolean): number;
|
|
4632
4877
|
/**
|
|
4633
4878
|
* How far past each side of the box a node's outer shadows may paint,
|
|
@@ -5195,6 +5440,16 @@ interface UiGradientStop {
|
|
|
5195
5440
|
* does.
|
|
5196
5441
|
*/
|
|
5197
5442
|
readonly color: UiColorValue;
|
|
5443
|
+
/**
|
|
5444
|
+
* How much of the colour shows, 0 to 1, multiplied into its alpha once
|
|
5445
|
+
* a palette name has been resolved: `{ color: 'background', opacity: 0 }`.
|
|
5446
|
+
*
|
|
5447
|
+
* What a fade to nothing is made of. A canvas blends a gradient's stops
|
|
5448
|
+
* without premultiplying, so a ramp from white to `transparent`, which
|
|
5449
|
+
* is transparent *black*, passes through grey on its way out; a ramp to
|
|
5450
|
+
* the same colour at no opacity stays that colour all the way.
|
|
5451
|
+
*/
|
|
5452
|
+
readonly opacity?: number;
|
|
5198
5453
|
}
|
|
5199
5454
|
interface UiLinearGradient {
|
|
5200
5455
|
readonly kind: 'linear';
|
|
@@ -5422,12 +5677,44 @@ interface PaintSurface {
|
|
|
5422
5677
|
/** Multiplies into the opacity already in force, as a node's does. */
|
|
5423
5678
|
alpha(value: number): void;
|
|
5424
5679
|
/**
|
|
5425
|
-
* Blurs everything drawn after it, by a radius
|
|
5680
|
+
* Blurs everything drawn after it, by a radius (CSS's standard
|
|
5681
|
+
* deviation) in the current coordinates, so a blur under a `scale`
|
|
5682
|
+
* scales with what it blurs. The transform in force at the call is
|
|
5683
|
+
* the one it is measured in.
|
|
5426
5684
|
*
|
|
5427
5685
|
* Scoped by `save` and `restore` like every other style value, so a
|
|
5428
5686
|
* frosted panel is `save`, `blur`, draw, `restore`. Zero clears it.
|
|
5429
5687
|
*/
|
|
5430
5688
|
blur(radius: number): void;
|
|
5689
|
+
/**
|
|
5690
|
+
* Starts a masked layer: what is drawn from here to `layerMask` is
|
|
5691
|
+
* the layer's content, kept apart from what is drawn already and cut
|
|
5692
|
+
* to this rectangle, in the current coordinates.
|
|
5693
|
+
*
|
|
5694
|
+
* Saves the state as `save` does. The content starts with the
|
|
5695
|
+
* transform in force and an empty path, and with every other style
|
|
5696
|
+
* value at its initial one: the alpha, blur and clip in force here
|
|
5697
|
+
* apply to the layer as a whole, when `endMaskedLayer` draws it.
|
|
5698
|
+
*
|
|
5699
|
+
* An SVG `<mask>` and a drop shadow are both drawn this way. A host
|
|
5700
|
+
* that cannot keep a layer apart draws the content unmasked and the
|
|
5701
|
+
* mask not at all, which is a picture that is wrong in one detail
|
|
5702
|
+
* rather than missing.
|
|
5703
|
+
*/
|
|
5704
|
+
beginMaskedLayer(x: number, y: number, width: number, height: number): void;
|
|
5705
|
+
/**
|
|
5706
|
+
* Ends the layer's content and starts its mask: the state is as
|
|
5707
|
+
* `beginMaskedLayer` found it, the path empty, and the mask cut to the
|
|
5708
|
+
* same rectangle. Where the mask is drawn the content shows, by how
|
|
5709
|
+
* much `mode` says; where nothing is, nothing does.
|
|
5710
|
+
*/
|
|
5711
|
+
layerMask(mode?: PaintMaskMode): void;
|
|
5712
|
+
/**
|
|
5713
|
+
* Draws the layer's content, masked, where it began, and restores the
|
|
5714
|
+
* state `beginMaskedLayer` saved. A layer ended without a mask draws
|
|
5715
|
+
* its content as it is.
|
|
5716
|
+
*/
|
|
5717
|
+
endMaskedLayer(): void;
|
|
5431
5718
|
/** Fills the current path. The default rule is `nonzero`. */
|
|
5432
5719
|
fill(rule?: PaintFillRule): void;
|
|
5433
5720
|
stroke(): void;
|
|
@@ -5449,6 +5736,13 @@ type PaintFillRule = 'nonzero' | 'evenodd';
|
|
|
5449
5736
|
type PaintLineCap = 'butt' | 'round' | 'square';
|
|
5450
5737
|
type PaintLineJoin = 'miter' | 'round' | 'bevel';
|
|
5451
5738
|
type PaintTextAlign = 'left' | 'center' | 'right';
|
|
5739
|
+
/**
|
|
5740
|
+
* How a layer's mask says how much of it shows. `luminance`, the
|
|
5741
|
+
* default, is SVG's `<mask>` and CSS's `mask-type: luminance`: the
|
|
5742
|
+
* mask's brightness times its alpha, so white shows the content and
|
|
5743
|
+
* black hides it. `alpha` is the mask's alpha alone, whatever its colour.
|
|
5744
|
+
*/
|
|
5745
|
+
type PaintMaskMode = 'luminance' | 'alpha';
|
|
5452
5746
|
/** The little of a text style a single painted line can carry. */
|
|
5453
5747
|
interface PaintTextStyle {
|
|
5454
5748
|
readonly fontSize?: number;
|
|
@@ -6902,6 +7196,16 @@ declare function validateRole(value: unknown): string | undefined;
|
|
|
6902
7196
|
declare function validateStates(value: unknown): string | undefined;
|
|
6903
7197
|
//#endregion
|
|
6904
7198
|
//#region src/properties/UiProperty.d.ts
|
|
7199
|
+
/**
|
|
7200
|
+
* When a subtree is held (`holdUnseen`): out of view, or, with
|
|
7201
|
+
* `belowScale`, also when drawn smaller than that share of its size.
|
|
7202
|
+
* `margin` is how far outside the view, in screen pixels, still counts
|
|
7203
|
+
* as in it, so a pan reaches it already caught up; 0 by default.
|
|
7204
|
+
*/
|
|
7205
|
+
type UiHoldUnseen = true | {
|
|
7206
|
+
readonly belowScale?: number;
|
|
7207
|
+
readonly margin?: number;
|
|
7208
|
+
};
|
|
6905
7209
|
declare const UiProperties: {
|
|
6906
7210
|
readonly width: UiPropertyDefinition<UiLength | undefined>;
|
|
6907
7211
|
readonly height: UiPropertyDefinition<UiLength | undefined>;
|
|
@@ -7151,7 +7455,10 @@ declare const UiProperties: {
|
|
|
7151
7455
|
* Side and alignment against the anchor: 'bottom' (default),
|
|
7152
7456
|
* 'bottom-start', 'bottom-end', 'top', 'top-start', 'top-end',
|
|
7153
7457
|
* 'left', 'left-start', 'left-end', 'right', 'right-start',
|
|
7154
|
-
* 'right-end'
|
|
7458
|
+
* 'right-end'; or 'over', which lays the node over the anchor at its
|
|
7459
|
+
* size, grown by `anchorOffset` on every side: a spotlight's hole, a
|
|
7460
|
+
* focus ring drawn above everything, following the anchor as any
|
|
7461
|
+
* anchored node does.
|
|
7155
7462
|
*/
|
|
7156
7463
|
readonly placement: UiPropertyDefinition<UiPlacement | undefined>;
|
|
7157
7464
|
/**
|
|
@@ -7453,6 +7760,16 @@ declare const UiProperties: {
|
|
|
7453
7760
|
* it is drawn at, is drawn directly.
|
|
7454
7761
|
*/
|
|
7455
7762
|
readonly rasterize: UiPropertyDefinition<boolean>;
|
|
7763
|
+
/**
|
|
7764
|
+
* Hold this subtree while it cannot be read: out of view, or drawn
|
|
7765
|
+
* smaller than `belowScale` of its size (a frame on a board zoomed
|
|
7766
|
+
* far out). Held, nothing in it is laid out, described or drawn again,
|
|
7767
|
+
* whatever its clocks and streams write; it is shown as it last was,
|
|
7768
|
+
* which with `rasterize` is one copy of its pixels. It catches up on
|
|
7769
|
+
* the frame it can be read again. `true` holds it only out of view.
|
|
7770
|
+
* See `UiGraph.hold`.
|
|
7771
|
+
*/
|
|
7772
|
+
readonly holdUnseen: UiPropertyDefinition<UiHoldUnseen | undefined>;
|
|
7456
7773
|
readonly text: UiPropertyDefinition<string | undefined>;
|
|
7457
7774
|
readonly image: UiPropertyDefinition<ImageBitmap | undefined>;
|
|
7458
7775
|
/**
|
|
@@ -7573,6 +7890,8 @@ declare const UiProperties: {
|
|
|
7573
7890
|
*/
|
|
7574
7891
|
readonly textStyle: UiPropertyDefinition<UiTextStyle | UiTypographyRole | undefined>;
|
|
7575
7892
|
readonly contentColor: UiPropertyDefinition<UiColorValue | undefined>;
|
|
7893
|
+
/** Values for keys of the application's own, provided to the subtree; see `UiProvision`. */
|
|
7894
|
+
readonly provide: UiPropertyDefinition<readonly UiProvision<unknown>[] | undefined>;
|
|
7576
7895
|
/**
|
|
7577
7896
|
* Declares this node a size query container: its content size is
|
|
7578
7897
|
* published to the subtree through `UiEnvironmentKeys.containerSize`,
|
|
@@ -7731,7 +8050,7 @@ type FlexItemProps = PropsOf<'flex' | 'flexGrow' | 'flexShrink' | 'flexBasis' |
|
|
|
7731
8050
|
/** Where an element sits in a Grid. */
|
|
7732
8051
|
type GridItemProps = PropsOf<'column' | 'columnSpan' | 'row' | 'rowSpan'>;
|
|
7733
8052
|
type PositionProps = PropsOf<'position' | 'top' | 'right' | 'bottom' | 'left' | 'inset' | 'zIndex' | 'lift' | 'liftBoundary' | 'anchor' | 'anchorPoint' | 'anchorRect' | 'placement' | 'anchorOffset'>;
|
|
7734
|
-
type PaintProps = PropsOf<'backgroundColor' | 'backgroundGradient' | 'borderColor' | 'borderWidth' | 'borderRadius' | 'opacity' | 'boxShadows' | 'visible' | 'transform' | 'rasterize'>;
|
|
8053
|
+
type PaintProps = PropsOf<'backgroundColor' | 'backgroundGradient' | 'borderColor' | 'borderWidth' | 'borderRadius' | 'opacity' | 'boxShadows' | 'visible' | 'transform' | 'rasterize' | 'holdUnseen'>;
|
|
7735
8054
|
/**
|
|
7736
8055
|
* Inherited text properties. Legal on any element: set on a container,
|
|
7737
8056
|
* they cascade to the text below it.
|
|
@@ -7745,7 +8064,7 @@ type InteractionProps = PropsOf<'cursor' | 'pointerEvents' | 'touchEmulation' |
|
|
|
7745
8064
|
*/
|
|
7746
8065
|
type SemanticsProps = PropsOf<'role' | 'label' | 'description' | 'live' | 'states' | 'valueNow' | 'valueMin' | 'valueMax' | 'valueText' | 'posInSet' | 'setSize' | 'level' | 'rowIndex' | 'columnIndex' | 'rowCount' | 'columnCount' | 'activeDescendant' | 'controls' | 'autocomplete' | 'orientation'>;
|
|
7747
8066
|
/** Environment values an element provides to its subtree. */
|
|
7748
|
-
type EnvironmentProps = PropsOf<'theme' | 'pointer' | 'textStyle' | 'contentColor' | 'containerSize' | 'insets'>;
|
|
8067
|
+
type EnvironmentProps = PropsOf<'theme' | 'pointer' | 'textStyle' | 'contentColor' | 'containerSize' | 'insets' | 'provide'>;
|
|
7749
8068
|
/**
|
|
7750
8069
|
* Behaviour attached to an element without wrapping it: hover and
|
|
7751
8070
|
* press state, a focus ring, a tooltip, drag. See `packages/core/src/modifiers`.
|
|
@@ -8380,6 +8699,29 @@ declare class UiGraph {
|
|
|
8380
8699
|
* common case: themes change far less often than anything else.
|
|
8381
8700
|
*/
|
|
8382
8701
|
hasEnvironmentDirty(): boolean;
|
|
8702
|
+
/**
|
|
8703
|
+
* Holds a subtree as it is: from now until `release`, nothing beneath
|
|
8704
|
+
* `node` is marked dirty, so nothing there is laid out, described or
|
|
8705
|
+
* drawn again, and a change to a provider above it stops at it. The
|
|
8706
|
+
* marks are kept instead, and given again on release, so the subtree
|
|
8707
|
+
* then catches up in one frame with everything that happened to it.
|
|
8708
|
+
* `node` itself is not held: its own size and place still follow.
|
|
8709
|
+
*
|
|
8710
|
+
* For a subtree nobody can see, whose reactive sources would otherwise
|
|
8711
|
+
* keep a whole tree busy: a design tool's board of hundreds of frames,
|
|
8712
|
+
* each a live screen with its own clocks, most of them out of view or
|
|
8713
|
+
* too small to read. Its bindings keep running and keep writing the
|
|
8714
|
+
* values they produce, which costs a property write each; what it no
|
|
8715
|
+
* longer costs is the layout, environment, semantics and paint every
|
|
8716
|
+
* one of those writes set off. What the renderer has kept of it
|
|
8717
|
+
* (`rasterize`) stays its picture, since nothing in it is dirty.
|
|
8718
|
+
*
|
|
8719
|
+
* Holding is not nested: a held node inside another's subtree is held
|
|
8720
|
+
* by the outer one until that one is let go.
|
|
8721
|
+
*/
|
|
8722
|
+
hold(node: UiNode): void;
|
|
8723
|
+
/** Lets a held subtree go, and marks again what was marked while it was held. */
|
|
8724
|
+
release(node: UiNode): void;
|
|
8383
8725
|
markDirtyById(id: NodeId, flags: DirtyFlags): void;
|
|
8384
8726
|
clearDirty(node: UiNode): void;
|
|
8385
8727
|
/**
|
|
@@ -8430,15 +8772,10 @@ declare class UiGraph {
|
|
|
8430
8772
|
*/
|
|
8431
8773
|
removeNodeProperty(node: UiNode, property: string, dirtyFlags?: DirtyFlags): boolean;
|
|
8432
8774
|
/**
|
|
8433
|
-
* Writes a property
|
|
8434
|
-
*
|
|
8435
|
-
*
|
|
8436
|
-
*
|
|
8437
|
-
* transition check would have each frame start an animation towards
|
|
8438
|
-
* the value it had just produced. Everything below this — the
|
|
8439
|
-
* override cascade, the equality check, the dirty marking — is
|
|
8440
|
-
* unchanged, so an animated value is overridable by a modifier
|
|
8441
|
-
* exactly as a bound one is.
|
|
8775
|
+
* Writes the element's value for a property: onto the node, or into
|
|
8776
|
+
* the cascade under a modifier writing over it. The same as
|
|
8777
|
+
* `updateNodeProperty`, kept by its name for the callers that write
|
|
8778
|
+
* a value of the runtime's own, such as the root's pointer.
|
|
8442
8779
|
*/
|
|
8443
8780
|
updateNodePropertyNow<T>(node: UiNode, property: string, value: T, dirtyFlags?: DirtyFlags): boolean;
|
|
8444
8781
|
/**
|
|
@@ -8448,8 +8785,18 @@ declare class UiGraph {
|
|
|
8448
8785
|
* Removing rather than writing a default is what lets a detaching
|
|
8449
8786
|
* modifier restore inheritance: a node that never declared `color`
|
|
8450
8787
|
* reads it from the environment again, as it did before.
|
|
8788
|
+
*
|
|
8789
|
+
* `snap` draws it at once, past any transition the node declares;
|
|
8790
|
+
* see `UiPropertyOverride.snap`.
|
|
8451
8791
|
*/
|
|
8452
|
-
applyResolvedProperty(node: UiNode, property: NodeProperty, present: boolean, value: unknown, dirtyFlags: DirtyFlags): boolean;
|
|
8792
|
+
applyResolvedProperty(node: UiNode, property: NodeProperty, present: boolean, value: unknown, dirtyFlags: DirtyFlags, snap?: boolean): boolean;
|
|
8793
|
+
/**
|
|
8794
|
+
* Writes what a transition's frame drew, without consulting the
|
|
8795
|
+
* transition again: the frame is already the animation towards the
|
|
8796
|
+
* target, and re-entering it would start an animation towards the
|
|
8797
|
+
* value it had just produced.
|
|
8798
|
+
*/
|
|
8799
|
+
applyAnimatedValue(node: UiNode, property: NodeProperty, value: unknown, dirtyFlags: DirtyFlags): boolean;
|
|
8453
8800
|
/**
|
|
8454
8801
|
* Adds the environment flag to a write of `color` or of a text
|
|
8455
8802
|
* style field, which a node provides to its subtree as well as
|
|
@@ -9761,6 +10108,10 @@ declare const UiEnvironmentKeys: {
|
|
|
9761
10108
|
* with two windows provides one per window.
|
|
9762
10109
|
*/
|
|
9763
10110
|
readonly insets: UiEnvironmentKey<UiInsetSource>;
|
|
10111
|
+
/** The durations, easings and springs a name resolves to under a node; see `UiMotion`. */
|
|
10112
|
+
readonly motion: UiEnvironmentKey<UiMotion>;
|
|
10113
|
+
/** The clock the animations under a node run on; null is real time. See `UiClock`. */
|
|
10114
|
+
readonly clock: UiEnvironmentKey<UiClock | null>;
|
|
9764
10115
|
};
|
|
9765
10116
|
//#endregion
|
|
9766
10117
|
//#region src/environment/UiEnvironmentProvider.d.ts
|
|
@@ -10549,16 +10900,17 @@ declare class NodeTransitions implements UiNodeTransitions {
|
|
|
10549
10900
|
write(property: NodeProperty, value: unknown, flags: DirtyFlags): boolean;
|
|
10550
10901
|
/** Cancels everything, for a node leaving the tree or dropping the prop. */
|
|
10551
10902
|
release(): void;
|
|
10903
|
+
cancel(property: NodeProperty): void;
|
|
10904
|
+
get declared(): ReadonlyMap<NodeProperty, UiTransitionSpec>;
|
|
10552
10905
|
private stopProperty;
|
|
10553
10906
|
/**
|
|
10554
10907
|
* The cell one property animates through, kept for the life of the
|
|
10555
10908
|
* node: the driver keys its running set by cell identity, so a fresh
|
|
10556
10909
|
* adapter per write would leave the previous animation running.
|
|
10557
10910
|
*
|
|
10558
|
-
*
|
|
10559
|
-
*
|
|
10560
|
-
*
|
|
10561
|
-
* bound one.
|
|
10911
|
+
* It writes what is drawn (`applyAnimatedValue`): the target already
|
|
10912
|
+
* is the value the element and any modifier over it settled on, so a
|
|
10913
|
+
* frame of the way there goes onto the node as it is.
|
|
10562
10914
|
*/
|
|
10563
10915
|
private cellFor;
|
|
10564
10916
|
private startAnimation;
|
|
@@ -11058,11 +11410,27 @@ declare class UiWheelController {
|
|
|
11058
11410
|
* wheel of a burst land correctly even though the first could not.
|
|
11059
11411
|
*/
|
|
11060
11412
|
lastWheelTarget: UiNode | null;
|
|
11413
|
+
/** Where the last wheel event was, for the latch; see `latched`. */
|
|
11414
|
+
private lastX;
|
|
11415
|
+
private lastY;
|
|
11061
11416
|
/**
|
|
11062
11417
|
* The container the wheel last scrolled, for a frame's report of where
|
|
11063
11418
|
* scrolling put it. Null until the wheel has scrolled something.
|
|
11064
11419
|
*/
|
|
11065
11420
|
lastScrolled: UiNode | null;
|
|
11421
|
+
/**
|
|
11422
|
+
* The node the last wheel event landed on, while this one belongs to
|
|
11423
|
+
* the same gesture: close behind it, with the pointer where it was.
|
|
11424
|
+
* Null when it does not, and the point is tested afresh.
|
|
11425
|
+
*
|
|
11426
|
+
* A browser does the same, latching a wheel gesture to the element its
|
|
11427
|
+
* first step landed on, and for the reason it matters here: testing the
|
|
11428
|
+
* point asks for bounds that the gesture's own last step may have made
|
|
11429
|
+
* out of date. A pinch over a design tool's board scales every name on
|
|
11430
|
+
* it, and each step of it filled in the bounds of 1,800 names again,
|
|
11431
|
+
* 4 ms, to find what the step before had found.
|
|
11432
|
+
*/
|
|
11433
|
+
private latched;
|
|
11066
11434
|
wheel(x: number, y: number, deltaX: number, deltaY: number, modifiers?: UiKeyModifiers, deltaMode?: UiWheelDeltaMode, wheelDeltaY?: number,
|
|
11067
11435
|
/**
|
|
11068
11436
|
* When the event happened, on this controller's clock. Pacing
|
|
@@ -12460,6 +12828,15 @@ declare class UiEditingController {
|
|
|
12460
12828
|
* Null when the node is not an editable, or has not been laid out.
|
|
12461
12829
|
*/
|
|
12462
12830
|
caretRectOf(node: UiNode, offset?: number): CaretRect | null;
|
|
12831
|
+
/**
|
|
12832
|
+
* The caret position nearest a point, given as a pointer event gives
|
|
12833
|
+
* it: where a press there would put the caret. For an application
|
|
12834
|
+
* that opens a field over text the person pointed at, to start the
|
|
12835
|
+
* caret where they pointed (`EditingService.select` puts it there).
|
|
12836
|
+
*
|
|
12837
|
+
* Null when the node is not an editable, or has not been laid out.
|
|
12838
|
+
*/
|
|
12839
|
+
offsetNear(node: UiNode, x: number, y: number): number | null;
|
|
12463
12840
|
/** Where a field, or a part of it in its own coordinates, is drawn; see `EditingHost.screenBox`. */
|
|
12464
12841
|
private drawnBox;
|
|
12465
12842
|
private layoutOf;
|
|
@@ -12956,6 +13333,10 @@ declare class UiHostFrameClock implements UiFrameClock {
|
|
|
12956
13333
|
/** This thread's own `requestAnimationFrame`, or null where there is none. */
|
|
12957
13334
|
private local;
|
|
12958
13335
|
private localHandle;
|
|
13336
|
+
/** This thread's own refreshes so far, which `watchLocal` counts on. */
|
|
13337
|
+
private localRefreshes;
|
|
13338
|
+
/** The timer standing by for a refresh that does not come; see `watchLocal`. */
|
|
13339
|
+
private localWatch;
|
|
12959
13340
|
/** Whether the page is hidden, when this thread's refreshes do not come. */
|
|
12960
13341
|
private hidden;
|
|
12961
13342
|
private readonly timeOrigin;
|
|
@@ -12993,6 +13374,29 @@ declare class UiHostFrameClock implements UiFrameClock {
|
|
|
12993
13374
|
/** Whether this clock is driving itself from the compositor. */
|
|
12994
13375
|
get isLocal(): boolean;
|
|
12995
13376
|
requestFrame(): void;
|
|
13377
|
+
/**
|
|
13378
|
+
* Draws a wanted frame on a timer when this thread's own refreshes
|
|
13379
|
+
* have stopped coming on a page that says it is shown.
|
|
13380
|
+
*
|
|
13381
|
+
* They do stop. A window that is shown but not composited (a browser
|
|
13382
|
+
* pane hidden inside a desktop app, a window behind others on some
|
|
13383
|
+
* systems) refreshes a page once a second or not at all, while
|
|
13384
|
+
* `document.visibilityState` stays `visible`, so `setHidden` never
|
|
13385
|
+
* hears of it; and a worker whose canvas the compositor is behind on
|
|
13386
|
+
* is not given another refresh until it catches up. A frame asked for
|
|
13387
|
+
* then waited for a refresh that did not come, and with no timer on
|
|
13388
|
+
* this path, nothing else drew it: the application stopped answering,
|
|
13389
|
+
* with its last frame on screen.
|
|
13390
|
+
*
|
|
13391
|
+
* One timer, a quarter of a second long, armed while frames are wanted
|
|
13392
|
+
* and never more than one: it draws a frame only when not one refresh
|
|
13393
|
+
* came in the whole of it. A compositor that is answering, however
|
|
13394
|
+
* slowly the frames themselves run, always beats it, so it never
|
|
13395
|
+
* stands in for a refresh that is coming (see the spec about a blocked
|
|
13396
|
+
* host thread); it costs four wake-ups a second while something
|
|
13397
|
+
* animates, against one per refresh for a per-frame watch.
|
|
13398
|
+
*/
|
|
13399
|
+
private watchLocal;
|
|
12996
13400
|
/**
|
|
12997
13401
|
* The page was hidden or shown. While it is hidden this thread's own
|
|
12998
13402
|
* refreshes stop, so a frame asked for is paced by the timer, as a
|
|
@@ -13155,6 +13559,22 @@ declare class UiHostFrameClock implements UiFrameClock {
|
|
|
13155
13559
|
private cadenceMs;
|
|
13156
13560
|
/** The interval to pace at while the host is absent: the display's, if it is known. */
|
|
13157
13561
|
private selfPaceMs;
|
|
13562
|
+
/**
|
|
13563
|
+
* Draws the pending frame now, on this clock's timeline, and nothing
|
|
13564
|
+
* when none is pending (`FrameService.flush`): for a tool that changed
|
|
13565
|
+
* the screen and must read it drawn, in a window that may be sent no
|
|
13566
|
+
* refreshes. It is not a refresh, so it teaches the clock nothing about
|
|
13567
|
+
* the display. Handed to `tick` as one, with this thread's time, which
|
|
13568
|
+
* is not the host's, it took the beat backwards; see `tick`.
|
|
13569
|
+
*/
|
|
13570
|
+
flush(): void;
|
|
13571
|
+
/**
|
|
13572
|
+
* Draws the pending frame now, without waiting for a refresh: on the
|
|
13573
|
+
* display's beat when frames are timed on it, so its time is the next
|
|
13574
|
+
* refresh's and never one already drawn for; else at this moment, on
|
|
13575
|
+
* the timeline the clock's frames are on.
|
|
13576
|
+
*/
|
|
13577
|
+
private drawNow;
|
|
13158
13578
|
cancelFrame(): void;
|
|
13159
13579
|
private clearFallback;
|
|
13160
13580
|
private deliver;
|
|
@@ -13491,6 +13911,13 @@ declare class LayoutEngine {
|
|
|
13491
13911
|
private readonly absoluteBlocks;
|
|
13492
13912
|
/** A positioned node, or the root, took a new box this pass; see `absoluteBlocks`. */
|
|
13493
13913
|
private blockResized;
|
|
13914
|
+
/**
|
|
13915
|
+
* Which positioned nodes took a new box this pass, so only the nodes
|
|
13916
|
+
* placed against one of them are placed again. Checking every one
|
|
13917
|
+
* walked up from each to its block: a design tool's board has ten
|
|
13918
|
+
* thousand of them, and one comment pin's label growing checked all.
|
|
13919
|
+
*/
|
|
13920
|
+
private readonly resizedBlocks;
|
|
13494
13921
|
/**
|
|
13495
13922
|
* The nodes asking for `lift`, in the order they asked.
|
|
13496
13923
|
*
|
|
@@ -13543,8 +13970,21 @@ declare class LayoutEngine {
|
|
|
13543
13970
|
* from the first move to the last.
|
|
13544
13971
|
*/
|
|
13545
13972
|
private layoutVersion;
|
|
13546
|
-
/**
|
|
13547
|
-
|
|
13973
|
+
/**
|
|
13974
|
+
* Where the subtree bounds are out of date: everything, after a full
|
|
13975
|
+
* pass; otherwise the nodes whose box or children or transform
|
|
13976
|
+
* changed (`boundsMoved`) and the subtrees moved whole
|
|
13977
|
+
* (`boundsShifted`), which `refreshSubtreeBounds` fills in again with
|
|
13978
|
+
* their ancestors and nothing else.
|
|
13979
|
+
*/
|
|
13980
|
+
private boundsWhole;
|
|
13981
|
+
private readonly boundsMoved;
|
|
13982
|
+
private readonly boundsShifted;
|
|
13983
|
+
/**
|
|
13984
|
+
* How many transforms changed: a transform moves no box, so it leaves
|
|
13985
|
+
* `layoutVersion` alone, and `geometryVersion` adds these to it.
|
|
13986
|
+
*/
|
|
13987
|
+
private transformMoves;
|
|
13548
13988
|
constructor(textMeasurer?: TextMeasurer);
|
|
13549
13989
|
recordFor(node: UiNode): LayoutRecord | undefined;
|
|
13550
13990
|
/**
|
|
@@ -14096,6 +14536,8 @@ declare class LayoutEngine {
|
|
|
14096
14536
|
* into the same visible space before comparing them.
|
|
14097
14537
|
*/
|
|
14098
14538
|
private placeAnchored;
|
|
14539
|
+
/** Lays a node exactly over a box, at its size, whatever size it asks for: `placement: 'over'`. */
|
|
14540
|
+
private placeOver;
|
|
14099
14541
|
/**
|
|
14100
14542
|
* Places a measured node beside a box — an anchor's, or a point's of
|
|
14101
14543
|
* no size — flipping to the opposite side when the named one would
|
|
@@ -14173,6 +14615,8 @@ declare class LayoutEngine {
|
|
|
14173
14615
|
* chain the renderer composes on the way down, walked up; a turned box
|
|
14174
14616
|
* is the box its corners span.
|
|
14175
14617
|
*/
|
|
14618
|
+
/** How many changed nodes are refilled one by one before the whole tree is; see `WHOLE_BOUNDS_REFILL`. */
|
|
14619
|
+
private wholeBoundsRefill;
|
|
14176
14620
|
private projectBox;
|
|
14177
14621
|
/**
|
|
14178
14622
|
* A canvas box brought into the space an absolute child's record is
|
|
@@ -14189,6 +14633,8 @@ declare class LayoutEngine {
|
|
|
14189
14633
|
* positioned ancestor's, else the layout root's.
|
|
14190
14634
|
*/
|
|
14191
14635
|
private containingBlockOf;
|
|
14636
|
+
/** The positioned ancestor, or the root, that an absolute node is placed against. */
|
|
14637
|
+
private containingBlockNodeOf;
|
|
14192
14638
|
/**
|
|
14193
14639
|
* Records the children's paint order when it differs from tree order,
|
|
14194
14640
|
* so renderers and hit testing agree on who is on top: by zIndex, and
|
|
@@ -14567,8 +15013,28 @@ interface NotifiedLayout {
|
|
|
14567
15013
|
declare class LayoutNotifier {
|
|
14568
15014
|
private readonly listeners;
|
|
14569
15015
|
private readonly last;
|
|
15016
|
+
/**
|
|
15017
|
+
* Listeners told about the node's place in the layout and its scroll
|
|
15018
|
+
* offset, and not about where it is drawn (`addFlow`).
|
|
15019
|
+
*/
|
|
15020
|
+
private readonly flowListeners;
|
|
15021
|
+
private readonly flowLast;
|
|
14570
15022
|
/** Registers a listener; the returned function removes it. */
|
|
14571
15023
|
add(node: UiNode, listener: (box: LayoutBox) => void): () => void;
|
|
15024
|
+
/**
|
|
15025
|
+
* Registers a listener told when the node's laid-out box or its own
|
|
15026
|
+
* scroll offset changes, and not when a scroll or a transform above it
|
|
15027
|
+
* moves it on screen; the returned function removes it.
|
|
15028
|
+
*
|
|
15029
|
+
* Most listeners are this kind: a size container, a breakpoint, a
|
|
15030
|
+
* layout animation, a scroll position read only the node's own box
|
|
15031
|
+
* and offset. Told of every move on screen, each of them was asked
|
|
15032
|
+
* on every step of a pan over a design tool's board, 2,600 of them,
|
|
15033
|
+
* to find nothing it reads had changed; and each answer was where
|
|
15034
|
+
* the node was drawn, worked out through every ancestor. Its place in
|
|
15035
|
+
* the layout is its record, read at once.
|
|
15036
|
+
*/
|
|
15037
|
+
addFlow(node: UiNode, listener: (box: LayoutBox) => void): () => void;
|
|
14572
15038
|
get size(): number;
|
|
14573
15039
|
/** Whether anything is listening, so a frame can skip the walk. */
|
|
14574
15040
|
isEmpty(): boolean;
|
|
@@ -14576,7 +15042,7 @@ declare class LayoutNotifier {
|
|
|
14576
15042
|
* Calls the listeners of every watched node whose box or scroll
|
|
14577
15043
|
* offset differs from what it was last told about.
|
|
14578
15044
|
*/
|
|
14579
|
-
notify(read: (node: UiNode) => NotifiedLayout): void;
|
|
15045
|
+
notify(read: (node: UiNode) => NotifiedLayout, readFlow?: (node: UiNode) => NotifiedLayout): void;
|
|
14580
15046
|
/** Drops a removed node's listeners, so nothing keeps it alive. */
|
|
14581
15047
|
handleNodeRemoved(node: UiNode): void;
|
|
14582
15048
|
}
|
|
@@ -14901,6 +15367,18 @@ declare function bundle(...parts: readonly (UiModifier | UiModifierBundle)[]): U
|
|
|
14901
15367
|
declare const noModifiers: UiModifierBundle;
|
|
14902
15368
|
//#endregion
|
|
14903
15369
|
//#region src/modifiers/interaction.d.ts
|
|
15370
|
+
/** A pointer or keyboard state a tool draws an element in without the pointer or the keyboard. */
|
|
15371
|
+
type UiShownAs = 'hovered' | 'pressed' | 'focused';
|
|
15372
|
+
/**
|
|
15373
|
+
* Draws what is under a node as though it were hovered, pressed or
|
|
15374
|
+
* focused: every `interactive` modifier there shows its hover or press
|
|
15375
|
+
* look, and every `focusRing` its ring. What a design tool draws a
|
|
15376
|
+
* component's pointer states with, beside its other states, where no
|
|
15377
|
+
* pointer is over it. Read as each modifier attaches, so a node drawn
|
|
15378
|
+
* under it starts so and stays so; the pointer still adds its own.
|
|
15379
|
+
* Pressed is hovered too, as a press under a pointer is.
|
|
15380
|
+
*/
|
|
15381
|
+
declare const ShownAsKey: UiEnvironmentKey<UiShownAs | null>;
|
|
14904
15382
|
/**
|
|
14905
15383
|
* Pointer state, as a property anything can read, and the property
|
|
14906
15384
|
* writes that follow from it.
|
|
@@ -15642,10 +16120,10 @@ interface SvgXmlElement {
|
|
|
15642
16120
|
*
|
|
15643
16121
|
* What a design tool exports is what is read: shapes and paths, groups
|
|
15644
16122
|
* and `<use>`, transforms, solid fills and strokes with their
|
|
15645
|
-
* opacities, linear and radial gradients, clip paths, a
|
|
15646
|
-
*
|
|
15647
|
-
*
|
|
15648
|
-
* look subtly wrong.
|
|
16123
|
+
* opacities, linear and radial gradients, clip paths, masks, a filter
|
|
16124
|
+
* that is one drop shadow, a `<style>` of simple selectors, and nested
|
|
16125
|
+
* `<svg>`. What is not drawn yet is named in `unsupported`, so a file
|
|
16126
|
+
* that leans on it can say so rather than look subtly wrong.
|
|
15649
16127
|
*/
|
|
15650
16128
|
interface SvgDocument {
|
|
15651
16129
|
/** The `<svg>` element. */
|
|
@@ -15655,11 +16133,16 @@ interface SvgDocument {
|
|
|
15655
16133
|
readonly height: number;
|
|
15656
16134
|
/** The region of the drawing's own coordinates that fills that size. */
|
|
15657
16135
|
readonly viewBox: SvgRect;
|
|
15658
|
-
/** Every element with an `id`, for `<use>`, gradients
|
|
16136
|
+
/** Every element with an `id`, for `<use>`, gradients, clip paths, masks and filters. */
|
|
15659
16137
|
readonly ids: ReadonlyMap<string, SvgXmlElement>;
|
|
15660
16138
|
/** The rules of its `<style>` elements, in document order. */
|
|
15661
16139
|
readonly rules: readonly SvgStyleRule[];
|
|
15662
|
-
/**
|
|
16140
|
+
/**
|
|
16141
|
+
* What the file uses that is not drawn: `text`, `image`, `marker` and
|
|
16142
|
+
* so on, once each. `filter` is a filter that is anything but one
|
|
16143
|
+
* `<feDropShadow>`, or a `filter` that names something else; `mask`
|
|
16144
|
+
* is a `mask` that names something other than a `<mask>`.
|
|
16145
|
+
*/
|
|
15663
16146
|
readonly unsupported: readonly string[];
|
|
15664
16147
|
}
|
|
15665
16148
|
interface SvgRect {
|
|
@@ -17974,6 +18457,17 @@ type PaintOp = {
|
|
|
17974
18457
|
} | {
|
|
17975
18458
|
readonly op: 'blur';
|
|
17976
18459
|
readonly radius: number;
|
|
18460
|
+
} | {
|
|
18461
|
+
readonly op: 'beginMaskedLayer';
|
|
18462
|
+
readonly x: number;
|
|
18463
|
+
readonly y: number;
|
|
18464
|
+
readonly width: number;
|
|
18465
|
+
readonly height: number;
|
|
18466
|
+
} | {
|
|
18467
|
+
readonly op: 'layerMask';
|
|
18468
|
+
readonly mode: PaintMaskMode;
|
|
18469
|
+
} | {
|
|
18470
|
+
readonly op: 'endMaskedLayer';
|
|
17977
18471
|
} | {
|
|
17978
18472
|
readonly op: 'fill';
|
|
17979
18473
|
readonly rule: PaintFillRule;
|
|
@@ -18057,6 +18551,9 @@ declare class PaintRecorder implements PaintSurface {
|
|
|
18057
18551
|
lineDash(segments: readonly number[], offset?: number): void;
|
|
18058
18552
|
alpha(value: number): void;
|
|
18059
18553
|
blur(radius: number): void;
|
|
18554
|
+
beginMaskedLayer(x: number, y: number, width: number, height: number): void;
|
|
18555
|
+
layerMask(mode?: PaintMaskMode): void;
|
|
18556
|
+
endMaskedLayer(): void;
|
|
18060
18557
|
fill(rule?: PaintFillRule): void;
|
|
18061
18558
|
stroke(): void;
|
|
18062
18559
|
clip(rule?: PaintFillRule): void;
|
|
@@ -18146,12 +18643,74 @@ interface PaintContext2D {
|
|
|
18146
18643
|
* rather than none.
|
|
18147
18644
|
*/
|
|
18148
18645
|
filter?: string;
|
|
18646
|
+
/**
|
|
18647
|
+
* What a masked layer needs of a context, all optional for the reason
|
|
18648
|
+
* `filter` is: a host or a double without them draws the layer's
|
|
18649
|
+
* content unmasked. The context drawn into reads and sets its whole
|
|
18650
|
+
* transform, to place a layer in device pixels; a layer's own canvas
|
|
18651
|
+
* also composites and reads its pixels back.
|
|
18652
|
+
*/
|
|
18653
|
+
getTransform?(): PaintMatrix;
|
|
18654
|
+
setTransform?(a: number, b: number, c: number, d: number, e: number, f: number): void;
|
|
18655
|
+
globalCompositeOperation?: string;
|
|
18656
|
+
getImageData?(x: number, y: number, width: number, height: number): PaintPixels;
|
|
18657
|
+
putImageData?(pixels: PaintPixels, x: number, y: number): void;
|
|
18149
18658
|
fillStyle: string | PaintGradient;
|
|
18150
18659
|
strokeStyle: string | PaintGradient;
|
|
18151
18660
|
font: string;
|
|
18152
18661
|
textAlign: 'left' | 'center' | 'right';
|
|
18153
18662
|
textBaseline: 'alphabetic';
|
|
18154
18663
|
}
|
|
18664
|
+
/** An affine matrix to device pixels, `a b c d e f`, as `getTransform` reports one. */
|
|
18665
|
+
interface PaintMatrix {
|
|
18666
|
+
readonly a: number;
|
|
18667
|
+
readonly b: number;
|
|
18668
|
+
readonly c: number;
|
|
18669
|
+
readonly d: number;
|
|
18670
|
+
readonly e: number;
|
|
18671
|
+
readonly f: number;
|
|
18672
|
+
}
|
|
18673
|
+
/** A context's pixels, unpremultiplied RGBA, as `getImageData` reads them. */
|
|
18674
|
+
interface PaintPixels {
|
|
18675
|
+
readonly width: number;
|
|
18676
|
+
readonly height: number;
|
|
18677
|
+
readonly data: Uint8ClampedArray;
|
|
18678
|
+
}
|
|
18679
|
+
/**
|
|
18680
|
+
* The canvas a picture is drawn into, and the bitmap it becomes.
|
|
18681
|
+
*
|
|
18682
|
+
* `IconCanvas`'s sibling, and injectable for the same two reasons: the
|
|
18683
|
+
* suite has no `OffscreenCanvas`, and a host that lacks one should
|
|
18684
|
+
* fail by drawing nothing rather than by throwing in a frame.
|
|
18685
|
+
*
|
|
18686
|
+
* `take()` is synchronous, which is the whole reason the default is
|
|
18687
|
+
* `transferToImageBitmap` and not `createImageBitmap`. An asynchronous
|
|
18688
|
+
* raster would put the picture a frame behind its inputs and would
|
|
18689
|
+
* need a way to ask for another frame from inside a renderer, which no
|
|
18690
|
+
* renderer has and none should.
|
|
18691
|
+
*/
|
|
18692
|
+
interface PaintCanvas {
|
|
18693
|
+
context(): PaintContext2D | null;
|
|
18694
|
+
take(): UiImage;
|
|
18695
|
+
}
|
|
18696
|
+
type PaintCanvasFactory = (width: number, height: number) => PaintCanvas | null;
|
|
18697
|
+
/**
|
|
18698
|
+
* Where a target's masked layers come from: a canvas per layer, and the
|
|
18699
|
+
* rectangle of the context drawn into, in its device pixels, that a
|
|
18700
|
+
* layer is cut to. Without one a target draws a layer's content
|
|
18701
|
+
* unmasked.
|
|
18702
|
+
*/
|
|
18703
|
+
interface PaintLayers {
|
|
18704
|
+
readonly create: PaintCanvasFactory;
|
|
18705
|
+
readonly bounds: PaintDeviceRect;
|
|
18706
|
+
}
|
|
18707
|
+
/** A rectangle in device pixels. */
|
|
18708
|
+
interface PaintDeviceRect {
|
|
18709
|
+
readonly x: number;
|
|
18710
|
+
readonly y: number;
|
|
18711
|
+
readonly width: number;
|
|
18712
|
+
readonly height: number;
|
|
18713
|
+
}
|
|
18155
18714
|
/** The part of a canvas gradient a picture uses. */
|
|
18156
18715
|
interface PaintGradient {
|
|
18157
18716
|
addColorStop(offset: number, color: string): void;
|
|
@@ -18180,8 +18739,8 @@ interface PaintResolver {
|
|
|
18180
18739
|
* picture's cache key.
|
|
18181
18740
|
*/
|
|
18182
18741
|
declare class PaintTarget implements PaintSurface {
|
|
18183
|
-
private readonly ctx;
|
|
18184
18742
|
private readonly resolver;
|
|
18743
|
+
private readonly layerSource?;
|
|
18185
18744
|
/**
|
|
18186
18745
|
* The pending blur radius per save level.
|
|
18187
18746
|
*
|
|
@@ -18191,7 +18750,17 @@ declare class PaintTarget implements PaintSurface {
|
|
|
18191
18750
|
*/
|
|
18192
18751
|
private readonly blurStack;
|
|
18193
18752
|
private blurRadius;
|
|
18194
|
-
|
|
18753
|
+
/** The context drawn into now: the one given, or a layer's while its content or mask is drawn. */
|
|
18754
|
+
private ctx;
|
|
18755
|
+
/** The masked layers begun and not yet ended, innermost last. */
|
|
18756
|
+
private readonly layers;
|
|
18757
|
+
/**
|
|
18758
|
+
* How many layers are drawing nothing at the moment: one cut to
|
|
18759
|
+
* nothing, or a mask a host could not keep apart. Fills, strokes,
|
|
18760
|
+
* text and images are dropped while it is above zero.
|
|
18761
|
+
*/
|
|
18762
|
+
private suppressed;
|
|
18763
|
+
constructor(ctx: PaintContext2D, resolver: PaintResolver, layerSource?: PaintLayers | undefined);
|
|
18195
18764
|
save(): void;
|
|
18196
18765
|
restore(): void;
|
|
18197
18766
|
translate(x: number, y: number): void;
|
|
@@ -18223,7 +18792,25 @@ declare class PaintTarget implements PaintSurface {
|
|
|
18223
18792
|
miterLimit(limit: number): void;
|
|
18224
18793
|
lineDash(segments: readonly number[], offset?: number): void;
|
|
18225
18794
|
alpha(value: number): void;
|
|
18795
|
+
/**
|
|
18796
|
+
* A canvas's filter is measured in device pixels whatever the
|
|
18797
|
+
* transform, so the radius is scaled by the transform's here, where
|
|
18798
|
+
* there is one to read.
|
|
18799
|
+
*/
|
|
18226
18800
|
blur(radius: number): void;
|
|
18801
|
+
/**
|
|
18802
|
+
* The content is drawn into a canvas of its own, the size of the
|
|
18803
|
+
* layer's rectangle in device pixels and cut to the part of the
|
|
18804
|
+
* context drawn into that it covers, under the same transform less
|
|
18805
|
+
* the canvas's corner. A fresh canvas per layer, sized once: drawing
|
|
18806
|
+
* into a canvas just blended from makes Chrome copy it first (see
|
|
18807
|
+
* `GroupOpacity.ts`).
|
|
18808
|
+
*/
|
|
18809
|
+
beginMaskedLayer(x: number, y: number, width: number, height: number): void;
|
|
18810
|
+
layerMask(mode?: PaintMaskMode): void;
|
|
18811
|
+
endMaskedLayer(): void;
|
|
18812
|
+
/** A canvas for a layer's content or mask, placed and cut as the layer is; null where none can be had. */
|
|
18813
|
+
private openLayerCanvas;
|
|
18227
18814
|
fill(rule?: PaintFillRule): void;
|
|
18228
18815
|
stroke(): void;
|
|
18229
18816
|
clip(rule?: PaintFillRule): void;
|
|
@@ -18232,24 +18819,6 @@ declare class PaintTarget implements PaintSurface {
|
|
|
18232
18819
|
}
|
|
18233
18820
|
//#endregion
|
|
18234
18821
|
//#region src/rendering/PaintPicture.d.ts
|
|
18235
|
-
/**
|
|
18236
|
-
* The canvas a picture is drawn into, and the bitmap it becomes.
|
|
18237
|
-
*
|
|
18238
|
-
* `IconCanvas`'s sibling, and injectable for the same two reasons: the
|
|
18239
|
-
* suite has no `OffscreenCanvas`, and a host that lacks one should
|
|
18240
|
-
* fail by drawing nothing rather than by throwing in a frame.
|
|
18241
|
-
*
|
|
18242
|
-
* `take()` is synchronous, which is the whole reason the default is
|
|
18243
|
-
* `transferToImageBitmap` and not `createImageBitmap`. An asynchronous
|
|
18244
|
-
* raster would put the picture a frame behind its inputs and would
|
|
18245
|
-
* need a way to ask for another frame from inside a renderer, which no
|
|
18246
|
-
* renderer has and none should.
|
|
18247
|
-
*/
|
|
18248
|
-
interface PaintCanvas {
|
|
18249
|
-
context(): PaintContext2D | null;
|
|
18250
|
-
take(): UiImage;
|
|
18251
|
-
}
|
|
18252
|
-
type PaintCanvasFactory = (width: number, height: number) => PaintCanvas | null;
|
|
18253
18822
|
/** What a painted frame did, for `PaintPicture.budget.spec.ts`. */
|
|
18254
18823
|
interface PaintStats {
|
|
18255
18824
|
/** How many times a painter's `draw` ran. */
|
|
@@ -20422,5 +20991,5 @@ interface UiSemanticsAction {
|
|
|
20422
20991
|
readonly value?: string;
|
|
20423
20992
|
}
|
|
20424
20993
|
//#endregion
|
|
20425
|
-
export { Mp4AudioTrack as $, EditingControllerOptions as $a, ResponsiveProps as $c, darkTheme as $d, UiTextLink as $f, createTween as $g, borderRadiusCorners as $h, parseCrossAxisAlignment as $i, UiPropertyValueOf as $l, slideFrom as $m, BreakpointArgs as $n, HitTester as $o, UiModifierTeardown as $p, pinchable as $r, drawText as $s, registerFontStack as $t, hasVisualState as $u, offsetAtPointIn as A, linear as A_, UiHostFrameClock as Aa, selectableTextOf as Ac, FrLength as Ad, UiBoxShadow as Af, TextWrap as Ag, UiContentDistribution as Ah, noModifiers as Ai, EditableTextProps as Al, UiPointerEvent as Am, UiRenderer as An, UiScrollability as Ao, containerBands as Ap, IconRasterizerOptions as Ar, EDITOR_PROP as As, createTextCache as At, LazyGridOptions as Au, markNow as B, isSubtreeInert as Ba, offsetAtPoint as Bc, isPercentLength as Bd, UiTypography as Bf, UiTransitionValue as Bg, UiPosition as Bh, propertyIsInherited as Bi, PositionProps as Bl, MOTION_REST as Bm, createCanvasSurface as Bn, resetTransitionWarnings as Bo, edgeField as Bp, DefaultImageResolver as Br, EditingPlatform as Bs, isWebGPUAvailable as Bt, VirtualViewport as Bu, hasTextLinks as C, normalizeColor as C_, labelNode as Ca, normalizeVerticalAlign as Cc, UiRadialGradient as Cd, relativeLuminance as Cf, TextLineRun as Cg, decorationRect as Ch, hoverable as Ci, UiGraphBuilder as Cl, UiGestureEvent as Cm, CanvasTextMeasurer as Cn, KeyboardControllerOptions as Co, UiInsets as Cp, ImageSources as Cr, findMatchesIn as Cs, RenderList as Ct, SheetSourceArgs as Cu, setLinkHover as D, UiEasing as D_, UiFrameClock as Da, TextRange as Dc, radialGradient as Dd, defaultShadows as Df, TextRunMeasurer as Dg, UiAlignment as Dh, pressable as Di, ColumnProps as Dl, UiPasteEvent as Dm, LayerCanvasFactory as Dn, ScrollContainerState as Do, UiContainerSize as Dp, IconCanvas as Dr, EnvironmentNotifier as Ds, TEXTURED_STRIDE_FLOATS as Dt, VIRTUAL_SHEET_PROP as Du, linkRunAtPointIn as E, rgba as E_, UiAnimationFrameClock as Ea, TEXT_SELECTION_PROP as Ec, linearGradient as Ed, UiShadows as Ef, TextOverflow as Eg, UI_SUBGRID_AXES as Eh, measureFlow as Ei, ButtonProps as El, UiKeyboardEvent as Em, traceRoundedRect as En, UiPointerController as Eo, observeViewportInsets as Ep, mediaLoadsInFlight as Er, UiEnvironmentKeys as Es, TEXTURED_STRIDE_BYTES as Et, UiVirtualSheetOptions as Eu, UiFrameCallback as F, isNodeFocusable as Fa, RunMeasure as Fc, auto as Fd, boxShadowRadius as Ff, findEnvironmentKey as Fg, UiGridAutoFlow as Fh, findPropertyDefinition as Fi, GridProps as Fl, UiWheelEvent as Fm, OverlayShape as Fn, UiGestureRecognizer as Fo, UiEditingGroup as Fp, SvgResolver as Fr, isMultiline as Fs, GlyphSlot as Ft, VIRTUAL_INDEX_PROP as Fu, VttTrack as G, PlatformEventTarget as Ga, lineEndAt as Gc, UiPropertyDefinition as Gd, typographyEqual as Gf, AnimatedCell as Gg, UiTextOverflowValue as Gh, GridPlacement as Gi, StackProps as Gl, ResolvedMotionState as Gm, resolveString as Gn, writeOverrideProperty as Go, UiModifierSet as Gp, ContextMenuOptions as Gr, CanvasTextStyle as Gs, WebGPURenderer as Gt, MAX_MEASURES_PER_CHILD as Gu, performanceMarksEnabled as H, resolveCursor as Ha, offsetForVerticalMove as Hc, percent as Hd, UiTypographyRole as Hf, normalizeTransition as Hg, UiSubgridAxis as Hh, propertyValuesEqualByName as Hi, Reactive as Hl, MotionState as Hm, resolveNumber as Hn, overrideSources as Ho, UiModifierEnvironment as Hp, ImageResolver as Hr, detectEditingPlatform as Hs, CapturedFrame as Ht, UiVideoSurface as Hu, UiScheduler as I, isNodeHitTestable as Ia, caretRectFor as Ic, fr as Id, boxShadowReach as If, UiNodeType as Ig, UiObjectFit as Ih, getPropertyNames as Ii, IdentityProps as Il, noKeyModifiers as Im, drawOverlayShapes as In, PinchRecognizerOptions as Io, UiGroupEdit as Ip, isSvgSource as Ir, isReadOnly as Is, GlyphUpload as It, VIRTUAL_LEAD_PROP as Iu, ByteSource as J, capturePointer as Ja, nextWordEnd as Jc, TOUCH_TARGET as Jd, UiFontStyle as Jf, UiReducedMotionPolicy as Jg, UiVerticalAlign as Jh, sizeGridTracks as Ji, TypographyProps as Jl, pop as Jm, sameArgs as Jn, SelectionControllerOptions as Jo, UiModifier as Jp, contextMenu as Jr, TextLinePlacement as Js, WebGPUSurface as Jt, UiLayoutProtocol as Ju, cueAt as K, PlatformSurface as Ka, lineStartAt as Kc, defineProperty as Kd, UiFontKerning as Kf, UiAnimation as Kg, UiTextWrapValue as Kh, GridTrack as Ki, TextContentProps as Kl, fade as Km, ThemeTokenTarget as Kn, FindHost as Ko, UiUnknownModifierPropertyError as Kp, ShortcutOptions as Kr, PlacedTextRun as Ks, WebGPURendererOptions as Kt, UiLayoutChild as Ku, UiSchedulerOptions as L, isNodeInert as La, lineIndexAtY as Lc, isAutoLength as Ld, boxShadowValuesEqual as Lf, DirtyFlags as Lg, UiOverflow as Lh, inheritedPropertyFlags as Li, InteractionProps as Ll, wheelDeltaYOf as Lm, labelOrigin as Ln, UiPinchRecognizer as Lo, UiTextPosition as Lp, SvgDocument as Lr, nextCaretToggle as Ls, WebGPUGlyphAtlas as Lt, VIRTUAL_WINDOW_PROP as Lu, paragraphGeometryFrom as M, UiManualFrameClock as Ma, setSelectionRange as Mc, PercentLength as Md, UiShadowName as Mf, UiEnvironment as Mg, UiDirection as Mh, accumulatedOffsetTo as Mi, FlexContainerProps as Ml, UiSelectionChangeEvent as Mm, RenderChanges as Mn, isScrollContainer as Mo, UiTextInput as Mp, iconKey as Mr, editorFor as Ms, textRuns as Mt, LazyListOptions as Mu, selectionRectsIn as N, UiTimerFrameClock as Na, CaretRect as Nc, UiLength as Nd, boxShadow as Nf, UiEnvironmentKey as Ng, UiFlexWrap as Nh, contentOffset as Ni, FlexItemProps as Nl, UiTextChangeEvent as Nm, RenderContext as Nn, GestureInput as No, UiTextInputState as Np, DefaultSvgResolver as Nr, editorOf as Ns, GlyphShaper as Nt, LazySourceArgs as Nu, ParagraphGeometry as O, cubicBezier as O_, UiFrameClockFactory as Oa, clearSelectionRange as Oc, validateGradient as Od, shadowsEqual as Of, TextRunSpan as Og, UiBorderRadiusValue as Oh, UiModifierBundle as Oi, CommonProps as Ol, UiPinchEvent as Om, ScrollLayerStats as On, ScrollSink as Oo, UiContainerSizeSource as Op, IconContext as Or, CARET_BLINK_MS as Os, TextRunDraw as Ot, sheetSource as Ou, wordRangeIn as P, UiTimerFrameClockOptions as Pa, PlacedLine as Pc, UiTrackSize as Pd, boxShadowArraysEqual as Pf, createEnvironmentKey as Pg, UiFontWeight as Ph, closestPropertyName as Pi, GridItemProps as Pl, UiWheelDeltaMode as Pm, LABEL_PADDING_X as Pn, GestureRecognizerOptions as Po, textInputOf as Pp, DefaultSvgResolverOptions as Pr, isEditableNode as Ps, GLYPH_SUBPIXEL_PHASES as Pt, UiVirtualWindow as Pu, rangeSource as Q, touchActionFor as Qa, Responsive as Qc, UiTheme as Qd, UiTextDecoration as Qf, UiTweenOptions as Qg, borderRadius as Qh, parseAlignContent as Qi, UiPropertyName as Ql, slideDown as Qm, publishInset as Qn, HitTestResult as Qo, UiModifierHost as Qp, ZoomState as Qr, createCanvasTextStyle as Qs, fontStackFor as Qt, defaultVisualState as Qu, MARK_PREFIX as R, isNodeSelectable as Ra, lineIndexForOffset as Rc, isFrLength as Rd, boxShadowsEqual as Rf, AnimationDriver as Rg, UiPlacement as Rh, inheritedPropertyNames as Ri, PaintElementProps as Rl, DirtyNodeSet as Rm, CanvasHost as Rn, FocusNotifier as Ro, adjacentField as Rp, SvgRect as Rr, syncEditorValue as Rs, WebGPUTextureCache as Rt, VirtualItemMeasure as Ru, clearLinkHover as S, colorsEqual as S_, formatExplanation as Sa, normalizeTextAlign as Sc, UiLinearGradient as Sd, raiseContrast as Sf, TextLine as Sg, decorationColor as Sh, InteractiveOptions as Si, UiChildrenBinding as Sl, UiFocusEvent as Sm, LayoutInspectorOptions as Sn, shortcutKeyCaps as So, UiInsetSource as Sp, ImageSourceArgs as Sr, FindOptions as Ss, RenderCommand as St, SheetRowRenderer as Su, linkOf as T, rgb8 as T_, UiFrame as Ta, DEFAULT_LINE_HEIGHT_FACTOR as Tc, gradientsEqual as Td, densityFactors as Tf, TextMeasurer as Tg, paintsAfterChildren as Th, measure as Ti, BoxProps as Tl, UiKeyModifiers as Tm, Canvas2DRendererOptions as Tn, PointerControllerOptions as To, noInsets as Tp, imageSource as Tr, provideEnvironment as Ts, ScissorRect as Tt, UiVirtualSheet as Tu, setPerformanceMarks as U, CanvasPlatformSurface as Ua, selectionRects as Uc, repeat as Ud, defaultTypography as Uf, spring as Ug, UiTextAlign as Uh, GridContribution as Ui, RowProps as Ul, MotionStateInput as Um, resolveProperty as Un, resetOverrideWarnings as Uo, UiModifierFocus as Up, AnimateLayoutOptions as Ur, isPrintable as Us, DrawStats as Ut, isVideoSurface as Uu, measureSpan as V, pointerEventsOf as Va, offsetAtX as Vc, minmax as Vd, UiTypographyExtensions as Vf, assertTransitionMap as Vg, UiSelfAlignment as Vh, propertyNarrowers as Vi, PropsOf as Vl, MotionChannel as Vm, resolveBoolean as Vn, clearOverrideProperty as Vo, editingGroupOf as Vp, DefaultImageResolverOptions as Vr, commandForKey as Vs, WebGPUError as Vt, lazySource as Vu, VttCue as W, PlatformAdapterOptions as Wa, graphemeBoundaries as Wc, resolveLength as Wd, isTypographyRole as Wf, tween as Wg, UiTextDirection as Wh, GridItemRequest as Wi, ScrollViewProps as Wl, MotionTiming as Wm, resolvePropertyByName as Wn, writeDeclaredProperty as Wo, UiModifierLayout as Wp, animateLayout as Wr, EditableLayout as Ws, RenderHooks as Wt, videoFrameSize as Wu, RangeSourceOptions as X, pointerDeviceOf as Xa, previousWordStart as Xc, UiThemeTouch as Xd, UiResolvedTextSpan as Xf, UiSpringOptions as Xg, UiBorderRadius as Xh, CrossAxisAlignment as Xi, UiNodeRef as Xl, rotateFrom as Xm, PublishInsetArgs as Xn, UiSelectionController as Xo, defineModifier as Xp, shortcuts as Xr, applyCanvasTextStyle as Xs, bumpFontStack as Xt, UiVisualState as Xu, DEFAULT_BLOCK_SIZE as Y, isImeKey as Ya, previousGraphemeStart as Yc, UiPointer as Yd, UiFontVariant as Yf, UiSpring as Yg, validateSubgrid as Yh, AlignContent as Yi, UiEventProps as Yl, resolveMotionState as Ym, InsetPaddingArgs as Yn, SelectionHost as Yo, UiModifierKind as Yp, shortcut as Yr, TextRunRect as Ys, createWebGPUSurface as Yt, isLayoutProtocol as Yu, bufferSource as Z, prepareInputSurface as Za, wordRangeAt as Zc, withPointer as Zd, UiSpannedText as Zf, UiTween as Zg, UiBorderRadiuses as Zh, MainAxisAlignment as Zi, UiProperties as Zl, scaleFrom as Zm, insetPadding as Zn, HitTestLayoutReader as Zo, isUiModifier as Zp, PinchableOptions as Zr, buildFontString as Zs, clearFontStacks as Zt, UiVisualStateSet as Zu, buildSemanticsTree as _, UiBasicColors as __, RelayoutExplanation as _a, VerticalAlign as _c, ResolvedGradient as _d, withThemeExtension as _f, FixedMetricsOptions as _g, UiPropertyOverrides as _h, borderShapes as _i, BindingId as _l, UiListenerErrorReporter as _m, drawSvg as _n, UiShortcutRegistry as _o, scaleSpacing as _p, MotionArgs as _r, TEXT_MATCHES_PROP as _s, INSTANCE_STRIDE_FLOATS as _t, EditableTextModel as _u, diffSemantics as a, defaultMotion as a_, proportionalFontMetrics as aa, textRunDecorations as ac, PaintLineJoin as ad, UiUnits as af, UiShapeExtensions as ag, LayoutResult as ah, dropTarget as ai, Box as al, UiChild as am, PaintContext2D as an, EXTERNAL_FILES as ao, editableSpansOf as ap, scrollPosition as ar, SCROLLBAR_THICKNESS as as, Mp3Frame as at, UiOrientation as au, semanticsMemory as b, colorToRgba as b_, describeOverrides as ba, createPaintState as bc, UiGradientOffset as bd, contrastRatio as bf, ParagraphTextMeasurer as bg, DecorationShape as bh, focusRing as bi, UiEventBinding as bl, UiCompositionEvent as bm, InspectorOverlay as bn, formatShortcut as bo, UiInsetEdge as bp, sharedElement as br, setMatchRanges as bs, PrimitiveCommand as bt, SheetHeaderRenderer as bu, SemanticsMemory as c, interpolateNumber as c_, SCROLLBAR_FADE_MS as ca, DEFAULT_FONT_FAMILY as cc, PaintTextStyle as cd, unitsEqual as cf, defaultShapes as cg, TightenOptions as ch, DraggableOptions as ci, EditableText as cl, isComponentLikeElement as cm, PaintTarget as cn, UiDragState as co, resolvedSpansOf as cp, VideoState as cr, ScrollbarThumb as cs, readMp3Header as ct, UiSemanticStates as cu, SemanticsRewalk as d, UiTransform as d_, AxisExplanation as da, DEFAULT_TEXT_COLOR as dc, inputsEqual as dd, UiThemeExtensions as df, UiColors as dg, tightenConstraints as dh, clickOutside as di, Row as dl, isUiElement as dm, PaintOp as dn, UiDroppedFile as do, spansDifferOnlyInPaint as dp, DefaultVideoResolver as dr, scrollRange as ds, Affine as dt, normalizeStates as du, UiDurationToken as e_, parseMainAxisAlignment as ea, fillTextRects as ec, visualState as ed, lightTheme as ef, borderRadiusEqual as eg, slideUp as eh, AutoScrollOptions as ei, LazyColumn as el, FocusOptions as em, PaintCanvas as en, EditingHost as eo, UiTextMetrics as ep, SizeContainerArgs as er, UiHitTester as es, Mp4Sample as et, UiPropertyValues as eu, SemanticsSpan as f, UiTransforms as f_, CustomLayoutExplanation as fa, ObjectFit as fc, paintValuesEqual as fd, defineThemeExtension as ff, colorsEqualPalette as fg, NodeId as fh, autoFocus as fi, ScrollView as fl, UiPropValue as fm, PaintRecorder as fn, UiFileDropMessage as fo, textContentOf as fp, DefaultVideoResolverOptions as fr, scrollbarThumb as fs, CLIP_STRIDE_BYTES as ft, statesEqual as fu, buildSemanticsSubtree as g, transformsEqual as g_, OverrideSources as ga, TextAlign as gc, MAX_GRADIENT_STOPS as gd, themeExtensionsEqual as gf, CharacterCountTextMeasurer as gg, UiPropertyOverride as gh, FocusRingOptions as gi, UiDefinition as gl, UiInputDispatcher as gm, SvgFit as gn, UiShortcutBinding as go, defaultSpacing as gp, canDecodeVideo as gr, SubtreeBounds as gs, INSTANCE_STRIDE_BYTES as gt, EditUnit as gu, UiSemanticsRecord as h, transformIsIdentity as h_, LayoutStateExplanation as ha, PaintTextSpan as hc, GradientPaint as hd, themeExtension as hf, LayoutRecord as hg, UiNodeTransitions as hh, Decorations as hi, createElement as hl, UiEventListenerOptions as hm, SvgDrawOptions as hn, UiShortcut as ho, UiSpacing as hp, VideoResolver as hr, scrollsFromRight as hs, GlyphCommand as ht, CompositionRange as hu, UiSemanticsPatch as i, UiSpringToken as i_, layoutParagraph as ia, textRunBackgrounds as ic, PaintLineCap as id, UiLengths as if, uniformBorderRadius as ig, LayoutBox as ih, dragSource as ii, LazyRow as il, ComponentLikeElement as im, paintPictures as in, UiTouchScroller as io, defaultTextStyle as ip, ScrollPositionArgs as ir, SCROLLBAR_MIN_THUMB as is, Mp3Format as it, UiLiveRegion as iu, paragraphGeometry as j, steps as j_, UiHostFrameClockOptions as ja, selectionRangeOf as jc, MinMaxTrack as jd, UiBoxShadows as jf, spannedRunsFor as jg, UiCursor as jh, Transform as ji, EnvironmentProps as jl, UiPointerKind as jm, LayoutReader as jn, UiWheelController as jo, unknownContainerSize as jp, IconSpec as jr, caretVisibleAt as js, glyphCount as jt, LazyItemRenderer as ju, hasDrawnText as k, easings as k_, UiFrameTime as ka, selectableTextNodes as kc, AutoLength as kd, BOX_SHADOW_BLUR_REACH as kf, TextRunStyle as kg, UiColorValue as kh, bundle as ki, ContainerProps as kl, UiPointerDevice as km, RendererBackend as kn, UiScrollBehavior as ko, bandOf as kp, IconRasterizer as kr, CARET_WIDTH as ks, buildRenderList as kt, LazyAxis as ku, SemanticsPlacement as l, interpolateTransform as l_, SCROLLBAR_LINGER_MS as la, DEFAULT_FONT_SIZE as lc, UiPaint as ld, UiThemeExtension as lf, isShapeName as lg, clampSize as lh, draggable as li, Grid as ll, isObservable$1 as lm, tracePathData as ln, UiDropEffect as lo, spanAtOffset as lp, VideoTransport as lr, scrollBounds as ls, splitMp3Frames as lt, isUiRole as lu, UiSemanticsMap as m, transform as m_, LayoutExplanation as ma, PaintState as mc, UiImage as md, noThemeExtensions as mf, lightColors as mg, UiNode as mh, BordersOptions as mi, Text as ml, UiEventListener as mm, replayPaint as mn, ShortcutRegistryOptions as mo, textStylesEqual as mp, VideoPlayback as mr, scrollbarZoneAt as ms, CommandKind as mt, validateStates as mu, UiSemanticsBox as n, UiMotion as n_, parseFlexDirection as na, runCanvasStyleInto as nc, PaintBox as nd, withContrast as nf, borderRadiusValuesEqual as ng, UiSharedElements as nh, DropTargetOptions as ni, LazyGridProps as nl, UiFocusManager as nm, PaintPictureCache as nn, UiEditingController as no, UiTextSpan as np, sizeContainer as nr, SCROLLBAR_HOVER_ZONE as ns, demuxMp4Audio as nt, UI_SEMANTIC_STATES as nu, dropIndexShifts as o, UiInterpolator as o_, LayoutNotifier as oa, Canvas2DContext as oc, PaintSurface as od, defaultUnits as of, UiShapeName as og, LayoutStats as oh, reorderable as oi, Button as ol, UiElement as om, PaintGradient as on, UiDragPayload as oo, flattenTextSpans as op, VideoClock as or, ScrollBounds as os, Mp3Frames as ot, UiRole as ou, TEXT_RUN_ID_SEPARATOR as p, parseTransform as p_, Edges as pa, PaintBoxShadow as pc, pathValuesEqual as pd, hasThemeExtension as pf, darkColors as pg, NodeProperty as ph, BorderEdge as pi, Stack as pl, UiProps as pm, PaintRecording as pn, dragSessionFor as po, textSpansEqual as pp, RangeResponse as pr, scrollbarThumbs as ps, CLIP_STRIDE_FLOATS as pt, validateRole as pu, parseWebVtt as q, UiPlatformAdapter as qa, nextGraphemeEnd as qc, propertyValuesEqual as qd, UiFontStretch as qf, UiAnimationOptions as qg, UiThemeColorName as qh, placeGridItems as qi, TextProps as ql, isMotionRest as qm, themeTokens as qn, UiFindController as qo, assertModifierList as qp, ShortcutsOptions as qr, SpanPaint as qs, WebGPUCanvasHost as qt, UiLayoutContext as qu, UiSemanticsUpdate as r, UiSpringSpec as r_, ELLIPSIS as ra, runFontString as rc, PaintFillRule as rd, withDensity as rf, normalizeBorderRadius as rg, Constraints as rh, ReorderableOptions as ri, LazyListProps as rl, ComponentResolver as rm, PaintStats as rn, TouchScrollerOptions as ro, UiTextStyle as rp, ScrollOffset as rr, SCROLLBAR_INSET as rs, demuxMp4Video as rt, UiAutocomplete as ru, recordsEqual as s, interpolateColor as s_, LayoutEngine as sa, Canvas2DGradient as sc, PaintTextAlign as sd, lengths as sf, UiShapes as sg, Size as sh, DragOffset as si, Column as sl, UiSourceLocation as sm, PaintResolver as sn, UiDragSession as so, hiddenRangesOf as sp, VideoSourceArgs as sr, ScrollbarAxis as ss, Mp3Header as st, UiSemanticState as su, UiSemanticsAction as t, UiEasingToken as t_, FlexDirection as ta, layoutTextLines as tc, visualStatesEqual as td, themesEqual as tf, borderRadiusIsZero as tg, SharedClaim as th, DragSourceOptions as ti, LazyGrid as tl, FocusSource as tm, PaintCanvasFactory as tn, EditingState as to, UiTextRange as tp, breakpoint as tr, UiPoint as ts, Mp4VideoTrack as tt, UI_ROLES as tu, SemanticsReuse as u, interpolatorFor as u_, ScrollAdjustment as ua, DEFAULT_FONT_WEIGHT as uc, UiPath as ud, UiThemeExtensionOptions as uf, shapesEqual as ug, constraintsEqual as uh, ClickOutsideOptions as ui, Paint as ul, isUiChild as um, EMPTY_RECORDING as un, UiDropZone as uo, spannedTextOf as up, videoSource as ur, scrollLeaderOf as us, WebGPUGlyphPages as ut, isUiSemanticState as uu, rewalkSemantics as v, UiColor as v_, SizeDecision as va, colorToCss as vc, ResolvedGradientStop as vd, HighContrastOptions as vf, FontMetrics as vg, DecorationFill as vh, borders as vi, UiBinding as vl, MOUSE_POINTER as vm, svgPaint as vn, UiShortcutStep as vo, spacingEqual as vp, SharedElementArgs as vr, clearMatchRanges as vs, ImageCommand as vt, LazySheet as vu, linkHoverOf as w, parseColor as w_, withOverrideSource as wa, resolvePaintState as wc, gradientPaint as wd, UiDensity as wf, TextMeasureRequest as wg, hasDecorationPhase as wh, interactive as wi, BoxModelProps as wl, UiInputEvent as wm, Canvas2DRenderer as wn, UiKeyboardController as wo, insetsEqual as wp, iconSource as wr, UiEnvironmentProvider as ws, RenderTextCache as wt, SheetViewport as wu, textRunOfRecordId as x, colorValuesEqual as x_, formatConstraints as xa, isPaintVisible as xc, UiGradientStop as xd, highContrastColors as xf, SpannedRuns as xg, DecorationStroke as xh, BUTTON_INTERACTION as xi, ChildrenBindingId as xl, UiEventType as xm, LayoutInspector as xn, parseShortcut as xo, UiInsetRegistry as xp, IconSourceArgs as xr, FindMatch as xs, PrimitiveKind as xt, SheetRange as xu, semanticsInertAbove as y, colorToHex as y_, describeLength as ya, computeObjectFitRect as yc, UiGradient as yd, UiContrast as yf, ParagraphLayout as yg, DecorationRect as yh, decorated as yi, UiGraph as yl, UiBeforeInputEvent as ym, INSPECTOR_HEAT_MS as yn, describeShortcut as yo, spacingSteps as yp, motion as yr, matchRangesOf as ys, NO_CLIP_INDEX as yt, LazySheetProps as yu, markInstant as z, isNodeTabStop as za, lineLimit as zc, isMinMaxTrack as zd, shadowsOf as zf, UiTransitionSpec as zg, UiPointerEvents as zh, propertyEffects as zi, PaintProps as zl, MOTION_CHANNELS as zm, CanvasSurface as zn, NodeTransitions as zo, comparePositions as zp, parseSvg as zr, EditCommand as zs, initializeWebGPU as zt, VirtualUpdate as zu };
|
|
20426
|
-
//# sourceMappingURL=index-
|
|
20994
|
+
export { Mp4AudioTrack as $, linear as $_, UiPlatformAdapter as $a, nextGraphemeEnd as $c, UiPropertyDefinition as $d, isTypographyRole as $f, UiTransitionSpec as $g, validateSubgrid as $h, placeGridItems as $i, TextProps as $l, MotionTiming as $m, InsetPaddingArgs as $n, UiFindController as $o, UiModifierLayout as $p, shortcut as $r, SpanPaint as $s, registerFontStack as $t, UiLayoutChild as $u, offsetAtPointIn as A, interpolateNumber as A_, withOverrideSource as Aa, resolvePaintState as Ac, UiLinearGradient as Ad, raiseContrast as Af, TextOverflow as Ag, UI_SUBGRID_AXES as Ah, interactive as Ai, BoxModelProps as Al, UiEventType as Am, traceRoundedRect as An, UiKeyboardController as Ao, UiInsetRegistry as Ap, mediaLoadsInFlight as Ar, UiEnvironmentProvider as As, createTextCache as At, SheetSourceArgs as Au, markNow as B, UiColor as B_, UiTimerFrameClockOptions as Ba, PlacedLine as Bc, PercentLength as Bd, UiShadowName as Bf, Size as Bg, UiObjectFit as Bh, closestPropertyName as Bi, GridItemProps as Bl, UiPointerKind as Bm, drawOverlayShapes as Bn, GestureRecognizerOptions as Bo, unknownContainerSize as Bp, isSvgSource as Br, isEditableNode as Bs, isWebGPUAvailable as Bt, LazySourceArgs as Bu, hasTextLinks as C, defaultMotion as C_, RelayoutExplanation as Ca, VerticalAlign as Cc, GradientPaint as Cd, themeExtension as Cf, ParagraphLayout as Cg, DecorationRect as Ch, decorated as Ci, BindingId as Cl, UiEventListener as Cm, INSPECTOR_HEAT_MS as Cn, UiShortcutRegistry as Co, textStylesEqual as Cp, motion as Cr, TEXT_MATCHES_PROP as Cs, RenderList as Ct, EditUnit as Cu, setLinkHover as D, springIn as D_, formatConstraints as Da, isPaintVisible as Dc, UiGradient as Dd, UiContrast as Df, TextLineRun as Dg, decorationRect as Dh, ShownAsKey as Di, ChildrenBindingId as Dl, MOUSE_POINTER as Dm, CanvasTextMeasurer as Dn, parseShortcut as Do, spacingEqual as Dp, ImageSources as Dr, FindMatch as Ds, TEXTURED_STRIDE_FLOATS as Dt, SheetHeaderRenderer as Du, linkRunAtPointIn as E, easingIn as E_, describeOverrides as Ea, createPaintState as Ec, ResolvedGradientStop as Ed, HighContrastOptions as Ef, TextLine as Eg, decorationColor as Eh, InteractiveOptions as Ei, UiEventBinding as El, UiListenerErrorReporter as Em, LayoutInspectorOptions as En, formatShortcut as Eo, scaleSpacing as Ep, ImageSourceArgs as Er, setMatchRanges as Es, TEXTURED_STRIDE_BYTES as Et, LazySheetProps as Eu, UiFrameCallback as F, parseTransform as F_, UiFrameTime as Fa, selectableTextNodes as Fc, radialGradient as Fd, defaultShadows as Ff, spannedRunsFor as Fg, UiCursor as Fh, bundle as Fi, ContainerProps as Fl, UiKeyboardEvent as Fm, LayoutReader as Fn, UiScrollBehavior as Fo, observeViewportInsets as Fp, IconSpec as Fr, CARET_WIDTH as Fs, GlyphSlot as Ft, sheetSource as Fu, VttTrack as G, normalizeColor as G_, isNodeTabStop as Ga, lineLimit as Gc, isAutoLength as Gd, boxShadowValuesEqual as Gf, UiEnvironment as Gg, UiSelfAlignment as Gh, propertyEffects as Gi, PaintProps as Gl, noKeyModifiers as Gm, resolveBoolean as Gn, NodeTransitions as Go, UiGroupEdit as Gp, DefaultImageResolverOptions as Gr, EditCommand as Gs, WebGPURenderer as Gt, VirtualItemMeasure as Gu, performanceMarksEnabled as H, colorToRgba as H_, isNodeHitTestable as Ha, caretRectFor as Hc, UiTrackSize as Hd, boxShadowArraysEqual as Hf, clampSize as Hg, UiPlacement as Hh, getPropertyNames as Hi, IdentityProps as Hl, UiTextChangeEvent as Hm, CanvasHost as Hn, PinchRecognizerOptions as Ho, UiTextInputState as Hp, SvgRect as Hr, isReadOnly as Hs, CapturedFrame as Ht, VIRTUAL_INDEX_PROP as Hu, UiScheduler as I, transform as I_, UiHostFrameClock as Ia, selectableTextOf as Ic, validateGradient as Id, shadowsEqual as If, Constraints as Ig, UiDirection as Ih, noModifiers as Ii, EditableTextProps as Il, UiPasteEvent as Im, RenderChanges as In, UiScrollability as Io, UiContainerSize as Ip, iconKey as Ir, EDITOR_PROP as Is, GlyphUpload as It, LazyAxis as Iu, ByteSource as J, rgba as J_, resolveCursor as Ja, offsetForVerticalMove as Jc, isPercentLength as Jd, shadowsOf as Jf, createEnvironmentKey as Jg, UiTextDirection as Jh, propertyValuesEqualByName as Ji, Reactive as Jl, MOTION_CHANNELS as Jm, resolvePropertyByName as Jn, overrideSources as Jo, comparePositions as Jp, animateLayout as Jr, detectEditingPlatform as Js, WebGPUSurface as Jt, lazySource as Ju, cueAt as K, parseColor as K_, isSubtreeInert as Ka, offsetAtPoint as Kc, isFrLength as Kd, boxShadowsEqual as Kf, UiEnvironmentKey as Kg, UiSubgridAxis as Kh, propertyIsInherited as Ki, PositionProps as Kl, wheelDeltaYOf as Km, resolveNumber as Kn, resetTransitionWarnings as Ko, UiTextPosition as Kp, ImageResolver as Kr, EditingPlatform as Ks, WebGPURendererOptions as Kt, VirtualUpdate as Ku, UiSchedulerOptions as L, transformIsIdentity as L_, UiHostFrameClockOptions as La, selectionRangeOf as Lc, AutoLength as Ld, BOX_SHADOW_BLUR_REACH as Lf, LayoutBox as Lg, UiFlexWrap as Lh, Transform as Li, EnvironmentProps as Ll, UiPinchEvent as Lm, RenderContext as Ln, UiWheelController as Lo, UiContainerSizeSource as Lp, DefaultSvgResolver as Lr, caretVisibleAt as Ls, WebGPUGlyphAtlas as Lt, LazyGridOptions as Lu, paragraphGeometryFrom as M, interpolatorFor as M_, UiAnimationFrameClock as Ma, TEXT_SELECTION_PROP as Mc, gradientPaint as Md, UiDensity as Mf, TextRunSpan as Mg, UiBorderRadiusValue as Mh, measureFlow as Mi, ButtonProps as Ml, UiGestureEvent as Mm, ScrollLayerStats as Mn, UiPointerController as Mo, UiInsets as Mp, IconContext as Mr, UiEnvironmentKeys as Ms, textRuns as Mt, UiVirtualSheet as Mu, selectionRectsIn as N, UiTransform as N_, UiFrameClock as Na, TextRange as Nc, gradientsEqual as Nd, densityFactors as Nf, TextRunStyle as Ng, UiColorValue as Nh, pressable as Ni, ColumnProps as Nl, UiInputEvent as Nm, RendererBackend as Nn, ScrollContainerState as No, insetsEqual as Np, IconRasterizer as Nr, EnvironmentNotifier as Ns, GlyphShaper as Nt, UiVirtualSheetOptions as Nu, ParagraphGeometry as O, UiInterpolator as O_, formatExplanation as Oa, normalizeTextAlign as Oc, UiGradientOffset as Od, contrastRatio as Of, TextMeasureRequest as Og, hasDecorationPhase as Oh, UiShownAs as Oi, UiChildrenBinding as Ol, UiBeforeInputEvent as Om, Canvas2DRenderer as On, shortcutKeyCaps as Oo, spacingSteps as Op, iconSource as Or, FindOptions as Os, TextRunDraw as Ot, SheetRange as Ou, wordRangeIn as P, UiTransforms as P_, UiFrameClockFactory as Pa, clearSelectionRange as Pc, linearGradient as Pd, UiShadows as Pf, TextWrap as Pg, UiContentDistribution as Ph, UiModifierBundle as Pi, CommonProps as Pl, UiKeyModifiers as Pm, UiRenderer as Pn, ScrollSink as Po, noInsets as Pp, IconRasterizerOptions as Pr, CARET_BLINK_MS as Ps, GLYPH_SUBPIXEL_PHASES as Pt, VIRTUAL_SHEET_PROP as Pu, rangeSource as Q, easings as Q_, PlatformSurface as Qa, lineStartAt as Qc, resolveLength as Qd, defaultTypography as Qf, DirtyFlags as Qg, UiVerticalAlign as Qh, GridTrack as Qi, TextContentProps as Ql, MotionStateInput as Qm, sameArgs as Qn, FindHost as Qo, UiModifierFocus as Qp, contextMenu as Qr, PlacedTextRun as Qs, fontStackFor as Qt, MAX_MEASURES_PER_CHILD as Qu, MARK_PREFIX as R, transformsEqual as R_, UiManualFrameClock as Ra, setSelectionRange as Rc, FrLength as Rd, UiBoxShadow as Rf, LayoutResult as Rg, UiFontWeight as Rh, accumulatedOffsetTo as Ri, FlexContainerProps as Rl, UiPointerDevice as Rm, LABEL_PADDING_X as Rn, isScrollContainer as Ro, bandOf as Rp, DefaultSvgResolverOptions as Rr, editorFor as Rs, WebGPUTextureCache as Rt, LazyItemRenderer as Ru, clearLinkHover as S, UiSpringToken as S_, OverrideSources as Sa, TextAlign as Sc, UiImage as Sd, noThemeExtensions as Sf, FontMetrics as Sg, DecorationFill as Sh, borders as Si, UiDefinition as Sl, UiProps as Sm, svgPaint as Sn, UiShortcutBinding as So, textSpansEqual as Sp, SharedElementArgs as Sr, SubtreeBounds as Ss, RenderCommand as St, CompositionRange as Su, linkOf as T, durationIn as T_, describeLength as Ta, computeObjectFitRect as Tc, ResolvedGradient as Td, withThemeExtension as Tf, SpannedRuns as Tg, DecorationStroke as Th, BUTTON_INTERACTION as Ti, UiGraph as Tl, UiInputDispatcher as Tm, LayoutInspector as Tn, describeShortcut as To, defaultSpacing as Tp, IconSourceArgs as Tr, matchRangesOf as Ts, ScissorRect as Tt, LazySheet as Tu, setPerformanceMarks as U, colorValuesEqual as U_, isNodeInert as Ua, lineIndexAtY as Uc, auto as Ud, boxShadowRadius as Uf, constraintsEqual as Ug, UiPointerEvents as Uh, inheritedPropertyFlags as Ui, InteractionProps as Ul, UiWheelDeltaMode as Um, CanvasSurface as Un, UiPinchRecognizer as Uo, textInputOf as Up, parseSvg as Ur, nextCaretToggle as Us, DrawStats as Ut, VIRTUAL_LEAD_PROP as Uu, measureSpan as V, colorToHex as V_, isNodeFocusable as Va, RunMeasure as Vc, UiLength as Vd, boxShadow as Vf, TightenOptions as Vg, UiOverflow as Vh, findPropertyDefinition as Vi, GridProps as Vl, UiSelectionChangeEvent as Vm, labelOrigin as Vn, UiGestureRecognizer as Vo, UiTextInput as Vp, SvgDocument as Vr, isMultiline as Vs, WebGPUError as Vt, UiVirtualWindow as Vu, VttCue as W, colorsEqual as W_, isNodeSelectable as Wa, lineIndexForOffset as Wc, fr as Wd, boxShadowReach as Wf, tightenConstraints as Wg, UiPosition as Wh, inheritedPropertyNames as Wi, PaintElementProps as Wl, UiWheelEvent as Wm, createCanvasSurface as Wn, FocusNotifier as Wo, UiEditingGroup as Wp, DefaultImageResolver as Wr, syncEditorValue as Ws, RenderHooks as Wt, VIRTUAL_WINDOW_PROP as Wu, RangeSourceOptions as X, cubicBezier as X_, PlatformAdapterOptions as Xa, graphemeBoundaries as Xc, percent as Xd, UiTypographyExtensions as Xf, provided as Xg, UiTextWrapValue as Xh, GridItemRequest as Xi, ScrollViewProps as Xl, MotionChannel as Xm, ThemeTokenTarget as Xn, writeDeclaredProperty as Xo, editingGroupOf as Xp, ShortcutOptions as Xr, EditableLayout as Xs, bumpFontStack as Xt, isVideoSurface as Xu, DEFAULT_BLOCK_SIZE as Y, UiEasing as Y_, CanvasPlatformSurface as Ya, selectionRects as Yc, minmax as Yd, UiTypography as Yf, findEnvironmentKey as Yg, UiTextOverflowValue as Yh, GridContribution as Yi, RowProps as Yl, MOTION_REST as Ym, resolveString as Yn, resetOverrideWarnings as Yo, edgeField as Yp, ContextMenuOptions as Yr, isPrintable as Ys, createWebGPUSurface as Yt, UiVideoSurface as Yu, bufferSource as Z, easingCss as Z_, PlatformEventTarget as Za, lineEndAt as Zc, repeat as Zd, UiTypographyRole as Zf, UiNodeType as Zg, UiThemeColorName as Zh, GridPlacement as Zi, StackProps as Zl, MotionState as Zm, themeTokens as Zn, writeOverrideProperty as Zo, UiModifierEnvironment as Zp, ShortcutsOptions as Zr, CanvasTextStyle as Zs, clearFontStacks as Zt, videoFrameSize as Zu, buildSemanticsTree as _, UiEasingToken as __, AxisExplanation as _a, DEFAULT_TEXT_COLOR as _c, UiPaint as _d, UiThemeExtension as _f, darkColors as _g, NodeProperty as _h, BorderEdge as _i, Row as _l, isComponentLikeElement as _m, PaintRecording as _n, UiDroppedFile as _o, resolvedSpansOf as _p, RangeResponse as _r, scrollRange as _s, INSTANCE_STRIDE_FLOATS as _t, isUiSemanticState as _u, diffSemantics as a, AnimatedCell as a_, parseCrossAxisAlignment as aa, drawText as ac, defaultVisualState as ad, withPointer as af, borderRadiusIsZero as ag, rotateFrom as ah, DragSourceOptions as ai, ResponsiveProps as al, defineModifier as am, PaintContext2D as an, EditingControllerOptions as ao, UiResolvedTextSpan as ap, breakpoint as ar, HitTester as as, Mp3Frame as at, UiPropertyName as au, semanticsMemory as b, UiSpringExtensions as b_, LayoutExplanation as ba, PaintState as bc, paintValuesEqual as bd, defineThemeExtension as bf, CharacterCountTextMeasurer as bg, UiPropertyOverride as bh, FocusRingOptions as bi, Text as bl, isUiElement as bm, SvgFit as bn, ShortcutRegistryOptions as bo, spansDifferOnlyInPaint as bp, canDecodeVideo as br, scrollbarZoneAt as bs, PrimitiveCommand as bt, validateRole as bu, SemanticsMemory as c, UiReducedMotionPolicy as c_, parseFlexDirection as ca, runCanvasStyleInto as cc, visualStatesEqual as cd, lightTheme as cf, uniformBorderRadius as cg, slideFrom as ch, dragSource as ci, LazyGridProps as cl, UiModifierTeardown as cm, PaintLayers as cn, UiEditingController as co, UiTextLink as cp, ScrollPositionArgs as cr, SCROLLBAR_HOVER_ZONE as cs, readMp3Header as ct, UI_ROLES as cu, SemanticsRewalk as d, UiTween as d_, proportionalFontMetrics as da, textRunDecorations as dc, PaintLineCap as dd, withDensity as df, UiShapes as dg, UiSharedElements as dh, DragOffset as di, Box as dl, UiFocusManager as dm, PaintResolver as dn, EXTERNAL_FILES as do, UiTextSpan as dp, VideoSourceArgs as dr, SCROLLBAR_THICKNESS as ds, Affine as dt, UiLiveRegion as du, UiTransitionValue as e_, sizeGridTracks as ea, TextLinePlacement as ec, UiLayoutContext as ed, defineProperty as ef, UiBorderRadius as eg, ResolvedMotionState as eh, shortcuts as ei, nextWordEnd as el, UiModifierSet as em, PaintPictureCache as en, capturePointer as eo, typographyEqual as ep, PublishInsetArgs as er, SelectionControllerOptions as es, Mp4Sample as et, TypographyProps as eu, steps as ev, SemanticsSpan as f, UiTweenOptions as f_, LayoutNotifier as fa, Canvas2DContext as fc, PaintLineJoin as fd, UiLengths as ff, defaultShapes as fg, AnimationDriver as fh, DraggableOptions as fi, Button as fl, ComponentResolver as fm, PaintTarget as fn, UiDragPayload as fo, UiTextStyle as fp, VideoState as fr, ScrollBounds as fs, CLIP_STRIDE_BYTES as ft, UiOrientation as fu, buildSemanticsSubtree as g, UiEasingExtensions as g_, ScrollAdjustment as ga, DEFAULT_FONT_WEIGHT as gc, PaintTextStyle as gd, unitsEqual as gf, colorsEqualPalette as gg, NodeId as gh, autoFocus as gi, Paint as gl, UiSourceLocation as gm, PaintRecorder as gn, UiDropZone as go, hiddenRangesOf as gp, DefaultVideoResolverOptions as gr, scrollLeaderOf as gs, INSTANCE_STRIDE_BYTES as gt, isUiRole as gu, UiSemanticsRecord as h, UiDurationToken as h_, SCROLLBAR_LINGER_MS as ha, DEFAULT_FONT_SIZE as hc, PaintTextAlign as hd, lengths as hf, UiColors as hg, motionOf as hh, clickOutside as hi, Grid as hl, UiElement as hm, PaintOp as hn, UiDropEffect as ho, flattenTextSpans as hp, DefaultVideoResolver as hr, scrollBounds as hs, GlyphCommand as ht, UiSemanticStates as hu, UiSemanticsPatch as i, tween as i_, parseAlignContent as ia, createCanvasTextStyle as ic, UiVisualStateSet as id, UiThemeTouch as if, borderRadiusEqual as ig, resolveMotionState as ih, AutoScrollOptions as ii, Responsive as il, UiModifierKind as im, PaintCanvasFactory as in, touchActionFor as io, UiFontVariant as ip, SizeContainerArgs as ir, HitTestResult as is, Mp3Format as it, UiProperties as iu, paragraphGeometry as j, interpolateTransform as j_, UiFrame as ja, DEFAULT_LINE_HEIGHT_FACTOR as jc, UiRadialGradient as jd, relativeLuminance as jf, TextRunMeasurer as jg, UiAlignment as jh, measure as ji, BoxProps as jl, UiFocusEvent as jm, LayerCanvasFactory as jn, PointerControllerOptions as jo, UiInsetSource as jp, IconCanvas as jr, provideEnvironment as js, glyphCount as jt, SheetViewport as ju, hasDrawnText as k, interpolateColor as k_, labelNode as ka, normalizeVerticalAlign as kc, UiGradientStop as kd, highContrastColors as kf, TextMeasurer as kg, paintsAfterChildren as kh, hoverable as ki, UiGraphBuilder as kl, UiCompositionEvent as km, Canvas2DRendererOptions as kn, KeyboardControllerOptions as ko, UiInsetEdge as kp, imageSource as kr, findMatchesIn as ks, buildRenderList as kt, SheetRowRenderer as ku, SemanticsPlacement as l, UiSpring as l_, ELLIPSIS as la, runFontString as lc, PaintBox as ld, themesEqual as lf, UiShapeExtensions as lg, slideUp as lh, dropTarget as li, LazyListProps as ll, FocusOptions as lm, PaintMatrix as ln, TouchScrollerOptions as lo, UiTextMetrics as lp, scrollPosition as lr, SCROLLBAR_INSET as ls, splitMp3Frames as lt, UI_SEMANTIC_STATES as lu, UiSemanticsMap as m, UiDurationExtensions as m_, SCROLLBAR_FADE_MS as ma, DEFAULT_FONT_FAMILY as mc, PaintSurface as md, defaultUnits as mf, shapesEqual as mg, clockOf as mh, ClickOutsideOptions as mi, EditableText as ml, UiChild as mm, EMPTY_RECORDING as mn, UiDragState as mo, editableSpansOf as mp, videoSource as mr, ScrollbarThumb as ms, CommandKind as mt, UiSemanticState as mu, UiSemanticsBox as n, normalizeTransition as n_, CrossAxisAlignment as na, applyCanvasTextStyle as nc, isLayoutProtocol as nd, TOUCH_TARGET as nf, borderRadius as ng, isMotionRest as nh, ZoomState as ni, previousWordStart as nl, assertModifierList as nm, paintPictures as nn, pointerDeviceOf as no, UiFontStretch as np, publishInset as nr, UiSelectionController as ns, demuxMp4Audio as nt, UiNodeRef as nu, dropIndexShifts as o, UiAnimation as o_, parseMainAxisAlignment as oa, fillTextRects as oc, hasVisualState as od, UiTheme as of, borderRadiusValuesEqual as og, scaleFrom as oh, DropTargetOptions as oi, LazyColumn as ol, isUiModifier as om, PaintDeviceRect as on, EditingHost as oo, UiSpannedText as op, sizeContainer as or, UiHitTester as os, Mp3Frames as ot, UiPropertyValueOf as ou, TEXT_RUN_ID_SEPARATOR as p, createTween as p_, LayoutEngine as pa, Canvas2DGradient as pc, PaintMaskMode as pd, UiUnits as pf, isShapeName as pg, UiClock as ph, draggable as pi, Column as pl, ComponentLikeElement as pm, tracePathData as pn, UiDragSession as po, defaultTextStyle as pp, VideoTransport as pr, ScrollbarAxis as ps, CLIP_STRIDE_FLOATS as pt, UiRole as pu, parseWebVtt as q, rgb8 as q_, pointerEventsOf as qa, offsetAtX as qc, isMinMaxTrack as qd, fittedShadowRadius as qf, UiProvision as qg, UiTextAlign as qh, propertyNarrowers as qi, PropsOf as ql, DirtyNodeSet as qm, resolveProperty as qn, clearOverrideProperty as qo, adjacentField as qp, AnimateLayoutOptions as qr, commandForKey as qs, WebGPUCanvasHost as qt, VirtualViewport as qu, UiSemanticsUpdate as r, spring as r_, MainAxisAlignment as ra, buildFontString as rc, UiVisualState as rd, UiPointer as rf, borderRadiusCorners as rg, pop as rh, pinchable as ri, wordRangeAt as rl, UiModifier as rm, PaintCanvas as rn, prepareInputSurface as ro, UiFontStyle as rp, BreakpointArgs as rr, HitTestLayoutReader as rs, demuxMp4Video as rt, UiHoldUnseen as ru, recordsEqual as s, UiAnimationOptions as s_, FlexDirection as sa, layoutTextLines as sc, visualState as sd, darkTheme as sf, normalizeBorderRadius as sg, slideDown as sh, ReorderableOptions as si, LazyGrid as sl, UiModifierHost as sm, PaintGradient as sn, EditingState as so, UiTextDecoration as sp, ScrollOffset as sr, UiPoint as ss, Mp3Header as st, UiPropertyValues as su, UiSemanticsAction as t, assertTransitionMap as t_, AlignContent as ta, TextRunRect as tc, UiLayoutProtocol as td, propertyValuesEqual as tf, UiBorderRadiuses as tg, fade as th, PinchableOptions as ti, previousGraphemeStart as tl, UiUnknownModifierPropertyError as tm, PaintStats as tn, isImeKey as to, UiFontKerning as tp, insetPadding as tr, SelectionHost as ts, Mp4VideoTrack as tt, UiEventProps as tu, SemanticsReuse as u, UiSpringOptions as u_, layoutParagraph as ua, textRunBackgrounds as uc, PaintFillRule as ud, withContrast as uf, UiShapeName as ug, SharedClaim as uh, reorderable as ui, LazyRow as ul, FocusSource as um, PaintPixels as un, UiTouchScroller as uo, UiTextRange as up, VideoClock as ur, SCROLLBAR_MIN_THUMB as us, WebGPUGlyphPages as ut, UiAutocomplete as uu, rewalkSemantics as v, UiMotion as v_, CustomLayoutExplanation as va, ObjectFit as vc, UiPath as vd, UiThemeExtensionOptions as vf, lightColors as vg, UiNode as vh, BordersOptions as vi, ScrollView as vl, isObservable$1 as vm, replayPaint as vn, UiFileDropMessage as vo, spanAtOffset as vp, VideoPlayback as vr, scrollbarThumb as vs, ImageCommand as vt, normalizeStates as vu, linkHoverOf as w, defineMotion as w_, SizeDecision as wa, colorToCss as wc, MAX_GRADIENT_STOPS as wd, themeExtensionsEqual as wf, ParagraphTextMeasurer as wg, DecorationShape as wh, focusRing as wi, UiBinding as wl, UiEventListenerOptions as wm, InspectorOverlay as wn, UiShortcutStep as wo, UiSpacing as wp, sharedElement as wr, clearMatchRanges as ws, RenderTextCache as wt, EditableTextModel as wu, textRunOfRecordId as x, UiSpringSpec as x_, LayoutStateExplanation as xa, PaintTextSpan as xc, pathValuesEqual as xd, hasThemeExtension as xf, FixedMetricsOptions as xg, UiPropertyOverrides as xh, borderShapes as xi, createElement as xl, UiPropValue as xm, drawSvg as xn, UiShortcut as xo, textContentOf as xp, MotionArgs as xr, scrollsFromRight as xs, PrimitiveKind as xt, validateStates as xu, semanticsInertAbove as y, UiMotionChanges as y_, Edges as ya, PaintBoxShadow as yc, inputsEqual as yd, UiThemeExtensions as yf, LayoutRecord as yg, UiNodeTransitions as yh, Decorations as yi, Stack as yl, isUiChild as ym, SvgDrawOptions as yn, dragSessionFor as yo, spannedTextOf as yp, VideoResolver as yr, scrollbarThumbs as ys, NO_CLIP_INDEX as yt, statesEqual as yu, markInstant as z, UiBasicColors as z_, UiTimerFrameClock as za, CaretRect as zc, MinMaxTrack as zd, UiBoxShadows as zf, LayoutStats as zg, UiGridAutoFlow as zh, contentOffset as zi, FlexItemProps as zl, UiPointerEvent as zm, OverlayShape as zn, GestureInput as zo, containerBands as zp, SvgResolver as zr, editorOf as zs, initializeWebGPU as zt, LazyListOptions as zu };
|
|
20995
|
+
//# sourceMappingURL=index-BSoAnZP0.d.ts.map
|