@fusion.dev/helix 0.115.0 → 0.117.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.
package/types/jsx.d.ts CHANGED
@@ -82,6 +82,10 @@ import type {
82
82
  HelixFlex,
83
83
  HelixFormElement,
84
84
  HelixFormatDate,
85
+ HelixGraph,
86
+ HelixGraphPanEvent,
87
+ HelixGraphReadyEvent,
88
+ HelixGraphZoomEvent,
85
89
  HelixGrid,
86
90
  HelixHeadlessFilterField,
87
91
  HelixHeadlessSplitter,
@@ -11000,6 +11004,422 @@ Empty is the runtime's own. */
11000
11004
  textContent?: (string | number) | undefined;
11001
11005
  };
11002
11006
 
11007
+ /** `HelixGraph` component event */
11008
+ export type HelixGraphElementEvent<E = Event> = TypedEvent<HelixGraph, E>;
11009
+ /** `helix-activate` event type */
11010
+ export type HelixGraphHelixActivateElementEvent =
11011
+ HelixGraphElementEvent<HelixActivateEvent>;
11012
+ /** `helix-before-activate` event type */
11013
+ export type HelixGraphHelixBeforeActivateElementEvent =
11014
+ HelixGraphElementEvent<HelixBeforeActivateEvent>;
11015
+ /** `helix-graph-pan` event type */
11016
+ export type HelixGraphHelixGraphPanElementEvent =
11017
+ HelixGraphElementEvent<HelixGraphPanEvent>;
11018
+ /** `helix-graph-ready` event type */
11019
+ export type HelixGraphHelixGraphReadyElementEvent =
11020
+ HelixGraphElementEvent<HelixGraphReadyEvent>;
11021
+ /** `helix-graph-zoom` event type */
11022
+ export type HelixGraphHelixGraphZoomElementEvent =
11023
+ HelixGraphElementEvent<HelixGraphZoomEvent>;
11024
+
11025
+ export type HelixGraphProps = {
11026
+ /** Which controls to show, as a list such as `pan zoom fullscreen`, or
11027
+ `none`. A family can add words of its own.
11028
+
11029
+ **A list rather than a switch, because the overlap is not symmetric.** A
11030
+ surface a consumer brings often has zoom controls of its own and almost
11031
+ never has pan buttons, so a single switch would make them choose between
11032
+ a duplicate and nothing.
11033
+
11034
+ `none` draws none of them, which is the right answer where what was
11035
+ slotted already has controls a reader can find: what this argues for is
11036
+ that *a* findable control exists, never that it is ours. The methods stay
11037
+ public either way, so a consumer drawing their own chrome can still drive
11038
+ the surface.
11039
+
11040
+ Absent is whatever the family rests at, which is this library's rule that
11041
+ a resting value is an attribute's absence: zoom, the compass and
11042
+ fullscreen for a map, whose pan buttons a page asks for, and zoom and
11043
+ fullscreen for a board, which a reader drags and whose pad took a third
11044
+ of the frame. The
11045
+ stylesheet lays the cluster out by which buttons are in it rather than by
11046
+ this attribute, so the two defaults need no rule each. */
11047
+ controls?: (HelixGraph["controls"]) | undefined;
11048
+ /** The name of the group of controls, read by screen readers.
11049
+
11050
+ Absent is the family's own name for it, "Map controls" or "Board
11051
+ controls", which names what the controls drive rather than the
11052
+ mechanism. Written here to say it in another language, which every other
11053
+ string this surface speaks already allowed and this one did not. */
11054
+ "controls-label"?: (HelixGraph["controlsLabel"]) | undefined;
11055
+ /** The name of the group of controls, read by screen readers.
11056
+
11057
+ Absent is the family's own name for it, "Map controls" or "Board
11058
+ controls", which names what the controls drive rather than the
11059
+ mechanism. Written here to say it in another language, which every other
11060
+ string this surface speaks already allowed and this one did not. */
11061
+ controlsLabel?: (HelixGraph["controlsLabel"]) | undefined;
11062
+ /** Which corner the controls sit in.
11063
+
11064
+ **Configurable because there is no safe default**, which is a collision
11065
+ rather than a taste: whatever a consumer slots may put its own controls
11066
+ in any corner, and every library that draws some made this a setting for
11067
+ the same reason.
11068
+
11069
+ Logical corners rather than left and right, so a right-to-left page moves
11070
+ them without a consumer writing a second rule. Absent is the top end, a
11071
+ resting value being an attribute's absence: a default that reflected
11072
+ would write an attribute onto every host that no server sent. */
11073
+ "controls-placement"?: (HelixGraph["controlsPlacement"]) | undefined;
11074
+ /** Which corner the controls sit in.
11075
+
11076
+ **Configurable because there is no safe default**, which is a collision
11077
+ rather than a taste: whatever a consumer slots may put its own controls
11078
+ in any corner, and every library that draws some made this a setting for
11079
+ the same reason.
11080
+
11081
+ Logical corners rather than left and right, so a right-to-left page moves
11082
+ them without a consumer writing a second rule. Absent is the top end, a
11083
+ resting value being an attribute's absence: a default that reflected
11084
+ would write an attribute onto every host that no server sent. */
11085
+ controlsPlacement?: (HelixGraph["controlsPlacement"]) | undefined;
11086
+ /** The fullscreen button's label. */
11087
+ "fullscreen-label"?: (HelixGraph["fullscreenLabel"]) | undefined;
11088
+ /** The fullscreen button's label. */
11089
+ fullscreenLabel?: (HelixGraph["fullscreenLabel"]) | undefined;
11090
+ /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
11091
+
11092
+ Zero keeps it up, which is the default: these controls are how a keyboard
11093
+ reader operates the surface, and chrome that hid itself by default would
11094
+ be the component undoing its own argument. Set it for a display nobody
11095
+ drives. */
11096
+ "idle-delay"?: (HelixGraph["idleDelay"] | `${number}`) | undefined;
11097
+ /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
11098
+
11099
+ Zero keeps it up, which is the default: these controls are how a keyboard
11100
+ reader operates the surface, and chrome that hid itself by default would
11101
+ be the component undoing its own argument. Set it for a display nobody
11102
+ drives. */
11103
+ idleDelay?: (HelixGraph["idleDelay"]) | undefined;
11104
+ /** The pan down button's label.
11105
+
11106
+ **A label for each way rather than one with the way filled in**, which is
11107
+ what this was: `Pan {way}` filled in with `left`, so a page that said it
11108
+ in French read out "Déplacer left". The word for a direction is as much
11109
+ the translator's as the word for panning, and a language can put it
11110
+ anywhere in the phrase. */
11111
+ "pan-down-label"?: (HelixGraph["panDownLabel"]) | undefined;
11112
+ /** The pan down button's label.
11113
+
11114
+ **A label for each way rather than one with the way filled in**, which is
11115
+ what this was: `Pan {way}` filled in with `left`, so a page that said it
11116
+ in French read out "Déplacer left". The word for a direction is as much
11117
+ the translator's as the word for panning, and a language can put it
11118
+ anywhere in the phrase. */
11119
+ panDownLabel?: (HelixGraph["panDownLabel"]) | undefined;
11120
+ /** The pan left button's label. */
11121
+ "pan-left-label"?: (HelixGraph["panLeftLabel"]) | undefined;
11122
+ /** The pan left button's label. */
11123
+ panLeftLabel?: (HelixGraph["panLeftLabel"]) | undefined;
11124
+ /** The pan right button's label. */
11125
+ "pan-right-label"?: (HelixGraph["panRightLabel"]) | undefined;
11126
+ /** The pan right button's label. */
11127
+ panRightLabel?: (HelixGraph["panRightLabel"]) | undefined;
11128
+ /** How far one press pans the view, as a fraction of its size.
11129
+
11130
+ A fraction rather than a distance, because this surface does not know the
11131
+ scale of what is inside it: a quarter of the viewport is the same gesture
11132
+ at any zoom, and a consumer who wants their own units multiplies by them. */
11133
+ "pan-step"?: (HelixGraph["panStep"] | `${number}`) | undefined;
11134
+ /** How far one press pans the view, as a fraction of its size.
11135
+
11136
+ A fraction rather than a distance, because this surface does not know the
11137
+ scale of what is inside it: a quarter of the viewport is the same gesture
11138
+ at any zoom, and a consumer who wants their own units multiplies by them. */
11139
+ panStep?: (HelixGraph["panStep"]) | undefined;
11140
+ /** The pan up button's label. */
11141
+ "pan-up-label"?: (HelixGraph["panUpLabel"]) | undefined;
11142
+ /** The pan up button's label. */
11143
+ panUpLabel?: (HelixGraph["panUpLabel"]) | undefined;
11144
+ /** The zoom in button's label. */
11145
+ "zoom-in-label"?: (HelixGraph["zoomInLabel"]) | undefined;
11146
+ /** The zoom in button's label. */
11147
+ zoomInLabel?: (HelixGraph["zoomInLabel"]) | undefined;
11148
+ /** The zoom out button's label. */
11149
+ "zoom-out-label"?: (HelixGraph["zoomOutLabel"]) | undefined;
11150
+ /** The zoom out button's label. */
11151
+ zoomOutLabel?: (HelixGraph["zoomOutLabel"]) | undefined;
11152
+ /** The `value` of the current item.
11153
+
11154
+ Not `option.active`, which is the option the keyboard is on: that is a
11155
+ different question from which one is chosen.
11156
+
11157
+ Writing always applies, so `<helix-tabs active="one">` starts on that
11158
+ tab, and `default-active` is how markup says where to start without
11159
+ naming the current one. */
11160
+ active?: (HelixGraph["active"]) | undefined;
11161
+ /** The `value` of the item declared current in markup.
11162
+
11163
+ Ignored once `active` is written. */
11164
+ "default-active"?: (HelixGraph["defaultActive"]) | undefined;
11165
+ /** The `value` of the item declared current in markup.
11166
+
11167
+ Ignored once `active` is written. */
11168
+ defaultActive?: (HelixGraph["defaultActive"]) | undefined;
11169
+ /** What the list says of a note's count, with `{count}`. */
11170
+ "count-label"?: (HelixGraph["countLabel"]) | undefined;
11171
+ /** What the list says of a note's count, with `{count}`. */
11172
+ countLabel?: (HelixGraph["countLabel"]) | undefined;
11173
+ /** How many links from the selected note to show, for its local graph. Unset
11174
+ shows every note. The list holds what the drawing shows. */
11175
+ depth?: (HelixGraph["depth"]) | undefined;
11176
+ /** The graph's name, read by screen readers, such as "Research notes".
11177
+ Required. */
11178
+ label?: (HelixGraph["label"]) | undefined;
11179
+ /** How a note linked both to and from the selected one is described, with `{note}`. */
11180
+ "linked-both-label"?: (HelixGraph["linkedBothLabel"]) | undefined;
11181
+ /** How a note linked both to and from the selected one is described, with `{note}`. */
11182
+ linkedBothLabel?: (HelixGraph["linkedBothLabel"]) | undefined;
11183
+ /** How a note the selected one links to is described, with `{note}`, the selected note's name. */
11184
+ "linked-from-label"?: (HelixGraph["linkedFromLabel"]) | undefined;
11185
+ /** How a note the selected one links to is described, with `{note}`, the selected note's name. */
11186
+ linkedFromLabel?: (HelixGraph["linkedFromLabel"]) | undefined;
11187
+ /** How a note that links to the selected one is described, with `{note}`. */
11188
+ "links-to-label"?: (HelixGraph["linksToLabel"]) | undefined;
11189
+ /** How a note that links to the selected one is described, with `{note}`. */
11190
+ linksToLabel?: (HelixGraph["linksToLabel"]) | undefined;
11191
+ /** The list's name, read by screen readers. */
11192
+ "notes-label"?: (HelixGraph["notesLabel"]) | undefined;
11193
+ /** The list's name, read by screen readers. */
11194
+ notesLabel?: (HelixGraph["notesLabel"]) | undefined;
11195
+ /** The search field's name. */
11196
+ "search-label"?: (HelixGraph["searchLabel"]) | undefined;
11197
+ /** The search field's name. */
11198
+ searchLabel?: (HelixGraph["searchLabel"]) | undefined;
11199
+ /** How the selected note is described in the list. */
11200
+ "selected-label"?: (HelixGraph["selectedLabel"]) | undefined;
11201
+ /** How the selected note is described in the list. */
11202
+ selectedLabel?: (HelixGraph["selectedLabel"]) | undefined;
11203
+ /** The links between notes, each from `source` to `target`. A property, never an attribute. */
11204
+ links?: (HelixGraph["links"]) | undefined;
11205
+ /** The notes. A property, never an attribute. */
11206
+ nodes?: (HelixGraph["nodes"]) | undefined;
11207
+
11208
+ /** A note was selected, in the list or in the drawing. The detail's `value` is its `id`. */
11209
+ "onhelix-activate"?: ((e: HelixGraphHelixActivateElementEvent) => void) | undefined;
11210
+ /** A note is about to be selected. Cancelable: cancel it to keep the selection in your own state. */
11211
+ "onhelix-before-activate"?: ((
11212
+ e: HelixGraphHelixBeforeActivateElementEvent,
11213
+ ) => void) | undefined;
11214
+ /** A pan button or arrow key was pressed. Move the drawing. */
11215
+ "onhelix-graph-pan"?: ((e: HelixGraphHelixGraphPanElementEvent) => void) | undefined;
11216
+ /** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
11217
+ "onhelix-graph-ready"?: ((e: HelixGraphHelixGraphReadyElementEvent) => void) | undefined;
11218
+ /** A zoom button or key was pressed. Zoom the drawing. */
11219
+ "onhelix-graph-zoom"?: ((e: HelixGraphHelixGraphZoomElementEvent) => void) | undefined;
11220
+ };
11221
+
11222
+ export type HelixGraphSolidJsProps = {
11223
+ /** Which controls to show, as a list such as `pan zoom fullscreen`, or
11224
+ `none`. A family can add words of its own.
11225
+
11226
+ **A list rather than a switch, because the overlap is not symmetric.** A
11227
+ surface a consumer brings often has zoom controls of its own and almost
11228
+ never has pan buttons, so a single switch would make them choose between
11229
+ a duplicate and nothing.
11230
+
11231
+ `none` draws none of them, which is the right answer where what was
11232
+ slotted already has controls a reader can find: what this argues for is
11233
+ that *a* findable control exists, never that it is ours. The methods stay
11234
+ public either way, so a consumer drawing their own chrome can still drive
11235
+ the surface.
11236
+
11237
+ Absent is whatever the family rests at, which is this library's rule that
11238
+ a resting value is an attribute's absence: zoom, the compass and
11239
+ fullscreen for a map, whose pan buttons a page asks for, and zoom and
11240
+ fullscreen for a board, which a reader drags and whose pad took a third
11241
+ of the frame. The
11242
+ stylesheet lays the cluster out by which buttons are in it rather than by
11243
+ this attribute, so the two defaults need no rule each. */
11244
+ "prop:controls"?: (HelixGraph["controls"]) | undefined;
11245
+ /** The name of the group of controls, read by screen readers.
11246
+
11247
+ Absent is the family's own name for it, "Map controls" or "Board
11248
+ controls", which names what the controls drive rather than the
11249
+ mechanism. Written here to say it in another language, which every other
11250
+ string this surface speaks already allowed and this one did not. */
11251
+ "attr:controls-label"?: (HelixGraph["controlsLabel"]) | undefined;
11252
+ /** The name of the group of controls, read by screen readers.
11253
+
11254
+ Absent is the family's own name for it, "Map controls" or "Board
11255
+ controls", which names what the controls drive rather than the
11256
+ mechanism. Written here to say it in another language, which every other
11257
+ string this surface speaks already allowed and this one did not. */
11258
+ "prop:controlsLabel"?: (HelixGraph["controlsLabel"]) | undefined;
11259
+ /** Which corner the controls sit in.
11260
+
11261
+ **Configurable because there is no safe default**, which is a collision
11262
+ rather than a taste: whatever a consumer slots may put its own controls
11263
+ in any corner, and every library that draws some made this a setting for
11264
+ the same reason.
11265
+
11266
+ Logical corners rather than left and right, so a right-to-left page moves
11267
+ them without a consumer writing a second rule. Absent is the top end, a
11268
+ resting value being an attribute's absence: a default that reflected
11269
+ would write an attribute onto every host that no server sent. */
11270
+ "attr:controls-placement"?: (HelixGraph["controlsPlacement"]) | undefined;
11271
+ /** Which corner the controls sit in.
11272
+
11273
+ **Configurable because there is no safe default**, which is a collision
11274
+ rather than a taste: whatever a consumer slots may put its own controls
11275
+ in any corner, and every library that draws some made this a setting for
11276
+ the same reason.
11277
+
11278
+ Logical corners rather than left and right, so a right-to-left page moves
11279
+ them without a consumer writing a second rule. Absent is the top end, a
11280
+ resting value being an attribute's absence: a default that reflected
11281
+ would write an attribute onto every host that no server sent. */
11282
+ "prop:controlsPlacement"?: (HelixGraph["controlsPlacement"]) | undefined;
11283
+ /** The fullscreen button's label. */
11284
+ "attr:fullscreen-label"?: (HelixGraph["fullscreenLabel"]) | undefined;
11285
+ /** The fullscreen button's label. */
11286
+ "prop:fullscreenLabel"?: (HelixGraph["fullscreenLabel"]) | undefined;
11287
+ /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
11288
+
11289
+ Zero keeps it up, which is the default: these controls are how a keyboard
11290
+ reader operates the surface, and chrome that hid itself by default would
11291
+ be the component undoing its own argument. Set it for a display nobody
11292
+ drives. */
11293
+ "attr:idle-delay"?: (HelixGraph["idleDelay"] | `${number}`) | undefined;
11294
+ /** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
11295
+
11296
+ Zero keeps it up, which is the default: these controls are how a keyboard
11297
+ reader operates the surface, and chrome that hid itself by default would
11298
+ be the component undoing its own argument. Set it for a display nobody
11299
+ drives. */
11300
+ "prop:idleDelay"?: (HelixGraph["idleDelay"]) | undefined;
11301
+ /** The pan down button's label.
11302
+
11303
+ **A label for each way rather than one with the way filled in**, which is
11304
+ what this was: `Pan {way}` filled in with `left`, so a page that said it
11305
+ in French read out "Déplacer left". The word for a direction is as much
11306
+ the translator's as the word for panning, and a language can put it
11307
+ anywhere in the phrase. */
11308
+ "attr:pan-down-label"?: (HelixGraph["panDownLabel"]) | undefined;
11309
+ /** The pan down button's label.
11310
+
11311
+ **A label for each way rather than one with the way filled in**, which is
11312
+ what this was: `Pan {way}` filled in with `left`, so a page that said it
11313
+ in French read out "Déplacer left". The word for a direction is as much
11314
+ the translator's as the word for panning, and a language can put it
11315
+ anywhere in the phrase. */
11316
+ "prop:panDownLabel"?: (HelixGraph["panDownLabel"]) | undefined;
11317
+ /** The pan left button's label. */
11318
+ "attr:pan-left-label"?: (HelixGraph["panLeftLabel"]) | undefined;
11319
+ /** The pan left button's label. */
11320
+ "prop:panLeftLabel"?: (HelixGraph["panLeftLabel"]) | undefined;
11321
+ /** The pan right button's label. */
11322
+ "attr:pan-right-label"?: (HelixGraph["panRightLabel"]) | undefined;
11323
+ /** The pan right button's label. */
11324
+ "prop:panRightLabel"?: (HelixGraph["panRightLabel"]) | undefined;
11325
+ /** How far one press pans the view, as a fraction of its size.
11326
+
11327
+ A fraction rather than a distance, because this surface does not know the
11328
+ scale of what is inside it: a quarter of the viewport is the same gesture
11329
+ at any zoom, and a consumer who wants their own units multiplies by them. */
11330
+ "attr:pan-step"?: (HelixGraph["panStep"] | `${number}`) | undefined;
11331
+ /** How far one press pans the view, as a fraction of its size.
11332
+
11333
+ A fraction rather than a distance, because this surface does not know the
11334
+ scale of what is inside it: a quarter of the viewport is the same gesture
11335
+ at any zoom, and a consumer who wants their own units multiplies by them. */
11336
+ "prop:panStep"?: (HelixGraph["panStep"]) | undefined;
11337
+ /** The pan up button's label. */
11338
+ "attr:pan-up-label"?: (HelixGraph["panUpLabel"]) | undefined;
11339
+ /** The pan up button's label. */
11340
+ "prop:panUpLabel"?: (HelixGraph["panUpLabel"]) | undefined;
11341
+ /** The zoom in button's label. */
11342
+ "attr:zoom-in-label"?: (HelixGraph["zoomInLabel"]) | undefined;
11343
+ /** The zoom in button's label. */
11344
+ "prop:zoomInLabel"?: (HelixGraph["zoomInLabel"]) | undefined;
11345
+ /** The zoom out button's label. */
11346
+ "attr:zoom-out-label"?: (HelixGraph["zoomOutLabel"]) | undefined;
11347
+ /** The zoom out button's label. */
11348
+ "prop:zoomOutLabel"?: (HelixGraph["zoomOutLabel"]) | undefined;
11349
+ /** The `value` of the current item.
11350
+
11351
+ Not `option.active`, which is the option the keyboard is on: that is a
11352
+ different question from which one is chosen.
11353
+
11354
+ Writing always applies, so `<helix-tabs active="one">` starts on that
11355
+ tab, and `default-active` is how markup says where to start without
11356
+ naming the current one. */
11357
+ "prop:active"?: (HelixGraph["active"]) | undefined;
11358
+ /** The `value` of the item declared current in markup.
11359
+
11360
+ Ignored once `active` is written. */
11361
+ "attr:default-active"?: (HelixGraph["defaultActive"]) | undefined;
11362
+ /** The `value` of the item declared current in markup.
11363
+
11364
+ Ignored once `active` is written. */
11365
+ "prop:defaultActive"?: (HelixGraph["defaultActive"]) | undefined;
11366
+ /** What the list says of a note's count, with `{count}`. */
11367
+ "attr:count-label"?: (HelixGraph["countLabel"]) | undefined;
11368
+ /** What the list says of a note's count, with `{count}`. */
11369
+ "prop:countLabel"?: (HelixGraph["countLabel"]) | undefined;
11370
+ /** How many links from the selected note to show, for its local graph. Unset
11371
+ shows every note. The list holds what the drawing shows. */
11372
+ "prop:depth"?: (HelixGraph["depth"]) | undefined;
11373
+ /** The graph's name, read by screen readers, such as "Research notes".
11374
+ Required. */
11375
+ "prop:label"?: (HelixGraph["label"]) | undefined;
11376
+ /** How a note linked both to and from the selected one is described, with `{note}`. */
11377
+ "attr:linked-both-label"?: (HelixGraph["linkedBothLabel"]) | undefined;
11378
+ /** How a note linked both to and from the selected one is described, with `{note}`. */
11379
+ "prop:linkedBothLabel"?: (HelixGraph["linkedBothLabel"]) | undefined;
11380
+ /** How a note the selected one links to is described, with `{note}`, the selected note's name. */
11381
+ "attr:linked-from-label"?: (HelixGraph["linkedFromLabel"]) | undefined;
11382
+ /** How a note the selected one links to is described, with `{note}`, the selected note's name. */
11383
+ "prop:linkedFromLabel"?: (HelixGraph["linkedFromLabel"]) | undefined;
11384
+ /** How a note that links to the selected one is described, with `{note}`. */
11385
+ "attr:links-to-label"?: (HelixGraph["linksToLabel"]) | undefined;
11386
+ /** How a note that links to the selected one is described, with `{note}`. */
11387
+ "prop:linksToLabel"?: (HelixGraph["linksToLabel"]) | undefined;
11388
+ /** The list's name, read by screen readers. */
11389
+ "attr:notes-label"?: (HelixGraph["notesLabel"]) | undefined;
11390
+ /** The list's name, read by screen readers. */
11391
+ "prop:notesLabel"?: (HelixGraph["notesLabel"]) | undefined;
11392
+ /** The search field's name. */
11393
+ "attr:search-label"?: (HelixGraph["searchLabel"]) | undefined;
11394
+ /** The search field's name. */
11395
+ "prop:searchLabel"?: (HelixGraph["searchLabel"]) | undefined;
11396
+ /** How the selected note is described in the list. */
11397
+ "attr:selected-label"?: (HelixGraph["selectedLabel"]) | undefined;
11398
+ /** How the selected note is described in the list. */
11399
+ "prop:selectedLabel"?: (HelixGraph["selectedLabel"]) | undefined;
11400
+ /** The links between notes, each from `source` to `target`. A property, never an attribute. */
11401
+ "prop:links"?: (HelixGraph["links"]) | undefined;
11402
+ /** The notes. A property, never an attribute. */
11403
+ "prop:nodes"?: (HelixGraph["nodes"]) | undefined;
11404
+ /** A note was selected, in the list or in the drawing. The detail's `value` is its `id`. */
11405
+ "on:helix-activate"?: ((e: HelixGraphHelixActivateElementEvent) => void) | undefined;
11406
+ /** A note is about to be selected. Cancelable: cancel it to keep the selection in your own state. */
11407
+ "on:helix-before-activate"?: ((
11408
+ e: HelixGraphHelixBeforeActivateElementEvent,
11409
+ ) => void) | undefined;
11410
+ /** A pan button or arrow key was pressed. Move the drawing. */
11411
+ "on:helix-graph-pan"?: ((e: HelixGraphHelixGraphPanElementEvent) => void) | undefined;
11412
+ /** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
11413
+ "on:helix-graph-ready"?: ((e: HelixGraphHelixGraphReadyElementEvent) => void) | undefined;
11414
+ /** A zoom button or key was pressed. Zoom the drawing. */
11415
+ "on:helix-graph-zoom"?: ((e: HelixGraphHelixGraphZoomElementEvent) => void) | undefined;
11416
+
11417
+ /** Set the innerHTML of the element */
11418
+ innerHTML?: (string) | undefined;
11419
+ /** Set the textContent of the element */
11420
+ textContent?: (string | number) | undefined;
11421
+ };
11422
+
11003
11423
  export type HelixGridProps = {
11004
11424
  /** How each cell aligns within its row. Sets `align-items`.
11005
11425
 
@@ -14417,6 +14837,12 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
14417
14837
  "zoom-out-label"?: (HelixMap["zoomOutLabel"]) | undefined;
14418
14838
  /** The zoom out button's label. */
14419
14839
  zoomOutLabel?: (HelixMap["zoomOutLabel"]) | undefined;
14840
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
14841
+ over, with `gestures="activate"`. */
14842
+ "activate-hint-label"?: (HelixMap["activateHintLabel"]) | undefined;
14843
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
14844
+ over, with `gestures="activate"`. */
14845
+ activateHintLabel?: (HelixMap["activateHintLabel"]) | undefined;
14420
14846
  /** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
14421
14847
  current, and the Face north button's needle turns with it. */
14422
14848
  bearing?: (HelixMap["bearing"]) | undefined;
@@ -14431,6 +14857,19 @@ the map zooms in, and pressing one zooms in to its places. */
14431
14857
  "flat-label"?: (HelixMap["flatLabel"]) | undefined;
14432
14858
  /** What screen readers hear when the map is tilted back to looking straight down. */
14433
14859
  flatLabel?: (HelixMap["flatLabel"]) | undefined;
14860
+ /** Which gestures the map takes from the page.
14861
+
14862
+ - `always`, which unset is: the wheel zooms the map and one finger pans
14863
+ it, for a map that is the page, such as a full-screen view.
14864
+ - `cooperative`: the wheel and one finger scroll the page, and the map
14865
+ takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
14866
+ when a gesture passes to the page. Best for a map embedded in a page.
14867
+ - `activate`: the map takes nothing until it is pressed, and gives it
14868
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
14869
+
14870
+ The keyboard and the frame's buttons work in every mode. The renderer is
14871
+ told through the connector, so MapLibre and Leaflet behave alike. */
14872
+ gestures?: (HelixMap["gestures"]) | undefined;
14434
14873
  /** The Hybrid map type's name. */
14435
14874
  "hybrid-label"?: (HelixMap["hybridLabel"]) | undefined;
14436
14875
  /** The Hybrid map type's name. */
@@ -14512,6 +14951,22 @@ top of the map faces, clockwise from north. */
14512
14951
  /** What screen readers hear when the map is turned. `{degrees}` is the way the
14513
14952
  top of the map faces, clockwise from north. */
14514
14953
  turnedLabel?: (HelixMap["turnedLabel"]) | undefined;
14954
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
14955
+ "two-finger-hint-label"?: (HelixMap["twoFingerHintLabel"]) | undefined;
14956
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
14957
+ twoFingerHintLabel?: (HelixMap["twoFingerHintLabel"]) | undefined;
14958
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
14959
+ "using-label"?: (HelixMap["usingLabel"]) | undefined;
14960
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
14961
+ usingLabel?: (HelixMap["usingLabel"]) | undefined;
14962
+ /** The hint shown when the wheel scrolls past a map with
14963
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
14964
+ elsewhere, as the renderer reads it. */
14965
+ "wheel-hint-label"?: (HelixMap["wheelHintLabel"]) | undefined;
14966
+ /** The hint shown when the wheel scrolls past a map with
14967
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
14968
+ elsewhere, as the renderer reads it. */
14969
+ wheelHintLabel?: (HelixMap["wheelHintLabel"]) | undefined;
14515
14970
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
14516
14971
  "zoomed-label"?: (HelixMap["zoomedLabel"]) | undefined;
14517
14972
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
@@ -14691,6 +15146,12 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
14691
15146
  "attr:zoom-out-label"?: (HelixMap["zoomOutLabel"]) | undefined;
14692
15147
  /** The zoom out button's label. */
14693
15148
  "prop:zoomOutLabel"?: (HelixMap["zoomOutLabel"]) | undefined;
15149
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
15150
+ over, with `gestures="activate"`. */
15151
+ "attr:activate-hint-label"?: (HelixMap["activateHintLabel"]) | undefined;
15152
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
15153
+ over, with `gestures="activate"`. */
15154
+ "prop:activateHintLabel"?: (HelixMap["activateHintLabel"]) | undefined;
14694
15155
  /** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
14695
15156
  current, and the Face north button's needle turns with it. */
14696
15157
  "prop:bearing"?: (HelixMap["bearing"]) | undefined;
@@ -14705,6 +15166,19 @@ the map zooms in, and pressing one zooms in to its places. */
14705
15166
  "attr:flat-label"?: (HelixMap["flatLabel"]) | undefined;
14706
15167
  /** What screen readers hear when the map is tilted back to looking straight down. */
14707
15168
  "prop:flatLabel"?: (HelixMap["flatLabel"]) | undefined;
15169
+ /** Which gestures the map takes from the page.
15170
+
15171
+ - `always`, which unset is: the wheel zooms the map and one finger pans
15172
+ it, for a map that is the page, such as a full-screen view.
15173
+ - `cooperative`: the wheel and one finger scroll the page, and the map
15174
+ takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
15175
+ when a gesture passes to the page. Best for a map embedded in a page.
15176
+ - `activate`: the map takes nothing until it is pressed, and gives it
15177
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
15178
+
15179
+ The keyboard and the frame's buttons work in every mode. The renderer is
15180
+ told through the connector, so MapLibre and Leaflet behave alike. */
15181
+ "prop:gestures"?: (HelixMap["gestures"]) | undefined;
14708
15182
  /** The Hybrid map type's name. */
14709
15183
  "attr:hybrid-label"?: (HelixMap["hybridLabel"]) | undefined;
14710
15184
  /** The Hybrid map type's name. */
@@ -14786,6 +15260,22 @@ top of the map faces, clockwise from north. */
14786
15260
  /** What screen readers hear when the map is turned. `{degrees}` is the way the
14787
15261
  top of the map faces, clockwise from north. */
14788
15262
  "prop:turnedLabel"?: (HelixMap["turnedLabel"]) | undefined;
15263
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
15264
+ "attr:two-finger-hint-label"?: (HelixMap["twoFingerHintLabel"]) | undefined;
15265
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
15266
+ "prop:twoFingerHintLabel"?: (HelixMap["twoFingerHintLabel"]) | undefined;
15267
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
15268
+ "attr:using-label"?: (HelixMap["usingLabel"]) | undefined;
15269
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
15270
+ "prop:usingLabel"?: (HelixMap["usingLabel"]) | undefined;
15271
+ /** The hint shown when the wheel scrolls past a map with
15272
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
15273
+ elsewhere, as the renderer reads it. */
15274
+ "attr:wheel-hint-label"?: (HelixMap["wheelHintLabel"]) | undefined;
15275
+ /** The hint shown when the wheel scrolls past a map with
15276
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
15277
+ elsewhere, as the renderer reads it. */
15278
+ "prop:wheelHintLabel"?: (HelixMap["wheelHintLabel"]) | undefined;
14789
15279
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
14790
15280
  "attr:zoomed-label"?: (HelixMap["zoomedLabel"]) | undefined;
14791
15281
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
@@ -34718,6 +35208,220 @@ export type CustomElements = {
34718
35208
  HelixFormatDateProps & BaseProps<HelixFormatDate> & BaseEvents<HelixFormatDate>
34719
35209
  >;
34720
35210
 
35211
+ /**
35212
+ * The styled frame: the drawing with its zoom and fullscreen buttons, and the
35213
+ * list of notes beside it, which moves below the drawing where the frame is
35214
+ * narrower than 40rem. The selected note leads the list on a surface of its
35215
+ * own, and the notes linked to it are named by how they link.
35216
+ *
35217
+ * ## Attributes & Properties
35218
+ *
35219
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
35220
+ *
35221
+ * - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
35222
+ * `none`. A family can add words of its own.
35223
+ *
35224
+ * **A list rather than a switch, because the overlap is not symmetric.** A
35225
+ * surface a consumer brings often has zoom controls of its own and almost
35226
+ * never has pan buttons, so a single switch would make them choose between
35227
+ * a duplicate and nothing.
35228
+ *
35229
+ * `none` draws none of them, which is the right answer where what was
35230
+ * slotted already has controls a reader can find: what this argues for is
35231
+ * that *a* findable control exists, never that it is ours. The methods stay
35232
+ * public either way, so a consumer drawing their own chrome can still drive
35233
+ * the surface.
35234
+ *
35235
+ * Absent is whatever the family rests at, which is this library's rule that
35236
+ * a resting value is an attribute's absence: zoom, the compass and
35237
+ * fullscreen for a map, whose pan buttons a page asks for, and zoom and
35238
+ * fullscreen for a board, which a reader drags and whose pad took a third
35239
+ * of the frame. The
35240
+ * stylesheet lays the cluster out by which buttons are in it rather than by
35241
+ * this attribute, so the two defaults need no rule each.
35242
+ * - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers.
35243
+ *
35244
+ * Absent is the family's own name for it, "Map controls" or "Board
35245
+ * controls", which names what the controls drive rather than the
35246
+ * mechanism. Written here to say it in another language, which every other
35247
+ * string this surface speaks already allowed and this one did not.
35248
+ * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
35249
+ *
35250
+ * **Configurable because there is no safe default**, which is a collision
35251
+ * rather than a taste: whatever a consumer slots may put its own controls
35252
+ * in any corner, and every library that draws some made this a setting for
35253
+ * the same reason.
35254
+ *
35255
+ * Logical corners rather than left and right, so a right-to-left page moves
35256
+ * them without a consumer writing a second rule. Absent is the top end, a
35257
+ * resting value being an attribute's absence: a default that reflected
35258
+ * would write an attribute onto every host that no server sent.
35259
+ * - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
35260
+ * - `idle-delay`/`idleDelay`: How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
35261
+ *
35262
+ * Zero keeps it up, which is the default: these controls are how a keyboard
35263
+ * reader operates the surface, and chrome that hid itself by default would
35264
+ * be the component undoing its own argument. Set it for a display nobody
35265
+ * drives.
35266
+ * - `pan-down-label`/`panDownLabel`: The pan down button's label.
35267
+ *
35268
+ * **A label for each way rather than one with the way filled in**, which is
35269
+ * what this was: `Pan {way}` filled in with `left`, so a page that said it
35270
+ * in French read out "Déplacer left". The word for a direction is as much
35271
+ * the translator's as the word for panning, and a language can put it
35272
+ * anywhere in the phrase.
35273
+ * - `pan-left-label`/`panLeftLabel`: The pan left button's label.
35274
+ * - `pan-right-label`/`panRightLabel`: The pan right button's label.
35275
+ * - `pan-step`/`panStep`: How far one press pans the view, as a fraction of its size.
35276
+ *
35277
+ * A fraction rather than a distance, because this surface does not know the
35278
+ * scale of what is inside it: a quarter of the viewport is the same gesture
35279
+ * at any zoom, and a consumer who wants their own units multiplies by them.
35280
+ * - `pan-up-label`/`panUpLabel`: The pan up button's label.
35281
+ * - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
35282
+ * - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
35283
+ * - `active`: The `value` of the current item.
35284
+ *
35285
+ * Not `option.active`, which is the option the keyboard is on: that is a
35286
+ * different question from which one is chosen.
35287
+ *
35288
+ * Writing always applies, so `<helix-tabs active="one">` starts on that
35289
+ * tab, and `default-active` is how markup says where to start without
35290
+ * naming the current one.
35291
+ * - `default-active`/`defaultActive`: The `value` of the item declared current in markup.
35292
+ *
35293
+ * Ignored once `active` is written.
35294
+ * - `count-label`/`countLabel`: What the list says of a note's count, with `{count}`.
35295
+ * - `depth`: How many links from the selected note to show, for its local graph. Unset
35296
+ * shows every note. The list holds what the drawing shows.
35297
+ * - `label`: The graph's name, read by screen readers, such as "Research notes".
35298
+ * Required.
35299
+ * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
35300
+ * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
35301
+ * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
35302
+ * - `notes-label`/`notesLabel`: The list's name, read by screen readers.
35303
+ * - `search-label`/`searchLabel`: The search field's name.
35304
+ * - `selected-label`/`selectedLabel`: How the selected note is described in the list.
35305
+ * - `links`: The links between notes, each from `source` to `target`. A property, never an attribute. (property only)
35306
+ * - `nodes`: The notes. A property, never an attribute. (property only)
35307
+ * - `ready`: Whether the graph has been drawn whole. For code that runs after `helix-graph-ready`. (property only) (readonly)
35308
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
35309
+ *
35310
+ * **Named `whenSettled` because `settled` is taken four times over**, by
35311
+ * Image, Splitter and both color controls, none of them about transitions. A
35312
+ * base class takes the name every subclass then cannot use.
35313
+ *
35314
+ * **The state it reports cannot be watched, which is why this exists.** A
35315
+ * custom state is deliberately not in the DOM, so there is no
35316
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
35317
+ * instead.
35318
+ *
35319
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
35320
+ * the suppression is still active in. That is the distinction `readyToMove`
35321
+ * in `@fusion.dev/helix-testing` is written around.
35322
+ *
35323
+ * It never resolves where `requestAnimationFrame` never fires, which is a
35324
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
35325
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
35326
+ * browser harness's awaits it alone: a browser always runs the frame, and a
35327
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
35328
+ *
35329
+ * ## Events
35330
+ *
35331
+ * Events that will be emitted by the component.
35332
+ *
35333
+ * - `helix-activate`: A note was selected, in the list or in the drawing. The detail's `value` is its `id`.
35334
+ * - `helix-before-activate`: A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.
35335
+ * - `helix-graph-pan`: A pan button or arrow key was pressed. Move the drawing.
35336
+ * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
35337
+ * - `helix-graph-zoom`: A zoom button or key was pressed. Zoom the drawing.
35338
+ *
35339
+ * ## Slots
35340
+ *
35341
+ * Areas where markup can be added to the component.
35342
+ *
35343
+ * - `(default)`: The renderer's box, which the drawing is made in.
35344
+ * - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
35345
+ * - `footer`: Content below the graph.
35346
+ * - `header`: Content above the graph.
35347
+ *
35348
+ * ## Methods
35349
+ *
35350
+ * Methods that can be called to access component functionality.
35351
+ *
35352
+ * - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
35353
+ * - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
35354
+ * - `toggleFullscreen() => void`: Turns fullscreen on or off.
35355
+ * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
35356
+ *
35357
+ * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
35358
+ * a refusal and nothing moves. Unlike a native control, nothing has moved
35359
+ * by the time this runs, so refusing is simply not writing: there is
35360
+ * nothing to put back. Nobody refusing means the set updates itself,
35361
+ * whether or not a consumer declared `active`, a declared property being a
35362
+ * seed and a correction.
35363
+ * - `drawn(whole = true) => void`: Says the graph has been drawn whole, or with `false`, that it no longer
35364
+ * is. Call it when the renderer's layout has settled and the graph is
35365
+ * finished. The first call after
35366
+ * the graph was not drawn sends `helix-graph-ready` and turns on
35367
+ * `:state(ready)`.
35368
+ *
35369
+ * ## CSS Custom Properties
35370
+ *
35371
+ * CSS variables available for styling the component.
35372
+ *
35373
+ * - `--graph-background-color`: The color behind the drawing while it loads. (default: `undefined`)
35374
+ * - `--graph-block-size`: The frame's height, as a length. (default: `undefined`)
35375
+ * - `--graph-border-color`: The frame's border color. (default: `undefined`)
35376
+ * - `--graph-panel-size`: The list's width beside the drawing. (default: `undefined`)
35377
+ * - `--viewport-control-background-color`: The background of the zoom and fullscreen buttons. Map and Canvas use the same property. (default: `undefined`)
35378
+ *
35379
+ * ## CSS Parts
35380
+ *
35381
+ * Custom selectors for styling elements within the component.
35382
+ *
35383
+ * - `after`: The room the notes after those drawn would take, so the list scrolls its whole length.
35384
+ * - `before`: The room the notes before those drawn would take.
35385
+ * - `body`: The drawing beside the list, or above it where the frame is narrow.
35386
+ * - `controls`: The group the pan and zoom buttons sit in.
35387
+ * - `count`: How many notes the list holds, which a search narrows, at the end of the search bar.
35388
+ * - `filter-icon`: The icon beside the search field.
35389
+ * - `filter-mark`: The default icon beside the search field, shown when none is slotted.
35390
+ * - `footer`: The strip below the graph.
35391
+ * - `fullscreen`: The button that makes the graph fill the screen.
35392
+ * - `header`: The strip above the graph.
35393
+ * - `list`: The list of notes, which draws only the rows in view.
35394
+ * - `live`: What screen readers hear when a search changes how many notes there are.
35395
+ * - `note`: One note in the list.
35396
+ * - `note-cursor`: The note the keyboard is on in the list.
35397
+ * - `note-linked`: A note linked to or from the selected one.
35398
+ * - `note-name`: A note's name in the list.
35399
+ * - `note-relation`: How a note stands to the selected one, such as "Linked from Alpha".
35400
+ * - `note-selected`: The selected note, first in the list.
35401
+ * - `pan-down`: The button that moves the graph down.
35402
+ * - `pan-end`: The button that moves the graph toward the end of a line of text: right in English.
35403
+ * - `pan-start`: The button that moves the graph toward the start of a line of text: left in English.
35404
+ * - `pan-up`: The button that moves the graph up.
35405
+ * - `panel`: The search field and the list, beside the drawing or below it.
35406
+ * - `region`: The frame: the drawing, its controls and the list.
35407
+ * - `search`: The bar holding the icon, the search field and the count.
35408
+ * - `search-field`: The field that finds a note by its name.
35409
+ * - `stage`: The drawing and its controls.
35410
+ * - `viewport`: The box the renderer draws in.
35411
+ * - `zoom-in`: The zoom in button.
35412
+ * - `zoom-out`: The zoom out button.
35413
+ *
35414
+ * ## CSS States
35415
+ *
35416
+ * These can be used to apply styling when a component is in a given state.
35417
+ *
35418
+ * - `fullscreen`: The graph fills the screen.
35419
+ * - `idle`: The user has been still long enough for the header and footer to fade.
35420
+ * - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
35421
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
35422
+ */
35423
+ "helix-graph": Partial<HelixGraphProps & BaseProps<HelixGraph> & BaseEvents<HelixGraph>>;
35424
+
34721
35425
  /**
34722
35426
  * Set columns in one of two ways:
34723
35427
  *
@@ -37703,12 +38407,26 @@ export type CustomElements = {
37703
38407
  * - `pan-up-label`/`panUpLabel`: The pan up button's label.
37704
38408
  * - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
37705
38409
  * - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
38410
+ * - `activate-hint-label`/`activateHintLabel`: The hint shown when a map waiting to be pressed is scrolled or swiped
38411
+ * over, with `gestures="activate"`.
37706
38412
  * - `bearing`: The map's rotation, in degrees clockwise from north. `connectMap` keeps it
37707
38413
  * current, and the Face north button's needle turns with it.
37708
38414
  * - `cluster`: Combines markers that would overlap into one count. Counts split apart as
37709
38415
  * the map zooms in, and pressing one zooms in to its places.
37710
38416
  * - `face-north-label`/`faceNorthLabel`: The Face north button's label.
37711
38417
  * - `flat-label`/`flatLabel`: What screen readers hear when the map is tilted back to looking straight down.
38418
+ * - `gestures`: Which gestures the map takes from the page.
38419
+ *
38420
+ * - `always`, which unset is: the wheel zooms the map and one finger pans
38421
+ * it, for a map that is the page, such as a full-screen view.
38422
+ * - `cooperative`: the wheel and one finger scroll the page, and the map
38423
+ * takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
38424
+ * when a gesture passes to the page. Best for a map embedded in a page.
38425
+ * - `activate`: the map takes nothing until it is pressed, and gives it
38426
+ * back on Escape, when the pointer leaves it, or on a press elsewhere.
38427
+ *
38428
+ * The keyboard and the frame's buttons work in every mode. The renderer is
38429
+ * told through the connector, so MapLibre and Leaflet behave alike.
37712
38430
  * - `hybrid-label`/`hybridLabel`: The Hybrid map type's name.
37713
38431
  * - `label`: The map's name, read by screen readers. Name the place, such as "Delivery
37714
38432
  * area", so that several maps on one page can be told apart. Required.
@@ -37735,6 +38453,11 @@ export type CustomElements = {
37735
38453
  * - `tilt-label`/`tiltLabel`: The 3D button's label.
37736
38454
  * - `turned-label`/`turnedLabel`: What screen readers hear when the map is turned. `{degrees}` is the way the
37737
38455
  * top of the map faces, clockwise from north.
38456
+ * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over a map with `gestures="cooperative"`.
38457
+ * - `using-label`/`usingLabel`: The line shown while a map with `gestures="activate"` has the gestures.
38458
+ * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past a map with
38459
+ * `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
38460
+ * elsewhere, as the renderer reads it.
37738
38461
  * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom. `{level}` is the zoom level.
37739
38462
  * - `zoom-level`/`zoomLevel`: How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
37740
38463
  * current, and the map says it after a zoom.
@@ -37837,6 +38560,8 @@ export type CustomElements = {
37837
38560
  * - `face-north`: The compass: its needle points north as the map turns, and pressing it turns the map to face north.
37838
38561
  * - `footer`: The strip below the map.
37839
38562
  * - `fullscreen`: The button that makes the map fill the screen.
38563
+ * - `gesture-hint`: Words over the map for a moment when it lets a gesture pass to the page, such as how to zoom it.
38564
+ * - `gesture-status`: The line shown while a map with `gestures="activate"` has the gestures.
37840
38565
  * - `header`: The strip above the map.
37841
38566
  * - `layer`: One entry in the list of the map's layers.
37842
38567
  * - `layer-choice`: One layer's tile in the layers menu, pressed while the layer is shown.
@@ -37871,6 +38596,7 @@ export type CustomElements = {
37871
38596
  * - `fullscreen`: The map fills the screen.
37872
38597
  * - `idle`: The user has been still long enough for the header and footer to fade.
37873
38598
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
38599
+ * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
37874
38600
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
37875
38601
  */
37876
38602
  "helix-map": Partial<HelixMapProps & BaseProps<HelixMap> & BaseEvents<HelixMap>>;
@@ -56682,6 +57408,225 @@ export type CustomElementsSolidJs = {
56682
57408
  BaseEvents<HelixFormatDate>
56683
57409
  >;
56684
57410
 
57411
+ /**
57412
+ * The styled frame: the drawing with its zoom and fullscreen buttons, and the
57413
+ * list of notes beside it, which moves below the drawing where the frame is
57414
+ * narrower than 40rem. The selected note leads the list on a surface of its
57415
+ * own, and the notes linked to it are named by how they link.
57416
+ *
57417
+ * ## Attributes & Properties
57418
+ *
57419
+ * Component attributes and properties that can be applied to the element or by using JavaScript.
57420
+ *
57421
+ * - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
57422
+ * `none`. A family can add words of its own.
57423
+ *
57424
+ * **A list rather than a switch, because the overlap is not symmetric.** A
57425
+ * surface a consumer brings often has zoom controls of its own and almost
57426
+ * never has pan buttons, so a single switch would make them choose between
57427
+ * a duplicate and nothing.
57428
+ *
57429
+ * `none` draws none of them, which is the right answer where what was
57430
+ * slotted already has controls a reader can find: what this argues for is
57431
+ * that *a* findable control exists, never that it is ours. The methods stay
57432
+ * public either way, so a consumer drawing their own chrome can still drive
57433
+ * the surface.
57434
+ *
57435
+ * Absent is whatever the family rests at, which is this library's rule that
57436
+ * a resting value is an attribute's absence: zoom, the compass and
57437
+ * fullscreen for a map, whose pan buttons a page asks for, and zoom and
57438
+ * fullscreen for a board, which a reader drags and whose pad took a third
57439
+ * of the frame. The
57440
+ * stylesheet lays the cluster out by which buttons are in it rather than by
57441
+ * this attribute, so the two defaults need no rule each.
57442
+ * - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers.
57443
+ *
57444
+ * Absent is the family's own name for it, "Map controls" or "Board
57445
+ * controls", which names what the controls drive rather than the
57446
+ * mechanism. Written here to say it in another language, which every other
57447
+ * string this surface speaks already allowed and this one did not.
57448
+ * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
57449
+ *
57450
+ * **Configurable because there is no safe default**, which is a collision
57451
+ * rather than a taste: whatever a consumer slots may put its own controls
57452
+ * in any corner, and every library that draws some made this a setting for
57453
+ * the same reason.
57454
+ *
57455
+ * Logical corners rather than left and right, so a right-to-left page moves
57456
+ * them without a consumer writing a second rule. Absent is the top end, a
57457
+ * resting value being an attribute's absence: a default that reflected
57458
+ * would write an attribute onto every host that no server sent.
57459
+ * - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
57460
+ * - `idle-delay`/`idleDelay`: How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
57461
+ *
57462
+ * Zero keeps it up, which is the default: these controls are how a keyboard
57463
+ * reader operates the surface, and chrome that hid itself by default would
57464
+ * be the component undoing its own argument. Set it for a display nobody
57465
+ * drives.
57466
+ * - `pan-down-label`/`panDownLabel`: The pan down button's label.
57467
+ *
57468
+ * **A label for each way rather than one with the way filled in**, which is
57469
+ * what this was: `Pan {way}` filled in with `left`, so a page that said it
57470
+ * in French read out "Déplacer left". The word for a direction is as much
57471
+ * the translator's as the word for panning, and a language can put it
57472
+ * anywhere in the phrase.
57473
+ * - `pan-left-label`/`panLeftLabel`: The pan left button's label.
57474
+ * - `pan-right-label`/`panRightLabel`: The pan right button's label.
57475
+ * - `pan-step`/`panStep`: How far one press pans the view, as a fraction of its size.
57476
+ *
57477
+ * A fraction rather than a distance, because this surface does not know the
57478
+ * scale of what is inside it: a quarter of the viewport is the same gesture
57479
+ * at any zoom, and a consumer who wants their own units multiplies by them.
57480
+ * - `pan-up-label`/`panUpLabel`: The pan up button's label.
57481
+ * - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
57482
+ * - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
57483
+ * - `active`: The `value` of the current item.
57484
+ *
57485
+ * Not `option.active`, which is the option the keyboard is on: that is a
57486
+ * different question from which one is chosen.
57487
+ *
57488
+ * Writing always applies, so `<helix-tabs active="one">` starts on that
57489
+ * tab, and `default-active` is how markup says where to start without
57490
+ * naming the current one.
57491
+ * - `default-active`/`defaultActive`: The `value` of the item declared current in markup.
57492
+ *
57493
+ * Ignored once `active` is written.
57494
+ * - `count-label`/`countLabel`: What the list says of a note's count, with `{count}`.
57495
+ * - `depth`: How many links from the selected note to show, for its local graph. Unset
57496
+ * shows every note. The list holds what the drawing shows.
57497
+ * - `label`: The graph's name, read by screen readers, such as "Research notes".
57498
+ * Required.
57499
+ * - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
57500
+ * - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
57501
+ * - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
57502
+ * - `notes-label`/`notesLabel`: The list's name, read by screen readers.
57503
+ * - `search-label`/`searchLabel`: The search field's name.
57504
+ * - `selected-label`/`selectedLabel`: How the selected note is described in the list.
57505
+ * - `links`: The links between notes, each from `source` to `target`. A property, never an attribute. (property only)
57506
+ * - `nodes`: The notes. A property, never an attribute. (property only)
57507
+ * - `ready`: Whether the graph has been drawn whole. For code that runs after `helix-graph-ready`. (property only) (readonly)
57508
+ * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
57509
+ *
57510
+ * **Named `whenSettled` because `settled` is taken four times over**, by
57511
+ * Image, Splitter and both color controls, none of them about transitions. A
57512
+ * base class takes the name every subclass then cannot use.
57513
+ *
57514
+ * **The state it reports cannot be watched, which is why this exists.** A
57515
+ * custom state is deliberately not in the DOM, so there is no
57516
+ * `MutationObserver` equivalent for `ElementInternals.states`. Await this
57517
+ * instead.
57518
+ *
57519
+ * Separate from `updateComplete`, which resolves in the microtask checkpoint
57520
+ * the suppression is still active in. That is the distinction `readyToMove`
57521
+ * in `@fusion.dev/helix-testing` is written around.
57522
+ *
57523
+ * It never resolves where `requestAnimationFrame` never fires, which is a
57524
+ * server, a hidden tab, and happy-dom. Callers that must not hang there race
57525
+ * it against a timeout, as the happy-dom harness's `readyToMove` does. The
57526
+ * browser harness's awaits it alone: a browser always runs the frame, and a
57527
+ * timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
57528
+ *
57529
+ * ## Events
57530
+ *
57531
+ * Events that will be emitted by the component.
57532
+ *
57533
+ * - `helix-activate`: A note was selected, in the list or in the drawing. The detail's `value` is its `id`.
57534
+ * - `helix-before-activate`: A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.
57535
+ * - `helix-graph-pan`: A pan button or arrow key was pressed. Move the drawing.
57536
+ * - `helix-graph-ready`: The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not.
57537
+ * - `helix-graph-zoom`: A zoom button or key was pressed. Zoom the drawing.
57538
+ *
57539
+ * ## Slots
57540
+ *
57541
+ * Areas where markup can be added to the component.
57542
+ *
57543
+ * - `(default)`: The renderer's box, which the drawing is made in.
57544
+ * - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
57545
+ * - `footer`: Content below the graph.
57546
+ * - `header`: Content above the graph.
57547
+ *
57548
+ * ## Methods
57549
+ *
57550
+ * Methods that can be called to access component functionality.
57551
+ *
57552
+ * - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
57553
+ * - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
57554
+ * - `toggleFullscreen() => void`: Turns fullscreen on or off.
57555
+ * - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
57556
+ *
57557
+ * Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
57558
+ * a refusal and nothing moves. Unlike a native control, nothing has moved
57559
+ * by the time this runs, so refusing is simply not writing: there is
57560
+ * nothing to put back. Nobody refusing means the set updates itself,
57561
+ * whether or not a consumer declared `active`, a declared property being a
57562
+ * seed and a correction.
57563
+ * - `drawn(whole = true) => void`: Says the graph has been drawn whole, or with `false`, that it no longer
57564
+ * is. Call it when the renderer's layout has settled and the graph is
57565
+ * finished. The first call after
57566
+ * the graph was not drawn sends `helix-graph-ready` and turns on
57567
+ * `:state(ready)`.
57568
+ *
57569
+ * ## CSS Custom Properties
57570
+ *
57571
+ * CSS variables available for styling the component.
57572
+ *
57573
+ * - `--graph-background-color`: The color behind the drawing while it loads. (default: `undefined`)
57574
+ * - `--graph-block-size`: The frame's height, as a length. (default: `undefined`)
57575
+ * - `--graph-border-color`: The frame's border color. (default: `undefined`)
57576
+ * - `--graph-panel-size`: The list's width beside the drawing. (default: `undefined`)
57577
+ * - `--viewport-control-background-color`: The background of the zoom and fullscreen buttons. Map and Canvas use the same property. (default: `undefined`)
57578
+ *
57579
+ * ## CSS Parts
57580
+ *
57581
+ * Custom selectors for styling elements within the component.
57582
+ *
57583
+ * - `after`: The room the notes after those drawn would take, so the list scrolls its whole length.
57584
+ * - `before`: The room the notes before those drawn would take.
57585
+ * - `body`: The drawing beside the list, or above it where the frame is narrow.
57586
+ * - `controls`: The group the pan and zoom buttons sit in.
57587
+ * - `count`: How many notes the list holds, which a search narrows, at the end of the search bar.
57588
+ * - `filter-icon`: The icon beside the search field.
57589
+ * - `filter-mark`: The default icon beside the search field, shown when none is slotted.
57590
+ * - `footer`: The strip below the graph.
57591
+ * - `fullscreen`: The button that makes the graph fill the screen.
57592
+ * - `header`: The strip above the graph.
57593
+ * - `list`: The list of notes, which draws only the rows in view.
57594
+ * - `live`: What screen readers hear when a search changes how many notes there are.
57595
+ * - `note`: One note in the list.
57596
+ * - `note-cursor`: The note the keyboard is on in the list.
57597
+ * - `note-linked`: A note linked to or from the selected one.
57598
+ * - `note-name`: A note's name in the list.
57599
+ * - `note-relation`: How a note stands to the selected one, such as "Linked from Alpha".
57600
+ * - `note-selected`: The selected note, first in the list.
57601
+ * - `pan-down`: The button that moves the graph down.
57602
+ * - `pan-end`: The button that moves the graph toward the end of a line of text: right in English.
57603
+ * - `pan-start`: The button that moves the graph toward the start of a line of text: left in English.
57604
+ * - `pan-up`: The button that moves the graph up.
57605
+ * - `panel`: The search field and the list, beside the drawing or below it.
57606
+ * - `region`: The frame: the drawing, its controls and the list.
57607
+ * - `search`: The bar holding the icon, the search field and the count.
57608
+ * - `search-field`: The field that finds a note by its name.
57609
+ * - `stage`: The drawing and its controls.
57610
+ * - `viewport`: The box the renderer draws in.
57611
+ * - `zoom-in`: The zoom in button.
57612
+ * - `zoom-out`: The zoom out button.
57613
+ *
57614
+ * ## CSS States
57615
+ *
57616
+ * These can be used to apply styling when a component is in a given state.
57617
+ *
57618
+ * - `fullscreen`: The graph fills the screen.
57619
+ * - `idle`: The user has been still long enough for the header and footer to fade.
57620
+ * - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
57621
+ * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
57622
+ */
57623
+ "helix-graph": Partial<
57624
+ HelixGraphProps &
57625
+ HelixGraphSolidJsProps &
57626
+ BaseProps<HelixGraph> &
57627
+ BaseEvents<HelixGraph>
57628
+ >;
57629
+
56685
57630
  /**
56686
57631
  * Set columns in one of two ways:
56687
57632
  *
@@ -59736,12 +60681,26 @@ export type CustomElementsSolidJs = {
59736
60681
  * - `pan-up-label`/`panUpLabel`: The pan up button's label.
59737
60682
  * - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
59738
60683
  * - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
60684
+ * - `activate-hint-label`/`activateHintLabel`: The hint shown when a map waiting to be pressed is scrolled or swiped
60685
+ * over, with `gestures="activate"`.
59739
60686
  * - `bearing`: The map's rotation, in degrees clockwise from north. `connectMap` keeps it
59740
60687
  * current, and the Face north button's needle turns with it.
59741
60688
  * - `cluster`: Combines markers that would overlap into one count. Counts split apart as
59742
60689
  * the map zooms in, and pressing one zooms in to its places.
59743
60690
  * - `face-north-label`/`faceNorthLabel`: The Face north button's label.
59744
60691
  * - `flat-label`/`flatLabel`: What screen readers hear when the map is tilted back to looking straight down.
60692
+ * - `gestures`: Which gestures the map takes from the page.
60693
+ *
60694
+ * - `always`, which unset is: the wheel zooms the map and one finger pans
60695
+ * it, for a map that is the page, such as a full-screen view.
60696
+ * - `cooperative`: the wheel and one finger scroll the page, and the map
60697
+ * takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
60698
+ * when a gesture passes to the page. Best for a map embedded in a page.
60699
+ * - `activate`: the map takes nothing until it is pressed, and gives it
60700
+ * back on Escape, when the pointer leaves it, or on a press elsewhere.
60701
+ *
60702
+ * The keyboard and the frame's buttons work in every mode. The renderer is
60703
+ * told through the connector, so MapLibre and Leaflet behave alike.
59745
60704
  * - `hybrid-label`/`hybridLabel`: The Hybrid map type's name.
59746
60705
  * - `label`: The map's name, read by screen readers. Name the place, such as "Delivery
59747
60706
  * area", so that several maps on one page can be told apart. Required.
@@ -59768,6 +60727,11 @@ export type CustomElementsSolidJs = {
59768
60727
  * - `tilt-label`/`tiltLabel`: The 3D button's label.
59769
60728
  * - `turned-label`/`turnedLabel`: What screen readers hear when the map is turned. `{degrees}` is the way the
59770
60729
  * top of the map faces, clockwise from north.
60730
+ * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over a map with `gestures="cooperative"`.
60731
+ * - `using-label`/`usingLabel`: The line shown while a map with `gestures="activate"` has the gestures.
60732
+ * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past a map with
60733
+ * `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
60734
+ * elsewhere, as the renderer reads it.
59771
60735
  * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom. `{level}` is the zoom level.
59772
60736
  * - `zoom-level`/`zoomLevel`: How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
59773
60737
  * current, and the map says it after a zoom.
@@ -59870,6 +60834,8 @@ export type CustomElementsSolidJs = {
59870
60834
  * - `face-north`: The compass: its needle points north as the map turns, and pressing it turns the map to face north.
59871
60835
  * - `footer`: The strip below the map.
59872
60836
  * - `fullscreen`: The button that makes the map fill the screen.
60837
+ * - `gesture-hint`: Words over the map for a moment when it lets a gesture pass to the page, such as how to zoom it.
60838
+ * - `gesture-status`: The line shown while a map with `gestures="activate"` has the gestures.
59873
60839
  * - `header`: The strip above the map.
59874
60840
  * - `layer`: One entry in the list of the map's layers.
59875
60841
  * - `layer-choice`: One layer's tile in the layers menu, pressed while the layer is shown.
@@ -59904,6 +60870,7 @@ export type CustomElementsSolidJs = {
59904
60870
  * - `fullscreen`: The map fills the screen.
59905
60871
  * - `idle`: The user has been still long enough for the header and footer to fade.
59906
60872
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
60873
+ * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
59907
60874
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
59908
60875
  */
59909
60876
  "helix-map": Partial<
@@ -70834,6 +71801,14 @@ export type CustomCssProperties = {
70834
71801
  "--filter-input-shadow"?: (string) | undefined;
70835
71802
  /** The height of the empty field. The field grows from this height. */
70836
71803
  "--filter-input-size"?: (string) | undefined;
71804
+ /** The color behind the drawing while it loads. */
71805
+ "--graph-background-color"?: (string) | undefined;
71806
+ /** The frame's height, as a length. */
71807
+ "--graph-block-size"?: (string) | undefined;
71808
+ /** The frame's border color. */
71809
+ "--graph-border-color"?: (string) | undefined;
71810
+ /** The list's width beside the drawing. */
71811
+ "--graph-panel-size"?: (string) | undefined;
70837
71812
  /** An explicit track list. It overrides `min` and `columns`. Use it for tracks of unequal widths, which neither attribute can set. */
70838
71813
  "--grid-columns"?: (string) | undefined;
70839
71814
  /** How tall a cell is. One row of tall, narrow cells looks like a status page. */