@fusion.dev/helix 0.170.0 → 0.171.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33154,7 +33154,7 @@
33154
33154
  "text": "void"
33155
33155
  }
33156
33156
  },
33157
- "description": "Makes the log a tab stop while it scrolls, and takes the stop away when it\ndoes not.\n\n**A reader on a keyboard scrolls the history from the log itself.**\nChromium and Firefox make a box that scrolls focusable on their own, and\nSafari does not, so there the arrow keys could not reach a long history.\nA log that fits is no stop at all, so Tab goes straight to the composer.",
33157
+ "description": "Makes the log a tab stop while it holds a turn or scrolls, and takes the\nstop away from an empty log.\n\n**A reader on a keyboard scrolls the history from the log itself.**\nChromium and Firefox make a box that scrolls focusable on their own, and\nSafari does not, so there the arrow keys could not reach a long history.\n\n**And it is where the turns are entered.** Page Down from the log goes to\nthe turn at the top of the view. A log that fits was no stop at all, so a\nconversation whose turns held no control had no way into them by keyboard.",
33158
33158
  "inheritedFrom": {
33159
33159
  "name": "HelixHeadlessChat",
33160
33160
  "module": "src/chat/root/chat-root.ts"
@@ -33492,6 +33492,35 @@
33492
33492
  "module": "src/chat/root/chat-root.ts"
33493
33493
  }
33494
33494
  },
33495
+ {
33496
+ "kind": "field",
33497
+ "name": "warnedMixed",
33498
+ "type": {
33499
+ "text": "boolean"
33500
+ },
33501
+ "privacy": "private",
33502
+ "default": "false",
33503
+ "description": "Whether the chat has said it was given turns both ways.",
33504
+ "inheritedFrom": {
33505
+ "name": "HelixHeadlessChat",
33506
+ "module": "src/chat/root/chat-root.ts"
33507
+ }
33508
+ },
33509
+ {
33510
+ "kind": "method",
33511
+ "name": "warnMixed",
33512
+ "privacy": "private",
33513
+ "return": {
33514
+ "type": {
33515
+ "text": "void"
33516
+ }
33517
+ },
33518
+ "description": "Says once that turns arrived both as children and as `turns`.",
33519
+ "inheritedFrom": {
33520
+ "name": "HelixHeadlessChat",
33521
+ "module": "src/chat/root/chat-root.ts"
33522
+ }
33523
+ },
33495
33524
  {
33496
33525
  "kind": "method",
33497
33526
  "name": "follow",
@@ -33591,6 +33620,29 @@
33591
33620
  "module": "src/chat/root/chat-root.ts"
33592
33621
  }
33593
33622
  },
33623
+ {
33624
+ "kind": "method",
33625
+ "name": "showTurn",
33626
+ "privacy": "private",
33627
+ "return": {
33628
+ "type": {
33629
+ "text": "Promise<void>"
33630
+ }
33631
+ },
33632
+ "parameters": [
33633
+ {
33634
+ "name": "at",
33635
+ "type": {
33636
+ "text": "number"
33637
+ }
33638
+ }
33639
+ ],
33640
+ "description": "Draws turn `at` where it is windowed and not drawn, and visits it.",
33641
+ "inheritedFrom": {
33642
+ "name": "HelixHeadlessChat",
33643
+ "module": "src/chat/root/chat-root.ts"
33644
+ }
33645
+ },
33594
33646
  {
33595
33647
  "kind": "field",
33596
33648
  "name": "stop",
@@ -33627,6 +33679,42 @@
33627
33679
  "module": "src/chat/root/chat-root.ts"
33628
33680
  }
33629
33681
  },
33682
+ {
33683
+ "kind": "field",
33684
+ "name": "placed",
33685
+ "type": {
33686
+ "text": "number | undefined"
33687
+ },
33688
+ "privacy": "private",
33689
+ "description": "Where this element last scrolled the transcript to show a turn, until the scroll that follows.",
33690
+ "inheritedFrom": {
33691
+ "name": "HelixHeadlessChat",
33692
+ "module": "src/chat/root/chat-root.ts"
33693
+ }
33694
+ },
33695
+ {
33696
+ "kind": "method",
33697
+ "name": "reveal",
33698
+ "privacy": "private",
33699
+ "return": {
33700
+ "type": {
33701
+ "text": "void"
33702
+ }
33703
+ },
33704
+ "parameters": [
33705
+ {
33706
+ "name": "turn",
33707
+ "type": {
33708
+ "text": "HTMLElement"
33709
+ }
33710
+ }
33711
+ ],
33712
+ "description": "Scrolls the transcript, and nothing around it, until `turn` is in view,\nand notes the turn at the top as the reader's place. A pinned transcript\nis left at the bottom, which is where whoever holds the pin wants it.\n\nThe edge nearest the turn moves the least, and a turn taller than the\ntranscript is shown from its start.",
33713
+ "inheritedFrom": {
33714
+ "name": "HelixHeadlessChat",
33715
+ "module": "src/chat/root/chat-root.ts"
33716
+ }
33717
+ },
33630
33718
  {
33631
33719
  "kind": "method",
33632
33720
  "name": "firstControlIn",
@@ -34461,6 +34549,38 @@
34461
34549
  }
34462
34550
  ],
34463
34551
  "cssStates": [
34552
+ {
34553
+ "description": "The conversation has no turns.",
34554
+ "name": "empty",
34555
+ "inheritedFrom": {
34556
+ "name": "HelixHeadlessChat",
34557
+ "module": "src/chat/root/chat-root.ts"
34558
+ }
34559
+ },
34560
+ {
34561
+ "description": "Older turns are loading: `history` is `loading`.",
34562
+ "name": "loading",
34563
+ "inheritedFrom": {
34564
+ "name": "HelixHeadlessChat",
34565
+ "module": "src/chat/root/chat-root.ts"
34566
+ }
34567
+ },
34568
+ {
34569
+ "description": "The transcript follows its newest turn.",
34570
+ "name": "pinned",
34571
+ "inheritedFrom": {
34572
+ "name": "HelixHeadlessChat",
34573
+ "module": "src/chat/root/chat-root.ts"
34574
+ }
34575
+ },
34576
+ {
34577
+ "description": "`typing` names someone on the other side.",
34578
+ "name": "typing",
34579
+ "inheritedFrom": {
34580
+ "name": "HelixHeadlessChat",
34581
+ "module": "src/chat/root/chat-root.ts"
34582
+ }
34583
+ },
34464
34584
  {
34465
34585
  "description": "Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.",
34466
34586
  "name": "settled",
@@ -38842,6 +38962,20 @@
38842
38962
  "module": "src/code-block/root/code-block-root.ts"
38843
38963
  }
38844
38964
  },
38965
+ {
38966
+ "kind": "field",
38967
+ "name": "addedLines",
38968
+ "type": {
38969
+ "text": "string"
38970
+ },
38971
+ "default": "''",
38972
+ "description": "The lines to mark as inserted, as numbers and ranges counted from 1, such\nas `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.",
38973
+ "attribute": "added-lines",
38974
+ "inheritedFrom": {
38975
+ "name": "HelixHeadlessCodeBlock",
38976
+ "module": "src/code-block/root/code-block-root.ts"
38977
+ }
38978
+ },
38845
38979
  {
38846
38980
  "kind": "field",
38847
38981
  "name": "codeLabel",
@@ -39134,6 +39268,20 @@
39134
39268
  "module": "src/code-block/root/code-block-root.ts"
39135
39269
  }
39136
39270
  },
39271
+ {
39272
+ "kind": "field",
39273
+ "name": "removedLines",
39274
+ "type": {
39275
+ "text": "string"
39276
+ },
39277
+ "default": "''",
39278
+ "description": "The lines to mark as deleted, as numbers and ranges counted from 1. Drawn\nas `mark-lines` is, in the removed color. Not for a diff.",
39279
+ "attribute": "removed-lines",
39280
+ "inheritedFrom": {
39281
+ "name": "HelixHeadlessCodeBlock",
39282
+ "module": "src/code-block/root/code-block-root.ts"
39283
+ }
39284
+ },
39137
39285
  {
39138
39286
  "kind": "field",
39139
39287
  "name": "showUnchangedLabel",
@@ -39673,6 +39821,10 @@
39673
39821
  {
39674
39822
  "name": "drawn",
39675
39823
  "default": "name"
39824
+ },
39825
+ {
39826
+ "name": "own",
39827
+ "default": "false"
39676
39828
  }
39677
39829
  ],
39678
39830
  "description": "The name with the copy button beside it, or nothing when there is no name.\n\n**The button is in the header wherever there is one**, because beside the\ncode it stands over the block and the block has to make room for it. A\ndiff cannot: its washes run to the edge, so the button stood on the hunk\nline and the line under it. In the header it is over nothing.\n\n**No name draws no header**, unless the page put a control in `actions`\nor asked for the wrap button. A bar holding the copy button alone turned a\n`Usage` section of one-line imports into a run of empty strips. The button\nthen stands beside the code, in room the block keeps for it.",
@@ -40356,6 +40508,22 @@
40356
40508
  "name": "HelixHeadlessCodeBlock",
40357
40509
  "module": "src/code-block/root/code-block-root.ts"
40358
40510
  }
40511
+ },
40512
+ {
40513
+ "description": "An icon on the button that shows every line of a capped block, before its words.",
40514
+ "name": "expand-icon",
40515
+ "inheritedFrom": {
40516
+ "name": "HelixHeadlessCodeBlock",
40517
+ "module": "src/code-block/root/code-block-root.ts"
40518
+ }
40519
+ },
40520
+ {
40521
+ "description": "The block's name in the header, such as a file icon beside the file name. Replaces `label` and `language` there, and draws the header.",
40522
+ "name": "label",
40523
+ "inheritedFrom": {
40524
+ "name": "HelixHeadlessCodeBlock",
40525
+ "module": "src/code-block/root/code-block-root.ts"
40526
+ }
40359
40527
  }
40360
40528
  ],
40361
40529
  "cssParts": [
@@ -40624,13 +40792,29 @@
40624
40792
  }
40625
40793
  },
40626
40794
  {
40627
- "description": "The band behind a run of lines `mark-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.",
40795
+ "description": "The band behind a run of lines `mark-lines`, `added-lines` or `removed-lines` names. The block writes where the run is laid out into `--code-block-mark-start`, `--code-block-mark-size`, and `--code-block-mark-inline-size` on it. Hidden from the accessibility tree.",
40628
40796
  "name": "mark",
40629
40797
  "inheritedFrom": {
40630
40798
  "name": "HelixHeadlessCodeBlock",
40631
40799
  "module": "src/code-block/root/code-block-root.ts"
40632
40800
  }
40633
40801
  },
40802
+ {
40803
+ "description": "The band behind a run of lines `added-lines` names. Applied with `mark`.",
40804
+ "name": "mark-added",
40805
+ "inheritedFrom": {
40806
+ "name": "HelixHeadlessCodeBlock",
40807
+ "module": "src/code-block/root/code-block-root.ts"
40808
+ }
40809
+ },
40810
+ {
40811
+ "description": "The band behind a run of lines `removed-lines` names. Applied with `mark`.",
40812
+ "name": "mark-removed",
40813
+ "inheritedFrom": {
40814
+ "name": "HelixHeadlessCodeBlock",
40815
+ "module": "src/code-block/root/code-block-root.ts"
40816
+ }
40817
+ },
40634
40818
  {
40635
40819
  "description": "In a diff, the `+`, `-`, or space that starts a line.",
40636
40820
  "name": "marker",
@@ -40697,6 +40881,19 @@
40697
40881
  }
40698
40882
  ],
40699
40883
  "attributes": [
40884
+ {
40885
+ "name": "added-lines",
40886
+ "type": {
40887
+ "text": "string"
40888
+ },
40889
+ "default": "''",
40890
+ "description": "The lines to mark as inserted, as numbers and ranges counted from 1, such\nas `3-4`. Drawn as `mark-lines` is, in the added color. Not for a diff.",
40891
+ "fieldName": "addedLines",
40892
+ "inheritedFrom": {
40893
+ "name": "HelixHeadlessCodeBlock",
40894
+ "module": "src/code-block/root/code-block-root.ts"
40895
+ }
40896
+ },
40700
40897
  {
40701
40898
  "name": "code-label",
40702
40899
  "type": {
@@ -40929,6 +41126,19 @@
40929
41126
  "module": "src/code-block/root/code-block-root.ts"
40930
41127
  }
40931
41128
  },
41129
+ {
41130
+ "name": "removed-lines",
41131
+ "type": {
41132
+ "text": "string"
41133
+ },
41134
+ "default": "''",
41135
+ "description": "The lines to mark as deleted, as numbers and ranges counted from 1. Drawn\nas `mark-lines` is, in the removed color. Not for a diff.",
41136
+ "fieldName": "removedLines",
41137
+ "inheritedFrom": {
41138
+ "name": "HelixHeadlessCodeBlock",
41139
+ "module": "src/code-block/root/code-block-root.ts"
41140
+ }
41141
+ },
40932
41142
  {
40933
41143
  "name": "show-unchanged-label",
40934
41144
  "type": {
@@ -45021,7 +45231,7 @@
45021
45231
  "text": "void"
45022
45232
  }
45023
45233
  },
45024
- "description": "Returns the control to its `defaultValue`, or to its `value` attribute\nwhere there is no `default-value`.\n\nBoth halves are dropped, the consumer's and the control's, because a\nreset means the form is as it was served. Clearing only the internal one\nwould leave a control that had been written to stuck at that value.",
45234
+ "description": "A reset ends any typing and takes back text that was not a color, so the\nfield shows the color the reset put back.",
45025
45235
  "inheritedFrom": {
45026
45236
  "name": "HelixFormElement",
45027
45237
  "module": "src/helix-form-element/helix-form-element.ts"
@@ -45595,7 +45805,7 @@
45595
45805
  "text": "boolean"
45596
45806
  },
45597
45807
  "default": "false",
45598
- "description": "Requires a color before the form can submit.\n\n**A color is exactly as requirable as a date**, which is the comparison\nthat settles it: this element extends `HelixFormElement`, carries `name`\nand reports its value, so a consumer writing `<helix-headless-color-picker\nname=\"brand\" required>` inside a form has every reason to expect the form\nto refuse an empty one. Its two siblings in the same composition position,\nDate Picker and Time Picker, both check it.\n\nWritten out rather than taken from `MixinField`, for the reason those two\nrecord: the mixin brings a label, a hint and a feedback region, and this is\na panel composed *into* a field that already has all three, so taking it\nwould give one control two of each. What is left is the validity call and\nthe anchor the browser points its bubble at.\n\n**Text that is not a color is bad input**, so a form does not submit\n`#00` from a half-typed value. The picker draws no message of its own, so\nreporting it as each keystroke arrives shows nothing until the form asks;\nColor Input shows its own message against the field the reader typed\ninto.",
45808
+ "description": "Requires a color before the form can submit.\n\n**A color is exactly as requirable as a date**, which is the comparison\nthat settles it: this element extends `HelixFormElement`, carries `name`\nand reports its value, so a consumer writing `<helix-headless-color-picker\nname=\"brand\" required>` inside a form has every reason to expect the form\nto refuse an empty one. Its two siblings in the same composition position,\nDate Picker and Time Picker, both check it.\n\nWritten out rather than taken from `MixinField`, for the reason those two\nrecord: the mixin brings a label, a hint and a feedback region, and this is\na panel composed *into* a field that already has all three, so taking it\nwould give one control two of each. What is left is the validity call and\nthe anchor the browser points its bubble at.\n\n**Text that is not a color is bad input**, so a form does not submit\n`#00` from a half-typed value. The picker marks it, and says\n`badInputMessage` under itself, once the reader leaves the value field or\npresses Enter, and a missing color once the reader has committed one or a\nform has refused the picker. Color Input shows its own message against the\nfield the reader typed into.",
45599
45809
  "attribute": "required",
45600
45810
  "reflects": true,
45601
45811
  "inheritedFrom": {
@@ -45832,6 +46042,48 @@
45832
46042
  "module": "src/color-picker/root/color-picker-root.ts"
45833
46043
  }
45834
46044
  },
46045
+ {
46046
+ "kind": "field",
46047
+ "name": "typing",
46048
+ "type": {
46049
+ "text": "boolean"
46050
+ },
46051
+ "privacy": "private",
46052
+ "default": "false",
46053
+ "description": "Whether the reader is typing into the value field, between the first\nkeystroke and the `change` that ends it.\n\nHalf-typed text is rarely a color: `#00ff00` passes through `#0` and\n`#00ff0` on the way. So text that is not a color is refused once the\nreader leaves the field or presses Enter, and not on every keystroke.",
46054
+ "inheritedFrom": {
46055
+ "name": "HelixHeadlessColorPicker",
46056
+ "module": "src/color-picker/root/color-picker-root.ts"
46057
+ }
46058
+ },
46059
+ {
46060
+ "kind": "field",
46061
+ "name": "draft",
46062
+ "type": {
46063
+ "text": "string | undefined"
46064
+ },
46065
+ "privacy": "private",
46066
+ "default": "undefined",
46067
+ "description": "Text in the value field that is not a color, or undefined while the field\nholds the value.\n\n**Kept in the field and out of the value**, as a native number field keeps\n\"12e\": the text stays where the reader can correct it, the value stays the\nlast color, and the picker reports `badInput` until the text is a color or\nthe value moves. Measured before this: typed \"nonsense\" became the value,\nso a form read `brand=nonsense` and the square had no color to show.",
46068
+ "inheritedFrom": {
46069
+ "name": "HelixHeadlessColorPicker",
46070
+ "module": "src/color-picker/root/color-picker-root.ts"
46071
+ }
46072
+ },
46073
+ {
46074
+ "kind": "field",
46075
+ "name": "said",
46076
+ "type": {
46077
+ "text": "string"
46078
+ },
46079
+ "privacy": "private",
46080
+ "description": "The line under the picker: `feedback`, or, where the picker is marked by\nits own validation, what is wrong.",
46081
+ "readonly": true,
46082
+ "inheritedFrom": {
46083
+ "name": "HelixHeadlessColorPicker",
46084
+ "module": "src/color-picker/root/color-picker-root.ts"
46085
+ }
46086
+ },
45835
46087
  {
45836
46088
  "kind": "field",
45837
46089
  "name": "dragging",
@@ -47634,7 +47886,7 @@
47634
47886
  "text": "boolean"
47635
47887
  },
47636
47888
  "default": "false",
47637
- "description": "Requires a color before the form can submit.\n\n**A color is exactly as requirable as a date**, which is the comparison\nthat settles it: this element extends `HelixFormElement`, carries `name`\nand reports its value, so a consumer writing `<helix-headless-color-picker\nname=\"brand\" required>` inside a form has every reason to expect the form\nto refuse an empty one. Its two siblings in the same composition position,\nDate Picker and Time Picker, both check it.\n\nWritten out rather than taken from `MixinField`, for the reason those two\nrecord: the mixin brings a label, a hint and a feedback region, and this is\na panel composed *into* a field that already has all three, so taking it\nwould give one control two of each. What is left is the validity call and\nthe anchor the browser points its bubble at.\n\n**Text that is not a color is bad input**, so a form does not submit\n`#00` from a half-typed value. The picker draws no message of its own, so\nreporting it as each keystroke arrives shows nothing until the form asks;\nColor Input shows its own message against the field the reader typed\ninto.",
47889
+ "description": "Requires a color before the form can submit.\n\n**A color is exactly as requirable as a date**, which is the comparison\nthat settles it: this element extends `HelixFormElement`, carries `name`\nand reports its value, so a consumer writing `<helix-headless-color-picker\nname=\"brand\" required>` inside a form has every reason to expect the form\nto refuse an empty one. Its two siblings in the same composition position,\nDate Picker and Time Picker, both check it.\n\nWritten out rather than taken from `MixinField`, for the reason those two\nrecord: the mixin brings a label, a hint and a feedback region, and this is\na panel composed *into* a field that already has all three, so taking it\nwould give one control two of each. What is left is the validity call and\nthe anchor the browser points its bubble at.\n\n**Text that is not a color is bad input**, so a form does not submit\n`#00` from a half-typed value. The picker marks it, and says\n`badInputMessage` under itself, once the reader leaves the value field or\npresses Enter, and a missing color once the reader has committed one or a\nform has refused the picker. Color Input shows its own message against the\nfield the reader typed into.",
47638
47890
  "fieldName": "required",
47639
47891
  "inheritedFrom": {
47640
47892
  "name": "HelixHeadlessColorPicker",
@@ -47963,7 +48215,7 @@
47963
48215
  }
47964
48216
  },
47965
48217
  {
47966
- "description": "The message under the picker, while `feedback` is set.",
48218
+ "description": "The message under the picker: `feedback`, or what is wrong with the answer once the picker is marked invalid.",
47967
48219
  "name": "feedback",
47968
48220
  "inheritedFrom": {
47969
48221
  "name": "HelixHeadlessColorPicker",
@@ -49526,7 +49778,7 @@
49526
49778
  "text": "boolean"
49527
49779
  },
49528
49780
  "default": "false",
49529
- "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
49781
+ "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` is the chosen values joined with\ncommas, a press toggles rather than replaces, and the arrows move without\nchoosing. What this adds is the tags, and keeping the panel open between\npicks.\n\nAn option's value may hold a comma, and it is read as one value, as\n`Select` and `Listbox` read it. So may an answer the reader created.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
49530
49782
  "attribute": "multiple",
49531
49783
  "inheritedFrom": {
49532
49784
  "name": "HelixHeadlessCombobox",
@@ -49833,8 +50085,20 @@
49833
50085
  "text": "string[]"
49834
50086
  },
49835
50087
  "privacy": "private",
49836
- "description": "The values chosen, in the order they were chosen.",
50088
+ "description": "The values chosen, in the order they were chosen, read against the\noptions' values and the answers created here, so a value that holds a\ncomma is one value. See `chosenValues`.\n\nMeasured before this: choosing `Paris, France` drew two tags, \"Paris\" and\n\"France\", and the form received two entries.",
50089
+ "readonly": true,
50090
+ "inheritedFrom": {
50091
+ "name": "HelixHeadlessCombobox",
50092
+ "module": "src/combobox/root/combobox-root.ts"
50093
+ }
50094
+ },
50095
+ {
50096
+ "kind": "field",
50097
+ "name": "created",
50098
+ "privacy": "private",
49837
50099
  "readonly": true,
50100
+ "default": "new Set<string>()",
50101
+ "description": "The answers created here, which no option holds, kept so their commas read as theirs.",
49838
50102
  "inheritedFrom": {
49839
50103
  "name": "HelixHeadlessCombobox",
49840
50104
  "module": "src/combobox/root/combobox-root.ts"
@@ -51662,7 +51926,7 @@
51662
51926
  "text": "boolean"
51663
51927
  },
51664
51928
  "default": "false",
51665
- "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` comes apart on commas, a press\ntoggles rather than replaces, and the arrows move without choosing. What\nthis adds is the tags, and keeping the panel open between picks.\n\nA comma is therefore not available inside an option's value, which is the\nlistbox's contract and not this element's to change.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
51929
+ "description": "Whether more than one option can be chosen.\n\nThe list already does the work: `value` is the chosen values joined with\ncommas, a press toggles rather than replaces, and the arrows move without\nchoosing. What this adds is the tags, and keeping the panel open between\npicks.\n\nAn option's value may hold a comma, and it is read as one value, as\n`Select` and `Listbox` read it. So may an answer the reader created.\n\n**The list is told, and the field is not.** `aria-multiselectable` belongs\nto `listbox`, `grid`, `tree` and `tablist`, and `combobox` dropped it in\nARIA 1.2; the list sets it on itself through `ElementInternals`, where a\nreader on the field hears it through `aria-controls`. This element wrote it\nonto its own `role=\"combobox\"` input as well, which an audit reports as a\nproperty the role does not support and no spec here ever asserted: the one\nthat covers this says in as many words that telling the list is what this\nelement is responsible for.",
51666
51930
  "fieldName": "multiple",
51667
51931
  "inheritedFrom": {
51668
51932
  "name": "HelixHeadlessCombobox",
@@ -52595,6 +52859,19 @@
52595
52859
  "module": "src/command/root/command-root.ts"
52596
52860
  }
52597
52861
  },
52862
+ {
52863
+ "kind": "field",
52864
+ "name": "homeEnd",
52865
+ "type": {
52866
+ "text": "'list' | undefined"
52867
+ },
52868
+ "description": "Where Home and End go from the filter field.\n\nAbsent, they move the caret, as APG's combobox has them. `list` moves the\nhighlight to the first or the last command, as React Aria's Autocomplete\ndoes, and Shift with either still selects the text.",
52869
+ "attribute": "home-end",
52870
+ "inheritedFrom": {
52871
+ "name": "HelixHeadlessCommand",
52872
+ "module": "src/command/root/command-root.ts"
52873
+ }
52874
+ },
52598
52875
  {
52599
52876
  "kind": "field",
52600
52877
  "name": "hotkey",
@@ -52654,6 +52931,20 @@
52654
52931
  "module": "src/command/root/command-root.ts"
52655
52932
  }
52656
52933
  },
52934
+ {
52935
+ "kind": "field",
52936
+ "name": "layout",
52937
+ "type": {
52938
+ "text": "'grid' | 'stack' | undefined"
52939
+ },
52940
+ "description": "How the commands are laid out, as Listbox's `layout`: `grid` draws them in\nrows and columns, for a palette of icons or emoji, and the arrow keys\nfollow the rows and the columns. Absent is one command under another.",
52941
+ "attribute": "layout",
52942
+ "reflects": true,
52943
+ "inheritedFrom": {
52944
+ "name": "HelixHeadlessCommand",
52945
+ "module": "src/command/root/command-root.ts"
52946
+ }
52947
+ },
52657
52948
  {
52658
52949
  "kind": "field",
52659
52950
  "name": "loadError",
@@ -53473,6 +53764,18 @@
53473
53764
  "module": "src/command/root/command-root.ts"
53474
53765
  }
53475
53766
  },
53767
+ {
53768
+ "name": "home-end",
53769
+ "type": {
53770
+ "text": "'list' | undefined"
53771
+ },
53772
+ "description": "Where Home and End go from the filter field.\n\nAbsent, they move the caret, as APG's combobox has them. `list` moves the\nhighlight to the first or the last command, as React Aria's Autocomplete\ndoes, and Shift with either still selects the text.",
53773
+ "fieldName": "homeEnd",
53774
+ "inheritedFrom": {
53775
+ "name": "HelixHeadlessCommand",
53776
+ "module": "src/command/root/command-root.ts"
53777
+ }
53778
+ },
53476
53779
  {
53477
53780
  "name": "hotkey",
53478
53781
  "type": {
@@ -53512,6 +53815,18 @@
53512
53815
  "module": "src/command/root/command-root.ts"
53513
53816
  }
53514
53817
  },
53818
+ {
53819
+ "name": "layout",
53820
+ "type": {
53821
+ "text": "'grid' | 'stack' | undefined"
53822
+ },
53823
+ "description": "How the commands are laid out, as Listbox's `layout`: `grid` draws them in\nrows and columns, for a palette of icons or emoji, and the arrow keys\nfollow the rows and the columns. Absent is one command under another.",
53824
+ "fieldName": "layout",
53825
+ "inheritedFrom": {
53826
+ "name": "HelixHeadlessCommand",
53827
+ "module": "src/command/root/command-root.ts"
53828
+ }
53829
+ },
53515
53830
  {
53516
53831
  "name": "load-error",
53517
53832
  "type": {
@@ -83020,6 +83335,19 @@
83020
83335
  "module": "src/mixins/mixin-dismissible/mixin-dismissible.ts"
83021
83336
  }
83022
83337
  },
83338
+ {
83339
+ "kind": "field",
83340
+ "name": "dismissTabStop",
83341
+ "type": {
83342
+ "text": "boolean"
83343
+ },
83344
+ "default": "true",
83345
+ "description": "Whether the remove button is a tab stop of its own.\n\n`FilterInput` writes `false` on the chips in its `tags` slot: the field's\ntext is its one tab stop, and the arrow keys move from the text to the\nchips, as in a `multiple` Combobox. No attribute: it is coordination\nbetween elements, as `Tag.dismissTabStop` is.",
83346
+ "inheritedFrom": {
83347
+ "name": "HelixHeadlessFilterChip",
83348
+ "module": "src/filter-input/chip/filter-chip.ts"
83349
+ }
83350
+ },
83023
83351
  {
83024
83352
  "kind": "field",
83025
83353
  "name": "label",
@@ -85707,6 +86035,20 @@
85707
86035
  }
85708
86036
  ],
85709
86037
  "members": [
86038
+ {
86039
+ "kind": "field",
86040
+ "name": "tier",
86041
+ "type": {
86042
+ "text": "string"
86043
+ },
86044
+ "static": true,
86045
+ "default": "'helix-'",
86046
+ "description": "The prefix this tier registers its elements under.\n\n**A component that renders another renders its own tier's version of it**,\nso `helix-headless-pagination-size` composes `helix-headless-select` and\n`helix-pagination-size` composes `helix-select`. One template says\n`${this.tag('select')}` and each tier answers with its own name.\n\n**The public tag may not be the composed one, in either tier.** Using it\ncosts three things: the name means two different things depending on what a\nconsumer imported, the headless tier composes an element it does not ship,\nand the composition cannot be tested there at all, because there is no\n`helix-select` on that tier to test it against.\n\n**A prefix rather than an override per composition**, which was the first\nplan and does not compile. An override re-renders the fragment from the\nsubclass, and the fragment reads members the base keeps private:\n`PaginationSize` alone would have had to widen `options`, `current` and\n`handleChange` to `protected` so a subclass could say the same thing again.\nSixteen families of that is a lot of encapsulation spent on saying one\nword differently.",
86047
+ "inheritedFrom": {
86048
+ "name": "HelixElement",
86049
+ "module": "src/helix-element/helix-element.ts"
86050
+ }
86051
+ },
85710
86052
  {
85711
86053
  "kind": "field",
85712
86054
  "name": "defaultOpen",
@@ -86654,6 +86996,20 @@
86654
86996
  "module": "src/filter-input/root/filter-input-root.ts"
86655
86997
  }
86656
86998
  },
86999
+ {
87000
+ "kind": "field",
87001
+ "name": "chips",
87002
+ "type": {
87003
+ "text": "boolean"
87004
+ },
87005
+ "default": "false",
87006
+ "description": "Whether the field keeps a `FilterChip` for each filter in its `tags` slot,\nfrom the `helix-facet` events it hears.\n\nOff, you build the chips, which is what you do when your own model holds\nthe filters. On, a filter typed, picked, or changed adds or updates the\nchip for its field, one with no values takes it away (unless its\ncomparison takes none, such as \"is empty\"), and removing the chip clears\nthe filter. A `helix-facet` you cancel changes no chip.\n\nThe chips are elements the field adds to its own children, so leave this\noff where a framework renders those children and would remove them.",
87007
+ "attribute": "chips",
87008
+ "inheritedFrom": {
87009
+ "name": "HelixHeadlessFilterInput",
87010
+ "module": "src/filter-input/root/filter-input-root.ts"
87011
+ }
87012
+ },
86657
87013
  {
86658
87014
  "kind": "field",
86659
87015
  "name": "clearable",
@@ -86699,6 +87055,52 @@
86699
87055
  "module": "src/filter-input/root/filter-input-root.ts"
86700
87056
  }
86701
87057
  },
87058
+ {
87059
+ "kind": "field",
87060
+ "name": "loading",
87061
+ "type": {
87062
+ "text": "boolean"
87063
+ },
87064
+ "default": "false",
87065
+ "description": "Whether the suggestions are still loading, such as while a request for the\nvalues of a typed key is out.\n\nThe panel opens on `loading-text`, or the `loading` slot, while the field\nhas focus, and a screen reader hears it. Slot the options and clear this\nwhen they arrive.",
87066
+ "attribute": "loading",
87067
+ "reflects": true,
87068
+ "inheritedFrom": {
87069
+ "name": "HelixHeadlessFilterInput",
87070
+ "module": "src/filter-input/root/filter-input-root.ts"
87071
+ }
87072
+ },
87073
+ {
87074
+ "kind": "field",
87075
+ "name": "loadingText",
87076
+ "type": {
87077
+ "text": "string"
87078
+ },
87079
+ "default": "'Loading'",
87080
+ "description": "Text the panel shows while the suggestions load.",
87081
+ "attribute": "loading-text",
87082
+ "helix": {
87083
+ "words": true
87084
+ },
87085
+ "inheritedFrom": {
87086
+ "name": "HelixHeadlessFilterInput",
87087
+ "module": "src/filter-input/root/filter-input-root.ts"
87088
+ }
87089
+ },
87090
+ {
87091
+ "kind": "field",
87092
+ "name": "noResultsText",
87093
+ "type": {
87094
+ "text": "string"
87095
+ },
87096
+ "default": "''",
87097
+ "description": "Text the panel shows when `filter-suggestions` hides every suggestion, such\nas \"No matching filters\".\n\nEmpty, or no `no-results` slot, and the panel closes instead, as it does\nwhen it has nothing to offer.",
87098
+ "attribute": "no-results-text",
87099
+ "inheritedFrom": {
87100
+ "name": "HelixHeadlessFilterInput",
87101
+ "module": "src/filter-input/root/filter-input-root.ts"
87102
+ }
87103
+ },
86702
87104
  {
86703
87105
  "kind": "field",
86704
87106
  "name": "placeholder",
@@ -87174,6 +87576,40 @@
87174
87576
  "module": "src/filter-input/root/filter-input-root.ts"
87175
87577
  }
87176
87578
  },
87579
+ {
87580
+ "kind": "field",
87581
+ "name": "handleFacet",
87582
+ "privacy": "private",
87583
+ "readonly": true,
87584
+ "description": "Keeps the chip for a filter in step with it, under `chips`.\n\nAfter every listener has had its turn, so a consumer's `preventDefault()`\non the same event, on this element or above it, is read: `dispatchEvent`\nruns them all before the microtask does.",
87585
+ "inheritedFrom": {
87586
+ "name": "HelixHeadlessFilterInput",
87587
+ "module": "src/filter-input/root/filter-input-root.ts"
87588
+ }
87589
+ },
87590
+ {
87591
+ "kind": "method",
87592
+ "name": "drawChip",
87593
+ "privacy": "private",
87594
+ "return": {
87595
+ "type": {
87596
+ "text": "void"
87597
+ }
87598
+ },
87599
+ "parameters": [
87600
+ {
87601
+ "name": "facet",
87602
+ "type": {
87603
+ "text": "FacetDetail"
87604
+ }
87605
+ }
87606
+ ],
87607
+ "description": "Adds, updates or removes the chip for one filter. See `chips`.",
87608
+ "inheritedFrom": {
87609
+ "name": "HelixHeadlessFilterInput",
87610
+ "module": "src/filter-input/root/filter-input-root.ts"
87611
+ }
87612
+ },
87177
87613
  {
87178
87614
  "kind": "field",
87179
87615
  "name": "handleDismiss",
@@ -87274,6 +87710,20 @@
87274
87710
  "module": "src/filter-input/root/filter-input-root.ts"
87275
87711
  }
87276
87712
  },
87713
+ {
87714
+ "kind": "field",
87715
+ "name": "unmatched",
87716
+ "type": {
87717
+ "text": "boolean"
87718
+ },
87719
+ "privacy": "private",
87720
+ "description": "Whether `filter-suggestions` has hidden every suggestion there is, where a\n`no-results-text` or a `no-results` slot says so. The panel stays open on\nit, and `:state(no-results)` is on the host.",
87721
+ "readonly": true,
87722
+ "inheritedFrom": {
87723
+ "name": "HelixHeadlessFilterInput",
87724
+ "module": "src/filter-input/root/filter-input-root.ts"
87725
+ }
87726
+ },
87277
87727
  {
87278
87728
  "kind": "field",
87279
87729
  "name": "handleSuggestions",
@@ -87323,7 +87773,7 @@
87323
87773
  "name": "handleTokens",
87324
87774
  "privacy": "private",
87325
87775
  "readonly": true,
87326
- "description": "The row again, whenever what is in it changes.",
87776
+ "description": "The row again, whenever what is in it changes.\n\n**And the text is the field's one tab stop.** Each token's remove button\nwas a stop of its own, so Tab through a field with five filters took six\npresses. A `Tag` or `FilterChip` takes `dismissTabStop` for this, as the\ntags of a `multiple` Combobox do, and the arrow keys still reach every one.\nA token not yet defined is told once it is.",
87327
87777
  "inheritedFrom": {
87328
87778
  "name": "HelixHeadlessFilterInput",
87329
87779
  "module": "src/filter-input/root/filter-input-root.ts"
@@ -87864,20 +88314,6 @@
87864
88314
  "module": "src/helix-form-element/helix-form-element.ts"
87865
88315
  }
87866
88316
  },
87867
- {
87868
- "kind": "field",
87869
- "name": "tier",
87870
- "type": {
87871
- "text": "string"
87872
- },
87873
- "static": true,
87874
- "default": "'helix-headless-'",
87875
- "description": "The prefix this tier registers its elements under.\n\n**A component that renders another renders its own tier's version of it**,\nso `helix-headless-pagination-size` composes `helix-headless-select` and\n`helix-pagination-size` composes `helix-select`. One template says\n`${this.tag('select')}` and each tier answers with its own name.\n\n**The public tag may not be the composed one, in either tier.** Using it\ncosts three things: the name means two different things depending on what a\nconsumer imported, the headless tier composes an element it does not ship,\nand the composition cannot be tested there at all, because there is no\n`helix-select` on that tier to test it against.\n\n**A prefix rather than an override per composition**, which was the first\nplan and does not compile. An override re-renders the fragment from the\nsubclass, and the fragment reads members the base keeps private:\n`PaginationSize` alone would have had to widen `options`, `current` and\n`handleChange` to `protected` so a subclass could say the same thing again.\nSixteen families of that is a lot of encapsulation spent on saying one\nword differently.",
87876
- "inheritedFrom": {
87877
- "name": "HelixElement",
87878
- "module": "src/helix-element/helix-element.ts"
87879
- }
87880
- },
87881
88317
  {
87882
88318
  "kind": "method",
87883
88319
  "name": "tag",
@@ -88455,6 +88891,19 @@
88455
88891
  "module": "src/mixins/mixin-field/mixin-field.ts"
88456
88892
  }
88457
88893
  },
88894
+ {
88895
+ "name": "chips",
88896
+ "type": {
88897
+ "text": "boolean"
88898
+ },
88899
+ "default": "false",
88900
+ "description": "Whether the field keeps a `FilterChip` for each filter in its `tags` slot,\nfrom the `helix-facet` events it hears.\n\nOff, you build the chips, which is what you do when your own model holds\nthe filters. On, a filter typed, picked, or changed adds or updates the\nchip for its field, one with no values takes it away (unless its\ncomparison takes none, such as \"is empty\"), and removing the chip clears\nthe filter. A `helix-facet` you cancel changes no chip.\n\nThe chips are elements the field adds to its own children, so leave this\noff where a framework renders those children and would remove them.",
88901
+ "fieldName": "chips",
88902
+ "inheritedFrom": {
88903
+ "name": "HelixHeadlessFilterInput",
88904
+ "module": "src/filter-input/root/filter-input-root.ts"
88905
+ }
88906
+ },
88458
88907
  {
88459
88908
  "name": "clearable",
88460
88909
  "type": {
@@ -88494,6 +88943,45 @@
88494
88943
  "module": "src/filter-input/root/filter-input-root.ts"
88495
88944
  }
88496
88945
  },
88946
+ {
88947
+ "name": "loading",
88948
+ "type": {
88949
+ "text": "boolean"
88950
+ },
88951
+ "default": "false",
88952
+ "description": "Whether the suggestions are still loading, such as while a request for the\nvalues of a typed key is out.\n\nThe panel opens on `loading-text`, or the `loading` slot, while the field\nhas focus, and a screen reader hears it. Slot the options and clear this\nwhen they arrive.",
88953
+ "fieldName": "loading",
88954
+ "inheritedFrom": {
88955
+ "name": "HelixHeadlessFilterInput",
88956
+ "module": "src/filter-input/root/filter-input-root.ts"
88957
+ }
88958
+ },
88959
+ {
88960
+ "name": "loading-text",
88961
+ "type": {
88962
+ "text": "string"
88963
+ },
88964
+ "default": "'Loading'",
88965
+ "description": "Text the panel shows while the suggestions load.",
88966
+ "fieldName": "loadingText",
88967
+ "inheritedFrom": {
88968
+ "name": "HelixHeadlessFilterInput",
88969
+ "module": "src/filter-input/root/filter-input-root.ts"
88970
+ }
88971
+ },
88972
+ {
88973
+ "name": "no-results-text",
88974
+ "type": {
88975
+ "text": "string"
88976
+ },
88977
+ "default": "''",
88978
+ "description": "Text the panel shows when `filter-suggestions` hides every suggestion, such\nas \"No matching filters\".\n\nEmpty, or no `no-results` slot, and the panel closes instead, as it does\nwhen it has nothing to offer.",
88979
+ "fieldName": "noResultsText",
88980
+ "inheritedFrom": {
88981
+ "name": "HelixHeadlessFilterInput",
88982
+ "module": "src/filter-input/root/filter-input-root.ts"
88983
+ }
88984
+ },
88497
88985
  {
88498
88986
  "name": "placeholder",
88499
88987
  "type": {
@@ -88710,6 +89198,22 @@
88710
89198
  "module": "src/filter-input/root/filter-input-root.ts"
88711
89199
  }
88712
89200
  },
89201
+ {
89202
+ "description": "What the panel shows while `loading` is set, for content richer than `loading-text`.",
89203
+ "name": "loading",
89204
+ "inheritedFrom": {
89205
+ "name": "HelixHeadlessFilterInput",
89206
+ "module": "src/filter-input/root/filter-input-root.ts"
89207
+ }
89208
+ },
89209
+ {
89210
+ "description": "What the panel shows when `filter-suggestions` hides every suggestion, for content richer than `no-results-text`.",
89211
+ "name": "no-results",
89212
+ "inheritedFrom": {
89213
+ "name": "HelixHeadlessFilterInput",
89214
+ "module": "src/filter-input/root/filter-input-root.ts"
89215
+ }
89216
+ },
88713
89217
  {
88714
89218
  "description": "Content before the text, such as a search icon.",
88715
89219
  "name": "start",
@@ -88752,6 +89256,14 @@
88752
89256
  "module": "src/filter-input/root/filter-input-root.ts"
88753
89257
  }
88754
89258
  },
89259
+ {
89260
+ "description": "Shown in the panel when `filter-suggestions` hides every suggestion.",
89261
+ "name": "empty",
89262
+ "inheritedFrom": {
89263
+ "name": "HelixHeadlessFilterInput",
89264
+ "module": "src/filter-input/root/filter-input-root.ts"
89265
+ }
89266
+ },
88755
89267
  {
88756
89268
  "description": "The error message under the field.",
88757
89269
  "name": "feedback",
@@ -88800,6 +89312,14 @@
88800
89312
  "module": "src/filter-input/root/filter-input-root.ts"
88801
89313
  }
88802
89314
  },
89315
+ {
89316
+ "description": "Shown in the panel while the suggestions load.",
89317
+ "name": "loading",
89318
+ "inheritedFrom": {
89319
+ "name": "HelixHeadlessFilterInput",
89320
+ "module": "src/filter-input/root/filter-input-root.ts"
89321
+ }
89322
+ },
88803
89323
  {
88804
89324
  "description": "The count of tokens that did not fit. It is a `<button>` with `expandable` and a `<span>` without it.",
88805
89325
  "name": "rest",
@@ -88834,6 +89354,22 @@
88834
89354
  "module": "src/filter-input/root/filter-input-root.ts"
88835
89355
  }
88836
89356
  },
89357
+ {
89358
+ "description": "While `loading` is set.",
89359
+ "name": "loading",
89360
+ "inheritedFrom": {
89361
+ "name": "HelixHeadlessFilterInput",
89362
+ "module": "src/filter-input/root/filter-input-root.ts"
89363
+ }
89364
+ },
89365
+ {
89366
+ "description": "`filter-suggestions` hid every suggestion, and `no-results-text` or the `no-results` slot says so.",
89367
+ "name": "no-results",
89368
+ "inheritedFrom": {
89369
+ "name": "HelixHeadlessFilterInput",
89370
+ "module": "src/filter-input/root/filter-input-root.ts"
89371
+ }
89372
+ },
88837
89373
  {
88838
89374
  "description": "The suggestions are open.",
88839
89375
  "name": "open",
@@ -102982,6 +103518,52 @@
102982
103518
  "module": "src/input/root/input-root.ts"
102983
103519
  }
102984
103520
  },
103521
+ {
103522
+ "kind": "method",
103523
+ "name": "setRangeText",
103524
+ "return": {
103525
+ "type": {
103526
+ "text": "void"
103527
+ }
103528
+ },
103529
+ "parameters": [
103530
+ {
103531
+ "name": "replacement",
103532
+ "type": {
103533
+ "text": "string"
103534
+ }
103535
+ },
103536
+ {
103537
+ "name": "start",
103538
+ "optional": true,
103539
+ "type": {
103540
+ "text": "number"
103541
+ }
103542
+ },
103543
+ {
103544
+ "name": "end",
103545
+ "optional": true,
103546
+ "type": {
103547
+ "text": "number"
103548
+ }
103549
+ },
103550
+ {
103551
+ "name": "selectMode",
103552
+ "optional": true,
103553
+ "type": {
103554
+ "text": "SelectionMode"
103555
+ }
103556
+ }
103557
+ ],
103558
+ "description": "Replaces a range of the text, as the native method does: the selection\nwhere `start` and `end` are left out, and `selectMode` says what is\nselected after. It sends no event, as the native method sends none.",
103559
+ "type": {
103560
+ "text": "setRangeText(replacement: string, start?: number, end?: number, selectMode?: SelectionMode) => void"
103561
+ },
103562
+ "inheritedFrom": {
103563
+ "name": "HelixHeadlessInput",
103564
+ "module": "src/input/root/input-root.ts"
103565
+ }
103566
+ },
102985
103567
  {
102986
103568
  "kind": "method",
102987
103569
  "name": "setSelectionRange",
@@ -142920,7 +143502,7 @@
142920
143502
  "text": "string"
142921
143503
  },
142922
143504
  "default": "'Decrease'",
142923
- "description": "The name of the step down button, read by screen readers.",
143505
+ "description": "The name of the step down button, read by screen readers. The field's\nlabel follows it, so a reader hears \"Decrease Quantity\", as React Aria\nnames its steppers.",
142924
143506
  "attribute": "decrement-label",
142925
143507
  "helix": {
142926
143508
  "words": true
@@ -142950,7 +143532,7 @@
142950
143532
  "text": "string"
142951
143533
  },
142952
143534
  "default": "'Increase'",
142953
- "description": "The name of the step up button, read by screen readers.",
143535
+ "description": "The name of the step up button, read by screen readers. The field's\nlabel follows it, so a reader hears \"Increase Quantity\", as React Aria\nnames its steppers.",
142954
143536
  "attribute": "increment-label",
142955
143537
  "helix": {
142956
143538
  "words": true
@@ -143458,13 +144040,16 @@
143458
144040
  },
143459
144041
  "parameters": [
143460
144042
  {
143461
- "name": "large",
143462
- "default": "false"
144043
+ "name": "count",
144044
+ "default": "1",
144045
+ "type": {
144046
+ "text": "number | boolean"
144047
+ }
143463
144048
  }
143464
144049
  ],
143465
- "description": "Steps the value up, by `largeStep` steps when `large` is set.",
144050
+ "description": "Steps the value up by `step`, `count` times, as the native method and\n`Input.stepUp` do. `true` takes `largeStep` steps, as `PageUp` does.",
143466
144051
  "type": {
143467
- "text": "stepUp(large = false) => void"
144052
+ "text": "stepUp(count: number | boolean = 1) => void"
143468
144053
  },
143469
144054
  "inheritedFrom": {
143470
144055
  "name": "HelixHeadlessNumberInput",
@@ -143481,14 +144066,40 @@
143481
144066
  },
143482
144067
  "parameters": [
143483
144068
  {
143484
- "name": "large",
143485
- "default": "false"
144069
+ "name": "count",
144070
+ "default": "1",
144071
+ "type": {
144072
+ "text": "number | boolean"
144073
+ }
143486
144074
  }
143487
144075
  ],
143488
- "description": "Steps the value down, by `largeStep` steps when `large` is set.\n\nThe same path a press of the down arrow takes, so a consumer driving this\nfrom their own control gets the clamping and the announcement rather than\nhaving to repeat both.",
144076
+ "description": "Steps the value down by `step`, `count` times. `true` takes `largeStep`\nsteps, as `PageDown` does.\n\nThe same path a press of the down arrow takes, so a consumer driving this\nfrom their own control gets the clamping and the announcement rather than\nhaving to repeat both.",
143489
144077
  "type": {
143490
- "text": "stepDown(large = false) => void"
144078
+ "text": "stepDown(count: number | boolean = 1) => void"
144079
+ },
144080
+ "inheritedFrom": {
144081
+ "name": "HelixHeadlessNumberInput",
144082
+ "module": "src/number-input/root/number-input-root.ts"
144083
+ }
144084
+ },
144085
+ {
144086
+ "kind": "method",
144087
+ "name": "stepsOf",
144088
+ "privacy": "private",
144089
+ "return": {
144090
+ "type": {
144091
+ "text": "number"
144092
+ }
143491
144093
  },
144094
+ "parameters": [
144095
+ {
144096
+ "name": "count",
144097
+ "type": {
144098
+ "text": "number | boolean"
144099
+ }
144100
+ }
144101
+ ],
144102
+ "description": "How many steps a `stepUp` argument asks for: a count, or `largeStep` for `true`.",
143492
144103
  "inheritedFrom": {
143493
144104
  "name": "HelixHeadlessNumberInput",
143494
144105
  "module": "src/number-input/root/number-input-root.ts"
@@ -144856,7 +145467,7 @@
144856
145467
  "text": "string"
144857
145468
  },
144858
145469
  "default": "'Decrease'",
144859
- "description": "The name of the step down button, read by screen readers.",
145470
+ "description": "The name of the step down button, read by screen readers. The field's\nlabel follows it, so a reader hears \"Decrease Quantity\", as React Aria\nnames its steppers.",
144860
145471
  "fieldName": "decrementLabel",
144861
145472
  "inheritedFrom": {
144862
145473
  "name": "HelixHeadlessNumberInput",
@@ -144881,7 +145492,7 @@
144881
145492
  "text": "string"
144882
145493
  },
144883
145494
  "default": "'Increase'",
144884
- "description": "The name of the step up button, read by screen readers.",
145495
+ "description": "The name of the step up button, read by screen readers. The field's\nlabel follows it, so a reader hears \"Increase Quantity\", as React Aria\nnames its steppers.",
144885
145496
  "fieldName": "incrementLabel",
144886
145497
  "inheritedFrom": {
144887
145498
  "name": "HelixHeadlessNumberInput",
@@ -167668,7 +168279,17 @@
167668
168279
  "type": {
167669
168280
  "text": "string"
167670
168281
  }
167671
- }
168282
+ },
168283
+ "parameters": [
168284
+ {
168285
+ "name": "imports",
168286
+ "optional": true,
168287
+ "type": {
168288
+ "text": "Readonly<Record<string, string>>"
168289
+ }
168290
+ }
168291
+ ],
168292
+ "description": "The built-in document, with an import map for `imports` where there are any.\n\n**The map comes first in the head**, because a browser reads an import map\nonly before the first module it loads, and the example's scripts are\nmodules. `</` is escaped in the map as in the script, so a URL cannot close\nthe element early."
167672
168293
  }
167673
168294
  ],
167674
168295
  "exports": [
@@ -167932,7 +168553,7 @@
167932
168553
  "declarations": [
167933
168554
  {
167934
168555
  "kind": "class",
167935
- "description": "A sandboxed `<iframe>` that loads `src`, a document you provide. That\ndocument imports what the examples need, listens for a render message, and\nwrites the markup into itself.\n\n**Without `src`, the frame loads a built-in document**, so a sandbox renders\nwith nothing to host. It runs HTML, CSS, and scripts, and reports the\nconsole, uncaught errors, its height, and presses as a frame on\n`servePreview` does. It defines no element, so an example that uses Helix\ncomponents needs a `src` that imports them.\n\n**Examples render in a frame**, so an example's styles and scripts do not\naffect the page around the sandbox, and `position: fixed` stays inside the\npane. The frame starts empty, with its own stylesheets and its own custom\nelement registry, so `src` must load the styles and components the examples\nuse.\n\n**The source is untrusted, and the frame keeps it isolated.** The frame uses\n`sandbox=\"allow-scripts\"` and never `allow-same-origin`. Together, the two\nlet a document on the same origin remove its own sandbox, which is the same\nas having none.\n\n**A preview says where it is.** It is `:state(loading)` from the moment it\nhas a `src` until that document can take the example, and again through\n`reload()`. It is `:state(failed)` once the example throws an error it does\nnot catch, until the next source is sent, which a frame on `servePreview`\nreports. A page draws its own spinner or message from either, such as a\nsibling shown by `helix-sandbox-preview:state(failed) + .message`.\n\n**A failed preview shows the error over the example**, in the `error` part,\nuntil the next source is sent. The terminal says it too, so the part is not\nannounced. Hide it with `::part(error) { display: none }` where the page\ndraws its own.\n\n**`controls` draws two buttons in the preview's corner**: one reloads the\nframe's document, as `reload()` does, and one opens the example in a new\ntab, as `open()` does. The tab runs it in a frame sandboxed as this one is.",
168556
+ "description": "A sandboxed `<iframe>` that loads `src`, a document you provide. That\ndocument imports what the examples need, listens for a render message, and\nwrites the markup into itself.\n\n**Without `src`, the frame loads a built-in document**, so a sandbox renders\nwith nothing to host. It runs HTML, CSS, and scripts, and reports the\nconsole, uncaught errors, its height, and presses as a frame on\n`servePreview` does. It defines no element, so an example that uses Helix\ncomponents needs a `src` that imports them.\n\n**`imports` lets an example import packages by name** in the built-in\ndocument, as an import map: each name maps to the address of an ES module,\nsuch as `{\"canvas-confetti\": \"https://esm.sh/canvas-confetti@1.9.3\"}`, and\n`import confetti from 'canvas-confetti'` in the `js` pane then loads it. A\nCDN that serves npm packages as modules, such as esm.sh or jsDelivr's\n`+esm`, gives every package an address. A new map loads the document again,\nsince a browser reads one only as a document starts. A `src` document\ndeclares its own.\n\n**Examples render in a frame**, so an example's styles and scripts do not\naffect the page around the sandbox, and `position: fixed` stays inside the\npane. The frame starts empty, with its own stylesheets and its own custom\nelement registry, so `src` must load the styles and components the examples\nuse.\n\n**The source is untrusted, and the frame keeps it isolated.** The frame uses\n`sandbox=\"allow-scripts\"` and never `allow-same-origin`. Together, the two\nlet a document on the same origin remove its own sandbox, which is the same\nas having none.\n\n**A preview says where it is.** It is `:state(loading)` from the moment it\nhas a `src` until that document can take the example, and again through\n`reload()`. It is `:state(failed)` once the example throws an error it does\nnot catch, until the next source is sent, which a frame on `servePreview`\nreports. A page draws its own spinner or message from either, such as a\nsibling shown by `helix-sandbox-preview:state(failed) + .message`.\n\n**A failed preview shows the error over the example**, in the `error` part,\nuntil the next source is sent. The terminal says it too, so the part is not\nannounced. Hide it with `::part(error) { display: none }` where the page\ndraws its own.\n\n**`controls` draws two buttons in the preview's corner**: one reloads the\nframe's document, as `reload()` does, and one opens the example in a new\ntab, as `open()` does. The tab runs it in a frame sandboxed as this one is.",
167936
168557
  "name": "HelixSandboxPreview",
167937
168558
  "cssParts": [
167938
168559
  {
@@ -167996,6 +168617,15 @@
167996
168617
  "description": "Writing direction inside the frame.\n\nNot reflected. It is payload for the render message and nothing selects on\nit, here or anywhere: a frame is a document of its own and what is written\non this host reaches nothing inside it, which is the same reason\n`colorMode` has to be sent rather than set.",
167997
168618
  "attribute": "direction"
167998
168619
  },
168620
+ {
168621
+ "kind": "field",
168622
+ "name": "imports",
168623
+ "type": {
168624
+ "text": "Record<string, string> | undefined"
168625
+ },
168626
+ "description": "The packages an example can import by name in the built-in document,\neach mapped to the address of an ES module, as an import map's `imports`.\nSet it as JSON in the attribute or as an object. Not read where `src` is\nset.",
168627
+ "attribute": "imports"
168628
+ },
167999
168629
  {
168000
168630
  "kind": "field",
168001
168631
  "name": "label",
@@ -168648,6 +169278,14 @@
168648
169278
  "description": "Writing direction inside the frame.\n\nNot reflected. It is payload for the render message and nothing selects on\nit, here or anywhere: a frame is a document of its own and what is written\non this host reaches nothing inside it, which is the same reason\n`colorMode` has to be sent rather than set.",
168649
169279
  "fieldName": "direction"
168650
169280
  },
169281
+ {
169282
+ "name": "imports",
169283
+ "type": {
169284
+ "text": "Record<string, string> | undefined"
169285
+ },
169286
+ "description": "The packages an example can import by name in the built-in document,\neach mapped to the address of an ES module, as an import map's `imports`.\nSet it as JSON in the attribute or as an object. Not read where `src` is\nset.",
169287
+ "fieldName": "imports"
169288
+ },
168651
169289
  {
168652
169290
  "name": "label",
168653
169291
  "type": {
@@ -170228,7 +170866,7 @@
170228
170866
  "declarations": [
170229
170867
  {
170230
170868
  "kind": "class",
170231
- "description": "A real `<textarea>`, so undo, selection, spellcheck suppression, mobile\nkeyboards, and screen reader support come from the platform.\n\nTab inserts two spaces, so you can indent code. To move focus out of the\nfield, press Escape and then Tab. Shift+Tab moves focus back as it does\nanywhere else. The field's description says so to a screen reader.\n\n**`tokenize` colors the source** with a highlighter you bring, such as one\nbuilt on Lezer, Prism or Shiki. It is a function from the source to runs of\ntext, each with an optional kind, and the pane draws the runs under a\ntransparent field, so typing, selection and undo stay the textarea's. The\nkinds are `callable`, `comment`, `constant`, `invalid`, `keyword`, `name`,\n`string` and `tag`, each colored by the `--helix-color-syntax-*` token of\nits name and a hook of its own, such as `--sandbox-source-keyword-color`.\nA run of any other kind is drawn in the field's own color. Every run with a\nkind is a `token` part, and carries its kind as `data-kind`. A `tokenize`\nthat throws leaves the source drawn plain and the field editable, and the\nerror is reported to the page as an uncaught one.",
170869
+ "description": "A real `<textarea>`, so undo, selection, spellcheck suppression, mobile\nkeyboards, and screen reader support come from the platform.\n\nTab inserts two spaces, so you can indent code. To move focus out of the\nfield, press Escape and then Tab. Shift+Tab moves focus back as it does\nanywhere else. The field's description says so to a screen reader.\n\n**`tokenize` colors the source** with a highlighter you bring, such as one\nbuilt on Lezer, Prism or Shiki. It is a function from the source to runs of\ntext, each with an optional kind, and the pane draws the runs under a\ntransparent field, so typing, selection and undo stay the textarea's. The\nkinds are `callable`, `comment`, `constant`, `invalid`, `keyword`, `name`,\n`string` and `tag`, each colored by the `--helix-color-syntax-*` token of\nits name and a hook of its own, such as `--sandbox-source-keyword-color`.\nA run of any other kind is drawn in the field's own color. Every run with a\nkind is a `token` part, and carries its kind as `data-kind`. A `tokenize`\nthat throws leaves the source drawn plain and the field editable, and the\nerror is reported to the page as an uncaught one.\n\n**`line-numbers` numbers each line** in a gutter beside the source. A line\nthat wraps keeps one number. The numbers are drawn, and hidden from screen\nreaders, which read the field.\n\nEnter keeps the indentation of the line it breaks, and the new line is\nundone with the next undo as typing is.\n\n**The source can be written inside the pane** where `value` is not set: its\ntext, or the markup of a `<template>` it holds, without the indentation the\npage gave it. Markup goes in a template so the page does not render it or\nrun its scripts. Text inside the pane is read once, when it connects.",
170232
170870
  "name": "HelixSandboxSource",
170233
170871
  "cssProperties": [
170234
170872
  {
@@ -170255,6 +170893,10 @@
170255
170893
  "description": "Color of a `keyword` run, under `tokenize`. Defaults to `--helix-color-syntax-keyword`.",
170256
170894
  "name": "--sandbox-source-keyword-color"
170257
170895
  },
170896
+ {
170897
+ "description": "Color of the line numbers, under `line-numbers`. Defaults to `--helix-color-foreground-subtle`.",
170898
+ "name": "--sandbox-source-line-number-color"
170899
+ },
170258
170900
  {
170259
170901
  "description": "Minimum height of the pane.",
170260
170902
  "name": "--sandbox-source-min-block-size"
@@ -170274,13 +170916,17 @@
170274
170916
  ],
170275
170917
  "cssParts": [
170276
170918
  {
170277
- "description": "The box that scrolls the field and its colors together, under `tokenize`.",
170919
+ "description": "The box that scrolls the field and its colors together, under `tokenize` or `line-numbers`.",
170278
170920
  "name": "field"
170279
170921
  },
170280
170922
  {
170281
- "description": "The colored copy of the source drawn under the field, under `tokenize`.",
170923
+ "description": "The colored copy of the source drawn under the field, under `tokenize` or `line-numbers`.",
170282
170924
  "name": "highlight"
170283
170925
  },
170926
+ {
170927
+ "description": "One line of that copy, under `line-numbers`, numbered in the gutter by its `::before`.",
170928
+ "name": "line"
170929
+ },
170284
170930
  {
170285
170931
  "description": "The editable region.",
170286
170932
  "name": "source"
@@ -170350,6 +170996,17 @@
170350
170996
  "description": "The pane's file name, such as `index.html`, on its tab where a sandbox\nholds several panes. Empty puts the pane's `name` on the tab.",
170351
170997
  "attribute": "label"
170352
170998
  },
170999
+ {
171000
+ "kind": "field",
171001
+ "name": "lineNumbers",
171002
+ "type": {
171003
+ "text": "boolean"
171004
+ },
171005
+ "default": "false",
171006
+ "description": "Whether each line of the source is numbered, in a gutter beside it.",
171007
+ "attribute": "line-numbers",
171008
+ "reflects": true
171009
+ },
170353
171010
  {
170354
171011
  "kind": "field",
170355
171012
  "name": "name",
@@ -170398,6 +171055,27 @@
170398
171055
  "default": "false",
170399
171056
  "description": "Set by Escape, so the next Tab leaves the field."
170400
171057
  },
171058
+ {
171059
+ "kind": "field",
171060
+ "name": "read",
171061
+ "type": {
171062
+ "text": "boolean"
171063
+ },
171064
+ "privacy": "private",
171065
+ "default": "false",
171066
+ "description": "Whether the source written inside the pane has been read."
171067
+ },
171068
+ {
171069
+ "kind": "method",
171070
+ "name": "readWritten",
171071
+ "privacy": "private",
171072
+ "return": {
171073
+ "type": {
171074
+ "text": "void"
171075
+ }
171076
+ },
171077
+ "description": "Takes the source written inside the pane where `value` is not set: a\ntemplate's markup, or else the text. Client only, like every read of the\nlight DOM, and once there is something to read.\n\n**As it connects, and again before its first render.** A pane that\nupgrades after the parser is done holds its text as it connects, which is\nbefore a sandbox around it reads `value` to seed its preview. A parser that\nconnects the pane before its children, as one with the element already\ndefined does, leaves the text for the render."
171078
+ },
170401
171079
  {
170402
171080
  "kind": "field",
170403
171081
  "name": "reportCaret",
@@ -170445,7 +171123,26 @@
170445
171123
  },
170446
171124
  {
170447
171125
  "kind": "method",
170448
- "name": "indent",
171126
+ "name": "breakLine",
171127
+ "privacy": "private",
171128
+ "return": {
171129
+ "type": {
171130
+ "text": "void"
171131
+ }
171132
+ },
171133
+ "parameters": [
171134
+ {
171135
+ "name": "event",
171136
+ "type": {
171137
+ "text": "KeyboardEvent"
171138
+ }
171139
+ }
171140
+ ],
171141
+ "description": "Breaks the line with the indentation it has, where it has some. A line at\nthe margin is left to the platform's own Enter."
171142
+ },
171143
+ {
171144
+ "kind": "method",
171145
+ "name": "insert",
170449
171146
  "privacy": "private",
170450
171147
  "return": {
170451
171148
  "type": {
@@ -170458,9 +171155,15 @@
170458
171155
  "type": {
170459
171156
  "text": "HTMLTextAreaElement"
170460
171157
  }
171158
+ },
171159
+ {
171160
+ "name": "text",
171161
+ "type": {
171162
+ "text": "string"
171163
+ }
170461
171164
  }
170462
171165
  ],
170463
- "description": "Writes the two spaces Tab inserts, as typing would.\n\n**Through `insertText`, so undo takes the indent back.** Assigning\n`field.value` empties the textarea's undo history: a reader who typed,\npressed Tab and then Cmd+Z or Ctrl+Z lost the indent and everything typed\nbefore it. `insertText` is the edit a keystroke makes, so it joins the\nhistory and sends the `input` event that `handleInput` takes. It writes\ninto whatever has focus, so it is used only while the field has it. Where it\nis not supported, the field is written directly."
171166
+ "description": "Writes text at the caret, as typing would: the two spaces Tab inserts,\nand the indentation Enter keeps.\n\n**Through `insertText`, so undo takes the indent back.** Assigning\n`field.value` empties the textarea's undo history: a reader who typed,\npressed Tab and then Cmd+Z or Ctrl+Z lost the indent and everything typed\nbefore it. `insertText` is the edit a keystroke makes, so it joins the\nhistory and sends the `input` event that `handleInput` takes. It writes\ninto whatever has focus, so it is used only while the field has it. Where it\nis not supported, the field is written directly."
170464
171167
  },
170465
171168
  {
170466
171169
  "kind": "method",
@@ -170876,6 +171579,15 @@
170876
171579
  "description": "The pane's file name, such as `index.html`, on its tab where a sandbox\nholds several panes. Empty puts the pane's `name` on the tab.",
170877
171580
  "fieldName": "label"
170878
171581
  },
171582
+ {
171583
+ "name": "line-numbers",
171584
+ "type": {
171585
+ "text": "boolean"
171586
+ },
171587
+ "default": "false",
171588
+ "description": "Whether each line of the source is numbered, in a gutter beside it.",
171589
+ "fieldName": "lineNumbers"
171590
+ },
170879
171591
  {
170880
171592
  "name": "name",
170881
171593
  "type": {
@@ -190709,7 +191421,7 @@
190709
191421
  "text": "boolean"
190710
191422
  },
190711
191423
  "default": "false",
190712
- "description": "Whether the arrow keys move focus between the stages' names, along the\nway the steps run. Off by default, so the arrows keep scrolling the page.",
191424
+ "description": "Whether the arrow keys move focus between the stages' names, along the\nway the steps run, and the names are one tab stop. Off by default, so the\narrows keep scrolling the page.",
190713
191425
  "attribute": "arrows",
190714
191426
  "inheritedFrom": {
190715
191427
  "name": "HelixHeadlessSteps",
@@ -190843,6 +191555,17 @@
190843
191555
  "module": "src/steps/root/steps-root.ts"
190844
191556
  }
190845
191557
  },
191558
+ {
191559
+ "kind": "field",
191560
+ "name": "commands",
191561
+ "privacy": "protected",
191562
+ "readonly": true,
191563
+ "default": "new CommandController(this, { commands: { '--next': () => this.next(), '--previous': () => this.previous(), '--reset': () => this.reset(), }, })",
191564
+ "inheritedFrom": {
191565
+ "name": "HelixHeadlessSteps",
191566
+ "module": "src/steps/root/steps-root.ts"
191567
+ }
191568
+ },
190846
191569
  {
190847
191570
  "kind": "field",
190848
191571
  "name": "steps",
@@ -190871,6 +191594,29 @@
190871
191594
  "module": "src/steps/root/steps-root.ts"
190872
191595
  }
190873
191596
  },
191597
+ {
191598
+ "kind": "method",
191599
+ "name": "named",
191600
+ "privacy": "private",
191601
+ "return": {
191602
+ "type": {
191603
+ "text": "HelixHeadlessStep | undefined"
191604
+ }
191605
+ },
191606
+ "parameters": [
191607
+ {
191608
+ "name": "steps",
191609
+ "type": {
191610
+ "text": "HelixHeadlessStep[]"
191611
+ }
191612
+ }
191613
+ ],
191614
+ "description": "The step `active` names, by `value` or by place, or the first enabled one.",
191615
+ "inheritedFrom": {
191616
+ "name": "HelixHeadlessSteps",
191617
+ "module": "src/steps/root/steps-root.ts"
191618
+ }
191619
+ },
190874
191620
  {
190875
191621
  "kind": "method",
190876
191622
  "name": "next",
@@ -191044,6 +191790,44 @@
191044
191790
  "module": "src/steps/root/steps-root.ts"
191045
191791
  }
191046
191792
  },
191793
+ {
191794
+ "kind": "field",
191795
+ "name": "holder",
191796
+ "type": {
191797
+ "text": "HelixHeadlessStep | undefined"
191798
+ },
191799
+ "privacy": "private",
191800
+ "description": "The step whose name holds the sequence's one tab stop under `arrows`, once focus has chosen it.",
191801
+ "inheritedFrom": {
191802
+ "name": "HelixHeadlessSteps",
191803
+ "module": "src/steps/root/steps-root.ts"
191804
+ }
191805
+ },
191806
+ {
191807
+ "kind": "method",
191808
+ "name": "rove",
191809
+ "privacy": "private",
191810
+ "return": {
191811
+ "type": {
191812
+ "text": "void"
191813
+ }
191814
+ },
191815
+ "description": "Gives the one tab stop to a name, under `arrows`: the one focus last left,\nelse the current stage's, else the first a reader can go to. Without\n`arrows` every name is its own stop. Client only.",
191816
+ "inheritedFrom": {
191817
+ "name": "HelixHeadlessSteps",
191818
+ "module": "src/steps/root/steps-root.ts"
191819
+ }
191820
+ },
191821
+ {
191822
+ "kind": "field",
191823
+ "name": "handleFocus",
191824
+ "privacy": "private",
191825
+ "readonly": true,
191826
+ "inheritedFrom": {
191827
+ "name": "HelixHeadlessSteps",
191828
+ "module": "src/steps/root/steps-root.ts"
191829
+ }
191830
+ },
191047
191831
  {
191048
191832
  "kind": "field",
191049
191833
  "name": "handleSlotChange",
@@ -191496,7 +192280,7 @@
191496
192280
  "text": "boolean"
191497
192281
  },
191498
192282
  "default": "false",
191499
- "description": "Whether the arrow keys move focus between the stages' names, along the\nway the steps run. Off by default, so the arrows keep scrolling the page.",
192283
+ "description": "Whether the arrow keys move focus between the stages' names, along the\nway the steps run, and the names are one tab stop. Off by default, so the\narrows keep scrolling the page.",
191500
192284
  "fieldName": "arrows",
191501
192285
  "inheritedFrom": {
191502
192286
  "name": "HelixHeadlessSteps",
@@ -191826,7 +192610,7 @@
191826
192610
  "text": "string"
191827
192611
  },
191828
192612
  "default": "''",
191829
- "description": "The value the step sends in `helix-select`.",
192613
+ "description": "The value the step sends in `helix-select`, and what names the step in its\nsequence's `active`. Without one, the sequence names the step by its place,\ncounted from 1.",
191830
192614
  "attribute": "value",
191831
192615
  "inheritedFrom": {
191832
192616
  "name": "HelixHeadlessStep",
@@ -192504,7 +193288,7 @@
192504
193288
  "text": "string"
192505
193289
  },
192506
193290
  "default": "''",
192507
- "description": "The value the step sends in `helix-select`.",
193291
+ "description": "The value the step sends in `helix-select`, and what names the step in its\nsequence's `active`. Without one, the sequence names the step by its place,\ncounted from 1.",
192508
193292
  "fieldName": "value",
192509
193293
  "inheritedFrom": {
192510
193294
  "name": "HelixHeadlessStep",
@@ -238402,6 +239186,48 @@
238402
239186
  "module": "src/video-playlist/root/video-playlist-root.ts"
238403
239187
  }
238404
239188
  },
239189
+ {
239190
+ "kind": "field",
239191
+ "name": "wroteName",
239192
+ "type": {
239193
+ "text": "string | undefined"
239194
+ },
239195
+ "privacy": "private",
239196
+ "description": "The name this playlist last wrote on a plain media player, to tell it from yours.",
239197
+ "inheritedFrom": {
239198
+ "name": "HelixHeadlessVideoPlaylist",
239199
+ "module": "src/video-playlist/root/video-playlist-root.ts"
239200
+ }
239201
+ },
239202
+ {
239203
+ "kind": "method",
239204
+ "name": "name",
239205
+ "privacy": "private",
239206
+ "return": {
239207
+ "type": {
239208
+ "text": "void"
239209
+ }
239210
+ },
239211
+ "parameters": [
239212
+ {
239213
+ "name": "player",
239214
+ "type": {
239215
+ "text": "Player"
239216
+ }
239217
+ },
239218
+ {
239219
+ "name": "text",
239220
+ "type": {
239221
+ "text": "string"
239222
+ }
239223
+ }
239224
+ ],
239225
+ "description": "Names the player by the entry.\n\nThe consumer's own name for the player stands. Only a player named by\nnobody takes the entry's words as its name: `label` on a player that has\none, and `aria-label` on a plain `<video>` or `<audio>`, which has none and\nwas heard as an unnamed video.",
239226
+ "inheritedFrom": {
239227
+ "name": "HelixHeadlessVideoPlaylist",
239228
+ "module": "src/video-playlist/root/video-playlist-root.ts"
239229
+ }
239230
+ },
238405
239231
  {
238406
239232
  "kind": "field",
238407
239233
  "name": "pointed",
@@ -244914,7 +245740,7 @@
244914
245740
  }
244915
245741
  }
244916
245742
  ],
244917
- "description": "Writes a row's role, and whether it is chosen in a list that selects:\n`option` with `aria-selected` there, and `listitem` otherwise, and\n`aria-disabled` on an item `disabled-keys` names. Every pass,\nsince a choice changes no row's content.",
245743
+ "description": "Writes a row's role, and whether it is chosen in a list that selects:\n`option` with `aria-selected` there, and `listitem` otherwise, and\n`aria-disabled` on an item `disabled-keys` names. Every pass,\nsince a choice changes no row's content.\n\n`data-selected` and `data-disabled` say the same to a stylesheet, as\nReact Aria's rows do, so one rule reads the same in either kind of list.",
244918
245744
  "inheritedFrom": {
244919
245745
  "name": "HelixHeadlessVirtualList",
244920
245746
  "module": "src/virtual-list/root/virtual-list-root.ts"
@@ -245861,6 +246687,6 @@
245861
246687
  ],
245862
246688
  "helix": {
245863
246689
  "package": "@fusion.dev/helix",
245864
- "version": "0.170.0"
246690
+ "version": "0.171.0"
245865
246691
  }
245866
246692
  }