gesso-framework 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- import { L as ChannelToken, R as Command, a as ComponentType, c as Inputs, i as ComponentProps, j as Patch, n as ComponentArgs, p as InternalState, r as ComponentContext, u as Component, v as InputCell, x as ReadableCell, y as OutputCell } from "./FunctionComponent-Czkex8fp.js";
2
- import { C as ServiceRegistry, E as DesignThemes, O as AgentConfirmation, U as ChannelSource, X as WorkerHandle, b as ComponentElement, s as UiHost, t as AgentToolDefinition, w as ChannelRegistry, x as FrameworkChild } from "./tools-BFBwuinE.js";
1
+ import { L as ChannelToken, R as Command, a as ComponentType, c as Inputs, i as ComponentProps, j as Patch, n as ComponentArgs, p as InternalState, r as ComponentContext, u as Component, v as InputCell, x as ReadableCell, y as OutputCell } from "./FunctionComponent-BDVrANP0.js";
2
+ import { C as ServiceRegistry, E as DesignThemes, O as AgentConfirmation, U as ChannelSource, X as WorkerHandle, b as ComponentElement, s as UiHost, t as AgentToolDefinition, w as ChannelRegistry, x as FrameworkChild } from "./tools-Bl8LZ7LR.js";
3
3
  import { BehaviorSubject, Observable, Subscription } from "rxjs";
4
- import { AnimatedCell, AnimationDriver, CanvasHost, CaretRect, ComponentLikeElement, ComponentResolver, EditingState, EditingState as EditingState$1, FocusOptions, IconRasterizer, ImageResolver, LayoutExplanation, LayoutInspector, MARK_PREFIX, MotionStateInput, MotionTiming, Reactive, RendererBackend, Size, SvgResolver, TextMeasureRequest, TextMeasurer, UI_ROLES, UI_SEMANTIC_STATES, UiAnimation, UiChild, UiContrast, UiDurationToken, UiEasing, UiEasingToken, UiEditingController, UiElement, UiFileDropMessage, UiFindController, UiFocusManager, UiFrameClockFactory, UiInputDispatcher, UiInsets, UiKeyModifiers, UiKeyboardController, UiLength, UiModifier, UiMotion, UiNode, UiPlatformAdapter, UiPointer, UiPointerController, UiPointerDevice, UiReducedMotionPolicy, UiRole, UiScrollability, UiSelectionController, UiSemanticState, UiSemanticsAction, UiSemanticsMap, UiSemanticsMap as UiSemanticsMap$1, UiSemanticsPatch, UiSemanticsRecord, UiSemanticsRecord as UiSemanticsRecord$1, UiSemanticsUpdate, UiShortcutRegistry, UiSourceLocation, UiSpringSpec, UiSpringToken, UiTextPosition, UiTheme, UiThemeExtension, UiTouchScroller, UiWheelController, VideoClock, VideoResolver, markInstant, markNow, measureSpan, performanceMarksEnabled, setPerformanceMarks as setPerformanceMarks$1 } from "gesso-core";
4
+ import { AnimatedCell, AnimationDriver, CanvasHost, CaretRect, ComponentLikeElement, ComponentResolver, EditingState, EditingState as EditingState$1, FocusOptions, IconRasterizer, ImageResolver, LayoutExplanation, LayoutInspector, MARK_PREFIX, MotionStateInput, MotionTiming, Reactive, RendererBackend, Size, SvgResolver, TextMeasureRequest, TextMeasurer, UI_ROLES, UI_SEMANTIC_STATES, UiAnimation, UiChild, UiClock, UiContrast, UiDurationToken, UiEasing, UiEasingToken, UiEditingController, UiElement, UiEnvironmentKey, UiFileDropMessage, UiFindController, UiFocusManager, UiFrameClockFactory, UiInputDispatcher, UiInsets, UiKeyModifiers, UiKeyboardController, UiLength, UiModifier, UiMotion, UiNode, UiPlatformAdapter, UiPointer, UiPointerController, UiPointerDevice, UiReducedMotionPolicy, UiRole, UiScrollability, UiSelectionController, UiSemanticState, UiSemanticsAction, UiSemanticsMap, UiSemanticsMap as UiSemanticsMap$1, UiSemanticsPatch, UiSemanticsRecord, UiSemanticsRecord as UiSemanticsRecord$1, UiSemanticsUpdate, UiShortcutRegistry, UiSourceLocation, UiSpringSpec, UiSpringToken, UiTextPosition, UiTheme, UiThemeExtension, UiTouchScroller, UiWheelController, VideoClock, VideoResolver, markInstant, markNow, measureSpan, performanceMarksEnabled, setPerformanceMarks as setPerformanceMarks$1 } from "gesso-core";
5
5
  //#region src/derive.d.ts
6
6
  /** How `derive` decides that a new value is not a change. */
7
7
  type Equality<T> = 'reference' | 'structural' | ((a: T, b: T) => boolean);
@@ -883,6 +883,12 @@ interface ControlledOptions<T> {
883
883
  readonly fallback: T;
884
884
  /** Fired on every change in either form. */
885
885
  readonly onChange: OutputCell<[next: T]>;
886
+ /**
887
+ * Other outputs a parent may hear the change through instead: a
888
+ * drawer's `onClose` beside its `onOpenChange`. A parent listening on
889
+ * any of them owns the value, as one passing `onChange` does.
890
+ */
891
+ readonly heardBy?: readonly OutputCell<never>[];
886
892
  }
887
893
  /**
888
894
  * Controlled by default, self-managing when given only an initial value.
@@ -893,9 +899,58 @@ interface ControlledOptions<T> {
893
899
  * `defaultValue` and the control owns it, still reporting changes;
894
900
  * pass both and it throws, because two owners is a bug. `bind(cell)` is
895
901
  * the spread for the first form when the owner is a local cell.
902
+ *
903
+ * A `value` with no `onChange` beside it has nobody to own it, so it is
904
+ * where the control starts, and the control owns it from there; a new
905
+ * value from the parent starts it again. A screen written as a picture
906
+ * of a moment, `<Switch checked={true} />`, is then one a person can
907
+ * use: the design tool's Play mode runs mocks written exactly so, and a
908
+ * value that only the parent may change is what `readOnly` and
909
+ * `disabled` say, not a missing handler.
896
910
  */
897
911
  declare function controlled<T>(options: ControlledOptions<T>): ControlledValue<T>;
898
912
  //#endregion
913
+ //#region src/sharedValue.d.ts
914
+ /**
915
+ * Named values the components under one node share, with no
916
+ * application behind them: what one screen of a prototype was given
917
+ * (an email typed on Forgot password), shown by the next (Check email),
918
+ * or a wizard's steps passing on what was filled in.
919
+ *
920
+ * A node provides a store to what it holds,
921
+ * `provide={[provided(SharedValuesKey, values)]}`, and a component asks
922
+ * for a value by name with `sharedValue(ctx, name, start)`. Under a
923
+ * store, every component asking for the same name has the same cell;
924
+ * with none above, each has its own, at its own start. So a design tool
925
+ * can draw a screen on its board as written, each frame alone, and play
926
+ * it with the screens before it.
927
+ *
928
+ * It is not where an application's state goes. That survives a reload
929
+ * and is on a channel, written by a command; these are cells, written
930
+ * by whatever holds one, and gone with the store.
931
+ */
932
+ declare class SharedValues {
933
+ private readonly cells;
934
+ /** Every value by name, as it is now, in the order each was first asked for. */
935
+ readonly values: InternalState<ReadonlyMap<string, unknown>>;
936
+ /** The value named `name`: made at `start` by the first to ask, and the same cell for each after. */
937
+ cell<T>(name: string, start: T): InternalState<T>;
938
+ /** Writes a value by name, as a component holding it would; a name nobody has asked for is ignored. */
939
+ set(name: string, value: unknown): void;
940
+ /** Every value back at the start it was made with. */
941
+ reset(): void;
942
+ private publish;
943
+ }
944
+ /** Where a node provides a `SharedValues` to what it holds. */
945
+ declare const SharedValuesKey: import("gesso-core").UiEnvironmentKey<SharedValues | null>;
946
+ /**
947
+ * A value by name: the cell the nearest `SharedValues` above holds for
948
+ * it, shared with every component asking for it there; with none
949
+ * above, a cell of this component's own, at `start`. Bind it as any
950
+ * cell: `<TextInput {...bind(email)} />`.
951
+ */
952
+ declare function sharedValue<T>(ctx: ComponentContext, name: string, start: T): InternalState<T>;
953
+ //#endregion
899
954
  //#region src/decorators.d.ts
900
955
  /**
901
956
  * Declares a class as a Gesso component.
@@ -1093,10 +1148,14 @@ declare function createComponent<C extends ComponentType>(component: C, ...args:
1093
1148
  * edge of the screen whatever the language: an arrow drawn on a
1094
1149
  * diagram, a tooltip on a panel that is always on the left.
1095
1150
  *
1151
+ * `over` lays the entry over the anchor at its size, grown by the
1152
+ * offset on every side: the hole a spotlight leaves around what it
1153
+ * shows. No direction turns it.
1154
+ *
1096
1155
  * The direction is the entry's: the one its content reads in, which is
1097
1156
  * where its theme comes from too. See `OverlayEntry.environment`.
1098
1157
  */
1099
- type OverlayPlacement = 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' | 'start' | 'start-start' | 'start-end' | 'end' | 'end-start' | 'end-end';
1158
+ type OverlayPlacement = 'over' | 'top' | 'top-start' | 'top-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end' | 'right' | 'right-start' | 'right-end' | 'start' | 'start-start' | 'start-end' | 'end' | 'end-start' | 'end-end';
1100
1159
  /** A rectangle inside an anchor, from its border box's top left. */
1101
1160
  interface OverlayRect {
1102
1161
  readonly x: number;
@@ -1230,6 +1289,104 @@ declare class OverlayService {
1230
1289
  closeAll(): void;
1231
1290
  isOpen(id: string): boolean;
1232
1291
  }
1292
+ /**
1293
+ * The overlays of the `OverlayScope` a node is in: where an entry
1294
+ * opened there goes instead of the runtime's layer. Null outside every
1295
+ * scope.
1296
+ */
1297
+ declare const OverlayScopeKey: import("gesso-core").UiEnvironmentKey<OverlayService | null>;
1298
+ //#endregion
1299
+ //#region src/overlay/OverlayScope.d.ts
1300
+ interface OverlayScopeProps {
1301
+ children?: UiChild;
1302
+ }
1303
+ /**
1304
+ * A part of the tree that holds its own overlays: a dialog, menu or
1305
+ * tooltip opened inside it is drawn inside it, over its content and
1306
+ * nowhere else.
1307
+ *
1308
+ * What a design tool's player needs from the screen it plays: a dialog
1309
+ * on that screen dims the screen, centres in it and is clipped by it,
1310
+ * is scaled with it when the screen is drawn smaller than its own size,
1311
+ * and leaves the tool around it pressable. A menu is placed and flipped
1312
+ * within it, since an anchored entry stays inside the box its layer
1313
+ * covers. Outside a scope, entries open in the runtime's own layer
1314
+ * above the whole application, as they always have.
1315
+ *
1316
+ * It fills what holds it, and is the containing block of what it
1317
+ * holds. `useOverlay` finds the nearest scope above the component that
1318
+ * opens the entry; with none, it uses the runtime's `OverlayService`.
1319
+ *
1320
+ * A dialog's trap inside it holds the keyboard inside it only: the
1321
+ * tool around it, and every other scope, keep their focus, and none is
1322
+ * taken from them when it opens or handed to them when it closes.
1323
+ */
1324
+ declare function OverlayScope(inputs: Inputs<OverlayScopeProps>, _ctx: ComponentContext): UiChild;
1325
+ //#endregion
1326
+ //#region src/startingInputsKey.d.ts
1327
+ /** One component's starting inputs: input names to values. */
1328
+ type StartingInputsRecord = Readonly<Record<string, unknown>>;
1329
+ /**
1330
+ * Starting inputs by component name: one record for every instance of
1331
+ * it, or a list for each in the order they are made (`null` for one
1332
+ * left as written), so the second of three switches can start on.
1333
+ */
1334
+ type StartingInputsByName = Readonly<Record<string, StartingInputsRecord | readonly (StartingInputsRecord | null)[]>>;
1335
+ /**
1336
+ * The inputs components under a node start with, by component name,
1337
+ * over what their parents pass; see `StartingInputs`. Empty outside one.
1338
+ */
1339
+ declare const StartingInputsKey: UiEnvironmentKey<StartingInputsByName>;
1340
+ //#endregion
1341
+ //#region src/StartingInputs.d.ts
1342
+ interface StartingInputsProps {
1343
+ /**
1344
+ * Inputs by component name: `{ ScrollArea: { scrollY: 600 }, Tour: { step: 1 } }`;
1345
+ * or a list for each instance in the order they are made, `null` for
1346
+ * one left as written: `{ Toggle: [null, { on: true }] }`.
1347
+ */
1348
+ of?: StartingInputsByName;
1349
+ children?: UiChild;
1350
+ }
1351
+ /**
1352
+ * Draws what it holds with the components in it started from given
1353
+ * inputs, named by component, over what their parents pass: every
1354
+ * `ScrollArea` in it scrolled to 600, every `Tour` at its second step.
1355
+ *
1356
+ * What a design tool draws a moment of a screen with, beside the
1357
+ * screen as written, without a copy of the screen to drift from it: a
1358
+ * list scrolled far enough for its back-to-top button, a dialog open,
1359
+ * a tour on its second step. A component reads them as it would its
1360
+ * parent's props, so one that takes a value without a handler beside
1361
+ * it starts there and is then the person's to change, in a design
1362
+ * tool's player as anywhere. A preview of inputs (`InspectionService.
1363
+ * previewInputs`) goes over them, and ending it comes back to them.
1364
+ *
1365
+ * They are read as each component is made, so they start a component
1366
+ * rather than steer one: a new `of` reaches components made after it,
1367
+ * and once the parent passes something new for an input, it is the
1368
+ * parent's again, as a dialog saved open closes when its owner closes
1369
+ * it.
1370
+ * Nested, the outer one wins for an input both give a component, and
1371
+ * the inner one's other inputs and names still reach in: what draws a
1372
+ * screen at a moment decides over what the screen starts itself with,
1373
+ * so a moment saved from a moment is the later one. A list per instance
1374
+ * is taken whole. It fills what holds it.
1375
+ */
1376
+ declare function StartingInputs(inputs: Inputs<StartingInputsProps>, ctx: ComponentContext): UiChild;
1377
+ //#endregion
1378
+ //#region src/liveInput.d.ts
1379
+ /**
1380
+ * Says what an input of the component whose body is running holds now,
1381
+ * as the component keeps it, and how to read it again: a switch turned
1382
+ * on, a field typed in, a list scrolled to 600. The inspector reports it
1383
+ * on the component's owner report (`live`), and a design tool saves a
1384
+ * moment of a played screen from it, to start the screen there again
1385
+ * (`StartingInputs`). `controlled` calls it for its value, so a control
1386
+ * written by its contract reports itself; outside a component's body it
1387
+ * does nothing.
1388
+ */
1389
+ declare function liveInput(name: string, read: () => unknown): void;
1233
1390
  //#endregion
1234
1391
  //#region src/overlay/OverlayLayer.d.ts
1235
1392
  /**
@@ -1258,7 +1415,10 @@ declare class OverlayService {
1258
1415
  * why that node and not always the anchor.
1259
1416
  */
1260
1417
  declare class OverlayLayer extends Component {
1261
- overlays: OverlayService;
1418
+ runtimeOverlays: OverlayService;
1419
+ /** The entries to draw, when not the runtime's: an `OverlayScope`'s. */
1420
+ service: InputCell<OverlayService | null>;
1421
+ private get overlays();
1262
1422
  render(): UiElement;
1263
1423
  private renderEntries;
1264
1424
  }
@@ -1289,6 +1449,8 @@ declare class OverlayLayer extends Component {
1289
1449
  declare class ComponentHost<P extends Record<string, unknown> = Record<string, unknown>> {
1290
1450
  private readonly services;
1291
1451
  private readonly channels;
1452
+ /** The slot's node, under its parent, for `ctx.environment`; null for a host made outside a tree. */
1453
+ private readonly anchor;
1292
1454
  /** The class instance; undefined for a functional component. */
1293
1455
  readonly instance: Component | undefined;
1294
1456
  readonly element: ComponentElement<P>;
@@ -1310,11 +1472,29 @@ declare class ComponentHost<P extends Record<string, unknown> = Record<string, u
1310
1472
  private readonly inputSubscriptions;
1311
1473
  /** A functional component's cells, by prop name, as they were handed out. */
1312
1474
  private readonly functionalCells;
1475
+ /**
1476
+ * Inputs it is drawn with over its parent's, from a `StartingInputs`
1477
+ * above it when it was made: a moment of a screen, a tour's second
1478
+ * step. A preview goes over these, and ending one comes back to them.
1479
+ */
1480
+ private started;
1481
+ /** What the parent passed for each started input at birth: a new value from it takes over. */
1482
+ private readonly startedOver;
1483
+ /** A started input the parent passes as a stream: the start, then the stream's changes; one per input, so it is not resubscribed. */
1484
+ private readonly startedStreams;
1485
+ /** What the component says it holds now, by input; see `liveInput`. */
1486
+ private readonly live;
1487
+ /** Inputs a tool draws the component with over its parent's, until it ends them; see `previewInputs`. */
1488
+ private previewed;
1489
+ /** A class's input values from before they were previewed, for the ones its parent does not pass. */
1490
+ private readonly beforePreview;
1313
1491
  private readonly mountHooks;
1314
1492
  private readonly unmountHooks;
1315
1493
  /** True only while the component function runs; hooks may register then. */
1316
1494
  private rendering;
1317
- constructor(element: ComponentElement<P>, services?: ServiceRegistry, channels?: ChannelRegistry);
1495
+ constructor(element: ComponentElement<P>, services?: ServiceRegistry, channels?: ChannelRegistry,
1496
+ /** The slot's node, under its parent, for `ctx.environment`; null for a host made outside a tree. */
1497
+ anchor?: UiNode | null);
1318
1498
  /** The class or function this host mounts. */
1319
1499
  get component(): ComponentType;
1320
1500
  /**
@@ -1338,6 +1518,21 @@ declare class ComponentHost<P extends Record<string, unknown> = Record<string, u
1338
1518
  * cell is what updates the output.
1339
1519
  */
1340
1520
  updateProps(props: P): void;
1521
+ /**
1522
+ * Feeds the inputs `values` names from them instead of from the
1523
+ * parent, until a call with null hands them back to the parent: a
1524
+ * design tool showing one of a component's states on the live tree.
1525
+ * A later call replaces the earlier one; a new prop from the parent
1526
+ * for a previewed input waits until the preview ends.
1527
+ *
1528
+ * Each input a preview starts or ends is handed its value even when
1529
+ * it holds that value already, as a new value from the parent is: a
1530
+ * control that owns what it was started at (`controlled`) starts
1531
+ * again from it, rather than keeping what a person turned it to.
1532
+ */
1533
+ previewInputs(values: Readonly<Record<string, unknown>> | null): void;
1534
+ /** What an input is fed from: a preview's value for it, else what it was started with, else the parent's prop. */
1535
+ private providedFor;
1341
1536
  private renderFunction;
1342
1537
  /**
1343
1538
  * The props record a functional component reads: a cell per name,
@@ -1350,6 +1545,8 @@ declare class ComponentHost<P extends Record<string, unknown> = Record<string, u
1350
1545
  private createInputRecord;
1351
1546
  private createContext;
1352
1547
  private wireInputs;
1548
+ /** What the component says each of its inputs holds now; see `liveInput`. */
1549
+ liveInputs(): ReadonlyMap<string, unknown>;
1353
1550
  /**
1354
1551
  * What the parent most recently supplied for each input, as given:
1355
1552
  * a value, an element or a stream, whether or not the component has
@@ -1398,7 +1595,7 @@ declare class ComponentHostResolver implements ComponentResolver {
1398
1595
  private readonly hosts;
1399
1596
  private pendingMounts;
1400
1597
  constructor(services?: ServiceRegistry, channels?: ChannelRegistry);
1401
- resolve(element: ComponentLikeElement, anchorId: string): UiChild;
1598
+ resolve(element: ComponentLikeElement, anchorId: string, anchor?: UiNode): UiChild;
1402
1599
  release(anchorId: string): void;
1403
1600
  flushMounts(): void;
1404
1601
  /**
@@ -1477,6 +1674,13 @@ interface UiNodeReport {
1477
1674
  */
1478
1675
  readonly beneath: readonly UiBeneathReport[];
1479
1676
  readonly semantics?: UiSemanticsReport;
1677
+ /**
1678
+ * What the node draws while hovered and while pressed, from its
1679
+ * `interactive` modifiers: the props it writes then, as the element
1680
+ * would write them. For a design tool's handoff, which writes them
1681
+ * as `:hover` and `:active`. Absent when it changes nothing.
1682
+ */
1683
+ readonly interaction?: UiInteractionReport;
1480
1684
  /** `formatExplanation` of the node's layout, which is L8's answer. */
1481
1685
  readonly explanation: string;
1482
1686
  /**
@@ -1510,6 +1714,13 @@ interface UiOwnerReport {
1510
1714
  * needs to write a component's use back as code: `label="Email"`.
1511
1715
  */
1512
1716
  readonly inputs?: Readonly<Record<string, UiOwnerInput>>;
1717
+ /**
1718
+ * What the component says its inputs hold now, as it keeps them
1719
+ * (`liveInput`): a switch a person turned on, a list scrolled to 600.
1720
+ * Plain values only. What a design tool saves a moment of a played
1721
+ * screen from.
1722
+ */
1723
+ readonly live?: Readonly<Record<string, string | number | boolean | null>>;
1513
1724
  }
1514
1725
  /** One input's value in an owner report; see `UiOwnerReport.inputs`. */
1515
1726
  type UiOwnerInput = string | number | boolean | null | {
@@ -1625,6 +1836,10 @@ interface UiEnvironmentReport {
1625
1836
  /** Whether this node provides the value rather than inheriting it. */
1626
1837
  readonly provided: boolean;
1627
1838
  }
1839
+ interface UiInteractionReport {
1840
+ readonly hovered?: Readonly<Record<string, unknown>>;
1841
+ readonly pressed?: Readonly<Record<string, unknown>>;
1842
+ }
1628
1843
  interface UiSemanticsReport {
1629
1844
  readonly role?: string;
1630
1845
  readonly label?: string;
@@ -1707,6 +1922,9 @@ type ShellRequest = {
1707
1922
  } | {
1708
1923
  type: 'leaveWarning';
1709
1924
  on: boolean;
1925
+ } | {
1926
+ type: 'colorScheme';
1927
+ preference: ColorSchemePreference;
1710
1928
  } | {
1711
1929
  type: 'popup';
1712
1930
  id: number;
@@ -1894,6 +2112,8 @@ declare class ShellService {
1894
2112
  private handler;
1895
2113
  /** What `warnOnLeave` last said. */
1896
2114
  private leaving;
2115
+ /** What `preferColorScheme` last asked for; null until it is asked. */
2116
+ private preferred;
1897
2117
  private readonly scheme;
1898
2118
  private readonly contrastState;
1899
2119
  private readonly pointerState;
@@ -2145,6 +2365,26 @@ declare class ShellService {
2145
2365
  * nothing.
2146
2366
  */
2147
2367
  warnOnLeave(on: boolean): void;
2368
+ /**
2369
+ * Asks the shell to report this appearance from now on: `light` or
2370
+ * `dark` whatever the platform says, or `auto` to follow the platform
2371
+ * again. `colorScheme` then reports the answer, as it does when the
2372
+ * host calls `setColorScheme`, which is the same switch.
2373
+ *
2374
+ * For an application whose appearance setting is its own and stored:
2375
+ * the host reads the stored choice before the first frame and starts
2376
+ * with it (`createApp({ colorScheme })`), and the application, where
2377
+ * the person changes it, says so here. Without this, an application in
2378
+ * a render worker could not take back an override the host started it
2379
+ * with, and `auto` would keep reporting the stored choice instead of
2380
+ * the platform's. An application that stores nothing can combine its
2381
+ * choice with `colorScheme` instead and never call this.
2382
+ *
2383
+ * A request, because the media query is the window's; and a state,
2384
+ * like `warnOnLeave`, so a shell that arrives after it was asked is
2385
+ * told. Asking for the same thing twice sends nothing.
2386
+ */
2387
+ preferColorScheme(preference: ColorSchemePreference): void;
2148
2388
  /** Called by the runtime when the shell reports the state. Not for applications. */
2149
2389
  applyFullscreen(active: boolean): void;
2150
2390
  /**
@@ -2329,6 +2569,11 @@ interface AnimateOptions {
2329
2569
  reducedMotion?: UiReducedMotionPolicy;
2330
2570
  /** Wait this long before the first sample; see `UiAnimationOptions.delay`. */
2331
2571
  delay?: number;
2572
+ /**
2573
+ * The clock it runs on, where it is drawn: `ctx.environment(UiEnvironmentKeys.clock)`
2574
+ * in a component, `clockOf(node)` from a node. Real time without one. See `UiClock`.
2575
+ */
2576
+ clock?: UiClock | null;
2332
2577
  }
2333
2578
  interface SpringOptions {
2334
2579
  /** A named spring, or one given outright. Defaults to `snappy`. */
@@ -2343,6 +2588,11 @@ interface SpringOptions {
2343
2588
  reducedMotion?: UiReducedMotionPolicy;
2344
2589
  /** Wait this long before the first sample; see `UiAnimationOptions.delay`. */
2345
2590
  delay?: number;
2591
+ /**
2592
+ * The clock it runs on, where it is drawn: `ctx.environment(UiEnvironmentKeys.clock)`
2593
+ * in a component, `clockOf(node)` from a node. Real time without one. See `UiClock`.
2594
+ */
2595
+ clock?: UiClock | null;
2346
2596
  }
2347
2597
  /**
2348
2598
  * Animation, as a store components can inject.
@@ -2382,6 +2632,13 @@ declare class AnimationService {
2382
2632
  * animation drives a cell, which has no node — see `UiMotion`.
2383
2633
  */
2384
2634
  setMotion(motion: UiMotion): void;
2635
+ private motionListener;
2636
+ /**
2637
+ * Called by the runtime, which provides the vocabulary at its root so
2638
+ * a name in a `transition` or a `motion` state resolves to it too; a
2639
+ * part of the tree may provide its own over it (`UiEnvironmentKeys.motion`).
2640
+ */
2641
+ setMotionListener(listener: ((motion: UiMotion) => void) | null): void;
2385
2642
  get motion(): UiMotion;
2386
2643
  /**
2387
2644
  * Turns reduced motion on or off for this runtime.
@@ -3476,6 +3733,8 @@ declare class GessoRuntime {
3476
3733
  private lastEarlyFrame;
3477
3734
  /** When the last discrete input was routed; see `answerInput`. */
3478
3735
  private lastDiscreteInput;
3736
+ /** The wheel's steps since the last frame, added together; see `wheel`. */
3737
+ private heldWheel;
3479
3738
  /** The display time the frame being drawn is for; see `FrameMetrics.time`. */
3480
3739
  private frameTime;
3481
3740
  /** When the frame's first phase began, before its changes were collected; see `FrameMetrics.durationMs`. */
@@ -3580,6 +3839,11 @@ declare class GessoRuntime {
3580
3839
  * them. Only populated while a listener is attached.
3581
3840
  */
3582
3841
  private semanticsBoxes;
3842
+ /** When a frame last moved something, and when the boxes were last swept; see `updateSemantics`. */
3843
+ private semanticsMovedAt;
3844
+ private semanticsSweptAt;
3845
+ /** The sweep owed once a run of moving frames stops. */
3846
+ private semanticsSweepTimer;
3583
3847
  /** What each semantics walk leaves for the next; see `SemanticsMemory`. */
3584
3848
  private readonly semanticsMemory;
3585
3849
  private lastFocusedId;
@@ -3626,6 +3890,10 @@ declare class GessoRuntime {
3626
3890
  * lays out, whichever comes first; see `resize`.
3627
3891
  */
3628
3892
  private laidOutOnce;
3893
+ /** Frames in a row that threw; see `reportFrameError`. */
3894
+ private framesFailed;
3895
+ /** Nodes that declare `holdUnseen`, as frames have found them; see `updateHolds`. */
3896
+ private readonly holdable;
3629
3897
  constructor(options: GessoRuntimeOptions);
3630
3898
  /**
3631
3899
  * Aligns patch delivery from worker-owned channels to the frame.
@@ -3761,6 +4029,25 @@ declare class GessoRuntime {
3761
4029
  * refresh either.
3762
4030
  */
3763
4031
  answerInput(): void;
4032
+ /**
4033
+ * A step of the wheel, or of a trackpad's two fingers or its pinch,
4034
+ * held until the frame and added to the others that arrive before it.
4035
+ *
4036
+ * A trackpad sends a step on every refresh, and a handler that takes
4037
+ * longer than a refresh over one (a design tool's board zoomed over
4038
+ * hundreds of frames, each of whose names it scales) fell behind for
4039
+ * good: each step waited for the one before it, the frame waited for
4040
+ * them all, and a pinch drew nothing until the fingers stopped, then
4041
+ * jumped. Held, the steps that queue while the handler runs are one
4042
+ * step at the next frame, so the handler runs once a frame however
4043
+ * many arrive, and what it draws follows the fingers a frame at a
4044
+ * time. A step with other modifiers or in another unit is not added
4045
+ * to the held one but follows it, and any other input lets the held
4046
+ * step go first (`releaseWheel`), so nothing is answered out of order.
4047
+ */
4048
+ wheel(...step: Parameters<UiWheelController['wheel']>): void;
4049
+ /** Hands the held wheel step to the input now, before what follows it; see `wheel`. */
4050
+ releaseWheel(): void;
3764
4051
  /** Draws the pending frame in a task of its own, if the guards in `answerInput` allow. */
3765
4052
  private drawEarly;
3766
4053
  /**
@@ -4089,6 +4376,8 @@ declare class GessoRuntime {
4089
4376
  private pathOf;
4090
4377
  /** The components that rendered a node, nearest first. */
4091
4378
  private sourceReport;
4379
+ /** The props the node's `interactive` modifiers write while hovered and pressed, later ones over earlier. */
4380
+ private interactionOf;
4092
4381
  private ownersOf;
4093
4382
  private propsOf;
4094
4383
  /**
@@ -4167,7 +4456,9 @@ declare class GessoRuntime {
4167
4456
  * reconciles rather than recreating, so a component whose class is
4168
4457
  * the same object as before keeps its host and its `internalState`;
4169
4458
  * one whose module was replaced is a different class, and its host
4170
- * is disposed and mounted again. Scroll offsets on containers that
4459
+ * is disposed and mounted again with everything it rendered: its body
4460
+ * made new objects for its children, and a child kept from before
4461
+ * would go on holding the old ones. Scroll offsets on containers that
4171
4462
  * survive are kept, because the node is kept. Component state in a
4172
4463
  * replaced module is lost, which is the honest cost and the reason
4173
4464
  * this is a development tool.
@@ -4273,6 +4564,13 @@ declare class GessoRuntime {
4273
4564
  */
4274
4565
  applyFileDrop(message: UiFileDropMessage): void;
4275
4566
  applySemanticsAction(action: UiSemanticsAction): void;
4567
+ /**
4568
+ * A semantics action on a node: the mirror's, or `InspectionService.act`'s
4569
+ * on a node with no record of its own. False when it did not take: focus
4570
+ * refused (an open dialog's trap holds it elsewhere), or a field that
4571
+ * takes no text.
4572
+ */
4573
+ private actOn;
4276
4574
  /**
4277
4575
  * An action on an inline link, which is a run and not a node.
4278
4576
  *
@@ -4381,6 +4679,29 @@ declare class GessoRuntime {
4381
4679
  * missing, rather than by scanning every key for the prefix.
4382
4680
  */
4383
4681
  private semanticIdsUnder;
4682
+ /**
4683
+ * The boxes for a frame that moved something but changed no meaning:
4684
+ * all of them when it is the first move after a rest, and otherwise
4685
+ * only the focused node's, with the sweep owed for when the moving
4686
+ * stops (`SEMANTICS_SETTLE_MS`), or for when the boxes have been stale
4687
+ * too long (`SEMANTICS_MOST_STALE_MS`).
4688
+ *
4689
+ * A pan or a zoom moves every box under the camera on every frame. In
4690
+ * Atelier, a board of three dozen screens panned at 15%, the sweep was
4691
+ * 3 to 4 ms of a 4 to 6 ms frame, with frames to 13 ms, past a 120 Hz
4692
+ * display's 8.3; and the main thread wrote four styles on each of 545
4693
+ * elements per frame, which in Chromium was 45% of that thread while
4694
+ * it also had the wheel events to deliver. Nobody reads the rectangle
4695
+ * of an element that is moving under a pan: a screen reader's cursor
4696
+ * is on what it rests on. The focused node is the exception, since its
4697
+ * focus ring is drawn from its element, so it moves every frame.
4698
+ */
4699
+ private movedSemanticsBoxes;
4700
+ /** Sweeps the boxes once the moving has stopped, and sends what changed. */
4701
+ private scheduleSemanticsSweep;
4702
+ private sweepSemanticsBoxes;
4703
+ /** The focused node's box when it differs from the one last sent, as `collectSemanticsBoxes` would give it. */
4704
+ private focusedSemanticsBox;
4384
4705
  /**
4385
4706
  * The mirrored nodes whose box differs from the one last sent, and
4386
4707
  * which are on screen.
@@ -4543,6 +4864,17 @@ declare class GessoRuntime {
4543
4864
  /** Applies what waits for settled boxes: a reload's focus, then the reveals asked for. */
4544
4865
  private finishSettling;
4545
4866
  private warnLayoutPasses;
4867
+ /**
4868
+ * Holds each subtree that declares `holdUnseen` while it cannot be
4869
+ * read, and lets it go on the frame it can (see `UiGraph.hold`).
4870
+ *
4871
+ * Decided after the frame is drawn, from where it was drawn: a subtree
4872
+ * is only ever held once it has been laid out and painted, so what is
4873
+ * kept of it is what it showed, and one let go catches up on the next
4874
+ * frame, which its own marks arm. Only frames that moved or laid
4875
+ * something out can change the answer, so the rest pay nothing.
4876
+ */
4877
+ private updateHolds;
4546
4878
  private handleFrame;
4547
4879
  /**
4548
4880
  * Keeps frames coming while something is animating.
@@ -5276,6 +5608,16 @@ type RuntimeToShellMessage = {
5276
5608
  type: 'leaveWarning';
5277
5609
  on: boolean;
5278
5610
  } |
5611
+ /**
5612
+ * Report this appearance from now on (ShellService.preferColorScheme):
5613
+ * `light` or `dark`, or `auto` to follow `prefers-color-scheme` again.
5614
+ * The shell does what `WorkerApp.setColorScheme` does, and answers
5615
+ * with `colorScheme`.
5616
+ */
5617
+ {
5618
+ type: 'preferColorScheme';
5619
+ preference: ColorSchemePreference;
5620
+ } |
5279
5621
  /**
5280
5622
  * Open a sized, named window and report back whether the browser
5281
5623
  * allowed it (ShellService.openPopup).
@@ -6730,6 +7072,8 @@ declare class GessoApp {
6730
7072
  /** The appearance this shell reports; watched or overridden. */
6731
7073
  private colorSchemePreference;
6732
7074
  constructor(options: GessoAppOptions);
7075
+ /** Runs a pending frame now: see `FrameService.flush`. */
7076
+ private flushFrame;
6733
7077
  /**
6734
7078
  * The running app, as the agent's screen tools need it: its semantics
6735
7079
  * tree and focus, the mirror's actions, keys, and a way to run a
@@ -7619,10 +7963,24 @@ declare function persisted<T>(adapter: StorageAdapter, key: string, options: Per
7619
7963
  */
7620
7964
  declare class FrameService {
7621
7965
  private readonly subject;
7966
+ private flusher;
7622
7967
  /** Emits after each frame finishes, with what it cost and what it answered. */
7623
7968
  readonly frames: Observable<FrameMetrics>;
7624
7969
  /** Called by the runtime; not for components. */
7625
7970
  publish(metrics: FrameMetrics): void;
7971
+ /** Called by the shell that drives the frames; not for components. */
7972
+ setFlush(flush: (() => void) | null): void;
7973
+ /**
7974
+ * Draws a pending frame now, rather than when the display next asks
7975
+ * for one; nothing when none is pending.
7976
+ *
7977
+ * A tab in the background is sent no frames. A design editor's tool,
7978
+ * called by an agent while the editor's window is behind another,
7979
+ * changes the screen and waits for it to be drawn before reading it:
7980
+ * without this, it waits for a frame that never comes. The agent's
7981
+ * own screen tools (`uiSurface`) do the same after each action.
7982
+ */
7983
+ flush(): void;
7626
7984
  }
7627
7985
  //#endregion
7628
7986
  //#region src/app/InspectionService.d.ts
@@ -7655,6 +8013,15 @@ declare class InspectionService {
7655
8013
  * was used (`owners[].usedAt`).
7656
8014
  */
7657
8015
  inspect(node: UiNode): UiNodeReport;
8016
+ /**
8017
+ * Why the node has the size it has, as the layout decided it: for
8018
+ * each axis, the rule that fixed it (`decidedBy`: its own length, a
8019
+ * flex share, a stretch across its parent, its content, a clamp) and
8020
+ * the sentences that say so. What a design tool needs to tell an
8021
+ * element that fills its parent from one that only happens to be as
8022
+ * wide, which the box alone cannot. Null before the node is laid out.
8023
+ */
8024
+ explain(node: UiNode): LayoutExplanation | null;
7658
8025
  /**
7659
8026
  * Where the node is drawn, as `inspect(node).box` reports it, without
7660
8027
  * the rest of the report: for an editor that reads the boxes of many
@@ -7667,6 +8034,21 @@ declare class InspectionService {
7667
8034
  readonly width: number;
7668
8035
  readonly height: number;
7669
8036
  };
8037
+ /**
8038
+ * Where the node is seen on the screen: `box` with every transform
8039
+ * above it applied, so a node in a frame drawn at half its size is
8040
+ * half its size, where it is drawn. What an overlay laid over the
8041
+ * live tree is placed by (an outline on the component under the
8042
+ * pointer). `box` keeps the untransformed box, which is where the
8043
+ * node is in the layout: what an editor reading a zoomed board in
8044
+ * the board's own coordinates (a minimap) needs.
8045
+ */
8046
+ screenBox(node: UiNode): {
8047
+ readonly x: number;
8048
+ readonly y: number;
8049
+ readonly width: number;
8050
+ readonly height: number;
8051
+ };
7670
8052
  /**
7671
8053
  * Draws a node as though it declared `value` for `property`, until
7672
8054
  * the preview is ended or the node leaves the tree.
@@ -7681,11 +8063,43 @@ declare class InspectionService {
7681
8063
  preview(node: UiNode, property: string, value: unknown): void;
7682
8064
  /** Ends a preview of one property, or of every property previewed on the node. */
7683
8065
  endPreview(node: UiNode, property?: string): void;
8066
+ /**
8067
+ * Draws a component as though its parent passed `inputs`, over what
8068
+ * the parent did pass, until the preview is ended or the component
8069
+ * leaves the tree. The component is named by its anchor, as
8070
+ * `inspect(node).owners[].anchorId` gives it.
8071
+ *
8072
+ * What a design editor shows when a component on a played screen is
8073
+ * jumped to one of its states (Filled, Error, Disabled): the same
8074
+ * instance, still live, given that state's inputs, and the inputs it
8075
+ * was written with back when the preview ends. A later preview of the
8076
+ * same component replaces this one. The names and values are props',
8077
+ * as JSX would write them. An anchor no component holds is ignored.
8078
+ */
8079
+ previewInputs(anchorId: string, inputs: Readonly<Record<string, unknown>>): void;
8080
+ /** Ends a preview of a component's inputs: its parent's are its own again. */
8081
+ endInputPreview(anchorId: string): void;
8082
+ /**
8083
+ * Presses a node, or replaces the text of the field it is, as a
8084
+ * person would: a click at the middle of where it is drawn, which
8085
+ * its handlers and every handler above it get, or the edit a
8086
+ * keyboard makes once it has focus. The path the accessibility
8087
+ * mirror's actions take, for any node in the tree, record or not.
8088
+ *
8089
+ * What a design editor's agent does to play a prototype in its live
8090
+ * frames: a row pressed, an email typed, by a node it found with
8091
+ * `nodesAt` or by walking the tree. False when it did not take: a
8092
+ * node no longer in the tree, or a field that could not have focus
8093
+ * because an open dialog's trap holds it, or takes no text.
8094
+ */
8095
+ act(node: UiNode, action: 'click' | 'setValue', value?: string): boolean;
7684
8096
  }
7685
8097
  /** What the runtime gives the service. */
7686
8098
  interface InspectionHost {
7687
8099
  nodesAt(x: number, y: number): readonly UiNode[];
7688
8100
  inspect(node: UiNode): UiNodeReport;
8101
+ /** Why the node has its size, as the layout engine explains it. */
8102
+ explain?(node: UiNode): LayoutExplanation | null;
7689
8103
  /** The node's box alone, as `inspect` reports it. */
7690
8104
  box?(node: UiNode): {
7691
8105
  readonly x: number;
@@ -7693,8 +8107,18 @@ interface InspectionHost {
7693
8107
  readonly width: number;
7694
8108
  readonly height: number;
7695
8109
  };
8110
+ /** The node's box with the transforms above it applied. */
8111
+ screenBox?(node: UiNode): {
8112
+ readonly x: number;
8113
+ readonly y: number;
8114
+ readonly width: number;
8115
+ readonly height: number;
8116
+ };
7696
8117
  preview?(node: UiNode, property: string, value: unknown): void;
7697
8118
  endPreview?(node: UiNode, property?: string): void;
8119
+ /** Null ends the preview. */
8120
+ previewInputs?(anchorId: string, inputs: Readonly<Record<string, unknown>> | null): void;
8121
+ act?(node: UiNode, action: 'click' | 'setValue', value?: string): boolean;
7698
8122
  }
7699
8123
  //#endregion
7700
8124
  //#region src/app/videoClock.d.ts
@@ -8235,6 +8659,17 @@ declare class EditingService {
8235
8659
  * all three of which happen during the frame a field first appears.
8236
8660
  */
8237
8661
  caretRectOf(node: UiNode | null, offset?: number): CaretRect | null;
8662
+ /**
8663
+ * The caret position nearest a point in a field, the point given as a
8664
+ * pointer event gives it: where a press there would put the caret.
8665
+ *
8666
+ * What a field opened over text the person pointed at uses to start
8667
+ * the caret where they pointed: ask once the field is laid out, then
8668
+ * `select` that offset. Null when the node is not an editable, when it
8669
+ * has not been laid out yet, or before the runtime has wired the
8670
+ * controller: "ask again next frame", as for `caretRectOf`.
8671
+ */
8672
+ offsetNear(node: UiNode | null, x: number, y: number): number | null;
8238
8673
  /**
8239
8674
  * Selects from `anchor` to `focus` and focuses the field the focus is
8240
8675
  * in: within one field, or across the fields of an editing group (see
@@ -8274,25 +8709,6 @@ declare class ScrollService {
8274
8709
  }
8275
8710
  //#endregion
8276
8711
  //#region src/app/FocusService.d.ts
8277
- /**
8278
- * Keyboard focus, as a store components can inject.
8279
- *
8280
- * `UiFocusManager` lives in the runtime and a component cannot reach
8281
- * it — components reach the world through stores, as they do for the
8282
- * clipboard (`ShellService`), overlays (`OverlayService`) and find
8283
- * (`FindService`). Without this a component cannot autofocus a field,
8284
- * trap the keyboard in a dialog, or put the caret in the input that
8285
- * failed validation.
8286
- *
8287
- * Nodes come from a `ref` prop. A tree's refs fire before the runtime
8288
- * installs the manager, so an action taken during the first build is
8289
- * queued and replayed once there is one; that is the same problem
8290
- * `FindService` solves for its query field, and the reason `autoFocus`
8291
- * in a dialog works on the frame it mounts.
8292
- *
8293
- * It must stay on the render thread: its actions take `UiNode`s, which
8294
- * never cross a worker boundary.
8295
- */
8296
8712
  declare class FocusService {
8297
8713
  /** The node holding focus, or null. A control binds its focus ring to this. */
8298
8714
  readonly focused: InternalState<UiNode | null>;
@@ -8326,6 +8742,12 @@ declare class FocusService {
8326
8742
  focusNext(): void;
8327
8743
  /** Moves focus to the previous focusable node, wrapping around. */
8328
8744
  focusPrevious(): void;
8745
+ /**
8746
+ * The tab stops under `within` (the whole tree when not given), in
8747
+ * the order Tab visits them: what a design tool numbers to show a
8748
+ * screen's keyboard order. Empty before the runtime has a manager.
8749
+ */
8750
+ tabStops(within?: UiNode): UiNode[];
8329
8751
  /**
8330
8752
  * Confines focus to `scope` until `releaseTrap`, moving it inside if
8331
8753
  * it was elsewhere. Traps nest: a dialog opened over a dialog traps
@@ -8988,5 +9410,5 @@ declare class RenderWorkerApp {
8988
9410
  private initialize;
8989
9411
  }
8990
9412
  //#endregion
8991
- export { OpfsStorageOptions as $, BoundStream as $n, Mutation as $r, RendererChoice as $t, observeReducedMotion as A, AudioMetadata as An, findUnplainPath as Ar, ShellHistory as At, InspectionHost as B, UiEasingChoice as Bn, ThemeTokenCell as Br, DevtoolsRequest as Bt, writeClipboard as C, route as Cn, createComponent as Cr, GessoAppBuilder as Ct, TextService as D, formatUrl as Dn, ChannelRegistration as Dr, AppLogicEndpoint as Dt, EditingService as E, buildPath as En, pickKeys as Er, createApp as Et, AudioSink as F, AudioStatus as Fn, Input as Fr, ActionEntry as Ft, persisted as G, ShellRecentFile as Gn, show as Gr, treeText as Gt, FrameService as H, ShellFileRequest as Hn, bind as Hr, PatchEntry as Ht, AudioSinkOptions as I, AnimateOptions as In, Output as Ir, ChannelErrorEntry as It, IndexedDbStorage as J, ShellStorageOp as Jn, EachProps as Jr, ShellToRuntimeMessage as Jt, ShellStorage as K, ShellRequest as Kn, Each as Kr, RuntimeErrorSource as Kt, AudioSinkOutput as L, AnimationService as Ln, ControlledOptions as Lr, CommandEntry as Lt, PresenceProps as M, AudioSample as Mn, Channel as Mr, ShellHistoryOptions as Mt, RouterOutlet as N, AudioService as Nn, Define as Nr, createShellHistory as Nt, FindService as O, parseUrl as On, ChannelRegistryHandle as Or, WorkerApp as Ot, AudioElementLike as P, AudioState as Pn, Inject as Pr, ActionCause as Pt, OpfsStorage as Q, observeColorScheme as Qn, MutateOptions as Qr, GessoRuntimeOptions as Qt, MediaSessionLike as R, SpringOptions as Rn, ControlledValue as Rr, ConsoleEntry as Rt, EditingProxySink as S, RouteTarget as Sn, OverlayService as Sr, createSyncApp as St, ScrollService as T, RouteParams as Tn, pick as Tr, CreateAppOptions as Tt, PersistedOptions as U, ShellFileResult as Un, Show as Ur, UiTreeNode as Ut, InspectionService as V, ShellFile as Vn, themeTokenCell as Vr, FrameEntry as Vt, PersistedState as W, ShellFileType as Wn, ShowProps as Wr, UiTreeSnapshot as Wt, OpfsDirectory as X, ColorScheme as Xn, debounced as Xr, FramePhaseTimings as Xt, IndexedDbStorageOptions as Y, ShellStorageResult as Yn, each as Yr, FrameMetrics as Yt, OpfsFileHandle as Z, ColorSchemePreference as Zn, throttled as Zr, GessoRuntime as Zt, renderRoot as _, DeriveOptions as _i, OutletProps as _n, ComponentHost as _r, ShellLocalStore as _t, UiRole as a, resource as ai, FontFamilyDeclaration as an, UiPropOrigin as ar, classifyStorageError as at, SemanticsMirrorSink as b, RouteGuard as bn, OverlayPlacement as br, GessoApp as bt, UiSemanticsPatch as c, FanCell as ci, FontService as cn, UiStreamReport as cr, storageReadValue as ct, markNow as d, FanOutOptions as di, RouteAnswer as dn, formatNodePath as dr, UndoableOptions as dt, mutate as ei, RuntimeInput as en, NodePathTarget as er, OpfsWritable as et, measureSpan as f, fanOut as fi, RouteMatch as fn, formatNodeReport as fr, undoable as ft, RenderWorkerError as g, computed as gi, RouteState as gn, ComponentHostResolver as gr, rememberedDirectory as gt, RenderWorkerApp as h, ReadSource as hi, RouterService as hn, printPropValue as hr, UndoTransaction as ht, UI_SEMANTIC_STATES as i, ResourceStatus as ii, FontFaceLike as in, UiOwnerReport as ir, StorageRead as it, Presence as j, AudioRequest as jn, requirePlainData as jr, ShellHistoryMode as jt, observeMediaQuery as k, AudioAction as kn, createChannelRegistry as kr, WorkerAppOptions as kt, UiSemanticsRecord$1 as l, FanKey as li, MediaOptions as ln, describeStream as lr, UndoShortcutOptions as lt, setPerformanceMarks$1 as m, ComputedOptions as mi, RouterRoutes as mn, formatStream as mr, UndoStackOptions as mt, MARK_PREFIX as n, ResourceOptions as ni, UiFramePhase as nn, UiNodeReport as nr, StorageAdapter as nt, UiSemanticState as o, SelectOptions as oi, FontFamilyStatus as on, UiPropReport as or, storageErrorMessage as ot, performanceMarksEnabled as p, ComputedCell as pi, RouterHistorySink as pn, formatSourceLocation as pr, UndoStack as pt, ShellStorageOptions as q, ShellService as qn, EachKey as qr, RuntimeToShellMessage as qt, UI_ROLES as r, ResourceState as ri, FontFaceDeclaration as rn, UiOwnerInput as rr, StorageOutcome as rt, UiSemanticsMap$1 as s, select as si, FontHost as sn, UiSemanticsReport as sr, storageReadFailure as st, EditingState$1 as t, Resource as ti, UI_FRAME_PHASES as tn, UiEnvironmentReport as tr, MemoryStorage as tt, markInstant as u, FanOut as ui, MediaService as un, formatAge as ur, registerUndoShortcuts as ut, EditingMirrorTarget as v, Equality as vi, RouteContext as vn, OverlayLayer as vr, performShellStorage as vt, FocusService as w, to as wn, structurallyEqual as wr, WebMcpChoice as wt, EditingProxy as x, RouteOptions as xn, OverlayRect as xr, GessoAppOptions as xt, SemanticsMirror as y, derive as yi, RouteDefinition as yn, OverlayEntry as yr, shellStorageDenied as yt, audioClock as z, UiDuration as zn, controlled as zr, DevtoolsEvent as zt };
8992
- //# sourceMappingURL=index-BENndtaH.d.ts.map
9413
+ export { OpfsStorageOptions as $, BoundStream as $n, ThemeTokenCell as $r, RendererChoice as $t, observeReducedMotion as A, DeriveOptions as Ai, AudioMetadata as An, OverlayRect as Ar, ShellHistory as At, InspectionHost as B, UiEasingChoice as Bn, findUnplainPath as Br, DevtoolsRequest as Bt, writeClipboard as C, FanOut as Ci, route as Cn, StartingInputsByName as Cr, GessoAppBuilder as Ct, TextService as D, ComputedOptions as Di, formatUrl as Dn, OverlayScopeProps as Dr, AppLogicEndpoint as Dt, EditingService as E, ComputedCell as Ei, buildPath as En, OverlayScope as Er, createApp as Et, AudioSink as F, AudioStatus as Fn, pick as Fr, ActionEntry as Ft, persisted as G, ShellRecentFile as Gn, Input as Gr, treeText as Gt, FrameService as H, ShellFileRequest as Hn, Channel as Hr, PatchEntry as Ht, AudioSinkOptions as I, AnimateOptions as In, pickKeys as Ir, ChannelErrorEntry as It, IndexedDbStorage as J, ShellStorageOp as Jn, SharedValuesKey as Jr, ShellToRuntimeMessage as Jt, ShellStorage as K, ShellRequest as Kn, Output as Kr, RuntimeErrorSource as Kt, AudioSinkOutput as L, AnimationService as Ln, ChannelRegistration as Lr, CommandEntry as Lt, PresenceProps as M, derive as Mi, AudioSample as Mn, OverlayService as Mr, ShellHistoryOptions as Mt, RouterOutlet as N, AudioService as Nn, createComponent as Nr, createShellHistory as Nt, FindService as O, ReadSource as Oi, parseUrl as On, OverlayEntry as Or, WorkerApp as Ot, AudioElementLike as P, AudioState as Pn, structurallyEqual as Pr, ActionCause as Pt, OpfsStorage as Q, observeColorScheme as Qn, controlled as Qr, GessoRuntimeOptions as Qt, MediaSessionLike as R, SpringOptions as Rn, ChannelRegistryHandle as Rr, ConsoleEntry as Rt, EditingProxySink as S, FanKey as Si, RouteTarget as Sn, StartingInputsProps as Sr, createSyncApp as St, ScrollService as T, fanOut as Ti, RouteParams as Tn, StartingInputsRecord as Tr, CreateAppOptions as Tt, PersistedOptions as U, ShellFileResult as Un, Define as Ur, UiTreeNode as Ut, InspectionService as V, ShellFile as Vn, requirePlainData as Vr, FrameEntry as Vt, PersistedState as W, ShellFileType as Wn, Inject as Wr, UiTreeSnapshot as Wt, OpfsDirectory as X, ColorScheme as Xn, ControlledOptions as Xr, FramePhaseTimings as Xt, IndexedDbStorageOptions as Y, ShellStorageResult as Yn, sharedValue as Yr, FrameMetrics as Yt, OpfsFileHandle as Z, ColorSchemePreference as Zn, ControlledValue as Zr, GessoRuntime as Zt, renderRoot as _, ResourceStatus as _i, OutletProps as _n, ComponentHostResolver as _r, ShellLocalStore as _t, UiRole as a, Each as ai, FontFamilyDeclaration as an, UiOwnerReport as ar, classifyStorageError as at, SemanticsMirrorSink as b, select as bi, RouteGuard as bn, liveInput as br, GessoApp as bt, UiSemanticsPatch as c, each as ci, FontService as cn, UiSemanticsReport as cr, storageReadValue as ct, markNow as d, MutateOptions as di, RouteAnswer as dn, formatAge as dr, UndoableOptions as dt, themeTokenCell as ei, RuntimeInput as en, NodePathTarget as er, OpfsWritable as et, measureSpan as f, Mutation as fi, RouteMatch as fn, formatNodePath as fr, undoable as ft, RenderWorkerError as g, ResourceState as gi, RouteState as gn, printPropValue as gr, rememberedDirectory as gt, RenderWorkerApp as h, ResourceOptions as hi, RouterService as hn, formatStream as hr, UndoTransaction as ht, UI_SEMANTIC_STATES as i, show as ii, FontFaceLike as in, UiOwnerInput as ir, StorageRead as it, Presence as j, Equality as ji, AudioRequest as jn, OverlayScopeKey as jr, ShellHistoryMode as jt, observeMediaQuery as k, computed as ki, AudioAction as kn, OverlayPlacement as kr, WorkerAppOptions as kt, UiSemanticsRecord$1 as l, debounced as li, MediaOptions as ln, UiStreamReport as lr, UndoShortcutOptions as lt, setPerformanceMarks$1 as m, Resource as mi, RouterRoutes as mn, formatSourceLocation as mr, UndoStackOptions as mt, MARK_PREFIX as n, Show as ni, UiFramePhase as nn, UiInteractionReport as nr, StorageAdapter as nt, UiSemanticState as o, EachKey as oi, FontFamilyStatus as on, UiPropOrigin as or, storageErrorMessage as ot, performanceMarksEnabled as p, mutate as pi, RouterHistorySink as pn, formatNodeReport as pr, UndoStack as pt, ShellStorageOptions as q, ShellService as qn, SharedValues as qr, RuntimeToShellMessage as qt, UI_ROLES as r, ShowProps as ri, FontFaceDeclaration as rn, UiNodeReport as rr, StorageOutcome as rt, UiSemanticsMap$1 as s, EachProps as si, FontHost as sn, UiPropReport as sr, storageReadFailure as st, EditingState$1 as t, bind as ti, UI_FRAME_PHASES as tn, UiEnvironmentReport as tr, MemoryStorage as tt, markInstant as u, throttled as ui, MediaService as un, describeStream as ur, registerUndoShortcuts as ut, EditingMirrorTarget as v, resource as vi, RouteContext as vn, ComponentHost as vr, performShellStorage as vt, FocusService as w, FanOutOptions as wi, to as wn, StartingInputsKey as wr, WebMcpChoice as wt, EditingProxy as x, FanCell as xi, RouteOptions as xn, StartingInputs as xr, GessoAppOptions as xt, SemanticsMirror as y, SelectOptions as yi, RouteDefinition as yn, OverlayLayer as yr, shellStorageDenied as yt, audioClock as z, UiDuration as zn, createChannelRegistry as zr, DevtoolsEvent as zt };
9414
+ //# sourceMappingURL=index-C08h2Jze.d.ts.map