@fusion.dev/helix-headless 0.185.0 → 0.186.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +2663 -31
- package/dist/accordion/item/accordion-item.js +1 -1
- package/dist/button-group/root/button-group-root.js +1 -1
- package/dist/canvas/root/canvas-root.js +1 -1
- package/dist/dialog/root/dialog-root.js +1 -1
- package/dist/drawer/root/drawer-root.js +1 -1
- package/dist/drilldown/item/drilldown-item.js +1 -1
- package/dist/element-events.generated.js +7 -0
- package/dist/graph/root/graph-root.d.ts +6 -4
- package/dist/graph/root/graph-root.js +3 -3
- package/dist/heatmap/root/heatmap-root.d.ts +15 -15
- package/dist/icon/all/index.js +0 -3
- package/dist/icon/root/icon-root.d.ts +11 -18
- package/dist/icon/root/icon-root.js +4 -16
- package/dist/icon/set.js +2 -16
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/isometric-heatmap/index.d.ts +1 -0
- package/dist/isometric-heatmap/index.js +1 -0
- package/dist/isometric-heatmap/projection.d.ts +70 -0
- package/dist/isometric-heatmap/projection.js +49 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.d.ts +118 -0
- package/dist/isometric-heatmap/root/isometric-heatmap-root.js +127 -0
- package/dist/lightbox/root/lightbox-root.js +1 -1
- package/dist/list/root/list-root.js +1 -1
- package/dist/map/root/map-root.js +1 -1
- package/dist/menu/item/menu-item.js +1 -1
- package/dist/outline/root/outline-root.js +2 -2
- package/dist/popover/root/popover-root.js +1 -1
- package/dist/table/root/table-root.js +1 -1
- package/dist/tabs/root/tabs-root.js +4 -5
- package/dist/tabs/tab/tab.js +2 -3
- package/dist/time-picker/root/time-picker-root.js +1 -1
- package/dist/toggle/root/toggle-root.js +1 -1
- package/dist/tour/root/tour-root.js +1 -1
- package/dist/tree/root/tree-root.js +1 -1
- package/dist/video/root/video-root.js +1 -1
- package/lint.json +1 -1
- package/package.json +6 -6
- package/types/jsx.d.ts +1274 -40
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +264 -6
- package/types/words.d.ts +69 -0
package/types/jsx.d.ts
CHANGED
|
@@ -96,6 +96,7 @@ import type {
|
|
|
96
96
|
HelixHeadlessIconButton,
|
|
97
97
|
HelixHeadlessImage,
|
|
98
98
|
HelixHeadlessInput,
|
|
99
|
+
HelixHeadlessIsometricHeatmap,
|
|
99
100
|
HelixHeadlessKbd,
|
|
100
101
|
HelixHeadlessLegend,
|
|
101
102
|
HelixHeadlessLightbox,
|
|
@@ -16581,10 +16582,12 @@ disagreeing with its own name for every reader who meant the left. */
|
|
|
16581
16582
|
/** The name of the icon in the Helix set.
|
|
16582
16583
|
|
|
16583
16584
|
**A lookup, and the reason both this and `icon` exist.** A name is a string,
|
|
16584
|
-
so it is what markup can carry, and resolving one means an index
|
|
16585
|
-
bundler can shake
|
|
16586
|
-
|
|
16587
|
-
|
|
16585
|
+
so it is what markup can carry, and resolving one means an index of the
|
|
16586
|
+
whole set that no bundler can shake: 15 kB for a consumer who renders one
|
|
16587
|
+
mark. An attribute is the only thing an HTML author can write, and that is
|
|
16588
|
+
worth the index; a consumer who would rather not pay it imports the
|
|
16589
|
+
element from `icon/root` and registers the glyphs it names, or hands over
|
|
16590
|
+
the value instead.
|
|
16588
16591
|
|
|
16589
16592
|
A name written `prefix:name` asks the library registered under that
|
|
16590
16593
|
prefix. */
|
|
@@ -16628,10 +16631,12 @@ disagreeing with its own name for every reader who meant the left. */
|
|
|
16628
16631
|
/** The name of the icon in the Helix set.
|
|
16629
16632
|
|
|
16630
16633
|
**A lookup, and the reason both this and `icon` exist.** A name is a string,
|
|
16631
|
-
so it is what markup can carry, and resolving one means an index
|
|
16632
|
-
bundler can shake
|
|
16633
|
-
|
|
16634
|
-
|
|
16634
|
+
so it is what markup can carry, and resolving one means an index of the
|
|
16635
|
+
whole set that no bundler can shake: 15 kB for a consumer who renders one
|
|
16636
|
+
mark. An attribute is the only thing an HTML author can write, and that is
|
|
16637
|
+
worth the index; a consumer who would rather not pay it imports the
|
|
16638
|
+
element from `icon/root` and registers the glyphs it names, or hands over
|
|
16639
|
+
the value instead.
|
|
16635
16640
|
|
|
16636
16641
|
A name written `prefix:name` asks the library registered under that
|
|
16637
16642
|
prefix. */
|
|
@@ -17381,6 +17386,498 @@ invalid, and `true`, `null`, or nothing to accept the value. */
|
|
|
17381
17386
|
textContent?: (string | number) | undefined;
|
|
17382
17387
|
};
|
|
17383
17388
|
|
|
17389
|
+
/** `HelixHeadlessIsometricHeatmap` component event */
|
|
17390
|
+
export type HelixHeadlessIsometricHeatmapElementEvent<E = Event> = TypedEvent<
|
|
17391
|
+
HelixHeadlessIsometricHeatmap,
|
|
17392
|
+
E
|
|
17393
|
+
>;
|
|
17394
|
+
/** `helix-before-change` event type */
|
|
17395
|
+
export type HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent =
|
|
17396
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixBeforeChangeEvent>;
|
|
17397
|
+
/** `helix-reading-change` event type */
|
|
17398
|
+
export type HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent =
|
|
17399
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixReadingChangeEvent>;
|
|
17400
|
+
/** `helix-reading-press` event type */
|
|
17401
|
+
export type HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent =
|
|
17402
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixReadingPressEvent>;
|
|
17403
|
+
/** `helix-resize` event type */
|
|
17404
|
+
export type HelixHeadlessIsometricHeatmapHelixResizeElementEvent =
|
|
17405
|
+
HelixHeadlessIsometricHeatmapElementEvent<HelixResizeEvent>;
|
|
17406
|
+
|
|
17407
|
+
export type HelixHeadlessIsometricHeatmapProps = {
|
|
17408
|
+
/** Draws every prism at no height, so the tones lie on a plane. */
|
|
17409
|
+
flat?: (HelixHeadlessIsometricHeatmap["flat"]) | undefined;
|
|
17410
|
+
/** How tall the highest reading stands, in cells. Every other reading stands
|
|
17411
|
+
at its share of it. */
|
|
17412
|
+
relief?: (HelixHeadlessIsometricHeatmap["relief"]) | undefined;
|
|
17413
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
17414
|
+
and the fallback of the `empty` slot. */
|
|
17415
|
+
"empty-text"?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
17416
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
17417
|
+
and the fallback of the `empty` slot. */
|
|
17418
|
+
emptyText?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
17419
|
+
/** Whether the readings are still on their way. The chart shows
|
|
17420
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
17421
|
+
|
|
17422
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
17423
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
17424
|
+
blank it. */
|
|
17425
|
+
loading?: (HelixHeadlessIsometricHeatmap["loading"]) | undefined;
|
|
17426
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
17427
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
17428
|
+
"loading-text"?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
17429
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
17430
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
17431
|
+
loadingText?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
17432
|
+
/** The id of the table to read.
|
|
17433
|
+
|
|
17434
|
+
Names a table in the same tree, so a chart inside another component's
|
|
17435
|
+
shadow root reads a table in that root rather than one in the document. A
|
|
17436
|
+
`<table>` or anything built from grid roles, including `helix-table`.
|
|
17437
|
+
|
|
17438
|
+
**In React this arrives as a property and not as an attribute**, the way
|
|
17439
|
+
`Tooltip.for` does, so it does not reflect and nothing styles on it. */
|
|
17440
|
+
for?: (HelixHeadlessIsometricHeatmap["for"]) | undefined;
|
|
17441
|
+
/** The chart's name, which starts the chart's text summary.
|
|
17442
|
+
|
|
17443
|
+
Absent falls back to the table's own caption, which is usually the right
|
|
17444
|
+
words and is already written. */
|
|
17445
|
+
label?: (HelixHeadlessIsometricHeatmap["label"]) | undefined;
|
|
17446
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
17447
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
17448
|
+
|
|
17449
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
17450
|
+
cells are shown as the table writes them, whatever this says. */
|
|
17451
|
+
locale?: (HelixHeadlessIsometricHeatmap["locale"]) | undefined;
|
|
17452
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
17453
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
17454
|
+
`locale`.
|
|
17455
|
+
|
|
17456
|
+
Set it to the words of the page's language, such as `{position} von
|
|
17457
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
17458
|
+
legend hid is not counted. */
|
|
17459
|
+
"position-label"?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
17460
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
17461
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
17462
|
+
`locale`.
|
|
17463
|
+
|
|
17464
|
+
Set it to the words of the page's language, such as `{position} von
|
|
17465
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
17466
|
+
legend hid is not counted. */
|
|
17467
|
+
positionLabel?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
17468
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
17469
|
+
`overview-label`. */
|
|
17470
|
+
"busiest-label"?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
17471
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
17472
|
+
`overview-label`. */
|
|
17473
|
+
busiestLabel?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
17474
|
+
/** Space between cells, in CSS pixels. It is a number for the same reason
|
|
17475
|
+
`min-cell` is. */
|
|
17476
|
+
gap?: (HelixHeadlessIsometricHeatmap["gap"]) | undefined;
|
|
17477
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
17478
|
+
|
|
17479
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
17480
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
17481
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
17482
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
17483
|
+
is the one it gets wrong.
|
|
17484
|
+
|
|
17485
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
17486
|
+
own and these two are the estimate used until the first measurement lands.
|
|
17487
|
+
Writing the attribute pins the value and stops the measurement being
|
|
17488
|
+
consulted, which is what a container query or a transition on the cell size
|
|
17489
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
17490
|
+
plan around.
|
|
17491
|
+
|
|
17492
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
17493
|
+
container that cannot get narrow. */
|
|
17494
|
+
"min-cell"?: (HelixHeadlessIsometricHeatmap["minCell"] | `${number}`) | undefined;
|
|
17495
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
17496
|
+
|
|
17497
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
17498
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
17499
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
17500
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
17501
|
+
is the one it gets wrong.
|
|
17502
|
+
|
|
17503
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
17504
|
+
own and these two are the estimate used until the first measurement lands.
|
|
17505
|
+
Writing the attribute pins the value and stops the measurement being
|
|
17506
|
+
consulted, which is what a container query or a transition on the cell size
|
|
17507
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
17508
|
+
plan around.
|
|
17509
|
+
|
|
17510
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
17511
|
+
container that cannot get narrow. */
|
|
17512
|
+
minCell?: (HelixHeadlessIsometricHeatmap["minCell"]) | undefined;
|
|
17513
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
17514
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
17515
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
17516
|
+
readings drawn, written in the locale. */
|
|
17517
|
+
"overview-label"?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
17518
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
17519
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
17520
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
17521
|
+
readings drawn, written in the locale. */
|
|
17522
|
+
overviewLabel?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
17523
|
+
/** How many rows the strip has.
|
|
17524
|
+
|
|
17525
|
+
`1` is a status strip and `7` is a calendar week, which are the two readings
|
|
17526
|
+
this covers. Cells fill down the column and then across, which is what a
|
|
17527
|
+
calendar heatmap does: a week is a column, so the strip reads along the
|
|
17528
|
+
line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
17529
|
+
days. */
|
|
17530
|
+
rows?: (HelixHeadlessIsometricHeatmap["rows"]) | undefined;
|
|
17531
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
17532
|
+
"selected-label"?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
17533
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
17534
|
+
selectedLabel?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
17535
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
17536
|
+
how many cells are selected, written in the locale, and a language that
|
|
17537
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
17538
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
17539
|
+
"selection-label"?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
17540
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
17541
|
+
how many cells are selected, written in the locale, and a language that
|
|
17542
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
17543
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
17544
|
+
selectionLabel?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
17545
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
17546
|
+
|
|
17547
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
17548
|
+
"selection-mode"?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
17549
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
17550
|
+
|
|
17551
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
17552
|
+
selectionMode?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
17553
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
17554
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
17555
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
17556
|
+
"selection-shape"?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
17557
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
17558
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
17559
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
17560
|
+
selectionShape?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
17561
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
17562
|
+
table caption. */
|
|
17563
|
+
"strip-label"?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
17564
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
17565
|
+
table caption. */
|
|
17566
|
+
stripLabel?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
17567
|
+
/** Lower bounds for the tone buckets, in the order the tones are given.
|
|
17568
|
+
|
|
17569
|
+
`thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
17570
|
+
first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
|
|
17571
|
+
fourth. A value below the first bound gets no tone at all: an empty day in a
|
|
17572
|
+
contribution graph is a day with nothing in it, and painting it as the
|
|
17573
|
+
lowest bucket claims a reading that does not exist. */
|
|
17574
|
+
thresholds?: (HelixHeadlessIsometricHeatmap["thresholds"]) | undefined;
|
|
17575
|
+
/** The tone for each bucket, in the same order as `thresholds`.
|
|
17576
|
+
|
|
17577
|
+
A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
|
|
17578
|
+
**`"1"` through `"5"` are a ramp and everything else is a category**, which
|
|
17579
|
+
is the distinction a heatmap lives or dies on: magnitude has to be one hue
|
|
17580
|
+
getting louder, because a reader compares two cells by weight and cannot
|
|
17581
|
+
compare two hues at all. `tones="surface info accent success primary"` for a
|
|
17582
|
+
commit count is five unrelated hues for five amounts, which is confetti with
|
|
17583
|
+
no order in it. */
|
|
17584
|
+
tones?: (HelixHeadlessIsometricHeatmap["tones"]) | undefined;
|
|
17585
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
17586
|
+
`{totalLabel}` in `overview-label`. */
|
|
17587
|
+
"total-label"?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
17588
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
17589
|
+
`{totalLabel}` in `overview-label`. */
|
|
17590
|
+
totalLabel?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
17591
|
+
/** The selected cells, separated by commas: each by the date its row's
|
|
17592
|
+
header carries in a `<time datetime>`, such as `2026-06-11`, or by the
|
|
17593
|
+
header's words where it carries none.
|
|
17594
|
+
|
|
17595
|
+
Set it to start with cells selected. Written by a press or a key under
|
|
17596
|
+
`selection-mode`. */
|
|
17597
|
+
value?: (HelixHeadlessIsometricHeatmap["value"]) | undefined;
|
|
17598
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
17599
|
+
table to point `for` at. `for` wins where both are set.
|
|
17600
|
+
|
|
17601
|
+
```js
|
|
17602
|
+
chart.data = {
|
|
17603
|
+
caption: 'Sessions by channel',
|
|
17604
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
17605
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
17606
|
+
}
|
|
17607
|
+
```
|
|
17608
|
+
|
|
17609
|
+
The first column holds each row's label and every column after it a
|
|
17610
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
17611
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
17612
|
+
number is shown in `locale`.
|
|
17613
|
+
|
|
17614
|
+
**A table is still the better source where the page can show one**:
|
|
17615
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
17616
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
17617
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
17618
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
17619
|
+
does not look inside the one it has. */
|
|
17620
|
+
data?: (HelixHeadlessIsometricHeatmap["data"]) | undefined;
|
|
17621
|
+
|
|
17622
|
+
/** Fired once a press or a key has changed which cells are selected. */
|
|
17623
|
+
onchange?: ((e: HelixHeadlessIsometricHeatmapElementEvent) => void) | undefined;
|
|
17624
|
+
/** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
|
|
17625
|
+
"onhelix-before-change"?: ((
|
|
17626
|
+
e: HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent,
|
|
17627
|
+
) => void) | undefined;
|
|
17628
|
+
/** The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it. */
|
|
17629
|
+
"onhelix-reading-change"?: ((
|
|
17630
|
+
e: HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent,
|
|
17631
|
+
) => void) | undefined;
|
|
17632
|
+
/** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
|
|
17633
|
+
"onhelix-reading-press"?: ((
|
|
17634
|
+
e: HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent,
|
|
17635
|
+
) => void) | undefined;
|
|
17636
|
+
/** Fired when the number of cells drawn changes, with the new number. */
|
|
17637
|
+
"onhelix-resize"?: ((
|
|
17638
|
+
e: HelixHeadlessIsometricHeatmapHelixResizeElementEvent,
|
|
17639
|
+
) => void) | undefined;
|
|
17640
|
+
};
|
|
17641
|
+
|
|
17642
|
+
export type HelixHeadlessIsometricHeatmapSolidJsProps = {
|
|
17643
|
+
/** Draws every prism at no height, so the tones lie on a plane. */
|
|
17644
|
+
"prop:flat"?: (HelixHeadlessIsometricHeatmap["flat"]) | undefined;
|
|
17645
|
+
/** How tall the highest reading stands, in cells. Every other reading stands
|
|
17646
|
+
at its share of it. */
|
|
17647
|
+
"prop:relief"?: (HelixHeadlessIsometricHeatmap["relief"]) | undefined;
|
|
17648
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
17649
|
+
and the fallback of the `empty` slot. */
|
|
17650
|
+
"attr:empty-text"?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
17651
|
+
/** The words shown in place of the drawing when the table has no readings,
|
|
17652
|
+
and the fallback of the `empty` slot. */
|
|
17653
|
+
"prop:emptyText"?: (HelixHeadlessIsometricHeatmap["emptyText"]) | undefined;
|
|
17654
|
+
/** Whether the readings are still on their way. The chart shows
|
|
17655
|
+
`loading-text` in place of an empty drawing until it has readings.
|
|
17656
|
+
|
|
17657
|
+
Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
17658
|
+
that already has readings keeps drawing them, so a refresh does not
|
|
17659
|
+
blank it. */
|
|
17660
|
+
"prop:loading"?: (HelixHeadlessIsometricHeatmap["loading"]) | undefined;
|
|
17661
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
17662
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
17663
|
+
"attr:loading-text"?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
17664
|
+
/** The words shown in place of the drawing while `loading` is set and
|
|
17665
|
+
there are no readings yet, and the fallback of the `loading` slot. */
|
|
17666
|
+
"prop:loadingText"?: (HelixHeadlessIsometricHeatmap["loadingText"]) | undefined;
|
|
17667
|
+
/** The id of the table to read.
|
|
17668
|
+
|
|
17669
|
+
Names a table in the same tree, so a chart inside another component's
|
|
17670
|
+
shadow root reads a table in that root rather than one in the document. A
|
|
17671
|
+
`<table>` or anything built from grid roles, including `helix-table`.
|
|
17672
|
+
|
|
17673
|
+
**In React this arrives as a property and not as an attribute**, the way
|
|
17674
|
+
`Tooltip.for` does, so it does not reflect and nothing styles on it. */
|
|
17675
|
+
"prop:for"?: (HelixHeadlessIsometricHeatmap["for"]) | undefined;
|
|
17676
|
+
/** The chart's name, which starts the chart's text summary.
|
|
17677
|
+
|
|
17678
|
+
Absent falls back to the table's own caption, which is usually the right
|
|
17679
|
+
words and is already written. */
|
|
17680
|
+
"prop:label"?: (HelixHeadlessIsometricHeatmap["label"]) | undefined;
|
|
17681
|
+
/** The locale the chart's own numbers are written in: its axis, its
|
|
17682
|
+
percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
17683
|
+
|
|
17684
|
+
Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
17685
|
+
cells are shown as the table writes them, whatever this says. */
|
|
17686
|
+
"prop:locale"?: (HelixHeadlessIsometricHeatmap["locale"]) | undefined;
|
|
17687
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
17688
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
17689
|
+
`locale`.
|
|
17690
|
+
|
|
17691
|
+
Set it to the words of the page's language, such as `{position} von
|
|
17692
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
17693
|
+
legend hid is not counted. */
|
|
17694
|
+
"attr:position-label"?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
17695
|
+
/** Where a reading the keys moved to stands among the readings, said after
|
|
17696
|
+
it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
17697
|
+
`locale`.
|
|
17698
|
+
|
|
17699
|
+
Set it to the words of the page's language, such as `{position} von
|
|
17700
|
+
{count}`, or to nothing to say no position. A slice or a series a
|
|
17701
|
+
legend hid is not counted. */
|
|
17702
|
+
"prop:positionLabel"?: (HelixHeadlessIsometricHeatmap["positionLabel"]) | undefined;
|
|
17703
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
17704
|
+
`overview-label`. */
|
|
17705
|
+
"attr:busiest-label"?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
17706
|
+
/** The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
17707
|
+
`overview-label`. */
|
|
17708
|
+
"prop:busiestLabel"?: (HelixHeadlessIsometricHeatmap["busiestLabel"]) | undefined;
|
|
17709
|
+
/** Space between cells, in CSS pixels. It is a number for the same reason
|
|
17710
|
+
`min-cell` is. */
|
|
17711
|
+
"prop:gap"?: (HelixHeadlessIsometricHeatmap["gap"]) | undefined;
|
|
17712
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
17713
|
+
|
|
17714
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
17715
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
17716
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
17717
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
17718
|
+
is the one it gets wrong.
|
|
17719
|
+
|
|
17720
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
17721
|
+
own and these two are the estimate used until the first measurement lands.
|
|
17722
|
+
Writing the attribute pins the value and stops the measurement being
|
|
17723
|
+
consulted, which is what a container query or a transition on the cell size
|
|
17724
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
17725
|
+
plan around.
|
|
17726
|
+
|
|
17727
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
17728
|
+
container that cannot get narrow. */
|
|
17729
|
+
"attr:min-cell"?: (HelixHeadlessIsometricHeatmap["minCell"] | `${number}`) | undefined;
|
|
17730
|
+
/** The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
17731
|
+
|
|
17732
|
+
**Set this only to overrule what the strip actually draws.** The arithmetic
|
|
17733
|
+
needs a width in pixels and the width is a length the stylesheet resolves,
|
|
17734
|
+
so a number written here that disagrees with the sheet is a promise the
|
|
17735
|
+
consumer has to keep by hand, and the one number a summary is told to trust
|
|
17736
|
+
is the one it gets wrong.
|
|
17737
|
+
|
|
17738
|
+
The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
17739
|
+
own and these two are the estimate used until the first measurement lands.
|
|
17740
|
+
Writing the attribute pins the value and stops the measurement being
|
|
17741
|
+
consulted, which is what a container query or a transition on the cell size
|
|
17742
|
+
wants, where what is drawn this frame is not what the arithmetic should
|
|
17743
|
+
plan around.
|
|
17744
|
+
|
|
17745
|
+
Zero turns the dropping off altogether, which is right for a strip in a
|
|
17746
|
+
container that cannot get narrow. */
|
|
17747
|
+
"prop:minCell"?: (HelixHeadlessIsometricHeatmap["minCell"]) | undefined;
|
|
17748
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
17749
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
17750
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
17751
|
+
readings drawn, written in the locale. */
|
|
17752
|
+
"attr:overview-label"?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
17753
|
+
/** The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
17754
|
+
`busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
17755
|
+
and its reading as the table writes it, and `{total}` the total of the
|
|
17756
|
+
readings drawn, written in the locale. */
|
|
17757
|
+
"prop:overviewLabel"?: (HelixHeadlessIsometricHeatmap["overviewLabel"]) | undefined;
|
|
17758
|
+
/** How many rows the strip has.
|
|
17759
|
+
|
|
17760
|
+
`1` is a status strip and `7` is a calendar week, which are the two readings
|
|
17761
|
+
this covers. Cells fill down the column and then across, which is what a
|
|
17762
|
+
calendar heatmap does: a week is a column, so the strip reads along the
|
|
17763
|
+
line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
17764
|
+
days. */
|
|
17765
|
+
"prop:rows"?: (HelixHeadlessIsometricHeatmap["rows"]) | undefined;
|
|
17766
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
17767
|
+
"attr:selected-label"?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
17768
|
+
/** What the readout added for a selected cell, under `selection-mode`. */
|
|
17769
|
+
"prop:selectedLabel"?: (HelixHeadlessIsometricHeatmap["selectedLabel"]) | undefined;
|
|
17770
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
17771
|
+
how many cells are selected, written in the locale, and a language that
|
|
17772
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
17773
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
17774
|
+
"attr:selection-label"?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
17775
|
+
/** What the `selection` part says after the selection changes. `{count}` is
|
|
17776
|
+
how many cells are selected, written in the locale, and a language that
|
|
17777
|
+
needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
17778
|
+
{# wybrane} many {# wybranych} other {# wybranego}}`. */
|
|
17779
|
+
"prop:selectionLabel"?: (HelixHeadlessIsometricHeatmap["selectionLabel"]) | undefined;
|
|
17780
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
17781
|
+
|
|
17782
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
17783
|
+
"attr:selection-mode"?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
17784
|
+
/** How many cells a reader can select: `single` or `multiple`.
|
|
17785
|
+
|
|
17786
|
+
Absent selects nothing, and a press or Space does what it did. */
|
|
17787
|
+
"prop:selectionMode"?: (HelixHeadlessIsometricHeatmap["selectionMode"]) | undefined;
|
|
17788
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
17789
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
17790
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
17791
|
+
"attr:selection-shape"?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
17792
|
+
/** What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
17793
|
+
cell between two in the table's order, or `rectangle`, the cells between
|
|
17794
|
+
two corners by row and by column, as a spreadsheet selects a range. */
|
|
17795
|
+
"prop:selectionShape"?: (HelixHeadlessIsometricHeatmap["selectionShape"]) | undefined;
|
|
17796
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
17797
|
+
table caption. */
|
|
17798
|
+
"attr:strip-label"?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
17799
|
+
/** The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
17800
|
+
table caption. */
|
|
17801
|
+
"prop:stripLabel"?: (HelixHeadlessIsometricHeatmap["stripLabel"]) | undefined;
|
|
17802
|
+
/** Lower bounds for the tone buckets, in the order the tones are given.
|
|
17803
|
+
|
|
17804
|
+
`thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
17805
|
+
first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
|
|
17806
|
+
fourth. A value below the first bound gets no tone at all: an empty day in a
|
|
17807
|
+
contribution graph is a day with nothing in it, and painting it as the
|
|
17808
|
+
lowest bucket claims a reading that does not exist. */
|
|
17809
|
+
"prop:thresholds"?: (HelixHeadlessIsometricHeatmap["thresholds"]) | undefined;
|
|
17810
|
+
/** The tone for each bucket, in the same order as `thresholds`.
|
|
17811
|
+
|
|
17812
|
+
A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
|
|
17813
|
+
**`"1"` through `"5"` are a ramp and everything else is a category**, which
|
|
17814
|
+
is the distinction a heatmap lives or dies on: magnitude has to be one hue
|
|
17815
|
+
getting louder, because a reader compares two cells by weight and cannot
|
|
17816
|
+
compare two hues at all. `tones="surface info accent success primary"` for a
|
|
17817
|
+
commit count is five unrelated hues for five amounts, which is confetti with
|
|
17818
|
+
no order in it. */
|
|
17819
|
+
"prop:tones"?: (HelixHeadlessIsometricHeatmap["tones"]) | undefined;
|
|
17820
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
17821
|
+
`{totalLabel}` in `overview-label`. */
|
|
17822
|
+
"attr:total-label"?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
17823
|
+
/** The name the `overview` gives the total of the readings drawn,
|
|
17824
|
+
`{totalLabel}` in `overview-label`. */
|
|
17825
|
+
"prop:totalLabel"?: (HelixHeadlessIsometricHeatmap["totalLabel"]) | undefined;
|
|
17826
|
+
/** The selected cells, separated by commas: each by the date its row's
|
|
17827
|
+
header carries in a `<time datetime>`, such as `2026-06-11`, or by the
|
|
17828
|
+
header's words where it carries none.
|
|
17829
|
+
|
|
17830
|
+
Set it to start with cells selected. Written by a press or a key under
|
|
17831
|
+
`selection-mode`. */
|
|
17832
|
+
"prop:value"?: (HelixHeadlessIsometricHeatmap["value"]) | undefined;
|
|
17833
|
+
/** The readings as data, in the shape of a table, where the page has no
|
|
17834
|
+
table to point `for` at. `for` wins where both are set.
|
|
17835
|
+
|
|
17836
|
+
```js
|
|
17837
|
+
chart.data = {
|
|
17838
|
+
caption: 'Sessions by channel',
|
|
17839
|
+
columns: ['Month', 'Direct', 'Referral'],
|
|
17840
|
+
rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
17841
|
+
}
|
|
17842
|
+
```
|
|
17843
|
+
|
|
17844
|
+
The first column holds each row's label and every column after it a
|
|
17845
|
+
series, as in a table. A cell is a number, words, `null` for a blank,
|
|
17846
|
+
or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
17847
|
+
number is shown in `locale`.
|
|
17848
|
+
|
|
17849
|
+
**A table is still the better source where the page can show one**:
|
|
17850
|
+
it reads with no script and before hydration, and a reader can sort and
|
|
17851
|
+
copy it. Data is drawn on the client only, so a server serves the
|
|
17852
|
+
frame, and the summary, the keys and the readout are then the whole of
|
|
17853
|
+
what a screen reader is given. Set a new object to redraw: the chart
|
|
17854
|
+
does not look inside the one it has. */
|
|
17855
|
+
"prop:data"?: (HelixHeadlessIsometricHeatmap["data"]) | undefined;
|
|
17856
|
+
/** Fired once a press or a key has changed which cells are selected. */
|
|
17857
|
+
"on:change"?: ((e: HelixHeadlessIsometricHeatmapElementEvent) => void) | undefined;
|
|
17858
|
+
/** Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable. */
|
|
17859
|
+
"on:helix-before-change"?: ((
|
|
17860
|
+
e: HelixHeadlessIsometricHeatmapHelixBeforeChangeElementEvent,
|
|
17861
|
+
) => void) | undefined;
|
|
17862
|
+
/** The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it. */
|
|
17863
|
+
"on:helix-reading-change"?: ((
|
|
17864
|
+
e: HelixHeadlessIsometricHeatmapHelixReadingChangeElementEvent,
|
|
17865
|
+
) => void) | undefined;
|
|
17866
|
+
/** A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`. */
|
|
17867
|
+
"on:helix-reading-press"?: ((
|
|
17868
|
+
e: HelixHeadlessIsometricHeatmapHelixReadingPressElementEvent,
|
|
17869
|
+
) => void) | undefined;
|
|
17870
|
+
/** Fired when the number of cells drawn changes, with the new number. */
|
|
17871
|
+
"on:helix-resize"?: ((
|
|
17872
|
+
e: HelixHeadlessIsometricHeatmapHelixResizeElementEvent,
|
|
17873
|
+
) => void) | undefined;
|
|
17874
|
+
|
|
17875
|
+
/** Set the innerHTML of the element */
|
|
17876
|
+
innerHTML?: (string) | undefined;
|
|
17877
|
+
/** Set the textContent of the element */
|
|
17878
|
+
textContent?: (string | number) | undefined;
|
|
17879
|
+
};
|
|
17880
|
+
|
|
17384
17881
|
/** `HelixHeadlessKbd` component event */
|
|
17385
17882
|
export type HelixHeadlessKbdElementEvent<E = Event> = TypedEvent<
|
|
17386
17883
|
HelixHeadlessKbd,
|
|
@@ -48627,10 +49124,12 @@ export type CustomElements = {
|
|
|
48627
49124
|
>;
|
|
48628
49125
|
|
|
48629
49126
|
/**
|
|
48630
|
-
*
|
|
48631
|
-
* WebGL, which a renderer such as Sigma.js does
|
|
48632
|
-
*
|
|
48633
|
-
*
|
|
49127
|
+
* The frame draws no graph itself. A force layout of thousands of notes is
|
|
49128
|
+
* physics and WebGL, which a renderer such as Sigma.js does, and an
|
|
49129
|
+
* architecture diagram is drawn by `isometricDriver` from
|
|
49130
|
+
* `@fusion.dev/helix-graph/isometric`. Put the drawing's box in the frame, and
|
|
49131
|
+
* `connectGraph` from `@fusion.dev/helix-graph` draws `nodes` and `links` in
|
|
49132
|
+
* it and keeps it in step with the frame.
|
|
48634
49133
|
*
|
|
48635
49134
|
* What the frame adds is what a drawing of a graph cannot do: a list of every
|
|
48636
49135
|
* note beside it, which is the graph for a screen reader and a quick way to
|
|
@@ -49680,14 +50179,11 @@ export type CustomElements = {
|
|
|
49680
50179
|
* a dark background. Shapes that set their own `fill` or `stroke` are
|
|
49681
50180
|
* unaffected.
|
|
49682
50181
|
*
|
|
49683
|
-
* **A name is looked up in a registry.** The family's entry registers
|
|
49684
|
-
* set
|
|
49685
|
-
*
|
|
49686
|
-
*
|
|
49687
|
-
*
|
|
49688
|
-
* `@fusion.dev/helix-headless/icon/root`, registers none: a page that imports
|
|
49689
|
-
* it and calls `registerIcons` with the glyphs it names ships those and no
|
|
49690
|
-
* others. `registerIconLibrary` resolves names under a prefix of your own,
|
|
50182
|
+
* **A name is looked up in a registry.** The family's entry registers the
|
|
50183
|
+
* whole set, so any name in it draws, and `icon/all` registers the same set.
|
|
50184
|
+
* The element's own entry, `@fusion.dev/helix-headless/icon/root`, registers
|
|
50185
|
+
* none: a page that imports it and calls `registerIcons` with the glyphs it
|
|
50186
|
+
* names ships those and no others. `registerIconLibrary` resolves names under a prefix of your own,
|
|
49691
50187
|
* such as `lucide:camera`, at once or later, and the element fires `load` when
|
|
49692
50188
|
* a glyph that came later is drawn. A glyph registered after the element
|
|
49693
50189
|
* rendered is drawn then.
|
|
@@ -49729,10 +50225,12 @@ export type CustomElements = {
|
|
|
49729
50225
|
* - `name`: The name of the icon in the Helix set.
|
|
49730
50226
|
*
|
|
49731
50227
|
* **A lookup, and the reason both this and `icon` exist.** A name is a string,
|
|
49732
|
-
* so it is what markup can carry, and resolving one means an index
|
|
49733
|
-
* bundler can shake
|
|
49734
|
-
*
|
|
49735
|
-
*
|
|
50228
|
+
* so it is what markup can carry, and resolving one means an index of the
|
|
50229
|
+
* whole set that no bundler can shake: 15 kB for a consumer who renders one
|
|
50230
|
+
* mark. An attribute is the only thing an HTML author can write, and that is
|
|
50231
|
+
* worth the index; a consumer who would rather not pay it imports the
|
|
50232
|
+
* element from `icon/root` and registers the glyphs it names, or hands over
|
|
50233
|
+
* the value instead.
|
|
49736
50234
|
*
|
|
49737
50235
|
* A name written `prefix:name` asks the library registered under that
|
|
49738
50236
|
* prefix.
|
|
@@ -50283,6 +50781,372 @@ export type CustomElements = {
|
|
|
50283
50781
|
HelixHeadlessInputProps & BaseProps<HelixHeadlessInput> & BaseEvents<HelixHeadlessInput>
|
|
50284
50782
|
>;
|
|
50285
50783
|
|
|
50784
|
+
/**
|
|
50785
|
+
* The same strip as `Heatmap`, seen from above at an angle. Each reading is a
|
|
50786
|
+
* prism: its top face takes the cell's tone, and its height repeats the value,
|
|
50787
|
+
* measured from zero against the highest reading in the table. `rows="7"`
|
|
50788
|
+
* makes a contribution graph, with each week a column running down to the
|
|
50789
|
+
* right.
|
|
50790
|
+
*
|
|
50791
|
+
* **The height says what the tone says.** Read the exact value from the tooltip
|
|
50792
|
+
* or the table, and compare readings by tone. A tall reading at the front can
|
|
50793
|
+
* hide a short one behind it, so the newest column stands at the front, where
|
|
50794
|
+
* nothing covers it.
|
|
50795
|
+
*
|
|
50796
|
+
* **Everything else is `Heatmap`.** The table named by `for`, the tones and
|
|
50797
|
+
* thresholds, the keys, the tooltip, the overview, `selection-mode`, and the
|
|
50798
|
+
* events all work as they do there. The class extends the headless heatmap,
|
|
50799
|
+
* and its own entry point carries the drawing, so a page using only `Heatmap`
|
|
50800
|
+
* loads none of it.
|
|
50801
|
+
*
|
|
50802
|
+
* **`flat` lays every prism down** at no height, which leaves the tones on a
|
|
50803
|
+
* plane at the same angle.
|
|
50804
|
+
*
|
|
50805
|
+
* **`gap` and `min-cell` set the smallest cell.** The drawing scales as a
|
|
50806
|
+
* whole, so a wider box draws larger cells and the gap grows with them. A box
|
|
50807
|
+
* too narrow for every column at `min-cell` draws the newest that fit.
|
|
50808
|
+
*
|
|
50809
|
+
* **The drawing is SVG and holds still.** It scales with its box through its
|
|
50810
|
+
* `viewBox`, needs no WebGL, and has no motion to pause.
|
|
50811
|
+
*
|
|
50812
|
+
* **Keyboard.** The keys are `Heatmap`'s. Down moves to the next reading in a
|
|
50813
|
+
* column, drawn down to the left, and Right to the same reading in the next
|
|
50814
|
+
* column, drawn down to the right.
|
|
50815
|
+
*
|
|
50816
|
+
* | Key | What it does |
|
|
50817
|
+
* |---|---|
|
|
50818
|
+
* | Tab | Moves focus to the strip and shows the first cell. |
|
|
50819
|
+
* | Down, Up | Moves to the next or the previous cell. |
|
|
50820
|
+
* | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
|
|
50821
|
+
* | Home, End | Moves to the first or the last cell. |
|
|
50822
|
+
* | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
|
|
50823
|
+
* | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
|
|
50824
|
+
* | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under `selection-mode="multiple"`. |
|
|
50825
|
+
* | Escape | Puts the cell's tooltip away. |
|
|
50826
|
+
*
|
|
50827
|
+
* ## Attributes & Properties
|
|
50828
|
+
*
|
|
50829
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
50830
|
+
*
|
|
50831
|
+
* - `flat`: Draws every prism at no height, so the tones lie on a plane.
|
|
50832
|
+
* - `relief`: How tall the highest reading stands, in cells. Every other reading stands
|
|
50833
|
+
* at its share of it.
|
|
50834
|
+
* - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
|
|
50835
|
+
* and the fallback of the `empty` slot.
|
|
50836
|
+
* - `loading`: Whether the readings are still on their way. The chart shows
|
|
50837
|
+
* `loading-text` in place of an empty drawing until it has readings.
|
|
50838
|
+
*
|
|
50839
|
+
* Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
50840
|
+
* that already has readings keeps drawing them, so a refresh does not
|
|
50841
|
+
* blank it.
|
|
50842
|
+
* - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
|
|
50843
|
+
* there are no readings yet, and the fallback of the `loading` slot.
|
|
50844
|
+
* - `for`: The id of the table to read.
|
|
50845
|
+
*
|
|
50846
|
+
* Names a table in the same tree, so a chart inside another component's
|
|
50847
|
+
* shadow root reads a table in that root rather than one in the document. A
|
|
50848
|
+
* `<table>` or anything built from grid roles, including `helix-table`.
|
|
50849
|
+
*
|
|
50850
|
+
* **In React this arrives as a property and not as an attribute**, the way
|
|
50851
|
+
* `Tooltip.for` does, so it does not reflect and nothing styles on it.
|
|
50852
|
+
* - `label`: The chart's name, which starts the chart's text summary.
|
|
50853
|
+
*
|
|
50854
|
+
* Absent falls back to the table's own caption, which is usually the right
|
|
50855
|
+
* words and is already written.
|
|
50856
|
+
* - `locale`: The locale the chart's own numbers are written in: its axis, its
|
|
50857
|
+
* percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
50858
|
+
*
|
|
50859
|
+
* Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
50860
|
+
* cells are shown as the table writes them, whatever this says.
|
|
50861
|
+
* - `position-label`/`positionLabel`: Where a reading the keys moved to stands among the readings, said after
|
|
50862
|
+
* it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
50863
|
+
* `locale`.
|
|
50864
|
+
*
|
|
50865
|
+
* Set it to the words of the page's language, such as `{position} von
|
|
50866
|
+
* {count}`, or to nothing to say no position. A slice or a series a
|
|
50867
|
+
* legend hid is not counted.
|
|
50868
|
+
* - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
50869
|
+
* `overview-label`.
|
|
50870
|
+
* - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
|
|
50871
|
+
* `min-cell` is.
|
|
50872
|
+
* - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
50873
|
+
*
|
|
50874
|
+
* **Set this only to overrule what the strip actually draws.** The arithmetic
|
|
50875
|
+
* needs a width in pixels and the width is a length the stylesheet resolves,
|
|
50876
|
+
* so a number written here that disagrees with the sheet is a promise the
|
|
50877
|
+
* consumer has to keep by hand, and the one number a summary is told to trust
|
|
50878
|
+
* is the one it gets wrong.
|
|
50879
|
+
*
|
|
50880
|
+
* The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
50881
|
+
* own and these two are the estimate used until the first measurement lands.
|
|
50882
|
+
* Writing the attribute pins the value and stops the measurement being
|
|
50883
|
+
* consulted, which is what a container query or a transition on the cell size
|
|
50884
|
+
* wants, where what is drawn this frame is not what the arithmetic should
|
|
50885
|
+
* plan around.
|
|
50886
|
+
*
|
|
50887
|
+
* Zero turns the dropping off altogether, which is right for a strip in a
|
|
50888
|
+
* container that cannot get narrow.
|
|
50889
|
+
* - `overview-label`/`overviewLabel`: The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
50890
|
+
* `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
50891
|
+
* and its reading as the table writes it, and `{total}` the total of the
|
|
50892
|
+
* readings drawn, written in the locale.
|
|
50893
|
+
* - `rows`: How many rows the strip has.
|
|
50894
|
+
*
|
|
50895
|
+
* `1` is a status strip and `7` is a calendar week, which are the two readings
|
|
50896
|
+
* this covers. Cells fill down the column and then across, which is what a
|
|
50897
|
+
* calendar heatmap does: a week is a column, so the strip reads along the
|
|
50898
|
+
* line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
50899
|
+
* days.
|
|
50900
|
+
* - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
|
|
50901
|
+
* - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
|
|
50902
|
+
* how many cells are selected, written in the locale, and a language that
|
|
50903
|
+
* needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
50904
|
+
* {# wybrane} many {# wybranych} other {# wybranego}}`.
|
|
50905
|
+
* - `selection-mode`/`selectionMode`: How many cells a reader can select: `single` or `multiple`.
|
|
50906
|
+
*
|
|
50907
|
+
* Absent selects nothing, and a press or Space does what it did.
|
|
50908
|
+
* - `selection-shape`/`selectionShape`: What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
50909
|
+
* cell between two in the table's order, or `rectangle`, the cells between
|
|
50910
|
+
* two corners by row and by column, as a spreadsheet selects a range.
|
|
50911
|
+
* - `strip-label`/`stripLabel`: The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
50912
|
+
* table caption.
|
|
50913
|
+
* - `thresholds`: Lower bounds for the tone buckets, in the order the tones are given.
|
|
50914
|
+
*
|
|
50915
|
+
* `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
50916
|
+
* first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
|
|
50917
|
+
* fourth. A value below the first bound gets no tone at all: an empty day in a
|
|
50918
|
+
* contribution graph is a day with nothing in it, and painting it as the
|
|
50919
|
+
* lowest bucket claims a reading that does not exist.
|
|
50920
|
+
* - `tones`: The tone for each bucket, in the same order as `thresholds`.
|
|
50921
|
+
*
|
|
50922
|
+
* A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
|
|
50923
|
+
* **`"1"` through `"5"` are a ramp and everything else is a category**, which
|
|
50924
|
+
* is the distinction a heatmap lives or dies on: magnitude has to be one hue
|
|
50925
|
+
* getting louder, because a reader compares two cells by weight and cannot
|
|
50926
|
+
* compare two hues at all. `tones="surface info accent success primary"` for a
|
|
50927
|
+
* commit count is five unrelated hues for five amounts, which is confetti with
|
|
50928
|
+
* no order in it.
|
|
50929
|
+
* - `total-label`/`totalLabel`: The name the `overview` gives the total of the readings drawn,
|
|
50930
|
+
* `{totalLabel}` in `overview-label`.
|
|
50931
|
+
* - `value`: The selected cells, separated by commas: each by the date its row's
|
|
50932
|
+
* header carries in a `<time datetime>`, such as `2026-06-11`, or by the
|
|
50933
|
+
* header's words where it carries none.
|
|
50934
|
+
*
|
|
50935
|
+
* Set it to start with cells selected. Written by a press or a key under
|
|
50936
|
+
* `selection-mode`.
|
|
50937
|
+
* - `data`: The readings as data, in the shape of a table, where the page has no
|
|
50938
|
+
* table to point `for` at. `for` wins where both are set.
|
|
50939
|
+
*
|
|
50940
|
+
* ```js
|
|
50941
|
+
* chart.data = {
|
|
50942
|
+
* caption: 'Sessions by channel',
|
|
50943
|
+
* columns: ['Month', 'Direct', 'Referral'],
|
|
50944
|
+
* rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
50945
|
+
* }
|
|
50946
|
+
* ```
|
|
50947
|
+
*
|
|
50948
|
+
* The first column holds each row's label and every column after it a
|
|
50949
|
+
* series, as in a table. A cell is a number, words, `null` for a blank,
|
|
50950
|
+
* or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
50951
|
+
* number is shown in `locale`.
|
|
50952
|
+
*
|
|
50953
|
+
* **A table is still the better source where the page can show one**:
|
|
50954
|
+
* it reads with no script and before hydration, and a reader can sort and
|
|
50955
|
+
* copy it. Data is drawn on the client only, so a server serves the
|
|
50956
|
+
* frame, and the summary, the keys and the readout are then the whole of
|
|
50957
|
+
* what a screen reader is given. Set a new object to redraw: the chart
|
|
50958
|
+
* does not look inside the one it has. (property only)
|
|
50959
|
+
* - `series`: The table's columns, one series each. Empty when there is no table.
|
|
50960
|
+
*
|
|
50961
|
+
* Held by the controller between edits, so a render reading this five
|
|
50962
|
+
* times parses the table once. See `SourceController.series`. (property only) (readonly)
|
|
50963
|
+
* - `named`: The chart's name: an `aria-label` written on the chart, then `label`,
|
|
50964
|
+
* then the table's caption.
|
|
50965
|
+
*
|
|
50966
|
+
* The fallback is the reason this is shared rather than copied: a caption is
|
|
50967
|
+
* already written, already the right words, and already the thing a reader
|
|
50968
|
+
* of the table sees. A chart that made the consumer say it twice would be
|
|
50969
|
+
* asking for the second one to drift.
|
|
50970
|
+
*
|
|
50971
|
+
* **An `aria-label` on the chart comes first**, because it is how a page
|
|
50972
|
+
* names an element, and the chart is a generic around its plot: written
|
|
50973
|
+
* on the host, the name reached nobody. The plot takes it, as Heatmap's
|
|
50974
|
+
* strip always did. (property only) (readonly)
|
|
50975
|
+
* - `plottedColumns`: The positions of the cells in a row that hold numbers, in table order.
|
|
50976
|
+
*
|
|
50977
|
+
* The same test `readSeries` applies when it drops a column of notes: a
|
|
50978
|
+
* column is a series where any row parses, so a series survives one blank
|
|
50979
|
+
* cell and a column of words is never one. (property only) (readonly)
|
|
50980
|
+
* - `readings`: The number of readings, which the pointer position maps onto. (property only) (readonly)
|
|
50981
|
+
* - `visible`: How many cells are actually drawn.
|
|
50982
|
+
*
|
|
50983
|
+
* **This is the number a summary has to agree with**, and the reason it is
|
|
50984
|
+
* published at all: a consumer's own summary is their markup and this element
|
|
50985
|
+
* cannot rewrite it, so the only honest arrangement is to hand over the count
|
|
50986
|
+
* and say when it changed.
|
|
50987
|
+
*
|
|
50988
|
+
* **A plain getter, and the attribute is written in `updated`, because
|
|
50989
|
+
* `@property({ reflect: true })` on a getter with no setter reflects once and
|
|
50990
|
+
* then goes stale.** Lit reflects a property that is in `changedProperties`,
|
|
50991
|
+
* and nothing puts a derived getter there after the first update: the
|
|
50992
|
+
* attribute would be right on load and wrong from the first resize, which is
|
|
50993
|
+
* the exact failure the count exists to prevent, arriving through the
|
|
50994
|
+
* mechanism meant to prevent it. (property only) (readonly)
|
|
50995
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
50996
|
+
*
|
|
50997
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
50998
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
50999
|
+
* base class takes the name every subclass then cannot use.
|
|
51000
|
+
*
|
|
51001
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
51002
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
51003
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
51004
|
+
* instead.
|
|
51005
|
+
*
|
|
51006
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
51007
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
51008
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
51009
|
+
*
|
|
51010
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
51011
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
51012
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
51013
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
51014
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
51015
|
+
*
|
|
51016
|
+
* ## Events
|
|
51017
|
+
*
|
|
51018
|
+
* Events that will be emitted by the component.
|
|
51019
|
+
*
|
|
51020
|
+
* - `change`: Fired once a press or a key has changed which cells are selected.
|
|
51021
|
+
* - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
|
|
51022
|
+
* - `helix-reading-change`: The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it.
|
|
51023
|
+
* - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
|
|
51024
|
+
* - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
|
|
51025
|
+
*
|
|
51026
|
+
* ## Slots
|
|
51027
|
+
*
|
|
51028
|
+
* Areas where markup can be added to the component.
|
|
51029
|
+
*
|
|
51030
|
+
* - `empty`: Content shown under the strip when the table has no readings, such as a link to add the first. Falls back to `empty-text`.
|
|
51031
|
+
* - `end`: Below the strip, at the trailing edge: usually the newest date.
|
|
51032
|
+
* - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
|
|
51033
|
+
* - `start`: Below the strip, at the leading edge: usually the oldest date.
|
|
51034
|
+
* - `summary`: Below the strip, in the middle: a summary of the range shown.
|
|
51035
|
+
*
|
|
51036
|
+
* ## Methods
|
|
51037
|
+
*
|
|
51038
|
+
* Methods that can be called to access component functionality.
|
|
51039
|
+
*
|
|
51040
|
+
* - `seriesOf(cell: number) => number | undefined`: The palette slot for the cell at this position in a row.
|
|
51041
|
+
*
|
|
51042
|
+
* **A cell's place in its row is not its series' depth, and the tooltip
|
|
51043
|
+
* spent a while assuming it was.** `readSeries` drops a column nothing
|
|
51044
|
+
* parses and `readRows` keeps it, so one column of notes among the figures
|
|
51045
|
+
* moves every column after it one color along in the bubble: a row reading
|
|
51046
|
+
* `Referral 1,080` wearing series three's green beside a legend that says
|
|
51047
|
+
* series three is something else, which is the one failure the dot exists
|
|
51048
|
+
* to prevent.
|
|
51049
|
+
*
|
|
51050
|
+
* Overridden where a chart reads the table some other way. `ScatterChart`
|
|
51051
|
+
* splits the first plotted column off as the measure across, so its first
|
|
51052
|
+
* *plotted* series is this table's second numeric column.
|
|
51053
|
+
* - `showsSeries(name: string) => boolean`: Whether the series of this name is drawn, which it is unless a legend
|
|
51054
|
+
* reading the same table hid it.
|
|
51055
|
+
*
|
|
51056
|
+
* Asked of the table rather than of a legend, the table being the one
|
|
51057
|
+
* thing the two share: see `SourceController.hide`. A series keeps its
|
|
51058
|
+
* palette slot while it is hidden, so the colors of the others do not move.
|
|
51059
|
+
* For a ring the names are its rows, the slices being the rows.
|
|
51060
|
+
* - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
|
|
51061
|
+
* by its column's heading. The keys and the readout pass over one a
|
|
51062
|
+
* legend hid.
|
|
51063
|
+
*
|
|
51064
|
+
* A column's heading is the cell's name in every row, so the first row
|
|
51065
|
+
* answers for the column.
|
|
51066
|
+
* - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
|
|
51067
|
+
* column's heading, read from the first row that has a cell there, so a
|
|
51068
|
+
* short first row does not lose the heading. `''` where no row has one.
|
|
51069
|
+
* - `pageFrom(at: number, forward: boolean) => number | undefined`: Where PageUp or PageDown goes from the drawn cell at `at`: the same day a
|
|
51070
|
+
* month on or back, by the dates the rows' headers carry. Undefined where
|
|
51071
|
+
* they carry none, and the keys move four columns.
|
|
51072
|
+
*
|
|
51073
|
+
* ## CSS Custom Properties
|
|
51074
|
+
*
|
|
51075
|
+
* CSS variables available for styling the component.
|
|
51076
|
+
*
|
|
51077
|
+
* - `--isometric-heatmap-span`: How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it.
|
|
51078
|
+
* - `--heatmap-rows`: How many rows the strip lays out. The component writes it from the data, and the stylesheet that draws the strip reads it.
|
|
51079
|
+
* - `--heatmap-tone`: The tone of the cell it is set on. The component writes it, and the stylesheet that paints the cell reads it.
|
|
51080
|
+
* - `--heatmap-tone-1`: The weakest step of the magnitude ramp, used by `tones="1 …"`.
|
|
51081
|
+
* - `--heatmap-tone-2`: The second step of the magnitude ramp.
|
|
51082
|
+
* - `--heatmap-tone-3`: The third step of the magnitude ramp.
|
|
51083
|
+
* - `--heatmap-tone-4`: The fourth step of the magnitude ramp.
|
|
51084
|
+
* - `--heatmap-tone-5`: The strongest step of the magnitude ramp.
|
|
51085
|
+
* - `--heatmap-tone-accent`: The color of the `accent` tone.
|
|
51086
|
+
* - `--heatmap-tone-danger`: The color of the `danger` tone.
|
|
51087
|
+
* - `--heatmap-tone-info`: The color of the `info` tone.
|
|
51088
|
+
* - `--heatmap-tone-muted`: The color of the `muted` tone: a quiet background, for a bucket that means nothing happened.
|
|
51089
|
+
* - `--heatmap-tone-primary`: The color of the `primary` tone.
|
|
51090
|
+
* - `--heatmap-tone-success`: The color of the `success` tone, named in `tones` or in `data-tone`.
|
|
51091
|
+
* - `--heatmap-tone-warning`: The color of the `warning` tone.
|
|
51092
|
+
*
|
|
51093
|
+
* ## CSS Parts
|
|
51094
|
+
*
|
|
51095
|
+
* Custom selectors for styling elements within the component.
|
|
51096
|
+
*
|
|
51097
|
+
* - `cell`: One reading: a group holding its three faces.
|
|
51098
|
+
* - `drawing`: The SVG every prism is drawn in. It is mirrored on a right-to-left page.
|
|
51099
|
+
* - `left-face`: The face of a prism toward the next row, drawn at its lower left.
|
|
51100
|
+
* - `right-face`: The face of a prism toward the next column, drawn at its lower right.
|
|
51101
|
+
* - `row`: A column of prisms, which a grid reads as a row, under `selection-mode`.
|
|
51102
|
+
* - `strip`: The box the drawing fills, which takes focus to be read by key. It is named by the host's `aria-labelledby` or `aria-label`, then by `label`, then by the caption of the table.
|
|
51103
|
+
* - `top-face`: The top of a prism, which carries the reading's tone.
|
|
51104
|
+
* - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
|
|
51105
|
+
* - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
|
|
51106
|
+
* - `empty`: The words under the strip when the table has no readings: the `empty` slot, falling back to `empty-text`. Not drawn while the table cannot be read yet, on the server and during hydration, there being no document to resolve `for` in.
|
|
51107
|
+
* - `end`: The trailing slot's box.
|
|
51108
|
+
* - `footer`: The three-slot row under the strip.
|
|
51109
|
+
* - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
|
|
51110
|
+
* - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
|
|
51111
|
+
* - `mark`: The invisible point the tooltip is anchored to.
|
|
51112
|
+
* - `overview`: The busiest reading and the total of the readings drawn, written as a sentence for screen readers, which describes the strip. Rendered once there are cells. Hide it visually.
|
|
51113
|
+
* - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
|
|
51114
|
+
* - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
|
|
51115
|
+
* - `start`: The leading slot's box.
|
|
51116
|
+
* - `summary`: The middle slot's box.
|
|
51117
|
+
* - `table`: The readings as a table, for a screen reader, rendered only where they were drawn from `data`. Hide it visually.
|
|
51118
|
+
* - `tooltip`: The bubble, forwarded from `Tooltip`.
|
|
51119
|
+
* - `tooltip-anchor`: The `Tooltip` element itself.
|
|
51120
|
+
* - `tooltip-arrow`: The bubble's point, forwarded from `Tooltip`.
|
|
51121
|
+
* - `tooltip-arrow-bottom`: The point while the bubble is below the reading, on its top edge. Set alongside `tooltip-arrow`.
|
|
51122
|
+
* - `tooltip-arrow-left`: The point while the bubble is left of the reading, on its right edge. Set alongside `tooltip-arrow`.
|
|
51123
|
+
* - `tooltip-arrow-right`: The point while the bubble is right of the reading, on its left edge. Set alongside `tooltip-arrow`.
|
|
51124
|
+
* - `tooltip-arrow-top`: The point while the bubble is above the reading, on its bottom edge. Set alongside `tooltip-arrow`.
|
|
51125
|
+
* - `tooltip-bottom`: The bubble while it is below the reading. Set alongside `tooltip`.
|
|
51126
|
+
* - `tooltip-cell`: One column's name and value inside the tooltip.
|
|
51127
|
+
* - `tooltip-cell-current`: The cell the series keys rest on, in the charts whose readings hold several series. A strip draws one, so it is never set here.
|
|
51128
|
+
* - `tooltip-label`: The reading's own name inside the tooltip.
|
|
51129
|
+
* - `tooltip-left`: The bubble while it is left of the reading. Set alongside `tooltip`.
|
|
51130
|
+
* - `tooltip-name`: A column's name inside the tooltip.
|
|
51131
|
+
* - `tooltip-right`: The bubble while it is right of the reading. Set alongside `tooltip`.
|
|
51132
|
+
* - `tooltip-top`: The bubble while it is above the reading. Set alongside `tooltip`.
|
|
51133
|
+
* - `tooltip-value`: A column's value inside the tooltip.
|
|
51134
|
+
*
|
|
51135
|
+
* ## CSS States
|
|
51136
|
+
*
|
|
51137
|
+
* These can be used to apply styling when a component is in a given state.
|
|
51138
|
+
*
|
|
51139
|
+
* - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
|
|
51140
|
+
* - `empty`: While the `empty` part stands in place of the cells.
|
|
51141
|
+
* - `loading`: While the `loading` part stands in place of the cells.
|
|
51142
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
51143
|
+
*/
|
|
51144
|
+
"helix-headless-isometric-heatmap": Partial<
|
|
51145
|
+
HelixHeadlessIsometricHeatmapProps &
|
|
51146
|
+
BaseProps<HelixHeadlessIsometricHeatmap> &
|
|
51147
|
+
BaseEvents<HelixHeadlessIsometricHeatmap>
|
|
51148
|
+
>;
|
|
51149
|
+
|
|
50286
51150
|
/**
|
|
50287
51151
|
* Renders a `<kbd>` element.
|
|
50288
51152
|
*
|
|
@@ -78494,10 +79358,12 @@ export type CustomElementsSolidJs = {
|
|
|
78494
79358
|
>;
|
|
78495
79359
|
|
|
78496
79360
|
/**
|
|
78497
|
-
*
|
|
78498
|
-
* WebGL, which a renderer such as Sigma.js does
|
|
78499
|
-
*
|
|
78500
|
-
*
|
|
79361
|
+
* The frame draws no graph itself. A force layout of thousands of notes is
|
|
79362
|
+
* physics and WebGL, which a renderer such as Sigma.js does, and an
|
|
79363
|
+
* architecture diagram is drawn by `isometricDriver` from
|
|
79364
|
+
* `@fusion.dev/helix-graph/isometric`. Put the drawing's box in the frame, and
|
|
79365
|
+
* `connectGraph` from `@fusion.dev/helix-graph` draws `nodes` and `links` in
|
|
79366
|
+
* it and keeps it in step with the frame.
|
|
78501
79367
|
*
|
|
78502
79368
|
* What the frame adds is what a drawing of a graph cannot do: a list of every
|
|
78503
79369
|
* note beside it, which is the graph for a screen reader and a quick way to
|
|
@@ -79554,14 +80420,11 @@ export type CustomElementsSolidJs = {
|
|
|
79554
80420
|
* a dark background. Shapes that set their own `fill` or `stroke` are
|
|
79555
80421
|
* unaffected.
|
|
79556
80422
|
*
|
|
79557
|
-
* **A name is looked up in a registry.** The family's entry registers
|
|
79558
|
-
* set
|
|
79559
|
-
*
|
|
79560
|
-
*
|
|
79561
|
-
*
|
|
79562
|
-
* `@fusion.dev/helix-headless/icon/root`, registers none: a page that imports
|
|
79563
|
-
* it and calls `registerIcons` with the glyphs it names ships those and no
|
|
79564
|
-
* others. `registerIconLibrary` resolves names under a prefix of your own,
|
|
80423
|
+
* **A name is looked up in a registry.** The family's entry registers the
|
|
80424
|
+
* whole set, so any name in it draws, and `icon/all` registers the same set.
|
|
80425
|
+
* The element's own entry, `@fusion.dev/helix-headless/icon/root`, registers
|
|
80426
|
+
* none: a page that imports it and calls `registerIcons` with the glyphs it
|
|
80427
|
+
* names ships those and no others. `registerIconLibrary` resolves names under a prefix of your own,
|
|
79565
80428
|
* such as `lucide:camera`, at once or later, and the element fires `load` when
|
|
79566
80429
|
* a glyph that came later is drawn. A glyph registered after the element
|
|
79567
80430
|
* rendered is drawn then.
|
|
@@ -79603,10 +80466,12 @@ export type CustomElementsSolidJs = {
|
|
|
79603
80466
|
* - `name`: The name of the icon in the Helix set.
|
|
79604
80467
|
*
|
|
79605
80468
|
* **A lookup, and the reason both this and `icon` exist.** A name is a string,
|
|
79606
|
-
* so it is what markup can carry, and resolving one means an index
|
|
79607
|
-
* bundler can shake
|
|
79608
|
-
*
|
|
79609
|
-
*
|
|
80469
|
+
* so it is what markup can carry, and resolving one means an index of the
|
|
80470
|
+
* whole set that no bundler can shake: 15 kB for a consumer who renders one
|
|
80471
|
+
* mark. An attribute is the only thing an HTML author can write, and that is
|
|
80472
|
+
* worth the index; a consumer who would rather not pay it imports the
|
|
80473
|
+
* element from `icon/root` and registers the glyphs it names, or hands over
|
|
80474
|
+
* the value instead.
|
|
79610
80475
|
*
|
|
79611
80476
|
* A name written `prefix:name` asks the library registered under that
|
|
79612
80477
|
* prefix.
|
|
@@ -80166,6 +81031,373 @@ export type CustomElementsSolidJs = {
|
|
|
80166
81031
|
BaseEvents<HelixHeadlessInput>
|
|
80167
81032
|
>;
|
|
80168
81033
|
|
|
81034
|
+
/**
|
|
81035
|
+
* The same strip as `Heatmap`, seen from above at an angle. Each reading is a
|
|
81036
|
+
* prism: its top face takes the cell's tone, and its height repeats the value,
|
|
81037
|
+
* measured from zero against the highest reading in the table. `rows="7"`
|
|
81038
|
+
* makes a contribution graph, with each week a column running down to the
|
|
81039
|
+
* right.
|
|
81040
|
+
*
|
|
81041
|
+
* **The height says what the tone says.** Read the exact value from the tooltip
|
|
81042
|
+
* or the table, and compare readings by tone. A tall reading at the front can
|
|
81043
|
+
* hide a short one behind it, so the newest column stands at the front, where
|
|
81044
|
+
* nothing covers it.
|
|
81045
|
+
*
|
|
81046
|
+
* **Everything else is `Heatmap`.** The table named by `for`, the tones and
|
|
81047
|
+
* thresholds, the keys, the tooltip, the overview, `selection-mode`, and the
|
|
81048
|
+
* events all work as they do there. The class extends the headless heatmap,
|
|
81049
|
+
* and its own entry point carries the drawing, so a page using only `Heatmap`
|
|
81050
|
+
* loads none of it.
|
|
81051
|
+
*
|
|
81052
|
+
* **`flat` lays every prism down** at no height, which leaves the tones on a
|
|
81053
|
+
* plane at the same angle.
|
|
81054
|
+
*
|
|
81055
|
+
* **`gap` and `min-cell` set the smallest cell.** The drawing scales as a
|
|
81056
|
+
* whole, so a wider box draws larger cells and the gap grows with them. A box
|
|
81057
|
+
* too narrow for every column at `min-cell` draws the newest that fit.
|
|
81058
|
+
*
|
|
81059
|
+
* **The drawing is SVG and holds still.** It scales with its box through its
|
|
81060
|
+
* `viewBox`, needs no WebGL, and has no motion to pause.
|
|
81061
|
+
*
|
|
81062
|
+
* **Keyboard.** The keys are `Heatmap`'s. Down moves to the next reading in a
|
|
81063
|
+
* column, drawn down to the left, and Right to the same reading in the next
|
|
81064
|
+
* column, drawn down to the right.
|
|
81065
|
+
*
|
|
81066
|
+
* | Key | What it does |
|
|
81067
|
+
* |---|---|
|
|
81068
|
+
* | Tab | Moves focus to the strip and shows the first cell. |
|
|
81069
|
+
* | Down, Up | Moves to the next or the previous cell. |
|
|
81070
|
+
* | Right, Left | Moves a column on or back, a week with `rows="7"`. On a right-to-left page, Left moves on. |
|
|
81071
|
+
* | Home, End | Moves to the first or the last cell. |
|
|
81072
|
+
* | Page Down, Page Up | Moves a month on or back where the rows carry dates, and four columns otherwise. |
|
|
81073
|
+
* | Enter, Space | Presses the cell, which sends `helix-reading-press`, and selects it or lets it go under `selection-mode`. |
|
|
81074
|
+
* | Shift with an arrow, Home, End, Page Up or Page Down | Selects every cell from the last one pressed to where the key went, under `selection-mode="multiple"`. |
|
|
81075
|
+
* | Escape | Puts the cell's tooltip away. |
|
|
81076
|
+
*
|
|
81077
|
+
* ## Attributes & Properties
|
|
81078
|
+
*
|
|
81079
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
81080
|
+
*
|
|
81081
|
+
* - `flat`: Draws every prism at no height, so the tones lie on a plane.
|
|
81082
|
+
* - `relief`: How tall the highest reading stands, in cells. Every other reading stands
|
|
81083
|
+
* at its share of it.
|
|
81084
|
+
* - `empty-text`/`emptyText`: The words shown in place of the drawing when the table has no readings,
|
|
81085
|
+
* and the fallback of the `empty` slot.
|
|
81086
|
+
* - `loading`: Whether the readings are still on their way. The chart shows
|
|
81087
|
+
* `loading-text` in place of an empty drawing until it has readings.
|
|
81088
|
+
*
|
|
81089
|
+
* Reflected, so a stylesheet can treat the chart while it waits. A chart
|
|
81090
|
+
* that already has readings keeps drawing them, so a refresh does not
|
|
81091
|
+
* blank it.
|
|
81092
|
+
* - `loading-text`/`loadingText`: The words shown in place of the drawing while `loading` is set and
|
|
81093
|
+
* there are no readings yet, and the fallback of the `loading` slot.
|
|
81094
|
+
* - `for`: The id of the table to read.
|
|
81095
|
+
*
|
|
81096
|
+
* Names a table in the same tree, so a chart inside another component's
|
|
81097
|
+
* shadow root reads a table in that root rather than one in the document. A
|
|
81098
|
+
* `<table>` or anything built from grid roles, including `helix-table`.
|
|
81099
|
+
*
|
|
81100
|
+
* **In React this arrives as a property and not as an attribute**, the way
|
|
81101
|
+
* `Tooltip.for` does, so it does not reflect and nothing styles on it.
|
|
81102
|
+
* - `label`: The chart's name, which starts the chart's text summary.
|
|
81103
|
+
*
|
|
81104
|
+
* Absent falls back to the table's own caption, which is usually the right
|
|
81105
|
+
* words and is already written.
|
|
81106
|
+
* - `locale`: The locale the chart's own numbers are written in: its axis, its
|
|
81107
|
+
* percentages and its totals, such as `de` for `1.240` and `32 %`.
|
|
81108
|
+
*
|
|
81109
|
+
* Absent reads the nearest `lang`, then the runtime's own. The table's
|
|
81110
|
+
* cells are shown as the table writes them, whatever this says.
|
|
81111
|
+
* - `position-label`/`positionLabel`: Where a reading the keys moved to stands among the readings, said after
|
|
81112
|
+
* it. `{position}` and `{count}` are replaced with the numbers, written in
|
|
81113
|
+
* `locale`.
|
|
81114
|
+
*
|
|
81115
|
+
* Set it to the words of the page's language, such as `{position} von
|
|
81116
|
+
* {count}`, or to nothing to say no position. A slice or a series a
|
|
81117
|
+
* legend hid is not counted.
|
|
81118
|
+
* - `busiest-label`/`busiestLabel`: The name the `overview` gives the busiest reading, `{busiestLabel}` in
|
|
81119
|
+
* `overview-label`.
|
|
81120
|
+
* - `gap`: Space between cells, in CSS pixels. It is a number for the same reason
|
|
81121
|
+
* `min-cell` is.
|
|
81122
|
+
* - `min-cell`/`minCell`: The smallest a cell may get before the strip draws fewer of them, in CSS pixels.
|
|
81123
|
+
*
|
|
81124
|
+
* **Set this only to overrule what the strip actually draws.** The arithmetic
|
|
81125
|
+
* needs a width in pixels and the width is a length the stylesheet resolves,
|
|
81126
|
+
* so a number written here that disagrees with the sheet is a promise the
|
|
81127
|
+
* consumer has to keep by hand, and the one number a summary is told to trust
|
|
81128
|
+
* is the one it gets wrong.
|
|
81129
|
+
*
|
|
81130
|
+
* The strip measures itself, so sizing the cells in a sheet is enough on its
|
|
81131
|
+
* own and these two are the estimate used until the first measurement lands.
|
|
81132
|
+
* Writing the attribute pins the value and stops the measurement being
|
|
81133
|
+
* consulted, which is what a container query or a transition on the cell size
|
|
81134
|
+
* wants, where what is drawn this frame is not what the arithmetic should
|
|
81135
|
+
* plan around.
|
|
81136
|
+
*
|
|
81137
|
+
* Zero turns the dropping off altogether, which is right for a strip in a
|
|
81138
|
+
* container that cannot get narrow.
|
|
81139
|
+
* - `overview-label`/`overviewLabel`: The `overview`'s sentence. `{busiestLabel}` and `{totalLabel}` are
|
|
81140
|
+
* `busiest-label` and `total-label`, `{busiest}` the busiest reading's name
|
|
81141
|
+
* and its reading as the table writes it, and `{total}` the total of the
|
|
81142
|
+
* readings drawn, written in the locale.
|
|
81143
|
+
* - `rows`: How many rows the strip has.
|
|
81144
|
+
*
|
|
81145
|
+
* `1` is a status strip and `7` is a calendar week, which are the two readings
|
|
81146
|
+
* this covers. Cells fill down the column and then across, which is what a
|
|
81147
|
+
* calendar heatmap does: a week is a column, so the strip reads along the
|
|
81148
|
+
* line in weeks, from the right on a right-to-left page, and top to bottom in
|
|
81149
|
+
* days.
|
|
81150
|
+
* - `selected-label`/`selectedLabel`: What the readout added for a selected cell, under `selection-mode`.
|
|
81151
|
+
* - `selection-label`/`selectionLabel`: What the `selection` part says after the selection changes. `{count}` is
|
|
81152
|
+
* how many cells are selected, written in the locale, and a language that
|
|
81153
|
+
* needs plural forms writes them: `{count, plural, one {# wybrany} few
|
|
81154
|
+
* {# wybrane} many {# wybranych} other {# wybranego}}`.
|
|
81155
|
+
* - `selection-mode`/`selectionMode`: How many cells a reader can select: `single` or `multiple`.
|
|
81156
|
+
*
|
|
81157
|
+
* Absent selects nothing, and a press or Space does what it did.
|
|
81158
|
+
* - `selection-shape`/`selectionShape`: What Shift takes in under `selection-mode="multiple"`: `linear`, every
|
|
81159
|
+
* cell between two in the table's order, or `rectangle`, the cells between
|
|
81160
|
+
* two corners by row and by column, as a spreadsheet selects a range.
|
|
81161
|
+
* - `strip-label`/`stripLabel`: The strip's name where the chart has none: no `aria-label`, `label`, or
|
|
81162
|
+
* table caption.
|
|
81163
|
+
* - `thresholds`: Lower bounds for the tone buckets, in the order the tones are given.
|
|
81164
|
+
*
|
|
81165
|
+
* `thresholds="1 3 6 9"` with `tones="1 2 3 4"` puts 1 and 2 in the ramp's
|
|
81166
|
+
* first step, 3 to 5 in the second, 6 to 8 in the third, and 9 upward in the
|
|
81167
|
+
* fourth. A value below the first bound gets no tone at all: an empty day in a
|
|
81168
|
+
* contribution graph is a day with nothing in it, and painting it as the
|
|
81169
|
+
* lowest bucket claims a reading that does not exist.
|
|
81170
|
+
* - `tones`: The tone for each bucket, in the same order as `thresholds`.
|
|
81171
|
+
*
|
|
81172
|
+
* A name, resolved as `--heatmap-tone-<name>` by whichever tier answers.
|
|
81173
|
+
* **`"1"` through `"5"` are a ramp and everything else is a category**, which
|
|
81174
|
+
* is the distinction a heatmap lives or dies on: magnitude has to be one hue
|
|
81175
|
+
* getting louder, because a reader compares two cells by weight and cannot
|
|
81176
|
+
* compare two hues at all. `tones="surface info accent success primary"` for a
|
|
81177
|
+
* commit count is five unrelated hues for five amounts, which is confetti with
|
|
81178
|
+
* no order in it.
|
|
81179
|
+
* - `total-label`/`totalLabel`: The name the `overview` gives the total of the readings drawn,
|
|
81180
|
+
* `{totalLabel}` in `overview-label`.
|
|
81181
|
+
* - `value`: The selected cells, separated by commas: each by the date its row's
|
|
81182
|
+
* header carries in a `<time datetime>`, such as `2026-06-11`, or by the
|
|
81183
|
+
* header's words where it carries none.
|
|
81184
|
+
*
|
|
81185
|
+
* Set it to start with cells selected. Written by a press or a key under
|
|
81186
|
+
* `selection-mode`.
|
|
81187
|
+
* - `data`: The readings as data, in the shape of a table, where the page has no
|
|
81188
|
+
* table to point `for` at. `for` wins where both are set.
|
|
81189
|
+
*
|
|
81190
|
+
* ```js
|
|
81191
|
+
* chart.data = {
|
|
81192
|
+
* caption: 'Sessions by channel',
|
|
81193
|
+
* columns: ['Month', 'Direct', 'Referral'],
|
|
81194
|
+
* rows: [['Jan', 10, 4], ['Feb', 20, 8]],
|
|
81195
|
+
* }
|
|
81196
|
+
* ```
|
|
81197
|
+
*
|
|
81198
|
+
* The first column holds each row's label and every column after it a
|
|
81199
|
+
* series, as in a table. A cell is a number, words, `null` for a blank,
|
|
81200
|
+
* or `{ value, text }` for a number shown as words, such as `$128k`. A
|
|
81201
|
+
* number is shown in `locale`.
|
|
81202
|
+
*
|
|
81203
|
+
* **A table is still the better source where the page can show one**:
|
|
81204
|
+
* it reads with no script and before hydration, and a reader can sort and
|
|
81205
|
+
* copy it. Data is drawn on the client only, so a server serves the
|
|
81206
|
+
* frame, and the summary, the keys and the readout are then the whole of
|
|
81207
|
+
* what a screen reader is given. Set a new object to redraw: the chart
|
|
81208
|
+
* does not look inside the one it has. (property only)
|
|
81209
|
+
* - `series`: The table's columns, one series each. Empty when there is no table.
|
|
81210
|
+
*
|
|
81211
|
+
* Held by the controller between edits, so a render reading this five
|
|
81212
|
+
* times parses the table once. See `SourceController.series`. (property only) (readonly)
|
|
81213
|
+
* - `named`: The chart's name: an `aria-label` written on the chart, then `label`,
|
|
81214
|
+
* then the table's caption.
|
|
81215
|
+
*
|
|
81216
|
+
* The fallback is the reason this is shared rather than copied: a caption is
|
|
81217
|
+
* already written, already the right words, and already the thing a reader
|
|
81218
|
+
* of the table sees. A chart that made the consumer say it twice would be
|
|
81219
|
+
* asking for the second one to drift.
|
|
81220
|
+
*
|
|
81221
|
+
* **An `aria-label` on the chart comes first**, because it is how a page
|
|
81222
|
+
* names an element, and the chart is a generic around its plot: written
|
|
81223
|
+
* on the host, the name reached nobody. The plot takes it, as Heatmap's
|
|
81224
|
+
* strip always did. (property only) (readonly)
|
|
81225
|
+
* - `plottedColumns`: The positions of the cells in a row that hold numbers, in table order.
|
|
81226
|
+
*
|
|
81227
|
+
* The same test `readSeries` applies when it drops a column of notes: a
|
|
81228
|
+
* column is a series where any row parses, so a series survives one blank
|
|
81229
|
+
* cell and a column of words is never one. (property only) (readonly)
|
|
81230
|
+
* - `readings`: The number of readings, which the pointer position maps onto. (property only) (readonly)
|
|
81231
|
+
* - `visible`: How many cells are actually drawn.
|
|
81232
|
+
*
|
|
81233
|
+
* **This is the number a summary has to agree with**, and the reason it is
|
|
81234
|
+
* published at all: a consumer's own summary is their markup and this element
|
|
81235
|
+
* cannot rewrite it, so the only honest arrangement is to hand over the count
|
|
81236
|
+
* and say when it changed.
|
|
81237
|
+
*
|
|
81238
|
+
* **A plain getter, and the attribute is written in `updated`, because
|
|
81239
|
+
* `@property({ reflect: true })` on a getter with no setter reflects once and
|
|
81240
|
+
* then goes stale.** Lit reflects a property that is in `changedProperties`,
|
|
81241
|
+
* and nothing puts a derived getter there after the first update: the
|
|
81242
|
+
* attribute would be right on load and wrong from the first resize, which is
|
|
81243
|
+
* the exact failure the count exists to prevent, arriving through the
|
|
81244
|
+
* mechanism meant to prevent it. (property only) (readonly)
|
|
81245
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
81246
|
+
*
|
|
81247
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
81248
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
81249
|
+
* base class takes the name every subclass then cannot use.
|
|
81250
|
+
*
|
|
81251
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
81252
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
81253
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
81254
|
+
* instead.
|
|
81255
|
+
*
|
|
81256
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
81257
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
81258
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
81259
|
+
*
|
|
81260
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
81261
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
81262
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
81263
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
81264
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
81265
|
+
*
|
|
81266
|
+
* ## Events
|
|
81267
|
+
*
|
|
81268
|
+
* Events that will be emitted by the component.
|
|
81269
|
+
*
|
|
81270
|
+
* - `change`: Fired once a press or a key has changed which cells are selected.
|
|
81271
|
+
* - `helix-before-change`: Fired before a press or a key changes which cells are selected, with the `value` it would leave. Cancelable.
|
|
81272
|
+
* - `helix-reading-change`: The reading shown moved, or was put away: `index` is the row, or `-1` for none, with its `label`, the `series` the keys rest on, and the `pointerType` that moved it.
|
|
81273
|
+
* - `helix-reading-press`: A reading was clicked, tapped, or pressed with Enter or Space, with the same detail as `helix-reading-change`.
|
|
81274
|
+
* - `helix-resize`: Fired when the number of cells drawn changes, with the new number.
|
|
81275
|
+
*
|
|
81276
|
+
* ## Slots
|
|
81277
|
+
*
|
|
81278
|
+
* Areas where markup can be added to the component.
|
|
81279
|
+
*
|
|
81280
|
+
* - `empty`: Content shown under the strip when the table has no readings, such as a link to add the first. Falls back to `empty-text`.
|
|
81281
|
+
* - `end`: Below the strip, at the trailing edge: usually the newest date.
|
|
81282
|
+
* - `loading`: Content shown under the strip while `loading` is set and there are no readings yet. Falls back to `loading-text`.
|
|
81283
|
+
* - `start`: Below the strip, at the leading edge: usually the oldest date.
|
|
81284
|
+
* - `summary`: Below the strip, in the middle: a summary of the range shown.
|
|
81285
|
+
*
|
|
81286
|
+
* ## Methods
|
|
81287
|
+
*
|
|
81288
|
+
* Methods that can be called to access component functionality.
|
|
81289
|
+
*
|
|
81290
|
+
* - `seriesOf(cell: number) => number | undefined`: The palette slot for the cell at this position in a row.
|
|
81291
|
+
*
|
|
81292
|
+
* **A cell's place in its row is not its series' depth, and the tooltip
|
|
81293
|
+
* spent a while assuming it was.** `readSeries` drops a column nothing
|
|
81294
|
+
* parses and `readRows` keeps it, so one column of notes among the figures
|
|
81295
|
+
* moves every column after it one color along in the bubble: a row reading
|
|
81296
|
+
* `Referral 1,080` wearing series three's green beside a legend that says
|
|
81297
|
+
* series three is something else, which is the one failure the dot exists
|
|
81298
|
+
* to prevent.
|
|
81299
|
+
*
|
|
81300
|
+
* Overridden where a chart reads the table some other way. `ScatterChart`
|
|
81301
|
+
* splits the first plotted column off as the measure across, so its first
|
|
81302
|
+
* *plotted* series is this table's second numeric column.
|
|
81303
|
+
* - `showsSeries(name: string) => boolean`: Whether the series of this name is drawn, which it is unless a legend
|
|
81304
|
+
* reading the same table hid it.
|
|
81305
|
+
*
|
|
81306
|
+
* Asked of the table rather than of a legend, the table being the one
|
|
81307
|
+
* thing the two share: see `SourceController.hide`. A series keeps its
|
|
81308
|
+
* palette slot while it is hidden, so the colors of the others do not move.
|
|
81309
|
+
* For a ring the names are its rows, the slices being the rows.
|
|
81310
|
+
* - `showsColumn(cell: number) => boolean`: Whether the series read from the cell at this place in a row is drawn,
|
|
81311
|
+
* by its column's heading. The keys and the readout pass over one a
|
|
81312
|
+
* legend hid.
|
|
81313
|
+
*
|
|
81314
|
+
* A column's heading is the cell's name in every row, so the first row
|
|
81315
|
+
* answers for the column.
|
|
81316
|
+
* - `columnName(cell: number) => string`: The heading of the column at this place in a row: a cell's name is its
|
|
81317
|
+
* column's heading, read from the first row that has a cell there, so a
|
|
81318
|
+
* short first row does not lose the heading. `''` where no row has one.
|
|
81319
|
+
* - `pageFrom(at: number, forward: boolean) => number | undefined`: Where PageUp or PageDown goes from the drawn cell at `at`: the same day a
|
|
81320
|
+
* month on or back, by the dates the rows' headers carry. Undefined where
|
|
81321
|
+
* they carry none, and the keys move four columns.
|
|
81322
|
+
*
|
|
81323
|
+
* ## CSS Custom Properties
|
|
81324
|
+
*
|
|
81325
|
+
* CSS variables available for styling the component.
|
|
81326
|
+
*
|
|
81327
|
+
* - `--isometric-heatmap-span`: How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it.
|
|
81328
|
+
* - `--heatmap-rows`: How many rows the strip lays out. The component writes it from the data, and the stylesheet that draws the strip reads it.
|
|
81329
|
+
* - `--heatmap-tone`: The tone of the cell it is set on. The component writes it, and the stylesheet that paints the cell reads it.
|
|
81330
|
+
* - `--heatmap-tone-1`: The weakest step of the magnitude ramp, used by `tones="1 …"`.
|
|
81331
|
+
* - `--heatmap-tone-2`: The second step of the magnitude ramp.
|
|
81332
|
+
* - `--heatmap-tone-3`: The third step of the magnitude ramp.
|
|
81333
|
+
* - `--heatmap-tone-4`: The fourth step of the magnitude ramp.
|
|
81334
|
+
* - `--heatmap-tone-5`: The strongest step of the magnitude ramp.
|
|
81335
|
+
* - `--heatmap-tone-accent`: The color of the `accent` tone.
|
|
81336
|
+
* - `--heatmap-tone-danger`: The color of the `danger` tone.
|
|
81337
|
+
* - `--heatmap-tone-info`: The color of the `info` tone.
|
|
81338
|
+
* - `--heatmap-tone-muted`: The color of the `muted` tone: a quiet background, for a bucket that means nothing happened.
|
|
81339
|
+
* - `--heatmap-tone-primary`: The color of the `primary` tone.
|
|
81340
|
+
* - `--heatmap-tone-success`: The color of the `success` tone, named in `tones` or in `data-tone`.
|
|
81341
|
+
* - `--heatmap-tone-warning`: The color of the `warning` tone.
|
|
81342
|
+
*
|
|
81343
|
+
* ## CSS Parts
|
|
81344
|
+
*
|
|
81345
|
+
* Custom selectors for styling elements within the component.
|
|
81346
|
+
*
|
|
81347
|
+
* - `cell`: One reading: a group holding its three faces.
|
|
81348
|
+
* - `drawing`: The SVG every prism is drawn in. It is mirrored on a right-to-left page.
|
|
81349
|
+
* - `left-face`: The face of a prism toward the next row, drawn at its lower left.
|
|
81350
|
+
* - `right-face`: The face of a prism toward the next column, drawn at its lower right.
|
|
81351
|
+
* - `row`: A column of prisms, which a grid reads as a row, under `selection-mode`.
|
|
81352
|
+
* - `strip`: The box the drawing fills, which takes focus to be read by key. It is named by the host's `aria-labelledby` or `aria-label`, then by `label`, then by the caption of the table.
|
|
81353
|
+
* - `top-face`: The top of a prism, which carries the reading's tone.
|
|
81354
|
+
* - `cell-active`: The cell the pointer or the keys rest on. Set alongside `cell`.
|
|
81355
|
+
* - `cell-selected`: A cell that is selected, under `selection-mode`. Set alongside `cell`.
|
|
81356
|
+
* - `empty`: The words under the strip when the table has no readings: the `empty` slot, falling back to `empty-text`. Not drawn while the table cannot be read yet, on the server and during hydration, there being no document to resolve `for` in.
|
|
81357
|
+
* - `end`: The trailing slot's box.
|
|
81358
|
+
* - `footer`: The three-slot row under the strip.
|
|
81359
|
+
* - `live`: The readout: a polite live region that says the cell the keys moved to. Hide it visually.
|
|
81360
|
+
* - `loading`: The words under the strip while `loading` is set and there are no readings: the `loading` slot, falling back to `loading-text`.
|
|
81361
|
+
* - `mark`: The invisible point the tooltip is anchored to.
|
|
81362
|
+
* - `overview`: The busiest reading and the total of the readings drawn, written as a sentence for screen readers, which describes the strip. Rendered once there are cells. Hide it visually.
|
|
81363
|
+
* - `plot`: The same element as `strip`, under the name every chart gives the drawing that takes focus.
|
|
81364
|
+
* - `selection`: A polite region that says how many cells are selected after a change, rendered from the first change. Hide it visually.
|
|
81365
|
+
* - `start`: The leading slot's box.
|
|
81366
|
+
* - `summary`: The middle slot's box.
|
|
81367
|
+
* - `table`: The readings as a table, for a screen reader, rendered only where they were drawn from `data`. Hide it visually.
|
|
81368
|
+
* - `tooltip`: The bubble, forwarded from `Tooltip`.
|
|
81369
|
+
* - `tooltip-anchor`: The `Tooltip` element itself.
|
|
81370
|
+
* - `tooltip-arrow`: The bubble's point, forwarded from `Tooltip`.
|
|
81371
|
+
* - `tooltip-arrow-bottom`: The point while the bubble is below the reading, on its top edge. Set alongside `tooltip-arrow`.
|
|
81372
|
+
* - `tooltip-arrow-left`: The point while the bubble is left of the reading, on its right edge. Set alongside `tooltip-arrow`.
|
|
81373
|
+
* - `tooltip-arrow-right`: The point while the bubble is right of the reading, on its left edge. Set alongside `tooltip-arrow`.
|
|
81374
|
+
* - `tooltip-arrow-top`: The point while the bubble is above the reading, on its bottom edge. Set alongside `tooltip-arrow`.
|
|
81375
|
+
* - `tooltip-bottom`: The bubble while it is below the reading. Set alongside `tooltip`.
|
|
81376
|
+
* - `tooltip-cell`: One column's name and value inside the tooltip.
|
|
81377
|
+
* - `tooltip-cell-current`: The cell the series keys rest on, in the charts whose readings hold several series. A strip draws one, so it is never set here.
|
|
81378
|
+
* - `tooltip-label`: The reading's own name inside the tooltip.
|
|
81379
|
+
* - `tooltip-left`: The bubble while it is left of the reading. Set alongside `tooltip`.
|
|
81380
|
+
* - `tooltip-name`: A column's name inside the tooltip.
|
|
81381
|
+
* - `tooltip-right`: The bubble while it is right of the reading. Set alongside `tooltip`.
|
|
81382
|
+
* - `tooltip-top`: The bubble while it is above the reading. Set alongside `tooltip`.
|
|
81383
|
+
* - `tooltip-value`: A column's value inside the tooltip.
|
|
81384
|
+
*
|
|
81385
|
+
* ## CSS States
|
|
81386
|
+
*
|
|
81387
|
+
* These can be used to apply styling when a component is in a given state.
|
|
81388
|
+
*
|
|
81389
|
+
* - `active`: While a cell is shown, under the pointer or the keys, with its tooltip open.
|
|
81390
|
+
* - `empty`: While the `empty` part stands in place of the cells.
|
|
81391
|
+
* - `loading`: While the `loading` part stands in place of the cells.
|
|
81392
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
81393
|
+
*/
|
|
81394
|
+
"helix-headless-isometric-heatmap": Partial<
|
|
81395
|
+
HelixHeadlessIsometricHeatmapProps &
|
|
81396
|
+
HelixHeadlessIsometricHeatmapSolidJsProps &
|
|
81397
|
+
BaseProps<HelixHeadlessIsometricHeatmap> &
|
|
81398
|
+
BaseEvents<HelixHeadlessIsometricHeatmap>
|
|
81399
|
+
>;
|
|
81400
|
+
|
|
80169
81401
|
/**
|
|
80170
81402
|
* Renders a `<kbd>` element.
|
|
80171
81403
|
*
|
|
@@ -97317,6 +98549,8 @@ export type CustomCssProperties = {
|
|
|
97317
98549
|
"--heatmap-tone-success"?: (string) | undefined;
|
|
97318
98550
|
/** The color of the `warning` tone. */
|
|
97319
98551
|
"--heatmap-tone-warning"?: (string) | undefined;
|
|
98552
|
+
/** How many cells the drawing spans across: its columns and its rows together. The component writes it on the strip, and a stylesheet that caps the cell size reads it. */
|
|
98553
|
+
"--isometric-heatmap-span"?: (string) | undefined;
|
|
97320
98554
|
/** How far the zoomed item is moved across from the middle of the viewport, in pixels, toward the right. Written only while zoomed. */
|
|
97321
98555
|
"--lightbox-pan-x"?: (string) | undefined;
|
|
97322
98556
|
/** How far the zoomed item is moved down from the middle of the viewport, in pixels. Written only while zoomed. */
|