@fusion.dev/helix 0.162.1 → 0.164.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/types/vue.d.ts CHANGED
@@ -2025,6 +2025,11 @@ A word property: register it for a locale under the host's key. A family
2025
2025
  that names the control otherwise, such as Tag's `Remove {label}`,
2026
2026
  declares its own English with `@words` above the override. */
2027
2027
  dismissLabel?: (HelixCallout["dismissLabel"]) | undefined;
2028
+ /** Whether the callout is showing. A dismissal nobody canceled turns it
2029
+ false and the callout hides itself, and setting it true shows the callout
2030
+ again. Not reflected: open is the resting state, so an `open` attribute
2031
+ would appear on markup a server sent without it. */
2032
+ open?: (HelixCallout["open"]) | undefined;
2028
2033
  /** What kind of attention the passage needs.
2029
2034
 
2030
2035
  `tone` is the axis for what a thing means, and this is a subset of it: a
@@ -2059,7 +2064,7 @@ out keeps its English, and `tone-label` wins over both.
2059
2064
  };
2060
2065
 
2061
2066
  export type HelixCalloutVueEvents = {
2062
- /** The dismiss button was pressed. The callout does not remove itself, so remove it in response. Cancelable. */
2067
+ /** The dismiss button was pressed. Unless a listener cancels it, the callout hides itself, and a listener may remove it instead. Cancelable: cancel it to keep the callout showing. */
2063
2068
  "helix-dismiss": HelixCalloutHelixDismissElementEvent;
2064
2069
  };
2065
2070
 
@@ -2674,6 +2679,13 @@ zoom as a percentage, written the way the element's locale writes one. */
2674
2679
  /** What screen readers hear after a zoom button or key, with `{zoom}` for the
2675
2680
  zoom as a percentage, written the way the element's locale writes one. */
2676
2681
  zoomedLabel?: (HelixCanvas["zoomedLabel"]) | undefined;
2682
+ /** Draws every connection's line: a function from where it leaves and
2683
+ arrives, and the sides it does, to its SVG path and where its label sits.
2684
+
2685
+ Absent, or returning nothing for a connection, draws the board's own
2686
+ route. A function that throws draws the board's own too, and the error is
2687
+ reported to the page as an uncaught one. Set it as a property. */
2688
+ edgeRoute?: (HelixCanvas["edgeRoute"]) | undefined;
2677
2689
  /** The board's current view: the document's point at the middle of the view,
2678
2690
  and the zoom.
2679
2691
 
@@ -3974,6 +3986,14 @@ app.ts", as `code-name-label` puts it. */
3974
3986
  "collapse-label"?: (HelixCodeBlock["collapseLabel"]) | undefined;
3975
3987
  /** The expand button's words while the block shows every line. */
3976
3988
  collapseLabel?: (HelixCodeBlock["collapseLabel"]) | undefined;
3989
+ /** In a diff, how many unchanged lines to keep beside each change. Each
3990
+ longer run of unchanged lines is folded behind a button that shows it.
3991
+ Unset shows every line the diff holds. */
3992
+ "context-lines"?: (HelixCodeBlock["contextLines"] | `${number}`) | undefined;
3993
+ /** In a diff, how many unchanged lines to keep beside each change. Each
3994
+ longer run of unchanged lines is folded behind a button that shows it.
3995
+ Unset shows every line the diff holds. */
3996
+ contextLines?: (HelixCodeBlock["contextLines"]) | undefined;
3977
3997
  /** The copy button's name and tooltip text after a copy. */
3978
3998
  "copied-label"?: (HelixCodeBlock["copiedLabel"]) | undefined;
3979
3999
  /** The copy button's name and tooltip text after a copy. */
@@ -4012,6 +4032,14 @@ block lays out. Not for a diff, whose files each scroll on their own. */
4012
4032
  "expand-label"?: (HelixCodeBlock["expandLabel"]) | undefined;
4013
4033
  /** The expand button's words while the cap hides lines. */
4014
4034
  expandLabel?: (HelixCodeBlock["expandLabel"]) | undefined;
4035
+ /** The words of a button that hides a run of unchanged lines it showed, in a
4036
+ diff with `context-lines`. `{count}` is how many, and each language
4037
+ writes the forms it has. */
4038
+ "hide-unchanged-label"?: (HelixCodeBlock["hideUnchangedLabel"]) | undefined;
4039
+ /** The words of a button that hides a run of unchanged lines it showed, in a
4040
+ diff with `context-lines`. `{count}` is how many, and each language
4041
+ writes the forms it has. */
4042
+ hideUnchangedLabel?: (HelixCodeBlock["hideUnchangedLabel"]) | undefined;
4015
4043
  /** The block's name, usually a file name, drawn in the header.
4016
4044
 
4017
4045
  Absent, the block is named by `language` where there is one. In a diff,
@@ -4087,6 +4115,12 @@ A false boolean reflects as the attribute's absence, so this costs no
4087
4115
  reflected property taking no default is satisfied by the default being
4088
4116
  `false`. */
4089
4117
  noCopy?: (HelixCodeBlock["noCopy"]) | undefined;
4118
+ /** The words of a button that shows a folded run of unchanged lines, in a
4119
+ diff with `context-lines`. `{count}` is how many. */
4120
+ "show-unchanged-label"?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
4121
+ /** The words of a button that shows a folded run of unchanged lines, in a
4122
+ diff with `context-lines`. `{count}` is how many. */
4123
+ showUnchangedLabel?: (HelixCodeBlock["showUnchangedLabel"]) | undefined;
4090
4124
  /** How a diff's two versions are arranged. It has no effect without `diff`.
4091
4125
 
4092
4126
  Absent is unified, each removal above its replacement, which fits any
@@ -11964,7 +11998,8 @@ was never tickable look identical from here. Announcing only the ticked one
11964
11998
  as a checkbox tells a reader its siblings are commands, which is the one
11965
11999
  thing they are not.
11966
12000
 
11967
- `checked` implies it, so a row that is on never has to say both.
12001
+ `checked` and `exclusive` imply it, so a row that is on, or one of a set,
12002
+ never has to say both.
11968
12003
 
11969
12004
  Choosing the row checks or unchecks it, after a `helix-before-toggle` that
11970
12005
  you can cancel. */
@@ -11974,6 +12009,18 @@ you can cancel. */
11974
12009
  The row changes it when it is chosen. Not reflected: the attribute is the
11975
12010
  state you start the row in, and `:state(checked)` carries the current one. */
11976
12011
  checked?: (HelixMenuItem["checked"]) | undefined;
12012
+ /** Whether choosing the row closes the menu.
12013
+
12014
+ Unset takes the menu's `close-on-select`, which is on, and keeps the menu
12015
+ open after a Space on a choice row. Write `close-on-select="false"` for a
12016
+ row that changes something the reader is watching, such as a zoom step. */
12017
+ "close-on-select"?: (HelixMenuItem["closeOnSelect"]) | undefined;
12018
+ /** Whether choosing the row closes the menu.
12019
+
12020
+ Unset takes the menu's `close-on-select`, which is on, and keeps the menu
12021
+ open after a Space on a choice row. Write `close-on-select="false"` for a
12022
+ row that changes something the reader is watching, such as a zoom step. */
12023
+ closeOnSelect?: (HelixMenuItem["closeOnSelect"]) | undefined;
11977
12024
  /** Whether the row is disabled, so it cannot be chosen. */
11978
12025
  disabled?: (HelixMenuItem["disabled"]) | undefined;
11979
12026
  /** Whether the link downloads the file when the row is chosen.
@@ -11990,8 +12037,7 @@ that row and unchecks the others. Choosing the row that is checked leaves
11990
12037
  it checked. `menuitemradio` tells a reader which kind of set they are in,
11991
12038
  where `menuitemcheckbox` says every row is independent.
11992
12039
 
11993
- Meaningless without `checkable`, since a row that cannot be ticked is not
11994
- one of a set of anything. */
12040
+ It makes the row a choice, so it needs no `checkable` beside it. */
11995
12041
  exclusive?: (HelixMenuItem["exclusive"]) | undefined;
11996
12042
  /** The URL the row links to. Setting it renders the row as a link.
11997
12043
 
@@ -12079,6 +12125,18 @@ the resolved state for stylesheets, which is what the mirror is for. */
12079
12125
  "back-label"?: (HelixMenu["backLabel"]) | undefined;
12080
12126
  /** The text of the row that returns from a submenu. */
12081
12127
  backLabel?: (HelixMenu["backLabel"]) | undefined;
12128
+ /** Whether choosing a row closes the menu.
12129
+
12130
+ On by default, and a Space on a choice row leaves the menu open either way.
12131
+ Write `close-on-select="false"` to keep the menu open after every choice, as
12132
+ Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this. */
12133
+ "close-on-select"?: (HelixMenu["closeOnSelect"]) | undefined;
12134
+ /** Whether choosing a row closes the menu.
12135
+
12136
+ On by default, and a Space on a choice row leaves the menu open either way.
12137
+ Write `close-on-select="false"` to keep the menu open after every choice, as
12138
+ Ark UI's `closeOnSelect` does. A row's own `close-on-select` wins over this. */
12139
+ closeOnSelect?: (HelixMenu["closeOnSelect"]) | undefined;
12082
12140
  /** Whether the menu is the trigger's context menu: it opens where the reader
12083
12141
  asks for one, with a right-click, a long press, Shift+F10 or the menu key. */
12084
12142
  context?: (HelixMenu["context"]) | undefined;
@@ -12962,6 +13020,12 @@ reader sees the shape of the value before its contents. `0` starts with the
12962
13020
  root closed; a large number opens everything, which on a big value is the
12963
13021
  wall of text this exists to avoid. */
12964
13022
  defaultDepth?: (HelixObjectInspector["defaultDepth"]) | undefined;
13023
+ /** What the tree says while there is no value to show, such as before a
13024
+ fetch answers. The `empty` slot replaces it. */
13025
+ "empty-label"?: (HelixObjectInspector["emptyLabel"]) | undefined;
13026
+ /** What the tree says while there is no value to show, such as before a
13027
+ fetch answers. The `empty` slot replaces it. */
13028
+ emptyLabel?: (HelixObjectInspector["emptyLabel"]) | undefined;
12965
13029
  /** Text the tree is narrowed to: the entries whose key or value holds it,
12966
13030
  ignoring case, and the branches that lead to them. Empty shows everything. */
12967
13031
  filter?: (HelixObjectInspector["filter"]) | undefined;
@@ -13031,6 +13095,12 @@ who set the property. This button is positioned out of the flow and takes no
13031
13095
  room, so nothing selects on it, and reflection exists so that a selector can
13032
13096
  reach a value. */
13033
13097
  noCopy?: (HelixObjectInspector["noCopy"]) | undefined;
13098
+ /** What the tree says while a filter matched no entry. The `empty` slot
13099
+ replaces it. */
13100
+ "no-matches-label"?: (HelixObjectInspector["noMatchesLabel"]) | undefined;
13101
+ /** What the tree says while a filter matched no entry. The `empty` slot
13102
+ replaces it. */
13103
+ noMatchesLabel?: (HelixObjectInspector["noMatchesLabel"]) | undefined;
13034
13104
  /** What a screen reader hears when a filter matches one entry, where
13035
13105
  `results-label` should not say it. `{count}` is the count. */
13036
13106
  "result-label"?: (HelixObjectInspector["resultLabel"]) | undefined;
@@ -14776,6 +14846,9 @@ keyed on this attribute, and of the 56 tokens that differ by scheme the
14776
14846
  theme engine emits 19. The other 37 would stay light in a dark preview,
14777
14847
  including every one of the 24 series colors a chart reads. */
14778
14848
  colorMode?: (HelixSandboxPreview["colorMode"]) | undefined;
14849
+ /** Whether the preview draws a reload button and a button that opens the
14850
+ example in a new tab, in its corner. */
14851
+ controls?: (HelixSandboxPreview["controls"]) | undefined;
14779
14852
  /** Writing direction inside the frame.
14780
14853
 
14781
14854
  Not reflected. It is payload for the render message and nothing selects on
@@ -14797,6 +14870,18 @@ Not reflected, for `direction`'s reason: the placement is applied by the
14797
14870
  document inside the frame, against its own root, so no rule on this side
14798
14871
  could read it. */
14799
14872
  layout?: (HelixSandboxPreview["layout"]) | undefined;
14873
+ /** The name of the button that opens the example in a new tab, under
14874
+ `controls`. */
14875
+ "open-label"?: (HelixSandboxPreview["openLabel"]) | undefined;
14876
+ /** The name of the button that opens the example in a new tab, under
14877
+ `controls`. */
14878
+ openLabel?: (HelixSandboxPreview["openLabel"]) | undefined;
14879
+ /** The name of the button that reloads the frame's document, under
14880
+ `controls`. */
14881
+ "reload-label"?: (HelixSandboxPreview["reloadLabel"]) | undefined;
14882
+ /** The name of the button that reloads the frame's document, under
14883
+ `controls`. */
14884
+ reloadLabel?: (HelixSandboxPreview["reloadLabel"]) | undefined;
14800
14885
  /** A script to run as a module after the markup, on every render of new
14801
14886
  source. A sandbox writes its `js` pane here. */
14802
14887
  script?: (HelixSandboxPreview["script"]) | undefined;
@@ -14818,6 +14903,9 @@ export type HelixSandboxPreviewVueEvents = {
14818
14903
 
14819
14904
  /** `HelixSandbox` component event */
14820
14905
  export type HelixSandboxElementEvent<E = Event> = TypedEvent<HelixSandbox, E>;
14906
+ /** `helix-before-change` event type */
14907
+ export type HelixSandboxHelixBeforeChangeElementEvent =
14908
+ HelixSandboxElementEvent<HelixBeforeChangeEvent>;
14821
14909
  /** `helix-before-edit` event type */
14822
14910
  export type HelixSandboxHelixBeforeEditElementEvent =
14823
14911
  HelixSandboxElementEvent<HelixBeforeEditEvent>;
@@ -14885,6 +14973,14 @@ sandbox back to the size it already was.
14885
14973
  Declared rather than captured, so it is a number a consumer states and can
14886
14974
  change, and it needs no first frame to be read on. */
14887
14975
  defaultSplit?: (HelixSandbox["defaultSplit"]) | undefined;
14976
+ /** The `name` of the source pane shown, where the sandbox holds several.
14977
+
14978
+ Unset, or a name no pane has, shows the first. */
14979
+ file?: (HelixSandbox["file"]) | undefined;
14980
+ /** The name of the file tabs, read by screen readers. */
14981
+ "files-label"?: (HelixSandbox["filesLabel"]) | undefined;
14982
+ /** The name of the file tabs, read by screen readers. */
14983
+ filesLabel?: (HelixSandbox["filesLabel"]) | undefined;
14888
14984
  /** Which pane comes first, before the divider.
14889
14985
 
14890
14986
  A sandbox is read in one of two directions and the two are not a
@@ -14958,6 +15054,10 @@ is `preview`. */
14958
15054
  };
14959
15055
 
14960
15056
  export type HelixSandboxVueEvents = {
15057
+ /** A file tab showed its pane, whose `name` `file` now holds. */
15058
+ change: HelixSandboxElementEvent;
15059
+ /** Fired before a file tab shows its pane, with the pane's `name`. Cancelable: cancel it to keep the pane shown. */
15060
+ "helix-before-change": HelixSandboxHelixBeforeChangeElementEvent;
14961
15061
  /** Fired before the source is edited. The source pane dispatches it, and you can listen for it on the sandbox. Cancelable: cancel it to keep the source unchanged. */
14962
15062
  "helix-before-edit": HelixSandboxHelixBeforeEditElementEvent;
14963
15063
  /** Fired before the panel's divider is released, with the panel's height in pixels. A panel dragged closed reports `panel-collapsed-size`, its smallest height. Cancelable: cancel it to keep the current height. */
@@ -15002,6 +15102,9 @@ export type HelixSandboxSourceVueProps = {
15002
15102
  "keys-description"?: (HelixSandboxSource["keysDescription"]) | undefined;
15003
15103
  /** The field's description, read by screen readers while Tab indents. */
15004
15104
  keysDescription?: (HelixSandboxSource["keysDescription"]) | undefined;
15105
+ /** The pane's file name, such as `index.html`, on its tab where a sandbox
15106
+ holds several panes. Empty puts the pane's `name` on the tab. */
15107
+ label?: (HelixSandboxSource["label"]) | undefined;
15005
15108
  /** Which source this pane holds. Every `helix-before-edit` event includes it.
15006
15109
 
15007
15110
  `html` and `css` are what the sandbox root routes on; any other name is
@@ -20117,9 +20220,15 @@ export type HelixVideoPlaylistHelixActivateElementEvent =
20117
20220
  /** `helix-before-activate` event type */
20118
20221
  export type HelixVideoPlaylistHelixBeforeActivateElementEvent =
20119
20222
  HelixVideoPlaylistElementEvent<HelixBeforeActivateEvent>;
20223
+ /** `helix-before-reorder` event type */
20224
+ export type HelixVideoPlaylistHelixBeforeReorderElementEvent =
20225
+ HelixVideoPlaylistElementEvent<HelixBeforeReorderEvent>;
20120
20226
  /** `helix-end` event type */
20121
20227
  export type HelixVideoPlaylistHelixEndElementEvent =
20122
20228
  HelixVideoPlaylistElementEvent<HelixEndEvent>;
20229
+ /** `helix-reorder` event type */
20230
+ export type HelixVideoPlaylistHelixReorderElementEvent =
20231
+ HelixVideoPlaylistElementEvent<HelixReorderEvent>;
20123
20232
 
20124
20233
  export type HelixVideoPlaylistVueProps = {
20125
20234
  /** The `value` of the current item.
@@ -20139,12 +20248,32 @@ Ignored once `active` is written. */
20139
20248
 
20140
20249
  Ignored once `active` is written. */
20141
20250
  defaultActive?: (HelixVideoPlaylist["defaultActive"]) | undefined;
20251
+ /** What screen readers hear when a move is put back, in a `reorderable`
20252
+ playlist. `{name}` is the entry's words. */
20253
+ "canceled-label"?: (HelixVideoPlaylist["canceledLabel"]) | undefined;
20254
+ /** What screen readers hear when a move is put back, in a `reorderable`
20255
+ playlist. `{name}` is the entry's words. */
20256
+ canceledLabel?: (HelixVideoPlaylist["canceledLabel"]) | undefined;
20257
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
20258
+ playlist. `{name}` is the entry's words. */
20259
+ "dropped-label"?: (HelixVideoPlaylist["droppedLabel"]) | undefined;
20260
+ /** What screen readers hear when a moved entry is let go, in a `reorderable`
20261
+ playlist. `{name}` is the entry's words. */
20262
+ droppedLabel?: (HelixVideoPlaylist["droppedLabel"]) | undefined;
20142
20263
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
20143
20264
  "empty-label"?: (HelixVideoPlaylist["emptyLabel"]) | undefined;
20144
20265
  /** What the playlist says while it has no entries. The `empty` slot replaces it. */
20145
20266
  emptyLabel?: (HelixVideoPlaylist["emptyLabel"]) | undefined;
20146
20267
  /** The list's name, read by screen readers. */
20147
20268
  label?: (HelixVideoPlaylist["label"]) | undefined;
20269
+ /** What screen readers hear each time a key moves an entry, in a
20270
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
20271
+ new place, counting from 1, and `{count}` the number of entries. */
20272
+ "moved-label"?: (HelixVideoPlaylist["movedLabel"]) | undefined;
20273
+ /** What screen readers hear each time a key moves an entry, in a
20274
+ `reorderable` playlist. `{name}` is the entry's words, `{position}` its
20275
+ new place, counting from 1, and `{count}` the number of entries. */
20276
+ movedLabel?: (HelixVideoPlaylist["movedLabel"]) | undefined;
20148
20277
  /** Stays on an entry when its clip ends, where the playlist would otherwise
20149
20278
  play the next one. The player's controls, a press, and `next()` still
20150
20279
  move. `repeat="one"` still plays the entry again. */
@@ -20153,6 +20282,12 @@ move. `repeat="one"` still plays the entry again. */
20153
20282
  play the next one. The player's controls, a press, and `next()` still
20154
20283
  move. `repeat="one"` still plays the entry again. */
20155
20284
  noAdvance?: (HelixVideoPlaylist["noAdvance"]) | undefined;
20285
+ /** What screen readers hear when a pointer picks up an entry, in a
20286
+ `reorderable` playlist. `{name}` is the entry's words. */
20287
+ "picked-up-label"?: (HelixVideoPlaylist["pickedUpLabel"]) | undefined;
20288
+ /** What screen readers hear when a pointer picks up an entry, in a
20289
+ `reorderable` playlist. `{name}` is the entry's words. */
20290
+ pickedUpLabel?: (HelixVideoPlaylist["pickedUpLabel"]) | undefined;
20156
20291
  /** What the live region says when the playlist moves to another entry.
20157
20292
  `{title}` is the entry's name.
20158
20293
 
@@ -20167,6 +20302,10 @@ playlist starts the next one, and the only other trace of that is the
20167
20302
  playlist starts the next one, and the only other trace of that is the
20168
20303
  `aria-current` on a button the reader is not on. */
20169
20304
  playingLabel?: (HelixVideoPlaylist["playingLabel"]) | undefined;
20305
+ /** Lets a reader move the entries, with Alt and the arrow keys or by
20306
+ dragging one. The playlist moves no entry itself: you move your entries
20307
+ on `helix-reorder`. */
20308
+ reorderable?: (HelixVideoPlaylist["reorderable"]) | undefined;
20170
20309
  /** What happens when an entry ends with no next one to go to. `one` plays the
20171
20310
  same entry again, and `all` goes from the last entry back to the first.
20172
20311
  Absent, the playlist stops on the last entry and sends `helix-end`.
@@ -20186,8 +20325,12 @@ export type HelixVideoPlaylistVueEvents = {
20186
20325
  "helix-activate": HelixVideoPlaylistHelixActivateElementEvent;
20187
20326
  /** The current entry is about to change, and `detail.cause` says why: `press`, `next`, `previous`, `ended`, or `removed`. Cancelable: cancel it to keep the current entry. */
20188
20327
  "helix-before-activate": HelixVideoPlaylistHelixBeforeActivateElementEvent;
20328
+ /** An entry was moved to a new place, in a `reorderable` playlist, with every entry's value in the new order in `detail.keys`. Cancelable: cancel it to keep the entry where it is. */
20329
+ "helix-before-reorder": HelixVideoPlaylistHelixBeforeReorderElementEvent;
20189
20330
  /** The last entry finished playing, and the playlist stopped there. Not sent while `repeat` is set. */
20190
20331
  "helix-end": HelixVideoPlaylistHelixEndElementEvent;
20332
+ /** Fired after `helix-before-reorder` when nobody canceled it. Move your entries to the order in `keys`. Cancelable: cancel it to say the move did not happen. */
20333
+ "helix-reorder": HelixVideoPlaylistHelixReorderElementEvent;
20191
20334
  };
20192
20335
 
20193
20336
  /** `HelixVideo` component event */
@@ -21130,6 +21273,10 @@ export type CustomCssProperties = {
21130
21273
  "--canvas-label-editor-inline-size"?: (string) | undefined;
21131
21274
  /** The size of the label on a connection. */
21132
21275
  "--canvas-label-font-size"?: (string) | undefined;
21276
+ /** The height of the minimap, under `controls="minimap"`. */
21277
+ "--canvas-minimap-block-size"?: (string) | undefined;
21278
+ /** The width of the minimap, under `controls="minimap"`. */
21279
+ "--canvas-minimap-inline-size"?: (string) | undefined;
21133
21280
  /** The frame's corners. */
21134
21281
  "--canvas-radius"?: (string) | undefined;
21135
21282
  /** The color of what is selected: a card's outline, its corners and its move handle, a connection and its ends, and the box drawn to select. */
@@ -23966,13 +24113,13 @@ export interface WcToolkitVueGlobalComponents {
23966
24113
  HelixRatingVueProps,
23967
24114
  HelixRatingVueEvents
23968
24115
  >;
23969
- /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Without 'src', the frame loads a built-in document**, so a sandbox renders with nothing to host. It runs HTML, CSS, and scripts, and reports the console, uncaught errors, its height, and presses as a frame on 'servePreview' does. It defines no element, so an example that uses Helix components needs a 'src' that imports them. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. **A preview says where it is.** It is ':state(loading)' from the moment it has a 'src' until that document can take the example, and again through 'reload()'. It is ':state(failed)' once the example throws an error it does not catch, until the next source is sent, which a frame on 'servePreview' reports. A page draws its own spinner or message from either, such as a sibling shown by 'helix-sandbox-preview:state(failed) + .message'. */
24116
+ /** A sandboxed '<iframe>' that loads 'src', a document you provide. That document imports what the examples need, listens for a render message, and writes the markup into itself. **Without 'src', the frame loads a built-in document**, so a sandbox renders with nothing to host. It runs HTML, CSS, and scripts, and reports the console, uncaught errors, its height, and presses as a frame on 'servePreview' does. It defines no element, so an example that uses Helix components needs a 'src' that imports them. **Examples render in a frame**, so an example's styles and scripts do not affect the page around the sandbox, and 'position: fixed' stays inside the pane. The frame starts empty, with its own stylesheets and its own custom element registry, so 'src' must load the styles and components the examples use. **The source is untrusted, and the frame keeps it isolated.** The frame uses 'sandbox="allow-scripts"' and never 'allow-same-origin'. Together, the two let a document on the same origin remove its own sandbox, which is the same as having none. **A preview says where it is.** It is ':state(loading)' from the moment it has a 'src' until that document can take the example, and again through 'reload()'. It is ':state(failed)' once the example throws an error it does not catch, until the next source is sent, which a frame on 'servePreview' reports. A page draws its own spinner or message from either, such as a sibling shown by 'helix-sandbox-preview:state(failed) + .message'. **A failed preview shows the error over the example**, in the 'error' part, until the next source is sent. The terminal says it too, so the part is not announced. Hide it with '::part(error) { display: none }' where the page draws its own. **'controls' draws two buttons in the preview's corner**: one reloads the frame's document, as 'reload()' does, and one opens the example in a new tab, as 'open()' does. The tab runs it in a frame sandboxed as this one is. */
23970
24117
  "helix-sandbox-preview": DefineCustomElement<
23971
24118
  HelixSandboxPreview,
23972
24119
  HelixSandboxPreviewVueProps,
23973
24120
  HelixSandboxPreviewVueEvents
23974
24121
  >;
23975
- /** A source pane dispatches 'helix-before-edit', which bubbles, and the sandbox passes the value to the preview slotted into it. The source pane and the preview do not reference each other, so you can replace either one or use it alone. The event carries the pane's 'name', so one sandbox can hold several panes. 'html' sets the preview's markup, 'css' sets its stylesheet, and 'js' sets a script that runs as a module after the markup. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The dividers are two nested 'helix-splitter' elements**, which handle the pointer, the keyboard, and the corner. The inner splitter holds the panes and the outer one holds the panel, so the panel spans the full width. On a focused divider, the arrow keys move it, and 'Home' and 'End' move it to its ends. 'Enter' on the panes divider shuts the lead pane, and pressed again it opens the pane where it was. 'Enter' on the panel divider shuts the panel to 'panel-collapsed-size', and pressed again it opens the panel to its last height. */
24122
+ /** A source pane dispatches 'helix-before-edit', which bubbles, and the sandbox passes the value to the preview slotted into it. The source pane and the preview do not reference each other, so you can replace either one or use it alone. The event carries the pane's 'name', so one sandbox can hold several panes. 'html' sets the preview's markup, 'css' sets its stylesheet, and 'js' sets a script that runs as a module after the markup. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The dividers are two nested 'helix-splitter' elements**, which handle the pointer, the keyboard, and the corner. The inner splitter holds the panes and the outer one holds the panel, so the panel spans the full width. **Several source panes are files**, one shown at a time under a row of tabs, each named by the pane's 'label' or, without one, its 'name'. 'file' holds the 'name' of the pane shown. The tabs are a tab list: the arrow keys move between them and show each pane, and 'Home' and 'End' go to the first and the last. Choosing one sends 'helix-before-change' with the pane's 'name', which you can cancel, and 'change' once 'file' holds it. The panes not shown carry 'hidden'. One pane draws no tabs. **Any editor can be the source pane**: an element in the 'source' slot with a 'name' that dispatches 'helix-before-edit' with its text, which bubbles. A wrapper around CodeMirror or Monaco sends one on each change and is a pane like 'helix-sandbox-source', and the sandbox reads its 'value' to seed the preview. Dispatch 'helix-caret' from it too for the status bar's position. On a focused divider, the arrow keys move it, and 'Home' and 'End' move it to its ends. 'Enter' on the panes divider shuts the lead pane, and pressed again it opens the pane where it was. 'Enter' on the panel divider shuts the panel to 'panel-collapsed-size', and pressed again it opens the panel to its last height. */
23976
24123
  "helix-sandbox": DefineCustomElement<
23977
24124
  HelixSandbox,
23978
24125
  HelixSandboxVueProps,
package/types/words.d.ts CHANGED
@@ -1157,6 +1157,21 @@ declare module '@fusion.dev/helix-core' {
1157
1157
  * English: `Show all lines`
1158
1158
  */
1159
1159
  expandLabel: Message
1160
+ /**
1161
+ * The words of a button that hides a run of unchanged lines it showed, in a
1162
+ * diff with `context-lines`. `{count}` is how many, and each language
1163
+ * writes the forms it has.
1164
+ *
1165
+ * English: `{count, plural, one {Hide # unchanged line} other {Hide # unchanged lines}}`
1166
+ */
1167
+ hideUnchangedLabel: Message
1168
+ /**
1169
+ * The words of a button that shows a folded run of unchanged lines, in a
1170
+ * diff with `context-lines`. `{count}` is how many.
1171
+ *
1172
+ * English: `{count, plural, one {Show # unchanged line} other {Show # unchanged lines}}`
1173
+ */
1174
+ showUnchangedLabel: Message
1160
1175
  /**
1161
1176
  * The wrap button's name, which it keeps whether it is pressed or not.
1162
1177
  *
@@ -1895,6 +1910,13 @@ declare module '@fusion.dev/helix-core' {
1895
1910
  * English: `Copy value`
1896
1911
  */
1897
1912
  copyValueLabel: Message
1913
+ /**
1914
+ * What the tree says while there is no value to show, such as before a
1915
+ * fetch answers. The `empty` slot replaces it.
1916
+ *
1917
+ * English: `Nothing to show`
1918
+ */
1919
+ emptyLabel: Message
1898
1920
  /**
1899
1921
  * The filter field's placeholder and accessible name.
1900
1922
  *
@@ -1917,6 +1939,13 @@ declare module '@fusion.dev/helix-core' {
1917
1939
  * English: `{count, plural, one {# key} other {# keys}}`
1918
1940
  */
1919
1941
  keysLabel: Message
1942
+ /**
1943
+ * What the tree says while a filter matched no entry. The `empty` slot
1944
+ * replaces it.
1945
+ *
1946
+ * English: `No matches`
1947
+ */
1948
+ noMatchesLabel: Message
1920
1949
  /**
1921
1950
  * What a screen reader hears when a filter matches entries. `{count}` is
1922
1951
  * how many, written in the locale, and each language writes the forms it
@@ -2107,6 +2136,12 @@ declare module '@fusion.dev/helix-core' {
2107
2136
  * English: `Resize panes and panel`
2108
2137
  */
2109
2138
  cornerLabel: Message
2139
+ /**
2140
+ * The name of the file tabs, read by screen readers.
2141
+ *
2142
+ * English: `Files`
2143
+ */
2144
+ filesLabel: Message
2110
2145
  /**
2111
2146
  * The name of the panel's divider, read by screen readers.
2112
2147
  *
@@ -2130,6 +2165,20 @@ declare module '@fusion.dev/helix-core' {
2130
2165
  * English: `Preview`
2131
2166
  */
2132
2167
  label: Message
2168
+ /**
2169
+ * The name of the button that opens the example in a new tab, under
2170
+ * `controls`.
2171
+ *
2172
+ * English: `Open preview in a new tab`
2173
+ */
2174
+ openLabel: Message
2175
+ /**
2176
+ * The name of the button that reloads the frame's document, under
2177
+ * `controls`.
2178
+ *
2179
+ * English: `Reload preview`
2180
+ */
2181
+ reloadLabel: Message
2133
2182
  }
2134
2183
  'helix-sandbox-source': {
2135
2184
  /**
@@ -2780,6 +2829,20 @@ declare module '@fusion.dev/helix-core' {
2780
2829
  volumeLabel: Message
2781
2830
  }
2782
2831
  'helix-video-playlist': {
2832
+ /**
2833
+ * What screen readers hear when a move is put back, in a `reorderable`
2834
+ * playlist. `{name}` is the entry's words.
2835
+ *
2836
+ * English: `Canceled`
2837
+ */
2838
+ canceledLabel: Message
2839
+ /**
2840
+ * What screen readers hear when a moved entry is let go, in a `reorderable`
2841
+ * playlist. `{name}` is the entry's words.
2842
+ *
2843
+ * English: `Dropped`
2844
+ */
2845
+ droppedLabel: Message
2783
2846
  /**
2784
2847
  * What the playlist says while it has no entries. The `empty` slot replaces it.
2785
2848
  *
@@ -2792,6 +2855,21 @@ declare module '@fusion.dev/helix-core' {
2792
2855
  * English: `Playlist`
2793
2856
  */
2794
2857
  label: Message
2858
+ /**
2859
+ * What screen readers hear each time a key moves an entry, in a
2860
+ * `reorderable` playlist. `{name}` is the entry's words, `{position}` its
2861
+ * new place, counting from 1, and `{count}` the number of entries.
2862
+ *
2863
+ * English: `{name} moved to position {position} of {count}`
2864
+ */
2865
+ movedLabel: Message
2866
+ /**
2867
+ * What screen readers hear when a pointer picks up an entry, in a
2868
+ * `reorderable` playlist. `{name}` is the entry's words.
2869
+ *
2870
+ * English: `Picked up {name}`
2871
+ */
2872
+ pickedUpLabel: Message
2795
2873
  /**
2796
2874
  * What the live region says when the playlist moves to another entry.
2797
2875
  * `{title}` is the entry's name.