@fusion.dev/helix 0.183.0 → 0.185.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/custom-elements.json +325 -109
- package/dist/code-block/index.d.ts +1 -0
- package/dist/code-block/index.js +1 -0
- package/dist/data-table/root/data-table-root.css.js +1 -1
- package/dist/data-table/root/data-table-root.d.ts +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/menu/filter/index.d.ts +1 -0
- package/dist/menu/filter/index.js +5 -0
- package/dist/menu/filter/menu-filter.css.d.ts +1 -0
- package/dist/menu/filter/menu-filter.css.js +2 -0
- package/dist/menu/root/menu-root.css.js +1 -1
- package/dist/sandbox/compile.d.ts +63 -0
- package/dist/sandbox/compile.js +52 -0
- package/dist/sandbox/preview/sandbox-preview.d.ts +29 -1
- package/dist/sandbox/preview/sandbox-preview.js +45 -7
- package/dist/sandbox/root/sandbox-root.d.ts +4 -0
- package/dist/sandbox/root/sandbox-root.js +1 -1
- package/dist/strands/root/strands-root.d.ts +4 -4
- package/dist/strands/root/strands-root.js +1 -6
- package/lint.json +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +166 -36
- package/types/vue.d.ts +42 -12
- package/types/words.d.ts +7 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fusion.dev/helix",
|
|
3
3
|
"description": "Styled component tier. Extends the headless tier with token-driven presentation.",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.185.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ross Sheppard <ross.sheppard@fusion.dev>",
|
|
7
7
|
"repository": {
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
},
|
|
55
55
|
"bugs": "https://github.com/project-fusion/fusion/issues",
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@fusion.dev/helix-core": "0.
|
|
58
|
-
"@fusion.dev/helix-headless": "0.
|
|
59
|
-
"@fusion.dev/helix-styles": "0.
|
|
57
|
+
"@fusion.dev/helix-core": "0.185.0",
|
|
58
|
+
"@fusion.dev/helix-headless": "0.185.0",
|
|
59
|
+
"@fusion.dev/helix-styles": "0.185.0",
|
|
60
60
|
"tslib": "^2.8.1"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@fusion.dev/helix-cem": "0.
|
|
64
|
-
"@fusion.dev/helix-testing": "0.
|
|
63
|
+
"@fusion.dev/helix-cem": "0.185.0",
|
|
64
|
+
"@fusion.dev/helix-testing": "0.185.0",
|
|
65
65
|
"@fusion.dev/scripts": "0.0.0-dev",
|
|
66
66
|
"@happy-dom/global-registrator": "^20.14.5",
|
|
67
67
|
"@lit-labs/ssr": "^4.1.0",
|
package/types/jsx.d.ts
CHANGED
|
@@ -8045,7 +8045,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
|
|
|
8045
8045
|
with the gutter's numbers and the block keeps one tab stop. The code stays
|
|
8046
8046
|
in the slot, so the copy button copies it as written and a reader without
|
|
8047
8047
|
the script still has it. Not called on a server, which has no code to
|
|
8048
|
-
read, nor for a diff.
|
|
8048
|
+
read, nor for a diff.
|
|
8049
|
+
|
|
8050
|
+
Absent, the block draws with the highlighter `registerHighlighter` gave
|
|
8051
|
+
every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
|
|
8052
|
+
registered one, and plain otherwise. */
|
|
8049
8053
|
highlight?: (HelixCodeBlock["highlight"]) | undefined;
|
|
8050
8054
|
|
|
8051
8055
|
/** A file tab showed its file, whose name `file` now holds. */
|
|
@@ -8285,7 +8289,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
|
|
|
8285
8289
|
with the gutter's numbers and the block keeps one tab stop. The code stays
|
|
8286
8290
|
in the slot, so the copy button copies it as written and a reader without
|
|
8287
8291
|
the script still has it. Not called on a server, which has no code to
|
|
8288
|
-
read, nor for a diff.
|
|
8292
|
+
read, nor for a diff.
|
|
8293
|
+
|
|
8294
|
+
Absent, the block draws with the highlighter `registerHighlighter` gave
|
|
8295
|
+
every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
|
|
8296
|
+
registered one, and plain otherwise. */
|
|
8289
8297
|
"prop:highlight"?: (HelixCodeBlock["highlight"]) | undefined;
|
|
8290
8298
|
/** A file tab showed its file, whose name `file` now holds. */
|
|
8291
8299
|
"on:change"?: ((e: HelixCodeBlockElementEvent) => void) | undefined;
|
|
@@ -11133,6 +11141,16 @@ and the grid becomes a tree grid.
|
|
|
11133
11141
|
Reflected, because the styled tier indents a tree grid's row headers by
|
|
11134
11142
|
it. No default, so a table that sets none writes nothing onto its host. */
|
|
11135
11143
|
childField?: (HelixDataTable["childField"]) | undefined;
|
|
11144
|
+
/** The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
11145
|
+
dealt out one track to a column in the order the columns are written. A
|
|
11146
|
+
column's own `width` wins in its place, and a column it does not reach
|
|
11147
|
+
takes the track a column with no `width` takes.
|
|
11148
|
+
|
|
11149
|
+
**The one track list a server can send.** A server rendering this element
|
|
11150
|
+
has no columns to read a `width` from, and neither has a stylesheet laying
|
|
11151
|
+
out the rows a page served before the table upgrades, so a table sized here
|
|
11152
|
+
lays those rows out at the widths it draws. */
|
|
11153
|
+
columns?: (HelixDataTable["columns"]) | undefined;
|
|
11136
11154
|
/** The keys of the rows open at the start, separated by commas. Used until
|
|
11137
11155
|
`expanded` is set. */
|
|
11138
11156
|
"default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
|
|
@@ -11552,6 +11570,16 @@ and the grid becomes a tree grid.
|
|
|
11552
11570
|
Reflected, because the styled tier indents a tree grid's row headers by
|
|
11553
11571
|
it. No default, so a table that sets none writes nothing onto its host. */
|
|
11554
11572
|
"prop:childField"?: (HelixDataTable["childField"]) | undefined;
|
|
11573
|
+
/** The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
11574
|
+
dealt out one track to a column in the order the columns are written. A
|
|
11575
|
+
column's own `width` wins in its place, and a column it does not reach
|
|
11576
|
+
takes the track a column with no `width` takes.
|
|
11577
|
+
|
|
11578
|
+
**The one track list a server can send.** A server rendering this element
|
|
11579
|
+
has no columns to read a `width` from, and neither has a stylesheet laying
|
|
11580
|
+
out the rows a page served before the table upgrades, so a table sized here
|
|
11581
|
+
lays those rows out at the widths it draws. */
|
|
11582
|
+
"prop:columns"?: (HelixDataTable["columns"]) | undefined;
|
|
11555
11583
|
/** The keys of the rows open at the start, separated by commas. Used until
|
|
11556
11584
|
`expanded` is set. */
|
|
11557
11585
|
"attr:default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
|
|
@@ -24301,7 +24329,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
|
|
|
24301
24329
|
starts with every row showing. */
|
|
24302
24330
|
filter?: (HelixMenu["filter"]) | undefined;
|
|
24303
24331
|
/** Whether the menu shows a field above its rows that narrows them as the
|
|
24304
|
-
reader types, with focus staying in the field
|
|
24332
|
+
reader types, with focus staying in the field, once
|
|
24333
|
+
`@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
|
|
24334
|
+
is imported. Without that import it does nothing, so a menu that never
|
|
24335
|
+
filters carries none of the filter's code, and a development build says
|
|
24336
|
+
which import is missing. */
|
|
24305
24337
|
filterable?: (HelixMenu["filterable"]) | undefined;
|
|
24306
24338
|
/** The filter field's name and placeholder. */
|
|
24307
24339
|
"filter-label"?: (HelixMenu["filterLabel"]) | undefined;
|
|
@@ -24435,7 +24467,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
|
|
|
24435
24467
|
starts with every row showing. */
|
|
24436
24468
|
"prop:filter"?: (HelixMenu["filter"]) | undefined;
|
|
24437
24469
|
/** Whether the menu shows a field above its rows that narrows them as the
|
|
24438
|
-
reader types, with focus staying in the field
|
|
24470
|
+
reader types, with focus staying in the field, once
|
|
24471
|
+
`@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
|
|
24472
|
+
is imported. Without that import it does nothing, so a menu that never
|
|
24473
|
+
filters carries none of the filter's code, and a development build says
|
|
24474
|
+
which import is missing. */
|
|
24439
24475
|
"prop:filterable"?: (HelixMenu["filterable"]) | undefined;
|
|
24440
24476
|
/** The filter field's name and placeholder. */
|
|
24441
24477
|
"attr:filter-label"?: (HelixMenu["filterLabel"]) | undefined;
|
|
@@ -34736,13 +34772,11 @@ and each column may say otherwise.
|
|
|
34736
34772
|
**It is also the only track list a server can send.** The shim has no tree
|
|
34737
34773
|
to walk, so a render there knows of no columns and this attribute is the
|
|
34738
34774
|
whole answer: a table given one lays its grid out in the first paint, and a
|
|
34739
|
-
table sized only by its columns
|
|
34775
|
+
table sized only by its columns takes, until it upgrades, a track for each
|
|
34776
|
+
column at the width a column with no `width` takes (`helix.css`).
|
|
34740
34777
|
|
|
34741
|
-
|
|
34742
|
-
|
|
34743
|
-
and a list here would be a second way to say what that says. This table's
|
|
34744
|
-
cells are markup, and a table written as rows of cells with no column
|
|
34745
|
-
declared in it has nowhere else to be sized from. */
|
|
34778
|
+
Data Table takes the same list, for the same reason: a data table that
|
|
34779
|
+
serves its first page as rows is laid out by it before it upgrades. */
|
|
34746
34780
|
columns?: (HelixTable["columns"]) | undefined;
|
|
34747
34781
|
/** The keys of the rows whose rows are shown at the start, separated by
|
|
34748
34782
|
commas. Used until `expanded` is set. */
|
|
@@ -34999,13 +35033,11 @@ and each column may say otherwise.
|
|
|
34999
35033
|
**It is also the only track list a server can send.** The shim has no tree
|
|
35000
35034
|
to walk, so a render there knows of no columns and this attribute is the
|
|
35001
35035
|
whole answer: a table given one lays its grid out in the first paint, and a
|
|
35002
|
-
table sized only by its columns
|
|
35036
|
+
table sized only by its columns takes, until it upgrades, a track for each
|
|
35037
|
+
column at the width a column with no `width` takes (`helix.css`).
|
|
35003
35038
|
|
|
35004
|
-
|
|
35005
|
-
|
|
35006
|
-
and a list here would be a second way to say what that says. This table's
|
|
35007
|
-
cells are markup, and a table written as rows of cells with no column
|
|
35008
|
-
declared in it has nowhere else to be sized from. */
|
|
35039
|
+
Data Table takes the same list, for the same reason: a data table that
|
|
35040
|
+
serves its first page as rows is laid out by it before it upgrades. */
|
|
35009
35041
|
"prop:columns"?: (HelixTable["columns"]) | undefined;
|
|
35010
35042
|
/** The keys of the rows whose rows are shown at the start, separated by
|
|
35011
35043
|
commas. Used until `expanded` is set. */
|
|
@@ -36806,6 +36838,12 @@ number, and both are carried as one comma-separated value, which is what a
|
|
|
36806
36838
|
form submits. `TimePicker` carries the longer note on the interaction and
|
|
36807
36839
|
on why a wheel cannot do either. */
|
|
36808
36840
|
mode?: (HelixTimeInput["mode"]) | undefined;
|
|
36841
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
36842
|
+
`show-now`. */
|
|
36843
|
+
"now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
36844
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
36845
|
+
`show-now`. */
|
|
36846
|
+
nowLabel?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
36809
36847
|
/** Placeholder text shown before a time is entered. */
|
|
36810
36848
|
placeholder?: (HelixTimeInput["placeholder"]) | undefined;
|
|
36811
36849
|
/** The message shown when a range holds more than two times.
|
|
@@ -36846,6 +36884,14 @@ removes rather than as "Remove" said once per time. */
|
|
|
36846
36884
|
may give them, the field writes them, and the list's `step` counts seconds.
|
|
36847
36885
|
See Time Picker's `seconds`. */
|
|
36848
36886
|
seconds?: (HelixTimeInput["seconds"]) | undefined;
|
|
36887
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
36888
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
36889
|
+
are `now-label`. */
|
|
36890
|
+
"show-now"?: (HelixTimeInput["showNow"]) | undefined;
|
|
36891
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
36892
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
36893
|
+
are `now-label`. */
|
|
36894
|
+
showNow?: (HelixTimeInput["showNow"]) | undefined;
|
|
36849
36895
|
/** How far apart the offered times are, in minutes, or in seconds with
|
|
36850
36896
|
`seconds`. */
|
|
36851
36897
|
step?: (HelixTimeInput["step"]) | undefined;
|
|
@@ -37214,6 +37260,12 @@ number, and both are carried as one comma-separated value, which is what a
|
|
|
37214
37260
|
form submits. `TimePicker` carries the longer note on the interaction and
|
|
37215
37261
|
on why a wheel cannot do either. */
|
|
37216
37262
|
"prop:mode"?: (HelixTimeInput["mode"]) | undefined;
|
|
37263
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
37264
|
+
`show-now`. */
|
|
37265
|
+
"attr:now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
37266
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
37267
|
+
`show-now`. */
|
|
37268
|
+
"prop:nowLabel"?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
37217
37269
|
/** Placeholder text shown before a time is entered. */
|
|
37218
37270
|
"prop:placeholder"?: (HelixTimeInput["placeholder"]) | undefined;
|
|
37219
37271
|
/** The message shown when a range holds more than two times.
|
|
@@ -37254,6 +37306,14 @@ removes rather than as "Remove" said once per time. */
|
|
|
37254
37306
|
may give them, the field writes them, and the list's `step` counts seconds.
|
|
37255
37307
|
See Time Picker's `seconds`. */
|
|
37256
37308
|
"prop:seconds"?: (HelixTimeInput["seconds"]) | undefined;
|
|
37309
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
37310
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
37311
|
+
are `now-label`. */
|
|
37312
|
+
"bool:show-now"?: (HelixTimeInput["showNow"]) | undefined;
|
|
37313
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
37314
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
37315
|
+
are `now-label`. */
|
|
37316
|
+
"prop:showNow"?: (HelixTimeInput["showNow"]) | undefined;
|
|
37257
37317
|
/** How far apart the offered times are, in minutes, or in seconds with
|
|
37258
37318
|
`seconds`. */
|
|
37259
37319
|
"prop:step"?: (HelixTimeInput["step"]) | undefined;
|
|
@@ -47510,7 +47570,11 @@ export type CustomElements = {
|
|
|
47510
47570
|
* with the gutter's numbers and the block keeps one tab stop. The code stays
|
|
47511
47571
|
* in the slot, so the copy button copies it as written and a reader without
|
|
47512
47572
|
* the script still has it. Not called on a server, which has no code to
|
|
47513
|
-
* read, nor for a diff.
|
|
47573
|
+
* read, nor for a diff.
|
|
47574
|
+
*
|
|
47575
|
+
* Absent, the block draws with the highlighter `registerHighlighter` gave
|
|
47576
|
+
* every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
|
|
47577
|
+
* registered one, and plain otherwise. (property only)
|
|
47514
47578
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
47515
47579
|
*
|
|
47516
47580
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -49363,7 +49427,9 @@ export type CustomElements = {
|
|
|
49363
49427
|
* Write it under the columns as `helix-table-row` and `helix-table-cell`
|
|
49364
49428
|
* elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
|
|
49365
49429
|
* draws them before it upgrades, and the table shows them until `rows` holds a
|
|
49366
|
-
* row.
|
|
49430
|
+
* row. It holds the checkbox column and the pagination's row from the first
|
|
49431
|
+
* paint, and takes the widths from `columns`, so nothing moves when the table
|
|
49432
|
+
* upgrades or draws its own rows.
|
|
49367
49433
|
*
|
|
49368
49434
|
* ## Attributes & Properties
|
|
49369
49435
|
*
|
|
@@ -49384,6 +49450,15 @@ export type CustomElements = {
|
|
|
49384
49450
|
*
|
|
49385
49451
|
* Reflected, because the styled tier indents a tree grid's row headers by
|
|
49386
49452
|
* it. No default, so a table that sets none writes nothing onto its host.
|
|
49453
|
+
* - `columns`: The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
49454
|
+
* dealt out one track to a column in the order the columns are written. A
|
|
49455
|
+
* column's own `width` wins in its place, and a column it does not reach
|
|
49456
|
+
* takes the track a column with no `width` takes.
|
|
49457
|
+
*
|
|
49458
|
+
* **The one track list a server can send.** A server rendering this element
|
|
49459
|
+
* has no columns to read a `width` from, and neither has a stylesheet laying
|
|
49460
|
+
* out the rows a page served before the table upgrades, so a table sized here
|
|
49461
|
+
* lays those rows out at the widths it draws.
|
|
49387
49462
|
* - `default-expanded`/`defaultExpanded`: The keys of the rows open at the start, separated by commas. Used until
|
|
49388
49463
|
* `expanded` is set.
|
|
49389
49464
|
* - `default-filter`/`defaultFilter`: The starting search query, used until `filter` is set.
|
|
@@ -58364,7 +58439,11 @@ export type CustomElements = {
|
|
|
58364
58439
|
* Cleared as the menu closes and as a submenu opens or closes, so each page
|
|
58365
58440
|
* starts with every row showing.
|
|
58366
58441
|
* - `filterable`: Whether the menu shows a field above its rows that narrows them as the
|
|
58367
|
-
* reader types, with focus staying in the field
|
|
58442
|
+
* reader types, with focus staying in the field, once
|
|
58443
|
+
* `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
|
|
58444
|
+
* is imported. Without that import it does nothing, so a menu that never
|
|
58445
|
+
* filters carries none of the filter's code, and a development build says
|
|
58446
|
+
* which import is missing.
|
|
58368
58447
|
* - `filter-label`/`filterLabel`: The filter field's name and placeholder.
|
|
58369
58448
|
* - `label`: Accessible name for the surface.
|
|
58370
58449
|
*
|
|
@@ -62677,6 +62756,15 @@ export type CustomElements = {
|
|
|
62677
62756
|
* in the `js` pane or in another module loads it. A sandbox writes each pane
|
|
62678
62757
|
* named for a module file here.
|
|
62679
62758
|
*
|
|
62759
|
+
* **A module in TypeScript or JSX runs too**: a path ending in `.ts`, `.tsx`
|
|
62760
|
+
* or `.jsx` is compiled to JavaScript first, and imported by its path or by
|
|
62761
|
+
* its path without the extension. The compiler, Sucrase, loads from `cdn` the
|
|
62762
|
+
* first time a module needs it, so the package carries none and a preview
|
|
62763
|
+
* with no such module loads none. JSX compiles to the automatic runtime,
|
|
62764
|
+
* `react/jsx-runtime`, from `dependencies`, or to the one a
|
|
62765
|
+
* `@jsxImportSource` comment names. What fails to compile shows in the
|
|
62766
|
+
* `error` part as an error the example threw, when the example imports it.
|
|
62767
|
+
*
|
|
62680
62768
|
* **Examples render in a frame**, so an example's styles and scripts do not
|
|
62681
62769
|
* affect the page around the sandbox, and `position: fixed` stays inside the
|
|
62682
62770
|
* pane. The frame starts empty, with its own stylesheets and its own custom
|
|
@@ -62860,6 +62948,10 @@ export type CustomElements = {
|
|
|
62860
62948
|
* - `js` sets a script that runs as a module after the markup.
|
|
62861
62949
|
* - A module file name ending in `.js` or `.mjs`, such as `utils.js`, is a
|
|
62862
62950
|
* module the other scripts import by its path, `./utils.js`.
|
|
62951
|
+
* - A module file name ending in `.ts`, `.tsx` or `.jsx`, such as `app.tsx`,
|
|
62952
|
+
* is one too, which the preview compiles to JavaScript first. The `js` pane
|
|
62953
|
+
* runs it with `import './app.tsx'`. A file that does not compile shows
|
|
62954
|
+
* why over the preview, as an error the example threw.
|
|
62863
62955
|
* - `package.json` sets the npm packages the scripts import by name, from its
|
|
62864
62956
|
* `dependencies`, which load from the preview's `cdn`.
|
|
62865
62957
|
*
|
|
@@ -66046,7 +66138,7 @@ export type CustomElements = {
|
|
|
66046
66138
|
*
|
|
66047
66139
|
* The ribbon stops moving in these cases:
|
|
66048
66140
|
* - `prefers-reduced-motion` is set. The element shows one still frame, and in
|
|
66049
|
-
* `travel` still follows the scroll
|
|
66141
|
+
* `travel` still follows the scroll.
|
|
66050
66142
|
* - The element is off screen or in a background tab.
|
|
66051
66143
|
*
|
|
66052
66144
|
* It shows a gradient from the same tokens in these cases, and matches
|
|
@@ -66775,13 +66867,11 @@ export type CustomElements = {
|
|
|
66775
66867
|
* **It is also the only track list a server can send.** The shim has no tree
|
|
66776
66868
|
* to walk, so a render there knows of no columns and this attribute is the
|
|
66777
66869
|
* whole answer: a table given one lays its grid out in the first paint, and a
|
|
66778
|
-
* table sized only by its columns
|
|
66870
|
+
* table sized only by its columns takes, until it upgrades, a track for each
|
|
66871
|
+
* column at the width a column with no `width` takes (`helix.css`).
|
|
66779
66872
|
*
|
|
66780
|
-
*
|
|
66781
|
-
*
|
|
66782
|
-
* and a list here would be a second way to say what that says. This table's
|
|
66783
|
-
* cells are markup, and a table written as rows of cells with no column
|
|
66784
|
-
* declared in it has nowhere else to be sized from.
|
|
66873
|
+
* Data Table takes the same list, for the same reason: a data table that
|
|
66874
|
+
* serves its first page as rows is laid out by it before it upgrades.
|
|
66785
66875
|
* - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
|
|
66786
66876
|
* commas. Used until `expanded` is set.
|
|
66787
66877
|
* - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
|
|
@@ -68241,6 +68331,8 @@ export type CustomElements = {
|
|
|
68241
68331
|
* number, and both are carried as one comma-separated value, which is what a
|
|
68242
68332
|
* form submits. `TimePicker` carries the longer note on the interaction and
|
|
68243
68333
|
* on why a wheel cannot do either.
|
|
68334
|
+
* - `now-label`/`nowLabel`: The words on the list's button that chooses the current time, drawn with
|
|
68335
|
+
* `show-now`.
|
|
68244
68336
|
* - `placeholder`: Placeholder text shown before a time is entered.
|
|
68245
68337
|
* - `range-length-message`/`rangeLengthMessage`: The message shown when a range holds more than two times.
|
|
68246
68338
|
*
|
|
@@ -68258,6 +68350,9 @@ export type CustomElements = {
|
|
|
68258
68350
|
* - `seconds`: Whether times carry their seconds: the value is `HH:mm:ss`, a typed time
|
|
68259
68351
|
* may give them, the field writes them, and the list's `step` counts seconds.
|
|
68260
68352
|
* See Time Picker's `seconds`.
|
|
68353
|
+
* - `show-now`/`showNow`: Draws a button under the times in the list that chooses the current time,
|
|
68354
|
+
* moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
68355
|
+
* are `now-label`.
|
|
68261
68356
|
* - `step`: How far apart the offered times are, in minutes, or in seconds with
|
|
68262
68357
|
* `seconds`.
|
|
68263
68358
|
* - `time-style`/`timeStyle`: Whether the field shows the time in the local style or as the value
|
|
@@ -77307,7 +77402,11 @@ export type CustomElementsSolidJs = {
|
|
|
77307
77402
|
* with the gutter's numbers and the block keeps one tab stop. The code stays
|
|
77308
77403
|
* in the slot, so the copy button copies it as written and a reader without
|
|
77309
77404
|
* the script still has it. Not called on a server, which has no code to
|
|
77310
|
-
* read, nor for a diff.
|
|
77405
|
+
* read, nor for a diff.
|
|
77406
|
+
*
|
|
77407
|
+
* Absent, the block draws with the highlighter `registerHighlighter` gave
|
|
77408
|
+
* every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
|
|
77409
|
+
* registered one, and plain otherwise. (property only)
|
|
77311
77410
|
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
77312
77411
|
*
|
|
77313
77412
|
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
@@ -79180,7 +79279,9 @@ export type CustomElementsSolidJs = {
|
|
|
79180
79279
|
* Write it under the columns as `helix-table-row` and `helix-table-cell`
|
|
79181
79280
|
* elements. `@fusion.dev/helix-styles/helix.css` lays them out as the table
|
|
79182
79281
|
* draws them before it upgrades, and the table shows them until `rows` holds a
|
|
79183
|
-
* row.
|
|
79282
|
+
* row. It holds the checkbox column and the pagination's row from the first
|
|
79283
|
+
* paint, and takes the widths from `columns`, so nothing moves when the table
|
|
79284
|
+
* upgrades or draws its own rows.
|
|
79184
79285
|
*
|
|
79185
79286
|
* ## Attributes & Properties
|
|
79186
79287
|
*
|
|
@@ -79201,6 +79302,15 @@ export type CustomElementsSolidJs = {
|
|
|
79201
79302
|
*
|
|
79202
79303
|
* Reflected, because the styled tier indents a tree grid's row headers by
|
|
79203
79304
|
* it. No default, so a table that sets none writes nothing onto its host.
|
|
79305
|
+
* - `columns`: The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
79306
|
+
* dealt out one track to a column in the order the columns are written. A
|
|
79307
|
+
* column's own `width` wins in its place, and a column it does not reach
|
|
79308
|
+
* takes the track a column with no `width` takes.
|
|
79309
|
+
*
|
|
79310
|
+
* **The one track list a server can send.** A server rendering this element
|
|
79311
|
+
* has no columns to read a `width` from, and neither has a stylesheet laying
|
|
79312
|
+
* out the rows a page served before the table upgrades, so a table sized here
|
|
79313
|
+
* lays those rows out at the widths it draws.
|
|
79204
79314
|
* - `default-expanded`/`defaultExpanded`: The keys of the rows open at the start, separated by commas. Used until
|
|
79205
79315
|
* `expanded` is set.
|
|
79206
79316
|
* - `default-filter`/`defaultFilter`: The starting search query, used until `filter` is set.
|
|
@@ -88328,7 +88438,11 @@ export type CustomElementsSolidJs = {
|
|
|
88328
88438
|
* Cleared as the menu closes and as a submenu opens or closes, so each page
|
|
88329
88439
|
* starts with every row showing.
|
|
88330
88440
|
* - `filterable`: Whether the menu shows a field above its rows that narrows them as the
|
|
88331
|
-
* reader types, with focus staying in the field
|
|
88441
|
+
* reader types, with focus staying in the field, once
|
|
88442
|
+
* `@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
|
|
88443
|
+
* is imported. Without that import it does nothing, so a menu that never
|
|
88444
|
+
* filters carries none of the filter's code, and a development build says
|
|
88445
|
+
* which import is missing.
|
|
88332
88446
|
* - `filter-label`/`filterLabel`: The filter field's name and placeholder.
|
|
88333
88447
|
* - `label`: Accessible name for the surface.
|
|
88334
88448
|
*
|
|
@@ -92720,6 +92834,15 @@ export type CustomElementsSolidJs = {
|
|
|
92720
92834
|
* in the `js` pane or in another module loads it. A sandbox writes each pane
|
|
92721
92835
|
* named for a module file here.
|
|
92722
92836
|
*
|
|
92837
|
+
* **A module in TypeScript or JSX runs too**: a path ending in `.ts`, `.tsx`
|
|
92838
|
+
* or `.jsx` is compiled to JavaScript first, and imported by its path or by
|
|
92839
|
+
* its path without the extension. The compiler, Sucrase, loads from `cdn` the
|
|
92840
|
+
* first time a module needs it, so the package carries none and a preview
|
|
92841
|
+
* with no such module loads none. JSX compiles to the automatic runtime,
|
|
92842
|
+
* `react/jsx-runtime`, from `dependencies`, or to the one a
|
|
92843
|
+
* `@jsxImportSource` comment names. What fails to compile shows in the
|
|
92844
|
+
* `error` part as an error the example threw, when the example imports it.
|
|
92845
|
+
*
|
|
92723
92846
|
* **Examples render in a frame**, so an example's styles and scripts do not
|
|
92724
92847
|
* affect the page around the sandbox, and `position: fixed` stays inside the
|
|
92725
92848
|
* pane. The frame starts empty, with its own stylesheets and its own custom
|
|
@@ -92906,6 +93029,10 @@ export type CustomElementsSolidJs = {
|
|
|
92906
93029
|
* - `js` sets a script that runs as a module after the markup.
|
|
92907
93030
|
* - A module file name ending in `.js` or `.mjs`, such as `utils.js`, is a
|
|
92908
93031
|
* module the other scripts import by its path, `./utils.js`.
|
|
93032
|
+
* - A module file name ending in `.ts`, `.tsx` or `.jsx`, such as `app.tsx`,
|
|
93033
|
+
* is one too, which the preview compiles to JavaScript first. The `js` pane
|
|
93034
|
+
* runs it with `import './app.tsx'`. A file that does not compile shows
|
|
93035
|
+
* why over the preview, as an error the example threw.
|
|
92909
93036
|
* - `package.json` sets the npm packages the scripts import by name, from its
|
|
92910
93037
|
* `dependencies`, which load from the preview's `cdn`.
|
|
92911
93038
|
*
|
|
@@ -96152,7 +96279,7 @@ export type CustomElementsSolidJs = {
|
|
|
96152
96279
|
*
|
|
96153
96280
|
* The ribbon stops moving in these cases:
|
|
96154
96281
|
* - `prefers-reduced-motion` is set. The element shows one still frame, and in
|
|
96155
|
-
* `travel` still follows the scroll
|
|
96282
|
+
* `travel` still follows the scroll.
|
|
96156
96283
|
* - The element is off screen or in a background tab.
|
|
96157
96284
|
*
|
|
96158
96285
|
* It shows a gradient from the same tokens in these cases, and matches
|
|
@@ -96896,13 +97023,11 @@ export type CustomElementsSolidJs = {
|
|
|
96896
97023
|
* **It is also the only track list a server can send.** The shim has no tree
|
|
96897
97024
|
* to walk, so a render there knows of no columns and this attribute is the
|
|
96898
97025
|
* whole answer: a table given one lays its grid out in the first paint, and a
|
|
96899
|
-
* table sized only by its columns
|
|
97026
|
+
* table sized only by its columns takes, until it upgrades, a track for each
|
|
97027
|
+
* column at the width a column with no `width` takes (`helix.css`).
|
|
96900
97028
|
*
|
|
96901
|
-
*
|
|
96902
|
-
*
|
|
96903
|
-
* and a list here would be a second way to say what that says. This table's
|
|
96904
|
-
* cells are markup, and a table written as rows of cells with no column
|
|
96905
|
-
* declared in it has nowhere else to be sized from.
|
|
97029
|
+
* Data Table takes the same list, for the same reason: a data table that
|
|
97030
|
+
* serves its first page as rows is laid out by it before it upgrades.
|
|
96906
97031
|
* - `default-expanded`/`defaultExpanded`: The keys of the rows whose rows are shown at the start, separated by
|
|
96907
97032
|
* commas. Used until `expanded` is set.
|
|
96908
97033
|
* - `default-selected`/`defaultSelected`: The keys selected at the start, separated by commas. Used until `selected`
|
|
@@ -98387,6 +98512,8 @@ export type CustomElementsSolidJs = {
|
|
|
98387
98512
|
* number, and both are carried as one comma-separated value, which is what a
|
|
98388
98513
|
* form submits. `TimePicker` carries the longer note on the interaction and
|
|
98389
98514
|
* on why a wheel cannot do either.
|
|
98515
|
+
* - `now-label`/`nowLabel`: The words on the list's button that chooses the current time, drawn with
|
|
98516
|
+
* `show-now`.
|
|
98390
98517
|
* - `placeholder`: Placeholder text shown before a time is entered.
|
|
98391
98518
|
* - `range-length-message`/`rangeLengthMessage`: The message shown when a range holds more than two times.
|
|
98392
98519
|
*
|
|
@@ -98404,6 +98531,9 @@ export type CustomElementsSolidJs = {
|
|
|
98404
98531
|
* - `seconds`: Whether times carry their seconds: the value is `HH:mm:ss`, a typed time
|
|
98405
98532
|
* may give them, the field writes them, and the list's `step` counts seconds.
|
|
98406
98533
|
* See Time Picker's `seconds`.
|
|
98534
|
+
* - `show-now`/`showNow`: Draws a button under the times in the list that chooses the current time,
|
|
98535
|
+
* moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
98536
|
+
* are `now-label`.
|
|
98407
98537
|
* - `step`: How far apart the offered times are, in minutes, or in seconds with
|
|
98408
98538
|
* `seconds`.
|
|
98409
98539
|
* - `time-style`/`timeStyle`: Whether the field shows the time in the local style or as the value
|
package/types/vue.d.ts
CHANGED
|
@@ -4261,7 +4261,11 @@ whole of it, which Shiki writes, are taken off, so the lines sit level
|
|
|
4261
4261
|
with the gutter's numbers and the block keeps one tab stop. The code stays
|
|
4262
4262
|
in the slot, so the copy button copies it as written and a reader without
|
|
4263
4263
|
the script still has it. Not called on a server, which has no code to
|
|
4264
|
-
read, nor for a diff.
|
|
4264
|
+
read, nor for a diff.
|
|
4265
|
+
|
|
4266
|
+
Absent, the block draws with the highlighter `registerHighlighter` gave
|
|
4267
|
+
every block, where an entry such as `@fusion.dev/helix-sandbox/code-block`
|
|
4268
|
+
registered one, and plain otherwise. */
|
|
4265
4269
|
highlight?: (HelixCodeBlock["highlight"]) | undefined;
|
|
4266
4270
|
};
|
|
4267
4271
|
|
|
@@ -5758,6 +5762,16 @@ and the grid becomes a tree grid.
|
|
|
5758
5762
|
Reflected, because the styled tier indents a tree grid's row headers by
|
|
5759
5763
|
it. No default, so a table that sets none writes nothing onto its host. */
|
|
5760
5764
|
childField?: (HelixDataTable["childField"]) | undefined;
|
|
5765
|
+
/** The column tracks, as a grid track list such as `2fr 1fr max-content`,
|
|
5766
|
+
dealt out one track to a column in the order the columns are written. A
|
|
5767
|
+
column's own `width` wins in its place, and a column it does not reach
|
|
5768
|
+
takes the track a column with no `width` takes.
|
|
5769
|
+
|
|
5770
|
+
**The one track list a server can send.** A server rendering this element
|
|
5771
|
+
has no columns to read a `width` from, and neither has a stylesheet laying
|
|
5772
|
+
out the rows a page served before the table upgrades, so a table sized here
|
|
5773
|
+
lays those rows out at the widths it draws. */
|
|
5774
|
+
columns?: (HelixDataTable["columns"]) | undefined;
|
|
5761
5775
|
/** The keys of the rows open at the start, separated by commas. Used until
|
|
5762
5776
|
`expanded` is set. */
|
|
5763
5777
|
"default-expanded"?: (HelixDataTable["defaultExpanded"]) | undefined;
|
|
@@ -12495,7 +12509,11 @@ Cleared as the menu closes and as a submenu opens or closes, so each page
|
|
|
12495
12509
|
starts with every row showing. */
|
|
12496
12510
|
filter?: (HelixMenu["filter"]) | undefined;
|
|
12497
12511
|
/** Whether the menu shows a field above its rows that narrows them as the
|
|
12498
|
-
reader types, with focus staying in the field
|
|
12512
|
+
reader types, with focus staying in the field, once
|
|
12513
|
+
`@fusion.dev/helix/menu/filter` (or `@fusion.dev/helix-headless/menu/filter`)
|
|
12514
|
+
is imported. Without that import it does nothing, so a menu that never
|
|
12515
|
+
filters carries none of the filter's code, and a development build says
|
|
12516
|
+
which import is missing. */
|
|
12499
12517
|
filterable?: (HelixMenu["filterable"]) | undefined;
|
|
12500
12518
|
/** The filter field's name and placeholder. */
|
|
12501
12519
|
"filter-label"?: (HelixMenu["filterLabel"]) | undefined;
|
|
@@ -17840,13 +17858,11 @@ and each column may say otherwise.
|
|
|
17840
17858
|
**It is also the only track list a server can send.** The shim has no tree
|
|
17841
17859
|
to walk, so a render there knows of no columns and this attribute is the
|
|
17842
17860
|
whole answer: a table given one lays its grid out in the first paint, and a
|
|
17843
|
-
table sized only by its columns
|
|
17861
|
+
table sized only by its columns takes, until it upgrades, a track for each
|
|
17862
|
+
column at the width a column with no `width` takes (`helix.css`).
|
|
17844
17863
|
|
|
17845
|
-
|
|
17846
|
-
|
|
17847
|
-
and a list here would be a second way to say what that says. This table's
|
|
17848
|
-
cells are markup, and a table written as rows of cells with no column
|
|
17849
|
-
declared in it has nowhere else to be sized from. */
|
|
17864
|
+
Data Table takes the same list, for the same reason: a data table that
|
|
17865
|
+
serves its first page as rows is laid out by it before it upgrades. */
|
|
17850
17866
|
columns?: (HelixTable["columns"]) | undefined;
|
|
17851
17867
|
/** The keys of the rows whose rows are shown at the start, separated by
|
|
17852
17868
|
commas. Used until `expanded` is set. */
|
|
@@ -19001,6 +19017,12 @@ number, and both are carried as one comma-separated value, which is what a
|
|
|
19001
19017
|
form submits. `TimePicker` carries the longer note on the interaction and
|
|
19002
19018
|
on why a wheel cannot do either. */
|
|
19003
19019
|
mode?: (HelixTimeInput["mode"]) | undefined;
|
|
19020
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
19021
|
+
`show-now`. */
|
|
19022
|
+
"now-label"?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
19023
|
+
/** The words on the list's button that chooses the current time, drawn with
|
|
19024
|
+
`show-now`. */
|
|
19025
|
+
nowLabel?: (HelixTimeInput["nowLabel"]) | undefined;
|
|
19004
19026
|
/** Placeholder text shown before a time is entered. */
|
|
19005
19027
|
placeholder?: (HelixTimeInput["placeholder"]) | undefined;
|
|
19006
19028
|
/** The message shown when a range holds more than two times.
|
|
@@ -19041,6 +19063,14 @@ removes rather than as "Remove" said once per time. */
|
|
|
19041
19063
|
may give them, the field writes them, and the list's `step` counts seconds.
|
|
19042
19064
|
See Time Picker's `seconds`. */
|
|
19043
19065
|
seconds?: (HelixTimeInput["seconds"]) | undefined;
|
|
19066
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
19067
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
19068
|
+
are `now-label`. */
|
|
19069
|
+
"show-now"?: (HelixTimeInput["showNow"]) | undefined;
|
|
19070
|
+
/** Draws a button under the times in the list that chooses the current time,
|
|
19071
|
+
moved to the nearest time on offer. See Time Picker's `show-now`. Its words
|
|
19072
|
+
are `now-label`. */
|
|
19073
|
+
showNow?: (HelixTimeInput["showNow"]) | undefined;
|
|
19044
19074
|
/** How far apart the offered times are, in minutes, or in seconds with
|
|
19045
19075
|
`seconds`. */
|
|
19046
19076
|
step?: (HelixTimeInput["step"]) | undefined;
|
|
@@ -24433,7 +24463,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
24433
24463
|
HelixCopyButtonVueProps,
|
|
24434
24464
|
HelixCopyButtonVueEvents
|
|
24435
24465
|
>;
|
|
24436
|
-
/** Rows have hairline rules between them and no fill, and the headings are set apart by weight and color. Helix shows depth with a single border and no elevation, and a header band would be elevation. The grid scrolls in its own box, and the toolbar and footer sit outside it, so the search field stays in place when the columns scroll sideways. 'windowed' draws only the rows in view, for a result too long to lay out at once, and the headings stay in place while the rows scroll. It works with or without 'paginated' and with either 'mode', so a page or a chunk from a server can be windowed. **Write the first page as rows, so the served HTML carries the values.** Write it under the columns as 'helix-table-row' and 'helix-table-cell' elements. '@fusion.dev/helix-styles/helix.css' lays them out as the table draws them before it upgrades, and the table shows them until 'rows' holds a row. */
|
|
24466
|
+
/** Rows have hairline rules between them and no fill, and the headings are set apart by weight and color. Helix shows depth with a single border and no elevation, and a header band would be elevation. The grid scrolls in its own box, and the toolbar and footer sit outside it, so the search field stays in place when the columns scroll sideways. 'windowed' draws only the rows in view, for a result too long to lay out at once, and the headings stay in place while the rows scroll. It works with or without 'paginated' and with either 'mode', so a page or a chunk from a server can be windowed. **Write the first page as rows, so the served HTML carries the values.** Write it under the columns as 'helix-table-row' and 'helix-table-cell' elements. '@fusion.dev/helix-styles/helix.css' lays them out as the table draws them before it upgrades, and the table shows them until 'rows' holds a row. It holds the checkbox column and the pagination's row from the first paint, and takes the widths from 'columns', so nothing moves when the table upgrades or draws its own rows. */
|
|
24437
24467
|
"helix-data-table": DefineCustomElement<
|
|
24438
24468
|
HelixDataTable,
|
|
24439
24469
|
HelixDataTableVueProps,
|
|
@@ -24877,13 +24907,13 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
24877
24907
|
HelixRatingVueProps,
|
|
24878
24908
|
HelixRatingVueEvents
|
|
24879
24909
|
>;
|
|
24880
|
-
/** 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. **'imports' lets an example import packages by name** in the built-in document, as an import map: each name maps to the address of an ES module, such as '{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}', and 'import confetti from 'canvas-confetti'' in the 'js' pane then loads it. A CDN that serves npm packages as modules, such as esm.sh or jsDelivr's '+esm', gives every package an address. A new map loads the document again, since a browser reads one only as a document starts. A 'src' document declares its own. **'dependencies' names packages by version instead**, as a 'package.json' does: '{"canvas-confetti": "^1.9"}' loads 'canvas-confetti' and the paths under it from 'cdn', 'https://esm.sh/' by default, at the version or range given. An address in 'imports' wins over a package of the same name. **'modules' holds files the example imports by a relative path**: each path, such as 'utils.js', to its source, and 'import { add } from './utils.js'' in the 'js' pane or in another module loads it. A sandbox writes each pane named for a module file here. **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, and it is the frame's description while it shows, so a screen reader reads it with the frame. 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. */
|
|
24910
|
+
/** 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. **'imports' lets an example import packages by name** in the built-in document, as an import map: each name maps to the address of an ES module, such as '{"canvas-confetti": "https://esm.sh/canvas-confetti@1.9.3"}', and 'import confetti from 'canvas-confetti'' in the 'js' pane then loads it. A CDN that serves npm packages as modules, such as esm.sh or jsDelivr's '+esm', gives every package an address. A new map loads the document again, since a browser reads one only as a document starts. A 'src' document declares its own. **'dependencies' names packages by version instead**, as a 'package.json' does: '{"canvas-confetti": "^1.9"}' loads 'canvas-confetti' and the paths under it from 'cdn', 'https://esm.sh/' by default, at the version or range given. An address in 'imports' wins over a package of the same name. **'modules' holds files the example imports by a relative path**: each path, such as 'utils.js', to its source, and 'import { add } from './utils.js'' in the 'js' pane or in another module loads it. A sandbox writes each pane named for a module file here. **A module in TypeScript or JSX runs too**: a path ending in '.ts', '.tsx' or '.jsx' is compiled to JavaScript first, and imported by its path or by its path without the extension. The compiler, Sucrase, loads from 'cdn' the first time a module needs it, so the package carries none and a preview with no such module loads none. JSX compiles to the automatic runtime, 'react/jsx-runtime', from 'dependencies', or to the one a '@jsxImportSource' comment names. What fails to compile shows in the 'error' part as an error the example threw, when the example imports it. **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, and it is the frame's description while it shows, so a screen reader reads it with the frame. 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. */
|
|
24881
24911
|
"helix-sandbox-preview": DefineCustomElement<
|
|
24882
24912
|
HelixSandboxPreview,
|
|
24883
24913
|
HelixSandboxPreviewVueProps,
|
|
24884
24914
|
HelixSandboxPreviewVueEvents
|
|
24885
24915
|
>;
|
|
24886
|
-
/** 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 preview runs an edit once typing has rested for 'preview-delay', 300 milliseconds by default, so a word typed reloads it once. A pane's text when the sandbox starts reaches it at once. The event carries the pane's 'name', so one sandbox can hold several panes. The names the sandbox writes into its previews: - 'html' sets the preview's markup. - 'css' sets its stylesheet. - 'js' sets a script that runs as a module after the markup. - A module file name ending in '.js' or '.mjs', such as 'utils.js', is a module the other scripts import by its path, './utils.js'. - 'package.json' sets the npm packages the scripts import by name, from its 'dependencies', which load from the preview's 'cdn'. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The sandbox is ':state(modified)' while a source pane holds an edit**, and that pane's file tab is also 'file-modified' and described as modified to a screen reader. 'reset()' puts every pane back to the source it was given. **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. Sandbox is styled only and has behavior, as 'Aura' is. Its behavior is the hand-off from a source pane to a preview frame, which works with any pane that sends 'helix-before-edit', and what it draws is the layout around them: dividers, file tabs, and a panel. A page that wants another look slots its own panes and keeps the hand-off, so there is nothing for a headless version to hold. A development build warns about a source pane with no 'label' and no 'name', whose file tab would have no words. 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. */
|
|
24916
|
+
/** 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 preview runs an edit once typing has rested for 'preview-delay', 300 milliseconds by default, so a word typed reloads it once. A pane's text when the sandbox starts reaches it at once. The event carries the pane's 'name', so one sandbox can hold several panes. The names the sandbox writes into its previews: - 'html' sets the preview's markup. - 'css' sets its stylesheet. - 'js' sets a script that runs as a module after the markup. - A module file name ending in '.js' or '.mjs', such as 'utils.js', is a module the other scripts import by its path, './utils.js'. - A module file name ending in '.ts', '.tsx' or '.jsx', such as 'app.tsx', is one too, which the preview compiles to JavaScript first. The 'js' pane runs it with 'import './app.tsx''. A file that does not compile shows why over the preview, as an error the example threw. - 'package.json' sets the npm packages the scripts import by name, from its 'dependencies', which load from the preview's 'cdn'. The sandbox ignores a pane with any other name, so that pane can show content without changing the preview. **The sandbox is ':state(modified)' while a source pane holds an edit**, and that pane's file tab is also 'file-modified' and described as modified to a screen reader. 'reset()' puts every pane back to the source it was given. **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. Sandbox is styled only and has behavior, as 'Aura' is. Its behavior is the hand-off from a source pane to a preview frame, which works with any pane that sends 'helix-before-edit', and what it draws is the layout around them: dividers, file tabs, and a panel. A page that wants another look slots its own panes and keeps the hand-off, so there is nothing for a headless version to hold. A development build warns about a source pane with no 'label' and no 'name', whose file tab would have no words. 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. */
|
|
24887
24917
|
"helix-sandbox": DefineCustomElement<
|
|
24888
24918
|
HelixSandbox,
|
|
24889
24919
|
HelixSandboxVueProps,
|
|
@@ -25003,7 +25033,7 @@ export interface WcToolkitVueGlobalComponents {
|
|
|
25003
25033
|
HelixStepVueProps,
|
|
25004
25034
|
HelixStepVueEvents
|
|
25005
25035
|
>;
|
|
25006
|
-
/** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll
|
|
25036
|
+
/** Hundreds of thin strands are drawn as one ribbon, and the light they add together is bloomed, so where they converge the ribbon burns hot. The ribbon moves on its own all the time: it sways and breathes, its strands wave and roll over one another, and light runs along them. Its palette comes from the tokens. The strands are '--helix-color-primary', a few are '--helix-color-accent' for depth, and the page they light is '--helix-color-background'. On a light page the light becomes ink, because light added to near-white cannot be seen. **Four forms, set with 'variant'.** 'bend' turns bright strands through one tight point, with its arms opening to the right. 'ribbon', the default, is a broad, soft ribbon in long curves. 'sweep' enters at a top corner, the one 'at' is nearer, and crosses in one diagonal to the far side. 'waves' is sharp strands crossing the full width. **Quiet behind words.** 'quiet' names elements, such as a hero's words, that the light dims behind to a faint glow, so a bright ribbon can cross the page under them and they stay crisp. **In its own box, by default.** The element fills the box it is given, the way an image does, and 'at' places the bend's apex or the ribbon's axis across it. Content placed inside sits over the ribbon, in the 'content' part. **Down the whole page, with 'travel'.** The element fixes itself behind the page, on '--helix-layer-beneath', and lays one ribbon from the top of the page to the bottom, so scrolling travels along it. Put 'helix-strands-stop' elements inside to pin a form to a section: each names an element with 'for' and says which form the ribbon takes there. Between stops the ribbon fills the gap in its own 'variant', and between two waves less than a screen and a half apart it turns off screen so each wave reads alone. Set 'z-index' on the element to move it. The ribbon stops moving in these cases: - 'prefers-reduced-motion' is set. The element shows one still frame, and in 'travel' still follows the scroll. - The element is off screen or in a background tab. It shows a gradient from the same tokens in these cases, and matches ':state(fallback)' and sends 'helix-strands-fallback' with the reason: - The renderer draws on the CPU, such as a headless browser or a machine with no usable GPU. - There is no WebGL, or the browser took the drawing context back. Strands is styled only and has behavior, as 'Aura' does: its behavior is drawing to a canvas, so there is no structure for a headless version to hold. */
|
|
25007
25037
|
"helix-strands": DefineCustomElement<
|
|
25008
25038
|
HelixStrands,
|
|
25009
25039
|
HelixStrandsVueProps,
|
package/types/words.d.ts
CHANGED
|
@@ -502,6 +502,13 @@ declare module '@fusion.dev/helix-core' {
|
|
|
502
502
|
* English: `Notes`
|
|
503
503
|
*/
|
|
504
504
|
notesLabel: Message
|
|
505
|
+
/**
|
|
506
|
+
* The words on the list's button that chooses the current time, drawn with
|
|
507
|
+
* `show-now`.
|
|
508
|
+
*
|
|
509
|
+
* English: `Now`
|
|
510
|
+
*/
|
|
511
|
+
nowLabel: Message
|
|
505
512
|
/**
|
|
506
513
|
* The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
507
514
|
* `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|