@fusion.dev/helix-core 0.145.0 → 0.146.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.
Files changed (254) hide show
  1. package/custom-elements.json +5203 -1777
  2. package/dist/controllers/aria-forward-controller/aria-forward-controller.d.ts +3 -2
  3. package/dist/controllers/aria-forward-controller/aria-forward-controller.js +3 -14
  4. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.d.ts +65 -3
  5. package/dist/controllers/chart-pointer-controller/chart-pointer-controller.js +37 -9
  6. package/dist/controllers/chart-pointer-controller/reading-step.d.ts +7 -1
  7. package/dist/controllers/chart-pointer-controller/reading-step.js +5 -0
  8. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.d.ts +9 -55
  9. package/dist/controllers/keyboard-navigation-controller/keyboard-navigation-controller.js +7 -39
  10. package/dist/controllers/relative-clock-controller/relative-clock-controller.d.ts +44 -0
  11. package/dist/controllers/relative-clock-controller/relative-clock-controller.js +31 -0
  12. package/dist/controllers/source-controller/source-controller.d.ts +10 -3
  13. package/dist/controllers/source-controller/source-controller.js +7 -4
  14. package/dist/controllers/virtualize-controller/virtualize-controller.d.ts +48 -1
  15. package/dist/controllers/virtualize-controller/virtualize-controller.js +50 -7
  16. package/dist/events/action.d.ts +12 -0
  17. package/dist/events/action.js +6 -0
  18. package/dist/events/activate.d.ts +22 -0
  19. package/dist/events/activate.js +11 -0
  20. package/dist/events/aura-fallback.d.ts +12 -0
  21. package/dist/events/aura-fallback.js +11 -0
  22. package/dist/events/before-activate.d.ts +24 -0
  23. package/dist/events/before-activate.js +11 -0
  24. package/dist/events/before-change.d.ts +26 -0
  25. package/dist/events/before-change.js +11 -0
  26. package/dist/events/before-close.d.ts +6 -0
  27. package/dist/events/before-close.js +11 -0
  28. package/dist/events/before-collapse.d.ts +6 -0
  29. package/dist/events/before-collapse.js +11 -0
  30. package/dist/events/before-edit.d.ts +6 -0
  31. package/dist/events/before-edit.js +11 -0
  32. package/dist/events/before-move.d.ts +17 -0
  33. package/dist/events/before-move.js +11 -0
  34. package/dist/events/before-open.d.ts +17 -0
  35. package/dist/events/before-open.js +11 -0
  36. package/dist/events/before-panel-resize.d.ts +13 -0
  37. package/dist/events/before-panel-resize.js +11 -0
  38. package/dist/events/before-pin.d.ts +6 -0
  39. package/dist/events/before-pin.js +11 -0
  40. package/dist/events/before-reconnect.d.ts +14 -0
  41. package/dist/events/before-reconnect.js +11 -0
  42. package/dist/events/before-relabel.d.ts +15 -0
  43. package/dist/events/before-relabel.js +11 -0
  44. package/dist/events/before-resize.d.ts +6 -0
  45. package/dist/events/before-resize.js +11 -0
  46. package/dist/events/before-split.d.ts +12 -0
  47. package/dist/events/before-split.js +11 -0
  48. package/dist/events/before-toggle.d.ts +23 -0
  49. package/dist/events/before-toggle.js +11 -0
  50. package/dist/events/canvas-edit.d.ts +16 -0
  51. package/dist/events/canvas-edit.js +11 -0
  52. package/dist/events/canvas-pan.d.ts +13 -0
  53. package/dist/events/canvas-pan.js +11 -0
  54. package/dist/events/canvas-view.d.ts +14 -0
  55. package/dist/events/canvas-view.js +11 -0
  56. package/dist/events/canvas-zoom.d.ts +6 -0
  57. package/dist/events/canvas-zoom.js +11 -0
  58. package/dist/events/caret.d.ts +17 -0
  59. package/dist/events/caret.js +11 -0
  60. package/dist/events/clear.d.ts +11 -0
  61. package/dist/events/clear.js +6 -0
  62. package/dist/events/collapse.d.ts +12 -0
  63. package/dist/events/collapse.js +11 -0
  64. package/dist/events/complete.d.ts +26 -0
  65. package/dist/events/complete.js +11 -0
  66. package/dist/events/connect.d.ts +14 -0
  67. package/dist/events/connect.js +11 -0
  68. package/dist/events/console.d.ts +13 -0
  69. package/dist/events/console.js +11 -0
  70. package/dist/events/copy-error.d.ts +9 -0
  71. package/dist/events/copy-error.js +6 -0
  72. package/dist/events/copy.d.ts +12 -0
  73. package/dist/events/copy.js +10 -0
  74. package/dist/events/create.d.ts +18 -0
  75. package/dist/events/create.js +11 -0
  76. package/dist/events/details.d.ts +454 -0
  77. package/dist/events/details.js +1 -0
  78. package/dist/events/dismiss.d.ts +16 -0
  79. package/dist/events/dismiss.js +11 -0
  80. package/dist/events/edit.d.ts +12 -0
  81. package/dist/events/edit.js +11 -0
  82. package/dist/events/end.d.ts +9 -0
  83. package/dist/events/end.js +6 -0
  84. package/dist/events/events.d.ts +111 -1478
  85. package/dist/events/events.js +91 -863
  86. package/dist/events/expand.d.ts +10 -0
  87. package/dist/events/expand.js +11 -0
  88. package/dist/events/facet.d.ts +17 -0
  89. package/dist/events/facet.js +11 -0
  90. package/dist/events/filter.d.ts +12 -0
  91. package/dist/events/filter.js +11 -0
  92. package/dist/events/filtered.d.ts +12 -0
  93. package/dist/events/filtered.js +11 -0
  94. package/dist/events/graph-filter.d.ts +10 -0
  95. package/dist/events/graph-filter.js +11 -0
  96. package/dist/events/graph-layout.d.ts +10 -0
  97. package/dist/events/graph-layout.js +11 -0
  98. package/dist/events/graph-pan.d.ts +9 -0
  99. package/dist/events/graph-pan.js +11 -0
  100. package/dist/events/graph-part-change.d.ts +10 -0
  101. package/dist/events/graph-part-change.js +11 -0
  102. package/dist/events/graph-ready.d.ts +8 -0
  103. package/dist/events/graph-ready.js +6 -0
  104. package/dist/events/graph-signal.d.ts +11 -0
  105. package/dist/events/graph-signal.js +11 -0
  106. package/dist/events/graph-zoom.d.ts +6 -0
  107. package/dist/events/graph-zoom.js +11 -0
  108. package/dist/events/history.d.ts +16 -0
  109. package/dist/events/history.js +11 -0
  110. package/dist/events/load-more.d.ts +12 -0
  111. package/dist/events/load-more.js +6 -0
  112. package/dist/events/load.d.ts +12 -0
  113. package/dist/events/load.js +6 -0
  114. package/dist/events/map-cluster.d.ts +15 -0
  115. package/dist/events/map-cluster.js +11 -0
  116. package/dist/events/map-pan.d.ts +18 -0
  117. package/dist/events/map-pan.js +11 -0
  118. package/dist/events/map-part-change.d.ts +16 -0
  119. package/dist/events/map-part-change.js +11 -0
  120. package/dist/events/map-ready.d.ts +15 -0
  121. package/dist/events/map-ready.js +6 -0
  122. package/dist/events/map-rotate.d.ts +9 -0
  123. package/dist/events/map-rotate.js +11 -0
  124. package/dist/events/map-tilt.d.ts +9 -0
  125. package/dist/events/map-tilt.js +11 -0
  126. package/dist/events/map-zoom.d.ts +13 -0
  127. package/dist/events/map-zoom.js +11 -0
  128. package/dist/events/move.d.ts +11 -0
  129. package/dist/events/move.js +11 -0
  130. package/dist/events/names.d.ts +15 -0
  131. package/dist/events/names.js +88 -0
  132. package/dist/events/navigate.d.ts +13 -0
  133. package/dist/events/navigate.js +11 -0
  134. package/dist/events/next.d.ts +23 -0
  135. package/dist/events/next.js +11 -0
  136. package/dist/events/panel-resize.d.ts +12 -0
  137. package/dist/events/panel-resize.js +11 -0
  138. package/dist/events/pin.d.ts +12 -0
  139. package/dist/events/pin.js +11 -0
  140. package/dist/events/press.d.ts +19 -0
  141. package/dist/events/press.js +11 -0
  142. package/dist/events/preview.d.ts +14 -0
  143. package/dist/events/preview.js +11 -0
  144. package/dist/events/previous.d.ts +6 -0
  145. package/dist/events/previous.js +11 -0
  146. package/dist/events/range-change.d.ts +10 -0
  147. package/dist/events/range-change.js +11 -0
  148. package/dist/events/read.d.ts +19 -0
  149. package/dist/events/read.js +11 -0
  150. package/dist/events/reconnect.d.ts +6 -0
  151. package/dist/events/reconnect.js +11 -0
  152. package/dist/events/reject.d.ts +13 -0
  153. package/dist/events/reject.js +11 -0
  154. package/dist/events/relabel.d.ts +6 -0
  155. package/dist/events/relabel.js +11 -0
  156. package/dist/events/remove.d.ts +12 -0
  157. package/dist/events/remove.js +11 -0
  158. package/dist/events/reorder.d.ts +18 -0
  159. package/dist/events/reorder.js +11 -0
  160. package/dist/events/reordered.d.ts +12 -0
  161. package/dist/events/reordered.js +11 -0
  162. package/dist/events/resize.d.ts +19 -0
  163. package/dist/events/resize.js +11 -0
  164. package/dist/events/resized.d.ts +16 -0
  165. package/dist/events/resized.js +11 -0
  166. package/dist/events/sample-end.d.ts +5 -0
  167. package/dist/events/sample-end.js +6 -0
  168. package/dist/events/sample-start.d.ts +18 -0
  169. package/dist/events/sample-start.js +6 -0
  170. package/dist/events/scrolled.d.ts +32 -0
  171. package/dist/events/scrolled.js +11 -0
  172. package/dist/events/select.d.ts +12 -0
  173. package/dist/events/select.js +11 -0
  174. package/dist/events/selected.d.ts +12 -0
  175. package/dist/events/selected.js +11 -0
  176. package/dist/events/send.d.ts +18 -0
  177. package/dist/events/send.js +11 -0
  178. package/dist/events/shortcut.d.ts +13 -0
  179. package/dist/events/shortcut.js +11 -0
  180. package/dist/events/sort.d.ts +17 -0
  181. package/dist/events/sort.js +11 -0
  182. package/dist/events/sorted.d.ts +15 -0
  183. package/dist/events/sorted.js +11 -0
  184. package/dist/events/split.d.ts +12 -0
  185. package/dist/events/split.js +11 -0
  186. package/dist/events/toggle.d.ts +15 -0
  187. package/dist/events/toggle.js +11 -0
  188. package/dist/events/tour-ask.d.ts +16 -0
  189. package/dist/events/tour-ask.js +11 -0
  190. package/dist/events/tour-status.d.ts +14 -0
  191. package/dist/events/tour-status.js +11 -0
  192. package/dist/events/typing.d.ts +10 -0
  193. package/dist/events/typing.js +11 -0
  194. package/dist/helix-element/react-bridge.d.ts +10 -0
  195. package/dist/helix-element/react-bridge.js +1 -1
  196. package/dist/helix-form-element/helix-form-element.d.ts +5 -20
  197. package/dist/helix-form-element/helix-form-element.js +4 -56
  198. package/dist/index.d.ts +15 -3
  199. package/dist/index.js +15 -3
  200. package/dist/mixins/mixin-chart-source/mixin-chart-source.d.ts +17 -2
  201. package/dist/mixins/mixin-chart-source/mixin-chart-source.js +22 -1
  202. package/dist/mixins/mixin-controller-active/mixin-controller-active.js +4 -3
  203. package/dist/mixins/mixin-controller-checked/mixin-controller-checked.d.ts +5 -2
  204. package/dist/mixins/mixin-controller-checked/mixin-controller-checked.js +2 -1
  205. package/dist/mixins/mixin-controller-value/mixin-controller-value.d.ts +4 -2
  206. package/dist/mixins/mixin-controller-value/mixin-controller-value.js +7 -2
  207. package/dist/mixins/mixin-dismissible/mixin-dismissible.js +20 -4
  208. package/dist/mixins/mixin-field/mixin-field.js +2 -2
  209. package/dist/mixins/mixin-picker-field/mixin-picker-field.d.ts +15 -3
  210. package/dist/mixins/mixin-picker-field/mixin-picker-field.js +11 -4
  211. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.d.ts +1 -1
  212. package/dist/mixins/mixin-segmented-field/mixin-segmented-field.js +10 -4
  213. package/dist/utils/audit-name/audit-name-off.d.ts +10 -0
  214. package/dist/utils/audit-name/audit-name-off.js +1 -0
  215. package/dist/utils/audit-name/audit-name.d.ts +19 -6
  216. package/dist/utils/audit-name/audit-name.js +10 -27
  217. package/dist/utils/calendar/calendar.js +7 -7
  218. package/dist/utils/draw-tooltip/draw-tooltip.d.ts +1 -1
  219. package/dist/utils/draw-tooltip/draw-tooltip.js +3 -1
  220. package/dist/utils/draw-tooltip/spoken-reading.d.ts +6 -2
  221. package/dist/utils/draw-tooltip/spoken-reading.js +5 -4
  222. package/dist/utils/heading-level/heading-level.d.ts +8 -0
  223. package/dist/utils/heading-level/heading-level.js +4 -0
  224. package/dist/utils/implicit-submit/implicit-submit.d.ts +25 -0
  225. package/dist/utils/implicit-submit/implicit-submit.js +52 -0
  226. package/dist/utils/name-text/name-text.d.ts +12 -0
  227. package/dist/utils/name-text/name-text.js +25 -0
  228. package/dist/utils/number-format/number-format.d.ts +2 -1
  229. package/dist/utils/number-format/number-format.js +13 -5
  230. package/dist/utils/plain-click/plain-click.d.ts +10 -0
  231. package/dist/utils/plain-click/plain-click.js +1 -0
  232. package/dist/utils/press-type/press-type.d.ts +20 -0
  233. package/dist/utils/press-type/press-type.js +15 -0
  234. package/dist/utils/report-runtime/report-runtime.d.ts +6 -3
  235. package/dist/utils/row-data/row-data.d.ts +15 -0
  236. package/dist/utils/row-data/row-data.js +17 -0
  237. package/dist/utils/row-order/row-order.d.ts +141 -0
  238. package/dist/utils/row-order/row-order.js +76 -0
  239. package/dist/utils/tell-disclosure/tell-disclosure.d.ts +4 -0
  240. package/dist/utils/tree-arrow/tree-arrow.d.ts +23 -0
  241. package/dist/utils/tree-arrow/tree-arrow.js +9 -0
  242. package/dist/utils/typeahead/typeahead.d.ts +67 -0
  243. package/dist/utils/typeahead/typeahead.js +36 -0
  244. package/dist/utils/value-as/value-as.d.ts +9 -0
  245. package/dist/utils/value-as/value-as.js +9 -1
  246. package/dist/utils/watch-labels/watch-labels.d.ts +16 -0
  247. package/dist/utils/watch-labels/watch-labels.js +34 -0
  248. package/dist/utils/words-converter/words-converter.d.ts +14 -0
  249. package/dist/utils/words-converter/words-converter.js +15 -0
  250. package/dist/utils/written-list/written-list.d.ts +29 -0
  251. package/dist/utils/written-list/written-list.js +30 -0
  252. package/dist/version.d.ts +1 -1
  253. package/dist/version.js +1 -1
  254. package/package.json +18 -5
@@ -11,1476 +11,115 @@
11
11
  * for consumers writing plain HTML, who never see the React wrappers.
12
12
  * 3. The event name lives on the class as `eventName`, so a listener and a
13
13
  * dispatch cannot disagree about the string.
14
- */
15
- /** Detail carried by `helix-before-open` and `helix-before-close`. */
16
- export interface OpenDetail {
17
- /** The state the element is moving to. */
18
- open: boolean;
19
- }
20
- /**
21
- * Fired when an element is about to open.
22
- *
23
- * Cancelable: `preventDefault()` refuses the change, and the element stays
24
- * closed. Paired with `helix-before-close` rather than being one event carrying a
25
- * boolean, so a listener that only cares about one direction says so by which
26
- * event it listens for.
27
- *
28
- * Neither bubbles nor composed. A dialog inside a drawer inside a popover is
29
- * three overlays, and an inner one opening must not read as the outer one
30
- * opening.
31
- */
32
- export declare class HelixBeforeOpenEvent extends CustomEvent<OpenDetail> {
33
- static readonly eventName = "helix-before-open";
34
- constructor();
35
- }
36
- /** Fired when an element is about to close. See `HelixBeforeOpenEvent`. */
37
- export declare class HelixBeforeCloseEvent extends CustomEvent<OpenDetail> {
38
- static readonly eventName = "helix-before-close";
39
- constructor();
40
- }
41
- /**
42
- * Fired when the reader asks for the next thing in a set.
43
- *
44
- * Paired with `helix-previous` rather than being one event carrying a
45
- * direction, which is the reason `helix-before-open` gives for its own pair: a
46
- * listener that only cares about one direction says so by which event it
47
- * listens for. The detail carries the direction anyway, so a consumer who does
48
- * want one handler can have one.
49
- *
50
- * Bubbles and is composed, because the thing that answers this is usually not
51
- * the thing that asked. A video has no notion of a set: it plays one resource,
52
- * and what comes next is a playlist's business or the consumer's, so the event
53
- * has to reach a wrapper.
54
- *
55
- * Not cancelable. There is no default action to refuse: the component that
56
- * fires this does nothing on its own, and an event whose `preventDefault` means
57
- * nothing is an event that lies about what it offers.
58
- */
59
- export declare class HelixNextEvent extends CustomEvent<SkipDetail> {
60
- static readonly eventName = "helix-next";
61
- constructor();
62
- }
63
- /** Fired when the reader asks for the previous one. See `HelixNextEvent`. */
64
- export declare class HelixPreviousEvent extends CustomEvent<SkipDetail> {
65
- static readonly eventName = "helix-previous";
66
- constructor();
67
- }
68
- /** Detail carried by `helix-next` and `helix-previous`. */
69
- export interface SkipDetail {
70
- /** Which way the reader asked to go. */
71
- to: 'next' | 'previous';
72
- }
73
- /**
74
- * Detail carried by a pan request, `helix-map-pan` being the one Map sends.
75
- *
76
- * Named for the surface rather than for the map, because the surface is shared:
77
- * `MixinViewport` is what asks, and a canvas or a graph asking the same question
78
- * should not be importing a type with `Map` in its name. `MapPanDetail` stays as
79
- * an alias, that being what a consumer of Map wrote before this was split.
80
- */
81
- export interface ViewportPanDetail {
82
- /** Which way the reader asked to go, in reading order rather than compass order. */
83
- to: 'up' | 'down' | 'start' | 'end';
84
- /** How far, as a fraction of the viewport the map is drawn in. */
85
- by: number;
86
- }
87
- /** Detail carried by a zoom request, named for the surface for the same reason. */
88
- export interface ViewportZoomDetail {
89
- /** Which way, `1` in and `-1` out, so a consumer can multiply by their own step. */
90
- by: number;
91
- }
92
- /**
93
- * The board moved, which on a canvas is a fact rather than a request.
94
- *
95
- * **`Map` asks and `Canvas` tells, and the difference is who draws.** A map is
96
- * somebody else's, so the frame can only ask them to move it; a canvas is drawn
97
- * here from a document, so the same press moves it and this says that it did.
98
- * The detail is the same shape either way, being a direction and a distance.
99
- */
100
- export declare class HelixCanvasPanEvent extends CustomEvent<ViewportPanDetail> {
101
- static readonly eventName = "helix-canvas-pan";
102
- constructor(detail: ViewportPanDetail);
103
- }
104
- /** The board zoomed, and told, for the same reason. */
105
- export declare class HelixCanvasZoomEvent extends CustomEvent<ViewportZoomDetail> {
106
- static readonly eventName = "helix-canvas-zoom";
107
- constructor(detail: ViewportZoomDetail);
108
- }
109
- /**
110
- * Where a move or a resize puts each card it carries, in the board's own
111
- * units.
112
- *
113
- * **One contract for both**, because what a controlled page does with either
114
- * is the same: write the geometry the detail says onto the cards it renders. A
115
- * resize says `width` and `height` as well, and moves `x` and `y` too when it
116
- * is dragged from a corner other than the bottom right.
117
- */
118
- export interface MoveDetail {
119
- /**
120
- * Every card the gesture moves, the one the reader took hold of first.
121
- *
122
- * **A list, because a group carries what is inside it.** Dragging a group
123
- * moves its cards with it, which is what every board does, and a controlled
124
- * consumer who refuses the move has to write every position it would have
125
- * written, not only the one the pointer was on.
126
- */
127
- nodes: Array<{
128
- name: string;
129
- x: number;
130
- y: number;
131
- width?: number;
132
- height?: number;
133
- }>;
134
- }
135
- /**
136
- * Cards are about to move, and can be refused.
137
- *
138
- * **This is the controlled half, the way `helix-before-open` is for a
139
- * dialog.** A board moves its own cards by default, writing `x` and `y` onto
140
- * each one the way an input writes its own value. A consumer who keeps the
141
- * positions in their own state calls `preventDefault()` here, writes what the
142
- * detail says into that state, and renders the cards where it puts them.
143
- *
144
- * Sent for every step of a drag, so a controlled board follows the pointer
145
- * rather than jumping on the drop.
146
- */
147
- export declare class HelixBeforeMoveEvent extends CustomEvent<MoveDetail> {
148
- static readonly eventName = "helix-before-move";
149
- constructor(detail: MoveDetail);
150
- }
151
- /**
152
- * Cards moved, and the move is finished: a drag let go, or a key press.
153
- *
154
- * The `change` to `helix-before-move`'s `input`: what a consumer binds who
155
- * only wants to save a board once somebody has finished rearranging it.
156
- */
157
- export declare class HelixMoveEvent extends CustomEvent<MoveDetail> {
158
- static readonly eventName = "helix-move";
159
- constructor(detail: MoveDetail);
160
- }
161
- /** Which two cards a reader asked to join, by name, and the side they started from. */
162
- export interface ConnectDetail {
163
- from: string;
164
- to: string;
165
- /** The side the reader drew from, where they drew from one. */
166
- fromSide?: 'top' | 'right' | 'bottom' | 'left' | undefined;
167
- /** The side nearest where they let go, where they let go over a card. */
168
- toSide?: 'top' | 'right' | 'bottom' | 'left' | undefined;
169
- }
170
- /**
171
- * A reader asked for two cards to be joined.
172
- *
173
- * **A request with no default, which is the difference from a move.** A board
174
- * writes a card's position onto the card, because the card is already there.
175
- * A connection is a new element, and a board that added one to markup React
176
- * renders would have it put back or thrown away on the next render. So the board
177
- * asks and the page adds the `helix-canvas-edge`, the way `Map` asks to be panned.
178
- */
179
- export declare class HelixConnectEvent extends CustomEvent<ConnectDetail> {
180
- static readonly eventName = "helix-connect";
181
- constructor(detail: ConnectDetail);
182
- }
183
- /** Where a connection's ends are going, and where they were. */
184
- export interface ReconnectDetail {
185
- /** The connection's name, where it has one. */
186
- name: string;
187
- /** Its ends before, so a page that named none of its connections can find it. */
188
- was: {
189
- from: string;
190
- to: string;
191
- };
192
- from: string;
193
- to: string;
194
- fromSide?: 'top' | 'right' | 'bottom' | 'left' | undefined;
195
- toSide?: 'top' | 'right' | 'bottom' | 'left' | undefined;
196
- }
197
- /**
198
- * A connection's end is about to move to another card or another side, and can
199
- * be refused.
200
- *
201
- * **A move, not a request, and that is the difference from `helix-connect`.**
202
- * The connection is already an element on the page, so the board rewrites its
203
- * ends itself, the way it writes a card's position onto the card; a page that
204
- * holds its connections in state refuses this and writes them there.
205
- */
206
- export declare class HelixBeforeReconnectEvent extends CustomEvent<ReconnectDetail> {
207
- static readonly eventName = "helix-before-reconnect";
208
- constructor(detail: ReconnectDetail);
209
- }
210
- /** A connection's end moved, and the move is finished. */
211
- export declare class HelixReconnectEvent extends CustomEvent<ReconnectDetail> {
212
- static readonly eventName = "helix-reconnect";
213
- constructor(detail: ReconnectDetail);
214
- }
215
- /** A label a reader rewrote on a board, and what it said before. */
216
- export interface RelabelDetail {
217
- /** What was relabelled: a connection, or a group, whose name the board draws. */
218
- target: 'edge' | 'group';
219
- /** Its name on the board. */
220
- name: string;
221
- /** A connection's ends, so a page that named none of its connections can find it. */
222
- from?: string | undefined;
223
- to?: string | undefined;
224
- /** The new label, empty for none. */
225
- label: string;
226
- /** The label before. */
227
- was: string;
228
- }
229
- /**
230
- * A label the board draws is about to change, and can be refused.
231
- *
232
- * **The board edits what it draws and asks for what it does not.** A
233
- * connection's label and a group's name are drawn by the board from an
234
- * attribute, so the board edits them in place and writes the attribute back,
235
- * the way it writes a card's position; a page holding them in state refuses
236
- * this and writes them there. A card's own content is the page's, which is why
237
- * that is `helix-canvas-edit`, a request, rather than this.
238
- */
239
- export declare class HelixBeforeRelabelEvent extends CustomEvent<RelabelDetail> {
240
- static readonly eventName = "helix-before-relabel";
241
- constructor(detail: RelabelDetail);
242
- }
243
- /** A label the board draws changed. */
244
- export declare class HelixRelabelEvent extends CustomEvent<RelabelDetail> {
245
- static readonly eventName = "helix-relabel";
246
- constructor(detail: RelabelDetail);
247
- }
248
- /**
249
- * A reader asked to edit a card: a double-click, or Enter or F2 on it.
250
- *
251
- * **A request, because what a card holds is the page's.** Text, a picture, a
252
- * chart: the board cannot know what editing any of those means, so it says
253
- * which card and the page opens its own editor, in place, in a dialog, or in a
254
- * panel beside the board.
255
- */
256
- export declare class HelixCanvasEditEvent extends CustomEvent<{
257
- name: string;
258
- }> {
259
- static readonly eventName = "helix-canvas-edit";
260
- constructor(detail: {
261
- name: string;
262
- });
263
- }
264
- /** Why a file field did not take a file. */
265
- export type Refusal = 'count' | 'invalid' | 'size' | 'type';
266
- /** One file a file field did not take, and why. */
267
- export interface RefusedFile {
268
- /** The file. */
269
- readonly file: File;
270
- /** What the field's `validate` said about it, where it was the one refusing. */
271
- readonly message?: string;
272
- /** Why it was not taken. */
273
- readonly reason: Refusal;
274
- }
275
- /** The files a file field refused. */
276
- export interface RejectDetail {
277
- /** Each refused file with its reason, in the order they arrived. */
278
- files: RefusedFile[];
279
- }
280
- /**
281
- * Files arrived at a file field and some were refused: by `accept`, by
282
- * `max-file-size`, by `max-files`, or by the field's own `validate`.
283
- *
284
- * A notification and not a request, because the files are already left out;
285
- * the event is how a page tells the reader why. Bubbles and is composed, so a
286
- * form around the field hears it.
287
- */
288
- export declare class HelixRejectEvent extends CustomEvent<RejectDetail> {
289
- static readonly eventName = "helix-reject";
290
- constructor(detail: RejectDetail);
291
- }
292
- /** What a reader asked to take off the board. */
293
- export interface RemoveDetail {
294
- /** The cards, by name. */
295
- nodes: string[];
296
- /**
297
- * The connections, including every one attached to a card being removed,
298
- * since a line to nothing is not drawn but its element would stay behind.
299
- * Each carries its ends as well as its name, so a page that named none of
300
- * its connections can still find them.
301
- */
302
- edges: Array<{
303
- name: string;
304
- from: string;
305
- to: string;
306
- }>;
307
- }
308
- /**
309
- * A reader asked for cards or connections to be taken away.
310
- *
311
- * A request for the reason `helix-connect` is one: the elements are the page's,
312
- * so the page removes them. Nothing to refuse, because nothing happens unless
313
- * the page acts.
314
- */
315
- export declare class HelixRemoveEvent extends CustomEvent<RemoveDetail> {
316
- static readonly eventName = "helix-remove";
317
- constructor(detail: RemoveDetail);
318
- }
319
- /**
320
- * Where a board is looking: the point at the middle of the view, in the
321
- * document's own units, and how far it is zoomed.
322
- *
323
- * The middle rather than a corner, so a view saved in one box and restored in
324
- * a box of another size shows the same thing in the middle of it.
325
- */
326
- export interface CanvasView {
327
- x: number;
328
- y: number;
329
- zoom: number;
330
- }
331
- /**
332
- * The board's view changed, however it changed: a drag, the wheel, a press on
333
- * a control, a card brought into view, or the board fitting itself.
334
- *
335
- * **One event for all of them**, because what a consumer keeping a minimap or a
336
- * saved position in step needs is where the board is now, not which of six
337
- * gestures put it there; `helix-canvas-pan` and `helix-canvas-zoom` still say
338
- * which control was pressed. Sent for every step of a drag, the way `input` is.
339
- */
340
- export declare class HelixCanvasViewEvent extends CustomEvent<CanvasView> {
341
- static readonly eventName = "helix-canvas-view";
342
- constructor(detail: CanvasView);
343
- }
344
- /** What `ViewportPanDetail` was called when only Map had one. */
345
- export type MapPanDetail = ViewportPanDetail;
346
- /** What `ViewportZoomDetail` was called when only Map had one. */
347
- export type MapZoomDetail = ViewportZoomDetail;
348
- /** Detail carried by `helix-navigate`. */
349
- export interface NavigateDetail {
350
- /**
351
- * The page asked for, as a number, where the component pages by number.
352
- *
353
- * Beside `value` rather than in place of it, because a calendar pages by
354
- * month and its `value` is a month.
355
- */
356
- page?: number;
357
- /** Where the view is moving to, in whatever the component pages by. */
358
- value: string;
359
- }
360
- /** Detail carried by `helix-filter`. */
361
- export interface FilterDetail {
362
- /** What the list is being narrowed to. */
363
- value: string;
364
- }
365
- /**
366
- * Detail carried by `helix-facet`.
367
- *
368
- * **Everything needed to draw the chip, so nothing has to be looked up again.**
369
- * A consumer hearing this renders a `FilterChip` from it and stops: the labels
370
- * are the reader's words and the names are their own model's, and both are here
371
- * because only the thing that read the declarations knows both.
372
- */
373
- export interface FacetDetail {
374
- /**
375
- * How many values the comparison in force takes.
376
- *
377
- * **What tells an empty filter from no filter.** `values` empty usually means
378
- * the field is not being filtered any more, and a consumer drops the chip; a
379
- * comparison of arity `none`, `is empty` or `is set`, is a filter that has no
380
- * values to carry and never will. Without this the two arrive identical, and
381
- * the thing that read the declaration is the only thing that could say which.
382
- */
383
- arity: 'many' | 'none' | 'one';
384
- /** What the consumer's model calls the field. */
385
- field: string;
386
- /** What a reader is shown for the field. */
387
- label: string;
388
- /** What the consumer's model calls the comparison in force. */
389
- operator: string;
390
- /**
391
- * The comparison as a reader sees it, and **empty for the field's usual one**.
392
- *
393
- * Passed straight to a chip's `operator-label`, which draws the segment only
394
- * where there is one. Deciding it here is the point: the thing that read the
395
- * field knows which of its operators is the default, and the chip never has
396
- * to.
397
- */
398
- operatorLabel: string;
399
- /** What the field is compared to, as the consumer's own values. */
400
- values: readonly string[];
401
- }
402
- /** Detail carried by `helix-read`. */
403
- export interface ReadDetail {
404
- /**
405
- * The state being asked for, as a boolean rather than a word that reads like
406
- * one, which is `helix-before-toggle`'s rule and for the same reason: `"false"` is
407
- * truthy and a consumer who forgets that marks everything read.
408
- */
409
- read: boolean;
410
- }
411
- /** Detail carried by `helix-send`. */
412
- export interface SendDetail {
413
- /** What the reader wrote, as they left it. */
414
- value: string;
415
- }
416
- /** Detail carried by `helix-sort`. */
417
- export interface SortDetail {
418
- /**
419
- * The order being asked for, as `field:direction`.
420
- *
421
- * **One string rather than a field and a direction beside it**, because a sort
422
- * is one fact and two properties holding half of it each is the mistake
423
- * `helix-table`'s `columns` string already made in this family: the headings
424
- * and the widths were two halves of one thing kept in two places with nothing
425
- * holding them together. `name:asc` is also what a URL query carries and what
426
- * an API takes, so a consumer syncing either does no translation.
427
- *
428
- * Empty means unsorted, which is a state a reader can ask for: a third click
429
- * on a sortable heading returns the set to the order it arrived in, and that
430
- * order is information the data came with.
431
- */
432
- value: string;
433
- }
434
- /** Detail carried by `helix-dismiss`. */
435
- export interface DismissDetail {
436
- /** Text content of the element asking to go, for identifying which it was. */
437
- label: string;
438
- }
439
- /** What a stop's own controls ask the tour to do. */
440
- export interface TourAskDetail {
441
- /**
442
- * Which control was pressed.
443
- */
444
- what: 'back' | 'next' | 'skip';
445
- }
446
- /**
447
- * A stop asking the tour to move.
448
- *
449
- * Composed and bubbling, because a stop is slotted into the root and the root
450
- * has to hear it across that boundary.
451
- *
452
- * **A class rather than a hand-rolled `CustomEvent`.** A dispatch is matched as
453
- * `new HelixSomethingEvent(`, so a raw `CustomEvent` is not held to being
454
- * declared and nothing carries it into the manifest: consumers can hear it and
455
- * cannot find it.
456
- */
457
- export declare class HelixTourAskEvent extends CustomEvent<TourAskDetail> {
458
- static readonly eventName = "helix-tour-ask";
459
- constructor(detail: TourAskDetail);
460
- }
461
- /**
462
- * The eyedropper opening, and closing again.
463
14
  *
464
- * Two events rather than one carrying a flag, because what a consumer does with
465
- * them is not symmetrical: the surface holding the picker has to get out of the
466
- * way for the sample and come back afterwards, and those are two moments with
467
- * different work in each.
468
- *
469
- * **A class rather than a bare `Event`.** The check that holds an event to being
470
- * declared reads `new Event(` as well as `new HelixSomethingEvent(`, so a
471
- * hand-rolled one is public API a consumer can hear and cannot find.
472
- *
473
- * No detail, because there is nothing to say beyond that it happened.
474
- */
475
- export declare class HelixSampleStartEvent extends Event {
476
- static readonly eventName = "helix-sample-start";
477
- constructor();
478
- }
479
- /** The eyedropper closing, whether or not a color was taken. */
480
- export declare class HelixSampleEndEvent extends Event {
481
- static readonly eventName = "helix-sample-end";
482
- constructor();
483
- }
484
- /**
485
- * Fired when an element asks to be taken away.
486
- *
487
- * A request rather than a notification: the element does not remove itself,
488
- * because the consumer owns the markup it is in and removing the node under
489
- * them would put their state and the document out of step. Cancelable, so
490
- * `preventDefault()` is a refusal.
491
- *
492
- * One verb for both shapes. A tag leaving a list and an announcement closing
493
- * itself are the same act from the element's side.
494
- */
495
- export declare class HelixDismissEvent extends CustomEvent<DismissDetail> {
496
- static readonly eventName = "helix-dismiss";
497
- constructor(detail: DismissDetail);
498
- }
499
- /**
500
- * Detail carried by every request that proposes a value.
501
- *
502
- * **`value` is a string, and the things that are not strings are the rule
503
- * rather than the exception to it.** Pagination's page, its page size, the
504
- * splitter's position and the carousel's index all announce through `String()`.
505
- * That is deliberate: an HTML value is a string, a consumer parses one back
506
- * with `Number()`, and nothing is lost on the way.
507
- *
508
- * A boolean is the case where it *is* lost, because `"false"` is truthy, so a
509
- * consumer who forgets to compare against the word gets the opposite answer and
510
- * no error. That is why checkedness has `helix-before-toggle` and its own boolean, and
511
- * it is the line to hold: **stringify a value, never a fact.** A new control
512
- * whose state is a boolean wants an event with a typed detail, not a `String()`
513
- * call here.
514
- *
515
- * **There is no `property` field.** Every verb in this file says by itself which
516
- * property a request is about, and two families sharing a verb are told apart by
517
- * the element rather than by a field: `composedPath()[0]` survives the retarget
518
- * that `event.target` does not.
519
- */
520
- export interface ChangeDetail {
521
- /** The value after the change. */
522
- value: string;
523
- }
524
- /**
525
- * A set is about to make a different child current, and can be refused.
526
- *
527
- * **Not a generic `helix-change`.** `Tabs` moving to another tab, `Tree` marking
528
- * another row and `Steps` advancing are not a value changing, they are a set
529
- * choosing, and the platform's word for a committed value would say the wrong
530
- * thing. `active` names which child is current, so `activate` is the verb, and
531
- * unlike `change` the platform has no claim on it.
532
- *
533
- * **This fires before the state moves.** Inside a handler `currentTarget.active`
534
- * still holds the previous value, and `detail.value` is a proposal another
535
- * listener may refuse, so a consumer who only wants to know which child is
536
- * current listens for `helix-activate` instead. `helix-select` is not that
537
- * notification either: it fires when an item is *chosen*, not when `active` is
538
- * assigned.
539
- *
540
- * The shape is the one `MixinControllerOpen` already has, a cancelable request
541
- * and a plain notification after the state has moved.
542
- */
543
- export declare class HelixBeforeActivateEvent extends CustomEvent<ChangeDetail> {
544
- static readonly eventName = "helix-before-activate";
545
- constructor(detail: ChangeDetail);
546
- }
547
- /**
548
- * A set has made a different child current.
549
- *
550
- * The notification half of `helix-before-activate`, dispatched after the state
551
- * has moved, so `currentTarget.active` is the new value and the detail is a fact
552
- * rather than a proposal.
553
- *
554
- * **Not cancelable**, for the reason every notification here is not: the
555
- * decision was taken by the event before it, and a second refusable event for
556
- * one transition is two answers to one question.
557
- *
558
- * **Prefixed, and it has to be.** `activate` unprefixed is not in any
559
- * `*EventMap` in the DOM library, checked rather than assumed, but the prefix is
560
- * what stops an event dispatched inside a shadow root and retargeted to the host
561
- * being mistaken for something the host's own contents sent.
562
- */
563
- export declare class HelixActivateEvent extends CustomEvent<ChangeDetail> {
564
- static readonly eventName = "helix-activate";
565
- constructor(detail: ChangeDetail);
566
- }
567
- /**
568
- * The reader asked the map to move, which is as far as this library goes.
569
- *
570
- * **Helix draws no map and moves nobody's.** A tile renderer is a library and
571
- * the frame around it is what this adds, so panning is a request the consumer
572
- * answers against whatever they slotted: MapLibre, Leaflet, Google, or their
573
- * own. The direction is in reading order rather than compass order, because the
574
- * control that sent it is a button a reader pressed and `start` on a
575
- * right-to-left page is east.
576
- *
577
- * Not cancelable. Nothing here moves on its own, and an event whose
578
- * `preventDefault` means nothing is an event that lies about what it offers.
579
- */
580
- export declare class HelixMapPanEvent extends CustomEvent<ViewportPanDetail> {
581
- static readonly eventName = "helix-map-pan";
582
- constructor(detail: MapPanDetail);
583
- }
584
- /**
585
- * The reader asked the map to zoom, and for the same reason it is a request.
586
- *
587
- * `by` is a direction rather than a level: a scale a consumer's map understands
588
- * is the consumer's to decide, and a frame that said "go to zoom 14" would be
589
- * asserting a numbering that Leaflet, MapLibre and a static tile server do not
590
- * agree on.
591
- */
592
- export declare class HelixMapZoomEvent extends CustomEvent<ViewportZoomDetail> {
593
- static readonly eventName = "helix-map-zoom";
594
- constructor(detail: MapZoomDetail);
595
- }
596
- /**
597
- * The reader asked the graph to move. A request, as a map's is: Helix draws no
598
- * graph, and the renderer the page slotted, or `connectGraph`, answers it.
599
- */
600
- export declare class HelixGraphPanEvent extends CustomEvent<ViewportPanDetail> {
601
- static readonly eventName = "helix-graph-pan";
602
- constructor(detail: ViewportPanDetail);
603
- }
604
- /** The reader asked the graph to zoom, a direction and not a level, as a map's is. */
605
- export declare class HelixGraphZoomEvent extends CustomEvent<ViewportZoomDetail> {
606
- static readonly eventName = "helix-graph-zoom";
607
- constructor(detail: ViewportZoomDetail);
608
- }
609
- /** Where each note was laid out, by its `id`, in the renderer's own units. */
610
- export interface GraphLayoutDetail {
611
- positions: Record<string, {
612
- x: number;
613
- y: number;
614
- z?: number | undefined;
615
- }>;
616
- }
617
- /**
618
- * A layout settled, with where it put every note. Keep the positions and hand
619
- * them back as each note's `x` and `y`, and the graph opens where the reader
620
- * left it, with no layout to run.
621
- */
622
- export declare class HelixGraphLayoutEvent extends CustomEvent<GraphLayoutDetail> {
623
- static readonly eventName = "helix-graph-layout";
624
- constructor(detail: GraphLayoutDetail);
625
- }
626
- /** What changed on a graph frame that the renderer has to hear. */
627
- export interface GraphPartChangeDetail {
628
- /**
629
- * `data` for the notes or the links, which are drawn again; `focus` for the
630
- * selected note or the depth, which change what is emphasized and shown;
631
- * `gestures` for which gestures the renderer takes.
632
- */
633
- kind: 'data' | 'focus' | 'gestures';
634
- }
635
- /**
636
- * The frame's notes, links, selection, depth or gestures changed, which the
637
- * connector hears and the renderer is told. It stays on the frame, being the
638
- * family's own bookkeeping rather than news for a page.
639
- */
640
- export declare class HelixGraphPartChangeEvent extends CustomEvent<GraphPartChangeDetail> {
641
- static readonly eventName = "helix-graph-part-change";
642
- constructor(detail: GraphPartChangeDetail);
643
- }
644
- /** One signal between two notes, as the frame's `signal()` sends it. */
645
- export interface GraphSignalDetail {
646
- /** The note the signal leaves, by its `id`. */
647
- from: string;
648
- /**
649
- * What the signal means, which colors it. Where none is given, the signal
650
- * turns from the first note's color to the second's as it crosses.
651
- */
652
- tone?: 'accent' | 'danger' | 'info' | 'neutral' | 'primary' | 'success' | 'warning' | undefined;
653
- /** The note the signal reaches, by its `id`. */
654
- to: string;
655
- }
656
- /**
657
- * Something passed between two notes, which the renderer draws traveling
658
- * from one to the other. The connector hears it and the renderer draws it; it
659
- * stays on the frame, being the family's own bookkeeping rather than news for
660
- * a page.
661
- */
662
- export declare class HelixGraphSignalEvent extends CustomEvent<GraphSignalDetail> {
663
- static readonly eventName = "helix-graph-signal";
664
- constructor(detail: GraphSignalDetail);
665
- }
666
- /**
667
- * The graph has been drawn whole, laid out and settled, sent once each time it
668
- * is connected, from the frame, which then matches `:state(ready)`.
669
- */
670
- export declare class HelixGraphReadyEvent extends Event {
671
- static readonly eventName = "helix-graph-ready";
672
- constructor();
673
- }
674
- /** Detail carried by `helix-graph-filter`. */
675
- export interface GraphFilterDetail {
676
- /** The groups the graph would hide, by name: every group the reader has turned off, after this press. */
677
- hidden: readonly string[];
678
- }
679
- /**
680
- * A reader pressed a group in the graph's legend, which would show or hide
681
- * its notes, sent from the frame before it does. Cancelable: cancel it to
682
- * keep the groups as they were, or to set `hiddenGroups` yourself.
683
- */
684
- export declare class HelixGraphFilterEvent extends CustomEvent<GraphFilterDetail> {
685
- static readonly eventName = "helix-graph-filter";
686
- constructor(detail: GraphFilterDetail);
687
- }
688
- /** A rotate request: turn by some degrees, or turn to a bearing. */
689
- export interface MapRotateDetail {
690
- /** Degrees to turn the map clockwise. Negative turns it counterclockwise. */
691
- by?: number;
692
- /** The bearing to turn the map to, in degrees clockwise from north. `0` faces north. */
693
- to?: number;
694
- }
695
- /** A tilt request, in degrees. */
696
- export interface MapTiltDetail {
697
- /** Degrees to tilt the map toward the horizon. Negative tilts it back toward flat. */
698
- by?: number;
699
- /** The tilt to go to, in degrees from looking straight down. `0` is flat. */
700
- to?: number;
701
- }
702
- /**
703
- * The user asked the map to rotate, from a rotate button or key. Turn your map
704
- * in response. Not cancelable, because the frame moves nothing itself.
705
- */
706
- export declare class HelixMapRotateEvent extends CustomEvent<MapRotateDetail> {
707
- static readonly eventName = "helix-map-rotate";
708
- constructor(detail: MapRotateDetail);
709
- }
710
- /**
711
- * The user asked the map to tilt, from a tilt button or key. Tilt your map in
712
- * response. Not cancelable, because the frame moves nothing itself.
713
- */
714
- export declare class HelixMapTiltEvent extends CustomEvent<MapTiltDetail> {
715
- static readonly eventName = "helix-map-tilt";
716
- constructor(detail: MapTiltDetail);
717
- }
718
- /** What changed on a part of a map: a line or a shape, or something standing on a place. */
719
- export interface MapPartChangeDetail {
720
- /**
721
- * `layer` for a route or an area, which is redrawn; `place` for a marker or
722
- * a position, which is moved; `cluster` for a marker gathered into another
723
- * or let go, which moves the frame's tab stop; `menu` for the frame's layers
724
- * menu opening, which asks for its map-type previews; `gestures` for which
725
- * gestures the map takes, which the renderer is told.
726
- */
727
- kind: 'cluster' | 'gestures' | 'layer' | 'menu' | 'place';
728
- }
729
- /**
730
- * A marker, a position, a route or an area changed what it says: where it is,
731
- * its points, its progress, its name.
732
- *
733
- * **Said rather than reflected.** The connector and the frame follow the
734
- * parts, and heard them through their attributes until the parts reflected
735
- * nothing CSS selects on: a live position's coordinates are state, and a
736
- * route's points are a payload, neither of which belongs in the markup. It
737
- * bubbles to the frame, whose light-DOM children the parts are, and goes no
738
- * further, being the family's own bookkeeping rather than news for a page.
739
- */
740
- export declare class HelixMapPartChangeEvent extends CustomEvent<MapPartChangeDetail> {
741
- static readonly eventName = "helix-map-part-change";
742
- constructor(detail: MapPartChangeDetail);
743
- }
744
- /** What a cluster a reader pressed holds. */
745
- export interface MapClusterDetail {
746
- /**
747
- * A points layer's count, as the connector keyed it, where the cluster is
748
- * one the renderer drew rather than one of markers.
749
- */
750
- key?: string | undefined;
751
- /** The names of the places it stands for, the one it is drawn as first, where they are known. */
752
- labels: string[];
753
- }
754
- /**
755
- * A reader pressed a cluster, one marker standing for several that would have
756
- * drawn over each other.
757
- *
758
- * **Opened by zooming in**, which the connector does, framing the places the
759
- * cluster holds, as pressing one does on every map a reader has used. Told
760
- * rather than asked: a page that lists them in a panel instead connects with
761
- * `clusterZoom: false`. Sent from the marker the cluster is drawn as, and
762
- * bubbles through the frame to the page.
763
- */
764
- export declare class HelixMapClusterEvent extends CustomEvent<MapClusterDetail> {
765
- static readonly eventName = "helix-map-cluster";
766
- constructor(detail: MapClusterDetail);
767
- }
768
- /**
769
- * The map has been drawn whole: its style, every tile the view needs, and the
770
- * ground raised where it has terrain. Sent once each time a map is connected,
771
- * from the frame, which then matches `:state(ready)`.
772
- *
773
- * **What a page waits on to show a map that is finished**, where it would
774
- * otherwise watch it draw in stages: the streets, then the imagery tile by
775
- * tile, then the ground rising under the markers about half a second in. The
776
- * shapes the frame draws are left out of "whole", since a route that animates
777
- * is redrawn every frame and would never count as drawn.
778
- */
779
- export declare class HelixMapReadyEvent extends Event {
780
- static readonly eventName = "helix-map-ready";
781
- constructor();
782
- }
783
- /** A message is about to be pinned or unpinned, and can be refused. */
784
- export declare class HelixBeforePinEvent extends CustomEvent<ChangeDetail> {
785
- static readonly eventName = "helix-before-pin";
786
- constructor(detail: ChangeDetail);
787
- }
788
- /**
789
- * A transcript was pinned to the bottom, or let go of it.
790
- *
791
- * The notification half of `helix-before-pin`, sent once `pinned` has moved,
792
- * so `currentTarget.pinned` is the new state and `detail.value` says it as
793
- * `true` or `false`. Not cancelable: the decision was the request's.
794
- */
795
- export declare class HelixPinEvent extends CustomEvent<ChangeDetail> {
796
- static readonly eventName = "helix-pin";
797
- constructor(detail: ChangeDetail);
798
- }
799
- /** A divider is about to move, and can be refused. */
800
- export declare class HelixBeforeResizeEvent extends CustomEvent<ChangeDetail> {
801
- static readonly eventName = "helix-before-resize";
802
- constructor(detail: ChangeDetail);
803
- }
804
- /**
805
- * A divider settled somewhere new.
806
- *
807
- * The notification half of `helix-before-resize`, sent once `position` has
808
- * moved, with the new position. Not cancelable: the decision was the
809
- * request's.
810
- *
811
- * **Past tense, because `helix-resize` was already taken** by a measurement,
812
- * the height a sandboxed preview reports for what it drew, and one name cannot
813
- * carry both.
814
- */
815
- export declare class HelixResizedEvent extends CustomEvent<ChangeDetail> {
816
- static readonly eventName = "helix-resized";
817
- constructor(detail: ChangeDetail);
818
- }
819
- /**
820
- * The divider between a sandbox's panes is about to move, and can be refused.
821
- *
822
- * Its own verb rather than a `helix-before-resize` carrying which divider moved:
823
- * a sandbox has two, and they were told apart by a field on a detail every other
824
- * request in this file also carries.
825
- */
826
- export declare class HelixBeforeSplitEvent extends CustomEvent<ChangeDetail> {
827
- static readonly eventName = "helix-before-split";
828
- constructor(detail: ChangeDetail);
829
- }
830
- /**
831
- * The divider between a sandbox's panes settled somewhere new.
832
- *
833
- * The notification half of `helix-before-split`, sent once `split` has moved,
834
- * with the lead pane's new share. Not cancelable: the decision was the
835
- * request's.
836
- */
837
- export declare class HelixSplitEvent extends CustomEvent<ChangeDetail> {
838
- static readonly eventName = "helix-split";
839
- constructor(detail: ChangeDetail);
840
- }
841
- /**
842
- * A sandbox's panel is about to change height, and can be refused.
843
- *
844
- * The sibling of `helix-before-split`, and named for the divider rather than for
845
- * the axis because a reader binding one of the two is choosing which divider they
846
- * care about. `value` is pixels here and a percentage there, which is what each
847
- * property already publishes.
848
- */
849
- export declare class HelixBeforePanelResizeEvent extends CustomEvent<ChangeDetail> {
850
- static readonly eventName = "helix-before-panel-resize";
851
- constructor(detail: ChangeDetail);
852
- }
853
- /**
854
- * A sandbox's panel settled at a new height.
855
- *
856
- * The notification half of `helix-before-panel-resize`, sent once `panelSize`
857
- * has moved, with the height in pixels. Not cancelable: the decision was the
858
- * request's.
859
- */
860
- export declare class HelixPanelResizeEvent extends CustomEvent<ChangeDetail> {
861
- static readonly eventName = "helix-panel-resize";
862
- constructor(detail: ChangeDetail);
863
- }
864
- /** A pane is about to collapse or reopen, and can be refused. */
865
- export declare class HelixBeforeCollapseEvent extends CustomEvent<ChangeDetail> {
866
- static readonly eventName = "helix-before-collapse";
867
- constructor(detail: ChangeDetail);
868
- }
869
- /**
870
- * A pane shut or reopened.
871
- *
872
- * The notification half of `helix-before-collapse`, sent once `collapsed` has
873
- * moved. `detail.value` is the side that is shut, or empty where both panes
874
- * are open. Not cancelable: the decision was the request's.
875
- */
876
- export declare class HelixCollapseEvent extends CustomEvent<ChangeDetail> {
877
- static readonly eventName = "helix-collapse";
878
- constructor(detail: ChangeDetail);
879
- }
880
- /** Source is about to be edited, and can be refused. */
881
- export declare class HelixBeforeEditEvent extends CustomEvent<ChangeDetail> {
882
- static readonly eventName = "helix-before-edit";
883
- constructor(detail: ChangeDetail);
884
- }
885
- /**
886
- * Source was edited.
887
- *
888
- * The notification half of `helix-before-edit`, sent once the pane holds the
889
- * new source, with that source. Not cancelable: the decision was the
890
- * request's.
891
- */
892
- export declare class HelixEditEvent extends CustomEvent<ChangeDetail> {
893
- static readonly eventName = "helix-edit";
894
- constructor(detail: ChangeDetail);
895
- }
896
- /**
897
- * A value is about to change, and the change can be refused.
898
- *
899
- * **The request half of every value control.** It announces the value being
900
- * *proposed*, before anything moves, so a listener calling `preventDefault()`
901
- * refuses it and the control stays where it was. That is how a consumer takes
902
- * one decision without declaring a mode, which is what 294 settled: the element
903
- * always owns and applies its state, and refusing is the way to take it over.
904
- *
905
- * **The notification is native and separate.** Once this has gone out and the
906
- * value has moved, the control announces it again under the platform's own
907
- * name, `input` while a reader is editing and `change` when they are done, so
908
- * `onChange` in React and `onchange=` in HTML both reach it and
909
- * `currentTarget.value` is correct by the time a handler reads it. This event
910
- * carries the detail because at the moment it fires the value is not on the
911
- * element yet.
912
- *
913
- * **`announcesInput` picks which native notification fires, not which name this
914
- * carries.** Granularity is the platform's own distinction, `input` against
915
- * `change`; the request is always this one event.
916
- */
917
- export declare class HelixBeforeChangeEvent extends CustomEvent<ChangeDetail> {
918
- static readonly eventName = "helix-before-change";
919
- constructor(detail: ChangeDetail);
920
- }
921
- /**
922
- * A checked state is about to change, and the change can be refused.
923
- *
924
- * **Its own event rather than a `helix-before-change` carrying a boolean.**
925
- * Through the value event the state arrives as `String(checked)`, so a consumer
926
- * receives the string `"false"`, which is truthy, and a test asserting the value
927
- * passes on that bug. A control whose state is a boolean wants an event with a
928
- * typed boolean in it.
929
- *
930
- * The notification is native, as it is for a value: the control relays `change`
931
- * from the inner input and announces `input` beside it, so `onChange` reads
932
- * `currentTarget.checked` and gets a boolean from the platform.
933
- *
934
- * It also ends a collision: Checkbox Group listened for its boxes' change and
935
- * dispatched its own under the same name from the same host, so it needed
936
- * `stopImmediatePropagation` to keep a consumer from receiving one box's boolean
937
- * alongside the whole set. Two names, two facts.
938
- */
939
- export declare class HelixBeforeToggleEvent extends CustomEvent<ToggleDetail> {
940
- static readonly eventName = "helix-before-toggle";
941
- constructor(detail: ToggleDetail);
942
- }
943
- /** Detail carried by `helix-scrolled`. */
944
- export interface ScrolledDetail {
945
- /**
946
- * Whether the page is scrolled away from the top, as a boolean and not a word
947
- * that reads like one. Follows `helix-before-toggle`'s rule for the same reason.
948
- */
949
- scrolled: boolean;
950
- }
951
- /** Detail carried by `helix-before-toggle`. */
952
- export interface ToggleDetail {
953
- /** The state being asked for, as a boolean and not a word that reads like one. */
954
- checked: boolean;
955
- }
956
- /** Detail carried by `helix-create`. */
957
- export interface CreateDetail {
958
- /** What the reader typed, which is being offered as a new answer. */
959
- value: string;
960
- }
961
- /**
962
- * The reader asked for something the list does not hold.
963
- *
964
- * Cancelable, and announced before anything is applied, because the options are
965
- * the consumer's own light DOM and no component here writes into it. What the
966
- * control can do is say what was asked for and take the value; putting an
967
- * option in the list, or a row in a database, is the consumer's, and a consumer
968
- * who validates first refuses this and adds nothing.
969
- *
970
- * The detail carries the text as typed, not a slug of it. Trimming or lowering
971
- * it here would be this element deciding what a name means, and a consumer who
972
- * wants an identifier can make one from what they were given.
973
- */
974
- export declare class HelixCreateEvent extends CustomEvent<CreateDetail> {
975
- static readonly eventName = "helix-create";
976
- constructor(detail: CreateDetail);
977
- }
978
- /** Detail carried by `helix-aura-fallback`. */
979
- export interface AuraFallbackDetail {
980
- /**
981
- * Why the gradient shows: `software` for a renderer that draws on the CPU,
982
- * `unavailable` for no WebGL or a shader the browser refused, and `lost` for
983
- * a context the browser took back, on a GPU reset or past its limit of about
984
- * sixteen.
985
- */
986
- reason: 'lost' | 'software' | 'unavailable';
987
- }
988
- /**
989
- * An aura stopped drawing its shader and shows its gradient, and says why.
990
- *
991
- * Sent each time it falls back, from the aura, which then matches
992
- * `:state(fallback)` until it draws again. Not cancelable: there is nothing
993
- * left to refuse.
994
- */
995
- export declare class HelixAuraFallbackEvent extends CustomEvent<AuraFallbackDetail> {
996
- static readonly eventName = "helix-aura-fallback";
997
- constructor(detail: AuraFallbackDetail);
998
- }
999
- /**
1000
- * A reader cleared the value: an input's clear button emptied the field, or a
1001
- * clearable rating went back to unrated.
1002
- *
1003
- * Sent after the value is cleared, and after the `input` and `change` the
1004
- * clear sends. Carries nothing, because the value is the cleared one.
1005
- */
1006
- export declare class HelixClearEvent extends Event {
1007
- static readonly eventName = "helix-clear";
1008
- constructor();
1009
- }
1010
- /**
1011
- * A press put nothing on the clipboard: the browser did not allow the write,
1012
- * such as on a page without the clipboard permission, or there was nothing to
1013
- * copy.
1014
- */
1015
- export declare class HelixCopyErrorEvent extends Event {
1016
- static readonly eventName = "helix-copy-error";
1017
- constructor();
1018
- }
1019
- /**
1020
- * A reader asked for more items: a feed's or a table's `load-more` button, or
1021
- * a list scrolled near its end. Append them, and set `loading` while they are
1022
- * on their way.
1023
- *
1024
- * Carries nothing, because what comes next is the consumer's to know. Not
1025
- * cancelable: nothing is loaded until the consumer loads it.
1026
- */
1027
- export declare class HelixLoadMoreEvent extends Event {
1028
- static readonly eventName = "helix-load-more";
1029
- constructor();
1030
- }
1031
- /**
1032
- * A lazy branch opened and asks for its children: a tree item with `lazy`.
1033
- * Sent from the item, so `target` is the branch to fill.
1034
- *
1035
- * Carries nothing, because the children are the consumer's to fetch. Not
1036
- * cancelable: the branch is already open, and says it is busy until children
1037
- * arrive.
1038
- */
1039
- export declare class HelixLoadEvent extends Event {
1040
- static readonly eventName = "helix-load";
1041
- constructor();
1042
- }
1043
- /** Detail carried by `helix-range-change`. */
1044
- export interface RangeDetail {
1045
- /** The index of the first item on screen. */
1046
- first: number;
1047
- /** One past the index of the last item on screen. */
1048
- last: number;
1049
- }
1050
- /**
1051
- * The items on screen changed: a virtual list was scrolled or resized, or its
1052
- * items changed. Carries the new range, which the list's `range` also holds.
1053
- * Not cancelable: the list has already moved.
1054
- */
1055
- export declare class HelixRangeChangeEvent extends CustomEvent<RangeDetail> {
1056
- static readonly eventName = "helix-range-change";
1057
- constructor(detail: RangeDetail);
1058
- }
1059
- /**
1060
- * Rows opened or closed in place: a data table's tree of rows. Carries every
1061
- * open row's key, separated by commas, which the table's `expanded` also
1062
- * holds. Not cancelable: the rows have already moved.
1063
- */
1064
- export declare class HelixExpandEvent extends CustomEvent<ChangeDetail> {
1065
- static readonly eventName = "helix-expand";
1066
- constructor(detail: ChangeDetail);
1067
- }
1068
- /**
1069
- * A sequence played to its last entry and stopped there: a video playlist
1070
- * with no `repeat`. Carries nothing, because the playlist still holds the last
1071
- * entry. Not cancelable: playback has already ended.
1072
- */
1073
- export declare class HelixEndEvent extends Event {
1074
- static readonly eventName = "helix-end";
1075
- constructor();
1076
- }
1077
- /** Detail carried by `helix-typing`. */
1078
- export interface TypingDetail {
1079
- /** Whether the user is writing now, as a boolean and not a word that reads like one. */
1080
- typing: boolean;
1081
- }
1082
- /**
1083
- * The user started or stopped writing: a chat composer, for a typing
1084
- * indicator on the other side. Carries which, as the composer's `typing` does.
1085
- * Not cancelable: it reports what the user did.
1086
- */
1087
- export declare class HelixTypingEvent extends CustomEvent<TypingDetail> {
1088
- static readonly eventName = "helix-typing";
1089
- constructor(detail: TypingDetail);
1090
- }
1091
- /**
1092
- * A reader acted on a row: Enter on a list row, or a press in a list that
1093
- * selects nothing. Sent from the row, so `target` is the row acted on.
1094
- *
1095
- * Carries nothing, because the row is the whole of the answer. Not cancelable:
1096
- * a row with a link follows it and sends nothing, so there is no default left
1097
- * to refuse.
1098
- */
1099
- export declare class HelixActionEvent extends Event {
1100
- static readonly eventName = "helix-action";
1101
- constructor();
1102
- }
1103
- /**
1104
- * A checked state changed after `helix-before-toggle` let it: a map layer
1105
- * shown or hidden from the layers menu. Sent from what changed, with the state
1106
- * it now holds.
1107
- *
1108
- * **Not the native `toggle`.** That one is a `ToggleEvent` saying a popover or
1109
- * a `<details>` opened or closed, with `newState` of `open` or `closed`, and a
1110
- * layer shown on a map is neither: it is the request's own verb without
1111
- * `before`, carrying the same `checked` the request did.
1112
- */
1113
- export declare class HelixToggleEvent extends CustomEvent<ToggleDetail> {
1114
- static readonly eventName = "helix-toggle";
1115
- constructor(detail: ToggleDetail);
1116
- }
1117
- /** Detail carried by `helix-copy`. */
1118
- export interface CopyDetail {
1119
- /** What was put on the clipboard. */
1120
- value: string;
1121
- }
1122
- /**
1123
- * Something was copied to the clipboard.
1124
- *
1125
- * Not cancelable, and deliberately: it is announced after the write, because a
1126
- * clipboard write is a permission the platform may refuse and there is nothing
1127
- * useful to report until it has either happened or not.
1128
- */
1129
- export declare class HelixCopyEvent extends CustomEvent<CopyDetail> {
1130
- static readonly eventName = "helix-copy";
1131
- constructor(detail: CopyDetail);
1132
- }
1133
- /** Detail carried by `helix-console`. */
1134
- export interface ConsoleDetail {
1135
- /** How the message was logged. */
1136
- level: 'log' | 'info' | 'warn' | 'error';
1137
- /** The message, already flattened to text. */
1138
- text: string;
1139
- }
1140
- /**
1141
- * Fired when something being previewed writes to the console.
1142
- *
1143
- * Carries text rather than the logged values. The preview is a separate
1144
- * document, so what arrives has crossed `postMessage` and been through
1145
- * structured clone: a DOM node or a function does not survive that, and half a
1146
- * value is worse than a string of it.
1147
- */
1148
- export declare class HelixConsoleEvent extends CustomEvent<ConsoleDetail> {
1149
- static readonly eventName = "helix-console";
1150
- constructor(detail: ConsoleDetail);
1151
- }
1152
- /** Detail carried by `helix-resize`. */
1153
- export interface ResizeDetail {
1154
- /** How tall the content is, in CSS pixels. */
1155
- size: number;
1156
- }
1157
- /**
1158
- * Fired when something reports how much room its content actually needs.
1159
- *
1160
- * **A measurement crossing a boundary the measurer is on the far side of.** A
1161
- * sandboxed preview is its own document: nothing outside it can read the height
1162
- * of what it drew, because the frame is opaque and a box sized from the outside
1163
- * only ever reports the box. So the document measures itself and says so, and
1164
- * this is what it says it with.
1165
- *
1166
- * A number rather than a box, because the width is the container's to decide and
1167
- * only the block size follows the content. A consumer that wants to act on it
1168
- * clamps it: what arrives is what was drawn, which for an empty example is
1169
- * nearly nothing and for a long one is more than a page.
1170
- */
1171
- export declare class HelixResizeEvent extends CustomEvent<ResizeDetail> {
1172
- static readonly eventName = "helix-resize";
1173
- constructor(detail: ResizeDetail);
1174
- }
1175
- /**
1176
- * Fired when a header crosses the threshold between resting at the top of the
1177
- * page and floating over it.
1178
- *
1179
- * **The threshold lives in a custom state, and is announced rather than
1180
- * reflected.** A `data-scrolled` on the host is an attribute nobody rendered: a
1181
- * server sends the element without it and the element adds it on upgrade, so a
1182
- * framework hydrating the page finds markup that no longer matches what it sent.
1183
- * A custom state is deliberately not in the DOM and therefore not something a
1184
- * hydration pass can disagree with.
1185
- *
1186
- * That closes the observability an attribute would accidentally provide. A
1187
- * `MutationObserver` can watch an attribute and there is no equivalent for
1188
- * `ElementInternals.states`, so a component holding a boolean nothing can read
1189
- * is a component with a private opinion its consumers demonstrably need: the
1190
- * bar's own backdrop is drawn by the page around it, and the page has to know
1191
- * when to light it.
1192
- *
1193
- * Not cancelable. It reports where the page is rather than asking permission to
1194
- * be there, and refusing it would leave the state and the announcement
1195
- * disagreeing.
1196
- *
1197
- * The hysteresis stays inside the header, which is the point of announcing at
1198
- * all: a consumer listening to `scroll` itself would be a second opinion on
1199
- * when the page counts as scrolled, and the two would part company at the eight
1200
- * pixels of travel this waits for.
1201
- */
1202
- export declare class HelixScrolledEvent extends CustomEvent<ScrolledDetail> {
1203
- static readonly eventName = "helix-scrolled";
1204
- constructor(detail: ScrolledDetail);
1205
- }
1206
- /** Detail carried by `helix-caret`. */
1207
- export interface CaretDetail {
1208
- /** One-based column, counted in characters from the start of the line. */
1209
- column: number;
1210
- /** One-based line. */
1211
- line: number;
1212
- }
1213
- /**
1214
- * Fired when the cursor moves in a text editor.
1215
- *
1216
- * Not cancelable, unlike everything else here. The others announce something
1217
- * about to happen and a listener can refuse it; this one reports where the
1218
- * caret already is, and there is nothing left to refuse.
1219
- *
1220
- * It fires on every keystroke and every arrow press, which is why the status
1221
- * bar reads it from the DOM rather than through a framework's state: routing a
1222
- * caret position through React would re-render the workbench on every cursor
1223
- * move.
1224
- */
1225
- export declare class HelixCaretEvent extends CustomEvent<CaretDetail> {
1226
- static readonly eventName = "helix-caret";
1227
- constructor(detail: CaretDetail);
1228
- }
1229
- /** Detail carried by `helix-select`. */
1230
- export interface SelectDetail {
1231
- /**
1232
- * Whether the reader took the row's second destination rather than its first.
1233
- *
1234
- * Absent everywhere but a command palette, where a row can carry two: the
1235
- * value alone would say which was taken, since the two differ, but only by
1236
- * comparing strings a consumer would have to keep in step with the markup.
1237
- * A flag says it outright.
1238
- */
1239
- alternate?: boolean;
1240
- /**
1241
- * The link of a row that is a link, which the browser follows once the event
1242
- * is done unless it is canceled. A client-side router cancels it and follows
1243
- * the link itself.
1244
- */
1245
- href?: string;
1246
- /** Value of the item the reader chose. */
1247
- value: string;
1248
- }
1249
- /**
1250
- * Fired when a component moves the view it is showing, rather than its value.
1251
- *
1252
- * A calendar paging to another month is not choosing a date, and the two have
1253
- * to be separable: a consumer driving the view needs to hear that it moved
1254
- * without being told the answer changed. `helix-change` belongs to the value,
1255
- * and giving it both jobs would make either one unusable on its own.
1256
- */
1257
- export declare class HelixNavigateEvent extends CustomEvent<NavigateDetail> {
1258
- static readonly eventName = "helix-navigate";
1259
- constructor(detail: NavigateDetail);
1260
- }
1261
- /** Detail carried by `helix-complete`. */
1262
- export interface CompleteDetail {
1263
- /** What the control now holds, in full. */
1264
- value: string;
1265
- }
1266
- /**
1267
- * Fired when a control that fills up has filled.
1268
- *
1269
- * The moment a code entry exists for: a six-character field is worth submitting
1270
- * the instant the sixth character lands, and a consumer watching `helix-change`
1271
- * has to know the length and compare it on every keystroke to find that moment
1272
- * themselves.
1273
- *
1274
- * Separate from `helix-change` rather than a flag on it, because they are
1275
- * answered by different code: one keeps a value in step and the other decides
1276
- * whether to send a form. A listener that only cares about the second says so by
1277
- * which event it listens for.
1278
- *
1279
- * `complete` is free as a verb. React's synthetic system claims `change`,
1280
- * `input`, `submit`, `reset`, `copy`, `paste`, `scroll`, `drag`, `focus` and
1281
- * `blur`, measured, and this is none of them.
1282
- *
1283
- * Not cancelable. It reports that something already happened, which is the same
1284
- * reason `helix-caret` is not: there is nothing left to refuse once the last
1285
- * character is in the box.
1286
- */
1287
- export declare class HelixCompleteEvent extends CustomEvent<CompleteDetail> {
1288
- static readonly eventName = "helix-complete";
1289
- constructor(detail: CompleteDetail);
1290
- }
1291
- /**
1292
- * Fired when the reader offers something they wrote.
1293
- *
1294
- * **Cancelable, and the composer clears only when nobody refused.** Sending is a
1295
- * round trip: a composer that empties itself and then hears the request failed
1296
- * has thrown away the only copy of what the reader typed, and a reader who has
1297
- * just written three paragraphs is exactly who cannot afford that. Refusing
1298
- * leaves the text where it is.
1299
- *
1300
- * Not `helix-create`, which is the combobox's event for a value a list does not
1301
- * hold, and not `helix-change`, because nothing about a value changed: the
1302
- * reader finished something and handed it over.
1303
- */
1304
- export declare class HelixSendEvent extends CustomEvent<SendDetail> {
1305
- static readonly eventName = "helix-send";
1306
- constructor(detail: SendDetail);
1307
- }
1308
- /**
1309
- * Fired when something a user comes back to is marked read, or unread.
1310
- *
1311
- * **Read state is reported rather than owned.** Marking a notification read is
1312
- * usually a round trip, and a component that flips the state itself and then
1313
- * hears the request failed has already told the reader something untrue. So this
1314
- * is cancelable, and refusing it leaves the item alone; the component applies
1315
- * it once nobody has refused, which is the same contract every other axis in
1316
- * the library uses.
1317
- *
1318
- * Bubbles and is composed, so a feed hears its own items: one handler on the
1319
- * list serves every notification in it, which is what a consumer syncing to a
1320
- * server actually wants.
1321
- */
1322
- export declare class HelixReadEvent extends CustomEvent<ReadDetail> {
1323
- static readonly eventName = "helix-read";
1324
- constructor(detail: ReadDetail);
1325
- }
1326
- /**
1327
- * Fired when the reader asks for a different order.
1328
- *
1329
- * Cancelable, and refusing it leaves the order alone, which is what makes a
1330
- * server-side sort expressible: the consumer refuses the local reorder, fetches,
1331
- * and hands back a new set. This is the element reporting that a heading was
1332
- * clicked, before it acts on it.
1333
- *
1334
- * Not `helix-change`: nothing about the data changed, only the order it is read
1335
- * in, and a consumer listening for changes to a value should not hear a sort.
1336
- * That is the same distinction `helix-filter` is drawn on.
1337
- */
1338
- export declare class HelixSortEvent extends CustomEvent<SortDetail> {
1339
- static readonly eventName = "helix-sort";
1340
- constructor(detail: SortDetail);
1341
- }
1342
- /**
1343
- * The rows are in a different order.
1344
- *
1345
- * The notification after `helix-sort`, sent once `sort` has moved, with the
1346
- * order now in force. Not cancelable: the decision was the request's.
1347
- *
1348
- * **Past tense, because the plain verb is the request.** `helix-sort` was
1349
- * cancelable before the library had a word for its notification, and
1350
- * consumers bind it by that name, so the notification takes the one after it.
1351
- */
1352
- export declare class HelixSortedEvent extends CustomEvent<SortDetail> {
1353
- static readonly eventName = "helix-sorted";
1354
- constructor(detail: SortDetail);
1355
- }
1356
- /**
1357
- * Fired when the reader changes which values a field is filtered by.
1358
- *
1359
- * **Not `helix-filter`, which is a different thing already taken.** That one
1360
- * says a list narrowed itself to a string, and `Data Table` and `Listbox` both
1361
- * dispatch it with exactly that meaning. This one carries a structured filter:
1362
- * a field, a comparison and a set of values, which is a shape neither of those
1363
- * has and neither should grow.
1364
- *
1365
- * Cancelable, and refusing it is how a consumer takes the decision for one
1366
- * interaction, the way `requestChange` documents for every stateful change here.
1367
- */
1368
- export declare class HelixFacetEvent extends CustomEvent<FacetDetail> {
1369
- static readonly eventName = "helix-facet";
1370
- constructor(detail: FacetDetail);
1371
- }
1372
- /**
1373
- * Fired when a component narrows what it is showing.
1374
- *
1375
- * Filtering hides rather than removes, so nothing about the value changes and
1376
- * `helix-change` would be a lie. What a consumer wants to know is that the list
1377
- * in front of the reader is no longer the whole list.
1378
- */
1379
- export declare class HelixFilterEvent extends CustomEvent<FilterDetail> {
1380
- static readonly eventName = "helix-filter";
1381
- constructor(detail: FilterDetail);
1382
- }
1383
- /**
1384
- * A component is showing a narrower or a wider set.
1385
- *
1386
- * The notification after `helix-filter`, sent once the query has moved, with
1387
- * the query now in force. Not cancelable, and past tense for the reason
1388
- * `helix-sorted` is.
1389
- */
1390
- export declare class HelixFilteredEvent extends CustomEvent<FilterDetail> {
1391
- static readonly eventName = "helix-filtered";
1392
- constructor(detail: FilterDetail);
1393
- }
1394
- /** What a shortcut reports when its chord is pressed. */
1395
- export interface ShortcutDetail {
1396
- /**
1397
- * The chord that matched, as it was written.
1398
- *
1399
- * Given back rather than left to be remembered, so one handler can serve
1400
- * several keys and answer by comparing what it was told.
1401
- */
1402
- keys: string;
1403
- }
1404
- /**
1405
- * Fired when a shortcut's chord is pressed.
1406
- *
1407
- * Cancelable, and the key event is only consumed where this is not refused: a
1408
- * consumer that decides the moment is wrong, a dialog is over the control or
1409
- * the reader is mid-composition, calls `preventDefault()` and the keystroke
1410
- * goes on to whatever would have had it.
1411
- */
1412
- export declare class HelixShortcutEvent extends CustomEvent<ShortcutDetail> {
1413
- static readonly eventName = "helix-shortcut";
1414
- constructor(detail: ShortcutDetail);
1415
- }
1416
- /**
1417
- * Fired when the reader selects an item in a set.
1418
- *
1419
- * Bubbles and is composed, because this is how a set coordinates: a tree, a
1420
- * tab list and a toggle group all learn which of their children was chosen by
1421
- * hearing it arrive.
1422
- */
1423
- export declare class HelixSelectEvent extends CustomEvent<SelectDetail> {
1424
- static readonly eventName = "helix-select";
1425
- constructor(detail: SelectDetail);
1426
- }
1427
- /**
1428
- * A set holds a different selection.
1429
- *
1430
- * The notification after a `helix-select` that asked to change what is
1431
- * selected, sent once the selection has moved, with the selection now in
1432
- * force. Not cancelable, and past tense for the reason `helix-sorted` is.
1433
- */
1434
- export declare class HelixSelectedEvent extends CustomEvent<SelectDetail> {
1435
- static readonly eventName = "helix-selected";
1436
- constructor(detail: SelectDetail);
1437
- }
1438
- /**
1439
- * Fired when the reader asks for the columns in a different order.
1440
- *
1441
- * Cancelable, and refusing it leaves the columns where they were, so a consumer
1442
- * who stores the order, in a URL or a preference, can take the decision the way
1443
- * a server-side sort takes `helix-sort`. The detail is the whole order as
1444
- * space-separated fields rather than one move, because the order is the fact a
1445
- * consumer stores, and a move is only meaningful against an order they would
1446
- * then have to keep in step.
1447
- *
1448
- * Not `helix-sort`: that reorders the rows, this reorders the columns, and a
1449
- * consumer listening for one should not hear the other.
1450
- */
1451
- export declare class HelixReorderEvent extends CustomEvent<ChangeDetail> {
1452
- static readonly eventName = "helix-reorder";
1453
- constructor(detail: ChangeDetail);
1454
- }
1455
- /**
1456
- * The columns are in a different order.
1457
- *
1458
- * The notification after `helix-reorder`, sent once the order has moved, with
1459
- * every field in the new one. Not cancelable, and past tense for the reason
1460
- * `helix-sorted` is.
1461
- */
1462
- export declare class HelixReorderedEvent extends CustomEvent<ChangeDetail> {
1463
- static readonly eventName = "helix-reordered";
1464
- constructor(detail: ChangeDetail);
1465
- }
1466
- /**
1467
- * Fired when a reader reaches the oldest turn a transcript holds, while there are
1468
- * older ones to fetch.
1469
- *
1470
- * **A report of where the reader is, not a request to be granted**, so it is not
1471
- * cancelable: there is nothing for the transcript to do if nobody refuses, and
1472
- * nothing to stop if somebody does. The consumer answers by fetching, and says
1473
- * so through the transcript's `history` while the older turns are on their way.
1474
- *
1475
- * No detail. The consumer holds the transcript and knows its oldest turn, which
1476
- * is the one thing a fetch needs.
1477
- */
1478
- export declare class HelixHistoryEvent extends CustomEvent<Record<string, never>> {
1479
- static readonly eventName = "helix-history";
1480
- constructor();
1481
- }
1482
- /**
1483
- * Every event this file publishes, and the one place a new one is added.
15
+ * **One module per class, and this file gathers them.** Each class is in a
16
+ * file of its own beside this one, named after its event (`before-open.ts`
17
+ * holds `HelixBeforeOpenEvent`), and declares its name as `static readonly
18
+ * eventName`, which is how `helix component audit` finds them. What they carry
19
+ * is in `details.ts`, types only. This file re-exports both, keeps the
20
+ * registry, and types `addEventListener`.
21
+ *
22
+ * **Apart because a bundle keeps a class it never uses.** The compiler writes
23
+ * `static readonly eventName` as a static block, and Bun and Rollup both treat
24
+ * one as a side effect, so a class in a shared module stayed in every bundle
25
+ * that imported anything from that module. With the eighty classes in one
26
+ * file, every element shipped all of them, a Badge too. A module whose exports
27
+ * nothing uses is dropped whole, since the package declares no side effects,
28
+ * so a family now ships the classes it dispatches and no others.
29
+ * `events.pure.spec.ts` holds every file to one class.
30
+ */
31
+ import { HelixActionEvent } from './action.js';
32
+ import { HelixActivateEvent } from './activate.js';
33
+ import { HelixAuraFallbackEvent } from './aura-fallback.js';
34
+ import { HelixBeforeActivateEvent } from './before-activate.js';
35
+ import { HelixBeforeChangeEvent } from './before-change.js';
36
+ import { HelixBeforeCloseEvent } from './before-close.js';
37
+ import { HelixBeforeCollapseEvent } from './before-collapse.js';
38
+ import { HelixBeforeEditEvent } from './before-edit.js';
39
+ import { HelixBeforeMoveEvent } from './before-move.js';
40
+ import { HelixBeforeOpenEvent } from './before-open.js';
41
+ import { HelixBeforePanelResizeEvent } from './before-panel-resize.js';
42
+ import { HelixBeforePinEvent } from './before-pin.js';
43
+ import { HelixBeforeReconnectEvent } from './before-reconnect.js';
44
+ import { HelixBeforeRelabelEvent } from './before-relabel.js';
45
+ import { HelixBeforeResizeEvent } from './before-resize.js';
46
+ import { HelixBeforeSplitEvent } from './before-split.js';
47
+ import { HelixBeforeToggleEvent } from './before-toggle.js';
48
+ import { HelixCanvasEditEvent } from './canvas-edit.js';
49
+ import { HelixCanvasPanEvent } from './canvas-pan.js';
50
+ import { HelixCanvasViewEvent } from './canvas-view.js';
51
+ import { HelixCanvasZoomEvent } from './canvas-zoom.js';
52
+ import { HelixCaretEvent } from './caret.js';
53
+ import { HelixClearEvent } from './clear.js';
54
+ import { HelixCollapseEvent } from './collapse.js';
55
+ import { HelixCompleteEvent } from './complete.js';
56
+ import { HelixConnectEvent } from './connect.js';
57
+ import { HelixConsoleEvent } from './console.js';
58
+ import { HelixCopyEvent } from './copy.js';
59
+ import { HelixCopyErrorEvent } from './copy-error.js';
60
+ import { HelixCreateEvent } from './create.js';
61
+ import { HelixDismissEvent } from './dismiss.js';
62
+ import { HelixEditEvent } from './edit.js';
63
+ import { HelixEndEvent } from './end.js';
64
+ import { HelixExpandEvent } from './expand.js';
65
+ import { HelixFacetEvent } from './facet.js';
66
+ import { HelixFilterEvent } from './filter.js';
67
+ import { HelixFilteredEvent } from './filtered.js';
68
+ import { HelixGraphFilterEvent } from './graph-filter.js';
69
+ import { HelixGraphLayoutEvent } from './graph-layout.js';
70
+ import { HelixGraphPanEvent } from './graph-pan.js';
71
+ import { HelixGraphPartChangeEvent } from './graph-part-change.js';
72
+ import { HelixGraphReadyEvent } from './graph-ready.js';
73
+ import { HelixGraphSignalEvent } from './graph-signal.js';
74
+ import { HelixGraphZoomEvent } from './graph-zoom.js';
75
+ import { HelixHistoryEvent } from './history.js';
76
+ import { HelixLoadEvent } from './load.js';
77
+ import { HelixLoadMoreEvent } from './load-more.js';
78
+ import { HelixMapClusterEvent } from './map-cluster.js';
79
+ import { HelixMapPanEvent } from './map-pan.js';
80
+ import { HelixMapPartChangeEvent } from './map-part-change.js';
81
+ import { HelixMapReadyEvent } from './map-ready.js';
82
+ import { HelixMapRotateEvent } from './map-rotate.js';
83
+ import { HelixMapTiltEvent } from './map-tilt.js';
84
+ import { HelixMapZoomEvent } from './map-zoom.js';
85
+ import { HelixMoveEvent } from './move.js';
86
+ import { HelixNavigateEvent } from './navigate.js';
87
+ import { HelixNextEvent } from './next.js';
88
+ import { HelixPanelResizeEvent } from './panel-resize.js';
89
+ import { HelixPinEvent } from './pin.js';
90
+ import { HelixPressEvent } from './press.js';
91
+ import { HelixPreviewEvent } from './preview.js';
92
+ import { HelixPreviousEvent } from './previous.js';
93
+ import { HelixRangeChangeEvent } from './range-change.js';
94
+ import { HelixReadEvent } from './read.js';
95
+ import { HelixReconnectEvent } from './reconnect.js';
96
+ import { HelixRejectEvent } from './reject.js';
97
+ import { HelixRelabelEvent } from './relabel.js';
98
+ import { HelixRemoveEvent } from './remove.js';
99
+ import { HelixReorderEvent } from './reorder.js';
100
+ import { HelixReorderedEvent } from './reordered.js';
101
+ import { HelixResizeEvent } from './resize.js';
102
+ import { HelixResizedEvent } from './resized.js';
103
+ import { HelixSampleEndEvent } from './sample-end.js';
104
+ import { HelixSampleStartEvent } from './sample-start.js';
105
+ import { HelixScrolledEvent } from './scrolled.js';
106
+ import { HelixSelectEvent } from './select.js';
107
+ import { HelixSelectedEvent } from './selected.js';
108
+ import { HelixSendEvent } from './send.js';
109
+ import { HelixShortcutEvent } from './shortcut.js';
110
+ import { HelixSortEvent } from './sort.js';
111
+ import { HelixSortedEvent } from './sorted.js';
112
+ import { HelixSplitEvent } from './split.js';
113
+ import { HelixToggleEvent } from './toggle.js';
114
+ import { HelixTourAskEvent } from './tour-ask.js';
115
+ import { HelixTourStatusEvent } from './tour-status.js';
116
+ import { HelixTypingEvent } from './typing.js';
117
+ export type { ActivateDetail, AuraFallbackDetail, CanvasView, CaretDetail, ChangeDetail, CompleteDetail, ConnectDetail, ConsoleDetail, CopyDetail, CreateDetail, DismissDetail, FacetDetail, FilterDetail, GraphFilterDetail, GraphLayoutDetail, GraphPartChangeDetail, GraphSignalDetail, MapClusterDetail, MapPanDetail, MapPartChangeDetail, MapRotateDetail, MapTiltDetail, MapZoomDetail, MoveDetail, NavigateDetail, OpenDetail, PressDetail, PressPointerType, RangeDetail, ReadDetail, ReconnectDetail, Refusal, RefusedFile, RejectDetail, RelabelDetail, RemoveDetail, ResizeDetail, ScrolledDetail, SelectDetail, SendDetail, ShortcutDetail, SkipDetail, SortDetail, ToggleDetail, TourAskDetail, TourStatusDetail, TypingDetail, ViewportPanDetail, ViewportZoomDetail, } from './details.js';
118
+ export { helixEventNames } from './names.js';
119
+ export { HelixActionEvent, HelixActivateEvent, HelixAuraFallbackEvent, HelixBeforeActivateEvent, HelixBeforeChangeEvent, HelixBeforeCloseEvent, HelixBeforeCollapseEvent, HelixBeforeEditEvent, HelixBeforeMoveEvent, HelixBeforeOpenEvent, HelixBeforePanelResizeEvent, HelixBeforePinEvent, HelixBeforeReconnectEvent, HelixBeforeRelabelEvent, HelixBeforeResizeEvent, HelixBeforeSplitEvent, HelixBeforeToggleEvent, HelixCanvasEditEvent, HelixCanvasPanEvent, HelixCanvasViewEvent, HelixCanvasZoomEvent, HelixCaretEvent, HelixClearEvent, HelixCollapseEvent, HelixCompleteEvent, HelixConnectEvent, HelixConsoleEvent, HelixCopyErrorEvent, HelixCopyEvent, HelixCreateEvent, HelixDismissEvent, HelixEditEvent, HelixEndEvent, HelixExpandEvent, HelixFacetEvent, HelixFilterEvent, HelixFilteredEvent, HelixGraphFilterEvent, HelixGraphLayoutEvent, HelixGraphPanEvent, HelixGraphPartChangeEvent, HelixGraphReadyEvent, HelixGraphSignalEvent, HelixGraphZoomEvent, HelixHistoryEvent, HelixLoadEvent, HelixLoadMoreEvent, HelixMapClusterEvent, HelixMapPanEvent, HelixMapPartChangeEvent, HelixMapReadyEvent, HelixMapRotateEvent, HelixMapTiltEvent, HelixMapZoomEvent, HelixMoveEvent, HelixNavigateEvent, HelixNextEvent, HelixPanelResizeEvent, HelixPinEvent, HelixPressEvent, HelixPreviewEvent, HelixPreviousEvent, HelixRangeChangeEvent, HelixReadEvent, HelixReconnectEvent, HelixRejectEvent, HelixRelabelEvent, HelixRemoveEvent, HelixReorderEvent, HelixReorderedEvent, HelixResizedEvent, HelixResizeEvent, HelixSampleEndEvent, HelixSampleStartEvent, HelixScrolledEvent, HelixSelectEvent, HelixSelectedEvent, HelixSendEvent, HelixShortcutEvent, HelixSortEvent, HelixSortedEvent, HelixSplitEvent, HelixToggleEvent, HelixTourAskEvent, HelixTourStatusEvent, HelixTypingEvent, };
120
+ /**
121
+ * Every event class, and the one place a new one is registered: a class in a
122
+ * module of its own, imported above, and named here and in `names.ts`.
1484
123
  *
1485
124
  * The map below is derived from this rather than written beside it, so a class
1486
125
  * that is in here is typed and one that is not is absent from both halves at
@@ -1550,6 +189,8 @@ declare const registry: {
1550
189
  readonly HelixNextEvent: typeof HelixNextEvent;
1551
190
  readonly HelixPanelResizeEvent: typeof HelixPanelResizeEvent;
1552
191
  readonly HelixPinEvent: typeof HelixPinEvent;
192
+ readonly HelixPressEvent: typeof HelixPressEvent;
193
+ readonly HelixPreviewEvent: typeof HelixPreviewEvent;
1553
194
  readonly HelixPreviousEvent: typeof HelixPreviousEvent;
1554
195
  readonly HelixRangeChangeEvent: typeof HelixRangeChangeEvent;
1555
196
  readonly HelixReadEvent: typeof HelixReadEvent;
@@ -1573,16 +214,9 @@ declare const registry: {
1573
214
  readonly HelixSplitEvent: typeof HelixSplitEvent;
1574
215
  readonly HelixToggleEvent: typeof HelixToggleEvent;
1575
216
  readonly HelixTourAskEvent: typeof HelixTourAskEvent;
217
+ readonly HelixTourStatusEvent: typeof HelixTourStatusEvent;
1576
218
  readonly HelixTypingEvent: typeof HelixTypingEvent;
1577
219
  };
1578
- /**
1579
- * Every name this library dispatches.
1580
- *
1581
- * Exported so a runtime check can ask whether a name is one of ours without
1582
- * keeping a second list of them. `HelixElement` uses it to tell a consumer that
1583
- * the handler prop they wrote is attached to nothing.
1584
- */
1585
- export declare const helixEventNames: ReadonlySet<string>;
1586
220
  type Registry = typeof registry;
1587
221
  /**
1588
222
  * The registry keyed by what each class dispatches as.
@@ -1599,4 +233,3 @@ declare global {
1599
233
  interface HTMLElementEventMap extends HelixEventMap {
1600
234
  }
1601
235
  }
1602
- export {};