@fusion.dev/helix-headless 0.116.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/custom-elements.json +2129 -0
- package/dist/element-events.generated.js +7 -0
- package/dist/graph/index.d.ts +3 -0
- package/dist/graph/index.js +2 -0
- package/dist/graph/root/graph-model.d.ts +63 -0
- package/dist/graph/root/graph-model.js +75 -0
- package/dist/graph/root/graph-root.d.ts +189 -0
- package/dist/graph/root/graph-root.js +321 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/package.json +5 -5
- package/types/jsx.d.ts +886 -0
- package/types/svelte.d.ts +1 -0
- package/types/vue.d.ts +230 -2
package/types/jsx.d.ts
CHANGED
|
@@ -36,6 +36,9 @@ import type {
|
|
|
36
36
|
HelixFacetEvent,
|
|
37
37
|
HelixFilterEvent,
|
|
38
38
|
HelixFormElement,
|
|
39
|
+
HelixGraphPanEvent,
|
|
40
|
+
HelixGraphReadyEvent,
|
|
41
|
+
HelixGraphZoomEvent,
|
|
39
42
|
HelixHeadlessAccordion,
|
|
40
43
|
HelixHeadlessAccordionItem,
|
|
41
44
|
HelixHeadlessAnnouncement,
|
|
@@ -87,6 +90,7 @@ import type {
|
|
|
87
90
|
HelixHeadlessFilterMenu,
|
|
88
91
|
HelixHeadlessFilterOperator,
|
|
89
92
|
HelixHeadlessFormatDate,
|
|
93
|
+
HelixHeadlessGraph,
|
|
90
94
|
HelixHeadlessHeatmap,
|
|
91
95
|
HelixHeadlessIcon,
|
|
92
96
|
HelixHeadlessIconButton,
|
|
@@ -9265,6 +9269,439 @@ Empty is the runtime's own. */
|
|
|
9265
9269
|
textContent?: (string | number) | undefined;
|
|
9266
9270
|
};
|
|
9267
9271
|
|
|
9272
|
+
/** `HelixHeadlessGraph` component event */
|
|
9273
|
+
export type HelixHeadlessGraphElementEvent<E = Event> = TypedEvent<
|
|
9274
|
+
HelixHeadlessGraph,
|
|
9275
|
+
E
|
|
9276
|
+
>;
|
|
9277
|
+
/** `helix-activate` event type */
|
|
9278
|
+
export type HelixHeadlessGraphHelixActivateElementEvent =
|
|
9279
|
+
HelixHeadlessGraphElementEvent<HelixActivateEvent>;
|
|
9280
|
+
/** `helix-before-activate` event type */
|
|
9281
|
+
export type HelixHeadlessGraphHelixBeforeActivateElementEvent =
|
|
9282
|
+
HelixHeadlessGraphElementEvent<HelixBeforeActivateEvent>;
|
|
9283
|
+
/** `helix-graph-pan` event type */
|
|
9284
|
+
export type HelixHeadlessGraphHelixGraphPanElementEvent =
|
|
9285
|
+
HelixHeadlessGraphElementEvent<HelixGraphPanEvent>;
|
|
9286
|
+
/** `helix-graph-ready` event type */
|
|
9287
|
+
export type HelixHeadlessGraphHelixGraphReadyElementEvent =
|
|
9288
|
+
HelixHeadlessGraphElementEvent<HelixGraphReadyEvent>;
|
|
9289
|
+
/** `helix-graph-zoom` event type */
|
|
9290
|
+
export type HelixHeadlessGraphHelixGraphZoomElementEvent =
|
|
9291
|
+
HelixHeadlessGraphElementEvent<HelixGraphZoomEvent>;
|
|
9292
|
+
|
|
9293
|
+
export type HelixHeadlessGraphProps = {
|
|
9294
|
+
/** What the list says of a note's count, with `{count}`. */
|
|
9295
|
+
"count-label"?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
9296
|
+
/** What the list says of a note's count, with `{count}`. */
|
|
9297
|
+
countLabel?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
9298
|
+
/** How many links from the selected note to show, for its local graph. Unset
|
|
9299
|
+
shows every note. The list holds what the drawing shows. */
|
|
9300
|
+
depth?: (HelixHeadlessGraph["depth"]) | undefined;
|
|
9301
|
+
/** The graph's name, read by screen readers, such as "Research notes".
|
|
9302
|
+
Required. */
|
|
9303
|
+
label?: (HelixHeadlessGraph["label"]) | undefined;
|
|
9304
|
+
/** How a note linked both to and from the selected one is described, with `{note}`. */
|
|
9305
|
+
"linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
|
|
9306
|
+
/** How a note linked both to and from the selected one is described, with `{note}`. */
|
|
9307
|
+
linkedBothLabel?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
|
|
9308
|
+
/** How a note the selected one links to is described, with `{note}`, the selected note's name. */
|
|
9309
|
+
"linked-from-label"?: (HelixHeadlessGraph["linkedFromLabel"]) | undefined;
|
|
9310
|
+
/** How a note the selected one links to is described, with `{note}`, the selected note's name. */
|
|
9311
|
+
linkedFromLabel?: (HelixHeadlessGraph["linkedFromLabel"]) | undefined;
|
|
9312
|
+
/** How a note that links to the selected one is described, with `{note}`. */
|
|
9313
|
+
"links-to-label"?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
9314
|
+
/** How a note that links to the selected one is described, with `{note}`. */
|
|
9315
|
+
linksToLabel?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
9316
|
+
/** The list's name, read by screen readers. */
|
|
9317
|
+
"notes-label"?: (HelixHeadlessGraph["notesLabel"]) | undefined;
|
|
9318
|
+
/** The list's name, read by screen readers. */
|
|
9319
|
+
notesLabel?: (HelixHeadlessGraph["notesLabel"]) | undefined;
|
|
9320
|
+
/** The search field's name. */
|
|
9321
|
+
"search-label"?: (HelixHeadlessGraph["searchLabel"]) | undefined;
|
|
9322
|
+
/** The search field's name. */
|
|
9323
|
+
searchLabel?: (HelixHeadlessGraph["searchLabel"]) | undefined;
|
|
9324
|
+
/** How the selected note is described in the list. */
|
|
9325
|
+
"selected-label"?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
9326
|
+
/** How the selected note is described in the list. */
|
|
9327
|
+
selectedLabel?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
9328
|
+
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
9329
|
+
`none`. A family can add words of its own.
|
|
9330
|
+
|
|
9331
|
+
**A list rather than a switch, because the overlap is not symmetric.** A
|
|
9332
|
+
surface a consumer brings often has zoom controls of its own and almost
|
|
9333
|
+
never has pan buttons, so a single switch would make them choose between
|
|
9334
|
+
a duplicate and nothing.
|
|
9335
|
+
|
|
9336
|
+
`none` draws none of them, which is the right answer where what was
|
|
9337
|
+
slotted already has controls a reader can find: what this argues for is
|
|
9338
|
+
that *a* findable control exists, never that it is ours. The methods stay
|
|
9339
|
+
public either way, so a consumer drawing their own chrome can still drive
|
|
9340
|
+
the surface.
|
|
9341
|
+
|
|
9342
|
+
Absent is whatever the family rests at, which is this library's rule that
|
|
9343
|
+
a resting value is an attribute's absence: zoom, the compass and
|
|
9344
|
+
fullscreen for a map, whose pan buttons a page asks for, and zoom and
|
|
9345
|
+
fullscreen for a board, which a reader drags and whose pad took a third
|
|
9346
|
+
of the frame. The
|
|
9347
|
+
stylesheet lays the cluster out by which buttons are in it rather than by
|
|
9348
|
+
this attribute, so the two defaults need no rule each. */
|
|
9349
|
+
controls?: (HelixHeadlessGraph["controls"]) | undefined;
|
|
9350
|
+
/** The name of the group of controls, read by screen readers.
|
|
9351
|
+
|
|
9352
|
+
Absent is the family's own name for it, "Map controls" or "Board
|
|
9353
|
+
controls", which names what the controls drive rather than the
|
|
9354
|
+
mechanism. Written here to say it in another language, which every other
|
|
9355
|
+
string this surface speaks already allowed and this one did not. */
|
|
9356
|
+
"controls-label"?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
9357
|
+
/** The name of the group of controls, read by screen readers.
|
|
9358
|
+
|
|
9359
|
+
Absent is the family's own name for it, "Map controls" or "Board
|
|
9360
|
+
controls", which names what the controls drive rather than the
|
|
9361
|
+
mechanism. Written here to say it in another language, which every other
|
|
9362
|
+
string this surface speaks already allowed and this one did not. */
|
|
9363
|
+
controlsLabel?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
9364
|
+
/** Which corner the controls sit in.
|
|
9365
|
+
|
|
9366
|
+
**Configurable because there is no safe default**, which is a collision
|
|
9367
|
+
rather than a taste: whatever a consumer slots may put its own controls
|
|
9368
|
+
in any corner, and every library that draws some made this a setting for
|
|
9369
|
+
the same reason.
|
|
9370
|
+
|
|
9371
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
9372
|
+
them without a consumer writing a second rule. Absent is the top end, a
|
|
9373
|
+
resting value being an attribute's absence: a default that reflected
|
|
9374
|
+
would write an attribute onto every host that no server sent. */
|
|
9375
|
+
"controls-placement"?: (HelixHeadlessGraph["controlsPlacement"]) | undefined;
|
|
9376
|
+
/** Which corner the controls sit in.
|
|
9377
|
+
|
|
9378
|
+
**Configurable because there is no safe default**, which is a collision
|
|
9379
|
+
rather than a taste: whatever a consumer slots may put its own controls
|
|
9380
|
+
in any corner, and every library that draws some made this a setting for
|
|
9381
|
+
the same reason.
|
|
9382
|
+
|
|
9383
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
9384
|
+
them without a consumer writing a second rule. Absent is the top end, a
|
|
9385
|
+
resting value being an attribute's absence: a default that reflected
|
|
9386
|
+
would write an attribute onto every host that no server sent. */
|
|
9387
|
+
controlsPlacement?: (HelixHeadlessGraph["controlsPlacement"]) | undefined;
|
|
9388
|
+
/** The fullscreen button's label. */
|
|
9389
|
+
"fullscreen-label"?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
|
|
9390
|
+
/** The fullscreen button's label. */
|
|
9391
|
+
fullscreenLabel?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
|
|
9392
|
+
/** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
9393
|
+
|
|
9394
|
+
Zero keeps it up, which is the default: these controls are how a keyboard
|
|
9395
|
+
reader operates the surface, and chrome that hid itself by default would
|
|
9396
|
+
be the component undoing its own argument. Set it for a display nobody
|
|
9397
|
+
drives. */
|
|
9398
|
+
"idle-delay"?: (HelixHeadlessGraph["idleDelay"] | `${number}`) | undefined;
|
|
9399
|
+
/** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
9400
|
+
|
|
9401
|
+
Zero keeps it up, which is the default: these controls are how a keyboard
|
|
9402
|
+
reader operates the surface, and chrome that hid itself by default would
|
|
9403
|
+
be the component undoing its own argument. Set it for a display nobody
|
|
9404
|
+
drives. */
|
|
9405
|
+
idleDelay?: (HelixHeadlessGraph["idleDelay"]) | undefined;
|
|
9406
|
+
/** The pan down button's label.
|
|
9407
|
+
|
|
9408
|
+
**A label for each way rather than one with the way filled in**, which is
|
|
9409
|
+
what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
9410
|
+
in French read out "Déplacer left". The word for a direction is as much
|
|
9411
|
+
the translator's as the word for panning, and a language can put it
|
|
9412
|
+
anywhere in the phrase. */
|
|
9413
|
+
"pan-down-label"?: (HelixHeadlessGraph["panDownLabel"]) | undefined;
|
|
9414
|
+
/** The pan down button's label.
|
|
9415
|
+
|
|
9416
|
+
**A label for each way rather than one with the way filled in**, which is
|
|
9417
|
+
what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
9418
|
+
in French read out "Déplacer left". The word for a direction is as much
|
|
9419
|
+
the translator's as the word for panning, and a language can put it
|
|
9420
|
+
anywhere in the phrase. */
|
|
9421
|
+
panDownLabel?: (HelixHeadlessGraph["panDownLabel"]) | undefined;
|
|
9422
|
+
/** The pan left button's label. */
|
|
9423
|
+
"pan-left-label"?: (HelixHeadlessGraph["panLeftLabel"]) | undefined;
|
|
9424
|
+
/** The pan left button's label. */
|
|
9425
|
+
panLeftLabel?: (HelixHeadlessGraph["panLeftLabel"]) | undefined;
|
|
9426
|
+
/** The pan right button's label. */
|
|
9427
|
+
"pan-right-label"?: (HelixHeadlessGraph["panRightLabel"]) | undefined;
|
|
9428
|
+
/** The pan right button's label. */
|
|
9429
|
+
panRightLabel?: (HelixHeadlessGraph["panRightLabel"]) | undefined;
|
|
9430
|
+
/** How far one press pans the view, as a fraction of its size.
|
|
9431
|
+
|
|
9432
|
+
A fraction rather than a distance, because this surface does not know the
|
|
9433
|
+
scale of what is inside it: a quarter of the viewport is the same gesture
|
|
9434
|
+
at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
9435
|
+
"pan-step"?: (HelixHeadlessGraph["panStep"] | `${number}`) | undefined;
|
|
9436
|
+
/** How far one press pans the view, as a fraction of its size.
|
|
9437
|
+
|
|
9438
|
+
A fraction rather than a distance, because this surface does not know the
|
|
9439
|
+
scale of what is inside it: a quarter of the viewport is the same gesture
|
|
9440
|
+
at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
9441
|
+
panStep?: (HelixHeadlessGraph["panStep"]) | undefined;
|
|
9442
|
+
/** The pan up button's label. */
|
|
9443
|
+
"pan-up-label"?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
9444
|
+
/** The pan up button's label. */
|
|
9445
|
+
panUpLabel?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
9446
|
+
/** The zoom in button's label. */
|
|
9447
|
+
"zoom-in-label"?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
|
|
9448
|
+
/** The zoom in button's label. */
|
|
9449
|
+
zoomInLabel?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
|
|
9450
|
+
/** The zoom out button's label. */
|
|
9451
|
+
"zoom-out-label"?: (HelixHeadlessGraph["zoomOutLabel"]) | undefined;
|
|
9452
|
+
/** The zoom out button's label. */
|
|
9453
|
+
zoomOutLabel?: (HelixHeadlessGraph["zoomOutLabel"]) | undefined;
|
|
9454
|
+
/** The `value` of the current item.
|
|
9455
|
+
|
|
9456
|
+
Not `option.active`, which is the option the keyboard is on: that is a
|
|
9457
|
+
different question from which one is chosen.
|
|
9458
|
+
|
|
9459
|
+
Writing always applies, so `<helix-tabs active="one">` starts on that
|
|
9460
|
+
tab, and `default-active` is how markup says where to start without
|
|
9461
|
+
naming the current one. */
|
|
9462
|
+
active?: (HelixHeadlessGraph["active"]) | undefined;
|
|
9463
|
+
/** The `value` of the item declared current in markup.
|
|
9464
|
+
|
|
9465
|
+
Ignored once `active` is written. */
|
|
9466
|
+
"default-active"?: (HelixHeadlessGraph["defaultActive"]) | undefined;
|
|
9467
|
+
/** The `value` of the item declared current in markup.
|
|
9468
|
+
|
|
9469
|
+
Ignored once `active` is written. */
|
|
9470
|
+
defaultActive?: (HelixHeadlessGraph["defaultActive"]) | undefined;
|
|
9471
|
+
/** The links between notes, each from `source` to `target`. A property, never an attribute. */
|
|
9472
|
+
links?: (HelixHeadlessGraph["links"]) | undefined;
|
|
9473
|
+
/** The notes. A property, never an attribute. */
|
|
9474
|
+
nodes?: (HelixHeadlessGraph["nodes"]) | undefined;
|
|
9475
|
+
|
|
9476
|
+
/** A note was selected, in the list or in the drawing. The detail's `value` is its `id`. */
|
|
9477
|
+
"onhelix-activate"?: ((e: HelixHeadlessGraphHelixActivateElementEvent) => void) | undefined;
|
|
9478
|
+
/** A note is about to be selected. Cancelable: cancel it to keep the selection in your own state. */
|
|
9479
|
+
"onhelix-before-activate"?: ((
|
|
9480
|
+
e: HelixHeadlessGraphHelixBeforeActivateElementEvent,
|
|
9481
|
+
) => void) | undefined;
|
|
9482
|
+
/** A pan button or arrow key was pressed. Move the drawing. */
|
|
9483
|
+
"onhelix-graph-pan"?: ((
|
|
9484
|
+
e: HelixHeadlessGraphHelixGraphPanElementEvent,
|
|
9485
|
+
) => void) | undefined;
|
|
9486
|
+
/** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
|
|
9487
|
+
"onhelix-graph-ready"?: ((
|
|
9488
|
+
e: HelixHeadlessGraphHelixGraphReadyElementEvent,
|
|
9489
|
+
) => void) | undefined;
|
|
9490
|
+
/** A zoom button or key was pressed. Zoom the drawing. */
|
|
9491
|
+
"onhelix-graph-zoom"?: ((
|
|
9492
|
+
e: HelixHeadlessGraphHelixGraphZoomElementEvent,
|
|
9493
|
+
) => void) | undefined;
|
|
9494
|
+
};
|
|
9495
|
+
|
|
9496
|
+
export type HelixHeadlessGraphSolidJsProps = {
|
|
9497
|
+
/** What the list says of a note's count, with `{count}`. */
|
|
9498
|
+
"attr:count-label"?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
9499
|
+
/** What the list says of a note's count, with `{count}`. */
|
|
9500
|
+
"prop:countLabel"?: (HelixHeadlessGraph["countLabel"]) | undefined;
|
|
9501
|
+
/** How many links from the selected note to show, for its local graph. Unset
|
|
9502
|
+
shows every note. The list holds what the drawing shows. */
|
|
9503
|
+
"prop:depth"?: (HelixHeadlessGraph["depth"]) | undefined;
|
|
9504
|
+
/** The graph's name, read by screen readers, such as "Research notes".
|
|
9505
|
+
Required. */
|
|
9506
|
+
"prop:label"?: (HelixHeadlessGraph["label"]) | undefined;
|
|
9507
|
+
/** How a note linked both to and from the selected one is described, with `{note}`. */
|
|
9508
|
+
"attr:linked-both-label"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
|
|
9509
|
+
/** How a note linked both to and from the selected one is described, with `{note}`. */
|
|
9510
|
+
"prop:linkedBothLabel"?: (HelixHeadlessGraph["linkedBothLabel"]) | undefined;
|
|
9511
|
+
/** How a note the selected one links to is described, with `{note}`, the selected note's name. */
|
|
9512
|
+
"attr:linked-from-label"?: (HelixHeadlessGraph["linkedFromLabel"]) | undefined;
|
|
9513
|
+
/** How a note the selected one links to is described, with `{note}`, the selected note's name. */
|
|
9514
|
+
"prop:linkedFromLabel"?: (HelixHeadlessGraph["linkedFromLabel"]) | undefined;
|
|
9515
|
+
/** How a note that links to the selected one is described, with `{note}`. */
|
|
9516
|
+
"attr:links-to-label"?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
9517
|
+
/** How a note that links to the selected one is described, with `{note}`. */
|
|
9518
|
+
"prop:linksToLabel"?: (HelixHeadlessGraph["linksToLabel"]) | undefined;
|
|
9519
|
+
/** The list's name, read by screen readers. */
|
|
9520
|
+
"attr:notes-label"?: (HelixHeadlessGraph["notesLabel"]) | undefined;
|
|
9521
|
+
/** The list's name, read by screen readers. */
|
|
9522
|
+
"prop:notesLabel"?: (HelixHeadlessGraph["notesLabel"]) | undefined;
|
|
9523
|
+
/** The search field's name. */
|
|
9524
|
+
"attr:search-label"?: (HelixHeadlessGraph["searchLabel"]) | undefined;
|
|
9525
|
+
/** The search field's name. */
|
|
9526
|
+
"prop:searchLabel"?: (HelixHeadlessGraph["searchLabel"]) | undefined;
|
|
9527
|
+
/** How the selected note is described in the list. */
|
|
9528
|
+
"attr:selected-label"?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
9529
|
+
/** How the selected note is described in the list. */
|
|
9530
|
+
"prop:selectedLabel"?: (HelixHeadlessGraph["selectedLabel"]) | undefined;
|
|
9531
|
+
/** Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
9532
|
+
`none`. A family can add words of its own.
|
|
9533
|
+
|
|
9534
|
+
**A list rather than a switch, because the overlap is not symmetric.** A
|
|
9535
|
+
surface a consumer brings often has zoom controls of its own and almost
|
|
9536
|
+
never has pan buttons, so a single switch would make them choose between
|
|
9537
|
+
a duplicate and nothing.
|
|
9538
|
+
|
|
9539
|
+
`none` draws none of them, which is the right answer where what was
|
|
9540
|
+
slotted already has controls a reader can find: what this argues for is
|
|
9541
|
+
that *a* findable control exists, never that it is ours. The methods stay
|
|
9542
|
+
public either way, so a consumer drawing their own chrome can still drive
|
|
9543
|
+
the surface.
|
|
9544
|
+
|
|
9545
|
+
Absent is whatever the family rests at, which is this library's rule that
|
|
9546
|
+
a resting value is an attribute's absence: zoom, the compass and
|
|
9547
|
+
fullscreen for a map, whose pan buttons a page asks for, and zoom and
|
|
9548
|
+
fullscreen for a board, which a reader drags and whose pad took a third
|
|
9549
|
+
of the frame. The
|
|
9550
|
+
stylesheet lays the cluster out by which buttons are in it rather than by
|
|
9551
|
+
this attribute, so the two defaults need no rule each. */
|
|
9552
|
+
"prop:controls"?: (HelixHeadlessGraph["controls"]) | undefined;
|
|
9553
|
+
/** The name of the group of controls, read by screen readers.
|
|
9554
|
+
|
|
9555
|
+
Absent is the family's own name for it, "Map controls" or "Board
|
|
9556
|
+
controls", which names what the controls drive rather than the
|
|
9557
|
+
mechanism. Written here to say it in another language, which every other
|
|
9558
|
+
string this surface speaks already allowed and this one did not. */
|
|
9559
|
+
"attr:controls-label"?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
9560
|
+
/** The name of the group of controls, read by screen readers.
|
|
9561
|
+
|
|
9562
|
+
Absent is the family's own name for it, "Map controls" or "Board
|
|
9563
|
+
controls", which names what the controls drive rather than the
|
|
9564
|
+
mechanism. Written here to say it in another language, which every other
|
|
9565
|
+
string this surface speaks already allowed and this one did not. */
|
|
9566
|
+
"prop:controlsLabel"?: (HelixHeadlessGraph["controlsLabel"]) | undefined;
|
|
9567
|
+
/** Which corner the controls sit in.
|
|
9568
|
+
|
|
9569
|
+
**Configurable because there is no safe default**, which is a collision
|
|
9570
|
+
rather than a taste: whatever a consumer slots may put its own controls
|
|
9571
|
+
in any corner, and every library that draws some made this a setting for
|
|
9572
|
+
the same reason.
|
|
9573
|
+
|
|
9574
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
9575
|
+
them without a consumer writing a second rule. Absent is the top end, a
|
|
9576
|
+
resting value being an attribute's absence: a default that reflected
|
|
9577
|
+
would write an attribute onto every host that no server sent. */
|
|
9578
|
+
"attr:controls-placement"?: (HelixHeadlessGraph["controlsPlacement"]) | undefined;
|
|
9579
|
+
/** Which corner the controls sit in.
|
|
9580
|
+
|
|
9581
|
+
**Configurable because there is no safe default**, which is a collision
|
|
9582
|
+
rather than a taste: whatever a consumer slots may put its own controls
|
|
9583
|
+
in any corner, and every library that draws some made this a setting for
|
|
9584
|
+
the same reason.
|
|
9585
|
+
|
|
9586
|
+
Logical corners rather than left and right, so a right-to-left page moves
|
|
9587
|
+
them without a consumer writing a second rule. Absent is the top end, a
|
|
9588
|
+
resting value being an attribute's absence: a default that reflected
|
|
9589
|
+
would write an attribute onto every host that no server sent. */
|
|
9590
|
+
"prop:controlsPlacement"?: (HelixHeadlessGraph["controlsPlacement"]) | undefined;
|
|
9591
|
+
/** The fullscreen button's label. */
|
|
9592
|
+
"attr:fullscreen-label"?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
|
|
9593
|
+
/** The fullscreen button's label. */
|
|
9594
|
+
"prop:fullscreenLabel"?: (HelixHeadlessGraph["fullscreenLabel"]) | undefined;
|
|
9595
|
+
/** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
9596
|
+
|
|
9597
|
+
Zero keeps it up, which is the default: these controls are how a keyboard
|
|
9598
|
+
reader operates the surface, and chrome that hid itself by default would
|
|
9599
|
+
be the component undoing its own argument. Set it for a display nobody
|
|
9600
|
+
drives. */
|
|
9601
|
+
"attr:idle-delay"?: (HelixHeadlessGraph["idleDelay"] | `${number}`) | undefined;
|
|
9602
|
+
/** How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
9603
|
+
|
|
9604
|
+
Zero keeps it up, which is the default: these controls are how a keyboard
|
|
9605
|
+
reader operates the surface, and chrome that hid itself by default would
|
|
9606
|
+
be the component undoing its own argument. Set it for a display nobody
|
|
9607
|
+
drives. */
|
|
9608
|
+
"prop:idleDelay"?: (HelixHeadlessGraph["idleDelay"]) | undefined;
|
|
9609
|
+
/** The pan down button's label.
|
|
9610
|
+
|
|
9611
|
+
**A label for each way rather than one with the way filled in**, which is
|
|
9612
|
+
what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
9613
|
+
in French read out "Déplacer left". The word for a direction is as much
|
|
9614
|
+
the translator's as the word for panning, and a language can put it
|
|
9615
|
+
anywhere in the phrase. */
|
|
9616
|
+
"attr:pan-down-label"?: (HelixHeadlessGraph["panDownLabel"]) | undefined;
|
|
9617
|
+
/** The pan down button's label.
|
|
9618
|
+
|
|
9619
|
+
**A label for each way rather than one with the way filled in**, which is
|
|
9620
|
+
what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
9621
|
+
in French read out "Déplacer left". The word for a direction is as much
|
|
9622
|
+
the translator's as the word for panning, and a language can put it
|
|
9623
|
+
anywhere in the phrase. */
|
|
9624
|
+
"prop:panDownLabel"?: (HelixHeadlessGraph["panDownLabel"]) | undefined;
|
|
9625
|
+
/** The pan left button's label. */
|
|
9626
|
+
"attr:pan-left-label"?: (HelixHeadlessGraph["panLeftLabel"]) | undefined;
|
|
9627
|
+
/** The pan left button's label. */
|
|
9628
|
+
"prop:panLeftLabel"?: (HelixHeadlessGraph["panLeftLabel"]) | undefined;
|
|
9629
|
+
/** The pan right button's label. */
|
|
9630
|
+
"attr:pan-right-label"?: (HelixHeadlessGraph["panRightLabel"]) | undefined;
|
|
9631
|
+
/** The pan right button's label. */
|
|
9632
|
+
"prop:panRightLabel"?: (HelixHeadlessGraph["panRightLabel"]) | undefined;
|
|
9633
|
+
/** How far one press pans the view, as a fraction of its size.
|
|
9634
|
+
|
|
9635
|
+
A fraction rather than a distance, because this surface does not know the
|
|
9636
|
+
scale of what is inside it: a quarter of the viewport is the same gesture
|
|
9637
|
+
at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
9638
|
+
"attr:pan-step"?: (HelixHeadlessGraph["panStep"] | `${number}`) | undefined;
|
|
9639
|
+
/** How far one press pans the view, as a fraction of its size.
|
|
9640
|
+
|
|
9641
|
+
A fraction rather than a distance, because this surface does not know the
|
|
9642
|
+
scale of what is inside it: a quarter of the viewport is the same gesture
|
|
9643
|
+
at any zoom, and a consumer who wants their own units multiplies by them. */
|
|
9644
|
+
"prop:panStep"?: (HelixHeadlessGraph["panStep"]) | undefined;
|
|
9645
|
+
/** The pan up button's label. */
|
|
9646
|
+
"attr:pan-up-label"?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
9647
|
+
/** The pan up button's label. */
|
|
9648
|
+
"prop:panUpLabel"?: (HelixHeadlessGraph["panUpLabel"]) | undefined;
|
|
9649
|
+
/** The zoom in button's label. */
|
|
9650
|
+
"attr:zoom-in-label"?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
|
|
9651
|
+
/** The zoom in button's label. */
|
|
9652
|
+
"prop:zoomInLabel"?: (HelixHeadlessGraph["zoomInLabel"]) | undefined;
|
|
9653
|
+
/** The zoom out button's label. */
|
|
9654
|
+
"attr:zoom-out-label"?: (HelixHeadlessGraph["zoomOutLabel"]) | undefined;
|
|
9655
|
+
/** The zoom out button's label. */
|
|
9656
|
+
"prop:zoomOutLabel"?: (HelixHeadlessGraph["zoomOutLabel"]) | undefined;
|
|
9657
|
+
/** The `value` of the current item.
|
|
9658
|
+
|
|
9659
|
+
Not `option.active`, which is the option the keyboard is on: that is a
|
|
9660
|
+
different question from which one is chosen.
|
|
9661
|
+
|
|
9662
|
+
Writing always applies, so `<helix-tabs active="one">` starts on that
|
|
9663
|
+
tab, and `default-active` is how markup says where to start without
|
|
9664
|
+
naming the current one. */
|
|
9665
|
+
"prop:active"?: (HelixHeadlessGraph["active"]) | undefined;
|
|
9666
|
+
/** The `value` of the item declared current in markup.
|
|
9667
|
+
|
|
9668
|
+
Ignored once `active` is written. */
|
|
9669
|
+
"attr:default-active"?: (HelixHeadlessGraph["defaultActive"]) | undefined;
|
|
9670
|
+
/** The `value` of the item declared current in markup.
|
|
9671
|
+
|
|
9672
|
+
Ignored once `active` is written. */
|
|
9673
|
+
"prop:defaultActive"?: (HelixHeadlessGraph["defaultActive"]) | undefined;
|
|
9674
|
+
/** The links between notes, each from `source` to `target`. A property, never an attribute. */
|
|
9675
|
+
"prop:links"?: (HelixHeadlessGraph["links"]) | undefined;
|
|
9676
|
+
/** The notes. A property, never an attribute. */
|
|
9677
|
+
"prop:nodes"?: (HelixHeadlessGraph["nodes"]) | undefined;
|
|
9678
|
+
/** A note was selected, in the list or in the drawing. The detail's `value` is its `id`. */
|
|
9679
|
+
"on:helix-activate"?: ((
|
|
9680
|
+
e: HelixHeadlessGraphHelixActivateElementEvent,
|
|
9681
|
+
) => void) | undefined;
|
|
9682
|
+
/** A note is about to be selected. Cancelable: cancel it to keep the selection in your own state. */
|
|
9683
|
+
"on:helix-before-activate"?: ((
|
|
9684
|
+
e: HelixHeadlessGraphHelixBeforeActivateElementEvent,
|
|
9685
|
+
) => void) | undefined;
|
|
9686
|
+
/** A pan button or arrow key was pressed. Move the drawing. */
|
|
9687
|
+
"on:helix-graph-pan"?: ((
|
|
9688
|
+
e: HelixHeadlessGraphHelixGraphPanElementEvent,
|
|
9689
|
+
) => void) | undefined;
|
|
9690
|
+
/** The graph has been drawn whole, laid out and settled. Sent each time `drawn()` says it is drawn after it was not. */
|
|
9691
|
+
"on:helix-graph-ready"?: ((
|
|
9692
|
+
e: HelixHeadlessGraphHelixGraphReadyElementEvent,
|
|
9693
|
+
) => void) | undefined;
|
|
9694
|
+
/** A zoom button or key was pressed. Zoom the drawing. */
|
|
9695
|
+
"on:helix-graph-zoom"?: ((
|
|
9696
|
+
e: HelixHeadlessGraphHelixGraphZoomElementEvent,
|
|
9697
|
+
) => void) | undefined;
|
|
9698
|
+
|
|
9699
|
+
/** Set the innerHTML of the element */
|
|
9700
|
+
innerHTML?: (string) | undefined;
|
|
9701
|
+
/** Set the textContent of the element */
|
|
9702
|
+
textContent?: (string | number) | undefined;
|
|
9703
|
+
};
|
|
9704
|
+
|
|
9268
9705
|
/** `HelixHeadlessHeatmap` component event */
|
|
9269
9706
|
export type HelixHeadlessHeatmapElementEvent<E = Event> = TypedEvent<
|
|
9270
9707
|
HelixHeadlessHeatmap,
|
|
@@ -30518,6 +30955,229 @@ export type CustomElements = {
|
|
|
30518
30955
|
BaseEvents<HelixHeadlessFormatDate>
|
|
30519
30956
|
>;
|
|
30520
30957
|
|
|
30958
|
+
/**
|
|
30959
|
+
* Helix draws no graph. A force layout of thousands of notes is physics and
|
|
30960
|
+
* WebGL, which a renderer such as Sigma.js does. Put the renderer's box in the
|
|
30961
|
+
* frame, draw `nodes` and `links` in it, and answer the frame's pan and zoom
|
|
30962
|
+
* events by moving the drawing.
|
|
30963
|
+
*
|
|
30964
|
+
* What the frame adds is what a drawing of a graph cannot do: a list of every
|
|
30965
|
+
* note beside it, which is the graph for a screen reader and a quick way to
|
|
30966
|
+
* find a note for anyone. The selected note comes first, then the notes it
|
|
30967
|
+
* links to and from, then every other note, and the search field narrows it.
|
|
30968
|
+
* Selecting a note in the list or in the drawing is the same selection.
|
|
30969
|
+
*
|
|
30970
|
+
* Set `depth` to show the local graph: only the notes within that many links
|
|
30971
|
+
* of the selected one.
|
|
30972
|
+
*
|
|
30973
|
+
* `nodes` and `links` are properties, never markup: a graph of ten thousand
|
|
30974
|
+
* notes as ten thousand elements would cost what the renderer exists to save.
|
|
30975
|
+
* The list draws only the rows in view.
|
|
30976
|
+
*
|
|
30977
|
+
* The list scrolls on this tier. It carries `data-scroller`, and `core` ships
|
|
30978
|
+
* `[data-scroller] { overflow: auto }` into every shadow root. You still need
|
|
30979
|
+
* to set a block size on the list, or it grows to hold every row.
|
|
30980
|
+
*
|
|
30981
|
+
* ## Attributes & Properties
|
|
30982
|
+
*
|
|
30983
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
30984
|
+
*
|
|
30985
|
+
* - `count-label`/`countLabel`: What the list says of a note's count, with `{count}`.
|
|
30986
|
+
* - `depth`: How many links from the selected note to show, for its local graph. Unset
|
|
30987
|
+
* shows every note. The list holds what the drawing shows.
|
|
30988
|
+
* - `label`: The graph's name, read by screen readers, such as "Research notes".
|
|
30989
|
+
* Required.
|
|
30990
|
+
* - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
|
|
30991
|
+
* - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
|
|
30992
|
+
* - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
|
|
30993
|
+
* - `notes-label`/`notesLabel`: The list's name, read by screen readers.
|
|
30994
|
+
* - `search-label`/`searchLabel`: The search field's name.
|
|
30995
|
+
* - `selected-label`/`selectedLabel`: How the selected note is described in the list.
|
|
30996
|
+
* - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
30997
|
+
* `none`. A family can add words of its own.
|
|
30998
|
+
*
|
|
30999
|
+
* **A list rather than a switch, because the overlap is not symmetric.** A
|
|
31000
|
+
* surface a consumer brings often has zoom controls of its own and almost
|
|
31001
|
+
* never has pan buttons, so a single switch would make them choose between
|
|
31002
|
+
* a duplicate and nothing.
|
|
31003
|
+
*
|
|
31004
|
+
* `none` draws none of them, which is the right answer where what was
|
|
31005
|
+
* slotted already has controls a reader can find: what this argues for is
|
|
31006
|
+
* that *a* findable control exists, never that it is ours. The methods stay
|
|
31007
|
+
* public either way, so a consumer drawing their own chrome can still drive
|
|
31008
|
+
* the surface.
|
|
31009
|
+
*
|
|
31010
|
+
* Absent is whatever the family rests at, which is this library's rule that
|
|
31011
|
+
* a resting value is an attribute's absence: zoom, the compass and
|
|
31012
|
+
* fullscreen for a map, whose pan buttons a page asks for, and zoom and
|
|
31013
|
+
* fullscreen for a board, which a reader drags and whose pad took a third
|
|
31014
|
+
* of the frame. The
|
|
31015
|
+
* stylesheet lays the cluster out by which buttons are in it rather than by
|
|
31016
|
+
* this attribute, so the two defaults need no rule each.
|
|
31017
|
+
* - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers.
|
|
31018
|
+
*
|
|
31019
|
+
* Absent is the family's own name for it, "Map controls" or "Board
|
|
31020
|
+
* controls", which names what the controls drive rather than the
|
|
31021
|
+
* mechanism. Written here to say it in another language, which every other
|
|
31022
|
+
* string this surface speaks already allowed and this one did not.
|
|
31023
|
+
* - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
|
|
31024
|
+
*
|
|
31025
|
+
* **Configurable because there is no safe default**, which is a collision
|
|
31026
|
+
* rather than a taste: whatever a consumer slots may put its own controls
|
|
31027
|
+
* in any corner, and every library that draws some made this a setting for
|
|
31028
|
+
* the same reason.
|
|
31029
|
+
*
|
|
31030
|
+
* Logical corners rather than left and right, so a right-to-left page moves
|
|
31031
|
+
* them without a consumer writing a second rule. Absent is the top end, a
|
|
31032
|
+
* resting value being an attribute's absence: a default that reflected
|
|
31033
|
+
* would write an attribute onto every host that no server sent.
|
|
31034
|
+
* - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
|
|
31035
|
+
* - `idle-delay`/`idleDelay`: How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
31036
|
+
*
|
|
31037
|
+
* Zero keeps it up, which is the default: these controls are how a keyboard
|
|
31038
|
+
* reader operates the surface, and chrome that hid itself by default would
|
|
31039
|
+
* be the component undoing its own argument. Set it for a display nobody
|
|
31040
|
+
* drives.
|
|
31041
|
+
* - `pan-down-label`/`panDownLabel`: The pan down button's label.
|
|
31042
|
+
*
|
|
31043
|
+
* **A label for each way rather than one with the way filled in**, which is
|
|
31044
|
+
* what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
31045
|
+
* in French read out "Déplacer left". The word for a direction is as much
|
|
31046
|
+
* the translator's as the word for panning, and a language can put it
|
|
31047
|
+
* anywhere in the phrase.
|
|
31048
|
+
* - `pan-left-label`/`panLeftLabel`: The pan left button's label.
|
|
31049
|
+
* - `pan-right-label`/`panRightLabel`: The pan right button's label.
|
|
31050
|
+
* - `pan-step`/`panStep`: How far one press pans the view, as a fraction of its size.
|
|
31051
|
+
*
|
|
31052
|
+
* A fraction rather than a distance, because this surface does not know the
|
|
31053
|
+
* scale of what is inside it: a quarter of the viewport is the same gesture
|
|
31054
|
+
* at any zoom, and a consumer who wants their own units multiplies by them.
|
|
31055
|
+
* - `pan-up-label`/`panUpLabel`: The pan up button's label.
|
|
31056
|
+
* - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
|
|
31057
|
+
* - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
|
|
31058
|
+
* - `active`: The `value` of the current item.
|
|
31059
|
+
*
|
|
31060
|
+
* Not `option.active`, which is the option the keyboard is on: that is a
|
|
31061
|
+
* different question from which one is chosen.
|
|
31062
|
+
*
|
|
31063
|
+
* Writing always applies, so `<helix-tabs active="one">` starts on that
|
|
31064
|
+
* tab, and `default-active` is how markup says where to start without
|
|
31065
|
+
* naming the current one.
|
|
31066
|
+
* - `default-active`/`defaultActive`: The `value` of the item declared current in markup.
|
|
31067
|
+
*
|
|
31068
|
+
* Ignored once `active` is written.
|
|
31069
|
+
* - `links`: The links between notes, each from `source` to `target`. A property, never an attribute. (property only)
|
|
31070
|
+
* - `nodes`: The notes. A property, never an attribute. (property only)
|
|
31071
|
+
* - `ready`: Whether the graph has been drawn whole. For code that runs after `helix-graph-ready`. (property only) (readonly)
|
|
31072
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
31073
|
+
*
|
|
31074
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
31075
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
31076
|
+
* base class takes the name every subclass then cannot use.
|
|
31077
|
+
*
|
|
31078
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
31079
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
31080
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
31081
|
+
* instead.
|
|
31082
|
+
*
|
|
31083
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
31084
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
31085
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
31086
|
+
*
|
|
31087
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
31088
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
31089
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
31090
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
31091
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
31092
|
+
*
|
|
31093
|
+
* ## Events
|
|
31094
|
+
*
|
|
31095
|
+
* Events that will be emitted by the component.
|
|
31096
|
+
*
|
|
31097
|
+
* - `helix-activate`: A note was selected, in the list or in the drawing. The detail's `value` is its `id`.
|
|
31098
|
+
* - `helix-before-activate`: A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.
|
|
31099
|
+
* - `helix-graph-pan`: A pan button or arrow key was pressed. Move the drawing.
|
|
31100
|
+
* - `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.
|
|
31101
|
+
* - `helix-graph-zoom`: A zoom button or key was pressed. Zoom the drawing.
|
|
31102
|
+
*
|
|
31103
|
+
* ## Slots
|
|
31104
|
+
*
|
|
31105
|
+
* Areas where markup can be added to the component.
|
|
31106
|
+
*
|
|
31107
|
+
* - `(default)`: The renderer's box, which the drawing is made in.
|
|
31108
|
+
* - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
|
|
31109
|
+
* - `footer`: Content below the graph.
|
|
31110
|
+
* - `header`: Content above the graph.
|
|
31111
|
+
*
|
|
31112
|
+
* ## Methods
|
|
31113
|
+
*
|
|
31114
|
+
* Methods that can be called to access component functionality.
|
|
31115
|
+
*
|
|
31116
|
+
* - `drawn(whole = true) => void`: Says the graph has been drawn whole, or with `false`, that it no longer
|
|
31117
|
+
* is. Call it when the renderer's layout has settled and the graph is
|
|
31118
|
+
* finished. The first call after
|
|
31119
|
+
* the graph was not drawn sends `helix-graph-ready` and turns on
|
|
31120
|
+
* `:state(ready)`.
|
|
31121
|
+
* - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
|
|
31122
|
+
* - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
|
|
31123
|
+
* - `toggleFullscreen() => void`: Turns fullscreen on or off.
|
|
31124
|
+
* - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
|
|
31125
|
+
*
|
|
31126
|
+
* Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
|
|
31127
|
+
* a refusal and nothing moves. Unlike a native control, nothing has moved
|
|
31128
|
+
* by the time this runs, so refusing is simply not writing: there is
|
|
31129
|
+
* nothing to put back. Nobody refusing means the set updates itself,
|
|
31130
|
+
* whether or not a consumer declared `active`, a declared property being a
|
|
31131
|
+
* seed and a correction.
|
|
31132
|
+
*
|
|
31133
|
+
* ## CSS Parts
|
|
31134
|
+
*
|
|
31135
|
+
* Custom selectors for styling elements within the component.
|
|
31136
|
+
*
|
|
31137
|
+
* - `after`: The room the notes after those drawn would take, so the list scrolls its whole length.
|
|
31138
|
+
* - `before`: The room the notes before those drawn would take.
|
|
31139
|
+
* - `body`: The drawing beside the list, or above it where the frame is narrow.
|
|
31140
|
+
* - `controls`: The group the pan and zoom buttons sit in.
|
|
31141
|
+
* - `count`: How many notes the list holds, which a search narrows, at the end of the search bar.
|
|
31142
|
+
* - `filter-icon`: The icon beside the search field.
|
|
31143
|
+
* - `filter-mark`: The default icon beside the search field, shown when none is slotted.
|
|
31144
|
+
* - `footer`: The strip below the graph.
|
|
31145
|
+
* - `fullscreen`: The button that makes the graph fill the screen.
|
|
31146
|
+
* - `header`: The strip above the graph.
|
|
31147
|
+
* - `list`: The list of notes, which draws only the rows in view.
|
|
31148
|
+
* - `live`: What screen readers hear when a search changes how many notes there are.
|
|
31149
|
+
* - `note`: One note in the list.
|
|
31150
|
+
* - `note-cursor`: The note the keyboard is on in the list.
|
|
31151
|
+
* - `note-linked`: A note linked to or from the selected one.
|
|
31152
|
+
* - `note-name`: A note's name in the list.
|
|
31153
|
+
* - `note-relation`: How a note stands to the selected one, such as "Linked from Alpha".
|
|
31154
|
+
* - `note-selected`: The selected note, first in the list.
|
|
31155
|
+
* - `pan-down`: The button that moves the graph down.
|
|
31156
|
+
* - `pan-end`: The button that moves the graph toward the end of a line of text: right in English.
|
|
31157
|
+
* - `pan-start`: The button that moves the graph toward the start of a line of text: left in English.
|
|
31158
|
+
* - `pan-up`: The button that moves the graph up.
|
|
31159
|
+
* - `panel`: The search field and the list, beside the drawing or below it.
|
|
31160
|
+
* - `region`: The frame: the drawing, its controls and the list.
|
|
31161
|
+
* - `search`: The bar holding the icon, the search field and the count.
|
|
31162
|
+
* - `search-field`: The field that finds a note by its name.
|
|
31163
|
+
* - `stage`: The drawing and its controls.
|
|
31164
|
+
* - `viewport`: The box the renderer draws in.
|
|
31165
|
+
* - `zoom-in`: The zoom in button.
|
|
31166
|
+
* - `zoom-out`: The zoom out button.
|
|
31167
|
+
*
|
|
31168
|
+
* ## CSS States
|
|
31169
|
+
*
|
|
31170
|
+
* These can be used to apply styling when a component is in a given state.
|
|
31171
|
+
*
|
|
31172
|
+
* - `fullscreen`: The graph fills the screen.
|
|
31173
|
+
* - `idle`: The user has been still long enough for the header and footer to fade.
|
|
31174
|
+
* - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
|
|
31175
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
31176
|
+
*/
|
|
31177
|
+
"helix-headless-graph": Partial<
|
|
31178
|
+
HelixHeadlessGraphProps & BaseProps<HelixHeadlessGraph> & BaseEvents<HelixHeadlessGraph>
|
|
31179
|
+
>;
|
|
31180
|
+
|
|
30521
31181
|
/**
|
|
30522
31182
|
* A grid of cells, each colored by a tone. `rows="1"` makes a status strip, and
|
|
30523
31183
|
* `rows="7"` makes a contribution graph. GitHub's contribution graph uses five
|
|
@@ -50583,6 +51243,232 @@ export type CustomElementsSolidJs = {
|
|
|
50583
51243
|
BaseEvents<HelixHeadlessFormatDate>
|
|
50584
51244
|
>;
|
|
50585
51245
|
|
|
51246
|
+
/**
|
|
51247
|
+
* Helix draws no graph. A force layout of thousands of notes is physics and
|
|
51248
|
+
* WebGL, which a renderer such as Sigma.js does. Put the renderer's box in the
|
|
51249
|
+
* frame, draw `nodes` and `links` in it, and answer the frame's pan and zoom
|
|
51250
|
+
* events by moving the drawing.
|
|
51251
|
+
*
|
|
51252
|
+
* What the frame adds is what a drawing of a graph cannot do: a list of every
|
|
51253
|
+
* note beside it, which is the graph for a screen reader and a quick way to
|
|
51254
|
+
* find a note for anyone. The selected note comes first, then the notes it
|
|
51255
|
+
* links to and from, then every other note, and the search field narrows it.
|
|
51256
|
+
* Selecting a note in the list or in the drawing is the same selection.
|
|
51257
|
+
*
|
|
51258
|
+
* Set `depth` to show the local graph: only the notes within that many links
|
|
51259
|
+
* of the selected one.
|
|
51260
|
+
*
|
|
51261
|
+
* `nodes` and `links` are properties, never markup: a graph of ten thousand
|
|
51262
|
+
* notes as ten thousand elements would cost what the renderer exists to save.
|
|
51263
|
+
* The list draws only the rows in view.
|
|
51264
|
+
*
|
|
51265
|
+
* The list scrolls on this tier. It carries `data-scroller`, and `core` ships
|
|
51266
|
+
* `[data-scroller] { overflow: auto }` into every shadow root. You still need
|
|
51267
|
+
* to set a block size on the list, or it grows to hold every row.
|
|
51268
|
+
*
|
|
51269
|
+
* ## Attributes & Properties
|
|
51270
|
+
*
|
|
51271
|
+
* Component attributes and properties that can be applied to the element or by using JavaScript.
|
|
51272
|
+
*
|
|
51273
|
+
* - `count-label`/`countLabel`: What the list says of a note's count, with `{count}`.
|
|
51274
|
+
* - `depth`: How many links from the selected note to show, for its local graph. Unset
|
|
51275
|
+
* shows every note. The list holds what the drawing shows.
|
|
51276
|
+
* - `label`: The graph's name, read by screen readers, such as "Research notes".
|
|
51277
|
+
* Required.
|
|
51278
|
+
* - `linked-both-label`/`linkedBothLabel`: How a note linked both to and from the selected one is described, with `{note}`.
|
|
51279
|
+
* - `linked-from-label`/`linkedFromLabel`: How a note the selected one links to is described, with `{note}`, the selected note's name.
|
|
51280
|
+
* - `links-to-label`/`linksToLabel`: How a note that links to the selected one is described, with `{note}`.
|
|
51281
|
+
* - `notes-label`/`notesLabel`: The list's name, read by screen readers.
|
|
51282
|
+
* - `search-label`/`searchLabel`: The search field's name.
|
|
51283
|
+
* - `selected-label`/`selectedLabel`: How the selected note is described in the list.
|
|
51284
|
+
* - `controls`: Which controls to show, as a list such as `pan zoom fullscreen`, or
|
|
51285
|
+
* `none`. A family can add words of its own.
|
|
51286
|
+
*
|
|
51287
|
+
* **A list rather than a switch, because the overlap is not symmetric.** A
|
|
51288
|
+
* surface a consumer brings often has zoom controls of its own and almost
|
|
51289
|
+
* never has pan buttons, so a single switch would make them choose between
|
|
51290
|
+
* a duplicate and nothing.
|
|
51291
|
+
*
|
|
51292
|
+
* `none` draws none of them, which is the right answer where what was
|
|
51293
|
+
* slotted already has controls a reader can find: what this argues for is
|
|
51294
|
+
* that *a* findable control exists, never that it is ours. The methods stay
|
|
51295
|
+
* public either way, so a consumer drawing their own chrome can still drive
|
|
51296
|
+
* the surface.
|
|
51297
|
+
*
|
|
51298
|
+
* Absent is whatever the family rests at, which is this library's rule that
|
|
51299
|
+
* a resting value is an attribute's absence: zoom, the compass and
|
|
51300
|
+
* fullscreen for a map, whose pan buttons a page asks for, and zoom and
|
|
51301
|
+
* fullscreen for a board, which a reader drags and whose pad took a third
|
|
51302
|
+
* of the frame. The
|
|
51303
|
+
* stylesheet lays the cluster out by which buttons are in it rather than by
|
|
51304
|
+
* this attribute, so the two defaults need no rule each.
|
|
51305
|
+
* - `controls-label`/`controlsLabel`: The name of the group of controls, read by screen readers.
|
|
51306
|
+
*
|
|
51307
|
+
* Absent is the family's own name for it, "Map controls" or "Board
|
|
51308
|
+
* controls", which names what the controls drive rather than the
|
|
51309
|
+
* mechanism. Written here to say it in another language, which every other
|
|
51310
|
+
* string this surface speaks already allowed and this one did not.
|
|
51311
|
+
* - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
|
|
51312
|
+
*
|
|
51313
|
+
* **Configurable because there is no safe default**, which is a collision
|
|
51314
|
+
* rather than a taste: whatever a consumer slots may put its own controls
|
|
51315
|
+
* in any corner, and every library that draws some made this a setting for
|
|
51316
|
+
* the same reason.
|
|
51317
|
+
*
|
|
51318
|
+
* Logical corners rather than left and right, so a right-to-left page moves
|
|
51319
|
+
* them without a consumer writing a second rule. Absent is the top end, a
|
|
51320
|
+
* resting value being an attribute's absence: a default that reflected
|
|
51321
|
+
* would write an attribute onto every host that no server sent.
|
|
51322
|
+
* - `fullscreen-label`/`fullscreenLabel`: The fullscreen button's label.
|
|
51323
|
+
* - `idle-delay`/`idleDelay`: How long, in milliseconds, before the header and footer hide when the user is inactive. `0` keeps them visible.
|
|
51324
|
+
*
|
|
51325
|
+
* Zero keeps it up, which is the default: these controls are how a keyboard
|
|
51326
|
+
* reader operates the surface, and chrome that hid itself by default would
|
|
51327
|
+
* be the component undoing its own argument. Set it for a display nobody
|
|
51328
|
+
* drives.
|
|
51329
|
+
* - `pan-down-label`/`panDownLabel`: The pan down button's label.
|
|
51330
|
+
*
|
|
51331
|
+
* **A label for each way rather than one with the way filled in**, which is
|
|
51332
|
+
* what this was: `Pan {way}` filled in with `left`, so a page that said it
|
|
51333
|
+
* in French read out "Déplacer left". The word for a direction is as much
|
|
51334
|
+
* the translator's as the word for panning, and a language can put it
|
|
51335
|
+
* anywhere in the phrase.
|
|
51336
|
+
* - `pan-left-label`/`panLeftLabel`: The pan left button's label.
|
|
51337
|
+
* - `pan-right-label`/`panRightLabel`: The pan right button's label.
|
|
51338
|
+
* - `pan-step`/`panStep`: How far one press pans the view, as a fraction of its size.
|
|
51339
|
+
*
|
|
51340
|
+
* A fraction rather than a distance, because this surface does not know the
|
|
51341
|
+
* scale of what is inside it: a quarter of the viewport is the same gesture
|
|
51342
|
+
* at any zoom, and a consumer who wants their own units multiplies by them.
|
|
51343
|
+
* - `pan-up-label`/`panUpLabel`: The pan up button's label.
|
|
51344
|
+
* - `zoom-in-label`/`zoomInLabel`: The zoom in button's label.
|
|
51345
|
+
* - `zoom-out-label`/`zoomOutLabel`: The zoom out button's label.
|
|
51346
|
+
* - `active`: The `value` of the current item.
|
|
51347
|
+
*
|
|
51348
|
+
* Not `option.active`, which is the option the keyboard is on: that is a
|
|
51349
|
+
* different question from which one is chosen.
|
|
51350
|
+
*
|
|
51351
|
+
* Writing always applies, so `<helix-tabs active="one">` starts on that
|
|
51352
|
+
* tab, and `default-active` is how markup says where to start without
|
|
51353
|
+
* naming the current one.
|
|
51354
|
+
* - `default-active`/`defaultActive`: The `value` of the item declared current in markup.
|
|
51355
|
+
*
|
|
51356
|
+
* Ignored once `active` is written.
|
|
51357
|
+
* - `links`: The links between notes, each from `source` to `target`. A property, never an attribute. (property only)
|
|
51358
|
+
* - `nodes`: The notes. A property, never an attribute. (property only)
|
|
51359
|
+
* - `ready`: Whether the graph has been drawn whole. For code that runs after `helix-graph-ready`. (property only) (readonly)
|
|
51360
|
+
* - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
|
|
51361
|
+
*
|
|
51362
|
+
* **Named `whenSettled` because `settled` is taken four times over**, by
|
|
51363
|
+
* Image, Splitter and both color controls, none of them about transitions. A
|
|
51364
|
+
* base class takes the name every subclass then cannot use.
|
|
51365
|
+
*
|
|
51366
|
+
* **The state it reports cannot be watched, which is why this exists.** A
|
|
51367
|
+
* custom state is deliberately not in the DOM, so there is no
|
|
51368
|
+
* `MutationObserver` equivalent for `ElementInternals.states`. Await this
|
|
51369
|
+
* instead.
|
|
51370
|
+
*
|
|
51371
|
+
* Separate from `updateComplete`, which resolves in the microtask checkpoint
|
|
51372
|
+
* the suppression is still active in. That is the distinction `readyToMove`
|
|
51373
|
+
* in `@fusion.dev/helix-testing` is written around.
|
|
51374
|
+
*
|
|
51375
|
+
* It never resolves where `requestAnimationFrame` never fires, which is a
|
|
51376
|
+
* server, a hidden tab, and happy-dom. Callers that must not hang there race
|
|
51377
|
+
* it against a timeout, as the happy-dom harness's `readyToMove` does. The
|
|
51378
|
+
* browser harness's awaits it alone: a browser always runs the frame, and a
|
|
51379
|
+
* timer beside it was a bet on how long one takes, which a busy run lost. (property only) (readonly)
|
|
51380
|
+
*
|
|
51381
|
+
* ## Events
|
|
51382
|
+
*
|
|
51383
|
+
* Events that will be emitted by the component.
|
|
51384
|
+
*
|
|
51385
|
+
* - `helix-activate`: A note was selected, in the list or in the drawing. The detail's `value` is its `id`.
|
|
51386
|
+
* - `helix-before-activate`: A note is about to be selected. Cancelable: cancel it to keep the selection in your own state.
|
|
51387
|
+
* - `helix-graph-pan`: A pan button or arrow key was pressed. Move the drawing.
|
|
51388
|
+
* - `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.
|
|
51389
|
+
* - `helix-graph-zoom`: A zoom button or key was pressed. Zoom the drawing.
|
|
51390
|
+
*
|
|
51391
|
+
* ## Slots
|
|
51392
|
+
*
|
|
51393
|
+
* Areas where markup can be added to the component.
|
|
51394
|
+
*
|
|
51395
|
+
* - `(default)`: The renderer's box, which the drawing is made in.
|
|
51396
|
+
* - `filter-icon`: The icon in the search field. Defaults to a magnifying glass.
|
|
51397
|
+
* - `footer`: Content below the graph.
|
|
51398
|
+
* - `header`: Content above the graph.
|
|
51399
|
+
*
|
|
51400
|
+
* ## Methods
|
|
51401
|
+
*
|
|
51402
|
+
* Methods that can be called to access component functionality.
|
|
51403
|
+
*
|
|
51404
|
+
* - `drawn(whole = true) => void`: Says the graph has been drawn whole, or with `false`, that it no longer
|
|
51405
|
+
* is. Call it when the renderer's layout has settled and the graph is
|
|
51406
|
+
* finished. The first call after
|
|
51407
|
+
* the graph was not drawn sends `helix-graph-ready` and turns on
|
|
51408
|
+
* `:state(ready)`.
|
|
51409
|
+
* - `pan(to: ViewportWay) => void`: Pans the view one step in a direction.
|
|
51410
|
+
* - `zoom(by: number) => void`: Zooms the view one step: `1` zooms in and `-1` zooms out.
|
|
51411
|
+
* - `toggleFullscreen() => void`: Turns fullscreen on or off.
|
|
51412
|
+
* - `requestActive(next: string) => boolean`: Requests a new current item, and returns whether the change was applied.
|
|
51413
|
+
*
|
|
51414
|
+
* Announces before it acts, so `preventDefault()` on the `helix-before-activate` is
|
|
51415
|
+
* a refusal and nothing moves. Unlike a native control, nothing has moved
|
|
51416
|
+
* by the time this runs, so refusing is simply not writing: there is
|
|
51417
|
+
* nothing to put back. Nobody refusing means the set updates itself,
|
|
51418
|
+
* whether or not a consumer declared `active`, a declared property being a
|
|
51419
|
+
* seed and a correction.
|
|
51420
|
+
*
|
|
51421
|
+
* ## CSS Parts
|
|
51422
|
+
*
|
|
51423
|
+
* Custom selectors for styling elements within the component.
|
|
51424
|
+
*
|
|
51425
|
+
* - `after`: The room the notes after those drawn would take, so the list scrolls its whole length.
|
|
51426
|
+
* - `before`: The room the notes before those drawn would take.
|
|
51427
|
+
* - `body`: The drawing beside the list, or above it where the frame is narrow.
|
|
51428
|
+
* - `controls`: The group the pan and zoom buttons sit in.
|
|
51429
|
+
* - `count`: How many notes the list holds, which a search narrows, at the end of the search bar.
|
|
51430
|
+
* - `filter-icon`: The icon beside the search field.
|
|
51431
|
+
* - `filter-mark`: The default icon beside the search field, shown when none is slotted.
|
|
51432
|
+
* - `footer`: The strip below the graph.
|
|
51433
|
+
* - `fullscreen`: The button that makes the graph fill the screen.
|
|
51434
|
+
* - `header`: The strip above the graph.
|
|
51435
|
+
* - `list`: The list of notes, which draws only the rows in view.
|
|
51436
|
+
* - `live`: What screen readers hear when a search changes how many notes there are.
|
|
51437
|
+
* - `note`: One note in the list.
|
|
51438
|
+
* - `note-cursor`: The note the keyboard is on in the list.
|
|
51439
|
+
* - `note-linked`: A note linked to or from the selected one.
|
|
51440
|
+
* - `note-name`: A note's name in the list.
|
|
51441
|
+
* - `note-relation`: How a note stands to the selected one, such as "Linked from Alpha".
|
|
51442
|
+
* - `note-selected`: The selected note, first in the list.
|
|
51443
|
+
* - `pan-down`: The button that moves the graph down.
|
|
51444
|
+
* - `pan-end`: The button that moves the graph toward the end of a line of text: right in English.
|
|
51445
|
+
* - `pan-start`: The button that moves the graph toward the start of a line of text: left in English.
|
|
51446
|
+
* - `pan-up`: The button that moves the graph up.
|
|
51447
|
+
* - `panel`: The search field and the list, beside the drawing or below it.
|
|
51448
|
+
* - `region`: The frame: the drawing, its controls and the list.
|
|
51449
|
+
* - `search`: The bar holding the icon, the search field and the count.
|
|
51450
|
+
* - `search-field`: The field that finds a note by its name.
|
|
51451
|
+
* - `stage`: The drawing and its controls.
|
|
51452
|
+
* - `viewport`: The box the renderer draws in.
|
|
51453
|
+
* - `zoom-in`: The zoom in button.
|
|
51454
|
+
* - `zoom-out`: The zoom out button.
|
|
51455
|
+
*
|
|
51456
|
+
* ## CSS States
|
|
51457
|
+
*
|
|
51458
|
+
* These can be used to apply styling when a component is in a given state.
|
|
51459
|
+
*
|
|
51460
|
+
* - `fullscreen`: The graph fills the screen.
|
|
51461
|
+
* - `idle`: The user has been still long enough for the header and footer to fade.
|
|
51462
|
+
* - `ready`: The graph has been drawn whole, after `helix-graph-ready`.
|
|
51463
|
+
* - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
|
|
51464
|
+
*/
|
|
51465
|
+
"helix-headless-graph": Partial<
|
|
51466
|
+
HelixHeadlessGraphProps &
|
|
51467
|
+
HelixHeadlessGraphSolidJsProps &
|
|
51468
|
+
BaseProps<HelixHeadlessGraph> &
|
|
51469
|
+
BaseEvents<HelixHeadlessGraph>
|
|
51470
|
+
>;
|
|
51471
|
+
|
|
50586
51472
|
/**
|
|
50587
51473
|
* A grid of cells, each colored by a tone. `rows="1"` makes a status strip, and
|
|
50588
51474
|
* `rows="7"` makes a contribution graph. GitHub's contribution graph uses five
|