gesso-framework 0.3.0 → 0.4.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 CHANGED
@@ -1,5 +1,107 @@
1
1
  # gesso-framework
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - **The browser shells post OS file drops.** The `fileDrop` message, its shape and
8
+ the session that turns it into an ordinary drag have existed since drop targets
9
+ did, and nothing posted one: a zone accepting `gesso/files` could be written and
10
+ never reached.
11
+
12
+ `attachFileDrop` is the shell half, shared by `createApp`'s worker shell and
13
+ `createSyncApp`'s single-thread one because it is the same four DOM events
14
+ either way. It answers drags that carry files and no others, prevents the
15
+ default on every `dragover` (which is what tells a browser the drop is wanted)
16
+ and on `drop` (or the tab is replaced by the file), and reads the bytes before
17
+ posting the drop. The worker shell transfers the buffers rather than copying
18
+ them; a drop whose files cannot be read is reported as a leave, so no zone stays
19
+ lit waiting. `GessoRuntime.applyFileDrop` hands the message to the tree's drag
20
+ session.
21
+
22
+ The core half was wrong in a way no spec could have caught: `applyFileDrop` began
23
+ a drag with the files of `enter` and, on `drop`, only moved it, so a zone
24
+ received the payload the drag started with. A browser lets a page see the _types_
25
+ of dragged files and nothing else until they are let go, so that payload has
26
+ empty names and no bytes — every file dropped from a desktop would have arrived
27
+ unopenable. The spec that covered it sent the same files on both phases, which is
28
+ the one shape a browser never produces. It now sends what one does.
29
+
30
+ - **`interceptKey`, for a shortcut the app takes from the browser.**
31
+ `interceptFind` cancelled one browser default so an app's own find bar could
32
+ have Ctrl+F. An app with a Save of its own needs the same for Ctrl+S, or
33
+ Chrome's "Save page as" opens over it, and one with an Open for Ctrl+O.
34
+
35
+ The shell has to decide before the worker has heard of the key, so the decision
36
+ stays the application's and is made on the main thread: a predicate over the
37
+ `KeyboardEvent`, which can say "Ctrl or Cmd" in one line where a list could not.
38
+ The key is still forwarded; only the browser's default is cancelled. The
39
+ single-thread shell needs nothing, since its platform adapter already cancels
40
+ whatever the app's own listener claimed.
41
+
42
+ - **Files through the shell — open, save, reopen, recent.** A picker, a download
43
+ and a `FileSystemFileHandle` are all the window's, so an application in a render
44
+ worker could read a dropped file and do nothing else with files at all.
45
+ `ShellService` now asks the shell, in the shape a popup and a storage request
46
+ already have: a request with an id, and one `ShellFileResult` back on every path.
47
+
48
+ ```
49
+ openFiles showOpenFilePicker, or a file input where there is none
50
+ saveFile to a handle (Save), a picker (Save As), or a download
51
+ reopenFile a remembered file, asking permission again if it lapsed
52
+ recentFiles the remembered files, most recently used first
53
+ forgetFile stop remembering one
54
+ ```
55
+
56
+ A handle crosses as a number. The `FileSystemFileHandle` is not plain data, so
57
+ the shell keeps it — in IndexedDB, which can hold one — and a number handed out
58
+ yesterday still names yesterday's file, which is the whole of how "recent files"
59
+ survives a reload. The same file picked twice is one entry (`isSameEntry`, not
60
+ identity), and past fifty the least recently used is let go. What does not
61
+ survive a reload is the permission, and asking needs a gesture, so reopening
62
+ belongs in a click handler as much as a picker does.
63
+
64
+ `cancelled` is its own outcome because closing a picker is a decision, not a
65
+ failure; `denied` is the browser refusing; `unsupported` is a shell with no way
66
+ to do it. Without the File System Access API files come back with `handle` null
67
+ and a save is a download, and the answer says so rather than leaving the
68
+ application to feature-test.
69
+
70
+ `saveFile` takes bytes as well as text, for a file that is not text — a zip, an
71
+ image. Bytes cross the barrier on the way out as they already do on the way in,
72
+ in `ShellFile.bytes`, and are written to the handle, the picked file or the
73
+ download in place of the text when given.
74
+
75
+ ### Patch Changes
76
+
77
+ - **A key typed before the editing proxy has focus keeps its text.** The proxy
78
+ takes DOM focus when the worker reports a focused editable, a round trip; a key
79
+ typed in that gap reaches the canvas, and the text it would have made never
80
+ exists.
81
+
82
+ The `keyDown` message now says whether it came through the proxy (`textFollows`),
83
+ and a key that did not is inserted by the runtime when an editable has the focus.
84
+
85
+ Typing a word quickly into a spreadsheet cell the first letter opens kept only
86
+ the first letter.
87
+
88
+ - **A shell request made while the root is built is held, not dropped.** The root
89
+ is built in the runtime's constructor, so a component that reads a stored
90
+ preference as it mounts asked before `onShellRequest` could have been called,
91
+ and the request went nowhere — for a storage or file request, a promise that
92
+ never settled.
93
+
94
+ The runtime now holds what is asked before a listener attaches, up to 256, and
95
+ hands it over when one does.
96
+
97
+ Found by a spreadsheet's status-bar figures that never came back after a reload.
98
+
99
+ - Updated dependencies
100
+ - Updated dependencies
101
+ - Updated dependencies
102
+ - Updated dependencies
103
+ - gesso-core@0.4.0
104
+
3
105
  ## 0.3.0
4
106
 
5
107
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  import { C as CommandMap, I as ReadableCell, N as InputCell, P as OutputCell, S as Command, U as Component, V as InternalState, a as ComponentType, f as ChannelPort, h as Patch, i as ComponentProps, l as ChannelReplica, n as ComponentArgs, r as ComponentContext, s as Inputs, x as ChannelToken } from "./FunctionComponent-DAyf5HQ6.js";
2
2
  import { BehaviorSubject, Observable, Subscription } from "rxjs";
3
- import { AnimatedCell, AnimationDriver, CanvasHost, CaretRect, ComponentLikeElement, ComponentResolver, EditingState, EditingState as EditingState$1, IconRasterizer, ImageResolver, LayoutExplanation, LayoutInspector, MARK_PREFIX, MotionStateInput, MotionTiming, RendererBackend, Size, TextMeasureRequest, TextMeasurer, UI_ROLES, UI_SEMANTIC_STATES, UiAnimation, UiChild, UiDurationToken, UiEasing, UiEasingToken, UiEditingController, UiElement, UiFindController, UiFocusManager, UiFrameClockFactory, UiInputDispatcher, UiInsets, UiKeyModifiers, UiKeyboardController, UiLength, UiModifier, UiMotion, UiNode, UiPlatformAdapter, UiPointerController, UiPointerDevice, UiReducedMotionPolicy, UiRole, UiScrollability, UiSelectionController, UiSemanticState, UiSemanticsAction, UiSemanticsMap, UiSemanticsMap as UiSemanticsMap$1, UiSemanticsPatch, UiSemanticsRecord, UiSemanticsRecord as UiSemanticsRecord$1, UiSemanticsUpdate, UiShortcutRegistry, UiSpringSpec, UiSpringToken, UiThemeExtension, UiTouchScroller, UiWheelController, VideoClock, VideoResolver, markInstant, markNow, measureSpan, performanceMarksEnabled, setPerformanceMarks as setPerformanceMarks$1 } from "gesso-core";
3
+ import { AnimatedCell, AnimationDriver, CanvasHost, CaretRect, ComponentLikeElement, ComponentResolver, EditingState, EditingState as EditingState$1, IconRasterizer, ImageResolver, LayoutExplanation, LayoutInspector, MARK_PREFIX, MotionStateInput, MotionTiming, RendererBackend, Size, TextMeasureRequest, TextMeasurer, UI_ROLES, UI_SEMANTIC_STATES, UiAnimation, UiChild, UiDurationToken, UiEasing, UiEasingToken, UiEditingController, UiElement, UiFileDropMessage, UiFindController, UiFocusManager, UiFrameClockFactory, UiInputDispatcher, UiInsets, UiKeyModifiers, UiKeyboardController, UiLength, UiModifier, UiMotion, UiNode, UiPlatformAdapter, UiPointerController, UiPointerDevice, UiReducedMotionPolicy, UiRole, UiScrollability, UiSelectionController, UiSemanticState, UiSemanticsAction, UiSemanticsMap, UiSemanticsMap as UiSemanticsMap$1, UiSemanticsPatch, UiSemanticsRecord, UiSemanticsRecord as UiSemanticsRecord$1, UiSemanticsUpdate, UiShortcutRegistry, UiSpringSpec, UiSpringToken, UiThemeExtension, UiTouchScroller, UiWheelController, VideoClock, VideoResolver, markInstant, markNow, measureSpan, performanceMarksEnabled, setPerformanceMarks as setPerformanceMarks$1 } from "gesso-core";
4
4
  //#region src/service/ServiceRegistry.d.ts
5
5
  /**
6
6
  * The runtime services a component may inject.
@@ -1379,6 +1379,16 @@ interface OverlayEntry {
1379
1379
  readonly right?: number;
1380
1380
  readonly bottom?: number;
1381
1381
  readonly left?: number;
1382
+ /**
1383
+ * A point to open beside, relative to the viewport: where a context
1384
+ * menu was asked for. Placed as an anchor of no size would be, with
1385
+ * `placement`, so an entry that would run off an edge flips or shifts
1386
+ * to stay on screen — which `top` and `left` do not do.
1387
+ */
1388
+ readonly point?: {
1389
+ readonly x: number;
1390
+ readonly y: number;
1391
+ };
1382
1392
  /**
1383
1393
  * Centre an unanchored entry in the viewport along an axis.
1384
1394
  *
@@ -1871,6 +1881,10 @@ type ShellRequest = {
1871
1881
  op: ShellStorageOp;
1872
1882
  key: string;
1873
1883
  value?: string;
1884
+ } | {
1885
+ type: 'file';
1886
+ id: number;
1887
+ request: ShellFileRequest;
1874
1888
  } | {
1875
1889
  type: 'history';
1876
1890
  action: 'push' | 'replace';
@@ -1880,6 +1894,108 @@ type ShellRequest = {
1880
1894
  action: 'back' | 'forward';
1881
1895
  url?: undefined;
1882
1896
  };
1897
+ /**
1898
+ * A kind of file a picker offers, as the File System Access API and a
1899
+ * file input both understand it.
1900
+ *
1901
+ * `extensions` include the dot (`.csv`), because that is the form both
1902
+ * APIs take and a spelling this layer translated would be one more
1903
+ * place for the two to disagree.
1904
+ */
1905
+ interface ShellFileType {
1906
+ readonly description: string;
1907
+ readonly mediaType: string;
1908
+ readonly extensions: readonly string[];
1909
+ }
1910
+ /**
1911
+ * What the shell is asked to do with files.
1912
+ *
1913
+ * `handle` is a number the shell hands out for a file somebody picked
1914
+ * — the `FileSystemFileHandle` itself cannot leave the main thread,
1915
+ * since nothing that is not plain data crosses the barrier. The shell
1916
+ * keeps the handle and remembers it across reloads, so a number from
1917
+ * yesterday's session still names yesterday's file.
1918
+ */
1919
+ type ShellFileRequest =
1920
+ /** Show an open picker. */
1921
+ {
1922
+ readonly op: 'open';
1923
+ readonly accept: readonly ShellFileType[];
1924
+ readonly multiple: boolean;
1925
+ } |
1926
+ /** Read a file the shell already has a handle to, asking permission again if it lapsed. */
1927
+ {
1928
+ readonly op: 'reopen';
1929
+ readonly handle: number;
1930
+ } |
1931
+ /**
1932
+ * Write a file: to `handle` when given, and otherwise to wherever a
1933
+ * save picker says — or, where there is no picker, as a download.
1934
+ */
1935
+ {
1936
+ readonly op: 'save';
1937
+ readonly name: string;
1938
+ readonly mediaType: string;
1939
+ readonly text: string;
1940
+ /**
1941
+ * The file's bytes, for one that is not text — a zip, an image.
1942
+ * Written instead of `text` when given; bytes cross the barrier
1943
+ * as they do on the way in, in `ShellFile.bytes`.
1944
+ */
1945
+ readonly bytes?: Uint8Array<ArrayBuffer>;
1946
+ readonly handle?: number;
1947
+ readonly accept: readonly ShellFileType[];
1948
+ } |
1949
+ /** The files the shell remembers, most recently used first. */
1950
+ {
1951
+ readonly op: 'recent';
1952
+ } |
1953
+ /** Stop remembering one. */
1954
+ {
1955
+ readonly op: 'forget';
1956
+ readonly handle: number;
1957
+ };
1958
+ /** One file the shell read. */
1959
+ interface ShellFile {
1960
+ readonly name: string;
1961
+ readonly mediaType: string;
1962
+ readonly lastModified: number;
1963
+ readonly bytes: ArrayBuffer;
1964
+ /** The shell's number for it, or null where the platform gives none (a file input). */
1965
+ readonly handle: number | null;
1966
+ }
1967
+ /** A file the shell remembers. */
1968
+ interface ShellRecentFile {
1969
+ readonly handle: number;
1970
+ readonly name: string;
1971
+ /** When it was last opened or saved, in epoch milliseconds. */
1972
+ readonly used: number;
1973
+ }
1974
+ /**
1975
+ * What the shell made of a file request.
1976
+ *
1977
+ * One record with a field per shape of answer, as `ShellStorageResult`
1978
+ * is and for the same reason. `cancelled` is its own outcome because a
1979
+ * person closing a picker is a decision and not a failure, and an
1980
+ * application that reported it as one would be wrong every time.
1981
+ * `denied` is a permission refused; `unsupported` is a shell with no
1982
+ * way to do it at all.
1983
+ */
1984
+ interface ShellFileResult {
1985
+ readonly outcome: 'ok' | 'cancelled' | 'denied' | 'unsupported' | 'failed';
1986
+ /** What `open` and `reopen` read. */
1987
+ readonly files: readonly ShellFile[];
1988
+ /** Where `save` wrote: `'file'` through a handle, `'download'` without one. */
1989
+ readonly saved: {
1990
+ readonly name: string;
1991
+ readonly handle: number | null;
1992
+ readonly via: 'file' | 'download';
1993
+ } | null;
1994
+ /** What `recent` lists. */
1995
+ readonly recent: readonly ShellRecentFile[];
1996
+ /** Why it did not answer, as a message; null when it did. */
1997
+ readonly error: string | null;
1998
+ }
1883
1999
  /** The four things `localStorage` is asked for; see `ShellStorage`. */
1884
2000
  type ShellStorageOp = 'read' | 'write' | 'remove' | 'keys';
1885
2001
  /**
@@ -1919,6 +2035,9 @@ declare class ShellService {
1919
2035
  /** Storage requests asked for and not yet answered, by the id sent with each. */
1920
2036
  private readonly stores;
1921
2037
  private nextStorageId;
2038
+ /** File requests asked for and not yet answered, by the id sent with each. */
2039
+ private readonly files;
2040
+ private nextFileId;
1922
2041
  /**
1923
2042
  * The appearance the platform is asking for, as the shell reports it:
1924
2043
  * once when the app starts, and again whenever it changes.
@@ -2090,6 +2209,64 @@ declare class ShellService {
2090
2209
  * than the application being wrong.
2091
2210
  */
2092
2211
  settleStorage(id: number, result: ShellStorageResult): void;
2212
+ /**
2213
+ * Shows an open picker and reads what was picked.
2214
+ *
2215
+ * A request, like a popup, and for the same reason: a picker is the
2216
+ * window's, and a browser shows one only while the click that asked
2217
+ * for it is fresh. Call this from the handler of that click and
2218
+ * before any slow work, and the round trip through a worker is fast
2219
+ * enough. With the File System Access API each file comes back with
2220
+ * a `handle` the shell remembers; through a file input, which is
2221
+ * what a browser without the API has, `handle` is null and the file
2222
+ * cannot be saved back to.
2223
+ */
2224
+ openFiles(options?: {
2225
+ readonly accept?: readonly ShellFileType[];
2226
+ readonly multiple?: boolean;
2227
+ }): Promise<ShellFileResult>;
2228
+ /**
2229
+ * Reads a file the shell has a handle to — from `recentFiles`, or
2230
+ * from an earlier `openFiles` or `saveFile` — asking for permission
2231
+ * again when the browser has let it lapse, which it does across a
2232
+ * reload. Asking needs a gesture, so this belongs in a click handler
2233
+ * too.
2234
+ */
2235
+ reopenFile(handle: number): Promise<ShellFileResult>;
2236
+ /**
2237
+ * Writes text, or bytes, to a file.
2238
+ *
2239
+ * With `handle`, to that file, which is Save; without one, to
2240
+ * wherever a save picker says, which is Save As. A browser with no
2241
+ * picker gets a download instead, and `saved.via` says which
2242
+ * happened, so an application can tell the person where the file
2243
+ * went — and knows it has no handle to save back to next time.
2244
+ */
2245
+ saveFile(options: {
2246
+ readonly name: string;
2247
+ /** What to write, for a text file. */
2248
+ readonly text?: string;
2249
+ /** What to write, for any other kind; taken over `text` when both are given. */
2250
+ readonly bytes?: Uint8Array<ArrayBuffer>;
2251
+ readonly mediaType?: string;
2252
+ readonly handle?: number;
2253
+ readonly accept?: readonly ShellFileType[];
2254
+ }): Promise<ShellFileResult>;
2255
+ /** The files the shell remembers, most recently used first. */
2256
+ recentFiles(): Promise<ShellFileResult>;
2257
+ /** Stops remembering a file. Its handle means nothing afterwards. */
2258
+ forgetFile(handle: number): Promise<ShellFileResult>;
2259
+ /**
2260
+ * The wire under the five above. With no shell installed the answer
2261
+ * is `unsupported`, for the reason a storage request's is `denied`:
2262
+ * a promise left unsettled would hang whatever was waiting on it.
2263
+ */
2264
+ requestFile(request: ShellFileRequest): Promise<ShellFileResult>;
2265
+ /**
2266
+ * Called by the runtime with what the shell did. Not for
2267
+ * applications. An unknown id is ignored, on `settlePopup`'s terms.
2268
+ */
2269
+ settleFile(id: number, result: ShellFileResult): void;
2093
2270
  }
2094
2271
  //#endregion
2095
2272
  //#region src/app/AnimationService.d.ts
@@ -3184,16 +3361,6 @@ interface GessoRuntimeOptions {
3184
3361
  height?: number;
3185
3362
  dpr?: number;
3186
3363
  }
3187
- /**
3188
- * The whole UI, with no reference to the DOM.
3189
- *
3190
- * Owns the component runtime, retained graph, layout engine, input
3191
- * controllers, scheduler and renderer. Everything here runs happily
3192
- * in a Worker: the only things it cannot do for itself are obtain a
3193
- * canvas and learn about size and input, which is exactly the split
3194
- * between this class and its two hosts — GessoApp on the main thread
3195
- * and renderRoot() in a render worker.
3196
- */
3197
3364
  declare class GessoRuntime {
3198
3365
  readonly services: ServiceRegistry;
3199
3366
  readonly channels: ChannelRegistry;
@@ -3339,6 +3506,8 @@ declare class GessoRuntime {
3339
3506
  private semanticsStale;
3340
3507
  private lastEditingState;
3341
3508
  private shellListener;
3509
+ /** Shell requests made before `onShellRequest` gave them somewhere to go; see there. */
3510
+ private heldShellRequests;
3342
3511
  private audioListener;
3343
3512
  private caretTimer;
3344
3513
  private scrollbarTimer;
@@ -3683,6 +3852,11 @@ declare class GessoRuntime {
3683
3852
  * carries its request's id for the same reason the first does.
3684
3853
  */
3685
3854
  settleStorage(id: number, result: ShellStorageResult): void;
3855
+ /**
3856
+ * Reports what the shell did with a file request, settling the
3857
+ * promise `ShellService.requestFile` returned.
3858
+ */
3859
+ settleFile(id: number, result: ShellFileResult): void;
3686
3860
  /** Whether the runtime is currently honouring a reduced-motion preference. */
3687
3861
  get reducedMotion(): boolean;
3688
3862
  /** The appearance the shell last reported; `light` until it says otherwise. */
@@ -3873,6 +4047,15 @@ declare class GessoRuntime {
3873
4047
  * through the focus manager, which means an AT cannot escape an open
3874
4048
  * focus trap any more than Tab can.
3875
4049
  */
4050
+ /**
4051
+ * Files from outside the application, dragged over it or dropped.
4052
+ *
4053
+ * Handed to the tree's drag session, which turns them into a drag
4054
+ * like any other, so a zone that accepts `EXTERNAL_FILES` answers
4055
+ * the drop exactly as it answers one from inside. A drop that
4056
+ * arrives before there is a tree has nowhere to land and is dropped.
4057
+ */
4058
+ applyFileDrop(message: UiFileDropMessage): void;
3876
4059
  applySemanticsAction(action: UiSemanticsAction): void;
3877
4060
  /**
3878
4061
  * An action on an inline link, which is a run and not a node.
@@ -4315,11 +4498,18 @@ type ShellToRuntimeMessage = {
4315
4498
  */
4316
4499
  wheelDeltaY?: number;
4317
4500
  at?: number;
4318
- } | {
4501
+ } |
4502
+ /**
4503
+ * `textFollows`: whether the key reached the editing proxy, which
4504
+ * turns it into a `beforeinput` of its own. False means the key went
4505
+ * to the canvas and its text, if it has any, is the runtime's to make.
4506
+ */
4507
+ {
4319
4508
  type: 'keyDown';
4320
4509
  key: string;
4321
4510
  modifiers: UiKeyModifiers;
4322
4511
  at?: number;
4512
+ textFollows?: boolean;
4323
4513
  } | {
4324
4514
  type: 'keyUp';
4325
4515
  key: string;
@@ -4458,6 +4648,16 @@ type ShellToRuntimeMessage = {
4458
4648
  type: 'storageResult';
4459
4649
  id: number;
4460
4650
  result: ShellStorageResult;
4651
+ } |
4652
+ /**
4653
+ * What the shell did with a file request (ShellService.openFiles and
4654
+ * its siblings), under the request's `id`. A file read comes back
4655
+ * with its bytes, transferred rather than copied.
4656
+ */
4657
+ {
4658
+ type: 'fileResult';
4659
+ id: number;
4660
+ result: ShellFileResult;
4461
4661
  } | {
4462
4662
  type: 'inspector';
4463
4663
  enabled: boolean;
@@ -4477,6 +4677,13 @@ type ShellToRuntimeMessage = {
4477
4677
  type: 'semanticsAction';
4478
4678
  action: UiSemanticsAction;
4479
4679
  } |
4680
+ /**
4681
+ * Files dragged over the canvas from outside the application, and
4682
+ * let go on it: `UiDragSession.applyFileDrop` turns the four phases
4683
+ * into a drag like any other. On `drop` the files' bytes ride along
4684
+ * and are transferred rather than copied; see `attachFileDrop`.
4685
+ */
4686
+ UiFileDropMessage |
4480
4687
  /**
4481
4688
  * What the shell's audio element is doing: on every state change and
4482
4689
  * about once a second while it plays. The element lives on the shell
@@ -4669,6 +4876,17 @@ type RuntimeToShellMessage = {
4669
4876
  key: string;
4670
4877
  value?: string;
4671
4878
  } |
4879
+ /**
4880
+ * Open, save, reopen, list or forget files (ShellService.openFiles
4881
+ * and its siblings). Answered with `fileResult`. Sent at once, like
4882
+ * `popup`, because a picker is shown only while the click that asked
4883
+ * for it is fresh.
4884
+ */
4885
+ {
4886
+ type: 'file';
4887
+ id: number;
4888
+ request: ShellFileRequest;
4889
+ } |
4672
4890
  /** The router navigated; the shell owns the address bar (RouterService). */
4673
4891
  {
4674
4892
  type: 'history';
@@ -5202,6 +5420,19 @@ interface WorkerAppOptions {
5202
5420
  * app's own KeyDown listener claimed.
5203
5421
  */
5204
5422
  interceptFind?: boolean;
5423
+ /**
5424
+ * Cancel the browser's default for any key this answers true for —
5425
+ * Ctrl/Cmd+S for an app with a Save of its own, Ctrl/Cmd+O for one
5426
+ * with an Open. `interceptFind` for any shortcut, on its terms: the
5427
+ * shell has to decide before the worker has heard of the key, so the
5428
+ * decision is the application's, made here on the main thread, and a
5429
+ * predicate rather than a list so it can say "Ctrl or Cmd" in one
5430
+ * line.
5431
+ *
5432
+ * Called for every keydown that reaches the shell, so it should be a
5433
+ * comparison and nothing more.
5434
+ */
5435
+ interceptKey?: (event: KeyboardEvent) => boolean;
5205
5436
  /**
5206
5437
  * The appearance the application is told about: `auto` (the default)
5207
5438
  * follows `prefers-color-scheme`, `light` and `dark` override it.
@@ -5247,6 +5478,8 @@ declare class WorkerApp {
5247
5478
  private host;
5248
5479
  private resizeObserver;
5249
5480
  private detachInput;
5481
+ /** Pickers and remembered handles, made on the first file request. */
5482
+ private files;
5250
5483
  private proxy;
5251
5484
  private mirror;
5252
5485
  /** The one audio element, behind `AudioService`; see `AudioSink`. */
@@ -5340,6 +5573,17 @@ declare class WorkerApp {
5340
5573
  private handleWorkerFailure;
5341
5574
  /** Reports an error, to `onError` or to the console it defaults to. */
5342
5575
  private report;
5576
+ /**
5577
+ * A key, to the worker, saying whether its text will follow it.
5578
+ *
5579
+ * Only the proxy turns a key into text. The proxy takes DOM focus when
5580
+ * the worker reports a focused editable, which is a round trip — so a
5581
+ * key typed in the gap, after an editable has the focus in the worker
5582
+ * and before the proxy has it here, reaches the canvas, and the text
5583
+ * that key would have produced never exists. The worker is told, and
5584
+ * inserts the key itself. Typing quickly into a spreadsheet cell that
5585
+ * the first letter opens lives in exactly that gap.
5586
+ */
5343
5587
  private forwardKeyDown;
5344
5588
  private forwardKeyUp;
5345
5589
  /**
@@ -5835,6 +6079,9 @@ declare class GessoApp {
5835
6079
  private mirror;
5836
6080
  private history;
5837
6081
  private detachVisibility;
6082
+ private detachFileDrop;
6083
+ /** Pickers and remembered handles, made on the first file request. */
6084
+ private files;
5838
6085
  private detachFullscreen;
5839
6086
  private fullscreen;
5840
6087
  private detachReducedMotion;
@@ -7833,5 +8080,5 @@ declare class RenderWorkerApp {
7833
8080
  private initialize;
7834
8081
  }
7835
8082
  //#endregion
7836
- export { StorageOutcome as $, formatNodePath as $n, Each as $r, FontFamilyDeclaration as $t, PresenceProps as A, AnimateOptions as An, portHandle as Ar, ChannelErrorEntry as At, PersistedState as B, ColorSchemePreference as Bn, Define as Br, RuntimeErrorSource as Bt, FocusService as C, computed as Ci, AudioAction as Cn, MessageEndpoint as Cr, WorkerAppOptions as Ct, observeMediaQuery as D, ServiceRegistry as Di, AudioService as Dn, isHubMessage as Dr, createShellHistory as Dt, FindService as E, derive as Ei, AudioSample as En, WorkerHandle as Er, ShellHistoryOptions as Et, AudioSinkOutput as F, ShellRequest as Fn, ChannelRegistry as Fr, FrameEntry as Ft, IndexedDbStorageOptions as G, UiNodeReport as Gn, ControlledValue as Gr, GessoRuntime as Gt, ShellStorage as H, BoundStream as Hn, Input as Hr, ShellToRuntimeMessage as Ht, MediaSessionLike as I, ShellService as In, ChannelSource as Ir, PatchEntry as It, OpfsStorage as J, UiPropReport as Jn, themeTokenCell as Jr, RuntimeInput as Jt, OpfsDirectory as K, UiOwnerReport as Kn, controlled as Kr, GessoRuntimeOptions as Kt, audioClock as L, ShellStorageOp as Ln, ProvidedChannel as Lr, UiTreeNode as Lt, AudioElementLike as M, SpringOptions as Mn, workerHandle as Mr, ConsoleEntry as Mt, AudioSink as N, UiDuration as Nn, findUnplainPath as Nr, DevtoolsEvent as Nt, observeReducedMotion as O, AudioState as On, isPortErrorMessage as Or, ActionCause as Ot, AudioSinkOptions as P, UiEasingChoice as Pn, requirePlainData as Pr, DevtoolsRequest as Pt, StorageAdapter as Q, formatAge as Qn, show as Qr, FontFaceLike as Qt, FrameService as R, ShellStorageResult as Rn, provide as Rr, UiTreeSnapshot as Rt, writeClipboard as S, ReadSource as Si, parseUrl as Sn, APPLICATION_WORKER as Sr, WorkerApp as St, TextService as T, Equality as Ti, AudioRequest as Tn, PortHost as Tr, ShellHistoryMode as Tt, ShellStorageOptions as U, NodePathTarget as Un, Output as Ur, FrameMetrics as Ut, persisted as V, observeColorScheme as Vn, Inject as Vr, RuntimeToShellMessage as Vt, IndexedDbStorage as W, UiEnvironmentReport as Wn, ControlledOptions as Wr, FramePhaseTimings as Wt, OpfsWritable as X, UiStreamReport as Xn, Show as Xr, UiFramePhase as Xt, OpfsStorageOptions as Y, UiSemanticsReport as Yn, bind as Yr, UI_FRAME_PHASES as Yt, MemoryStorage as Z, describeStream as Zn, ShowProps as Zr, FontFaceDeclaration as Zt, EditingMirrorTarget as _, FanOut as _i, route as _n, serve as _r, createSyncApp as _t, UiRole as a, MutateOptions as ai, RouteAnswer as an, OverlayLayer as ar, UndoShortcutOptions as at, EditingProxy as b, ComputedCell as bi, buildPath as bn, ChannelRegistryHandle as br, createApp as bt, UiSemanticsPatch as c, Resource as ci, RouterRoutes as cn, OverlayService as cr, undoable as ct, markNow as d, ResourceStatus as di, OutletProps as dn, FrameworkChild as dr, UndoTransaction as dt, EachKey as ei, FontFamilyStatus as en, formatNodeReport as er, StorageRead as et, measureSpan as f, resource as fi, RouteContext as fn, isComponentElement as fr, ShellLocalStore as ft, renderRoot as g, FanKey as gi, RouteTarget as gn, ServedChannel as gr, GessoAppOptions as gt, RenderWorkerApp as h, FanCell as hi, RouteOptions as hn, pickKeys as hr, GessoApp as ht, UI_SEMANTIC_STATES as i, throttled as ii, MediaService as in, ComponentHost as ir, storageReadValue as it, RouterOutlet as j, AnimationService as jn, servePorts as jr, CommandEntry as jt, Presence as k, AudioStatus as kn, isPortHandshake as kr, ActionEntry as kt, UiSemanticsRecord$1 as l, ResourceOptions as li, RouterService as ln, createComponent as lr, UndoStack as lt, setPerformanceMarks$1 as m, select as mi, RouteGuard as mn, pick as mr, shellStorageDenied as mt, MARK_PREFIX as n, each as ni, FontService as nn, printPropValue as nr, storageErrorMessage as nt, UiSemanticState as o, Mutation as oi, RouteMatch as on, OverlayEntry as or, registerUndoShortcuts as ot, performanceMarksEnabled as p, SelectOptions as pi, RouteDefinition as pn, structurallyEqual as pr, performShellStorage as pt, OpfsFileHandle as q, UiPropOrigin as qn, ThemeTokenCell as qr, RendererChoice as qt, UI_ROLES as r, debounced as ri, MediaOptions as rn, ComponentHostResolver as rr, storageReadFailure as rt, UiSemanticsMap$1 as s, mutate as si, RouterHistorySink as sn, OverlayPlacement as sr, UndoableOptions as st, EditingState$1 as t, EachProps as ti, FontHost as tn, formatStream as tr, classifyStorageError as tt, markInstant as u, ResourceState as ui, RouteState as un, ComponentElement as ur, UndoStackOptions as ut, SemanticsMirror as v, FanOutOptions as vi, to as vn, serveChannels as vr, GessoAppBuilder as vt, EditingService as w, DeriveOptions as wi, AudioMetadata as wn, PortHandshake as wr, ShellHistory as wt, EditingProxySink as x, ComputedOptions as xi, formatUrl as xn, createChannelRegistry as xr, AppLogicEndpoint as xt, SemanticsMirrorSink as y, fanOut as yi, RouteParams as yn, ChannelRegistration as yr, CreateAppOptions as yt, PersistedOptions as z, ColorScheme as zn, Channel as zr, treeText as zt };
7837
- //# sourceMappingURL=index-D3SBTLAB.d.ts.map
8083
+ export { StorageOutcome as $, UiPropReport as $n, themeTokenCell as $r, FontFamilyDeclaration as $t, PresenceProps as A, Equality as Ai, AnimateOptions as An, PortHost as Ar, ChannelErrorEntry as At, PersistedState as B, ShellRequest as Bn, ChannelRegistry as Br, RuntimeErrorSource as Bt, FocusService as C, FanOutOptions as Ci, AudioAction as Cn, serveChannels as Cr, WorkerAppOptions as Ct, observeMediaQuery as D, ReadSource as Di, AudioService as Dn, APPLICATION_WORKER as Dr, createShellHistory as Dt, FindService as E, ComputedOptions as Ei, AudioSample as En, createChannelRegistry as Er, ShellHistoryOptions as Et, AudioSinkOutput as F, ShellFile as Fn, portHandle as Fr, FrameEntry as Ft, IndexedDbStorageOptions as G, ColorSchemePreference as Gn, Define as Gr, GessoRuntime as Gt, ShellStorage as H, ShellStorageOp as Hn, ProvidedChannel as Hr, ShellToRuntimeMessage as Ht, MediaSessionLike as I, ShellFileRequest as In, servePorts as Ir, PatchEntry as It, OpfsStorage as J, NodePathTarget as Jn, Output as Jr, RuntimeInput as Jt, OpfsDirectory as K, observeColorScheme as Kn, Inject as Kr, GessoRuntimeOptions as Kt, audioClock as L, ShellFileResult as Ln, workerHandle as Lr, UiTreeNode as Lt, AudioElementLike as M, ServiceRegistry as Mi, SpringOptions as Mn, isHubMessage as Mr, ConsoleEntry as Mt, AudioSink as N, UiDuration as Nn, isPortErrorMessage as Nr, DevtoolsEvent as Nt, observeReducedMotion as O, computed as Oi, AudioState as On, MessageEndpoint as Or, ActionCause as Ot, AudioSinkOptions as P, UiEasingChoice as Pn, isPortHandshake as Pr, DevtoolsRequest as Pt, StorageAdapter as Q, UiPropOrigin as Qn, ThemeTokenCell as Qr, FontFaceLike as Qt, FrameService as R, ShellFileType as Rn, findUnplainPath as Rr, UiTreeSnapshot as Rt, writeClipboard as S, FanOut as Si, parseUrl as Sn, serve as Sr, WorkerApp as St, TextService as T, ComputedCell as Ti, AudioRequest as Tn, ChannelRegistryHandle as Tr, ShellHistoryMode as Tt, ShellStorageOptions as U, ShellStorageResult as Un, provide as Ur, FrameMetrics as Ut, persisted as V, ShellService as Vn, ChannelSource as Vr, RuntimeToShellMessage as Vt, IndexedDbStorage as W, ColorScheme as Wn, Channel as Wr, FramePhaseTimings as Wt, OpfsWritable as X, UiNodeReport as Xn, ControlledValue as Xr, UiFramePhase as Xt, OpfsStorageOptions as Y, UiEnvironmentReport as Yn, ControlledOptions as Yr, UI_FRAME_PHASES as Yt, MemoryStorage as Z, UiOwnerReport as Zn, controlled as Zr, FontFaceDeclaration as Zt, EditingMirrorTarget as _, resource as _i, route as _n, isComponentElement as _r, createSyncApp as _t, UiRole as a, EachKey as ai, RouteAnswer as an, formatNodeReport as ar, UndoShortcutOptions as at, EditingProxy as b, FanCell as bi, buildPath as bn, pickKeys as br, createApp as bt, UiSemanticsPatch as c, debounced as ci, RouterRoutes as cn, ComponentHostResolver as cr, undoable as ct, markNow as d, Mutation as di, OutletProps as dn, OverlayEntry as dr, UndoTransaction as dt, bind as ei, FontFamilyStatus as en, UiSemanticsReport as er, StorageRead as et, measureSpan as f, mutate as fi, RouteContext as fn, OverlayPlacement as fr, ShellLocalStore as ft, renderRoot as g, ResourceStatus as gi, RouteTarget as gn, FrameworkChild as gr, GessoAppOptions as gt, RenderWorkerApp as h, ResourceState as hi, RouteOptions as hn, ComponentElement as hr, GessoApp as ht, UI_SEMANTIC_STATES as i, Each as ii, MediaService as in, formatNodePath as ir, storageReadValue as it, RouterOutlet as j, derive as ji, AnimationService as jn, WorkerHandle as jr, CommandEntry as jt, Presence as k, DeriveOptions as ki, AudioStatus as kn, PortHandshake as kr, ActionEntry as kt, UiSemanticsRecord$1 as l, throttled as li, RouterService as ln, ComponentHost as lr, UndoStack as lt, setPerformanceMarks$1 as m, ResourceOptions as mi, RouteGuard as mn, createComponent as mr, shellStorageDenied as mt, MARK_PREFIX as n, ShowProps as ni, FontService as nn, describeStream as nr, storageErrorMessage as nt, UiSemanticState as o, EachProps as oi, RouteMatch as on, formatStream as or, registerUndoShortcuts as ot, performanceMarksEnabled as p, Resource as pi, RouteDefinition as pn, OverlayService as pr, performShellStorage as pt, OpfsFileHandle as q, BoundStream as qn, Input as qr, RendererChoice as qt, UI_ROLES as r, show as ri, MediaOptions as rn, formatAge as rr, storageReadFailure as rt, UiSemanticsMap$1 as s, each as si, RouterHistorySink as sn, printPropValue as sr, UndoableOptions as st, EditingState$1 as t, Show as ti, FontHost as tn, UiStreamReport as tr, classifyStorageError as tt, markInstant as u, MutateOptions as ui, RouteState as un, OverlayLayer as ur, UndoStackOptions as ut, SemanticsMirror as v, SelectOptions as vi, to as vn, structurallyEqual as vr, GessoAppBuilder as vt, EditingService as w, fanOut as wi, AudioMetadata as wn, ChannelRegistration as wr, ShellHistory as wt, EditingProxySink as x, FanKey as xi, formatUrl as xn, ServedChannel as xr, AppLogicEndpoint as xt, SemanticsMirrorSink as y, select as yi, RouteParams as yn, pick as yr, CreateAppOptions as yt, PersistedOptions as z, ShellRecentFile as zn, requirePlainData as zr, treeText as zt };
8084
+ //# sourceMappingURL=index-Bdp1v_HO.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { A as bounds, B as output, C as CommandMap, D as defineChannel, E as channel, F as OutputTarget, H as internalState, I as ReadableCell, L as input, M as EmitValue, N as InputCell, O as viewKeys, P as OutputCell, R as into, S as Command, T as ViewOf, U as Component, V as InternalState, _ as applyPatch, a as ComponentType, b as ChannelSpec, c as isClassComponent, d as ChannelHostMessage, f as ChannelPort, g as PatchPath, h as Patch, i as ComponentProps, j as EmitArgs, k as BoundsCell, l as ChannelReplica, m as isChannelHostMessage, o as FunctionComponent, p as isChannelClientMessage, r as ComponentContext, s as Inputs, t as ClassComponent, u as ChannelClientMessage, v as applyPatches, w as CommandsOf, x as ChannelToken, y as diffProjection, z as isOutputTarget } from "./FunctionComponent-DAyf5HQ6.js";
2
- import { $ as StorageOutcome, $n as formatNodePath, $r as Each, $t as FontFamilyDeclaration, A as PresenceProps, An as AnimateOptions, Ar as portHandle, At as ChannelErrorEntry, B as PersistedState, Bn as ColorSchemePreference, Br as Define, Bt as RuntimeErrorSource, C as FocusService, Ci as computed, Cn as AudioAction, Cr as MessageEndpoint, Ct as WorkerAppOptions, D as observeMediaQuery, Di as ServiceRegistry, Dn as AudioService, Dr as isHubMessage, Dt as createShellHistory, E as FindService, Ei as derive, En as AudioSample, Er as WorkerHandle, Et as ShellHistoryOptions, F as AudioSinkOutput, Fn as ShellRequest, Fr as ChannelRegistry, Ft as FrameEntry, G as IndexedDbStorageOptions, Gn as UiNodeReport, Gr as ControlledValue, Gt as GessoRuntime, H as ShellStorage, Hn as BoundStream, Hr as Input, Ht as ShellToRuntimeMessage, I as MediaSessionLike, In as ShellService, Ir as ChannelSource, It as PatchEntry, J as OpfsStorage, Jn as UiPropReport, Jr as themeTokenCell, Jt as RuntimeInput, K as OpfsDirectory, Kn as UiOwnerReport, Kr as controlled, Kt as GessoRuntimeOptions, L as audioClock, Ln as ShellStorageOp, Lr as ProvidedChannel, Lt as UiTreeNode, M as AudioElementLike, Mn as SpringOptions, Mr as workerHandle, Mt as ConsoleEntry, N as AudioSink, Nn as UiDuration, Nr as findUnplainPath, Nt as DevtoolsEvent, O as observeReducedMotion, On as AudioState, Or as isPortErrorMessage, Ot as ActionCause, P as AudioSinkOptions, Pn as UiEasingChoice, Pr as requirePlainData, Pt as DevtoolsRequest, Q as StorageAdapter, Qn as formatAge, Qr as show, Qt as FontFaceLike, R as FrameService, Rn as ShellStorageResult, Rr as provide, Rt as UiTreeSnapshot, S as writeClipboard, Si as ReadSource, Sn as parseUrl, Sr as APPLICATION_WORKER, St as WorkerApp, T as TextService, Ti as Equality, Tn as AudioRequest, Tr as PortHost, Tt as ShellHistoryMode, U as ShellStorageOptions, Un as NodePathTarget, Ur as Output, Ut as FrameMetrics, V as persisted, Vn as observeColorScheme, Vr as Inject, Vt as RuntimeToShellMessage, W as IndexedDbStorage, Wn as UiEnvironmentReport, Wr as ControlledOptions, Wt as FramePhaseTimings, X as OpfsWritable, Xn as UiStreamReport, Xr as Show, Xt as UiFramePhase, Y as OpfsStorageOptions, Yn as UiSemanticsReport, Yr as bind, Yt as UI_FRAME_PHASES, Z as MemoryStorage, Zn as describeStream, Zr as ShowProps, Zt as FontFaceDeclaration, _ as EditingMirrorTarget, _i as FanOut, _n as route, _r as serve, _t as createSyncApp, a as UiRole, ai as MutateOptions, an as RouteAnswer, ar as OverlayLayer, at as UndoShortcutOptions, b as EditingProxy, bi as ComputedCell, bn as buildPath, br as ChannelRegistryHandle, bt as createApp, c as UiSemanticsPatch, ci as Resource, cn as RouterRoutes, cr as OverlayService, ct as undoable, d as markNow, di as ResourceStatus, dn as OutletProps, dr as FrameworkChild, dt as UndoTransaction, ei as EachKey, en as FontFamilyStatus, er as formatNodeReport, et as StorageRead, f as measureSpan, fi as resource, fn as RouteContext, fr as isComponentElement, ft as ShellLocalStore, g as renderRoot, gi as FanKey, gn as RouteTarget, gr as ServedChannel, gt as GessoAppOptions, h as RenderWorkerApp, hi as FanCell, hn as RouteOptions, hr as pickKeys, ht as GessoApp, i as UI_SEMANTIC_STATES, ii as throttled, in as MediaService, ir as ComponentHost, it as storageReadValue, j as RouterOutlet, jn as AnimationService, jr as servePorts, jt as CommandEntry, k as Presence, kn as AudioStatus, kr as isPortHandshake, kt as ActionEntry, l as UiSemanticsRecord, li as ResourceOptions, ln as RouterService, lr as createComponent, lt as UndoStack, m as setPerformanceMarks, mi as select, mn as RouteGuard, mr as pick, mt as shellStorageDenied, n as MARK_PREFIX, ni as each, nn as FontService, nr as printPropValue, nt as storageErrorMessage, o as UiSemanticState, oi as Mutation, on as RouteMatch, or as OverlayEntry, ot as registerUndoShortcuts, p as performanceMarksEnabled, pi as SelectOptions, pn as RouteDefinition, pr as structurallyEqual, pt as performShellStorage, q as OpfsFileHandle, qn as UiPropOrigin, qr as ThemeTokenCell, qt as RendererChoice, r as UI_ROLES, ri as debounced, rn as MediaOptions, rr as ComponentHostResolver, rt as storageReadFailure, s as UiSemanticsMap, si as mutate, sn as RouterHistorySink, sr as OverlayPlacement, st as UndoableOptions, t as EditingState, ti as EachProps, tn as FontHost, tr as formatStream, tt as classifyStorageError, u as markInstant, ui as ResourceState, un as RouteState, ur as ComponentElement, ut as UndoStackOptions, v as SemanticsMirror, vi as FanOutOptions, vn as to, vr as serveChannels, vt as GessoAppBuilder, w as EditingService, wi as DeriveOptions, wn as AudioMetadata, wr as PortHandshake, wt as ShellHistory, x as EditingProxySink, xi as ComputedOptions, xn as formatUrl, xr as createChannelRegistry, xt as AppLogicEndpoint, y as SemanticsMirrorSink, yi as fanOut, yn as RouteParams, yr as ChannelRegistration, yt as CreateAppOptions, z as PersistedOptions, zn as ColorScheme, zr as Channel, zt as treeText } from "./index-D3SBTLAB.js";
3
- export { APPLICATION_WORKER, type ActionCause, type ActionEntry, type AnimateOptions, AnimationService, type AppLogicEndpoint, type AudioAction, type AudioElementLike, type AudioMetadata, type AudioRequest, type AudioSample, AudioService, AudioSink, type AudioSinkOptions, type AudioSinkOutput, type AudioState, type AudioStatus, type BoundStream, BoundsCell, Channel, type ChannelClientMessage, type ChannelErrorEntry, type ChannelHostMessage, type ChannelPort, type ChannelRegistration, ChannelRegistry, type ChannelRegistryHandle, ChannelReplica, type ChannelSource, type ChannelSpec, type ChannelToken, type ClassComponent, type ColorScheme, type ColorSchemePreference, type Command, type CommandEntry, type CommandMap, type CommandsOf, Component, type ComponentContext, type ComponentElement, ComponentHost, ComponentHostResolver, type ComponentProps, type ComponentType, ComputedCell, type ComputedOptions, type ConsoleEntry, type ControlledOptions, type ControlledValue, type CreateAppOptions, Define, type DeriveOptions, type DevtoolsEvent, type DevtoolsRequest, Each, type EachKey, type EachProps, type EditingMirrorTarget, EditingProxy, type EditingProxySink, EditingService, type EditingState, type EmitArgs, type EmitValue, type Equality, FanCell, type FanKey, FanOut, type FanOutOptions, FindService, FocusService, type FontFaceDeclaration, type FontFaceLike, type FontFamilyDeclaration, type FontFamilyStatus, type FontHost, FontService, type FrameEntry, type FrameMetrics, type FramePhaseTimings, FrameService, type FrameworkChild, type FunctionComponent, GessoApp, GessoAppBuilder, type GessoAppOptions, GessoRuntime, type GessoRuntimeOptions, IndexedDbStorage, type IndexedDbStorageOptions, Inject, Input, InputCell, type Inputs, InternalState, MARK_PREFIX, type MediaOptions, MediaService, type MediaSessionLike, MemoryStorage, type MessageEndpoint, type MutateOptions, type Mutation, type NodePathTarget, type OpfsDirectory, type OpfsFileHandle, OpfsStorage, type OpfsStorageOptions, type OpfsWritable, type OutletProps, Output, type OutputCell, type OutputTarget, type OverlayEntry, OverlayLayer, type OverlayPlacement, OverlayService, type Patch, type PatchEntry, type PatchPath, type PersistedOptions, PersistedState, type PortHandshake, type PortHost, Presence, type PresenceProps, ProvidedChannel, type ReadSource, type ReadableCell, RenderWorkerApp, type RendererChoice, Resource, type ResourceOptions, type ResourceState, type ResourceStatus, type RouteAnswer, type RouteContext, type RouteDefinition, type RouteGuard, type RouteMatch, type RouteOptions, type RouteParams, RouteState, type RouteTarget, type RouterHistorySink, RouterOutlet, type RouterRoutes, RouterService, type RuntimeErrorSource, type RuntimeInput, type RuntimeToShellMessage, type SelectOptions, SemanticsMirror, type SemanticsMirrorSink, type ServedChannel, ServiceRegistry, type ShellHistory, type ShellHistoryMode, type ShellHistoryOptions, type ShellLocalStore, type ShellRequest, ShellService, ShellStorage, type ShellStorageOp, type ShellStorageOptions, type ShellStorageResult, type ShellToRuntimeMessage, Show, type ShowProps, type SpringOptions, type StorageAdapter, type StorageOutcome, type StorageRead, TextService, ThemeTokenCell, UI_FRAME_PHASES, UI_ROLES, UI_SEMANTIC_STATES, type UiDuration, type UiEasingChoice, type UiEnvironmentReport, type UiFramePhase, type UiNodeReport, type UiOwnerReport, type UiPropOrigin, type UiPropReport, type UiRole, type UiSemanticState, type UiSemanticsMap, type UiSemanticsPatch, type UiSemanticsRecord, type UiSemanticsReport, type UiStreamReport, type UiTreeNode, type UiTreeSnapshot, type UndoShortcutOptions, UndoStack, type UndoStackOptions, type UndoTransaction, type UndoableOptions, type ViewOf, WorkerApp, type WorkerAppOptions, type WorkerHandle, applyPatch, applyPatches, audioClock, bind, bounds, buildPath, channel, classifyStorageError, computed, controlled, createApp, createChannelRegistry, createComponent, createShellHistory, createSyncApp, debounced, defineChannel, derive, describeStream, diffProjection, each, fanOut, findUnplainPath, formatAge, formatNodePath, formatNodeReport, formatStream, formatUrl, input, internalState, into, isChannelClientMessage, isChannelHostMessage, isClassComponent, isComponentElement, isHubMessage, isOutputTarget, isPortErrorMessage, isPortHandshake, markInstant, markNow, measureSpan, mutate, observeColorScheme, observeMediaQuery, observeReducedMotion, output, parseUrl, performShellStorage, performanceMarksEnabled, persisted, pick, pickKeys, portHandle, printPropValue, provide, registerUndoShortcuts, renderRoot, requirePlainData, resource, route, select, serve, serveChannels, servePorts, setPerformanceMarks, shellStorageDenied, show, storageErrorMessage, storageReadFailure, storageReadValue, structurallyEqual, themeTokenCell, throttled, to, treeText, undoable, viewKeys, workerHandle, writeClipboard };
2
+ import { $ as StorageOutcome, $n as UiPropReport, $r as themeTokenCell, $t as FontFamilyDeclaration, A as PresenceProps, Ai as Equality, An as AnimateOptions, Ar as PortHost, At as ChannelErrorEntry, B as PersistedState, Bn as ShellRequest, Br as ChannelRegistry, Bt as RuntimeErrorSource, C as FocusService, Ci as FanOutOptions, Cn as AudioAction, Cr as serveChannels, Ct as WorkerAppOptions, D as observeMediaQuery, Di as ReadSource, Dn as AudioService, Dr as APPLICATION_WORKER, Dt as createShellHistory, E as FindService, Ei as ComputedOptions, En as AudioSample, Er as createChannelRegistry, Et as ShellHistoryOptions, F as AudioSinkOutput, Fn as ShellFile, Fr as portHandle, Ft as FrameEntry, G as IndexedDbStorageOptions, Gn as ColorSchemePreference, Gr as Define, Gt as GessoRuntime, H as ShellStorage, Hn as ShellStorageOp, Hr as ProvidedChannel, Ht as ShellToRuntimeMessage, I as MediaSessionLike, In as ShellFileRequest, Ir as servePorts, It as PatchEntry, J as OpfsStorage, Jn as NodePathTarget, Jr as Output, Jt as RuntimeInput, K as OpfsDirectory, Kn as observeColorScheme, Kr as Inject, Kt as GessoRuntimeOptions, L as audioClock, Ln as ShellFileResult, Lr as workerHandle, Lt as UiTreeNode, M as AudioElementLike, Mi as ServiceRegistry, Mn as SpringOptions, Mr as isHubMessage, Mt as ConsoleEntry, N as AudioSink, Nn as UiDuration, Nr as isPortErrorMessage, Nt as DevtoolsEvent, O as observeReducedMotion, Oi as computed, On as AudioState, Or as MessageEndpoint, Ot as ActionCause, P as AudioSinkOptions, Pn as UiEasingChoice, Pr as isPortHandshake, Pt as DevtoolsRequest, Q as StorageAdapter, Qn as UiPropOrigin, Qr as ThemeTokenCell, Qt as FontFaceLike, R as FrameService, Rn as ShellFileType, Rr as findUnplainPath, Rt as UiTreeSnapshot, S as writeClipboard, Si as FanOut, Sn as parseUrl, Sr as serve, St as WorkerApp, T as TextService, Ti as ComputedCell, Tn as AudioRequest, Tr as ChannelRegistryHandle, Tt as ShellHistoryMode, U as ShellStorageOptions, Un as ShellStorageResult, Ur as provide, Ut as FrameMetrics, V as persisted, Vn as ShellService, Vr as ChannelSource, Vt as RuntimeToShellMessage, W as IndexedDbStorage, Wn as ColorScheme, Wr as Channel, Wt as FramePhaseTimings, X as OpfsWritable, Xn as UiNodeReport, Xr as ControlledValue, Xt as UiFramePhase, Y as OpfsStorageOptions, Yn as UiEnvironmentReport, Yr as ControlledOptions, Yt as UI_FRAME_PHASES, Z as MemoryStorage, Zn as UiOwnerReport, Zr as controlled, Zt as FontFaceDeclaration, _ as EditingMirrorTarget, _i as resource, _n as route, _r as isComponentElement, _t as createSyncApp, a as UiRole, ai as EachKey, an as RouteAnswer, ar as formatNodeReport, at as UndoShortcutOptions, b as EditingProxy, bi as FanCell, bn as buildPath, br as pickKeys, bt as createApp, c as UiSemanticsPatch, ci as debounced, cn as RouterRoutes, cr as ComponentHostResolver, ct as undoable, d as markNow, di as Mutation, dn as OutletProps, dr as OverlayEntry, dt as UndoTransaction, ei as bind, en as FontFamilyStatus, er as UiSemanticsReport, et as StorageRead, f as measureSpan, fi as mutate, fn as RouteContext, fr as OverlayPlacement, ft as ShellLocalStore, g as renderRoot, gi as ResourceStatus, gn as RouteTarget, gr as FrameworkChild, gt as GessoAppOptions, h as RenderWorkerApp, hi as ResourceState, hn as RouteOptions, hr as ComponentElement, ht as GessoApp, i as UI_SEMANTIC_STATES, ii as Each, in as MediaService, ir as formatNodePath, it as storageReadValue, j as RouterOutlet, ji as derive, jn as AnimationService, jr as WorkerHandle, jt as CommandEntry, k as Presence, ki as DeriveOptions, kn as AudioStatus, kr as PortHandshake, kt as ActionEntry, l as UiSemanticsRecord, li as throttled, ln as RouterService, lr as ComponentHost, lt as UndoStack, m as setPerformanceMarks, mi as ResourceOptions, mn as RouteGuard, mr as createComponent, mt as shellStorageDenied, n as MARK_PREFIX, ni as ShowProps, nn as FontService, nr as describeStream, nt as storageErrorMessage, o as UiSemanticState, oi as EachProps, on as RouteMatch, or as formatStream, ot as registerUndoShortcuts, p as performanceMarksEnabled, pi as Resource, pn as RouteDefinition, pr as OverlayService, pt as performShellStorage, q as OpfsFileHandle, qn as BoundStream, qr as Input, qt as RendererChoice, r as UI_ROLES, ri as show, rn as MediaOptions, rr as formatAge, rt as storageReadFailure, s as UiSemanticsMap, si as each, sn as RouterHistorySink, sr as printPropValue, st as UndoableOptions, t as EditingState, ti as Show, tn as FontHost, tr as UiStreamReport, tt as classifyStorageError, u as markInstant, ui as MutateOptions, un as RouteState, ur as OverlayLayer, ut as UndoStackOptions, v as SemanticsMirror, vi as SelectOptions, vn as to, vr as structurallyEqual, vt as GessoAppBuilder, w as EditingService, wi as fanOut, wn as AudioMetadata, wr as ChannelRegistration, wt as ShellHistory, x as EditingProxySink, xi as FanKey, xn as formatUrl, xr as ServedChannel, xt as AppLogicEndpoint, y as SemanticsMirrorSink, yi as select, yn as RouteParams, yr as pick, yt as CreateAppOptions, z as PersistedOptions, zn as ShellRecentFile, zr as requirePlainData, zt as treeText } from "./index-Bdp1v_HO.js";
3
+ export { APPLICATION_WORKER, type ActionCause, type ActionEntry, type AnimateOptions, AnimationService, type AppLogicEndpoint, type AudioAction, type AudioElementLike, type AudioMetadata, type AudioRequest, type AudioSample, AudioService, AudioSink, type AudioSinkOptions, type AudioSinkOutput, type AudioState, type AudioStatus, type BoundStream, BoundsCell, Channel, type ChannelClientMessage, type ChannelErrorEntry, type ChannelHostMessage, type ChannelPort, type ChannelRegistration, ChannelRegistry, type ChannelRegistryHandle, ChannelReplica, type ChannelSource, type ChannelSpec, type ChannelToken, type ClassComponent, type ColorScheme, type ColorSchemePreference, type Command, type CommandEntry, type CommandMap, type CommandsOf, Component, type ComponentContext, type ComponentElement, ComponentHost, ComponentHostResolver, type ComponentProps, type ComponentType, ComputedCell, type ComputedOptions, type ConsoleEntry, type ControlledOptions, type ControlledValue, type CreateAppOptions, Define, type DeriveOptions, type DevtoolsEvent, type DevtoolsRequest, Each, type EachKey, type EachProps, type EditingMirrorTarget, EditingProxy, type EditingProxySink, EditingService, type EditingState, type EmitArgs, type EmitValue, type Equality, FanCell, type FanKey, FanOut, type FanOutOptions, FindService, FocusService, type FontFaceDeclaration, type FontFaceLike, type FontFamilyDeclaration, type FontFamilyStatus, type FontHost, FontService, type FrameEntry, type FrameMetrics, type FramePhaseTimings, FrameService, type FrameworkChild, type FunctionComponent, GessoApp, GessoAppBuilder, type GessoAppOptions, GessoRuntime, type GessoRuntimeOptions, IndexedDbStorage, type IndexedDbStorageOptions, Inject, Input, InputCell, type Inputs, InternalState, MARK_PREFIX, type MediaOptions, MediaService, type MediaSessionLike, MemoryStorage, type MessageEndpoint, type MutateOptions, type Mutation, type NodePathTarget, type OpfsDirectory, type OpfsFileHandle, OpfsStorage, type OpfsStorageOptions, type OpfsWritable, type OutletProps, Output, type OutputCell, type OutputTarget, type OverlayEntry, OverlayLayer, type OverlayPlacement, OverlayService, type Patch, type PatchEntry, type PatchPath, type PersistedOptions, PersistedState, type PortHandshake, type PortHost, Presence, type PresenceProps, ProvidedChannel, type ReadSource, type ReadableCell, RenderWorkerApp, type RendererChoice, Resource, type ResourceOptions, type ResourceState, type ResourceStatus, type RouteAnswer, type RouteContext, type RouteDefinition, type RouteGuard, type RouteMatch, type RouteOptions, type RouteParams, RouteState, type RouteTarget, type RouterHistorySink, RouterOutlet, type RouterRoutes, RouterService, type RuntimeErrorSource, type RuntimeInput, type RuntimeToShellMessage, type SelectOptions, SemanticsMirror, type SemanticsMirrorSink, type ServedChannel, ServiceRegistry, type ShellFile, type ShellFileRequest, type ShellFileResult, type ShellFileType, type ShellHistory, type ShellHistoryMode, type ShellHistoryOptions, type ShellLocalStore, type ShellRecentFile, type ShellRequest, ShellService, ShellStorage, type ShellStorageOp, type ShellStorageOptions, type ShellStorageResult, type ShellToRuntimeMessage, Show, type ShowProps, type SpringOptions, type StorageAdapter, type StorageOutcome, type StorageRead, TextService, ThemeTokenCell, UI_FRAME_PHASES, UI_ROLES, UI_SEMANTIC_STATES, type UiDuration, type UiEasingChoice, type UiEnvironmentReport, type UiFramePhase, type UiNodeReport, type UiOwnerReport, type UiPropOrigin, type UiPropReport, type UiRole, type UiSemanticState, type UiSemanticsMap, type UiSemanticsPatch, type UiSemanticsRecord, type UiSemanticsReport, type UiStreamReport, type UiTreeNode, type UiTreeSnapshot, type UndoShortcutOptions, UndoStack, type UndoStackOptions, type UndoTransaction, type UndoableOptions, type ViewOf, WorkerApp, type WorkerAppOptions, type WorkerHandle, applyPatch, applyPatches, audioClock, bind, bounds, buildPath, channel, classifyStorageError, computed, controlled, createApp, createChannelRegistry, createComponent, createShellHistory, createSyncApp, debounced, defineChannel, derive, describeStream, diffProjection, each, fanOut, findUnplainPath, formatAge, formatNodePath, formatNodeReport, formatStream, formatUrl, input, internalState, into, isChannelClientMessage, isChannelHostMessage, isClassComponent, isComponentElement, isHubMessage, isOutputTarget, isPortErrorMessage, isPortHandshake, markInstant, markNow, measureSpan, mutate, observeColorScheme, observeMediaQuery, observeReducedMotion, output, parseUrl, performShellStorage, performanceMarksEnabled, persisted, pick, pickKeys, portHandle, printPropValue, provide, registerUndoShortcuts, renderRoot, requirePlainData, resource, route, select, serve, serveChannels, servePorts, setPerformanceMarks, shellStorageDenied, show, storageErrorMessage, storageReadFailure, storageReadValue, structurallyEqual, themeTokenCell, throttled, to, treeText, undoable, viewKeys, workerHandle, writeClipboard };