@fusion.dev/helix 0.162.0 → 0.163.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.
@@ -13899,6 +13899,18 @@
13899
13899
  "module": "src/breadcrumbs/root/breadcrumbs-root.ts"
13900
13900
  }
13901
13901
  },
13902
+ {
13903
+ "kind": "field",
13904
+ "name": "upgradeWatch",
13905
+ "privacy": "protected",
13906
+ "readonly": true,
13907
+ "default": "new UpgradeController(this, this.handleSlotChange)",
13908
+ "description": "Reads a crumb again once it upgrades, so the current one is marked.",
13909
+ "inheritedFrom": {
13910
+ "name": "HelixHeadlessBreadcrumbs",
13911
+ "module": "src/breadcrumbs/root/breadcrumbs-root.ts"
13912
+ }
13913
+ },
13902
13914
  {
13903
13915
  "kind": "method",
13904
13916
  "name": "renderItems",
@@ -18891,6 +18903,22 @@
18891
18903
  "package": "@fusion.dev/helix-headless/canvas"
18892
18904
  }
18893
18905
  },
18906
+ {
18907
+ "kind": "js",
18908
+ "name": "CanvasRoute",
18909
+ "declaration": {
18910
+ "name": "CanvasRoute",
18911
+ "package": "@fusion.dev/helix-headless/canvas"
18912
+ }
18913
+ },
18914
+ {
18915
+ "kind": "js",
18916
+ "name": "CanvasRouteEnds",
18917
+ "declaration": {
18918
+ "name": "CanvasRouteEnds",
18919
+ "package": "@fusion.dev/helix-headless/canvas"
18920
+ }
18921
+ },
18894
18922
  {
18895
18923
  "kind": "js",
18896
18924
  "name": "CanvasSide",
@@ -19996,6 +20024,14 @@
19996
20024
  "description": "The size of the label on a connection.",
19997
20025
  "name": "--canvas-label-font-size"
19998
20026
  },
20027
+ {
20028
+ "description": "The height of the minimap, under `controls=\"minimap\"`.",
20029
+ "name": "--canvas-minimap-block-size"
20030
+ },
20031
+ {
20032
+ "description": "The width of the minimap, under `controls=\"minimap\"`.",
20033
+ "name": "--canvas-minimap-inline-size"
20034
+ },
19999
20035
  {
20000
20036
  "description": "The frame's corners.",
20001
20037
  "name": "--canvas-radius"
@@ -21040,6 +21076,18 @@
21040
21076
  "module": "src/canvas/root/canvas-root.ts"
21041
21077
  }
21042
21078
  },
21079
+ {
21080
+ "kind": "field",
21081
+ "name": "edgeRoute",
21082
+ "type": {
21083
+ "text": "CanvasRoute | undefined"
21084
+ },
21085
+ "description": "Draws every connection's line: a function from where it leaves and\narrives, and the sides it does, to its SVG path and where its label sits.\n\nAbsent, or returning nothing for a connection, draws the board's own\nroute. A function that throws draws the board's own too, and the error is\nreported to the page as an uncaught one. Set it as a property.",
21086
+ "inheritedFrom": {
21087
+ "name": "HelixHeadlessCanvas",
21088
+ "module": "src/canvas/root/canvas-root.ts"
21089
+ }
21090
+ },
21043
21091
  {
21044
21092
  "kind": "field",
21045
21093
  "name": "fallbackLabel",
@@ -22371,6 +22419,53 @@
22371
22419
  "module": "src/canvas/root/canvas-root.ts"
22372
22420
  }
22373
22421
  },
22422
+ {
22423
+ "kind": "method",
22424
+ "name": "draw",
22425
+ "privacy": "private",
22426
+ "return": {
22427
+ "type": {
22428
+ "text": "{ d: string; mid: { x: number; y: number } }"
22429
+ }
22430
+ },
22431
+ "parameters": [
22432
+ {
22433
+ "name": "edge",
22434
+ "type": {
22435
+ "text": "CanvasEdge"
22436
+ }
22437
+ },
22438
+ {
22439
+ "name": "from",
22440
+ "type": {
22441
+ "text": "CanvasNode"
22442
+ }
22443
+ },
22444
+ {
22445
+ "name": "to",
22446
+ "type": {
22447
+ "text": "CanvasNode"
22448
+ }
22449
+ },
22450
+ {
22451
+ "name": "path",
22452
+ "type": {
22453
+ "text": "CanvasPath"
22454
+ }
22455
+ },
22456
+ {
22457
+ "name": "drawnHeads",
22458
+ "type": {
22459
+ "text": "{ start: boolean; end: boolean }"
22460
+ }
22461
+ }
22462
+ ],
22463
+ "description": "One connection's line, by `edgeRoute` where it draws one, and by the board's own where not.",
22464
+ "inheritedFrom": {
22465
+ "name": "HelixHeadlessCanvas",
22466
+ "module": "src/canvas/root/canvas-root.ts"
22467
+ }
22468
+ },
22374
22469
  {
22375
22470
  "kind": "method",
22376
22471
  "name": "cardOf",
@@ -24020,6 +24115,60 @@
24020
24115
  "module": "src/canvas/root/canvas-root.ts"
24021
24116
  }
24022
24117
  },
24118
+ {
24119
+ "kind": "field",
24120
+ "name": "onScreen",
24121
+ "type": {
24122
+ "text": "{ x: number; y: number; width: number; height: number }"
24123
+ },
24124
+ "privacy": "private",
24125
+ "description": "The part of the document on screen, in its own units.",
24126
+ "readonly": true,
24127
+ "inheritedFrom": {
24128
+ "name": "HelixHeadlessCanvas",
24129
+ "module": "src/canvas/root/canvas-root.ts"
24130
+ }
24131
+ },
24132
+ {
24133
+ "kind": "field",
24134
+ "name": "minimapArea",
24135
+ "type": {
24136
+ "text": "{ x: number; y: number; width: number; height: number }"
24137
+ },
24138
+ "privacy": "private",
24139
+ "description": "What the minimap shows: every card and what is on screen, with room around them.",
24140
+ "readonly": true,
24141
+ "inheritedFrom": {
24142
+ "name": "HelixHeadlessCanvas",
24143
+ "module": "src/canvas/root/canvas-root.ts"
24144
+ }
24145
+ },
24146
+ {
24147
+ "kind": "field",
24148
+ "name": "handleMinimapPointer",
24149
+ "privacy": "private",
24150
+ "readonly": true,
24151
+ "description": "A press or a drag on the minimap, which brings the place under it to the\nmiddle of the view.\n\n**The point is read through the picture's own scale**: the area is drawn\nwhole and centered in the box, so the box's spare width or height is split\neither side of it.",
24152
+ "inheritedFrom": {
24153
+ "name": "HelixHeadlessCanvas",
24154
+ "module": "src/canvas/root/canvas-root.ts"
24155
+ }
24156
+ },
24157
+ {
24158
+ "kind": "method",
24159
+ "name": "renderMinimap",
24160
+ "privacy": "private",
24161
+ "return": {
24162
+ "type": {
24163
+ "text": "TemplateResult | typeof nothing"
24164
+ }
24165
+ },
24166
+ "description": "The minimap, under `controls=\"minimap\"`: each card as a box, and a frame\naround what is on screen.\n\n**A picture for a pointer**, hidden from screen readers and taking no\nfocus, as a map's own overview is: the arrow keys and `show()` already take\na keyboard to any card, and a second way that says nothing a reader can\nuse would be a stop that does nothing.",
24167
+ "inheritedFrom": {
24168
+ "name": "HelixHeadlessCanvas",
24169
+ "module": "src/canvas/root/canvas-root.ts"
24170
+ }
24171
+ },
24023
24172
  {
24024
24173
  "kind": "field",
24025
24174
  "name": "tier",
@@ -24966,6 +25115,10 @@
24966
25115
  "description": "A flowchart with a pill to start, boxes for steps, a diamond for the decision, and a circle to end, joined at right angles.",
24967
25116
  "slug": "flowchart"
24968
25117
  },
25118
+ {
25119
+ "description": "A board with a minimap in its corner. A press or a drag on the minimap moves the view there.",
25120
+ "slug": "minimap"
25121
+ },
24969
25122
  {
24970
25123
  "description": "A read-only board for publishing. Every card stays where its author put it, and every connection turns at right angles.",
24971
25124
  "slug": "read-only"
@@ -25210,6 +25363,30 @@
25210
25363
  "module": "src/canvas/root/canvas-root.ts"
25211
25364
  }
25212
25365
  },
25366
+ {
25367
+ "description": "The picture of the whole board, under `controls=\"minimap\"`.",
25368
+ "name": "minimap",
25369
+ "inheritedFrom": {
25370
+ "name": "HelixHeadlessCanvas",
25371
+ "module": "src/canvas/root/canvas-root.ts"
25372
+ }
25373
+ },
25374
+ {
25375
+ "description": "One card in the minimap.",
25376
+ "name": "minimap-node",
25377
+ "inheritedFrom": {
25378
+ "name": "HelixHeadlessCanvas",
25379
+ "module": "src/canvas/root/canvas-root.ts"
25380
+ }
25381
+ },
25382
+ {
25383
+ "description": "The frame in the minimap around what is on screen.",
25384
+ "name": "minimap-view",
25385
+ "inheritedFrom": {
25386
+ "name": "HelixHeadlessCanvas",
25387
+ "module": "src/canvas/root/canvas-root.ts"
25388
+ }
25389
+ },
25213
25390
  {
25214
25391
  "description": "The button that moves the board down.",
25215
25392
  "name": "pan-down",
@@ -32290,6 +32467,18 @@
32290
32467
  "module": "src/chat/root/chat-root.ts"
32291
32468
  }
32292
32469
  },
32470
+ {
32471
+ "kind": "field",
32472
+ "name": "upgradeWatch",
32473
+ "privacy": "protected",
32474
+ "readonly": true,
32475
+ "default": "new UpgradeController(this, () => this.handleSlotChange())",
32476
+ "description": "Hears a message upgrade after it arrived. A message is known by its marker,\nwhich an element that has not upgraded lacks, so it was assigned nowhere.",
32477
+ "inheritedFrom": {
32478
+ "name": "HelixHeadlessChat",
32479
+ "module": "src/chat/root/chat-root.ts"
32480
+ }
32481
+ },
32293
32482
  {
32294
32483
  "kind": "field",
32295
32484
  "name": "settling",
@@ -32941,7 +33130,43 @@
32941
33130
  }
32942
33131
  }
32943
33132
  ],
32944
- "description": "Moves focus to turn `at`, drawing it first where the transcript is\nwindowed and it is not drawn.\n\n**A turn takes focus only once a reader moves to it**, so the\n`tabindex=\"-1\"` a turn written as a child needs is written then, long\nafter any server's markup has hydrated, and never on a turn nobody moved\nto.",
33133
+ "description": "Moves focus to turn `at`, drawing it first where the transcript is\nwindowed and it is not drawn.\n\n**A turn takes focus only once a reader moves to it**, so the `tabindex`\nit needs is written then, long after any server's markup has hydrated,\nand never on a turn nobody moved to.",
33134
+ "inheritedFrom": {
33135
+ "name": "HelixHeadlessChat",
33136
+ "module": "src/chat/root/chat-root.ts"
33137
+ }
33138
+ },
33139
+ {
33140
+ "kind": "field",
33141
+ "name": "stop",
33142
+ "type": {
33143
+ "text": "HTMLElement | undefined"
33144
+ },
33145
+ "privacy": "private",
33146
+ "description": "The turn that is a tab stop because a reader moved to it.",
33147
+ "inheritedFrom": {
33148
+ "name": "HelixHeadlessChat",
33149
+ "module": "src/chat/root/chat-root.ts"
33150
+ }
33151
+ },
33152
+ {
33153
+ "kind": "method",
33154
+ "name": "visit",
33155
+ "privacy": "private",
33156
+ "return": {
33157
+ "type": {
33158
+ "text": "void"
33159
+ }
33160
+ },
33161
+ "parameters": [
33162
+ {
33163
+ "name": "turn",
33164
+ "type": {
33165
+ "text": "HTMLElement"
33166
+ }
33167
+ }
33168
+ ],
33169
+ "description": "Focuses a turn, making it the transcript's one stop a reader moved to.\n\n**`0`, and never `-1`.** Chromium leaves the whole of a shadow host at a\nnegative `tabindex` out of the Tab order, its own controls and what is\nslotted into it alike, so a turn at `-1` lost its links and its Try again\nonce a reader had paged through it. The stop moves with the reader, and a\n`tabindex` you wrote on a turn is left as it is.",
32945
33170
  "inheritedFrom": {
32946
33171
  "name": "HelixHeadlessChat",
32947
33172
  "module": "src/chat/root/chat-root.ts"
@@ -34445,6 +34670,18 @@
34445
34670
  "module": "src/checkbox-group/root/checkbox-group-root.ts"
34446
34671
  }
34447
34672
  },
34673
+ {
34674
+ "kind": "field",
34675
+ "name": "upgradeWatch",
34676
+ "privacy": "protected",
34677
+ "readonly": true,
34678
+ "default": "new UpgradeController(this, undefined, { subtree: true })",
34679
+ "description": "Reads a box again once it upgrades, so it takes the group's name and value.",
34680
+ "inheritedFrom": {
34681
+ "name": "HelixHeadlessCheckboxGroup",
34682
+ "module": "src/checkbox-group/root/checkbox-group-root.ts"
34683
+ }
34684
+ },
34448
34685
  {
34449
34686
  "kind": "field",
34450
34687
  "name": "judged",
@@ -48474,6 +48711,18 @@
48474
48711
  "module": "src/combobox/root/combobox-root.ts"
48475
48712
  }
48476
48713
  },
48714
+ {
48715
+ "kind": "field",
48716
+ "name": "upgradeWatch",
48717
+ "privacy": "protected",
48718
+ "readonly": true,
48719
+ "default": "new UpgradeController( this, () => { this.listbox?.requestUpdate() this.requestUpdate() }, { subtree: true }, )",
48720
+ "description": "Hears an option upgrade after it arrived. The options are this element's\nchildren, which the listbox reaches through a slot and does not watch, so\nboth read them again: the listbox to select the one `value` names, and this\nelement for the words in its field.",
48721
+ "inheritedFrom": {
48722
+ "name": "HelixHeadlessCombobox",
48723
+ "module": "src/combobox/root/combobox-root.ts"
48724
+ }
48725
+ },
48477
48726
  {
48478
48727
  "kind": "field",
48479
48728
  "name": "panel",
@@ -111831,6 +112080,18 @@
111831
112080
  "module": "src/list/root/list-root.ts"
111832
112081
  }
111833
112082
  },
112083
+ {
112084
+ "kind": "field",
112085
+ "name": "upgradeWatch",
112086
+ "privacy": "protected",
112087
+ "readonly": true,
112088
+ "default": "new UpgradeController(this, this.handleSlotChange)",
112089
+ "description": "Reads an item again once it upgrades, so it takes the role the list gives its rows.",
112090
+ "inheritedFrom": {
112091
+ "name": "HelixHeadlessList",
112092
+ "module": "src/list/root/list-root.ts"
112093
+ }
112094
+ },
111834
112095
  {
111835
112096
  "kind": "field",
111836
112097
  "name": "tier",
@@ -114086,6 +114347,17 @@
114086
114347
  "module": "src/listbox/root/listbox-root.ts"
114087
114348
  }
114088
114349
  },
114350
+ {
114351
+ "kind": "field",
114352
+ "name": "upgradeWatch",
114353
+ "privacy": "protected",
114354
+ "readonly": true,
114355
+ "default": "new UpgradeController(this, undefined, { subtree: true })",
114356
+ "inheritedFrom": {
114357
+ "name": "HelixHeadlessListbox",
114358
+ "module": "src/listbox/root/listbox-root.ts"
114359
+ }
114360
+ },
114089
114361
  {
114090
114362
  "kind": "method",
114091
114363
  "name": "among",
@@ -124660,6 +124932,17 @@
124660
124932
  "module": "src/map/root/map-root.ts"
124661
124933
  }
124662
124934
  },
124935
+ {
124936
+ "kind": "field",
124937
+ "name": "handleMenuFocusOut",
124938
+ "privacy": "private",
124939
+ "readonly": true,
124940
+ "description": "Closes the layers menu when focus moves on from its button and the menu,\nas a Tab past the last tile does. Focus leaving the page, with nothing\nfocused in its place, leaves the menu as it is.",
124941
+ "inheritedFrom": {
124942
+ "name": "HelixHeadlessMap",
124943
+ "module": "src/map/root/map-root.ts"
124944
+ }
124945
+ },
124663
124946
  {
124664
124947
  "kind": "field",
124665
124948
  "name": "handleMenuKeydown",
@@ -129854,7 +130137,7 @@
129854
130137
  "text": "boolean"
129855
130138
  },
129856
130139
  "default": "false",
129857
- "description": "Whether the row is one of a set of choices.\n\nSeparate from `checked`, and it has to be. A row that is off is still a\nchoice, and `checked` alone cannot say so: an unticked row and a row that\nwas never tickable look identical from here. Announcing only the ticked one\nas a checkbox tells a reader its siblings are commands, which is the one\nthing they are not.\n\n`checked` implies it, so a row that is on never has to say both.\n\nChoosing the row checks or unchecks it, after a `helix-before-toggle` that\nyou can cancel.",
130140
+ "description": "Whether the row is one of a set of choices.\n\nSeparate from `checked`, and it has to be. A row that is off is still a\nchoice, and `checked` alone cannot say so: an unticked row and a row that\nwas never tickable look identical from here. Announcing only the ticked one\nas a checkbox tells a reader its siblings are commands, which is the one\nthing they are not.\n\n`checked` and `exclusive` imply it, so a row that is on, or one of a set,\nnever has to say both.\n\nChoosing the row checks or unchecks it, after a `helix-before-toggle` that\nyou can cancel.",
129858
130141
  "attribute": "checkable",
129859
130142
  "reflects": true,
129860
130143
  "inheritedFrom": {
@@ -129876,6 +130159,19 @@
129876
130159
  "module": "src/menu/item/menu-item.ts"
129877
130160
  }
129878
130161
  },
130162
+ {
130163
+ "kind": "field",
130164
+ "name": "closeOnSelect",
130165
+ "type": {
130166
+ "text": "boolean | undefined"
130167
+ },
130168
+ "description": "Whether choosing the row closes the menu.\n\nUnset takes the menu's `close-on-select`, which is on, and keeps the menu\nopen after a Space on a choice row. Write `close-on-select=\"false\"` for a\nrow that changes something the reader is watching, such as a zoom step.",
130169
+ "attribute": "close-on-select",
130170
+ "inheritedFrom": {
130171
+ "name": "HelixHeadlessMenuItem",
130172
+ "module": "src/menu/item/menu-item.ts"
130173
+ }
130174
+ },
129879
130175
  {
129880
130176
  "kind": "field",
129881
130177
  "name": "disabled",
@@ -129912,7 +130208,7 @@
129912
130208
  "text": "boolean"
129913
130209
  },
129914
130210
  "default": "false",
129915
- "description": "Whether only one row in its set can be checked at a time.\n\nThe set is the run of `exclusive` rows next to this one, up to the first\nelement that is not one, such as a divider. Choosing a row in it checks\nthat row and unchecks the others. Choosing the row that is checked leaves\nit checked. `menuitemradio` tells a reader which kind of set they are in,\nwhere `menuitemcheckbox` says every row is independent.\n\nMeaningless without `checkable`, since a row that cannot be ticked is not\none of a set of anything.",
130211
+ "description": "Whether only one row in its set can be checked at a time.\n\nThe set is the run of `exclusive` rows next to this one, up to the first\nelement that is not one, such as a divider. Choosing a row in it checks\nthat row and unchecks the others. Choosing the row that is checked leaves\nit checked. `menuitemradio` tells a reader which kind of set they are in,\nwhere `menuitemcheckbox` says every row is independent.\n\nIt makes the row a choice, so it needs no `checkable` beside it.",
129916
130212
  "attribute": "exclusive",
129917
130213
  "reflects": true,
129918
130214
  "inheritedFrom": {
@@ -130275,6 +130571,13 @@
130275
130571
  "text": "void"
130276
130572
  }
130277
130573
  },
130574
+ "parameters": [
130575
+ {
130576
+ "name": "space",
130577
+ "default": "false"
130578
+ }
130579
+ ],
130580
+ "description": "Chooses the row. `space` is whether a Space chose it, which keeps the menu\nopen on a choice row unless the row says otherwise.",
130278
130581
  "inheritedFrom": {
130279
130582
  "name": "HelixHeadlessMenuItem",
130280
130583
  "module": "src/menu/item/menu-item.ts"
@@ -130290,6 +130593,20 @@
130290
130593
  "module": "src/menu/item/menu-item.ts"
130291
130594
  }
130292
130595
  },
130596
+ {
130597
+ "kind": "field",
130598
+ "name": "spacePressed",
130599
+ "type": {
130600
+ "text": "boolean"
130601
+ },
130602
+ "privacy": "private",
130603
+ "default": "false",
130604
+ "description": "Whether the click on its way is the one a Space on a linked row sent.",
130605
+ "inheritedFrom": {
130606
+ "name": "HelixHeadlessMenuItem",
130607
+ "module": "src/menu/item/menu-item.ts"
130608
+ }
130609
+ },
130293
130610
  {
130294
130611
  "kind": "field",
130295
130612
  "name": "handleKeydown",
@@ -130808,7 +131125,7 @@
130808
131125
  "text": "boolean"
130809
131126
  },
130810
131127
  "default": "false",
130811
- "description": "Whether the row is one of a set of choices.\n\nSeparate from `checked`, and it has to be. A row that is off is still a\nchoice, and `checked` alone cannot say so: an unticked row and a row that\nwas never tickable look identical from here. Announcing only the ticked one\nas a checkbox tells a reader its siblings are commands, which is the one\nthing they are not.\n\n`checked` implies it, so a row that is on never has to say both.\n\nChoosing the row checks or unchecks it, after a `helix-before-toggle` that\nyou can cancel.",
131128
+ "description": "Whether the row is one of a set of choices.\n\nSeparate from `checked`, and it has to be. A row that is off is still a\nchoice, and `checked` alone cannot say so: an unticked row and a row that\nwas never tickable look identical from here. Announcing only the ticked one\nas a checkbox tells a reader its siblings are commands, which is the one\nthing they are not.\n\n`checked` and `exclusive` imply it, so a row that is on, or one of a set,\nnever has to say both.\n\nChoosing the row checks or unchecks it, after a `helix-before-toggle` that\nyou can cancel.",
130812
131129
  "fieldName": "checkable",
130813
131130
  "inheritedFrom": {
130814
131131
  "name": "HelixHeadlessMenuItem",
@@ -130828,6 +131145,18 @@
130828
131145
  "module": "src/menu/item/menu-item.ts"
130829
131146
  }
130830
131147
  },
131148
+ {
131149
+ "name": "close-on-select",
131150
+ "type": {
131151
+ "text": "boolean | undefined"
131152
+ },
131153
+ "description": "Whether choosing the row closes the menu.\n\nUnset takes the menu's `close-on-select`, which is on, and keeps the menu\nopen after a Space on a choice row. Write `close-on-select=\"false\"` for a\nrow that changes something the reader is watching, such as a zoom step.",
131154
+ "fieldName": "closeOnSelect",
131155
+ "inheritedFrom": {
131156
+ "name": "HelixHeadlessMenuItem",
131157
+ "module": "src/menu/item/menu-item.ts"
131158
+ }
131159
+ },
130831
131160
  {
130832
131161
  "name": "disabled",
130833
131162
  "type": {
@@ -130860,7 +131189,7 @@
130860
131189
  "text": "boolean"
130861
131190
  },
130862
131191
  "default": "false",
130863
- "description": "Whether only one row in its set can be checked at a time.\n\nThe set is the run of `exclusive` rows next to this one, up to the first\nelement that is not one, such as a divider. Choosing a row in it checks\nthat row and unchecks the others. Choosing the row that is checked leaves\nit checked. `menuitemradio` tells a reader which kind of set they are in,\nwhere `menuitemcheckbox` says every row is independent.\n\nMeaningless without `checkable`, since a row that cannot be ticked is not\none of a set of anything.",
131192
+ "description": "Whether only one row in its set can be checked at a time.\n\nThe set is the run of `exclusive` rows next to this one, up to the first\nelement that is not one, such as a divider. Choosing a row in it checks\nthat row and unchecks the others. Choosing the row that is checked leaves\nit checked. `menuitemradio` tells a reader which kind of set they are in,\nwhere `menuitemcheckbox` says every row is independent.\n\nIt makes the row a choice, so it needs no `checkable` beside it.",
130864
131193
  "fieldName": "exclusive",
130865
131194
  "inheritedFrom": {
130866
131195
  "name": "HelixHeadlessMenuItem",
@@ -131446,6 +131775,20 @@
131446
131775
  "module": "src/menu/root/menu-root.ts"
131447
131776
  }
131448
131777
  },
131778
+ {
131779
+ "kind": "field",
131780
+ "name": "closeOnSelect",
131781
+ "type": {
131782
+ "text": "boolean"
131783
+ },
131784
+ "default": "true",
131785
+ "description": "Whether choosing a row closes the menu.\n\nOn by default, and a Space on a choice row leaves the menu open either way.\nWrite `close-on-select=\"false\"` to keep the menu open after every choice, as\nArk UI's `closeOnSelect` does. A row's own `close-on-select` wins over this.",
131786
+ "attribute": "close-on-select",
131787
+ "inheritedFrom": {
131788
+ "name": "HelixHeadlessMenu",
131789
+ "module": "src/menu/root/menu-root.ts"
131790
+ }
131791
+ },
131449
131792
  {
131450
131793
  "kind": "field",
131451
131794
  "name": "context",
@@ -132803,6 +133146,19 @@
132803
133146
  "module": "src/menu/root/menu-root.ts"
132804
133147
  }
132805
133148
  },
133149
+ {
133150
+ "name": "close-on-select",
133151
+ "type": {
133152
+ "text": "boolean"
133153
+ },
133154
+ "default": "true",
133155
+ "description": "Whether choosing a row closes the menu.\n\nOn by default, and a Space on a choice row leaves the menu open either way.\nWrite `close-on-select=\"false\"` to keep the menu open after every choice, as\nArk UI's `closeOnSelect` does. A row's own `close-on-select` wins over this.",
133156
+ "fieldName": "closeOnSelect",
133157
+ "inheritedFrom": {
133158
+ "name": "HelixHeadlessMenu",
133159
+ "module": "src/menu/root/menu-root.ts"
133160
+ }
133161
+ },
132806
133162
  {
132807
133163
  "name": "context",
132808
133164
  "type": {
@@ -136041,13 +136397,35 @@
136041
136397
  "module": "src/notifications/group/notification-group.ts"
136042
136398
  }
136043
136399
  },
136400
+ {
136401
+ "kind": "field",
136402
+ "name": "recount",
136403
+ "privacy": "private",
136404
+ "readonly": true,
136405
+ "description": "Hears a row arrive after the render. The slot is assigned by hand, so a\nnew row is in no slot and sends no `slotchange` to say it came. The feed\nthe group is in is asked to update as well, since it counts the group's\nrows and does not watch inside the group.",
136406
+ "inheritedFrom": {
136407
+ "name": "HelixHeadlessNotificationGroup",
136408
+ "module": "src/notifications/group/notification-group.ts"
136409
+ }
136410
+ },
136044
136411
  {
136045
136412
  "kind": "field",
136046
136413
  "name": "childWatch",
136047
136414
  "privacy": "protected",
136048
136415
  "readonly": true,
136049
- "default": "new ChildrenController(this, () => { this.requestUpdate() ;(this.parentElement as Partial<Pick<HelixElement, 'requestUpdate'>> | null)?.requestUpdate?.() })",
136050
- "description": "Hears a row arrive after the render. The slot is assigned by hand, so a\nnew row is in no slot and sends no `slotchange` to say it came. The feed\nthe group is in is asked to update as well, since it counts the group's\nrows and does not watch inside the group.",
136416
+ "default": "new ChildrenController(this, this.recount)",
136417
+ "inheritedFrom": {
136418
+ "name": "HelixHeadlessNotificationGroup",
136419
+ "module": "src/notifications/group/notification-group.ts"
136420
+ }
136421
+ },
136422
+ {
136423
+ "kind": "field",
136424
+ "name": "upgradeWatch",
136425
+ "privacy": "protected",
136426
+ "readonly": true,
136427
+ "default": "new UpgradeController(this, this.recount)",
136428
+ "description": "Hears a row upgrade after it arrived, which neither the slot nor `childWatch` reports.",
136051
136429
  "inheritedFrom": {
136052
136430
  "name": "HelixHeadlessNotificationGroup",
136053
136431
  "module": "src/notifications/group/notification-group.ts"
@@ -138616,6 +138994,18 @@
138616
138994
  "module": "src/notifications/root/notifications-root.ts"
138617
138995
  }
138618
138996
  },
138997
+ {
138998
+ "kind": "field",
138999
+ "name": "upgradeWatch",
139000
+ "privacy": "protected",
139001
+ "readonly": true,
139002
+ "default": "new UpgradeController(this, this.handleSlotChange)",
139003
+ "description": "Hears a row upgrade after it arrived. A row is known by its marker, which\nan element that has not upgraded lacks, so the row was assigned nowhere.",
139004
+ "inheritedFrom": {
139005
+ "name": "HelixHeadlessNotifications",
139006
+ "module": "src/notifications/root/notifications-root.ts"
139007
+ }
139008
+ },
138619
139009
  {
138620
139010
  "kind": "field",
138621
139011
  "name": "handleRead",
@@ -138814,7 +139204,7 @@
138814
139204
  "text": "void"
138815
139205
  }
138816
139206
  },
138817
- "description": "Says whether anything in the feed has media, so every item can hold the\ncolumn open whether or not it has one of its own.\n\n**A fact no item can answer for itself**, which is why it is here. An item\nknows about its own media slot and nothing about its neighbors, so a feed\nwhere some rows have an avatar and some do not draws two different left\nedges for its text: measured on a four item feed, the rows without media\nstarted their text 32 pixels to the left of the rows with it. The styled\ntier turns this into a width; this tier ships no stylesheet and is\nunaffected.\n\n**What is asked of each row is its light DOM, not the row.** A notification\npublishes no property for this, and asking one would make the answer depend\non the row having drawn itself; a `[slot=\"media\"]` child is there from the\nmoment the markup is parsed. The rows themselves come from `items`, which\ndoes need them upgraded, and that is the honest limit rather than a claim\nthis had made the other way: a row that upgrades late is counted on the next\nupdate, which its own `slotchange` asks for.",
139207
+ "description": "Says whether anything in the feed has media, so every item can hold the\ncolumn open whether or not it has one of its own.\n\n**A fact no item can answer for itself**, which is why it is here. An item\nknows about its own media slot and nothing about its neighbors, so a feed\nwhere some rows have an avatar and some do not draws two different left\nedges for its text: measured on a four item feed, the rows without media\nstarted their text 32 pixels to the left of the rows with it. The styled\ntier turns this into a width; this tier ships no stylesheet and is\nunaffected.\n\n**What is asked of each row is its light DOM, not the row.** A notification\npublishes no property for this, and asking one would make the answer depend\non the row having drawn itself; a `[slot=\"media\"]` child is there from the\nmoment the markup is parsed. The rows themselves come from `items`, which\ndoes need them upgraded, and that is the honest limit rather than a claim\nthis had made the other way: a row that upgrades late is counted on the next\nupdate, which `UpgradeController` asks for when its definition arrives.",
138818
139208
  "inheritedFrom": {
138819
139209
  "name": "HelixHeadlessNotifications",
138820
139210
  "module": "src/notifications/root/notifications-root.ts"
@@ -159886,6 +160276,17 @@
159886
160276
  "module": "src/radio/group/radio-group.ts"
159887
160277
  }
159888
160278
  },
160279
+ {
160280
+ "kind": "field",
160281
+ "name": "upgradeWatch",
160282
+ "privacy": "protected",
160283
+ "readonly": true,
160284
+ "default": "new UpgradeController(this, undefined, { subtree: true })",
160285
+ "inheritedFrom": {
160286
+ "name": "HelixHeadlessRadioGroup",
160287
+ "module": "src/radio/group/radio-group.ts"
160288
+ }
160289
+ },
159889
160290
  {
159890
160291
  "kind": "field",
159891
160292
  "name": "handleSelection",
@@ -164863,12 +165264,28 @@
164863
165264
  "declarations": [
164864
165265
  {
164865
165266
  "kind": "class",
164866
- "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`.",
165267
+ "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.",
164867
165268
  "name": "HelixSandboxPreview",
164868
165269
  "cssParts": [
165270
+ {
165271
+ "description": "The buttons in the preview's corner, under `controls`.",
165272
+ "name": "controls"
165273
+ },
165274
+ {
165275
+ "description": "The error the example threw and did not catch, shown over it while the preview is `failed`.",
165276
+ "name": "error"
165277
+ },
164869
165278
  {
164870
165279
  "description": "The iframe.",
164871
165280
  "name": "frame"
165281
+ },
165282
+ {
165283
+ "description": "The button that opens the example in a new tab, under `controls`.",
165284
+ "name": "open"
165285
+ },
165286
+ {
165287
+ "description": "The button that reloads the frame's document, under `controls`.",
165288
+ "name": "reload"
164872
165289
  }
164873
165290
  ],
164874
165291
  "members": [
@@ -164891,6 +165308,17 @@
164891
165308
  "description": "The color mode the frame renders in.\n\n**The frame is a document and a document has its own color mode.** Setting\n`data-color-mode` on this element styles this element, and the contents of\nan iframe inherit nothing from it: measured, a frame under a host carrying\nthe attribute had it unset on its own root. Left alone the frame follows\n`prefers-color-scheme`, which is right for a preview that should look like\nthe reader's own machine, and wrong for one whose tool has a scheme control.\n\nIt matters more than a background: `light-dark()` is compiled to a shim\nkeyed on this attribute, and of the 56 tokens that differ by scheme the\ntheme engine emits 19. The other 37 would stay light in a dark preview,\nincluding every one of the 24 series colors a chart reads.",
164892
165309
  "attribute": "color-mode"
164893
165310
  },
165311
+ {
165312
+ "kind": "field",
165313
+ "name": "controls",
165314
+ "type": {
165315
+ "text": "boolean"
165316
+ },
165317
+ "default": "false",
165318
+ "description": "Whether the preview draws a reload button and a button that opens the\nexample in a new tab, in its corner.",
165319
+ "attribute": "controls",
165320
+ "reflects": true
165321
+ },
164894
165322
  {
164895
165323
  "kind": "field",
164896
165324
  "name": "direction",
@@ -164922,6 +165350,32 @@
164922
165350
  "description": "How the example is placed in the frame.\n\n`padded` insets it and leaves it at the top, which is the resting case and\nwhat an absent value sends. `centered` gives it a measure and centers that\nbox in the frame. `hug` shrinks the example to its own content and centers\nwhat is left, which is the difference that matters for a component whose\nroot is a full-width block. `fullscreen` is the whole frame with no inset.\n\nNot reflected, for `direction`'s reason: the placement is applied by the\ndocument inside the frame, against its own root, so no rule on this side\ncould read it.",
164923
165351
  "attribute": "layout"
164924
165352
  },
165353
+ {
165354
+ "kind": "field",
165355
+ "name": "openLabel",
165356
+ "type": {
165357
+ "text": "string"
165358
+ },
165359
+ "default": "'Open preview in a new tab'",
165360
+ "description": "The name of the button that opens the example in a new tab, under\n`controls`.",
165361
+ "attribute": "open-label",
165362
+ "helix": {
165363
+ "words": true
165364
+ }
165365
+ },
165366
+ {
165367
+ "kind": "field",
165368
+ "name": "reloadLabel",
165369
+ "type": {
165370
+ "text": "string"
165371
+ },
165372
+ "default": "'Reload preview'",
165373
+ "description": "The name of the button that reloads the frame's document, under\n`controls`.",
165374
+ "attribute": "reload-label",
165375
+ "helix": {
165376
+ "words": true
165377
+ }
165378
+ },
164925
165379
  {
164926
165380
  "kind": "field",
164927
165381
  "name": "script",
@@ -164980,6 +165434,35 @@
164980
165434
  "privacy": "private",
164981
165435
  "description": "The source the frame held when it last reported an uncaught error."
164982
165436
  },
165437
+ {
165438
+ "kind": "field",
165439
+ "name": "failure",
165440
+ "type": {
165441
+ "text": "string | undefined"
165442
+ },
165443
+ "privacy": "private",
165444
+ "description": "What the example threw and did not catch, while the preview is `failed`."
165445
+ },
165446
+ {
165447
+ "kind": "method",
165448
+ "name": "fail",
165449
+ "privacy": "private",
165450
+ "return": {
165451
+ "type": {
165452
+ "text": "void"
165453
+ }
165454
+ },
165455
+ "parameters": [
165456
+ {
165457
+ "name": "text",
165458
+ "optional": true,
165459
+ "type": {
165460
+ "text": "string"
165461
+ }
165462
+ }
165463
+ ],
165464
+ "description": "Says the preview failed with `text`, or, with none, that it has not."
165465
+ },
164983
165466
  {
164984
165467
  "kind": "field",
164985
165468
  "name": "sending",
@@ -165044,6 +165527,16 @@
165044
165527
  },
165045
165528
  "description": "Sends once the typing stops, replacing anything already waiting.\n\nA frame is the wrong unit. Keystrokes arrive fifty to a hundred and fifty\nmilliseconds apart, so each one lands in a frame of its own and coalescing\nby frame coalesces nothing, leaving the example rebuilt per character. The\ndelay has to be longer than the gap between keystrokes to catch a burst, and\nshort enough to read as immediate when the typing stops."
165046
165529
  },
165530
+ {
165531
+ "kind": "field",
165532
+ "name": "message",
165533
+ "type": {
165534
+ "text": "PreviewRender"
165535
+ },
165536
+ "privacy": "private",
165537
+ "description": "What the frame is sent: the source, its stylesheet and its settings.",
165538
+ "readonly": true
165539
+ },
165047
165540
  {
165048
165541
  "kind": "method",
165049
165542
  "name": "send",
@@ -165055,6 +165548,19 @@
165055
165548
  },
165056
165549
  "description": "Sends the current source to the frame, once it is listening."
165057
165550
  },
165551
+ {
165552
+ "kind": "method",
165553
+ "name": "open",
165554
+ "return": {
165555
+ "type": {
165556
+ "text": "Window | null"
165557
+ }
165558
+ },
165559
+ "description": "Opens the example in a new tab, and returns the tab's window, or `null`\nwhere the browser refused to open one.\n\n**The tab runs the example as this preview does**: in a frame that fills\nit, with this frame's `sandbox`, loading `src` or the built-in document,\nand sent the example once it loads. The example stays on an opaque origin,\nand the tab's `opener` is cleared, so it cannot reach this page. The tab\nshows the example as it was when it opened, and edits after that do not\nreach it. A short inline script in the tab sends the example, so on a page\nwhose Content Security Policy refuses inline scripts the tab opens empty,\nas the built-in document does there.",
165560
+ "type": {
165561
+ "text": "open() => Window | null"
165562
+ }
165563
+ },
165058
165564
  {
165059
165565
  "kind": "method",
165060
165566
  "name": "reload",
@@ -165079,6 +165585,17 @@
165079
165585
  },
165080
165586
  "description": "A new document is on its way, so nothing is sent until it listens, and\nnothing has failed in it. The built-in document loads too."
165081
165587
  },
165588
+ {
165589
+ "kind": "method",
165590
+ "name": "renderControls",
165591
+ "privacy": "private",
165592
+ "return": {
165593
+ "type": {
165594
+ "text": "TemplateResult | typeof nothing"
165595
+ }
165596
+ },
165597
+ "description": "The reload and open buttons, under `controls`."
165598
+ },
165082
165599
  {
165083
165600
  "kind": "field",
165084
165601
  "name": "tier",
@@ -165446,6 +165963,15 @@
165446
165963
  "description": "The color mode the frame renders in.\n\n**The frame is a document and a document has its own color mode.** Setting\n`data-color-mode` on this element styles this element, and the contents of\nan iframe inherit nothing from it: measured, a frame under a host carrying\nthe attribute had it unset on its own root. Left alone the frame follows\n`prefers-color-scheme`, which is right for a preview that should look like\nthe reader's own machine, and wrong for one whose tool has a scheme control.\n\nIt matters more than a background: `light-dark()` is compiled to a shim\nkeyed on this attribute, and of the 56 tokens that differ by scheme the\ntheme engine emits 19. The other 37 would stay light in a dark preview,\nincluding every one of the 24 series colors a chart reads.",
165447
165964
  "fieldName": "colorMode"
165448
165965
  },
165966
+ {
165967
+ "name": "controls",
165968
+ "type": {
165969
+ "text": "boolean"
165970
+ },
165971
+ "default": "false",
165972
+ "description": "Whether the preview draws a reload button and a button that opens the\nexample in a new tab, in its corner.",
165973
+ "fieldName": "controls"
165974
+ },
165449
165975
  {
165450
165976
  "name": "direction",
165451
165977
  "type": {
@@ -165471,6 +165997,24 @@
165471
165997
  "description": "How the example is placed in the frame.\n\n`padded` insets it and leaves it at the top, which is the resting case and\nwhat an absent value sends. `centered` gives it a measure and centers that\nbox in the frame. `hug` shrinks the example to its own content and centers\nwhat is left, which is the difference that matters for a component whose\nroot is a full-width block. `fullscreen` is the whole frame with no inset.\n\nNot reflected, for `direction`'s reason: the placement is applied by the\ndocument inside the frame, against its own root, so no rule on this side\ncould read it.",
165472
165998
  "fieldName": "layout"
165473
165999
  },
166000
+ {
166001
+ "name": "open-label",
166002
+ "type": {
166003
+ "text": "string"
166004
+ },
166005
+ "default": "'Open preview in a new tab'",
166006
+ "description": "The name of the button that opens the example in a new tab, under\n`controls`.",
166007
+ "fieldName": "openLabel"
166008
+ },
166009
+ {
166010
+ "name": "reload-label",
166011
+ "type": {
166012
+ "text": "string"
166013
+ },
166014
+ "default": "'Reload preview'",
166015
+ "description": "The name of the button that reloads the frame's document, under\n`controls`.",
166016
+ "fieldName": "reloadLabel"
166017
+ },
165474
166018
  {
165475
166019
  "name": "script",
165476
166020
  "type": {
@@ -165594,7 +166138,7 @@
165594
166138
  "declarations": [
165595
166139
  {
165596
166140
  "kind": "class",
165597
- "description": "A source pane dispatches `helix-before-edit`, which bubbles, and the sandbox\npasses the value to the preview slotted into it. The source pane and the\npreview do not reference each other, so you can replace either one or use it\nalone.\n\nThe event carries the pane's `name`, so one sandbox can hold several panes.\n`html` sets the preview's markup, `css` sets its stylesheet, and `js` sets\na script that runs as a module after the markup. The sandbox ignores a pane\nwith any other name, so that pane can show content without changing the\npreview.\n\n**The dividers are two nested `helix-splitter` elements**, which handle the\npointer, the keyboard, and the corner. The inner splitter holds the panes and\nthe outer one holds the panel, so the panel spans the full width.\n\nOn a focused divider, the arrow keys move it, and `Home` and `End` move it\nto its ends. `Enter` on the panes divider shuts the lead pane, and pressed\nagain it opens the pane where it was. `Enter` on the panel divider shuts the\npanel to `panel-collapsed-size`, and pressed again it opens the panel to its\nlast height.",
166141
+ "description": "A source pane dispatches `helix-before-edit`, which bubbles, and the sandbox\npasses the value to the preview slotted into it. The source pane and the\npreview do not reference each other, so you can replace either one or use it\nalone.\n\nThe event carries the pane's `name`, so one sandbox can hold several panes.\n`html` sets the preview's markup, `css` sets its stylesheet, and `js` sets\na script that runs as a module after the markup. The sandbox ignores a pane\nwith any other name, so that pane can show content without changing the\npreview.\n\n**The dividers are two nested `helix-splitter` elements**, which handle the\npointer, the keyboard, and the corner. The inner splitter holds the panes and\nthe outer one holds the panel, so the panel spans the full width.\n\n**Several source panes are files**, one shown at a time under a row of\ntabs, each named by the pane's `label` or, without one, its `name`. `file`\nholds the `name` of the pane shown. The tabs are a tab list: the arrow keys\nmove between them and show each pane, and `Home` and `End` go to the first\nand the last. Choosing one sends `helix-before-change` with the pane's\n`name`, which you can cancel, and `change` once `file` holds it. The panes\nnot shown carry `hidden`. One pane draws no tabs.\n\n**Any editor can be the source pane**: an element in the `source` slot with\na `name` that dispatches `helix-before-edit` with its text, which bubbles.\nA wrapper around CodeMirror or Monaco sends one on each change and is a pane\nlike `helix-sandbox-source`, and the sandbox reads its `value` to seed the\npreview. Dispatch `helix-caret` from it too for the status bar's position.\n\nOn a focused divider, the arrow keys move it, and `Home` and `End` move it\nto its ends. `Enter` on the panes divider shuts the lead pane, and pressed\nagain it opens the pane where it was. `Enter` on the panel divider shuts the\npanel to `panel-collapsed-size`, and pressed again it opens the panel to its\nlast height.",
165598
166142
  "name": "HelixSandbox",
165599
166143
  "cssProperties": [
165600
166144
  {
@@ -165619,6 +166163,14 @@
165619
166163
  "description": "The handle where the two dividers cross.",
165620
166164
  "name": "corner"
165621
166165
  },
166166
+ {
166167
+ "description": "One file tab, `aria-selected` while its pane is shown.",
166168
+ "name": "file"
166169
+ },
166170
+ {
166171
+ "description": "The file tabs over the source panes, where there are several.",
166172
+ "name": "files"
166173
+ },
165622
166174
  {
165623
166175
  "description": "Either pane.",
165624
166176
  "name": "pane"
@@ -165702,6 +166254,28 @@
165702
166254
  "text": "number"
165703
166255
  }
165704
166256
  },
166257
+ {
166258
+ "kind": "field",
166259
+ "name": "file",
166260
+ "type": {
166261
+ "text": "string | undefined"
166262
+ },
166263
+ "description": "The `name` of the source pane shown, where the sandbox holds several.\n\nUnset, or a name no pane has, shows the first.",
166264
+ "attribute": "file"
166265
+ },
166266
+ {
166267
+ "kind": "field",
166268
+ "name": "filesLabel",
166269
+ "type": {
166270
+ "text": "string"
166271
+ },
166272
+ "default": "'Files'",
166273
+ "description": "The name of the file tabs, read by screen readers.",
166274
+ "attribute": "files-label",
166275
+ "helix": {
166276
+ "words": true
166277
+ }
166278
+ },
165705
166279
  {
165706
166280
  "kind": "field",
165707
166281
  "name": "lead",
@@ -165787,6 +166361,93 @@
165787
166361
  "default": "false",
165788
166362
  "description": "Whether anything is in the panel region.\n\nThe divider above the panel is only meaningful when there is a panel to\nsize, and there is no way to ask in CSS: `:host(:has([slot=\"panel\"]))` is\ninvalid, and the server has no children to look at. `slotchange` is the\nplatform answering on the client, which is where a divider is any use."
165789
166363
  },
166364
+ {
166365
+ "kind": "field",
166366
+ "name": "files",
166367
+ "type": {
166368
+ "text": "Element[]"
166369
+ },
166370
+ "privacy": "private",
166371
+ "default": "[]",
166372
+ "description": "The source panes where there are several, each a file with a tab."
166373
+ },
166374
+ {
166375
+ "kind": "field",
166376
+ "name": "hid",
166377
+ "privacy": "private",
166378
+ "readonly": true,
166379
+ "default": "new Set<Element>()",
166380
+ "description": "The panes this element wrote `hidden` on, to take it off again."
166381
+ },
166382
+ {
166383
+ "kind": "field",
166384
+ "name": "shownFile",
166385
+ "type": {
166386
+ "text": "Element | undefined"
166387
+ },
166388
+ "privacy": "private",
166389
+ "description": "The pane shown among the files.",
166390
+ "readonly": true
166391
+ },
166392
+ {
166393
+ "kind": "method",
166394
+ "name": "readFiles",
166395
+ "privacy": "private",
166396
+ "return": {
166397
+ "type": {
166398
+ "text": "void"
166399
+ }
166400
+ },
166401
+ "description": "Notes the source panes, which are files where there are several."
166402
+ },
166403
+ {
166404
+ "kind": "method",
166405
+ "name": "chooseFile",
166406
+ "privacy": "private",
166407
+ "return": {
166408
+ "type": {
166409
+ "text": "void"
166410
+ }
166411
+ },
166412
+ "parameters": [
166413
+ {
166414
+ "name": "pane",
166415
+ "type": {
166416
+ "text": "Element"
166417
+ }
166418
+ }
166419
+ ],
166420
+ "description": "Shows the pane a file tab names, once nobody refused."
166421
+ },
166422
+ {
166423
+ "kind": "field",
166424
+ "name": "handleFileKey",
166425
+ "privacy": "private",
166426
+ "readonly": true,
166427
+ "description": "Arrow keys, `Home` and `End` on the file tabs, which move to a tab and\nshow its pane, as a tab list that follows focus does. Left and Right swap\non a right-to-left page."
166428
+ },
166429
+ {
166430
+ "kind": "method",
166431
+ "name": "renderFiles",
166432
+ "privacy": "private",
166433
+ "return": {
166434
+ "type": {
166435
+ "text": "TemplateResult | typeof nothing"
166436
+ }
166437
+ },
166438
+ "description": "The row of file tabs, where there are several source panes."
166439
+ },
166440
+ {
166441
+ "kind": "method",
166442
+ "name": "showFile",
166443
+ "privacy": "private",
166444
+ "return": {
166445
+ "type": {
166446
+ "text": "void"
166447
+ }
166448
+ },
166449
+ "description": "Hides the files not shown, and shows any this element hid that is now."
166450
+ },
165790
166451
  {
165791
166452
  "kind": "field",
165792
166453
  "name": "bodyHeight",
@@ -166186,6 +166847,31 @@
166186
166847
  "readonly": true,
166187
166848
  "description": "Notes whether there is a panel, which is what its dividers depend on.\n\nAsked of the light DOM rather than of the slot. `slotchange` is the event\nthat says it changed, and it is listened for, but it is not the only way\nto know: a sandbox whose panel was in the markup all along has nothing to\nchange, and an environment that does not dispatch the event at all leaves\nthe dividers permanently absent. What is slotted into a named slot is a\nquestion the host can answer directly."
166188
166849
  },
166850
+ {
166851
+ "kind": "method",
166852
+ "name": "renderPane",
166853
+ "privacy": "private",
166854
+ "return": {
166855
+ "type": {
166856
+ "text": "TemplateResult"
166857
+ }
166858
+ },
166859
+ "parameters": [
166860
+ {
166861
+ "name": "name",
166862
+ "type": {
166863
+ "text": "'preview' | 'source'"
166864
+ }
166865
+ },
166866
+ {
166867
+ "name": "at",
166868
+ "type": {
166869
+ "text": "'end' | 'start'"
166870
+ }
166871
+ }
166872
+ ],
166873
+ "description": "One pane and the slot it shows. The source pane holds the file tabs, where\nthere are several, and is then the panel they control."
166874
+ },
166189
166875
  {
166190
166876
  "kind": "field",
166191
166877
  "name": "tier",
@@ -166527,6 +167213,22 @@
166527
167213
  }
166528
167214
  ],
166529
167215
  "events": [
167216
+ {
167217
+ "type": {
167218
+ "text": "Event"
167219
+ },
167220
+ "description": "A file tab showed its pane, whose `name` `file` now holds.",
167221
+ "name": "change",
167222
+ "reactProp": "onchange"
167223
+ },
167224
+ {
167225
+ "type": {
167226
+ "text": "HelixBeforeChangeEvent"
167227
+ },
167228
+ "description": "Fired before a file tab shows its pane, with the pane's `name`. Cancelable: cancel it to keep the pane shown.",
167229
+ "name": "helix-before-change",
167230
+ "reactProp": "onhelix-before-change"
167231
+ },
166530
167232
  {
166531
167233
  "type": {
166532
167234
  "text": "HelixBeforeEditEvent"
@@ -166622,6 +167324,23 @@
166622
167324
  "description": "Where a reset puts the divider between the panes.\n\nSeparate from `split` for the reason `Splitter` keeps `default-position`\nseparate from `position`. Resetting to whatever `split` held on the first\nrender is the declared arrangement only where nobody owns the property: the\nworkbench does, and restores it from the address bar and from storage, so the\nfirst value it holds is the reader's last session and a reset puts the\nsandbox back to the size it already was.\n\nDeclared rather than captured, so it is a number a consumer states and can\nchange, and it needs no first frame to be read on.",
166623
167325
  "fieldName": "defaultSplit"
166624
167326
  },
167327
+ {
167328
+ "name": "file",
167329
+ "type": {
167330
+ "text": "string | undefined"
167331
+ },
167332
+ "description": "The `name` of the source pane shown, where the sandbox holds several.\n\nUnset, or a name no pane has, shows the first.",
167333
+ "fieldName": "file"
167334
+ },
167335
+ {
167336
+ "name": "files-label",
167337
+ "type": {
167338
+ "text": "string"
167339
+ },
167340
+ "default": "'Files'",
167341
+ "description": "The name of the file tabs, read by screen readers.",
167342
+ "fieldName": "filesLabel"
167343
+ },
166625
167344
  {
166626
167345
  "name": "lead",
166627
167346
  "type": {
@@ -166725,6 +167444,10 @@
166725
167444
  "min": 420,
166726
167445
  "slug": "events"
166727
167446
  },
167447
+ {
167448
+ "description": "Several source panes as files under a row of tabs, and a preview with reload and open buttons.",
167449
+ "slug": "files"
167450
+ },
166728
167451
  {
166729
167452
  "description": "A source pane colored by a highlighter you bring.",
166730
167453
  "slug": "highlighted-source"
@@ -166894,6 +167617,16 @@
166894
167617
  "words": true
166895
167618
  }
166896
167619
  },
167620
+ {
167621
+ "kind": "field",
167622
+ "name": "label",
167623
+ "type": {
167624
+ "text": "string"
167625
+ },
167626
+ "default": "''",
167627
+ "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.",
167628
+ "attribute": "label"
167629
+ },
166897
167630
  {
166898
167631
  "kind": "field",
166899
167632
  "name": "name",
@@ -167402,6 +168135,15 @@
167402
168135
  "description": "The field's description, read by screen readers while Tab indents.",
167403
168136
  "fieldName": "keysDescription"
167404
168137
  },
168138
+ {
168139
+ "name": "label",
168140
+ "type": {
168141
+ "text": "string"
168142
+ },
168143
+ "default": "''",
168144
+ "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.",
168145
+ "fieldName": "label"
168146
+ },
167405
168147
  {
167406
168148
  "name": "name",
167407
168149
  "type": {
@@ -172977,6 +173719,18 @@
172977
173719
  "module": "src/select/root/select-root.ts"
172978
173720
  }
172979
173721
  },
173722
+ {
173723
+ "kind": "field",
173724
+ "name": "upgradeWatch",
173725
+ "privacy": "protected",
173726
+ "readonly": true,
173727
+ "default": "new UpgradeController( this, () => { this.listbox?.requestUpdate() this.requestUpdate() }, { subtree: true }, )",
173728
+ "description": "Hears an option upgrade after it arrived. The options are this element's\nchildren, which the listbox reaches through a slot and does not watch, so\nboth read them again: the listbox to select the one `value` names, and this\nelement for the words on its trigger.",
173729
+ "inheritedFrom": {
173730
+ "name": "HelixHeadlessSelect",
173731
+ "module": "src/select/root/select-root.ts"
173732
+ }
173733
+ },
172980
173734
  {
172981
173735
  "kind": "field",
172982
173736
  "name": "panel",
@@ -187292,7 +188046,7 @@
187292
188046
  "text": "number"
187293
188047
  },
187294
188048
  "privacy": "private",
187295
- "description": "The index of the stage the reader is on, or `-1`.",
188049
+ "description": "The index of the stage the reader is on, or `-1`.\n\nRead from `active` once anything has set it, because a move writes\n`active` at once and each step's `current` only on the next update: two\ncalls to `next()` in one task then move two stages.",
187296
188050
  "readonly": true,
187297
188051
  "inheritedFrom": {
187298
188052
  "name": "HelixHeadlessSteps",
@@ -202411,6 +203165,18 @@
202411
203165
  "module": "src/tag/group/tag-group.ts"
202412
203166
  }
202413
203167
  },
203168
+ {
203169
+ "kind": "field",
203170
+ "name": "upgradeWatch",
203171
+ "privacy": "protected",
203172
+ "readonly": true,
203173
+ "default": "new UpgradeController(this, this.handleSlotchange)",
203174
+ "description": "Reads a tag again once it upgrades, so it takes its role and its place.",
203175
+ "inheritedFrom": {
203176
+ "name": "HelixHeadlessTagGroup",
203177
+ "module": "src/tag/group/tag-group.ts"
203178
+ }
203179
+ },
202414
203180
  {
202415
203181
  "kind": "field",
202416
203182
  "name": "handleFocusin",
@@ -220112,6 +220878,17 @@
220112
220878
  "module": "src/toggle/group/toggle-group.ts"
220113
220879
  }
220114
220880
  },
220881
+ {
220882
+ "kind": "field",
220883
+ "name": "upgradeWatch",
220884
+ "privacy": "protected",
220885
+ "readonly": true,
220886
+ "default": "new UpgradeController(this, () => this.handleItems(), { subtree: true, })",
220887
+ "inheritedFrom": {
220888
+ "name": "HelixHeadlessToggleGroup",
220889
+ "module": "src/toggle/group/toggle-group.ts"
220890
+ }
220891
+ },
220115
220892
  {
220116
220893
  "kind": "field",
220117
220894
  "name": "handleSelection",
@@ -229615,6 +230392,17 @@
229615
230392
  "module": "src/tree/root/tree-root.ts"
229616
230393
  }
229617
230394
  },
230395
+ {
230396
+ "kind": "field",
230397
+ "name": "upgradeWatch",
230398
+ "privacy": "protected",
230399
+ "readonly": true,
230400
+ "default": "new UpgradeController(this, () => this.syncItems(), { subtree: true, })",
230401
+ "inheritedFrom": {
230402
+ "name": "HelixHeadlessTree",
230403
+ "module": "src/tree/root/tree-root.ts"
230404
+ }
230405
+ },
229618
230406
  {
229619
230407
  "kind": "field",
229620
230408
  "name": "focused",
@@ -240840,6 +241628,6 @@
240840
241628
  ],
240841
241629
  "helix": {
240842
241630
  "package": "@fusion.dev/helix",
240843
- "version": "0.162.0"
241631
+ "version": "0.163.0"
240844
241632
  }
240845
241633
  }