gesso-core 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +147 -0
- package/README.md +1 -1
- package/dist/{CanvasSurface-CrG-uJ5o.js → CanvasSurface-5dU-U3qQ.js} +34 -5
- package/dist/{CanvasSurface-CrG-uJ5o.js.map → CanvasSurface-5dU-U3qQ.js.map} +1 -1
- package/dist/{index-DuZEAhyZ.d.ts → index-DAdauEn9.d.ts} +634 -53
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1439 -117
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +163 -2
- package/dist/testing.js +325 -2
- package/dist/testing.js.map +1 -1
- package/package.json +2 -2
|
@@ -410,7 +410,29 @@ declare abstract class UiAnimation<T> {
|
|
|
410
410
|
protected startedAt: number;
|
|
411
411
|
private begun;
|
|
412
412
|
private readonly subject;
|
|
413
|
-
|
|
413
|
+
/**
|
|
414
|
+
* When this animation next *wants* a sample, on the ideal timeline.
|
|
415
|
+
*
|
|
416
|
+
* The ideal one, and that word is carrying the whole fix. This used
|
|
417
|
+
* to be derived at the point of asking, as `lastSampledAt + stepMs`,
|
|
418
|
+
* which sounds equivalent and is not: frames arrive on the display's
|
|
419
|
+
* refreshes, so a sample is nearly always served a little after it
|
|
420
|
+
* was due, and measuring the next step from when it was *served*
|
|
421
|
+
* rounds the period up to a whole refresh and keeps the rounding.
|
|
422
|
+
*
|
|
423
|
+
* The arithmetic is unforgiving. A 24fps clip wants 41.67ms; on a
|
|
424
|
+
* 60Hz display the refresh at 33.3ms is too early and the one at
|
|
425
|
+
* 50ms serves it, so the next step is measured from 50, wants 91.67,
|
|
426
|
+
* and is served at 100. The period is not 41.67ms but 50ms, which is
|
|
427
|
+
* 20fps: one frame in six dropped, for ever, on the commonest clip
|
|
428
|
+
* rate there is. Measured, not reasoned about; see the spec beside
|
|
429
|
+
* this file.
|
|
430
|
+
*
|
|
431
|
+
* Advancing the ideal time by exactly `stepMs` instead lets the
|
|
432
|
+
* served times alternate between 33.3 and 50 and average out to the
|
|
433
|
+
* rate that was asked for.
|
|
434
|
+
*/
|
|
435
|
+
private nextDueAt;
|
|
414
436
|
private lastWritten;
|
|
415
437
|
private finished;
|
|
416
438
|
protected constructor(cell: AnimatedCell<T>, stepMs: number, reducedMotionPolicy: UiReducedMotionPolicy, delayMs?: number);
|
|
@@ -459,6 +481,18 @@ declare abstract class UiAnimation<T> {
|
|
|
459
481
|
get hasBegun(): boolean;
|
|
460
482
|
protected onBegin(): void;
|
|
461
483
|
advance(now: number): void;
|
|
484
|
+
/**
|
|
485
|
+
* Moves the ideal timeline on by one step.
|
|
486
|
+
*
|
|
487
|
+
* Resynchronised rather than caught up when a whole step has already
|
|
488
|
+
* gone by: that means the application stalled, or the tab was
|
|
489
|
+
* hidden, and the samples that were missed are not worth taking now.
|
|
490
|
+
* For a video they are frames already past, and presenting is a pure
|
|
491
|
+
* function of a position, so chasing the backlog would sample
|
|
492
|
+
* several times in a row to arrive exactly where a single sample
|
|
493
|
+
* arrives anyway.
|
|
494
|
+
*/
|
|
495
|
+
private scheduleNext;
|
|
462
496
|
/** Writes the target and completes, for reduced motion and for `duration: 0`. */
|
|
463
497
|
snap(): void;
|
|
464
498
|
/** Stops without reaching the target: superseded, or the node left. */
|
|
@@ -2600,6 +2634,28 @@ interface UiModifierHost {
|
|
|
2600
2634
|
* list behind the scroll.
|
|
2601
2635
|
*/
|
|
2602
2636
|
flowBox(): LayoutBox | null;
|
|
2637
|
+
/**
|
|
2638
|
+
* The whole surface the application is drawn on, in the same
|
|
2639
|
+
* coordinates `layoutBox` answers in.
|
|
2640
|
+
*
|
|
2641
|
+
* Here so that a modifier can tell whether its node is somewhere a
|
|
2642
|
+
* reader could see it, which is a question only the expensive
|
|
2643
|
+
* modifiers ask and the reason this is in the budget at all: a
|
|
2644
|
+
* decoder, a poller or anything else that costs whether or not it is
|
|
2645
|
+
* looked at has no business running for a node scrolled a thousand
|
|
2646
|
+
* pixels off the bottom. `videoSource` is the case that earned it —
|
|
2647
|
+
* a page of clips used to cost the sum of all of them however few
|
|
2648
|
+
* were on screen.
|
|
2649
|
+
*
|
|
2650
|
+
* It is the *root's* box and not the window's, so it is right for an
|
|
2651
|
+
* application that does not fill its page and correct under the same
|
|
2652
|
+
* scrolling `layoutBox` already accounts for. Null wherever
|
|
2653
|
+
* `layoutBox` is: before the first layout, and in a headless graph
|
|
2654
|
+
* with no layout at all — and a modifier that gets null must carry
|
|
2655
|
+
* on as though the node were visible, because "no measurement yet"
|
|
2656
|
+
* and "off screen" are not the same answer.
|
|
2657
|
+
*/
|
|
2658
|
+
viewportBox(): LayoutBox | null;
|
|
2603
2659
|
/**
|
|
2604
2660
|
* How far this node is scrolled, or null for one that is not a
|
|
2605
2661
|
* scroll container.
|
|
@@ -2776,6 +2832,16 @@ interface UiModifierLayout {
|
|
|
2776
2832
|
x: number;
|
|
2777
2833
|
y: number;
|
|
2778
2834
|
} | null;
|
|
2835
|
+
/**
|
|
2836
|
+
* The drawn surface, in the same coordinates `box` answers in; see
|
|
2837
|
+
* `UiModifierHost.viewportBox`.
|
|
2838
|
+
*
|
|
2839
|
+
* Optional, and absent means unknown. A layout double in a spec, and
|
|
2840
|
+
* a headless graph, have no surface to report — and a modifier that
|
|
2841
|
+
* gets null must carry on as though its node were visible, because
|
|
2842
|
+
* "nobody is drawing" and "off screen" are not the same answer.
|
|
2843
|
+
*/
|
|
2844
|
+
viewport?(): LayoutBox | null;
|
|
2779
2845
|
onLayout(node: UiNode, listener: (box: LayoutBox) => void): () => void;
|
|
2780
2846
|
}
|
|
2781
2847
|
/**
|
|
@@ -10206,6 +10272,16 @@ interface UiTimerFrameClockOptions {
|
|
|
10206
10272
|
now?: () => UiFrameTime;
|
|
10207
10273
|
}
|
|
10208
10274
|
interface UiHostFrameClockOptions {
|
|
10275
|
+
/**
|
|
10276
|
+
* This thread's own `requestAnimationFrame`, where it has one.
|
|
10277
|
+
*
|
|
10278
|
+
* Defaults to looking for it, which is the whole point: a dedicated
|
|
10279
|
+
* worker has one, and using it removes the host from the frame path
|
|
10280
|
+
* entirely. Pass `null` to force the hosted path, which specs do and
|
|
10281
|
+
* which is also the escape hatch if a browser's worker frames ever
|
|
10282
|
+
* turn out to be worse than its host's.
|
|
10283
|
+
*/
|
|
10284
|
+
requestAnimationFrame?: ((callback: (time: number) => void) => number) | null;
|
|
10209
10285
|
/** How long to wait for a host tick before pacing a frame anyway. */
|
|
10210
10286
|
fallbackMs?: number;
|
|
10211
10287
|
/**
|
|
@@ -10243,33 +10319,6 @@ declare class UiTimerFrameClock implements UiFrameClock {
|
|
|
10243
10319
|
requestFrame(): void;
|
|
10244
10320
|
cancelFrame(): void;
|
|
10245
10321
|
}
|
|
10246
|
-
/**
|
|
10247
|
-
* A clock whose frames arrive from somewhere else.
|
|
10248
|
-
*
|
|
10249
|
-
* The one thing a worker cannot do for itself. `requestAnimationFrame`
|
|
10250
|
-
* is tied to the compositor and exists only on the main thread, so a
|
|
10251
|
-
* render worker's frames were paced by `UiTimerFrameClock` at a fixed
|
|
10252
|
-
* 16ms — roughly sixty a second on any display, aligned to none of
|
|
10253
|
-
* them. On a 165Hz monitor that is not merely slower than it could be:
|
|
10254
|
-
* an unaligned timer lands two frames inside one refresh, or none, so
|
|
10255
|
-
* the pacing is uneven as well as capped.
|
|
10256
|
-
*
|
|
10257
|
-
* This clock does no timing at all. It reports when it wants frames
|
|
10258
|
-
* and delivers whatever ticks it is handed, which lets the shell —
|
|
10259
|
-
* the one thread with a `requestAnimationFrame` — supply the display's
|
|
10260
|
-
* own cadence. That is the narrow exception to keeping the shell
|
|
10261
|
-
* uninvolved: not work moved back onto the main thread for
|
|
10262
|
-
* convenience, but the single fact a worker has no way to observe.
|
|
10263
|
-
*
|
|
10264
|
-
* **Ticks are free-running while frames are wanted, not requested one
|
|
10265
|
-
* at a time.** A tick per request would cost a round trip inside every
|
|
10266
|
-
* frame: if the request reaches the shell after that vsync's callback
|
|
10267
|
-
* has run, the tick waits for the next one and the rate halves. So
|
|
10268
|
-
* `onActive(true)` means "keep ticking" and `onActive(false)` means
|
|
10269
|
-
* "stop"; a tick arriving with nothing pending is dropped, which costs
|
|
10270
|
-
* one comparison and makes the timing robust to whichever side is
|
|
10271
|
-
* late.
|
|
10272
|
-
*/
|
|
10273
10322
|
declare class UiHostFrameClock implements UiFrameClock {
|
|
10274
10323
|
private readonly onFrame;
|
|
10275
10324
|
/** Told when this starts and stops wanting ticks. */
|
|
@@ -10309,9 +10358,14 @@ declare class UiHostFrameClock implements UiFrameClock {
|
|
|
10309
10358
|
private readonly stallMs;
|
|
10310
10359
|
private readonly minStallMs;
|
|
10311
10360
|
private readonly now;
|
|
10361
|
+
/** This thread's own `requestAnimationFrame`, or null where there is none. */
|
|
10362
|
+
private readonly local;
|
|
10363
|
+
private localHandle;
|
|
10312
10364
|
constructor(onFrame: (time: UiFrameTime) => void,
|
|
10313
10365
|
/** Told when this starts and stops wanting ticks. */
|
|
10314
10366
|
onActive: (active: boolean) => void, options?: UiHostFrameClockOptions);
|
|
10367
|
+
/** Whether this clock is driving itself from the compositor. */
|
|
10368
|
+
get isLocal(): boolean;
|
|
10315
10369
|
requestFrame(): void;
|
|
10316
10370
|
/**
|
|
10317
10371
|
* Arms the timer that draws a frame the host did not ask for.
|
|
@@ -12872,8 +12926,47 @@ interface VideoPlayback {
|
|
|
12872
12926
|
* zero is what looping is.
|
|
12873
12927
|
*/
|
|
12874
12928
|
present(positionMs: number): boolean;
|
|
12929
|
+
/**
|
|
12930
|
+
* Whether the decoder is still working towards the position it was
|
|
12931
|
+
* last given.
|
|
12932
|
+
*
|
|
12933
|
+
* A seek lands on the sync sample *before* where it was aimed, and
|
|
12934
|
+
* everything between the two has to be decoded and thrown away
|
|
12935
|
+
* before the wanted picture exists. On a two-second GOP that is a
|
|
12936
|
+
* handful of frames and invisible; on a long one it is long enough
|
|
12937
|
+
* that an interface wanting to say so — a scrubber that dims, a
|
|
12938
|
+
* spinner over the poster — needs to be told. False while playing
|
|
12939
|
+
* forwards, because then every decoded frame is one that will be
|
|
12940
|
+
* shown.
|
|
12941
|
+
*
|
|
12942
|
+
* Optional, and absent means false. A playback that produces its
|
|
12943
|
+
* pictures on demand — the generated ones the documentation is built
|
|
12944
|
+
* on, a canvas, a stream of bitmaps — never waits for a keyframe it
|
|
12945
|
+
* has no concept of, and should not have to say so.
|
|
12946
|
+
*/
|
|
12947
|
+
readonly seeking?: boolean;
|
|
12875
12948
|
/** Called when the video fails, with what went wrong. */
|
|
12876
12949
|
onError(listener: (error: unknown) => void): () => void;
|
|
12950
|
+
/**
|
|
12951
|
+
* Called when a decoded frame arrived and changed the picture
|
|
12952
|
+
* without anyone having asked for it.
|
|
12953
|
+
*
|
|
12954
|
+
* Which sounds like a contradiction of everything `present` says
|
|
12955
|
+
* about who owns time, and is not: the position is still driven from
|
|
12956
|
+
* outside, and this fires only for a position that has *already*
|
|
12957
|
+
* been asked for and could not be answered yet. A seek is the case.
|
|
12958
|
+
* `present(3.5s)` resets the decoder and returns with nothing to
|
|
12959
|
+
* show, because the frame for 3.5s will not exist for another few
|
|
12960
|
+
* milliseconds; when it lands, the driver is not going to call again
|
|
12961
|
+
* — a paused clip has no next frame — so the picture would stay on
|
|
12962
|
+
* whatever was there before the seek, forever.
|
|
12963
|
+
*
|
|
12964
|
+
* So the playback presents it and says so, and a caller repaints.
|
|
12965
|
+
* Optional for the same reason `seeking` is: a playback that
|
|
12966
|
+
* produces its pictures on demand answers every `present` on the
|
|
12967
|
+
* spot and has nothing to announce.
|
|
12968
|
+
*/
|
|
12969
|
+
onFrame?(listener: () => void): () => void;
|
|
12877
12970
|
}
|
|
12878
12971
|
/**
|
|
12879
12972
|
* Turns a source into something a renderer can draw, frame by frame.
|
|
@@ -12893,11 +12986,37 @@ interface VideoResolver {
|
|
|
12893
12986
|
release(source: string): void;
|
|
12894
12987
|
dispose(): void;
|
|
12895
12988
|
}
|
|
12989
|
+
/** Part of a file, and how long the whole of it is. */
|
|
12990
|
+
interface RangeResponse {
|
|
12991
|
+
readonly data: ArrayBuffer;
|
|
12992
|
+
/**
|
|
12993
|
+
* The file's total length in bytes.
|
|
12994
|
+
*
|
|
12995
|
+
* Asked for alongside the bytes because an HTTP range response
|
|
12996
|
+
* already carries it, in `Content-Range`, and a separate `HEAD`
|
|
12997
|
+
* request to learn the same thing is a round trip for nothing.
|
|
12998
|
+
*/
|
|
12999
|
+
readonly total: number;
|
|
13000
|
+
}
|
|
12896
13001
|
interface DefaultVideoResolverOptions {
|
|
12897
13002
|
/** How many finished playbacks to keep after their last holder let go. */
|
|
12898
13003
|
capacity?: number;
|
|
12899
13004
|
/** Injectable for specs, and for an app that fetches through its own stack. */
|
|
12900
13005
|
fetch?: (source: string) => Promise<ArrayBuffer>;
|
|
13006
|
+
/**
|
|
13007
|
+
* Fetches `[start, end)` of a file, for playing one without holding
|
|
13008
|
+
* all of it.
|
|
13009
|
+
*
|
|
13010
|
+
* Given this, the resolver finds the `moov` with a few small
|
|
13011
|
+
* requests and then reads media as the decoder asks for it, which is
|
|
13012
|
+
* what makes an hour of video possible; given only `fetch`, it reads
|
|
13013
|
+
* the whole file at once, which is right for the looping clips this
|
|
13014
|
+
* framework is usually asked for and is what it has always done.
|
|
13015
|
+
* Neither is a default the other should be silently upgraded to — a
|
|
13016
|
+
* ranged read of a two megabyte loop is three round trips where one
|
|
13017
|
+
* would do — so an application says which it wants.
|
|
13018
|
+
*/
|
|
13019
|
+
fetchRange?: (source: string, start: number, end: number) => Promise<RangeResponse>;
|
|
12901
13020
|
}
|
|
12902
13021
|
/** Whether this thread can decode video at all. */
|
|
12903
13022
|
declare function canDecodeVideo(): boolean;
|
|
@@ -12916,6 +13035,7 @@ declare class DefaultVideoResolver implements VideoResolver {
|
|
|
12916
13035
|
private readonly evictable;
|
|
12917
13036
|
private readonly capacity;
|
|
12918
13037
|
private readonly fetchBuffer;
|
|
13038
|
+
private readonly fetchRange;
|
|
12919
13039
|
private disposed;
|
|
12920
13040
|
constructor(options?: DefaultVideoResolverOptions);
|
|
12921
13041
|
/** Live or in-flight sources, for specs and the inspector. */
|
|
@@ -12924,9 +13044,141 @@ declare class DefaultVideoResolver implements VideoResolver {
|
|
|
12924
13044
|
release(source: string): void;
|
|
12925
13045
|
dispose(): void;
|
|
12926
13046
|
private open;
|
|
13047
|
+
private openWhole;
|
|
13048
|
+
/**
|
|
13049
|
+
* Finds the `moov`, reads it, and leaves the media where it is.
|
|
13050
|
+
*
|
|
13051
|
+
* The top-level structure of an MP4 is a flat list of boxes, each of
|
|
13052
|
+
* which states its own length, so the whole of it can be walked by
|
|
13053
|
+
* reading eight bytes at a time and jumping — which means finding
|
|
13054
|
+
* the `moov` costs a couple of small requests whether it is at the
|
|
13055
|
+
* front of the file (`-movflags +faststart`, and every file served
|
|
13056
|
+
* for streaming) or at the back (the default, and every file written
|
|
13057
|
+
* by a camera).
|
|
13058
|
+
*
|
|
13059
|
+
* The `moov` is then demuxed *on its own*, which works because the
|
|
13060
|
+
* offsets in a sample table are absolute positions in the file
|
|
13061
|
+
* rather than relative to anything: the tables are as correct read
|
|
13062
|
+
* out of a two hundred kilobyte buffer as out of a gigabyte one.
|
|
13063
|
+
*/
|
|
13064
|
+
private openRanged;
|
|
12927
13065
|
}
|
|
12928
13066
|
//#endregion
|
|
12929
13067
|
//#region src/modifiers/video.d.ts
|
|
13068
|
+
/**
|
|
13069
|
+
* Where a clip stands: loading it, showing it, or having failed.
|
|
13070
|
+
*
|
|
13071
|
+
* `playing` is about the *picture*, not about motion — it is the
|
|
13072
|
+
* moment a surface reaches the node, and it arrives for a clip built
|
|
13073
|
+
* with `autoplay: false` exactly as it does for one that runs. Whether
|
|
13074
|
+
* time is moving is `VideoTransport.paused`, which is a different
|
|
13075
|
+
* question and was never what this answered.
|
|
13076
|
+
*/
|
|
13077
|
+
type VideoState = 'loading' | 'playing' | 'failed';
|
|
13078
|
+
/**
|
|
13079
|
+
* The clock a video's position comes from, when it is not the video's
|
|
13080
|
+
* own.
|
|
13081
|
+
*
|
|
13082
|
+
* The default is a tween on the animation driver, which is right for
|
|
13083
|
+
* a clip with no sound: nothing else in the application has an opinion
|
|
13084
|
+
* about where the clip should be, so the frame clock may as well
|
|
13085
|
+
* decide.
|
|
13086
|
+
*
|
|
13087
|
+
* It stops being right the moment there is audio. Audio cannot drop
|
|
13088
|
+
* samples the way video drops frames — a gap is audible and a
|
|
13089
|
+
* resample is worse — so where the two must agree, the audio is the
|
|
13090
|
+
* clock and the picture follows it. That inversion is the whole reason
|
|
13091
|
+
* this seam exists, and it is a *seam* rather than an implementation
|
|
13092
|
+
* because `AudioContext` does not exist on a worker: the sound is
|
|
13093
|
+
* played by the shell, and what crosses the thread boundary is this
|
|
13094
|
+
* one number. See `AudioService`, which already reports it.
|
|
13095
|
+
*
|
|
13096
|
+
* `positionSeconds` is called once per presentation and must be cheap.
|
|
13097
|
+
* Returning a position that goes backwards is a seek, exactly as it is
|
|
13098
|
+
* for the tween.
|
|
13099
|
+
*/
|
|
13100
|
+
interface VideoClock {
|
|
13101
|
+
/** Where the clip should be now, in seconds. */
|
|
13102
|
+
positionSeconds(): number;
|
|
13103
|
+
/** Whether the clock is running. A paused clock presents no new frames. */
|
|
13104
|
+
readonly running: boolean;
|
|
13105
|
+
/** Told when `running` changes, so the modifier can stop asking for frames. */
|
|
13106
|
+
onChange(listener: () => void): () => void;
|
|
13107
|
+
}
|
|
13108
|
+
/**
|
|
13109
|
+
* The handle on a running clip: where it is, and the four things that
|
|
13110
|
+
* can be done to it.
|
|
13111
|
+
*
|
|
13112
|
+
* Handed out through `VideoSourceArgs.onReady` rather than returned,
|
|
13113
|
+
* because a playback does not exist until a file has been fetched and
|
|
13114
|
+
* a decoder configured, and a modifier attaches long before either.
|
|
13115
|
+
*
|
|
13116
|
+
* Nothing here is reactive. Core has no cells — `AnimatedCell` is an
|
|
13117
|
+
* interface it asks others to satisfy, not a thing it implements — so
|
|
13118
|
+
* this reports through `onChange` and the framework's tier wraps it in
|
|
13119
|
+
* whatever its own state primitive is. `Video` does exactly that.
|
|
13120
|
+
*/
|
|
13121
|
+
interface VideoTransport {
|
|
13122
|
+
/** The clip's length in seconds. Zero until the container has been read. */
|
|
13123
|
+
readonly duration: number;
|
|
13124
|
+
/** Where the picture is now, in seconds. */
|
|
13125
|
+
readonly position: number;
|
|
13126
|
+
/** Whether time has stopped. A seek while paused still moves the picture. */
|
|
13127
|
+
readonly paused: boolean;
|
|
13128
|
+
/** How fast time runs. 1 is the clip's own rate; 0.5 is half speed. */
|
|
13129
|
+
readonly rate: number;
|
|
13130
|
+
/**
|
|
13131
|
+
* How loud, from 0 to 1, and whether it is silenced outright.
|
|
13132
|
+
*
|
|
13133
|
+
* **Nothing in this framework plays a clip's sound**, because
|
|
13134
|
+
* `AudioContext` does not exist on the thread that decodes. So this
|
|
13135
|
+
* is state rather than an effect: it is carried here, reported
|
|
13136
|
+
* through `onVolume`, and it does something only where an
|
|
13137
|
+
* application has wired that to whatever is actually making the
|
|
13138
|
+
* noise — `AudioService`, on the shell. A control over it is honest
|
|
13139
|
+
* for a clip whose sound is wired and a lie for one whose is not,
|
|
13140
|
+
* which is why `Video` decides whether to draw one rather than
|
|
13141
|
+
* always drawing it.
|
|
13142
|
+
*
|
|
13143
|
+
* `muted` is kept separate from a volume of zero, as every player
|
|
13144
|
+
* keeps it: unmuting has to return to the level it was at, and a
|
|
13145
|
+
* mute that wrote zero would have thrown that away.
|
|
13146
|
+
*/
|
|
13147
|
+
readonly volume: number;
|
|
13148
|
+
readonly muted: boolean;
|
|
13149
|
+
/** Whether the decoder is still working towards the last position asked for. */
|
|
13150
|
+
readonly seeking: boolean;
|
|
13151
|
+
readonly state: VideoState;
|
|
13152
|
+
play(): void;
|
|
13153
|
+
pause(): void;
|
|
13154
|
+
/** Moves to a position in seconds, clamped to the clip, playing or not. */
|
|
13155
|
+
seek(seconds: number): void;
|
|
13156
|
+
/** Positive, and clamped to something a decoder can keep up with. */
|
|
13157
|
+
setRate(rate: number): void;
|
|
13158
|
+
/** Clamped to 0..1. Setting it above zero also unmutes, as a slider dragged up should. */
|
|
13159
|
+
setVolume(volume: number): void;
|
|
13160
|
+
setMuted(muted: boolean): void;
|
|
13161
|
+
/**
|
|
13162
|
+
* Fetches, demuxes and configures again, for a clip that failed.
|
|
13163
|
+
*
|
|
13164
|
+
* The resolver caches by source, so a clip that failed *inside* the
|
|
13165
|
+
* decoder is still held as a failed playback and this would resolve
|
|
13166
|
+
* straight back to it. Releasing first is what makes the retry a
|
|
13167
|
+
* real one.
|
|
13168
|
+
*/
|
|
13169
|
+
retry(): void;
|
|
13170
|
+
/**
|
|
13171
|
+
* Told whenever any of the above changed, at most once a frame.
|
|
13172
|
+
*
|
|
13173
|
+
* Position is deliberately not part of that: it changes on every
|
|
13174
|
+
* frame of every clip, and a listener woken sixty times a second to
|
|
13175
|
+
* move a scrubber by a pixel is how a video costs an application its
|
|
13176
|
+
* frame budget. Read `position` on the frames you are already
|
|
13177
|
+
* drawing; this fires for the things that happen *to* a clip — it
|
|
13178
|
+
* started, it stopped, it arrived somewhere, it broke.
|
|
13179
|
+
*/
|
|
13180
|
+
onChange(listener: () => void): () => void;
|
|
13181
|
+
}
|
|
12930
13182
|
interface VideoSourceArgs {
|
|
12931
13183
|
readonly resolver: VideoResolver;
|
|
12932
13184
|
readonly source: string;
|
|
@@ -12934,8 +13186,35 @@ interface VideoSourceArgs {
|
|
|
12934
13186
|
readonly loop?: boolean;
|
|
12935
13187
|
/** Start playing as soon as it is ready. Defaults to true. */
|
|
12936
13188
|
readonly autoplay?: boolean;
|
|
13189
|
+
/** How fast to play. Defaults to 1. */
|
|
13190
|
+
readonly rate?: number;
|
|
13191
|
+
/**
|
|
13192
|
+
* Stop decoding while the node is off screen. Defaults to true.
|
|
13193
|
+
*
|
|
13194
|
+
* See `pauseWhenHidden` in this file for what "off screen" means and
|
|
13195
|
+
* why the default is what it is.
|
|
13196
|
+
*/
|
|
13197
|
+
readonly pauseWhenHidden?: boolean;
|
|
13198
|
+
/** Where the position comes from, when it is not this clip's own tween. */
|
|
13199
|
+
readonly clock?: VideoClock;
|
|
13200
|
+
/** Starting volume, 0 to 1. Defaults to 1. */
|
|
13201
|
+
readonly volume?: number;
|
|
13202
|
+
readonly muted?: boolean;
|
|
13203
|
+
/**
|
|
13204
|
+
* Told when the volume or the mute changed, so an application can
|
|
13205
|
+
* pass it to whatever is playing the sound. See `VideoTransport.volume`
|
|
13206
|
+
* for why this is a report rather than an effect.
|
|
13207
|
+
*/
|
|
13208
|
+
readonly onVolume?: (volume: number, muted: boolean) => void;
|
|
12937
13209
|
/** Told when the video loads, starts or fails. */
|
|
12938
|
-
readonly onState?: (state:
|
|
13210
|
+
readonly onState?: (state: VideoState, error?: unknown) => void;
|
|
13211
|
+
/**
|
|
13212
|
+
* Handed the transport once there is a playback to control.
|
|
13213
|
+
*
|
|
13214
|
+
* Called again after a successful `retry`, with a transport for the
|
|
13215
|
+
* new playback; the old one is inert from the moment it was retried.
|
|
13216
|
+
*/
|
|
13217
|
+
readonly onReady?: (transport: VideoTransport) => void;
|
|
12939
13218
|
}
|
|
12940
13219
|
/**
|
|
12941
13220
|
* Plays a video onto the node's `video` property.
|
|
@@ -12949,20 +13228,29 @@ interface VideoSourceArgs {
|
|
|
12949
13228
|
*
|
|
12950
13229
|
* **Time comes from the animation driver, not from a timer.** The
|
|
12951
13230
|
* playback is a pure function of a position, and the position is
|
|
12952
|
-
* driven by a
|
|
12953
|
-
*
|
|
12954
|
-
*
|
|
12955
|
-
*
|
|
12956
|
-
*
|
|
12957
|
-
*
|
|
12958
|
-
*
|
|
12959
|
-
* **
|
|
12960
|
-
*
|
|
12961
|
-
*
|
|
12962
|
-
*
|
|
12963
|
-
*
|
|
12964
|
-
*
|
|
12965
|
-
*
|
|
13231
|
+
* driven by a linear tween over the video's duration — an ordinary
|
|
13232
|
+
* animation on an ordinary cell. So a video is scheduled by the same
|
|
13233
|
+
* `ticks` phase as everything else, keeps its own frames coming
|
|
13234
|
+
* through the same `nextTickAt`, drops frames rather than falling
|
|
13235
|
+
* behind under load, and stops dead when the runtime does. Nothing new
|
|
13236
|
+
* had to be added to the runtime to play a video.
|
|
13237
|
+
*
|
|
13238
|
+
* **Unless something else owns time.** A `clock` in the arguments
|
|
13239
|
+
* replaces the tween, and is how a clip keeps step with sound that is
|
|
13240
|
+
* being played somewhere this thread cannot reach. The rest of this
|
|
13241
|
+
* file does not care which of the two it is driven by: both end at the
|
|
13242
|
+
* same cell.
|
|
13243
|
+
*
|
|
13244
|
+
* **It keeps moving under reduced motion**, and that is deliberate for
|
|
13245
|
+
* a clip with no transport. The rule this framework applies
|
|
13246
|
+
* (`UiReducedMotionPolicy`) is to stop only when standing still would
|
|
13247
|
+
* not state something false, and a video that has frozen on its first
|
|
13248
|
+
* frame is a video that has finished loading badly. The media tier
|
|
13249
|
+
* makes the same call for the `Spinner`. A clip the reader can *drive*
|
|
13250
|
+
* is the other case — there the stillness is not a failure, it is a
|
|
13251
|
+
* clip waiting to be played — so `Video` declines to autoplay under
|
|
13252
|
+
* reduced motion when it has been given controls, and this modifier
|
|
13253
|
+
* is told so through `autoplay`.
|
|
12966
13254
|
*
|
|
12967
13255
|
* **Playback is shared by source, not by node.** The resolver
|
|
12968
13256
|
* reference-counts, so two nodes pointed at one file watch one
|
|
@@ -12984,10 +13272,14 @@ interface VideoSourceArgs {
|
|
|
12984
13272
|
* The video appeared to freeze, the morph juddered, and when the old
|
|
12985
13273
|
* screen finally left, the clip carried on from the beginning.
|
|
12986
13274
|
*
|
|
12987
|
-
* So
|
|
12988
|
-
* the
|
|
12989
|
-
*
|
|
12990
|
-
*
|
|
13275
|
+
* So a node starts its tween at whatever the playback had already
|
|
13276
|
+
* reached, and the cell holds an absolute position in the clip rather
|
|
13277
|
+
* than a distance from where this node joined. Both holders then agree
|
|
13278
|
+
* to within a frame, no seek fires, and the continuity this comment
|
|
13279
|
+
* claims is actually true. The earlier version of this kept a separate
|
|
13280
|
+
* offset and wrapped the sum; holding the position outright is the
|
|
13281
|
+
* same arithmetic with one fewer thing to get wrong, and it is what
|
|
13282
|
+
* makes `seek` a single assignment.
|
|
12991
13283
|
*/
|
|
12992
13284
|
declare const videoSource: ((args: VideoSourceArgs, key?: string | number) => UiModifier<VideoSourceArgs>) & {
|
|
12993
13285
|
readonly kind: UiModifierKind<VideoSourceArgs>;
|
|
@@ -13519,6 +13811,26 @@ declare class Canvas2DRenderer implements UiRenderer {
|
|
|
13519
13811
|
/** Scratch for the padded box text is drawn in; reused across nodes. */
|
|
13520
13812
|
private readonly contentBox;
|
|
13521
13813
|
private readonly paint;
|
|
13814
|
+
/**
|
|
13815
|
+
* Whose style the shared paint scratch currently holds.
|
|
13816
|
+
*
|
|
13817
|
+
* `resolvePaintState` folds about thirty properties — several of
|
|
13818
|
+
* them inherited, so each is an ancestor walk — into one reused
|
|
13819
|
+
* object. A node that paints text resolved twice: once for its own
|
|
13820
|
+
* box, and again after the walk into its children, because a child
|
|
13821
|
+
* overwrites the scratch before the text is drawn.
|
|
13822
|
+
*
|
|
13823
|
+
* Only the second one is conditional. A leaf never had a child to
|
|
13824
|
+
* clobber it, and neither did a node whose children turned out to be
|
|
13825
|
+
* every one of them invisible, culled or lifted — and leaves are
|
|
13826
|
+
* most of the text in an application. Recording the owner answers
|
|
13827
|
+
* "is the scratch still mine" exactly, for one reference compare,
|
|
13828
|
+
* where asking `node.firstChild === null` would only approximate it
|
|
13829
|
+
* and would go quietly wrong as the early-outs in `renderNode`
|
|
13830
|
+
* change. Every write goes through `resolvePaint`, so the answer
|
|
13831
|
+
* cannot drift from the truth.
|
|
13832
|
+
*/
|
|
13833
|
+
private paintOwner;
|
|
13522
13834
|
private cullX;
|
|
13523
13835
|
private cullY;
|
|
13524
13836
|
private cullWidth;
|
|
@@ -13547,6 +13859,11 @@ declare class Canvas2DRenderer implements UiRenderer {
|
|
|
13547
13859
|
resize(width: number, height: number, dpr: number): void;
|
|
13548
13860
|
dispose(): void;
|
|
13549
13861
|
render(root: UiNode, context: RenderContext): void;
|
|
13862
|
+
/**
|
|
13863
|
+
* Folds a node's style into the shared scratch and records that it
|
|
13864
|
+
* is now that node's. The one writer; see `paintOwner`.
|
|
13865
|
+
*/
|
|
13866
|
+
private resolvePaint;
|
|
13550
13867
|
private beginFrame;
|
|
13551
13868
|
private renderNode;
|
|
13552
13869
|
private renderChildren;
|
|
@@ -15311,15 +15628,16 @@ declare function splitMp3Frames(bytes: Uint8Array): {
|
|
|
15311
15628
|
* `moov` and a `mdat`: `stsd` (with `avcC` or `hvcC`), `stts`, `ctts`,
|
|
15312
15629
|
* `stsc`, `stsz`/`stz2`, `stco`/`co64` and `stss`. That is what every
|
|
15313
15630
|
* encoder writes by default and what the `-movflags +faststart` files
|
|
15314
|
-
* on the web are.
|
|
15631
|
+
* on the web are. Video tracks through `demuxMp4Video`, and audio
|
|
15632
|
+
* tracks through `demuxMp4Audio` — which reads the same tables and
|
|
15633
|
+
* differs only in which sample entry it understands.
|
|
15315
15634
|
*
|
|
15316
15635
|
* **What it does not.** Fragmented MP4 (`moof`/`traf`/`trun`), which
|
|
15317
15636
|
* is what DASH and HLS segments are, and which is a different parse
|
|
15318
15637
|
* rather than a harder one. It is detected and named rather than
|
|
15319
15638
|
* mis-parsed into silence — a demuxer that returns zero samples for a
|
|
15320
15639
|
* file the browser plays fine is a bug that takes an afternoon to
|
|
15321
|
-
* find.
|
|
15322
|
-
* the framework that could play it.
|
|
15640
|
+
* find.
|
|
15323
15641
|
*
|
|
15324
15642
|
* **The whole file is parsed at once**, from one `ArrayBuffer`. Byte
|
|
15325
15643
|
* ranges and progressive parsing are what you want for an hour of
|
|
@@ -15363,6 +15681,37 @@ interface Mp4VideoTrack {
|
|
|
15363
15681
|
*/
|
|
15364
15682
|
readonly frameDurationUs: number;
|
|
15365
15683
|
}
|
|
15684
|
+
/**
|
|
15685
|
+
* The audio track of an MP4, as far as this reads it.
|
|
15686
|
+
*
|
|
15687
|
+
* Deliberately the same shape as `Mp4VideoTrack` where the two agree,
|
|
15688
|
+
* because the sample tables they come out of are the same tables: only
|
|
15689
|
+
* the sample *entry* differs, and only in which fields it carries.
|
|
15690
|
+
*
|
|
15691
|
+
* **Nothing in this framework plays it, and that is not this file's
|
|
15692
|
+
* problem.** `AudioContext` does not exist on a worker, so sound is
|
|
15693
|
+
* the shell's to play — see `VideoClock` for the arrangement and why
|
|
15694
|
+
* it inverts which of the two owns time. What the demuxer is for here
|
|
15695
|
+
* is the question that comes *before* that one: whether this clip has
|
|
15696
|
+
* sound at all, and what it would take to decode it. A player that
|
|
15697
|
+
* cannot answer that has to guess whether to show a mute button.
|
|
15698
|
+
*/
|
|
15699
|
+
interface Mp4AudioTrack {
|
|
15700
|
+
/** A codec string for `AudioDecoder.configure`, e.g. `mp4a.40.2`. */
|
|
15701
|
+
readonly codec: string;
|
|
15702
|
+
readonly sampleRate: number;
|
|
15703
|
+
readonly channels: number;
|
|
15704
|
+
/** Bits per sample as the container declares them; 16 for nearly everything. */
|
|
15705
|
+
readonly sampleSize: number;
|
|
15706
|
+
/**
|
|
15707
|
+
* The decoder configuration, where the codec keeps one out of band.
|
|
15708
|
+
* For AAC this is the `AudioSpecificConfig` out of the `esds`, which
|
|
15709
|
+
* `AudioDecoder` takes as its `description`.
|
|
15710
|
+
*/
|
|
15711
|
+
readonly description?: Uint8Array;
|
|
15712
|
+
readonly samples: readonly Mp4Sample[];
|
|
15713
|
+
readonly durationUs: number;
|
|
15714
|
+
}
|
|
15366
15715
|
/**
|
|
15367
15716
|
* Reads the first video track out of an MP4.
|
|
15368
15717
|
*
|
|
@@ -15372,6 +15721,210 @@ interface Mp4VideoTrack {
|
|
|
15372
15721
|
* not understand this file", and those want different fixes.
|
|
15373
15722
|
*/
|
|
15374
15723
|
declare function demuxMp4Video(data: ArrayBuffer): Mp4VideoTrack;
|
|
15724
|
+
/**
|
|
15725
|
+
* Reads the first audio track out of an MP4.
|
|
15726
|
+
*
|
|
15727
|
+
* Null rather than a throw for a file that simply has no audio, which
|
|
15728
|
+
* is the ordinary case for the clips this framework plays and is not
|
|
15729
|
+
* an error in any sense. A file that *has* an audio track this cannot
|
|
15730
|
+
* read still throws, for the reason `demuxMp4Video` gives: "no audio
|
|
15731
|
+
* track" and "an audio track I do not understand" want different
|
|
15732
|
+
* fixes.
|
|
15733
|
+
*/
|
|
15734
|
+
declare function demuxMp4Audio(data: ArrayBuffer): Mp4AudioTrack | null;
|
|
15735
|
+
//#endregion
|
|
15736
|
+
//#region src/media/ByteSource.d.ts
|
|
15737
|
+
/**
|
|
15738
|
+
* Where a demuxed file's bytes come from.
|
|
15739
|
+
*
|
|
15740
|
+
* The seam that lets one `Mp4Playback` serve both of the things a
|
|
15741
|
+
* video file can be. A fifteen-second loop is a few megabytes, is
|
|
15742
|
+
* wanted in its entirety within a second of starting, and is simplest
|
|
15743
|
+
* held in one `ArrayBuffer` — which is what this framework did, and
|
|
15744
|
+
* still does by default. An hour of video is none of those things: it
|
|
15745
|
+
* is a gigabyte, a viewer will watch four minutes of it, and holding
|
|
15746
|
+
* it in memory to do so is not a trade-off but a mistake.
|
|
15747
|
+
*
|
|
15748
|
+
* Both are the same demux. A sample table names byte offsets into a
|
|
15749
|
+
* file, and whether those bytes are already in memory or have to be
|
|
15750
|
+
* asked for is a question about *transport*, not about the format. So
|
|
15751
|
+
* the playback reads through this, and the two answers to that
|
|
15752
|
+
* question are `bufferSource` and `rangeSource`.
|
|
15753
|
+
*
|
|
15754
|
+
* **`read` is synchronous and may answer null**, which is the whole
|
|
15755
|
+
* design. The decoder is fed from inside a presentation, on the frame
|
|
15756
|
+
* clock, and a `fill` that awaited anything would turn every frame
|
|
15757
|
+
* into a microtask and every stall into a dropped frame. So `read`
|
|
15758
|
+
* answers immediately or not at all, and a caller that gets null
|
|
15759
|
+
* calls `request` and gets on with the frame it is in.
|
|
15760
|
+
*/
|
|
15761
|
+
interface ByteSource {
|
|
15762
|
+
/** The whole file's length in bytes. */
|
|
15763
|
+
readonly size: number;
|
|
15764
|
+
/**
|
|
15765
|
+
* The bytes at `offset`, if they are already here. Null means they
|
|
15766
|
+
* are not, and says nothing about whether they ever will be.
|
|
15767
|
+
*/
|
|
15768
|
+
read(offset: number, size: number): Uint8Array | null;
|
|
15769
|
+
/**
|
|
15770
|
+
* Asks for a region, resolving once `read` will answer for it.
|
|
15771
|
+
*
|
|
15772
|
+
* Calling it for a region already in flight joins that request
|
|
15773
|
+
* rather than making a second one.
|
|
15774
|
+
*/
|
|
15775
|
+
request(offset: number, size: number): Promise<void>;
|
|
15776
|
+
/** Releases whatever is held. */
|
|
15777
|
+
close(): void;
|
|
15778
|
+
}
|
|
15779
|
+
/** A file already in memory, which is every file this framework read before. */
|
|
15780
|
+
declare function bufferSource(data: ArrayBuffer): ByteSource;
|
|
15781
|
+
/**
|
|
15782
|
+
* How much is fetched at a time.
|
|
15783
|
+
*
|
|
15784
|
+
* Big enough that a request is worth its round trip — a quarter of a
|
|
15785
|
+
* megabyte is a second or two of ordinary video, so a clip playing
|
|
15786
|
+
* forwards asks for one every second or so rather than every frame —
|
|
15787
|
+
* and small enough that a seek does not drag a great deal of video
|
|
15788
|
+
* nobody will watch.
|
|
15789
|
+
*
|
|
15790
|
+
* It is also what a reader's first request should be, so that the
|
|
15791
|
+
* bytes it read to find the header land on a block boundary and can
|
|
15792
|
+
* be kept; see `prefetched`. A megabyte, the first value here, was
|
|
15793
|
+
* larger than the whole of a short file, so the header probe could
|
|
15794
|
+
* never seed a block and the front of the file was always fetched
|
|
15795
|
+
* twice.
|
|
15796
|
+
*/
|
|
15797
|
+
declare const DEFAULT_BLOCK_SIZE: number;
|
|
15798
|
+
interface RangeSourceOptions {
|
|
15799
|
+
/** Fetches `[start, end)`. Inclusive-exclusive, like every other range in this codebase. */
|
|
15800
|
+
readonly fetchRange: (source: string, start: number, end: number) => Promise<ArrayBuffer>;
|
|
15801
|
+
/** The file's length, which a caller usually learns from the same response that told it the head. */
|
|
15802
|
+
readonly size: number;
|
|
15803
|
+
readonly blockSize?: number;
|
|
15804
|
+
readonly capacity?: number;
|
|
15805
|
+
/**
|
|
15806
|
+
* Bytes the caller has already fetched, starting at `start`.
|
|
15807
|
+
*
|
|
15808
|
+
* A reader almost always has some: finding the `moov` means reading
|
|
15809
|
+
* the front of the file, and without this that read is thrown away
|
|
15810
|
+
* and the first block is fetched all over again. On a short file
|
|
15811
|
+
* that duplicate was most of the transfer.
|
|
15812
|
+
*
|
|
15813
|
+
* Only the *whole* blocks inside it are kept. A partial block at
|
|
15814
|
+
* either end is dropped rather than stored short, because a block
|
|
15815
|
+
* held short would answer `read` for bytes it does not have.
|
|
15816
|
+
*/
|
|
15817
|
+
readonly prefetched?: {
|
|
15818
|
+
readonly start: number;
|
|
15819
|
+
readonly data: ArrayBuffer;
|
|
15820
|
+
};
|
|
15821
|
+
}
|
|
15822
|
+
/**
|
|
15823
|
+
* A file fetched a block at a time.
|
|
15824
|
+
*
|
|
15825
|
+
* Blocks rather than exact ranges, and aligned to their own size, so
|
|
15826
|
+
* that two samples in the same part of the file share one request and
|
|
15827
|
+
* so the cache can be keyed on a number. A sample straddling a block
|
|
15828
|
+
* boundary is copied out of the two blocks either side of it; every
|
|
15829
|
+
* other read is a view, which matters because the common case is a
|
|
15830
|
+
* frame's worth of bytes on the way to a decoder.
|
|
15831
|
+
*
|
|
15832
|
+
* **Eviction is by last use, not by position.** A viewer who seeks
|
|
15833
|
+
* backwards into what they just watched should find it still here, and
|
|
15834
|
+
* a strictly forward-looking policy would have thrown it away.
|
|
15835
|
+
*/
|
|
15836
|
+
declare function rangeSource(source: string, options: RangeSourceOptions): ByteSource;
|
|
15837
|
+
//#endregion
|
|
15838
|
+
//#region src/media/WebVtt.d.ts
|
|
15839
|
+
/**
|
|
15840
|
+
* Just enough WebVTT to put words under a picture.
|
|
15841
|
+
*
|
|
15842
|
+
* Here for the reason `Mp4Demuxer` is: the alternative is a dependency
|
|
15843
|
+
* that brings a renderer, a positioning model and a CSS cascade with
|
|
15844
|
+
* it, and `gesso-core` has one dependency. What a caption track is,
|
|
15845
|
+
* stripped of the parts that only mean something in a document, is a
|
|
15846
|
+
* sorted list of (start, end, text) — and that is a parse of about two
|
|
15847
|
+
* hundred lines rather than a library.
|
|
15848
|
+
*
|
|
15849
|
+
* **What it reads.** The `WEBVTT` header and anything on that line, an
|
|
15850
|
+
* optional cue identifier, a timing line with `-->` and the two
|
|
15851
|
+
* timestamps around it, cue settings after the timings, and the
|
|
15852
|
+
* payload lines until a blank one. `NOTE` blocks and `STYLE` blocks
|
|
15853
|
+
* are skipped. Timestamps in both the `mm:ss.mmm` and `hh:mm:ss.mmm`
|
|
15854
|
+
* spellings, because both are written.
|
|
15855
|
+
*
|
|
15856
|
+
* **What it does not.** Cue settings are parsed and kept but nothing
|
|
15857
|
+
* here acts on them: `line`, `position`, `align`, `size` and `vertical`
|
|
15858
|
+
* describe a placement against a video box, and placement is the
|
|
15859
|
+
* caller's. They are carried rather than dropped so that a caller who
|
|
15860
|
+
* wants them is not made to parse the file again. Inline markup —
|
|
15861
|
+
* `<i>`, `<b>`, `<v Speaker>`, `<00:01.000>` — is **stripped to its
|
|
15862
|
+
* text**, which is a decision rather than an omission: this framework
|
|
15863
|
+
* draws a string, a voice span would have to become a style run, and a
|
|
15864
|
+
* caption that showed its own angle brackets would be worse than one
|
|
15865
|
+
* that lost its italics. `REGION` blocks are skipped for the same
|
|
15866
|
+
* reason the settings are inert.
|
|
15867
|
+
*
|
|
15868
|
+
* **Errors are not thrown.** A caption file is content, usually
|
|
15869
|
+
* someone else's, and a single malformed cue in a hundred is not a
|
|
15870
|
+
* reason to show none of them. A block that cannot be read is skipped
|
|
15871
|
+
* and counted; `VttTrack.skipped` is how a caller finds out. That is
|
|
15872
|
+
* the opposite of the demuxer's rule, and deliberately so: a video
|
|
15873
|
+
* that will not play is a failure worth reporting, and a caption that
|
|
15874
|
+
* is missing a line is not.
|
|
15875
|
+
*/
|
|
15876
|
+
/** One caption: when it is on screen, and what it says. */
|
|
15877
|
+
interface VttCue {
|
|
15878
|
+
/** The cue's identifier, when it had one. Not required to be unique. */
|
|
15879
|
+
readonly id?: string;
|
|
15880
|
+
/** Seconds. */
|
|
15881
|
+
readonly start: number;
|
|
15882
|
+
readonly end: number;
|
|
15883
|
+
/** The payload with its markup stripped; newlines are kept as newlines. */
|
|
15884
|
+
readonly text: string;
|
|
15885
|
+
/**
|
|
15886
|
+
* The cue settings, unparsed beyond being split into pairs — `line`,
|
|
15887
|
+
* `position`, `align`, `size`, `vertical`. Empty for most cues.
|
|
15888
|
+
*/
|
|
15889
|
+
readonly settings: Readonly<Record<string, string>>;
|
|
15890
|
+
}
|
|
15891
|
+
interface VttTrack {
|
|
15892
|
+
/** Cues in the order they are shown, which is not always the order they were written. */
|
|
15893
|
+
readonly cues: readonly VttCue[];
|
|
15894
|
+
/** Anything after `WEBVTT` on the first line; encoders put a title or a tool name there. */
|
|
15895
|
+
readonly header: string;
|
|
15896
|
+
/** How many blocks could not be read. Zero for a well-formed file. */
|
|
15897
|
+
readonly skipped: number;
|
|
15898
|
+
}
|
|
15899
|
+
/**
|
|
15900
|
+
* Reads a `.vtt` file.
|
|
15901
|
+
*
|
|
15902
|
+
* Returns an empty track rather than throwing for a file that is not
|
|
15903
|
+
* WebVTT at all, for the reason the docblock gives: a caption track is
|
|
15904
|
+
* an enhancement, and an application that has to guard every one of
|
|
15905
|
+
* these with a `try` will end up not showing captions at all.
|
|
15906
|
+
*/
|
|
15907
|
+
declare function parseWebVtt(source: string): VttTrack;
|
|
15908
|
+
/**
|
|
15909
|
+
* The cue to show at a position, or null between cues.
|
|
15910
|
+
*
|
|
15911
|
+
* A linear scan from a hint rather than a binary search, and that is
|
|
15912
|
+
* the right shape here rather than a concession: this is called once
|
|
15913
|
+
* per frame with a position that has almost always moved by one frame,
|
|
15914
|
+
* so the answer is nearly always the cue it was last time or the one
|
|
15915
|
+
* after it. `from` is that hint — pass back the index this returned —
|
|
15916
|
+
* and the scan is then O(1) for playback and O(n) only for a scrub,
|
|
15917
|
+
* where a caption is not what is costing anything.
|
|
15918
|
+
*
|
|
15919
|
+
* **Overlapping cues.** WebVTT permits them and a transcript of two
|
|
15920
|
+
* people talking over each other has them. This answers the one that
|
|
15921
|
+
* *starts* latest among those covering the position, which is what a
|
|
15922
|
+
* single-line caption should show: the newest thing said.
|
|
15923
|
+
*/
|
|
15924
|
+
declare function cueAt(cues: readonly VttCue[], seconds: number, from?: number): {
|
|
15925
|
+
cue: VttCue | null;
|
|
15926
|
+
index: number;
|
|
15927
|
+
};
|
|
15375
15928
|
//#endregion
|
|
15376
15929
|
//#region src/scheduler/PerformanceMarks.d.ts
|
|
15377
15930
|
/**
|
|
@@ -15707,7 +16260,35 @@ type UiSemanticsMap = ReadonlyMap<string, UiSemanticsRecord>;
|
|
|
15707
16260
|
* is, carrying `disabled` — unavailable is a thing to announce,
|
|
15708
16261
|
* hidden is not.
|
|
15709
16262
|
*/
|
|
15710
|
-
declare function buildSemanticsTree(root: UiNode):
|
|
16263
|
+
declare function buildSemanticsTree(root: UiNode): Map<string, UiSemanticsRecord>;
|
|
16264
|
+
/**
|
|
16265
|
+
* The records one subtree contributes, as if walked in place.
|
|
16266
|
+
*
|
|
16267
|
+
* For re-describing what changed without rebuilding the whole tree.
|
|
16268
|
+
* `node` keeps the `parent` and `index` its existing record has, and
|
|
16269
|
+
* everything below it is walked exactly as `buildSemanticsTree` would:
|
|
16270
|
+
* a descendant's index is counted among the semantic children of
|
|
16271
|
+
* whatever inside this subtree claims it, so the numbering is the same
|
|
16272
|
+
* one a full walk produces.
|
|
16273
|
+
*
|
|
16274
|
+
* **That only holds when `node` itself carries a record.** A
|
|
16275
|
+
* transparent node's children attach to its nearest semantic ancestor
|
|
16276
|
+
* and are numbered among that ancestor's *other* children too — nodes
|
|
16277
|
+
* outside this subtree — so a walk that started here would number them
|
|
16278
|
+
* from zero and disagree with the tree. Null says so, and the caller
|
|
16279
|
+
* has to rebuild the whole tree instead.
|
|
16280
|
+
*
|
|
16281
|
+
* `inert` is whether an ancestor above this subtree is disabled, which
|
|
16282
|
+
* only the caller can know.
|
|
16283
|
+
*/
|
|
16284
|
+
declare function buildSemanticsSubtree(node: UiNode, parent: string | null, index: number, inert: boolean): Map<string, UiSemanticsRecord> | null;
|
|
16285
|
+
/**
|
|
16286
|
+
* Whether an ancestor of `node` is disabled, which every record in its
|
|
16287
|
+
* subtree inherits.
|
|
16288
|
+
*
|
|
16289
|
+
* A full walk carries this down; a subtree walk has to look it up.
|
|
16290
|
+
*/
|
|
16291
|
+
declare function semanticsInertAbove(node: UiNode): boolean;
|
|
15711
16292
|
/**
|
|
15712
16293
|
* Separates a run record's id from its node's.
|
|
15713
16294
|
*
|
|
@@ -15811,5 +16392,5 @@ interface UiSemanticsAction {
|
|
|
15811
16392
|
readonly value?: string;
|
|
15812
16393
|
}
|
|
15813
16394
|
//#endregion
|
|
15814
|
-
export { PrimitiveCommand as $, SelectionHost as $a, PaintProps as $c, propertyValuesEqual as $d, noKeyModifiers as $f, capturePointer as $i, UiThemeExtensionOptions as $l, UiTweenOptions as $m, iconKey as $n, fillTextRects as $o, UiObjectFit as $p, GridPlacement as $r, lineLimit as $s, Canvas2DRenderer as $t, spanAtOffset as $u, markNow as A, ScrollSink as Aa, UiDefinition as Ac, validateGradient as Ad, isUiChild as Af, easings as Ah, formatExplanation as Ai, LazyAxis as Al, darkColors as Am, ScrollPositionArgs as An, caretVisibleAt as Ao, NodeProperty as Ap, focusRing as Ar, setSelectionRange as As, clearFontStacks as At, UiLayoutContext as Au, Mp3Header as B, FocusNotifier as Ba, ButtonProps as Bc, isFrLength as Bd, UiEventType as Bf, UiManualFrameClock as Bi, VirtualUpdate as Bl, UiTransitionSpec as Bm, SharedElementArgs as Bn, commandForKey as Bo, decorationRect as Bp, Transform as Br, TextMeasurer as Bs, PaintResolver as Bt, UiFontStretch as Bu, selectionRectsIn as C, formatShortcut as Ca, Grid as Cc, UiGradientStop as Cd, UiModifierTeardown as Cf, colorsEqual as Ch, LayoutStateExplanation as Ci, normalizeStates as Cl, UiShapeName as Cm, insetPadding as Cn, UiEnvironmentProvider as Co, LayoutStats as Cp, draggable as Cr, DEFAULT_LINE_HEIGHT_FACTOR as Cs, RenderHooks as Ct, UiTypographyExtensions as Cu, UiSchedulerOptions as D, PointerControllerOptions as Da, Stack as Dc, gradientsEqual as Dd, UiElement as Df, rgba as Dh, describeLength as Di, CompositionRange as Dl, shapesEqual as Dm, breakpoint as Dn, CARET_BLINK_MS as Do, constraintsEqual as Dp, Decorations as Dr, selectableTextNodes as Ds, WebGPUSurface as Dt, typographyEqual as Du, UiScheduler as E, UiKeyboardController as Ea, ScrollView as Ec, gradientPaint as Ed, UiChild as Ef, rgb8 as Eh, SizeDecision as Ei, validateStates as El, isShapeName as Em, SizeContainerArgs as En, EnvironmentNotifier as Eo, clampSize as Ep, autoFocus as Er, clearSelectionRange as Es, WebGPUCanvasHost as Et, isTypographyRole as Eu, Mp4VideoTrack as F, GestureInput as Fa, ChildrenBindingId as Fc, UiLength as Fd, UiEventListenerOptions as Ff, UiFrameClock as Fi, UiVirtualWindow as Fl, createEnvironmentKey as Fm, DefaultVideoResolverOptions as Fn, isReadOnly as Fo, DecorationFill as Fp, measure as Fr, ParagraphTextMeasurer as Fs, PaintPictureCache as Ft, defaultVisualState as Fu, CLIP_STRIDE_BYTES as G, clearOverrideProperty as Ga, EnvironmentProps as Gc, repeat as Gd, UiKeyboardEvent as Gf, isNodeInert as Gi, videoFrameSize as Gl, tween as Gm, ImageSources as Gn, PlacedTextRun as Go, UiBorderRadiusValue as Gp, getPropertyNames as Gr, TextWrap as Gs, PaintRecorder as Gt, UiTextDecoration as Gu, splitMp3Frames as H, UiFocusManager as Ha, CommonProps as Hc, isPercentLength as Hd, UiGestureEvent as Hf, UiTimerFrameClockOptions as Hi, lazySource as Hl, assertTransitionMap as Hm, sharedElement as Hn, isPrintable as Ho, paintsAfterChildren as Hp, contentOffset as Hr, TextRunMeasurer as Hs, tracePathData as Ht, UiFontVariant as Hu, demuxMp4Video as I, GestureRecognizerOptions as Ia, UiChildrenBinding as Ic, UiTrackSize as Id, UiInputDispatcher as If, UiFrameClockFactory as Ii, VIRTUAL_INDEX_PROP as Il, findEnvironmentKey as Im, VideoPlayback as In, nextCaretToggle as Io, DecorationRect as Ip, pressable as Ir, SpannedRuns as Is, PaintStats as It, hasVisualState as Iu, GlyphCommand as J, writeDeclaredProperty as Ja, GridItemProps as Jc, boxShadow as Jd, UiPointerEvent as Jf, CanvasPlatformSurface as Ji, lightTheme as Jl, UiAnimationOptions as Jm, IconCanvas as Jn, TextRunRect as Jo, UiCursor as Jp, propertyEffects as Jr, PlacedLine as Js, INSPECTOR_HEAT_MS as Jt, UiTextSpan as Ju, CLIP_STRIDE_FLOATS as K, overrideSources as Ka, FlexContainerProps as Kc, resolveLength as Kd, UiPinchEvent as Kf, isNodeSelectable as Ki, UiTheme as Kl, AnimatedCell as Km, iconSource as Kn, SpanPaint as Ko, UiColorValue as Kp, inheritedPropertyFlags as Kr, spannedRunsFor as Ks, PaintRecording as Kt, UiTextLink as Ku, Mp3Format as L, UiGestureRecognizer as La, UiGraphBuilder as Lc, auto as Ld, UiListenerErrorReporter as Lf, UiFrameTime as Li, VIRTUAL_LEAD_PROP as Ll, UiNodeType as Lm, VideoResolver as Ln, syncEditorValue as Lo, DecorationShape as Lp, UiModifierBundle as Lr, TextLine as Ls, paintPictures as Lt, visualState as Lu, performanceMarksEnabled as M, UiScrollability as Ma, UiBinding as Mc, FrLength as Md, UiPropValue as Mf, steps as Mh, withOverrideSource as Mi, LazyItemRenderer as Ml, LayoutRecord as Mm, VideoSourceArgs as Mn, editorOf as Mo, UiNodeTransitions as Mp, InteractiveOptions as Mr, FixedMetricsOptions as Ms, registerFontStack as Mt, isLayoutProtocol as Mu, setPerformanceMarks as N, UiWheelController as Na, UiGraph as Nc, MinMaxTrack as Nd, UiProps as Nf, UiFrame as Ni, LazyListOptions as Nl, UiEnvironment as Nm, videoSource as Nn, isEditableNode as No, UiPropertyOverride as Np, hoverable as Nr, FontMetrics as Ns, PaintCanvas as Nt, UiVisualState as Nu, MARK_PREFIX as O, UiPointerController as Oa, Text as Oc, linearGradient as Od, isComponentLikeElement as Of, UiEasing as Oh, describeOverrides as Oi, EditUnit as Ol, UiColors as Om, sizeContainer as On, CARET_WIDTH as Oo, tightenConstraints as Op, FocusRingOptions as Or, selectableTextOf as Os, createWebGPUSurface as Ot, MAX_MEASURES_PER_CHILD as Ou, Mp4Sample as P, isScrollContainer as Pa, UiEventBinding as Pc, PercentLength as Pd, UiEventListener as Pf, UiAnimationFrameClock as Pi, LazySourceArgs as Pl, UiEnvironmentKey as Pm, DefaultVideoResolver as Pn, isMultiline as Po, UiPropertyOverrides as Pp, interactive as Pr, ParagraphLayout as Ps, PaintCanvasFactory as Pt, UiVisualStateSet as Pu, NO_CLIP_INDEX as Q, SelectionControllerOptions as Qa, PaintElementProps as Qc, defineProperty as Qd, UiWheelEvent as Qf, UiPlatformAdapter as Qi, UiThemeExtension as Ql, UiTween as Qm, IconSpec as Qn, drawText as Qo, UiGridAutoFlow as Qp, GridItemRequest as Qr, lineIndexForOffset as Qs, CanvasTextMeasurer as Qt, resolvedSpansOf as Qu, Mp3Frame as R, PinchRecognizerOptions as Ra, BoxModelProps as Rc, fr as Rd, MOUSE_POINTER as Rf, UiHostFrameClock as Ri, VIRTUAL_WINDOW_PROP as Rl, DirtyFlags as Rm, canDecodeVideo as Rn, EditCommand as Ro, DecorationStroke as Rp, bundle as Rr, TextLineRun as Rs, PaintContext2D as Rt, visualStatesEqual as Ru, paragraphGeometryFrom as S, UiShortcutStep as Sa, EditableText as Sc, UiGradientOffset as Sd, UiModifierHost as Sf, colorValuesEqual as Sh, LayoutExplanation as Si, isUiSemanticState as Sl, UiShapeExtensions as Sm, PublishInsetArgs as Sn, findMatchesIn as So, LayoutResult as Sp, DraggableOptions as Sr, resolvePaintState as Ss, DrawStats as St, UiTypography as Su, UiFrameCallback as T, KeyboardControllerOptions as Ta, Row as Tc, UiRadialGradient as Td, ComponentLikeElement as Tf, parseColor as Th, RelayoutExplanation as Ti, validateRole as Tl, defaultShapes as Tm, BreakpointArgs as Tn, UiEnvironmentKeys as To, TightenOptions as Tp, clickOutside as Tr, TextRange as Ts, WebGPURendererOptions as Tt, defaultTypography as Tu, WebGPUGlyphPages as U, NodeTransitions as Ua, ContainerProps as Uc, minmax as Ud, UiInputEvent as Uf, isNodeFocusable as Ui, UiVideoSurface as Ul, normalizeTransition as Um, IconSourceArgs as Un, EditableLayout as Uo, UI_SUBGRID_AXES as Up, closestPropertyName as Ur, TextRunSpan as Us, EMPTY_RECORDING as Ut, UiResolvedTextSpan as Uu, readMp3Header as V, FocusSource as Va, ColumnProps as Vc, isMinMaxTrack as Vd, UiFocusEvent as Vf, UiTimerFrameClock as Vi, VirtualViewport as Vl, UiTransitionValue as Vm, motion as Vn, detectEditingPlatform as Vo, hasDecorationPhase as Vp, accumulatedOffsetTo as Vr, TextOverflow as Vs, PaintTarget as Vt, UiFontStyle as Vu, Affine as W, resetTransitionWarnings as Wa, EditableTextProps as Wc, percent as Wd, UiKeyModifiers as Wf, isNodeHitTestable as Wi, isVideoSurface as Wl, spring as Wm, ImageSourceArgs as Wn, CanvasTextStyle as Wo, UiAlignment as Wp, findPropertyDefinition as Wr, TextRunStyle as Ws, PaintOp as Wt, UiSpannedText as Wu, INSTANCE_STRIDE_FLOATS as X, FindHost as Xa, IdentityProps as Xc, boxShadowsEqual as Xd, UiTextChangeEvent as Xf, PlatformEventTarget as Xi, withContrast as Xl, UiSpring as Xm, IconRasterizer as Xn, buildFontString as Xo, UiFlexWrap as Xp, propertyValuesEqualByName as Xr, caretRectFor as Xs, LayoutInspector as Xt, defaultTextStyle as Xu, INSTANCE_STRIDE_BYTES as Y, writeOverrideProperty as Ya, GridProps as Yc, boxShadowArraysEqual as Yd, UiPointerKind as Yf, PlatformAdapterOptions as Yi, themesEqual as Yl, UiReducedMotionPolicy as Ym, IconContext as Yn, applyCanvasTextStyle as Yo, UiDirection as Yp, propertyIsInherited as Yr, RunMeasure as Ys, InspectorOverlay as Yt, UiTextStyle as Yu, ImageCommand as Z, UiFindController as Za, InteractionProps as Zc, UiPropertyDefinition as Zd, UiWheelDeltaMode as Zf, PlatformSurface as Zi, withDensity as Zl, UiSpringOptions as Zm, IconRasterizerOptions as Zn, createCanvasTextStyle as Zo, UiFontWeight as Zp, GridContribution as Zr, lineIndexAtY as Zs, LayoutInspectorOptions as Zt, flattenTextSpans as Zu, setLinkHover as _, dragSessionFor as _a, LazyListProps as _c, GradientPaint as _d, assertModifierList as _f, transformsEqual as _h, SCROLLBAR_LINGER_MS as _i, UiLiveRegion as _l, borderRadiusEqual as _m, resolveString as _n, clearMatchRanges as _o, slideUp as _p, ReorderableOptions as _r, computeObjectFitRect as _s, WebGPUTextureCache as _t, spacingEqual as _u, diffSemantics as a, EditingState as aa, lineEndAt as ac, PaintFillRule as ad, noInsets as af, UiSpringToken as ah, MainAxisAlignment as ai, StackProps as al, UiSubgridAxis as am, RenderContext as an, UiPoint as ao, MotionState as ap, ContextMenuOptions as ar, Canvas2DContext as as, TEXTURED_STRIDE_BYTES as at, themeExtensionsEqual as au, offsetAtPointIn as b, UiShortcutBinding as ba, Button as bc, ResolvedGradientStop as bd, defineModifier as bf, colorToHex as bh, CustomLayoutExplanation as bi, UiSemanticStates as bl, normalizeBorderRadius as bm, sameArgs as bn, FindMatch as bo, Constraints as bp, reorderable as br, normalizeTextAlign as bs, WebGPUError as bt, defaultShadows as bu, UiSemanticsMap as c, UiTouchScroller as ca, nextWordEnd as cc, PaintSurface as cd, UiContainerSizeSource as cf, interpolateColor as ch, parseMainAxisAlignment as ci, TypographyProps as cl, UiTextOverflowValue as cm, drawOverlayShapes as cn, SCROLLBAR_MIN_THUMB as co, ResolvedMotionState as cp, contextMenu as cr, DEFAULT_FONT_SIZE as cs, buildRenderList as ct, contrastRatio as cu, textRunOfRecordId as d, UiDragSession as da, wordRangeAt as dc, UiPaint as dd, unknownContainerSize as df, interpolatorFor as dh, ELLIPSIS as di, UiProperties as dl, UiVerticalAlign as dm, CanvasSurface as dn, ScrollbarThumb as do, pop as dp, PinchableOptions as dr, ObjectFit as ds, textRuns as dt, relativeLuminance as du, pointerDeviceOf as ea, offsetAtPoint as ec, spannedTextOf as ed, UiInsetEdge as ef, createTween as eh, GridTrack as ei, PositionProps as el, UiOverflow as em, Canvas2DRendererOptions as en, UiSelectionController as eo, wheelDeltaYOf as ep, DefaultImageResolver as er, layoutTextLines as es, PrimitiveKind as et, UiThemeExtensions as eu, clearLinkHover as f, UiDragState as fa, Responsive as fc, UiPath as fd, UiModifierEnvironment as ff, UiTransform as fh, layoutParagraph as fi, UiPropertyName as fl, validateSubgrid as fm, createCanvasSurface as fn, scrollbarThumb as fo, resolveMotionState as fp, ZoomState as fr, PaintState as fs, GlyphShaper as ft, UiDensity as fu, linkRunAtPointIn as g, UiFileDropMessage as ga, LazyGridProps as gc, UiImage as gd, UiUnknownModifierPropertyError as gf, transformIsIdentity as gh, SCROLLBAR_FADE_MS as gi, UI_SEMANTIC_STATES as gl, borderRadiusCorners as gm, resolvePropertyByName as gn, TEXT_MATCHES_PROP as go, slideFrom as gp, DropTargetOptions as gr, colorToCss as gs, WebGPUGlyphAtlas as gt, scaleSpacing as gu, linkOf as h, UiDroppedFile as ha, LazyGrid as hc, pathValuesEqual as hd, UiModifierSet as hf, transform as hh, LayoutEngine as hi, UI_ROLES as hl, borderRadius as hm, resolveProperty as hn, SubtreeBounds as ho, slideDown as hp, DragSourceOptions as hr, VerticalAlign as hs, GlyphUpload as ht, defaultSpacing as hu, UiSemanticsPatch as i, EditingHost as ia, graphemeBoundaries as ic, PaintBox as id, insetsEqual as if, UiSpringSpec as ih, CrossAxisAlignment as ii, ScrollViewProps as il, UiSelfAlignment as im, LayoutReader as in, UiHitTester as io, MotionChannel as ip, animateLayout as ir, textRunDecorations as is, ScissorRect as it, themeExtension as iu, measureSpan as j, UiScrollBehavior as ja, BindingId as jc, AutoLength as jd, isUiElement as jf, linear as jh, labelNode as ji, LazyGridOptions as jl, lightColors as jm, scrollPosition as jn, editorFor as jo, UiNode as jp, BUTTON_INTERACTION as jr, CharacterCountTextMeasurer as js, fontStackFor as jt, UiLayoutProtocol as ju, markInstant as k, ScrollContainerState as ka, createElement as kc, radialGradient as kd, isObservable$1 as kf, cubicBezier as kh, formatConstraints as ki, EditableTextModel as kl, colorsEqualPalette as km, ScrollOffset as kn, EDITOR_PROP as ko, NodeId as kp, decorated as kr, selectionRangeOf as ks, bumpFontStack as kt, UiLayoutChild as ku, UiSemanticsRecord as l, EXTERNAL_FILES as la, previousGraphemeStart as lc, PaintTextAlign as ld, bandOf as lf, interpolateNumber as lh, FlexDirection as li, UiEventProps as ll, UiTextWrapValue as lm, labelOrigin as ln, SCROLLBAR_THICKNESS as lo, fade as lp, shortcut as lr, DEFAULT_FONT_WEIGHT as ls, createTextCache as lt, highContrastColors as lu, linkHoverOf as m, UiDropZone as ma, LazyColumn as mc, paintValuesEqual as md, UiModifierLayout as mf, parseTransform as mh, LayoutNotifier as mi, UiPropertyValues as ml, UiBorderRadiuses as mm, resolveNumber as mn, scrollbarZoneAt as mo, scaleFrom as mp, AutoScrollOptions as mr, TextAlign as ms, GlyphSlot as mt, UiSpacing as mu, UiSemanticsBox as n, touchActionFor as na, offsetForVerticalMove as nc, textSpansEqual as nd, UiInsetSource as nf, UiEasingToken as nh, sizeGridTracks as ni, Reactive as nl, UiPointerEvents as nm, RendererBackend as nn, HitTestResult as no, MOTION_CHANNELS as np, ImageResolver as nr, runFontString as ns, RenderList as nt, hasThemeExtension as nu, recordsEqual as o, UiEditingController as oa, lineStartAt as oc, PaintLineCap as od, observeViewportInsets as of, defaultMotion as oh, parseAlignContent as oi, TextContentProps as ol, UiTextAlign as om, LABEL_PADDING_X as on, SCROLLBAR_HOVER_ZONE as oo, MotionStateInput as op, ShortcutOptions as or, Canvas2DGradient as os, TEXTURED_STRIDE_FLOATS as ot, withThemeExtension as ou, hasTextLinks as p, UiDropEffect as pa, ResponsiveProps as pc, inputsEqual as pd, UiModifierFocus as pf, UiTransforms as ph, proportionalFontMetrics as pi, UiPropertyValueOf as pl, UiBorderRadius as pm, resolveBoolean as pn, scrollbarThumbs as po, rotateFrom as pp, pinchable as pr, PaintTextSpan as ps, GLYPH_SUBPIXEL_PHASES as pt, densityFactors as pu, CommandKind as q, resetOverrideWarnings as qa, FlexItemProps as qc, UiBoxShadow as qd, UiPointerDevice as qf, resolveCursor as qi, darkTheme as ql, UiAnimation as qm, imageSource as qn, TextLinePlacement as qo, UiContentDistribution as qp, inheritedPropertyNames as qr, CaretRect as qs, replayPaint as qt, UiTextMetrics as qu, UiSemanticsUpdate as r, EditingControllerOptions as ra, selectionRects as rc, textStylesEqual as rd, UiInsets as rf, UiMotion as rh, AlignContent as ri, RowProps as rl, UiPosition as rm, UiRenderer as rn, HitTester as ro, MOTION_REST as rp, AnimateLayoutOptions as rr, textRunBackgrounds as rs, RenderTextCache as rt, noThemeExtensions as ru, TEXT_RUN_ID_SEPARATOR as s, TouchScrollerOptions as sa, nextGraphemeEnd as sc, PaintLineJoin as sd, UiContainerSize as sf, UiInterpolator as sh, parseCrossAxisAlignment as si, TextProps as sl, UiTextDirection as sm, OverlayShape as sn, SCROLLBAR_INSET as so, MotionTiming as sp, ShortcutsOptions as sr, DEFAULT_FONT_FAMILY as ss, TextRunDraw as st, UiContrast as su, UiSemanticsAction as t, prepareInputSurface as ta, offsetAtX as tc, textContentOf as td, UiInsetRegistry as tf, UiDurationToken as th, placeGridItems as ti, PropsOf as tl, UiPlacement as tm, traceRoundedRect as tn, HitTestLayoutReader as to, DirtyNodeSet as tp, DefaultImageResolverOptions as tr, runCanvasStyleInto as ts, RenderCommand as tt, defineThemeExtension as tu, buildSemanticsTree as u, UiDragPayload as ua, previousWordStart as uc, PaintTextStyle as ud, containerBands as uf, interpolateTransform as uh, parseFlexDirection as ui, UiNodeRef as ul, UiThemeColorName as um, CanvasHost as un, ScrollbarAxis as uo, isMotionRest as up, shortcuts as ur, DEFAULT_TEXT_COLOR as us, glyphCount as ut, raiseContrast as uu, ParagraphGeometry as v, ShortcutRegistryOptions as va, LazyRow as vc, MAX_GRADIENT_STOPS as vd, UiModifier as vf, UiBasicColors as vh, ScrollAdjustment as vi, UiRole as vl, borderRadiusIsZero as vm, ThemeTokenTarget as vn, matchRangesOf as vo, SharedClaim as vp, dragSource as vr, createPaintState as vs, initializeWebGPU as vt, spacingSteps as vu, wordRangeIn as w, parseShortcut as wa, Paint as wc, UiLinearGradient as wd, ComponentResolver as wf, normalizeColor as wh, OverrideSources as wi, statesEqual as wl, UiShapes as wm, publishInset as wn, provideEnvironment as wo, Size as wp, ClickOutsideOptions as wr, TEXT_SELECTION_PROP as ws, WebGPURenderer as wt, UiTypographyRole as wu, paragraphGeometry as x, UiShortcutRegistry as xa, Column as xc, UiGradient as xd, isUiModifier as xf, colorToRgba as xh, Edges as xi, isUiRole as xl, uniformBorderRadius as xm, InsetPaddingArgs as xn, FindOptions as xo, LayoutBox as xp, DragOffset as xr, normalizeVerticalAlign as xs, CapturedFrame as xt, shadowsEqual as xu, hasDrawnText as y, UiShortcut as ya, Box as yc, ResolvedGradient as yd, UiModifierKind as yf, UiColor as yh, AxisExplanation as yi, UiSemanticState as yl, borderRadiusValuesEqual as ym, themeTokens as yn, setMatchRanges as yo, UiSharedElements as yp, dropTarget as yr, isPaintVisible as ys, isWebGPUAvailable as yt, UiShadows as yu, Mp3Frames as z, UiPinchRecognizer as za, BoxProps as zc, isAutoLength as zd, UiBeforeInputEvent as zf, UiHostFrameClockOptions as zi, VirtualItemMeasure as zl, AnimationDriver as zm, MotionArgs as zn, EditingPlatform as zo, decorationColor as zp, noModifiers as zr, TextMeasureRequest as zs, PaintGradient as zt, UiFontKerning as zu };
|
|
15815
|
-
//# sourceMappingURL=index-
|
|
16395
|
+
export { Mp3Header as $, GestureRecognizerOptions as $a, UiChildrenBinding as $c, UiTrackSize as $d, UiInputDispatcher as $f, UiFrameClockFactory as $i, VIRTUAL_INDEX_PROP as $l, findEnvironmentKey as $m, VideoPlayback as $n, nextCaretToggle as $o, DecorationRect as $p, pressable as $r, SpannedRuns as $s, PaintResolver as $t, hasVisualState as $u, MARK_PREFIX as A, UiDropEffect as Aa, ResponsiveProps as Ac, inputsEqual as Ad, UiModifierFocus as Af, UiTransforms as Ah, proportionalFontMetrics as Ai, UiPropertyValueOf as Al, UiBorderRadius as Am, resolveString as An, scrollbarThumbs as Ao, rotateFrom as Ap, pinchable as Ar, PaintTextSpan as As, WebGPUTextureCache as At, densityFactors as Au, ByteSource as B, formatShortcut as Ba, Grid as Bc, UiGradientStop as Bd, UiModifierTeardown as Bf, colorsEqual as Bh, LayoutStateExplanation as Bi, normalizeStates as Bl, UiShapeName as Bm, breakpoint as Bn, UiEnvironmentProvider as Bo, LayoutStats as Bp, draggable as Br, DEFAULT_LINE_HEIGHT_FACTOR as Bs, WebGPUSurface as Bt, UiTypographyExtensions as Bu, paragraphGeometry as C, UiEditingController as Ca, lineStartAt as Cc, PaintLineCap as Cd, observeViewportInsets as Cf, defaultMotion as Ch, parseAlignContent as Ci, TextContentProps as Cl, UiTextAlign as Cm, CanvasHost as Cn, SCROLLBAR_HOVER_ZONE as Co, MotionStateInput as Cp, ShortcutOptions as Cr, Canvas2DGradient as Cs, glyphCount as Ct, withThemeExtension as Cu, UiFrameCallback as D, UiDragPayload as Da, previousWordStart as Dc, PaintTextStyle as Dd, containerBands as Df, interpolateTransform as Dh, parseFlexDirection as Di, UiNodeRef as Dl, UiThemeColorName as Dm, resolveNumber as Dn, ScrollbarAxis as Do, isMotionRest as Dp, shortcuts as Dr, DEFAULT_TEXT_COLOR as Ds, GlyphSlot as Dt, raiseContrast as Du, wordRangeIn as E, EXTERNAL_FILES as Ea, previousGraphemeStart as Ec, PaintTextAlign as Ed, bandOf as Ef, interpolateNumber as Eh, FlexDirection as Ei, UiEventProps as El, UiTextWrapValue as Em, resolveBoolean as En, SCROLLBAR_THICKNESS as Eo, fade as Ep, shortcut as Er, DEFAULT_FONT_WEIGHT as Es, GLYPH_SUBPIXEL_PHASES as Et, highContrastColors as Eu, setPerformanceMarks as F, ShortcutRegistryOptions as Fa, LazyRow as Fc, MAX_GRADIENT_STOPS as Fd, UiModifier as Ff, UiBasicColors as Fh, ScrollAdjustment as Fi, UiRole as Fl, borderRadiusIsZero as Fm, PublishInsetArgs as Fn, matchRangesOf as Fo, SharedClaim as Fp, dragSource as Fr, createPaintState as Fs, DrawStats as Ft, spacingSteps as Fu, Mp4AudioTrack as G, UiPointerController as Ga, Text as Gc, linearGradient as Gd, isComponentLikeElement as Gf, UiEasing as Gh, describeOverrides as Gi, EditUnit as Gl, UiColors as Gm, VideoClock as Gn, CARET_WIDTH as Go, tightenConstraints as Gp, FocusRingOptions as Gr, selectableTextOf as Gs, registerFontStack as Gt, MAX_MEASURES_PER_CHILD as Gu, RangeSourceOptions as H, KeyboardControllerOptions as Ha, Row as Hc, UiRadialGradient as Hd, ComponentLikeElement as Hf, parseColor as Hh, RelayoutExplanation as Hi, validateRole as Hl, defaultShapes as Hm, ScrollOffset as Hn, UiEnvironmentKeys as Ho, TightenOptions as Hp, clickOutside as Hr, TextRange as Hs, bumpFontStack as Ht, defaultTypography as Hu, VttCue as I, UiShortcut as Ia, Box as Ic, ResolvedGradient as Id, UiModifierKind as If, UiColor as Ih, AxisExplanation as Ii, UiSemanticState as Il, borderRadiusValuesEqual as Im, insetPadding as In, setMatchRanges as Io, UiSharedElements as Ip, dropTarget as Ir, isPaintVisible as Is, RenderHooks as It, UiShadows as Iu, demuxMp4Audio as J, UiScrollBehavior as Ja, BindingId as Jc, AutoLength as Jd, isUiElement as Jf, linear as Jh, labelNode as Ji, LazyGridOptions as Jl, lightColors as Jm, VideoTransport as Jn, editorFor as Jo, UiNode as Jp, BUTTON_INTERACTION as Jr, CharacterCountTextMeasurer as Js, PaintPictureCache as Jt, UiLayoutProtocol as Ju, Mp4Sample as K, ScrollContainerState as Ka, createElement as Kc, radialGradient as Kd, isObservable$1 as Kf, cubicBezier as Kh, formatConstraints as Ki, EditableTextModel as Kl, colorsEqualPalette as Km, VideoSourceArgs as Kn, EDITOR_PROP as Ko, NodeId as Kp, decorated as Kr, selectionRangeOf as Ks, PaintCanvas as Kt, UiLayoutChild as Ku, VttTrack as L, UiShortcutBinding as La, Button as Lc, ResolvedGradientStop as Ld, defineModifier as Lf, colorToHex as Lh, CustomLayoutExplanation as Li, UiSemanticStates as Ll, normalizeBorderRadius as Lm, publishInset as Ln, FindMatch as Lo, Constraints as Lp, reorderable as Lr, normalizeTextAlign as Ls, WebGPURenderer as Lt, defaultShadows as Lu, markNow as M, UiDroppedFile as Ma, LazyGrid as Mc, pathValuesEqual as Md, UiModifierSet as Mf, transform as Mh, LayoutEngine as Mi, UI_ROLES as Ml, borderRadius as Mm, themeTokens as Mn, SubtreeBounds as Mo, slideDown as Mp, DragSourceOptions as Mr, VerticalAlign as Ms, isWebGPUAvailable as Mt, defaultSpacing as Mu, measureSpan as N, UiFileDropMessage as Na, LazyGridProps as Nc, UiImage as Nd, UiUnknownModifierPropertyError as Nf, transformIsIdentity as Nh, SCROLLBAR_FADE_MS as Ni, UI_SEMANTIC_STATES as Nl, borderRadiusCorners as Nm, sameArgs as Nn, TEXT_MATCHES_PROP as No, slideFrom as Np, DropTargetOptions as Nr, colorToCss as Ns, WebGPUError as Nt, scaleSpacing as Nu, UiScheduler as O, UiDragSession as Oa, wordRangeAt as Oc, UiPaint as Od, unknownContainerSize as Of, interpolatorFor as Oh, ELLIPSIS as Oi, UiProperties as Ol, UiVerticalAlign as Om, resolveProperty as On, ScrollbarThumb as Oo, pop as Op, PinchableOptions as Or, ObjectFit as Os, GlyphUpload as Ot, relativeLuminance as Ou, performanceMarksEnabled as P, dragSessionFor as Pa, LazyListProps as Pc, GradientPaint as Pd, assertModifierList as Pf, transformsEqual as Ph, SCROLLBAR_LINGER_MS as Pi, UiLiveRegion as Pl, borderRadiusEqual as Pm, InsetPaddingArgs as Pn, clearMatchRanges as Po, slideUp as Pp, ReorderableOptions as Pr, computeObjectFitRect as Ps, CapturedFrame as Pt, spacingEqual as Pu, Mp3Frames as Q, GestureInput as Qa, ChildrenBindingId as Qc, UiLength as Qd, UiEventListenerOptions as Qf, UiFrameClock as Qi, UiVirtualWindow as Ql, createEnvironmentKey as Qm, RangeResponse as Qn, isReadOnly as Qo, DecorationFill as Qp, measure as Qr, ParagraphTextMeasurer as Qs, PaintGradient as Qt, defaultVisualState as Qu, cueAt as R, UiShortcutRegistry as Ra, Column as Rc, UiGradient as Rd, isUiModifier as Rf, colorToRgba as Rh, Edges as Ri, isUiRole as Rl, uniformBorderRadius as Rm, BreakpointArgs as Rn, FindOptions as Ro, LayoutBox as Rp, DragOffset as Rr, normalizeVerticalAlign as Rs, WebGPURendererOptions as Rt, shadowsEqual as Ru, offsetAtPointIn as S, EditingState as Sa, lineEndAt as Sc, PaintFillRule as Sd, noInsets as Sf, UiSpringToken as Sh, MainAxisAlignment as Si, StackProps as Sl, UiSubgridAxis as Sm, labelOrigin as Sn, UiPoint as So, MotionState as Sp, ContextMenuOptions as Sr, Canvas2DContext as Ss, createTextCache as St, themeExtensionsEqual as Su, selectionRectsIn as T, UiTouchScroller as Ta, nextWordEnd as Tc, PaintSurface as Td, UiContainerSizeSource as Tf, interpolateColor as Th, parseMainAxisAlignment as Ti, TypographyProps as Tl, UiTextOverflowValue as Tm, createCanvasSurface as Tn, SCROLLBAR_MIN_THUMB as To, ResolvedMotionState as Tp, contextMenu as Tr, DEFAULT_FONT_SIZE as Ts, GlyphShaper as Tt, contrastRatio as Tu, bufferSource as U, UiKeyboardController as Ua, ScrollView as Uc, gradientPaint as Ud, UiChild as Uf, rgb8 as Uh, SizeDecision as Ui, validateStates as Ul, isShapeName as Um, ScrollPositionArgs as Un, EnvironmentNotifier as Uo, clampSize as Up, autoFocus as Ur, clearSelectionRange as Us, clearFontStacks as Ut, isTypographyRole as Uu, DEFAULT_BLOCK_SIZE as V, parseShortcut as Va, Paint as Vc, UiLinearGradient as Vd, ComponentResolver as Vf, normalizeColor as Vh, OverrideSources as Vi, statesEqual as Vl, UiShapes as Vm, sizeContainer as Vn, provideEnvironment as Vo, Size as Vp, ClickOutsideOptions as Vr, TEXT_SELECTION_PROP as Vs, createWebGPUSurface as Vt, UiTypographyRole as Vu, rangeSource as W, PointerControllerOptions as Wa, Stack as Wc, gradientsEqual as Wd, UiElement as Wf, rgba as Wh, describeLength as Wi, CompositionRange as Wl, shapesEqual as Wm, scrollPosition as Wn, CARET_BLINK_MS as Wo, constraintsEqual as Wp, Decorations as Wr, selectableTextNodes as Ws, fontStackFor as Wt, typographyEqual as Wu, Mp3Format as X, UiWheelController as Xa, UiGraph as Xc, MinMaxTrack as Xd, UiProps as Xf, UiFrame as Xi, LazyListOptions as Xl, UiEnvironment as Xm, DefaultVideoResolver as Xn, isEditableNode as Xo, UiPropertyOverride as Xp, hoverable as Xr, FontMetrics as Xs, paintPictures as Xt, UiVisualState as Xu, demuxMp4Video as Y, UiScrollability as Ya, UiBinding as Yc, FrLength as Yd, UiPropValue as Yf, steps as Yh, withOverrideSource as Yi, LazyItemRenderer as Yl, LayoutRecord as Ym, videoSource as Yn, editorOf as Yo, UiNodeTransitions as Yp, InteractiveOptions as Yr, FixedMetricsOptions as Ys, PaintStats as Yt, isLayoutProtocol as Yu, Mp3Frame as Z, isScrollContainer as Za, UiEventBinding as Zc, PercentLength as Zd, UiEventListener as Zf, UiAnimationFrameClock as Zi, LazySourceArgs as Zl, UiEnvironmentKey as Zm, DefaultVideoResolverOptions as Zn, isMultiline as Zo, UiPropertyOverrides as Zp, interactive as Zr, ParagraphLayout as Zs, PaintContext2D as Zt, UiVisualStateSet as Zu, linkOf as _, pointerDeviceOf as _a, offsetAtPoint as _c, spannedTextOf as _d, UiInsetEdge as _f, createTween as _h, GridTrack as _i, PositionProps as _l, UiOverflow as _m, LayoutReader as _n, UiSelectionController as _o, wheelDeltaYOf as _p, DefaultImageResolver as _r, layoutTextLines as _s, ScissorRect as _t, UiThemeExtensions as _u, diffSemantics as a, UiTimerFrameClockOptions as aa, TextRunMeasurer as ac, UiFontVariant as ad, isPercentLength as af, assertTransitionMap as ah, contentOffset as ai, CommonProps as al, paintsAfterChildren as am, PaintRecording as an, UiFocusManager as ao, UiGestureEvent as ap, sharedElement as ar, isPrintable as as, CLIP_STRIDE_FLOATS as at, lazySource as au, ParagraphGeometry as b, EditingControllerOptions as ba, selectionRects as bc, textStylesEqual as bd, UiInsets as bf, UiMotion as bh, AlignContent as bi, RowProps as bl, UiPosition as bm, OverlayShape as bn, HitTester as bo, MOTION_REST as bp, AnimateLayoutOptions as br, textRunBackgrounds as bs, TextRunDraw as bt, noThemeExtensions as bu, UiSemanticsMap as c, isNodeInert as ca, TextWrap as cc, UiTextDecoration as cd, repeat as cf, tween as ch, getPropertyNames as ci, EnvironmentProps as cl, UiBorderRadiusValue as cm, InspectorOverlay as cn, clearOverrideProperty as co, UiKeyboardEvent as cp, ImageSources as cr, PlacedTextRun as cs, INSTANCE_STRIDE_BYTES as ct, videoFrameSize as cu, buildSemanticsTree as d, CanvasPlatformSurface as da, PlacedLine as dc, UiTextSpan as dd, boxShadow as df, UiAnimationOptions as dh, propertyEffects as di, GridItemProps as dl, UiCursor as dm, CanvasTextMeasurer as dn, writeDeclaredProperty as do, UiPointerEvent as dp, IconCanvas as dr, TextRunRect as ds, NO_CLIP_INDEX as dt, lightTheme as du, UiFrameTime as ea, TextLine as ec, visualState as ed, auto as ef, UiNodeType as eh, UiModifierBundle as ei, UiGraphBuilder as el, DecorationShape as em, PaintTarget as en, UiGestureRecognizer as eo, UiListenerErrorReporter as ep, VideoResolver as er, syncEditorValue as es, readMp3Header as et, VIRTUAL_LEAD_PROP as eu, semanticsInertAbove as f, PlatformAdapterOptions as fa, RunMeasure as fc, UiTextStyle as fd, boxShadowArraysEqual as ff, UiReducedMotionPolicy as fh, propertyIsInherited as fi, GridProps as fl, UiDirection as fm, Canvas2DRenderer as fn, writeOverrideProperty as fo, UiPointerKind as fp, IconContext as fr, applyCanvasTextStyle as fs, PrimitiveCommand as ft, themesEqual as fu, linkHoverOf as g, capturePointer as ga, lineLimit as gc, spanAtOffset as gd, propertyValuesEqual as gf, UiTweenOptions as gh, GridPlacement as gi, PaintProps as gl, UiObjectFit as gm, UiRenderer as gn, SelectionHost as go, noKeyModifiers as gp, iconKey as gr, fillTextRects as gs, RenderTextCache as gt, UiThemeExtensionOptions as gu, hasTextLinks as h, UiPlatformAdapter as ha, lineIndexForOffset as hc, resolvedSpansOf as hd, defineProperty as hf, UiTween as hh, GridItemRequest as hi, PaintElementProps as hl, UiGridAutoFlow as hm, RendererBackend as hn, SelectionControllerOptions as ho, UiWheelEvent as hp, IconSpec as hr, drawText as hs, RenderList as ht, UiThemeExtension as hu, UiSemanticsPatch as i, UiTimerFrameClock as ia, TextOverflow as ic, UiFontStyle as id, isMinMaxTrack as if, UiTransitionValue as ih, accumulatedOffsetTo as ii, ColumnProps as il, hasDecorationPhase as im, PaintRecorder as in, FocusSource as io, UiFocusEvent as ip, motion as ir, detectEditingPlatform as is, CLIP_STRIDE_BYTES as it, VirtualViewport as iu, markInstant as j, UiDropZone as ja, LazyColumn as jc, paintValuesEqual as jd, UiModifierLayout as jf, parseTransform as jh, LayoutNotifier as ji, UiPropertyValues as jl, UiBorderRadiuses as jm, ThemeTokenTarget as jn, scrollbarZoneAt as jo, scaleFrom as jp, AutoScrollOptions as jr, TextAlign as js, initializeWebGPU as jt, UiSpacing as ju, UiSchedulerOptions as k, UiDragState as ka, Responsive as kc, UiPath as kd, UiModifierEnvironment as kf, UiTransform as kh, layoutParagraph as ki, UiPropertyName as kl, validateSubgrid as km, resolvePropertyByName as kn, scrollbarThumb as ko, resolveMotionState as kp, ZoomState as kr, PaintState as ks, WebGPUGlyphAtlas as kt, UiDensity as ku, UiSemanticsRecord as l, isNodeSelectable as la, spannedRunsFor as lc, UiTextLink as ld, resolveLength as lf, AnimatedCell as lh, inheritedPropertyFlags as li, FlexContainerProps as ll, UiColorValue as lm, LayoutInspector as ln, overrideSources as lo, UiPinchEvent as lp, iconSource as lr, SpanPaint as ls, INSTANCE_STRIDE_FLOATS as lt, UiTheme as lu, clearLinkHover as m, PlatformSurface as ma, lineIndexAtY as mc, flattenTextSpans as md, UiPropertyDefinition as mf, UiSpringOptions as mh, GridContribution as mi, InteractionProps as ml, UiFontWeight as mm, traceRoundedRect as mn, UiFindController as mo, UiWheelDeltaMode as mp, IconRasterizerOptions as mr, createCanvasTextStyle as ms, RenderCommand as mt, withDensity as mu, UiSemanticsBox as n, UiHostFrameClockOptions as na, TextMeasureRequest as nc, UiFontKerning as nd, isAutoLength as nf, AnimationDriver as nh, noModifiers as ni, BoxProps as nl, decorationColor as nm, EMPTY_RECORDING as nn, UiPinchRecognizer as no, UiBeforeInputEvent as np, MotionArgs as nr, EditingPlatform as ns, WebGPUGlyphPages as nt, VirtualItemMeasure as nu, recordsEqual as o, isNodeFocusable as oa, TextRunSpan as oc, UiResolvedTextSpan as od, minmax as of, normalizeTransition as oh, closestPropertyName as oi, ContainerProps as ol, UI_SUBGRID_AXES as om, replayPaint as on, NodeTransitions as oo, UiInputEvent as op, IconSourceArgs as or, EditableLayout as os, CommandKind as ot, UiVideoSurface as ou, textRunOfRecordId as p, PlatformEventTarget as pa, caretRectFor as pc, defaultTextStyle as pd, boxShadowsEqual as pf, UiSpring as ph, propertyValuesEqualByName as pi, IdentityProps as pl, UiFlexWrap as pm, Canvas2DRendererOptions as pn, FindHost as po, UiTextChangeEvent as pp, IconRasterizer as pr, buildFontString as ps, PrimitiveKind as pt, withContrast as pu, Mp4VideoTrack as q, ScrollSink as qa, UiDefinition as qc, validateGradient as qd, isUiChild as qf, easings as qh, formatExplanation as qi, LazyAxis as ql, darkColors as qm, VideoState as qn, caretVisibleAt as qo, NodeProperty as qp, focusRing as qr, setSelectionRange as qs, PaintCanvasFactory as qt, UiLayoutContext as qu, UiSemanticsUpdate as r, UiManualFrameClock as ra, TextMeasurer as rc, UiFontStretch as rd, isFrLength as rf, UiTransitionSpec as rh, Transform as ri, ButtonProps as rl, decorationRect as rm, PaintOp as rn, FocusNotifier as ro, UiEventType as rp, SharedElementArgs as rr, commandForKey as rs, Affine as rt, VirtualUpdate as ru, TEXT_RUN_ID_SEPARATOR as s, isNodeHitTestable as sa, TextRunStyle as sc, UiSpannedText as sd, percent as sf, spring as sh, findPropertyDefinition as si, EditableTextProps as sl, UiAlignment as sm, INSPECTOR_HEAT_MS as sn, resetTransitionWarnings as so, UiKeyModifiers as sp, ImageSourceArgs as sr, CanvasTextStyle as ss, GlyphCommand as st, isVideoSurface as su, UiSemanticsAction as t, UiHostFrameClock as ta, TextLineRun as tc, visualStatesEqual as td, fr as tf, DirtyFlags as th, bundle as ti, BoxModelProps as tl, DecorationStroke as tm, tracePathData as tn, PinchRecognizerOptions as to, MOUSE_POINTER as tp, canDecodeVideo as tr, EditCommand as ts, splitMp3Frames as tt, VIRTUAL_WINDOW_PROP as tu, buildSemanticsSubtree as u, resolveCursor as ua, CaretRect as uc, UiTextMetrics as ud, UiBoxShadow as uf, UiAnimation as uh, inheritedPropertyNames as ui, FlexItemProps as ul, UiContentDistribution as um, LayoutInspectorOptions as un, resetOverrideWarnings as uo, UiPointerDevice as up, imageSource as ur, TextLinePlacement as us, ImageCommand as ut, darkTheme as uu, linkRunAtPointIn as v, prepareInputSurface as va, offsetAtX as vc, textContentOf as vd, UiInsetRegistry as vf, UiDurationToken as vh, placeGridItems as vi, PropsOf as vl, UiPlacement as vm, RenderContext as vn, HitTestLayoutReader as vo, DirtyNodeSet as vp, DefaultImageResolverOptions as vr, runCanvasStyleInto as vs, TEXTURED_STRIDE_BYTES as vt, defineThemeExtension as vu, paragraphGeometryFrom as w, TouchScrollerOptions as wa, nextGraphemeEnd as wc, PaintLineJoin as wd, UiContainerSize as wf, UiInterpolator as wh, parseCrossAxisAlignment as wi, TextProps as wl, UiTextDirection as wm, CanvasSurface as wn, SCROLLBAR_INSET as wo, MotionTiming as wp, ShortcutsOptions as wr, DEFAULT_FONT_FAMILY as ws, textRuns as wt, UiContrast as wu, hasDrawnText as x, EditingHost as xa, graphemeBoundaries as xc, PaintBox as xd, insetsEqual as xf, UiSpringSpec as xh, CrossAxisAlignment as xi, ScrollViewProps as xl, UiSelfAlignment as xm, drawOverlayShapes as xn, UiHitTester as xo, MotionChannel as xp, animateLayout as xr, textRunDecorations as xs, buildRenderList as xt, themeExtension as xu, setLinkHover as y, touchActionFor as ya, offsetForVerticalMove as yc, textSpansEqual as yd, UiInsetSource as yf, UiEasingToken as yh, sizeGridTracks as yi, Reactive as yl, UiPointerEvents as ym, LABEL_PADDING_X as yn, HitTestResult as yo, MOTION_CHANNELS as yp, ImageResolver as yr, runFontString as ys, TEXTURED_STRIDE_FLOATS as yt, hasThemeExtension as yu, parseWebVtt as z, UiShortcutStep as za, EditableText as zc, UiGradientOffset as zd, UiModifierHost as zf, colorValuesEqual as zh, LayoutExplanation as zi, isUiSemanticState as zl, UiShapeExtensions as zm, SizeContainerArgs as zn, findMatchesIn as zo, LayoutResult as zp, DraggableOptions as zr, resolvePaintState as zs, WebGPUCanvasHost as zt, UiTypography as zu };
|
|
16396
|
+
//# sourceMappingURL=index-DAdauEn9.d.ts.map
|