@fusion.dev/helix-headless 0.103.1 → 0.103.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/types/jsx.d.ts CHANGED
@@ -9396,56 +9396,61 @@ export type HelixHeadlessMapHelixMapZoomElementEvent =
9396
9396
  HelixHeadlessMapElementEvent<HelixMapZoomEvent>;
9397
9397
 
9398
9398
  export type HelixHeadlessMapProps = {
9399
- /** Which of the controls this frame draws, as a list of what to keep.
9400
-
9401
- **A list rather than a switch, because the overlap is not symmetric.**
9402
- Every map library draws zoom controls and none of them draws pan buttons:
9403
- MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
9404
- Google's is zoom. So a consumer slotting one of those has our zoom twice
9405
- over and our pan pad not at all, and a single switch would make them choose
9406
- between a duplicate and nothing.
9407
-
9408
- `none` draws none of them, which is the right answer where the slotted map
9409
- already has controls a reader can find: what this family argues for is that
9410
- *a* findable control exists, never that it is ours. The methods stay public
9411
- either way, so a consumer drawing their own chrome can still drive the
9412
- frame.
9413
-
9414
- Absent is all three, which is this library's rule that a resting value is an
9415
- attribute's absence, and it is what the stylesheet asks about: the layout
9416
- rules are written against `[controls]:not([controls~="zoom"])` rather than
9417
- the bare negation, or a frame that named no list at all would be laid out as
9418
- though it had dropped everything. */
9399
+ /** Accessible name for the map, which is the one thing a consumer must write.
9400
+
9401
+ There is no sensible default. "Map" names the widget rather than the place,
9402
+ and a reader meeting three of them on a page learns nothing from hearing the
9403
+ same word three times.
9404
+
9405
+ **The region is a tab stop**, so the keys are reachable however the controls
9406
+ are configured: the listener is on the region, and without a stop of its own
9407
+ a frame at `controls="none"` around a map with nothing focusable in it had
9408
+ arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
9409
+ rather than spelling them into the name, which would otherwise be read out
9410
+ at every encounter. */
9411
+ label?: (HelixHeadlessMap["label"]) | undefined;
9412
+ /** Which of the controls this surface draws, as a list of what to keep.
9413
+
9414
+ **A list rather than a switch, because the overlap is not symmetric.** A
9415
+ surface a consumer brings often has zoom controls of its own and almost
9416
+ never has pan buttons, so a single switch would make them choose between
9417
+ a duplicate and nothing.
9418
+
9419
+ `none` draws none of them, which is the right answer where what was
9420
+ slotted already has controls a reader can find: what this argues for is
9421
+ that *a* findable control exists, never that it is ours. The methods stay
9422
+ public either way, so a consumer drawing their own chrome can still drive
9423
+ the surface.
9424
+
9425
+ Absent is all three, which is this library's rule that a resting value is
9426
+ an attribute's absence, and it is what the stylesheet asks about: the
9427
+ layout rules are written against `[controls]:not([controls~="zoom"])`
9428
+ rather than the bare negation, or a surface that named no list at all
9429
+ would be laid out as though it had dropped everything. */
9419
9430
  controls?: (HelixHeadlessMap["controls"]) | undefined;
9420
9431
  /** Which corner the controls sit in.
9421
9432
 
9422
- **Configurable because there is no safe default**, and this is a collision
9423
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9424
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9425
- corner this took would land on somebody's, which is why every one of those
9426
- libraries made it a setting too.
9433
+ **Configurable because there is no safe default**, which is a collision
9434
+ rather than a taste: whatever a consumer slots may put its own controls
9435
+ in any corner, and every library that draws some made this a setting for
9436
+ the same reason.
9427
9437
 
9428
9438
  Logical corners rather than left and right, so a right-to-left page moves
9429
- them without a consumer writing a second rule.
9430
-
9431
- Absent is the top end, which is this library's rule that a resting value is
9432
- an attribute's absence: a default that reflected would write an attribute
9433
- onto every host that no server sent and nobody asked for. */
9439
+ them without a consumer writing a second rule. Absent is the top end, a
9440
+ resting value being an attribute's absence: a default that reflected
9441
+ would write an attribute onto every host that no server sent. */
9434
9442
  "controls-placement"?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9435
9443
  /** Which corner the controls sit in.
9436
9444
 
9437
- **Configurable because there is no safe default**, and this is a collision
9438
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9439
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9440
- corner this took would land on somebody's, which is why every one of those
9441
- libraries made it a setting too.
9445
+ **Configurable because there is no safe default**, which is a collision
9446
+ rather than a taste: whatever a consumer slots may put its own controls
9447
+ in any corner, and every library that draws some made this a setting for
9448
+ the same reason.
9442
9449
 
9443
9450
  Logical corners rather than left and right, so a right-to-left page moves
9444
- them without a consumer writing a second rule.
9445
-
9446
- Absent is the top end, which is this library's rule that a resting value is
9447
- an attribute's absence: a default that reflected would write an attribute
9448
- onto every host that no server sent and nobody asked for. */
9451
+ them without a consumer writing a second rule. Absent is the top end, a
9452
+ resting value being an attribute's absence: a default that reflected
9453
+ would write an attribute onto every host that no server sent. */
9449
9454
  controlsPlacement?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9450
9455
  /** What the control that fills the screen is called. */
9451
9456
  "fullscreen-label"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
@@ -9453,47 +9458,41 @@ onto every host that no server sent and nobody asked for. */
9453
9458
  fullscreenLabel?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
9454
9459
  /** How long the reader may be still before the chrome hides, in milliseconds.
9455
9460
 
9456
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9457
- reader operates it, and chrome that hides itself by default would be this
9458
- component undoing its own argument. Set it for a display map nobody drives. */
9461
+ Zero keeps it up, which is the default: these controls are how a keyboard
9462
+ reader operates the surface, and chrome that hid itself by default would
9463
+ be the component undoing its own argument. Set it for a display nobody
9464
+ drives. */
9459
9465
  "idle-delay"?: (HelixHeadlessMap["idleDelay"] | `${number}`) | undefined;
9460
9466
  /** How long the reader may be still before the chrome hides, in milliseconds.
9461
9467
 
9462
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9463
- reader operates it, and chrome that hides itself by default would be this
9464
- component undoing its own argument. Set it for a display map nobody drives. */
9468
+ Zero keeps it up, which is the default: these controls are how a keyboard
9469
+ reader operates the surface, and chrome that hid itself by default would
9470
+ be the component undoing its own argument. Set it for a display nobody
9471
+ drives. */
9465
9472
  idleDelay?: (HelixHeadlessMap["idleDelay"]) | undefined;
9466
- /** Accessible name for the map, which is the one thing a consumer must write.
9467
-
9468
- There is no sensible default. "Map" names the widget rather than the place,
9469
- and a reader meeting three of them on a page learns nothing from hearing the
9470
- same word three times. */
9471
- label?: (HelixHeadlessMap["label"]) | undefined;
9472
- /** What the controls are called, for a page not in English. */
9473
+ /** What one pan control is called, with `{way}` filled in. */
9473
9474
  "pan-label"?: (HelixHeadlessMap["panLabel"]) | undefined;
9474
- /** What the controls are called, for a page not in English. */
9475
+ /** What one pan control is called, with `{way}` filled in. */
9475
9476
  panLabel?: (HelixHeadlessMap["panLabel"]) | undefined;
9476
- /** How far one press moves the map, as a fraction of what is on screen.
9477
+ /** How far one press moves the view, as a fraction of what is on screen.
9477
9478
 
9478
- A fraction rather than a distance, because this frame does not know the
9479
- scale of what is inside it: a quarter of the viewport is the same gesture at
9480
- street level and at country level, and a consumer who wants metres can
9481
- multiply by their own. */
9479
+ A fraction rather than a distance, because this surface does not know the
9480
+ scale of what is inside it: a quarter of the viewport is the same gesture
9481
+ at any zoom, and a consumer who wants their own units multiplies by them. */
9482
9482
  "pan-step"?: (HelixHeadlessMap["panStep"] | `${number}`) | undefined;
9483
- /** How far one press moves the map, as a fraction of what is on screen.
9483
+ /** How far one press moves the view, as a fraction of what is on screen.
9484
9484
 
9485
- A fraction rather than a distance, because this frame does not know the
9486
- scale of what is inside it: a quarter of the viewport is the same gesture at
9487
- street level and at country level, and a consumer who wants metres can
9488
- multiply by their own. */
9485
+ A fraction rather than a distance, because this surface does not know the
9486
+ scale of what is inside it: a quarter of the viewport is the same gesture
9487
+ at any zoom, and a consumer who wants their own units multiplies by them. */
9489
9488
  panStep?: (HelixHeadlessMap["panStep"]) | undefined;
9490
- /** What the zoom controls are called. */
9489
+ /** What the control that zooms in is called. */
9491
9490
  "zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9492
- /** What the zoom controls are called. */
9491
+ /** What the control that zooms in is called. */
9493
9492
  zoomInLabel?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9494
- /** What the zoom control that goes the other way is called. */
9493
+ /** What the control that zooms out is called. */
9495
9494
  "zoom-out-label"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9496
- /** What the zoom control that goes the other way is called. */
9495
+ /** What the control that zooms out is called. */
9497
9496
  zoomOutLabel?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9498
9497
 
9499
9498
  /** The reader asked the map to move. Answer it against your own map. */
@@ -9503,56 +9502,61 @@ multiply by their own. */
9503
9502
  };
9504
9503
 
9505
9504
  export type HelixHeadlessMapSolidJsProps = {
9506
- /** Which of the controls this frame draws, as a list of what to keep.
9507
-
9508
- **A list rather than a switch, because the overlap is not symmetric.**
9509
- Every map library draws zoom controls and none of them draws pan buttons:
9510
- MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
9511
- Google's is zoom. So a consumer slotting one of those has our zoom twice
9512
- over and our pan pad not at all, and a single switch would make them choose
9513
- between a duplicate and nothing.
9514
-
9515
- `none` draws none of them, which is the right answer where the slotted map
9516
- already has controls a reader can find: what this family argues for is that
9517
- *a* findable control exists, never that it is ours. The methods stay public
9518
- either way, so a consumer drawing their own chrome can still drive the
9519
- frame.
9520
-
9521
- Absent is all three, which is this library's rule that a resting value is an
9522
- attribute's absence, and it is what the stylesheet asks about: the layout
9523
- rules are written against `[controls]:not([controls~="zoom"])` rather than
9524
- the bare negation, or a frame that named no list at all would be laid out as
9525
- though it had dropped everything. */
9505
+ /** Accessible name for the map, which is the one thing a consumer must write.
9506
+
9507
+ There is no sensible default. "Map" names the widget rather than the place,
9508
+ and a reader meeting three of them on a page learns nothing from hearing the
9509
+ same word three times.
9510
+
9511
+ **The region is a tab stop**, so the keys are reachable however the controls
9512
+ are configured: the listener is on the region, and without a stop of its own
9513
+ a frame at `controls="none"` around a map with nothing focusable in it had
9514
+ arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
9515
+ rather than spelling them into the name, which would otherwise be read out
9516
+ at every encounter. */
9517
+ "prop:label"?: (HelixHeadlessMap["label"]) | undefined;
9518
+ /** Which of the controls this surface draws, as a list of what to keep.
9519
+
9520
+ **A list rather than a switch, because the overlap is not symmetric.** A
9521
+ surface a consumer brings often has zoom controls of its own and almost
9522
+ never has pan buttons, so a single switch would make them choose between
9523
+ a duplicate and nothing.
9524
+
9525
+ `none` draws none of them, which is the right answer where what was
9526
+ slotted already has controls a reader can find: what this argues for is
9527
+ that *a* findable control exists, never that it is ours. The methods stay
9528
+ public either way, so a consumer drawing their own chrome can still drive
9529
+ the surface.
9530
+
9531
+ Absent is all three, which is this library's rule that a resting value is
9532
+ an attribute's absence, and it is what the stylesheet asks about: the
9533
+ layout rules are written against `[controls]:not([controls~="zoom"])`
9534
+ rather than the bare negation, or a surface that named no list at all
9535
+ would be laid out as though it had dropped everything. */
9526
9536
  "prop:controls"?: (HelixHeadlessMap["controls"]) | undefined;
9527
9537
  /** Which corner the controls sit in.
9528
9538
 
9529
- **Configurable because there is no safe default**, and this is a collision
9530
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9531
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9532
- corner this took would land on somebody's, which is why every one of those
9533
- libraries made it a setting too.
9539
+ **Configurable because there is no safe default**, which is a collision
9540
+ rather than a taste: whatever a consumer slots may put its own controls
9541
+ in any corner, and every library that draws some made this a setting for
9542
+ the same reason.
9534
9543
 
9535
9544
  Logical corners rather than left and right, so a right-to-left page moves
9536
- them without a consumer writing a second rule.
9537
-
9538
- Absent is the top end, which is this library's rule that a resting value is
9539
- an attribute's absence: a default that reflected would write an attribute
9540
- onto every host that no server sent and nobody asked for. */
9545
+ them without a consumer writing a second rule. Absent is the top end, a
9546
+ resting value being an attribute's absence: a default that reflected
9547
+ would write an attribute onto every host that no server sent. */
9541
9548
  "attr:controls-placement"?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9542
9549
  /** Which corner the controls sit in.
9543
9550
 
9544
- **Configurable because there is no safe default**, and this is a collision
9545
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9546
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9547
- corner this took would land on somebody's, which is why every one of those
9548
- libraries made it a setting too.
9551
+ **Configurable because there is no safe default**, which is a collision
9552
+ rather than a taste: whatever a consumer slots may put its own controls
9553
+ in any corner, and every library that draws some made this a setting for
9554
+ the same reason.
9549
9555
 
9550
9556
  Logical corners rather than left and right, so a right-to-left page moves
9551
- them without a consumer writing a second rule.
9552
-
9553
- Absent is the top end, which is this library's rule that a resting value is
9554
- an attribute's absence: a default that reflected would write an attribute
9555
- onto every host that no server sent and nobody asked for. */
9557
+ them without a consumer writing a second rule. Absent is the top end, a
9558
+ resting value being an attribute's absence: a default that reflected
9559
+ would write an attribute onto every host that no server sent. */
9556
9560
  "prop:controlsPlacement"?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9557
9561
  /** What the control that fills the screen is called. */
9558
9562
  "attr:fullscreen-label"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
@@ -9560,47 +9564,41 @@ onto every host that no server sent and nobody asked for. */
9560
9564
  "prop:fullscreenLabel"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
9561
9565
  /** How long the reader may be still before the chrome hides, in milliseconds.
9562
9566
 
9563
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9564
- reader operates it, and chrome that hides itself by default would be this
9565
- component undoing its own argument. Set it for a display map nobody drives. */
9567
+ Zero keeps it up, which is the default: these controls are how a keyboard
9568
+ reader operates the surface, and chrome that hid itself by default would
9569
+ be the component undoing its own argument. Set it for a display nobody
9570
+ drives. */
9566
9571
  "attr:idle-delay"?: (HelixHeadlessMap["idleDelay"] | `${number}`) | undefined;
9567
9572
  /** How long the reader may be still before the chrome hides, in milliseconds.
9568
9573
 
9569
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9570
- reader operates it, and chrome that hides itself by default would be this
9571
- component undoing its own argument. Set it for a display map nobody drives. */
9574
+ Zero keeps it up, which is the default: these controls are how a keyboard
9575
+ reader operates the surface, and chrome that hid itself by default would
9576
+ be the component undoing its own argument. Set it for a display nobody
9577
+ drives. */
9572
9578
  "prop:idleDelay"?: (HelixHeadlessMap["idleDelay"]) | undefined;
9573
- /** Accessible name for the map, which is the one thing a consumer must write.
9574
-
9575
- There is no sensible default. "Map" names the widget rather than the place,
9576
- and a reader meeting three of them on a page learns nothing from hearing the
9577
- same word three times. */
9578
- "prop:label"?: (HelixHeadlessMap["label"]) | undefined;
9579
- /** What the controls are called, for a page not in English. */
9579
+ /** What one pan control is called, with `{way}` filled in. */
9580
9580
  "attr:pan-label"?: (HelixHeadlessMap["panLabel"]) | undefined;
9581
- /** What the controls are called, for a page not in English. */
9581
+ /** What one pan control is called, with `{way}` filled in. */
9582
9582
  "prop:panLabel"?: (HelixHeadlessMap["panLabel"]) | undefined;
9583
- /** How far one press moves the map, as a fraction of what is on screen.
9583
+ /** How far one press moves the view, as a fraction of what is on screen.
9584
9584
 
9585
- A fraction rather than a distance, because this frame does not know the
9586
- scale of what is inside it: a quarter of the viewport is the same gesture at
9587
- street level and at country level, and a consumer who wants metres can
9588
- multiply by their own. */
9585
+ A fraction rather than a distance, because this surface does not know the
9586
+ scale of what is inside it: a quarter of the viewport is the same gesture
9587
+ at any zoom, and a consumer who wants their own units multiplies by them. */
9589
9588
  "attr:pan-step"?: (HelixHeadlessMap["panStep"] | `${number}`) | undefined;
9590
- /** How far one press moves the map, as a fraction of what is on screen.
9589
+ /** How far one press moves the view, as a fraction of what is on screen.
9591
9590
 
9592
- A fraction rather than a distance, because this frame does not know the
9593
- scale of what is inside it: a quarter of the viewport is the same gesture at
9594
- street level and at country level, and a consumer who wants metres can
9595
- multiply by their own. */
9591
+ A fraction rather than a distance, because this surface does not know the
9592
+ scale of what is inside it: a quarter of the viewport is the same gesture
9593
+ at any zoom, and a consumer who wants their own units multiplies by them. */
9596
9594
  "prop:panStep"?: (HelixHeadlessMap["panStep"]) | undefined;
9597
- /** What the zoom controls are called. */
9595
+ /** What the control that zooms in is called. */
9598
9596
  "attr:zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9599
- /** What the zoom controls are called. */
9597
+ /** What the control that zooms in is called. */
9600
9598
  "prop:zoomInLabel"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9601
- /** What the zoom control that goes the other way is called. */
9599
+ /** What the control that zooms out is called. */
9602
9600
  "attr:zoom-out-label"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9603
- /** What the zoom control that goes the other way is called. */
9601
+ /** What the control that zooms out is called. */
9604
9602
  "prop:zoomOutLabel"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9605
9603
  /** The reader asked the map to move. Answer it against your own map. */
9606
9604
  "on:helix-map-pan"?: ((e: HelixHeadlessMapHelixMapPanElementEvent) => void) | undefined;
@@ -27616,60 +27614,62 @@ export type CustomElements = {
27616
27614
  *
27617
27615
  * Component attributes and properties that can be applied to the element or by using JavaScript.
27618
27616
  *
27619
- * - `controls`: Which of the controls this frame draws, as a list of what to keep.
27620
- *
27621
- * **A list rather than a switch, because the overlap is not symmetric.**
27622
- * Every map library draws zoom controls and none of them draws pan buttons:
27623
- * MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
27624
- * Google's is zoom. So a consumer slotting one of those has our zoom twice
27625
- * over and our pan pad not at all, and a single switch would make them choose
27626
- * between a duplicate and nothing.
27617
+ * - `label`: Accessible name for the map, which is the one thing a consumer must write.
27627
27618
  *
27628
- * `none` draws none of them, which is the right answer where the slotted map
27629
- * already has controls a reader can find: what this family argues for is that
27630
- * *a* findable control exists, never that it is ours. The methods stay public
27631
- * either way, so a consumer drawing their own chrome can still drive the
27632
- * frame.
27619
+ * There is no sensible default. "Map" names the widget rather than the place,
27620
+ * and a reader meeting three of them on a page learns nothing from hearing the
27621
+ * same word three times.
27633
27622
  *
27634
- * Absent is all three, which is this library's rule that a resting value is an
27635
- * attribute's absence, and it is what the stylesheet asks about: the layout
27636
- * rules are written against `[controls]:not([controls~="zoom"])` rather than
27637
- * the bare negation, or a frame that named no list at all would be laid out as
27638
- * though it had dropped everything.
27623
+ * **The region is a tab stop**, so the keys are reachable however the controls
27624
+ * are configured: the listener is on the region, and without a stop of its own
27625
+ * a frame at `controls="none"` around a map with nothing focusable in it had
27626
+ * arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
27627
+ * rather than spelling them into the name, which would otherwise be read out
27628
+ * at every encounter.
27629
+ * - `controls`: Which of the controls this surface draws, as a list of what to keep.
27630
+ *
27631
+ * **A list rather than a switch, because the overlap is not symmetric.** A
27632
+ * surface a consumer brings often has zoom controls of its own and almost
27633
+ * never has pan buttons, so a single switch would make them choose between
27634
+ * a duplicate and nothing.
27635
+ *
27636
+ * `none` draws none of them, which is the right answer where what was
27637
+ * slotted already has controls a reader can find: what this argues for is
27638
+ * that *a* findable control exists, never that it is ours. The methods stay
27639
+ * public either way, so a consumer drawing their own chrome can still drive
27640
+ * the surface.
27641
+ *
27642
+ * Absent is all three, which is this library's rule that a resting value is
27643
+ * an attribute's absence, and it is what the stylesheet asks about: the
27644
+ * layout rules are written against `[controls]:not([controls~="zoom"])`
27645
+ * rather than the bare negation, or a surface that named no list at all
27646
+ * would be laid out as though it had dropped everything.
27639
27647
  * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
27640
27648
  *
27641
- * **Configurable because there is no safe default**, and this is a collision
27642
- * rather than a taste: MapLibre puts its own controls at the top end, Leaflet
27643
- * and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
27644
- * corner this took would land on somebody's, which is why every one of those
27645
- * libraries made it a setting too.
27649
+ * **Configurable because there is no safe default**, which is a collision
27650
+ * rather than a taste: whatever a consumer slots may put its own controls
27651
+ * in any corner, and every library that draws some made this a setting for
27652
+ * the same reason.
27646
27653
  *
27647
27654
  * Logical corners rather than left and right, so a right-to-left page moves
27648
- * them without a consumer writing a second rule.
27649
- *
27650
- * Absent is the top end, which is this library's rule that a resting value is
27651
- * an attribute's absence: a default that reflected would write an attribute
27652
- * onto every host that no server sent and nobody asked for.
27655
+ * them without a consumer writing a second rule. Absent is the top end, a
27656
+ * resting value being an attribute's absence: a default that reflected
27657
+ * would write an attribute onto every host that no server sent.
27653
27658
  * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
27654
27659
  * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
27655
27660
  *
27656
- * Zero keeps it up, which is the default: a map's controls are how a keyboard
27657
- * reader operates it, and chrome that hides itself by default would be this
27658
- * component undoing its own argument. Set it for a display map nobody drives.
27659
- * - `label`: Accessible name for the map, which is the one thing a consumer must write.
27660
- *
27661
- * There is no sensible default. "Map" names the widget rather than the place,
27662
- * and a reader meeting three of them on a page learns nothing from hearing the
27663
- * same word three times.
27664
- * - `pan-label`/`panLabel`: What the controls are called, for a page not in English.
27665
- * - `pan-step`/`panStep`: How far one press moves the map, as a fraction of what is on screen.
27661
+ * Zero keeps it up, which is the default: these controls are how a keyboard
27662
+ * reader operates the surface, and chrome that hid itself by default would
27663
+ * be the component undoing its own argument. Set it for a display nobody
27664
+ * drives.
27665
+ * - `pan-label`/`panLabel`: What one pan control is called, with `{way}` filled in.
27666
+ * - `pan-step`/`panStep`: How far one press moves the view, as a fraction of what is on screen.
27666
27667
  *
27667
- * A fraction rather than a distance, because this frame does not know the
27668
- * scale of what is inside it: a quarter of the viewport is the same gesture at
27669
- * street level and at country level, and a consumer who wants metres can
27670
- * multiply by their own.
27671
- * - `zoom-in-label`/`zoomInLabel`: What the zoom controls are called.
27672
- * - `zoom-out-label`/`zoomOutLabel`: What the zoom control that goes the other way is called.
27668
+ * A fraction rather than a distance, because this surface does not know the
27669
+ * scale of what is inside it: a quarter of the viewport is the same gesture
27670
+ * at any zoom, and a consumer who wants their own units multiplies by them.
27671
+ * - `zoom-in-label`/`zoomInLabel`: What the control that zooms in is called.
27672
+ * - `zoom-out-label`/`zoomOutLabel`: What the control that zooms out is called.
27673
27673
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
27674
27674
  *
27675
27675
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -27711,9 +27711,9 @@ export type CustomElements = {
27711
27711
  *
27712
27712
  * Methods that can be called to access component functionality.
27713
27713
  *
27714
- * - `toggleFullscreen() => void`: Fills the screen with the frame, or comes back.
27715
- * - `pan(to: Way) => void`: Asks for the map to move, which the consumer answers.
27716
- * - `zoom(by: number) => void`: Asks for the map to zoom, `1` in and `-1` out.
27714
+ * - `pan(to: ViewportWay) => void`: Asks for the view to move, which the consumer answers.
27715
+ * - `zoom(by: number) => void`: Asks for the view to zoom, `1` in and `-1` out.
27716
+ * - `toggleFullscreen() => void`: Fills the screen with the surface, or comes back.
27717
27717
  *
27718
27718
  * ## CSS Parts
27719
27719
  *
@@ -46121,60 +46121,62 @@ export type CustomElementsSolidJs = {
46121
46121
  *
46122
46122
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46123
46123
  *
46124
- * - `controls`: Which of the controls this frame draws, as a list of what to keep.
46125
- *
46126
- * **A list rather than a switch, because the overlap is not symmetric.**
46127
- * Every map library draws zoom controls and none of them draws pan buttons:
46128
- * MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
46129
- * Google's is zoom. So a consumer slotting one of those has our zoom twice
46130
- * over and our pan pad not at all, and a single switch would make them choose
46131
- * between a duplicate and nothing.
46124
+ * - `label`: Accessible name for the map, which is the one thing a consumer must write.
46132
46125
  *
46133
- * `none` draws none of them, which is the right answer where the slotted map
46134
- * already has controls a reader can find: what this family argues for is that
46135
- * *a* findable control exists, never that it is ours. The methods stay public
46136
- * either way, so a consumer drawing their own chrome can still drive the
46137
- * frame.
46126
+ * There is no sensible default. "Map" names the widget rather than the place,
46127
+ * and a reader meeting three of them on a page learns nothing from hearing the
46128
+ * same word three times.
46138
46129
  *
46139
- * Absent is all three, which is this library's rule that a resting value is an
46140
- * attribute's absence, and it is what the stylesheet asks about: the layout
46141
- * rules are written against `[controls]:not([controls~="zoom"])` rather than
46142
- * the bare negation, or a frame that named no list at all would be laid out as
46143
- * though it had dropped everything.
46130
+ * **The region is a tab stop**, so the keys are reachable however the controls
46131
+ * are configured: the listener is on the region, and without a stop of its own
46132
+ * a frame at `controls="none"` around a map with nothing focusable in it had
46133
+ * arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
46134
+ * rather than spelling them into the name, which would otherwise be read out
46135
+ * at every encounter.
46136
+ * - `controls`: Which of the controls this surface draws, as a list of what to keep.
46137
+ *
46138
+ * **A list rather than a switch, because the overlap is not symmetric.** A
46139
+ * surface a consumer brings often has zoom controls of its own and almost
46140
+ * never has pan buttons, so a single switch would make them choose between
46141
+ * a duplicate and nothing.
46142
+ *
46143
+ * `none` draws none of them, which is the right answer where what was
46144
+ * slotted already has controls a reader can find: what this argues for is
46145
+ * that *a* findable control exists, never that it is ours. The methods stay
46146
+ * public either way, so a consumer drawing their own chrome can still drive
46147
+ * the surface.
46148
+ *
46149
+ * Absent is all three, which is this library's rule that a resting value is
46150
+ * an attribute's absence, and it is what the stylesheet asks about: the
46151
+ * layout rules are written against `[controls]:not([controls~="zoom"])`
46152
+ * rather than the bare negation, or a surface that named no list at all
46153
+ * would be laid out as though it had dropped everything.
46144
46154
  * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
46145
46155
  *
46146
- * **Configurable because there is no safe default**, and this is a collision
46147
- * rather than a taste: MapLibre puts its own controls at the top end, Leaflet
46148
- * and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
46149
- * corner this took would land on somebody's, which is why every one of those
46150
- * libraries made it a setting too.
46156
+ * **Configurable because there is no safe default**, which is a collision
46157
+ * rather than a taste: whatever a consumer slots may put its own controls
46158
+ * in any corner, and every library that draws some made this a setting for
46159
+ * the same reason.
46151
46160
  *
46152
46161
  * Logical corners rather than left and right, so a right-to-left page moves
46153
- * them without a consumer writing a second rule.
46154
- *
46155
- * Absent is the top end, which is this library's rule that a resting value is
46156
- * an attribute's absence: a default that reflected would write an attribute
46157
- * onto every host that no server sent and nobody asked for.
46162
+ * them without a consumer writing a second rule. Absent is the top end, a
46163
+ * resting value being an attribute's absence: a default that reflected
46164
+ * would write an attribute onto every host that no server sent.
46158
46165
  * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
46159
46166
  * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
46160
46167
  *
46161
- * Zero keeps it up, which is the default: a map's controls are how a keyboard
46162
- * reader operates it, and chrome that hides itself by default would be this
46163
- * component undoing its own argument. Set it for a display map nobody drives.
46164
- * - `label`: Accessible name for the map, which is the one thing a consumer must write.
46165
- *
46166
- * There is no sensible default. "Map" names the widget rather than the place,
46167
- * and a reader meeting three of them on a page learns nothing from hearing the
46168
- * same word three times.
46169
- * - `pan-label`/`panLabel`: What the controls are called, for a page not in English.
46170
- * - `pan-step`/`panStep`: How far one press moves the map, as a fraction of what is on screen.
46168
+ * Zero keeps it up, which is the default: these controls are how a keyboard
46169
+ * reader operates the surface, and chrome that hid itself by default would
46170
+ * be the component undoing its own argument. Set it for a display nobody
46171
+ * drives.
46172
+ * - `pan-label`/`panLabel`: What one pan control is called, with `{way}` filled in.
46173
+ * - `pan-step`/`panStep`: How far one press moves the view, as a fraction of what is on screen.
46171
46174
  *
46172
- * A fraction rather than a distance, because this frame does not know the
46173
- * scale of what is inside it: a quarter of the viewport is the same gesture at
46174
- * street level and at country level, and a consumer who wants metres can
46175
- * multiply by their own.
46176
- * - `zoom-in-label`/`zoomInLabel`: What the zoom controls are called.
46177
- * - `zoom-out-label`/`zoomOutLabel`: What the zoom control that goes the other way is called.
46175
+ * A fraction rather than a distance, because this surface does not know the
46176
+ * scale of what is inside it: a quarter of the viewport is the same gesture
46177
+ * at any zoom, and a consumer who wants their own units multiplies by them.
46178
+ * - `zoom-in-label`/`zoomInLabel`: What the control that zooms in is called.
46179
+ * - `zoom-out-label`/`zoomOutLabel`: What the control that zooms out is called.
46178
46180
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
46179
46181
  *
46180
46182
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -46216,9 +46218,9 @@ export type CustomElementsSolidJs = {
46216
46218
  *
46217
46219
  * Methods that can be called to access component functionality.
46218
46220
  *
46219
- * - `toggleFullscreen() => void`: Fills the screen with the frame, or comes back.
46220
- * - `pan(to: Way) => void`: Asks for the map to move, which the consumer answers.
46221
- * - `zoom(by: number) => void`: Asks for the map to zoom, `1` in and `-1` out.
46221
+ * - `pan(to: ViewportWay) => void`: Asks for the view to move, which the consumer answers.
46222
+ * - `zoom(by: number) => void`: Asks for the view to zoom, `1` in and `-1` out.
46223
+ * - `toggleFullscreen() => void`: Fills the screen with the surface, or comes back.
46222
46224
  *
46223
46225
  * ## CSS Parts
46224
46226
  *