@fusion.dev/helix-headless 0.0.0-dev → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +4513 -4483
- package/dist/accordion/item/accordion-item.d.ts +13 -15
- package/dist/accordion/item/accordion-item.js +15 -17
- package/dist/announcement/root/announcement-root.d.ts +7 -25
- package/dist/announcement/root/announcement-root.js +7 -20
- package/dist/app-header/root/app-header-root.d.ts +10 -17
- package/dist/app-header/root/app-header-root.js +9 -18
- package/dist/avatar/group/avatar-group.d.ts +10 -19
- package/dist/avatar/group/avatar-group.js +12 -17
- package/dist/avatar/root/avatar-root.d.ts +8 -8
- package/dist/avatar/root/avatar-root.js +19 -20
- package/dist/badge/root/badge-root.d.ts +6 -6
- package/dist/badge/root/badge-root.js +13 -13
- package/dist/bar-chart/root/bar-chart-root.d.ts +21 -29
- package/dist/bar-chart/root/bar-chart-root.js +42 -57
- package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +12 -18
- package/dist/breadcrumbs/breadcrumb/breadcrumb.js +13 -16
- package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +9 -28
- package/dist/breadcrumbs/root/breadcrumbs-root.js +9 -28
- package/dist/button/root/button-root.d.ts +84 -94
- package/dist/button/root/button-root.js +82 -92
- package/dist/callout/root/callout-root.d.ts +4 -5
- package/dist/carousel/root/carousel-root.d.ts +59 -71
- package/dist/carousel/root/carousel-root.js +73 -101
- package/dist/chat/composer/chat-composer.d.ts +29 -33
- package/dist/chat/composer/chat-composer.js +40 -44
- package/dist/chat/message/chat-message.d.ts +25 -25
- package/dist/chat/message/chat-message.js +26 -26
- package/dist/chat/root/chat-root.d.ts +28 -41
- package/dist/chat/root/chat-root.js +27 -40
- package/dist/checkbox/root/checkbox-root.d.ts +10 -12
- package/dist/checkbox/root/checkbox-root.js +29 -35
- package/dist/checkbox-group/root/checkbox-group-root.d.ts +32 -45
- package/dist/checkbox-group/root/checkbox-group-root.js +53 -79
- package/dist/code-block/root/code-block-root.d.ts +3 -4
- package/dist/code-block/root/code-block-root.js +8 -12
- package/dist/color-input/root/color-input-root.d.ts +36 -37
- package/dist/color-input/root/color-input-root.js +29 -34
- package/dist/color-picker/color.d.ts +7 -8
- package/dist/color-picker/color.js +7 -8
- package/dist/color-picker/root/color-picker-root.d.ts +55 -57
- package/dist/color-picker/root/color-picker-root.js +60 -64
- package/dist/combobox/root/combobox-root.d.ts +53 -58
- package/dist/combobox/root/combobox-root.js +85 -94
- package/dist/command/root/command-root.d.ts +8 -8
- package/dist/command/root/command-root.js +29 -33
- package/dist/copy-button/root/copy-button-root.d.ts +21 -24
- package/dist/copy-button/root/copy-button-root.js +25 -35
- package/dist/data-table/root/data-table-root.d.ts +77 -76
- package/dist/data-table/root/data-table-root.js +95 -84
- package/dist/data-table/root/order.d.ts +2 -2
- package/dist/data-table/root/order.js +1 -3
- package/dist/date-input/root/date-input-root.d.ts +88 -93
- package/dist/date-input/root/date-input-root.js +147 -158
- package/dist/date-picker/root/date-picker-root.d.ts +75 -83
- package/dist/date-picker/root/date-picker-root.js +120 -143
- package/dist/dialog/root/dialog-root.d.ts +41 -24
- package/dist/dialog/root/dialog-root.js +47 -24
- package/dist/divider/root/divider-root.d.ts +5 -6
- package/dist/divider/root/divider-root.js +4 -5
- package/dist/donut-chart/root/donut-chart-root.d.ts +22 -25
- package/dist/donut-chart/root/donut-chart-root.js +37 -51
- package/dist/drawer/root/drawer-root.d.ts +24 -29
- package/dist/drawer/root/drawer-root.js +15 -22
- package/dist/drilldown/item/drilldown-item.d.ts +14 -14
- package/dist/drilldown/item/drilldown-item.js +24 -26
- package/dist/drilldown/root/drilldown-root.d.ts +8 -10
- package/dist/drilldown/root/drilldown-root.js +6 -7
- package/dist/element-events.generated.js +1 -1
- package/dist/file-input/root/file-input-root.d.ts +20 -24
- package/dist/file-input/root/file-input-root.js +42 -57
- package/dist/format-date/root/format-date-root.js +1 -1
- package/dist/heatmap/root/buckets.d.ts +8 -8
- package/dist/heatmap/root/buckets.js +8 -8
- package/dist/heatmap/root/heatmap-root.d.ts +57 -63
- package/dist/heatmap/root/heatmap-root.js +72 -83
- package/dist/icon/root/icon-root.d.ts +4 -4
- package/dist/icon/root/icon-root.js +9 -9
- package/dist/icon-button/root/icon-button-root.d.ts +4 -6
- package/dist/icon-button/root/icon-button-root.js +4 -6
- package/dist/image/root/image-root.d.ts +49 -59
- package/dist/image/root/image-root.js +55 -65
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -5
- package/dist/input/root/input-root.d.ts +61 -85
- package/dist/input/root/input-root.js +79 -106
- package/dist/kbd/root/kbd-root.d.ts +8 -7
- package/dist/kbd/root/kbd-root.js +71 -11
- package/dist/legend/root/legend-root.d.ts +1 -1
- package/dist/legend/root/legend-root.js +4 -5
- package/dist/line-chart/root/line-chart-root.d.ts +26 -30
- package/dist/line-chart/root/line-chart-root.js +10 -10
- package/dist/list/item/list-item.d.ts +14 -18
- package/dist/list/item/list-item.js +18 -22
- package/dist/list/root/list-root.d.ts +4 -4
- package/dist/list/root/list-root.js +3 -3
- package/dist/listbox/root/listbox-root.d.ts +31 -58
- package/dist/listbox/root/listbox-root.js +66 -109
- package/dist/megamenu/root/megamenu-root.d.ts +34 -35
- package/dist/megamenu/root/megamenu-root.js +53 -58
- package/dist/menu/item/menu-item.d.ts +39 -53
- package/dist/menu/item/menu-item.js +50 -64
- package/dist/menu/root/menu-root.d.ts +30 -40
- package/dist/menu/root/menu-root.js +49 -82
- package/dist/meter/root/meter-root.d.ts +49 -53
- package/dist/meter/root/meter-root.js +22 -27
- package/dist/navigation/root/navigation-root.js +11 -19
- package/dist/notifications/notification/notification.d.ts +16 -22
- package/dist/notifications/notification/notification.js +21 -27
- package/dist/notifications/root/notifications-root.d.ts +31 -39
- package/dist/notifications/root/notifications-root.js +41 -52
- package/dist/number-input/root/number-input-root.d.ts +31 -33
- package/dist/number-input/root/number-input-root.js +37 -39
- package/dist/option/root/option-root.d.ts +73 -74
- package/dist/option/root/option-root.js +62 -64
- package/dist/outline/root/outline-root.d.ts +38 -44
- package/dist/outline/root/outline-root.js +66 -82
- package/dist/pagination/root/pagination-root.d.ts +87 -92
- package/dist/pagination/root/pagination-root.js +116 -123
- package/dist/pagination/size/pagination-size.d.ts +31 -50
- package/dist/pagination/size/pagination-size.js +35 -55
- package/dist/pagination/summary/pagination-summary.d.ts +12 -12
- package/dist/pagination/summary/pagination-summary.js +18 -18
- package/dist/pin-input/root/pin-input-root.d.ts +53 -70
- package/dist/pin-input/root/pin-input-root.js +74 -94
- package/dist/popover/root/popover-root.d.ts +15 -20
- package/dist/popover/root/popover-root.js +19 -36
- package/dist/progress/root/progress-root.d.ts +12 -14
- package/dist/progress/root/progress-root.js +22 -25
- package/dist/qr-code/root/qr-code-root.d.ts +11 -11
- package/dist/qr-code/root/qr-code-root.js +12 -14
- package/dist/radio/group/radio-group.js +19 -26
- package/dist/radio/root/radio-root.d.ts +12 -13
- package/dist/radio/root/radio-root.js +12 -13
- package/dist/rating/root/rating-root.d.ts +25 -30
- package/dist/rating/root/rating-root.js +43 -50
- package/dist/scroll-area/root/scroll-area-root.d.ts +11 -14
- package/dist/scroll-area/root/scroll-area-root.js +39 -33
- package/dist/select/root/select-root.d.ts +7 -12
- package/dist/select/root/select-root.js +40 -55
- package/dist/slider/root/slider-root.d.ts +53 -60
- package/dist/slider/root/slider-root.js +74 -85
- package/dist/sparkline/root/sparkline-root.d.ts +43 -47
- package/dist/sparkline/root/sparkline-root.js +23 -32
- package/dist/speed-dial/item/speed-dial-item.d.ts +6 -6
- package/dist/speed-dial/item/speed-dial-item.js +9 -9
- package/dist/speed-dial/root/speed-dial-root.d.ts +21 -25
- package/dist/speed-dial/root/speed-dial-root.js +32 -40
- package/dist/splitter/root/splitter-root.d.ts +98 -111
- package/dist/splitter/root/splitter-root.js +96 -123
- package/dist/stat/root/stat-root.d.ts +2 -7
- package/dist/stat/root/stat-root.js +0 -5
- package/dist/steps/step/step.d.ts +19 -24
- package/dist/steps/step/step.js +27 -32
- package/dist/switch/root/switch-root.js +2 -2
- package/dist/table/column/table-column.d.ts +54 -60
- package/dist/table/column/table-column.js +95 -68
- package/dist/table/root/table-root.d.ts +5 -6
- package/dist/table/root/table-root.js +7 -10
- package/dist/tabs/panel/tab-panel.d.ts +21 -25
- package/dist/tabs/panel/tab-panel.js +25 -29
- package/dist/tabs/root/tabs-root.d.ts +25 -34
- package/dist/tabs/root/tabs-root.js +22 -28
- package/dist/tabs/tab/tab.d.ts +12 -12
- package/dist/tabs/tab/tab.js +19 -20
- package/dist/textarea/root/textarea-root.d.ts +36 -36
- package/dist/textarea/root/textarea-root.js +43 -47
- package/dist/time-input/root/time-input-root.d.ts +58 -68
- package/dist/time-input/root/time-input-root.js +62 -77
- package/dist/time-picker/root/time-picker-root.d.ts +73 -79
- package/dist/time-picker/root/time-picker-root.js +72 -84
- package/dist/timeline/item/timeline-item.d.ts +8 -11
- package/dist/timeline/item/timeline-item.js +8 -11
- package/dist/timeline/root/timeline-root.d.ts +5 -7
- package/dist/timeline/root/timeline-root.js +5 -7
- package/dist/toast/item/toast-item.d.ts +9 -27
- package/dist/toast/item/toast-item.js +19 -41
- package/dist/toast/root/toast-root.d.ts +10 -14
- package/dist/toast/root/toast-root.js +4 -5
- package/dist/toggle/group/toggle-group.d.ts +6 -15
- package/dist/toggle/group/toggle-group.js +21 -36
- package/dist/toggle/root/toggle-root.d.ts +26 -27
- package/dist/toggle/root/toggle-root.js +30 -31
- package/dist/toolbar/root/toolbar-root.d.ts +7 -10
- package/dist/toolbar/root/toolbar-root.js +10 -14
- package/dist/tooltip/root/tooltip-root.d.ts +52 -59
- package/dist/tooltip/root/tooltip-root.js +98 -93
- package/dist/tour/root/tour-root.d.ts +19 -23
- package/dist/tour/root/tour-root.js +31 -41
- package/dist/tour/stop/tour-stop.d.ts +14 -15
- package/dist/tour/stop/tour-stop.js +31 -34
- package/dist/tree/item/tree-item.d.ts +30 -35
- package/dist/tree/item/tree-item.js +43 -55
- package/dist/tree/root/tree-root.d.ts +7 -10
- package/dist/tree/root/tree-root.js +33 -42
- package/dist/trend/root/trend-root.d.ts +3 -5
- package/dist/trend/root/trend-root.js +5 -9
- package/dist/video/root/video-root.d.ts +100 -124
- package/dist/video/root/video-root.js +142 -176
- package/dist/video-playlist/item/video-playlist-item.d.ts +16 -16
- package/dist/video-playlist/item/video-playlist-item.js +24 -24
- package/dist/video-playlist/menu/video-playlist-menu.d.ts +5 -8
- package/dist/video-playlist/menu/video-playlist-menu.js +20 -29
- package/dist/video-playlist/root/video-playlist-root.d.ts +16 -11
- package/dist/video-playlist/root/video-playlist-root.js +21 -25
- package/dist/virtual-list/root/virtual-list-root.d.ts +8 -12
- package/dist/virtual-list/root/virtual-list-root.js +11 -16
- package/jsx.d.ts +9797 -12561
- package/package.json +6 -6
- package/vue.d.ts +2684 -3228
|
@@ -50,15 +50,27 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
50
50
|
constructor() {
|
|
51
51
|
super(...arguments);
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* Read it, or set it to seed a draft.
|
|
53
|
+
* Whether the composer refuses input, while a turn is in flight say.
|
|
56
54
|
*/
|
|
57
|
-
this.
|
|
55
|
+
this.disabled = false;
|
|
56
|
+
/**
|
|
57
|
+
* Accessible name for the field.
|
|
58
|
+
*/
|
|
59
|
+
this.label = 'Message';
|
|
58
60
|
/**
|
|
59
61
|
* Shown in an empty field.
|
|
60
62
|
*/
|
|
61
63
|
this.placeholder = '';
|
|
64
|
+
/**
|
|
65
|
+
* How many rows the field opens at.
|
|
66
|
+
*
|
|
67
|
+
* It grows from there.
|
|
68
|
+
*/
|
|
69
|
+
this.rows = 1;
|
|
70
|
+
/**
|
|
71
|
+
* Label for the control that sends.
|
|
72
|
+
*/
|
|
73
|
+
this.sendLabel = 'Send';
|
|
62
74
|
/**
|
|
63
75
|
* What sends: pressing Enter, or only the control.
|
|
64
76
|
*
|
|
@@ -68,23 +80,11 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
68
80
|
*/
|
|
69
81
|
this.submitOn = 'enter';
|
|
70
82
|
/**
|
|
71
|
-
*
|
|
72
|
-
*/
|
|
73
|
-
this.disabled = false;
|
|
74
|
-
/**
|
|
75
|
-
* Accessible name for the field.
|
|
76
|
-
*/
|
|
77
|
-
this.label = 'Message';
|
|
78
|
-
/**
|
|
79
|
-
* Label for the control that sends.
|
|
80
|
-
*/
|
|
81
|
-
this.sendLabel = 'Send';
|
|
82
|
-
/**
|
|
83
|
-
* How many rows the field opens at.
|
|
83
|
+
* What the reader has written.
|
|
84
84
|
*
|
|
85
|
-
*
|
|
85
|
+
* Read it, or set it to seed a draft.
|
|
86
86
|
*/
|
|
87
|
-
this.
|
|
87
|
+
this.value = '';
|
|
88
88
|
this.draft = '';
|
|
89
89
|
/**
|
|
90
90
|
* @internal Read by the transcript to find the composer among its children.
|
|
@@ -98,7 +98,7 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
98
98
|
* whatever `<helix-chat>` it is slotted into, and neither element declares an
|
|
99
99
|
* `input`: a consumer binding one on either received an undeclared event whose
|
|
100
100
|
* target was a control they cannot reach. What a composer offers is
|
|
101
|
-
* `helix-send`, once, when the reader is done.
|
|
101
|
+
* `helix-send`, once, when the reader is done.
|
|
102
102
|
*/
|
|
103
103
|
this.handleInput = (event) => {
|
|
104
104
|
event.stopPropagation();
|
|
@@ -182,13 +182,11 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
182
182
|
*
|
|
183
183
|
* **A glyph with the label as its accessible name, rather than the label as
|
|
184
184
|
* text.** The word "Send" beside a field is the widest thing in the row and
|
|
185
|
-
* says nothing a return key does not
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* `send-label` is unchanged and is now the accessible name rather than the
|
|
191
|
-
* visible one, so a screen reader hears the same word it always did.
|
|
185
|
+
* says nothing a return key does not. The return glyph is the mark because
|
|
186
|
+
* Enter is what actually sends, which `submit-on` says out loud: the control
|
|
187
|
+
* and the key are one affordance and should look like it. `send-label` is the
|
|
188
|
+
* accessible name rather than a visible one, so a screen reader still hears
|
|
189
|
+
* the word.
|
|
192
190
|
*/
|
|
193
191
|
renderSend() {
|
|
194
192
|
return html `<button
|
|
@@ -211,12 +209,10 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
211
209
|
/**
|
|
212
210
|
* The field, and a row of tools under it.
|
|
213
211
|
*
|
|
214
|
-
* **
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* into. Under it, the field spans the whole composer at every width and the
|
|
219
|
-
* tools have a line of their own to grow along.
|
|
212
|
+
* **The tools take a line of their own rather than sharing the field's.** On
|
|
213
|
+
* one line every tool a consumer adds takes width away from the thing being
|
|
214
|
+
* typed into; under it, the field spans the whole composer at every width and
|
|
215
|
+
* the tools have room to grow along.
|
|
220
216
|
*
|
|
221
217
|
* Send is at the trailing end of that line rather than in the field, which is
|
|
222
218
|
* the same corner and costs no overlay: a control positioned inside a
|
|
@@ -243,15 +239,6 @@ let HelixHeadlessChatComposer = class HelixHeadlessChatComposer extends HelixEle
|
|
|
243
239
|
</div>`;
|
|
244
240
|
}
|
|
245
241
|
};
|
|
246
|
-
__decorate([
|
|
247
|
-
property()
|
|
248
|
-
], HelixHeadlessChatComposer.prototype, "value", void 0);
|
|
249
|
-
__decorate([
|
|
250
|
-
property()
|
|
251
|
-
], HelixHeadlessChatComposer.prototype, "placeholder", void 0);
|
|
252
|
-
__decorate([
|
|
253
|
-
property({ attribute: 'submit-on' })
|
|
254
|
-
], HelixHeadlessChatComposer.prototype, "submitOn", void 0);
|
|
255
242
|
__decorate([
|
|
256
243
|
property({ reflect: true, type: Boolean })
|
|
257
244
|
], HelixHeadlessChatComposer.prototype, "disabled", void 0);
|
|
@@ -259,11 +246,20 @@ __decorate([
|
|
|
259
246
|
property()
|
|
260
247
|
], HelixHeadlessChatComposer.prototype, "label", void 0);
|
|
261
248
|
__decorate([
|
|
262
|
-
property(
|
|
263
|
-
], HelixHeadlessChatComposer.prototype, "
|
|
249
|
+
property()
|
|
250
|
+
], HelixHeadlessChatComposer.prototype, "placeholder", void 0);
|
|
264
251
|
__decorate([
|
|
265
252
|
property({ type: Number })
|
|
266
253
|
], HelixHeadlessChatComposer.prototype, "rows", void 0);
|
|
254
|
+
__decorate([
|
|
255
|
+
property({ attribute: 'send-label' })
|
|
256
|
+
], HelixHeadlessChatComposer.prototype, "sendLabel", void 0);
|
|
257
|
+
__decorate([
|
|
258
|
+
property({ attribute: 'submit-on' })
|
|
259
|
+
], HelixHeadlessChatComposer.prototype, "submitOn", void 0);
|
|
260
|
+
__decorate([
|
|
261
|
+
property()
|
|
262
|
+
], HelixHeadlessChatComposer.prototype, "value", void 0);
|
|
267
263
|
__decorate([
|
|
268
264
|
state()
|
|
269
265
|
], HelixHeadlessChatComposer.prototype, "draft", void 0);
|
|
@@ -41,6 +41,10 @@ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
|
41
41
|
* @csspart time - When it was said.
|
|
42
42
|
*/
|
|
43
43
|
export declare class HelixHeadlessChatMessage extends HelixElement {
|
|
44
|
+
/**
|
|
45
|
+
* When it was said, as anything `Date` parses.
|
|
46
|
+
*/
|
|
47
|
+
at: string;
|
|
44
48
|
/**
|
|
45
49
|
* Who said it.
|
|
46
50
|
*
|
|
@@ -52,19 +56,9 @@ export declare class HelixHeadlessChatMessage extends HelixElement {
|
|
|
52
56
|
*/
|
|
53
57
|
author?: string;
|
|
54
58
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
* Reflected, because every one of the four is a visual state and a stylesheet
|
|
58
|
-
* has no other way to know. Absent is a settled message with nothing to
|
|
59
|
-
* report, which is what most of a transcript is, and it is the absence of the
|
|
60
|
-
* attribute rather than a value of it: there is no initializer, so nothing is
|
|
61
|
-
* reflected until something happens.
|
|
62
|
-
*/
|
|
63
|
-
state?: 'failed' | 'sending' | 'sent' | 'streaming';
|
|
64
|
-
/**
|
|
65
|
-
* When it was said, as anything `Date` parses.
|
|
59
|
+
* Label for a message that did not send.
|
|
66
60
|
*/
|
|
67
|
-
|
|
61
|
+
failedLabel: string;
|
|
68
62
|
/**
|
|
69
63
|
* Locale for the timestamp.
|
|
70
64
|
*
|
|
@@ -72,17 +66,23 @@ export declare class HelixHeadlessChatMessage extends HelixElement {
|
|
|
72
66
|
*/
|
|
73
67
|
locale: string;
|
|
74
68
|
/**
|
|
75
|
-
*
|
|
69
|
+
* Label for the control offered on a failed message.
|
|
76
70
|
*/
|
|
77
|
-
|
|
71
|
+
retryLabel: string;
|
|
78
72
|
/**
|
|
79
|
-
*
|
|
73
|
+
* What to call each state, for a reader who cannot see it.
|
|
80
74
|
*/
|
|
81
|
-
|
|
75
|
+
sendingLabel: string;
|
|
82
76
|
/**
|
|
83
|
-
*
|
|
77
|
+
* What has happened to it.
|
|
78
|
+
*
|
|
79
|
+
* Reflected, because every one of the four is a visual state and a stylesheet
|
|
80
|
+
* has no other way to know. Absent is a settled message with nothing to
|
|
81
|
+
* report, which is what most of a transcript is, and it is the absence of the
|
|
82
|
+
* attribute rather than a value of it: there is no initializer, so nothing is
|
|
83
|
+
* reflected until something happens.
|
|
84
84
|
*/
|
|
85
|
-
|
|
85
|
+
state?: 'failed' | 'sending' | 'sent' | 'streaming';
|
|
86
86
|
/**
|
|
87
87
|
* @internal Read by the transcript to identify its children across the light
|
|
88
88
|
* DOM, which is cheaper than `instanceof`. Not a consumer's to read or set.
|
|
@@ -129,13 +129,13 @@ export declare class HelixHeadlessChatMessage extends HelixElement {
|
|
|
129
129
|
/**
|
|
130
130
|
* The turn: who said it, what was said, what it was drawn from, and its line.
|
|
131
131
|
*
|
|
132
|
-
* **`sources` and `actions` are inside the body rather than beside it
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
132
|
+
* **`sources` and `actions` are inside the body rather than beside it.**
|
|
133
|
+
* `actions` as a third grid column puts a copy control on a fifteen-word turn
|
|
134
|
+
* at the container's trailing edge, a hundred and fifty pixels of nothing
|
|
135
|
+
* between it and the bubble it acts on, on both sides of the conversation. As
|
|
136
|
+
* a column of its own inside the body it is no better: a bubble spanning two
|
|
137
|
+
* auto tracks inflates both, so the controls land under the middle of the
|
|
138
|
+
* turn.
|
|
139
139
|
*
|
|
140
140
|
* So they are inside `meta`, which is the line under a turn rather than only
|
|
141
141
|
* its timestamp, and that line is one flex row: time, state, controls, all
|
|
@@ -55,24 +55,24 @@ let HelixHeadlessChatMessage = class HelixHeadlessChatMessage extends HelixEleme
|
|
|
55
55
|
* When it was said, as anything `Date` parses.
|
|
56
56
|
*/
|
|
57
57
|
this.at = '';
|
|
58
|
+
/**
|
|
59
|
+
* Label for a message that did not send.
|
|
60
|
+
*/
|
|
61
|
+
this.failedLabel = 'Not sent';
|
|
58
62
|
/**
|
|
59
63
|
* Locale for the timestamp.
|
|
60
64
|
*
|
|
61
65
|
* Empty is the runtime's own.
|
|
62
66
|
*/
|
|
63
67
|
this.locale = '';
|
|
64
|
-
/**
|
|
65
|
-
* What to call each state, for a reader who cannot see it.
|
|
66
|
-
*/
|
|
67
|
-
this.sendingLabel = 'Sending';
|
|
68
|
-
/**
|
|
69
|
-
* @internal
|
|
70
|
-
*/
|
|
71
|
-
this.failedLabel = 'Not sent';
|
|
72
68
|
/**
|
|
73
69
|
* Label for the control offered on a failed message.
|
|
74
70
|
*/
|
|
75
71
|
this.retryLabel = 'Try again';
|
|
72
|
+
/**
|
|
73
|
+
* What to call each state, for a reader who cannot see it.
|
|
74
|
+
*/
|
|
75
|
+
this.sendingLabel = 'Sending';
|
|
76
76
|
/**
|
|
77
77
|
* @internal Read by the transcript to identify its children across the light
|
|
78
78
|
* DOM, which is cheaper than `instanceof`. Not a consumer's to read or set.
|
|
@@ -120,7 +120,7 @@ let HelixHeadlessChatMessage = class HelixHeadlessChatMessage extends HelixEleme
|
|
|
120
120
|
/* `article` rather than `listitem`, because the transcript is a `log` and a
|
|
121
121
|
log's children are not list items: a turn is a self-contained thing a
|
|
122
122
|
reader can be moved to, which is what an article is for.
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
`aria-busy` while it arrives is the whole of the streaming contract on
|
|
125
125
|
this side: the live region above it holds its announcement until the flag
|
|
126
126
|
clears, so the message is read once, whole, rather than per token. */
|
|
@@ -214,13 +214,13 @@ let HelixHeadlessChatMessage = class HelixHeadlessChatMessage extends HelixEleme
|
|
|
214
214
|
/**
|
|
215
215
|
* The turn: who said it, what was said, what it was drawn from, and its line.
|
|
216
216
|
*
|
|
217
|
-
* **`sources` and `actions` are inside the body rather than beside it
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
217
|
+
* **`sources` and `actions` are inside the body rather than beside it.**
|
|
218
|
+
* `actions` as a third grid column puts a copy control on a fifteen-word turn
|
|
219
|
+
* at the container's trailing edge, a hundred and fifty pixels of nothing
|
|
220
|
+
* between it and the bubble it acts on, on both sides of the conversation. As
|
|
221
|
+
* a column of its own inside the body it is no better: a bubble spanning two
|
|
222
|
+
* auto tracks inflates both, so the controls land under the middle of the
|
|
223
|
+
* turn.
|
|
224
224
|
*
|
|
225
225
|
* So they are inside `meta`, which is the line under a turn rather than only
|
|
226
226
|
* its timestamp, and that line is one flex row: time, state, controls, all
|
|
@@ -242,26 +242,26 @@ let HelixHeadlessChatMessage = class HelixHeadlessChatMessage extends HelixEleme
|
|
|
242
242
|
}
|
|
243
243
|
};
|
|
244
244
|
__decorate([
|
|
245
|
-
property(
|
|
246
|
-
], HelixHeadlessChatMessage.prototype, "
|
|
245
|
+
property()
|
|
246
|
+
], HelixHeadlessChatMessage.prototype, "at", void 0);
|
|
247
247
|
__decorate([
|
|
248
248
|
property({ reflect: true })
|
|
249
|
-
], HelixHeadlessChatMessage.prototype, "
|
|
249
|
+
], HelixHeadlessChatMessage.prototype, "author", void 0);
|
|
250
250
|
__decorate([
|
|
251
|
-
property()
|
|
252
|
-
], HelixHeadlessChatMessage.prototype, "
|
|
251
|
+
property({ attribute: 'failed-label' })
|
|
252
|
+
], HelixHeadlessChatMessage.prototype, "failedLabel", void 0);
|
|
253
253
|
__decorate([
|
|
254
254
|
property()
|
|
255
255
|
], HelixHeadlessChatMessage.prototype, "locale", void 0);
|
|
256
|
+
__decorate([
|
|
257
|
+
property({ attribute: 'retry-label' })
|
|
258
|
+
], HelixHeadlessChatMessage.prototype, "retryLabel", void 0);
|
|
256
259
|
__decorate([
|
|
257
260
|
property({ attribute: 'sending-label' })
|
|
258
261
|
], HelixHeadlessChatMessage.prototype, "sendingLabel", void 0);
|
|
259
262
|
__decorate([
|
|
260
|
-
property({
|
|
261
|
-
], HelixHeadlessChatMessage.prototype, "
|
|
262
|
-
__decorate([
|
|
263
|
-
property({ attribute: 'retry-label' })
|
|
264
|
-
], HelixHeadlessChatMessage.prototype, "retryLabel", void 0);
|
|
263
|
+
property({ reflect: true })
|
|
264
|
+
], HelixHeadlessChatMessage.prototype, "state", void 0);
|
|
265
265
|
__decorate([
|
|
266
266
|
state()
|
|
267
267
|
], HelixHeadlessChatMessage.prototype, "clock", void 0);
|
|
@@ -24,8 +24,8 @@ declare const HelixHeadlessChat_base: (new (...args: any[]) => import("@fusion.d
|
|
|
24
24
|
* a reader who is reading.**
|
|
25
25
|
*
|
|
26
26
|
* The element owns it, because it is the only party that knows a message arrived
|
|
27
|
-
* and where the viewport was when it did. `pinned`
|
|
28
|
-
*
|
|
27
|
+
* and where the viewport was when it did. `pinned` announces before it moves, so
|
|
28
|
+
* a consumer who wants to own it refuses the request and assigns their own.
|
|
29
29
|
*
|
|
30
30
|
* **The live region announces on completion, not on arrival.** The transcript is
|
|
31
31
|
* `role="log"` with `aria-live="polite"`, and a streaming message carries
|
|
@@ -73,25 +73,20 @@ export declare class HelixHeadlessChat extends HelixHeadlessChat_base {
|
|
|
73
73
|
*/
|
|
74
74
|
static shadowRootOptions: ShadowRootInit;
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
76
|
+
* Whether to open pinned, where nothing declared it.
|
|
77
77
|
*/
|
|
78
|
-
|
|
78
|
+
defaultPinned: boolean;
|
|
79
79
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* A hook rather than a constant, because the right number depends on how tall
|
|
83
|
-
* a turn is: a transcript of one-line replies wants a smaller threshold than
|
|
84
|
-
* one of paragraphs, and a reader who has scrolled up by half a message has
|
|
85
|
-
* not left.
|
|
80
|
+
* Accessible name for the conversation.
|
|
86
81
|
*/
|
|
87
|
-
|
|
82
|
+
label: string;
|
|
88
83
|
/**
|
|
89
84
|
* Whether the transcript follows new turns to the bottom.
|
|
90
85
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* this element then owns, and it defaults to
|
|
94
|
-
* opens at its most recent turn.
|
|
86
|
+
* The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
|
|
87
|
+
* consumer refusing it takes the decision and assigns their own value.
|
|
88
|
+
* `default-pinned` seeds the state this element then owns, and it defaults to
|
|
89
|
+
* pinned because a conversation opens at its most recent turn.
|
|
95
90
|
*
|
|
96
91
|
* **Not reflected, and the default is why.** A reflected property that
|
|
97
92
|
* defaults to true writes its attribute on upgrade whether or not the
|
|
@@ -102,15 +97,18 @@ export declare class HelixHeadlessChat extends HelixHeadlessChat_base {
|
|
|
102
97
|
* that is a part inside the shadow tree where a stylesheet can already reach
|
|
103
98
|
* it. Measured rather than assumed: `label, pinned` after upgrade against
|
|
104
99
|
* `label` from the server.
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
100
|
*/
|
|
108
101
|
get pinned(): boolean;
|
|
109
102
|
set pinned(next: boolean);
|
|
110
103
|
/**
|
|
111
|
-
*
|
|
104
|
+
* How near the bottom still counts as being at it, in pixels.
|
|
105
|
+
*
|
|
106
|
+
* A hook rather than a constant, because the right number depends on how tall
|
|
107
|
+
* a turn is: a transcript of one-line replies wants a smaller threshold than
|
|
108
|
+
* one of paragraphs, and a reader who has scrolled up by half a message has
|
|
109
|
+
* not left.
|
|
112
110
|
*/
|
|
113
|
-
|
|
111
|
+
threshold: number;
|
|
114
112
|
private pinnedState;
|
|
115
113
|
/** Watches for turns arriving, since a manual slot hears nothing about them. */
|
|
116
114
|
private watcher;
|
|
@@ -162,18 +160,12 @@ export declare class HelixHeadlessChat extends HelixHeadlessChat_base {
|
|
|
162
160
|
/**
|
|
163
161
|
* A press anywhere in the way back takes the reader back.
|
|
164
162
|
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
* scroll shipped as decoration.
|
|
172
|
-
*
|
|
173
|
-
* The region exists for exactly one purpose, so a press inside it has exactly
|
|
174
|
-
* one meaning and this element is entitled to act on it. `resume()` stays
|
|
175
|
-
* public for the other callers it was always for: a keyboard shortcut, or a
|
|
176
|
-
* consumer's own control somewhere else on the page.
|
|
163
|
+
* The control is slotted so the consumer picks the words, which on its own
|
|
164
|
+
* leaves a button this element positions, lifts, shows and hides doing nothing
|
|
165
|
+
* until somebody wires it. The region exists for exactly one purpose, so a
|
|
166
|
+
* press inside it has exactly one meaning and this element is entitled to act
|
|
167
|
+
* on it. `resume()` stays public for the other callers: a keyboard shortcut,
|
|
168
|
+
* or a consumer's own control somewhere else on the page.
|
|
177
169
|
*/
|
|
178
170
|
private readonly handleResume;
|
|
179
171
|
connectedCallback(): void;
|
|
@@ -184,20 +176,15 @@ export declare class HelixHeadlessChat extends HelixHeadlessChat_base {
|
|
|
184
176
|
/**
|
|
185
177
|
* The reader's own scrolling, which is the only thing that unpins.
|
|
186
178
|
*
|
|
187
|
-
* **Bound to the transcript in the template, and it has to be.**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
* propagation path stops at the shadow root and never includes the host, in
|
|
192
|
-
* any phase. So the listener never ran once, the pin never released, and a
|
|
193
|
-
* reader who scrolled up to re-read was pulled back to the bottom by the next
|
|
194
|
-
* turn to arrive, which this element's own description calls the most
|
|
195
|
-
* got-wrong thing in the category.
|
|
179
|
+
* **Bound to the transcript in the template, and it has to be.** A listener on
|
|
180
|
+
* the host never runs, in any phase, and capture does not rescue it: `scroll`
|
|
181
|
+
* is not *composed*, so its propagation path stops at the shadow root and
|
|
182
|
+
* never includes the host. Not bubbling is the red herring.
|
|
196
183
|
*
|
|
197
184
|
* Measured by dispatching both shapes at the transcript: with
|
|
198
185
|
* `composed: false`, which is what the platform sends, the host saw zero and
|
|
199
186
|
* `pinned` stayed true; with `composed: true` the host saw one and `pinned`
|
|
200
|
-
* went false.
|
|
187
|
+
* went false.
|
|
201
188
|
*
|
|
202
189
|
* **The scroll this element does itself must not unpin it**, which is the
|
|
203
190
|
* subtle half: `scrollTop = scrollHeight` fires the same event a reader's
|
|
@@ -12,7 +12,7 @@ import { property, state } from 'lit/decorators.js';
|
|
|
12
12
|
*
|
|
13
13
|
* Named once because two things read the list: the manual assignment that puts
|
|
14
14
|
* a child in the region its `slot` names, and the emptiness each region is
|
|
15
|
-
* hidden on.
|
|
15
|
+
* hidden on. Written out twice they go out of step.
|
|
16
16
|
*/
|
|
17
17
|
const REGIONS = ['header', 'actions', 'resume', 'status', 'composer'];
|
|
18
18
|
/**
|
|
@@ -37,8 +37,8 @@ const REGIONS = ['header', 'actions', 'resume', 'status', 'composer'];
|
|
|
37
37
|
* a reader who is reading.**
|
|
38
38
|
*
|
|
39
39
|
* The element owns it, because it is the only party that knows a message arrived
|
|
40
|
-
* and where the viewport was when it did. `pinned`
|
|
41
|
-
*
|
|
40
|
+
* and where the viewport was when it did. `pinned` announces before it moves, so
|
|
41
|
+
* a consumer who wants to own it refuses the request and assigns their own.
|
|
42
42
|
*
|
|
43
43
|
* **The live region announces on completion, not on arrival.** The transcript is
|
|
44
44
|
* `role="log"` with `aria-live="polite"`, and a streaming message carries
|
|
@@ -77,6 +77,10 @@ const REGIONS = ['header', 'actions', 'resume', 'status', 'composer'];
|
|
|
77
77
|
let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixElement) {
|
|
78
78
|
constructor() {
|
|
79
79
|
super(...arguments);
|
|
80
|
+
/**
|
|
81
|
+
* Whether to open pinned, where nothing declared it.
|
|
82
|
+
*/
|
|
83
|
+
this.defaultPinned = true;
|
|
80
84
|
/**
|
|
81
85
|
* Accessible name for the conversation.
|
|
82
86
|
*/
|
|
@@ -90,10 +94,6 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
90
94
|
* not left.
|
|
91
95
|
*/
|
|
92
96
|
this.threshold = 48;
|
|
93
|
-
/**
|
|
94
|
-
* Whether to open pinned, where nothing declared it.
|
|
95
|
-
*/
|
|
96
|
-
this.defaultPinned = true;
|
|
97
97
|
this.pinnedState = undefined;
|
|
98
98
|
/** Watches for turns arriving, since a manual slot hears nothing about them. */
|
|
99
99
|
this.watcher = undefined;
|
|
@@ -119,18 +119,12 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
119
119
|
/**
|
|
120
120
|
* A press anywhere in the way back takes the reader back.
|
|
121
121
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
* scroll shipped as decoration.
|
|
129
|
-
*
|
|
130
|
-
* The region exists for exactly one purpose, so a press inside it has exactly
|
|
131
|
-
* one meaning and this element is entitled to act on it. `resume()` stays
|
|
132
|
-
* public for the other callers it was always for: a keyboard shortcut, or a
|
|
133
|
-
* consumer's own control somewhere else on the page.
|
|
122
|
+
* The control is slotted so the consumer picks the words, which on its own
|
|
123
|
+
* leaves a button this element positions, lifts, shows and hides doing nothing
|
|
124
|
+
* until somebody wires it. The region exists for exactly one purpose, so a
|
|
125
|
+
* press inside it has exactly one meaning and this element is entitled to act
|
|
126
|
+
* on it. `resume()` stays public for the other callers: a keyboard shortcut,
|
|
127
|
+
* or a consumer's own control somewhere else on the page.
|
|
134
128
|
*/
|
|
135
129
|
this.handleResume = () => {
|
|
136
130
|
this.resume();
|
|
@@ -142,20 +136,15 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
142
136
|
/**
|
|
143
137
|
* The reader's own scrolling, which is the only thing that unpins.
|
|
144
138
|
*
|
|
145
|
-
* **Bound to the transcript in the template, and it has to be.**
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* propagation path stops at the shadow root and never includes the host, in
|
|
150
|
-
* any phase. So the listener never ran once, the pin never released, and a
|
|
151
|
-
* reader who scrolled up to re-read was pulled back to the bottom by the next
|
|
152
|
-
* turn to arrive, which this element's own description calls the most
|
|
153
|
-
* got-wrong thing in the category.
|
|
139
|
+
* **Bound to the transcript in the template, and it has to be.** A listener on
|
|
140
|
+
* the host never runs, in any phase, and capture does not rescue it: `scroll`
|
|
141
|
+
* is not *composed*, so its propagation path stops at the shadow root and
|
|
142
|
+
* never includes the host. Not bubbling is the red herring.
|
|
154
143
|
*
|
|
155
144
|
* Measured by dispatching both shapes at the transcript: with
|
|
156
145
|
* `composed: false`, which is what the platform sends, the host saw zero and
|
|
157
146
|
* `pinned` stayed true; with `composed: true` the host saw one and `pinned`
|
|
158
|
-
* went false.
|
|
147
|
+
* went false.
|
|
159
148
|
*
|
|
160
149
|
* **The scroll this element does itself must not unpin it**, which is the
|
|
161
150
|
* subtle half: `scrollTop = scrollHeight` fires the same event a reader's
|
|
@@ -186,10 +175,10 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
186
175
|
/**
|
|
187
176
|
* Whether the transcript follows new turns to the bottom.
|
|
188
177
|
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
* this element then owns, and it defaults to
|
|
192
|
-
* opens at its most recent turn.
|
|
178
|
+
* The reader's scrolling asks first: `helix-before-pin` is cancelable, so a
|
|
179
|
+
* consumer refusing it takes the decision and assigns their own value.
|
|
180
|
+
* `default-pinned` seeds the state this element then owns, and it defaults to
|
|
181
|
+
* pinned because a conversation opens at its most recent turn.
|
|
193
182
|
*
|
|
194
183
|
* **Not reflected, and the default is why.** A reflected property that
|
|
195
184
|
* defaults to true writes its attribute on upgrade whether or not the
|
|
@@ -200,8 +189,6 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
200
189
|
* that is a part inside the shadow tree where a stylesheet can already reach
|
|
201
190
|
* it. Measured rather than assumed: `label, pinned` after upgrade against
|
|
202
191
|
* `label` from the server.
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
192
|
*/
|
|
206
193
|
get pinned() {
|
|
207
194
|
return this.pinnedState ?? this.defaultPinned;
|
|
@@ -365,18 +352,18 @@ let HelixHeadlessChat = class HelixHeadlessChat extends MixinCollection(HelixEle
|
|
|
365
352
|
</div>`;
|
|
366
353
|
}
|
|
367
354
|
};
|
|
355
|
+
__decorate([
|
|
356
|
+
property({ attribute: 'default-pinned', type: Boolean })
|
|
357
|
+
], HelixHeadlessChat.prototype, "defaultPinned", void 0);
|
|
368
358
|
__decorate([
|
|
369
359
|
property()
|
|
370
360
|
], HelixHeadlessChat.prototype, "label", void 0);
|
|
371
|
-
__decorate([
|
|
372
|
-
property({ type: Number })
|
|
373
|
-
], HelixHeadlessChat.prototype, "threshold", void 0);
|
|
374
361
|
__decorate([
|
|
375
362
|
property({ type: Boolean })
|
|
376
363
|
], HelixHeadlessChat.prototype, "pinned", null);
|
|
377
364
|
__decorate([
|
|
378
|
-
property({
|
|
379
|
-
], HelixHeadlessChat.prototype, "
|
|
365
|
+
property({ type: Number })
|
|
366
|
+
], HelixHeadlessChat.prototype, "threshold", void 0);
|
|
380
367
|
__decorate([
|
|
381
368
|
state()
|
|
382
369
|
], HelixHeadlessChat.prototype, "pinnedState", void 0);
|
|
@@ -45,16 +45,16 @@ declare const HelixHeadlessCheckbox_base: (new (...args: any[]) => import("@fusi
|
|
|
45
45
|
*/
|
|
46
46
|
export declare class HelixHeadlessCheckbox extends HelixHeadlessCheckbox_base {
|
|
47
47
|
protected readonly aria: AriaForwardController;
|
|
48
|
-
/**
|
|
49
|
-
* Value submitted when the box is checked.
|
|
50
|
-
*/
|
|
51
|
-
value: string;
|
|
52
48
|
/**
|
|
53
49
|
* Whether the box shows as neither checked nor unchecked.
|
|
54
50
|
*
|
|
55
51
|
* Presentation only. It never submits, and the first change resolves it.
|
|
56
52
|
*/
|
|
57
53
|
indeterminate: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Value submitted when the box is checked.
|
|
56
|
+
*/
|
|
57
|
+
value: string;
|
|
58
58
|
/** Focus is delegated to the input, so the host is never the focus target. */
|
|
59
59
|
static shadowRootOptions: ShadowRootInit;
|
|
60
60
|
private readonly handleChange;
|
|
@@ -87,15 +87,13 @@ export declare class HelixHeadlessCheckbox extends HelixHeadlessCheckbox_base {
|
|
|
87
87
|
*
|
|
88
88
|
* Called on `slotchange` and after every update, and the second is not
|
|
89
89
|
* belt-and-braces: **`slotchange` does not fire when nothing is assigned.**
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* asks a labeled row to be wider than a bare one.
|
|
90
|
+
* Without it a checkbox labeled only by its property, which is most of them,
|
|
91
|
+
* never hears about its own label and renders without one.
|
|
93
92
|
*
|
|
94
|
-
* **`:state(has-label)` and not `data-has-label
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* upgraded and on none that any server sent. See `HelixElement.toggleState`.
|
|
93
|
+
* **`:state(has-label)` and not `data-has-label`.** The answer comes from
|
|
94
|
+
* `assignedNodes` and a server has no tree to ask, so an attribute would
|
|
95
|
+
* appear on every labeled checkbox the instant it upgraded and on none that
|
|
96
|
+
* any server sent. See `HelixElement.toggleState`.
|
|
99
97
|
*/
|
|
100
98
|
private syncLabelPresence;
|
|
101
99
|
protected render(): TemplateResult;
|