@fusion.dev/helix-headless 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
@@ -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,
@@ -12068,6 +12505,12 @@ export type HelixHeadlessMapHelixMapZoomElementEvent =
12068
12505
  HelixHeadlessMapElementEvent<HelixMapZoomEvent>;
12069
12506
 
12070
12507
  export type HelixHeadlessMapProps = {
12508
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
12509
+ over, with `gestures="activate"`. */
12510
+ "activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
12511
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
12512
+ over, with `gestures="activate"`. */
12513
+ activateHintLabel?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
12071
12514
  /** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
12072
12515
  current, and the Face north button's needle turns with it. */
12073
12516
  bearing?: (HelixHeadlessMap["bearing"]) | undefined;
@@ -12082,6 +12525,19 @@ the map zooms in, and pressing one zooms in to its places. */
12082
12525
  "flat-label"?: (HelixHeadlessMap["flatLabel"]) | undefined;
12083
12526
  /** What screen readers hear when the map is tilted back to looking straight down. */
12084
12527
  flatLabel?: (HelixHeadlessMap["flatLabel"]) | undefined;
12528
+ /** Which gestures the map takes from the page.
12529
+
12530
+ - `always`, which unset is: the wheel zooms the map and one finger pans
12531
+ it, for a map that is the page, such as a full-screen view.
12532
+ - `cooperative`: the wheel and one finger scroll the page, and the map
12533
+ takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
12534
+ when a gesture passes to the page. Best for a map embedded in a page.
12535
+ - `activate`: the map takes nothing until it is pressed, and gives it
12536
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
12537
+
12538
+ The keyboard and the frame's buttons work in every mode. The renderer is
12539
+ told through the connector, so MapLibre and Leaflet behave alike. */
12540
+ gestures?: (HelixHeadlessMap["gestures"]) | undefined;
12085
12541
  /** The Hybrid map type's name. */
12086
12542
  "hybrid-label"?: (HelixHeadlessMap["hybridLabel"]) | undefined;
12087
12543
  /** The Hybrid map type's name. */
@@ -12163,6 +12619,22 @@ top of the map faces, clockwise from north. */
12163
12619
  /** What screen readers hear when the map is turned. `{degrees}` is the way the
12164
12620
  top of the map faces, clockwise from north. */
12165
12621
  turnedLabel?: (HelixHeadlessMap["turnedLabel"]) | undefined;
12622
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
12623
+ "two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
12624
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
12625
+ twoFingerHintLabel?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
12626
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
12627
+ "using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
12628
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
12629
+ usingLabel?: (HelixHeadlessMap["usingLabel"]) | undefined;
12630
+ /** The hint shown when the wheel scrolls past a map with
12631
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
12632
+ elsewhere, as the renderer reads it. */
12633
+ "wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
12634
+ /** The hint shown when the wheel scrolls past a map with
12635
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
12636
+ elsewhere, as the renderer reads it. */
12637
+ wheelHintLabel?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
12166
12638
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
12167
12639
  "zoomed-label"?: (HelixHeadlessMap["zoomedLabel"]) | undefined;
12168
12640
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
@@ -12325,6 +12797,12 @@ at any zoom, and a consumer who wants their own units multiplies by them. */
12325
12797
  };
12326
12798
 
12327
12799
  export type HelixHeadlessMapSolidJsProps = {
12800
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
12801
+ over, with `gestures="activate"`. */
12802
+ "attr:activate-hint-label"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
12803
+ /** The hint shown when a map waiting to be pressed is scrolled or swiped
12804
+ over, with `gestures="activate"`. */
12805
+ "prop:activateHintLabel"?: (HelixHeadlessMap["activateHintLabel"]) | undefined;
12328
12806
  /** The map's rotation, in degrees clockwise from north. `connectMap` keeps it
12329
12807
  current, and the Face north button's needle turns with it. */
12330
12808
  "prop:bearing"?: (HelixHeadlessMap["bearing"]) | undefined;
@@ -12339,6 +12817,19 @@ the map zooms in, and pressing one zooms in to its places. */
12339
12817
  "attr:flat-label"?: (HelixHeadlessMap["flatLabel"]) | undefined;
12340
12818
  /** What screen readers hear when the map is tilted back to looking straight down. */
12341
12819
  "prop:flatLabel"?: (HelixHeadlessMap["flatLabel"]) | undefined;
12820
+ /** Which gestures the map takes from the page.
12821
+
12822
+ - `always`, which unset is: the wheel zooms the map and one finger pans
12823
+ it, for a map that is the page, such as a full-screen view.
12824
+ - `cooperative`: the wheel and one finger scroll the page, and the map
12825
+ takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
12826
+ when a gesture passes to the page. Best for a map embedded in a page.
12827
+ - `activate`: the map takes nothing until it is pressed, and gives it
12828
+ back on Escape, when the pointer leaves it, or on a press elsewhere.
12829
+
12830
+ The keyboard and the frame's buttons work in every mode. The renderer is
12831
+ told through the connector, so MapLibre and Leaflet behave alike. */
12832
+ "prop:gestures"?: (HelixHeadlessMap["gestures"]) | undefined;
12342
12833
  /** The Hybrid map type's name. */
12343
12834
  "attr:hybrid-label"?: (HelixHeadlessMap["hybridLabel"]) | undefined;
12344
12835
  /** The Hybrid map type's name. */
@@ -12420,6 +12911,22 @@ top of the map faces, clockwise from north. */
12420
12911
  /** What screen readers hear when the map is turned. `{degrees}` is the way the
12421
12912
  top of the map faces, clockwise from north. */
12422
12913
  "prop:turnedLabel"?: (HelixHeadlessMap["turnedLabel"]) | undefined;
12914
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
12915
+ "attr:two-finger-hint-label"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
12916
+ /** The hint shown when one finger swipes over a map with `gestures="cooperative"`. */
12917
+ "prop:twoFingerHintLabel"?: (HelixHeadlessMap["twoFingerHintLabel"]) | undefined;
12918
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
12919
+ "attr:using-label"?: (HelixHeadlessMap["usingLabel"]) | undefined;
12920
+ /** The line shown while a map with `gestures="activate"` has the gestures. */
12921
+ "prop:usingLabel"?: (HelixHeadlessMap["usingLabel"]) | undefined;
12922
+ /** The hint shown when the wheel scrolls past a map with
12923
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
12924
+ elsewhere, as the renderer reads it. */
12925
+ "attr:wheel-hint-label"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
12926
+ /** The hint shown when the wheel scrolls past a map with
12927
+ `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
12928
+ elsewhere, as the renderer reads it. */
12929
+ "prop:wheelHintLabel"?: (HelixHeadlessMap["wheelHintLabel"]) | undefined;
12423
12930
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
12424
12931
  "attr:zoomed-label"?: (HelixHeadlessMap["zoomedLabel"]) | undefined;
12425
12932
  /** What screen readers hear after a zoom. `{level}` is the zoom level. */
@@ -30448,6 +30955,229 @@ export type CustomElements = {
30448
30955
  BaseEvents<HelixHeadlessFormatDate>
30449
30956
  >;
30450
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
+
30451
31181
  /**
30452
31182
  * A grid of cells, each colored by a tone. `rows="1"` makes a status strip, and
30453
31183
  * `rows="7"` makes a contribution graph. GitHub's contribution graph uses five
@@ -33141,12 +33871,26 @@ export type CustomElements = {
33141
33871
  *
33142
33872
  * Component attributes and properties that can be applied to the element or by using JavaScript.
33143
33873
  *
33874
+ * - `activate-hint-label`/`activateHintLabel`: The hint shown when a map waiting to be pressed is scrolled or swiped
33875
+ * over, with `gestures="activate"`.
33144
33876
  * - `bearing`: The map's rotation, in degrees clockwise from north. `connectMap` keeps it
33145
33877
  * current, and the Face north button's needle turns with it.
33146
33878
  * - `cluster`: Combines markers that would overlap into one count. Counts split apart as
33147
33879
  * the map zooms in, and pressing one zooms in to its places.
33148
33880
  * - `face-north-label`/`faceNorthLabel`: The Face north button's label.
33149
33881
  * - `flat-label`/`flatLabel`: What screen readers hear when the map is tilted back to looking straight down.
33882
+ * - `gestures`: Which gestures the map takes from the page.
33883
+ *
33884
+ * - `always`, which unset is: the wheel zooms the map and one finger pans
33885
+ * it, for a map that is the page, such as a full-screen view.
33886
+ * - `cooperative`: the wheel and one finger scroll the page, and the map
33887
+ * takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
33888
+ * when a gesture passes to the page. Best for a map embedded in a page.
33889
+ * - `activate`: the map takes nothing until it is pressed, and gives it
33890
+ * back on Escape, when the pointer leaves it, or on a press elsewhere.
33891
+ *
33892
+ * The keyboard and the frame's buttons work in every mode. The renderer is
33893
+ * told through the connector, so MapLibre and Leaflet behave alike.
33150
33894
  * - `hybrid-label`/`hybridLabel`: The Hybrid map type's name.
33151
33895
  * - `label`: The map's name, read by screen readers. Name the place, such as "Delivery
33152
33896
  * area", so that several maps on one page can be told apart. Required.
@@ -33173,6 +33917,11 @@ export type CustomElements = {
33173
33917
  * - `tilt-label`/`tiltLabel`: The 3D button's label.
33174
33918
  * - `turned-label`/`turnedLabel`: What screen readers hear when the map is turned. `{degrees}` is the way the
33175
33919
  * top of the map faces, clockwise from north.
33920
+ * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over a map with `gestures="cooperative"`.
33921
+ * - `using-label`/`usingLabel`: The line shown while a map with `gestures="activate"` has the gestures.
33922
+ * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past a map with
33923
+ * `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
33924
+ * elsewhere, as the renderer reads it.
33176
33925
  * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom. `{level}` is the zoom level.
33177
33926
  * - `zoom-level`/`zoomLevel`: How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
33178
33927
  * current, and the map says it after a zoom.
@@ -33333,6 +34082,8 @@ export type CustomElements = {
33333
34082
  * - `face-north`: The compass: its needle points north as the map turns, and pressing it turns the map to face north.
33334
34083
  * - `footer`: The strip below the map.
33335
34084
  * - `fullscreen`: The button that makes the map fill the screen.
34085
+ * - `gesture-hint`: Words over the map for a moment when it lets a gesture pass to the page, such as how to zoom it.
34086
+ * - `gesture-status`: The line shown while a map with `gestures="activate"` has the gestures.
33336
34087
  * - `header`: The strip above the map.
33337
34088
  * - `layer`: One entry in the list of the map's layers.
33338
34089
  * - `layer-choice`: One layer's tile in the layers menu, pressed while the layer is shown.
@@ -33367,6 +34118,7 @@ export type CustomElements = {
33367
34118
  * - `fullscreen`: The map fills the screen.
33368
34119
  * - `idle`: The user has been still long enough for the header and footer to fade.
33369
34120
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
34121
+ * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
33370
34122
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
33371
34123
  */
33372
34124
  "helix-headless-map": Partial<
@@ -50491,6 +51243,232 @@ export type CustomElementsSolidJs = {
50491
51243
  BaseEvents<HelixHeadlessFormatDate>
50492
51244
  >;
50493
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
+
50494
51472
  /**
50495
51473
  * A grid of cells, each colored by a tone. `rows="1"` makes a status strip, and
50496
51474
  * `rows="7"` makes a contribution graph. GitHub's contribution graph uses five
@@ -53238,12 +54216,26 @@ export type CustomElementsSolidJs = {
53238
54216
  *
53239
54217
  * Component attributes and properties that can be applied to the element or by using JavaScript.
53240
54218
  *
54219
+ * - `activate-hint-label`/`activateHintLabel`: The hint shown when a map waiting to be pressed is scrolled or swiped
54220
+ * over, with `gestures="activate"`.
53241
54221
  * - `bearing`: The map's rotation, in degrees clockwise from north. `connectMap` keeps it
53242
54222
  * current, and the Face north button's needle turns with it.
53243
54223
  * - `cluster`: Combines markers that would overlap into one count. Counts split apart as
53244
54224
  * the map zooms in, and pressing one zooms in to its places.
53245
54225
  * - `face-north-label`/`faceNorthLabel`: The Face north button's label.
53246
54226
  * - `flat-label`/`flatLabel`: What screen readers hear when the map is tilted back to looking straight down.
54227
+ * - `gestures`: Which gestures the map takes from the page.
54228
+ *
54229
+ * - `always`, which unset is: the wheel zooms the map and one finger pans
54230
+ * it, for a map that is the page, such as a full-screen view.
54231
+ * - `cooperative`: the wheel and one finger scroll the page, and the map
54232
+ * takes Ctrl or ⌘ with the wheel, and two fingers. The frame says so
54233
+ * when a gesture passes to the page. Best for a map embedded in a page.
54234
+ * - `activate`: the map takes nothing until it is pressed, and gives it
54235
+ * back on Escape, when the pointer leaves it, or on a press elsewhere.
54236
+ *
54237
+ * The keyboard and the frame's buttons work in every mode. The renderer is
54238
+ * told through the connector, so MapLibre and Leaflet behave alike.
53247
54239
  * - `hybrid-label`/`hybridLabel`: The Hybrid map type's name.
53248
54240
  * - `label`: The map's name, read by screen readers. Name the place, such as "Delivery
53249
54241
  * area", so that several maps on one page can be told apart. Required.
@@ -53270,6 +54262,11 @@ export type CustomElementsSolidJs = {
53270
54262
  * - `tilt-label`/`tiltLabel`: The 3D button's label.
53271
54263
  * - `turned-label`/`turnedLabel`: What screen readers hear when the map is turned. `{degrees}` is the way the
53272
54264
  * top of the map faces, clockwise from north.
54265
+ * - `two-finger-hint-label`/`twoFingerHintLabel`: The hint shown when one finger swipes over a map with `gestures="cooperative"`.
54266
+ * - `using-label`/`usingLabel`: The line shown while a map with `gestures="activate"` has the gestures.
54267
+ * - `wheel-hint-label`/`wheelHintLabel`: The hint shown when the wheel scrolls past a map with
54268
+ * `gestures="cooperative"`, with `{key}`, which is ⌘ on a Mac and Ctrl
54269
+ * elsewhere, as the renderer reads it.
53273
54270
  * - `zoomed-label`/`zoomedLabel`: What screen readers hear after a zoom. `{level}` is the zoom level.
53274
54271
  * - `zoom-level`/`zoomLevel`: How far the map is zoomed, in its renderer's levels. `connectMap` keeps it
53275
54272
  * current, and the map says it after a zoom.
@@ -53430,6 +54427,8 @@ export type CustomElementsSolidJs = {
53430
54427
  * - `face-north`: The compass: its needle points north as the map turns, and pressing it turns the map to face north.
53431
54428
  * - `footer`: The strip below the map.
53432
54429
  * - `fullscreen`: The button that makes the map fill the screen.
54430
+ * - `gesture-hint`: Words over the map for a moment when it lets a gesture pass to the page, such as how to zoom it.
54431
+ * - `gesture-status`: The line shown while a map with `gestures="activate"` has the gestures.
53433
54432
  * - `header`: The strip above the map.
53434
54433
  * - `layer`: One entry in the list of the map's layers.
53435
54434
  * - `layer-choice`: One layer's tile in the layers menu, pressed while the layer is shown.
@@ -53464,6 +54463,7 @@ export type CustomElementsSolidJs = {
53464
54463
  * - `fullscreen`: The map fills the screen.
53465
54464
  * - `idle`: The user has been still long enough for the header and footer to fade.
53466
54465
  * - `ready`: The map has been drawn whole, after `helix-map-ready`.
54466
+ * - `using`: A map with `gestures="activate"` has been pressed and has the gestures.
53467
54467
  * - `settled`: Set one frame after the first render. Transitions wait for it, so an element does not animate its own arrival.
53468
54468
  */
53469
54469
  "helix-headless-map": Partial<