@fusion.dev/helix-headless 0.103.2 → 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,54 +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
-
9472
- **The region is a tab stop**, so the keys are reachable however the controls
9473
- are configured: the listener is on the region, and without a stop of its own
9474
- a frame at `controls="none"` around a map with nothing focusable in it had
9475
- arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
9476
- rather than spelling them into the name, which would otherwise be read out
9477
- at every encounter. */
9478
- label?: (HelixHeadlessMap["label"]) | undefined;
9479
- /** What the controls are called, for a page not in English. */
9473
+ /** What one pan control is called, with `{way}` filled in. */
9480
9474
  "pan-label"?: (HelixHeadlessMap["panLabel"]) | undefined;
9481
- /** What the controls are called, for a page not in English. */
9475
+ /** What one pan control is called, with `{way}` filled in. */
9482
9476
  panLabel?: (HelixHeadlessMap["panLabel"]) | undefined;
9483
- /** 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.
9484
9478
 
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. */
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. */
9489
9482
  "pan-step"?: (HelixHeadlessMap["panStep"] | `${number}`) | undefined;
9490
- /** 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.
9491
9484
 
9492
- A fraction rather than a distance, because this frame does not know the
9493
- scale of what is inside it: a quarter of the viewport is the same gesture at
9494
- street level and at country level, and a consumer who wants metres can
9495
- 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. */
9496
9488
  panStep?: (HelixHeadlessMap["panStep"]) | undefined;
9497
- /** What the zoom controls are called. */
9489
+ /** What the control that zooms in is called. */
9498
9490
  "zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9499
- /** What the zoom controls are called. */
9491
+ /** What the control that zooms in is called. */
9500
9492
  zoomInLabel?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9501
- /** What the zoom control that goes the other way is called. */
9493
+ /** What the control that zooms out is called. */
9502
9494
  "zoom-out-label"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9503
- /** What the zoom control that goes the other way is called. */
9495
+ /** What the control that zooms out is called. */
9504
9496
  zoomOutLabel?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9505
9497
 
9506
9498
  /** The reader asked the map to move. Answer it against your own map. */
@@ -9510,56 +9502,61 @@ multiply by their own. */
9510
9502
  };
9511
9503
 
9512
9504
  export type HelixHeadlessMapSolidJsProps = {
9513
- /** Which of the controls this frame draws, as a list of what to keep.
9514
-
9515
- **A list rather than a switch, because the overlap is not symmetric.**
9516
- Every map library draws zoom controls and none of them draws pan buttons:
9517
- MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
9518
- Google's is zoom. So a consumer slotting one of those has our zoom twice
9519
- over and our pan pad not at all, and a single switch would make them choose
9520
- between a duplicate and nothing.
9521
-
9522
- `none` draws none of them, which is the right answer where the slotted map
9523
- already has controls a reader can find: what this family argues for is that
9524
- *a* findable control exists, never that it is ours. The methods stay public
9525
- either way, so a consumer drawing their own chrome can still drive the
9526
- frame.
9527
-
9528
- Absent is all three, which is this library's rule that a resting value is an
9529
- attribute's absence, and it is what the stylesheet asks about: the layout
9530
- rules are written against `[controls]:not([controls~="zoom"])` rather than
9531
- the bare negation, or a frame that named no list at all would be laid out as
9532
- 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. */
9533
9536
  "prop:controls"?: (HelixHeadlessMap["controls"]) | undefined;
9534
9537
  /** Which corner the controls sit in.
9535
9538
 
9536
- **Configurable because there is no safe default**, and this is a collision
9537
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9538
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9539
- corner this took would land on somebody's, which is why every one of those
9540
- 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.
9541
9543
 
9542
9544
  Logical corners rather than left and right, so a right-to-left page moves
9543
- them without a consumer writing a second rule.
9544
-
9545
- Absent is the top end, which is this library's rule that a resting value is
9546
- an attribute's absence: a default that reflected would write an attribute
9547
- 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. */
9548
9548
  "attr:controls-placement"?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9549
9549
  /** Which corner the controls sit in.
9550
9550
 
9551
- **Configurable because there is no safe default**, and this is a collision
9552
- rather than a taste: MapLibre puts its own controls at the top end, Leaflet
9553
- and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
9554
- corner this took would land on somebody's, which is why every one of those
9555
- 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.
9556
9555
 
9557
9556
  Logical corners rather than left and right, so a right-to-left page moves
9558
- them without a consumer writing a second rule.
9559
-
9560
- Absent is the top end, which is this library's rule that a resting value is
9561
- an attribute's absence: a default that reflected would write an attribute
9562
- 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. */
9563
9560
  "prop:controlsPlacement"?: (HelixHeadlessMap["controlsPlacement"]) | undefined;
9564
9561
  /** What the control that fills the screen is called. */
9565
9562
  "attr:fullscreen-label"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
@@ -9567,54 +9564,41 @@ onto every host that no server sent and nobody asked for. */
9567
9564
  "prop:fullscreenLabel"?: (HelixHeadlessMap["fullscreenLabel"]) | undefined;
9568
9565
  /** How long the reader may be still before the chrome hides, in milliseconds.
9569
9566
 
9570
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9571
- reader operates it, and chrome that hides itself by default would be this
9572
- 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. */
9573
9571
  "attr:idle-delay"?: (HelixHeadlessMap["idleDelay"] | `${number}`) | undefined;
9574
9572
  /** How long the reader may be still before the chrome hides, in milliseconds.
9575
9573
 
9576
- Zero keeps it up, which is the default: a map's controls are how a keyboard
9577
- reader operates it, and chrome that hides itself by default would be this
9578
- 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. */
9579
9578
  "prop:idleDelay"?: (HelixHeadlessMap["idleDelay"]) | undefined;
9580
- /** Accessible name for the map, which is the one thing a consumer must write.
9581
-
9582
- There is no sensible default. "Map" names the widget rather than the place,
9583
- and a reader meeting three of them on a page learns nothing from hearing the
9584
- same word three times.
9585
-
9586
- **The region is a tab stop**, so the keys are reachable however the controls
9587
- are configured: the listener is on the region, and without a stop of its own
9588
- a frame at `controls="none"` around a map with nothing focusable in it had
9589
- arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
9590
- rather than spelling them into the name, which would otherwise be read out
9591
- at every encounter. */
9592
- "prop:label"?: (HelixHeadlessMap["label"]) | undefined;
9593
- /** What the controls are called, for a page not in English. */
9579
+ /** What one pan control is called, with `{way}` filled in. */
9594
9580
  "attr:pan-label"?: (HelixHeadlessMap["panLabel"]) | undefined;
9595
- /** What the controls are called, for a page not in English. */
9581
+ /** What one pan control is called, with `{way}` filled in. */
9596
9582
  "prop:panLabel"?: (HelixHeadlessMap["panLabel"]) | undefined;
9597
- /** 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.
9598
9584
 
9599
- A fraction rather than a distance, because this frame does not know the
9600
- scale of what is inside it: a quarter of the viewport is the same gesture at
9601
- street level and at country level, and a consumer who wants metres can
9602
- 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. */
9603
9588
  "attr:pan-step"?: (HelixHeadlessMap["panStep"] | `${number}`) | undefined;
9604
- /** 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.
9605
9590
 
9606
- A fraction rather than a distance, because this frame does not know the
9607
- scale of what is inside it: a quarter of the viewport is the same gesture at
9608
- street level and at country level, and a consumer who wants metres can
9609
- 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. */
9610
9594
  "prop:panStep"?: (HelixHeadlessMap["panStep"]) | undefined;
9611
- /** What the zoom controls are called. */
9595
+ /** What the control that zooms in is called. */
9612
9596
  "attr:zoom-in-label"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9613
- /** What the zoom controls are called. */
9597
+ /** What the control that zooms in is called. */
9614
9598
  "prop:zoomInLabel"?: (HelixHeadlessMap["zoomInLabel"]) | undefined;
9615
- /** What the zoom control that goes the other way is called. */
9599
+ /** What the control that zooms out is called. */
9616
9600
  "attr:zoom-out-label"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9617
- /** What the zoom control that goes the other way is called. */
9601
+ /** What the control that zooms out is called. */
9618
9602
  "prop:zoomOutLabel"?: (HelixHeadlessMap["zoomOutLabel"]) | undefined;
9619
9603
  /** The reader asked the map to move. Answer it against your own map. */
9620
9604
  "on:helix-map-pan"?: ((e: HelixHeadlessMapHelixMapPanElementEvent) => void) | undefined;
@@ -27630,46 +27614,6 @@ export type CustomElements = {
27630
27614
  *
27631
27615
  * Component attributes and properties that can be applied to the element or by using JavaScript.
27632
27616
  *
27633
- * - `controls`: Which of the controls this frame draws, as a list of what to keep.
27634
- *
27635
- * **A list rather than a switch, because the overlap is not symmetric.**
27636
- * Every map library draws zoom controls and none of them draws pan buttons:
27637
- * MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
27638
- * Google's is zoom. So a consumer slotting one of those has our zoom twice
27639
- * over and our pan pad not at all, and a single switch would make them choose
27640
- * between a duplicate and nothing.
27641
- *
27642
- * `none` draws none of them, which is the right answer where the slotted map
27643
- * already has controls a reader can find: what this family argues for is that
27644
- * *a* findable control exists, never that it is ours. The methods stay public
27645
- * either way, so a consumer drawing their own chrome can still drive the
27646
- * frame.
27647
- *
27648
- * Absent is all three, which is this library's rule that a resting value is an
27649
- * attribute's absence, and it is what the stylesheet asks about: the layout
27650
- * rules are written against `[controls]:not([controls~="zoom"])` rather than
27651
- * the bare negation, or a frame that named no list at all would be laid out as
27652
- * though it had dropped everything.
27653
- * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
27654
- *
27655
- * **Configurable because there is no safe default**, and this is a collision
27656
- * rather than a taste: MapLibre puts its own controls at the top end, Leaflet
27657
- * and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
27658
- * corner this took would land on somebody's, which is why every one of those
27659
- * libraries made it a setting too.
27660
- *
27661
- * Logical corners rather than left and right, so a right-to-left page moves
27662
- * them without a consumer writing a second rule.
27663
- *
27664
- * Absent is the top end, which is this library's rule that a resting value is
27665
- * an attribute's absence: a default that reflected would write an attribute
27666
- * onto every host that no server sent and nobody asked for.
27667
- * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
27668
- * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
27669
- *
27670
- * Zero keeps it up, which is the default: a map's controls are how a keyboard
27671
- * reader operates it, and chrome that hides itself by default would be this
27672
- * component undoing its own argument. Set it for a display map nobody drives.
27673
27617
  * - `label`: Accessible name for the map, which is the one thing a consumer must write.
27674
27618
  *
27675
27619
  * There is no sensible default. "Map" names the widget rather than the place,
@@ -27682,15 +27626,50 @@ export type CustomElements = {
27682
27626
  * arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
27683
27627
  * rather than spelling them into the name, which would otherwise be read out
27684
27628
  * at every encounter.
27685
- * - `pan-label`/`panLabel`: What the controls are called, for a page not in English.
27686
- * - `pan-step`/`panStep`: How far one press moves the map, as a fraction of what is on screen.
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.
27647
+ * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
27648
+ *
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.
27687
27653
  *
27688
- * A fraction rather than a distance, because this frame does not know the
27689
- * scale of what is inside it: a quarter of the viewport is the same gesture at
27690
- * street level and at country level, and a consumer who wants metres can
27691
- * multiply by their own.
27692
- * - `zoom-in-label`/`zoomInLabel`: What the zoom controls are called.
27693
- * - `zoom-out-label`/`zoomOutLabel`: What the zoom control that goes the other way is called.
27654
+ * Logical corners rather than left and right, so a right-to-left page moves
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.
27658
+ * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
27659
+ * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
27660
+ *
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.
27667
+ *
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.
27694
27673
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
27695
27674
  *
27696
27675
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -27732,9 +27711,9 @@ export type CustomElements = {
27732
27711
  *
27733
27712
  * Methods that can be called to access component functionality.
27734
27713
  *
27735
- * - `toggleFullscreen() => void`: Fills the screen with the frame, or comes back.
27736
- * - `pan(to: Way) => void`: Asks for the map to move, which the consumer answers.
27737
- * - `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.
27738
27717
  *
27739
27718
  * ## CSS Parts
27740
27719
  *
@@ -46142,46 +46121,6 @@ export type CustomElementsSolidJs = {
46142
46121
  *
46143
46122
  * Component attributes and properties that can be applied to the element or by using JavaScript.
46144
46123
  *
46145
- * - `controls`: Which of the controls this frame draws, as a list of what to keep.
46146
- *
46147
- * **A list rather than a switch, because the overlap is not symmetric.**
46148
- * Every map library draws zoom controls and none of them draws pan buttons:
46149
- * MapLibre's navigation control is zoom and a compass, Leaflet's is zoom,
46150
- * Google's is zoom. So a consumer slotting one of those has our zoom twice
46151
- * over and our pan pad not at all, and a single switch would make them choose
46152
- * between a duplicate and nothing.
46153
- *
46154
- * `none` draws none of them, which is the right answer where the slotted map
46155
- * already has controls a reader can find: what this family argues for is that
46156
- * *a* findable control exists, never that it is ours. The methods stay public
46157
- * either way, so a consumer drawing their own chrome can still drive the
46158
- * frame.
46159
- *
46160
- * Absent is all three, which is this library's rule that a resting value is an
46161
- * attribute's absence, and it is what the stylesheet asks about: the layout
46162
- * rules are written against `[controls]:not([controls~="zoom"])` rather than
46163
- * the bare negation, or a frame that named no list at all would be laid out as
46164
- * though it had dropped everything.
46165
- * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
46166
- *
46167
- * **Configurable because there is no safe default**, and this is a collision
46168
- * rather than a taste: MapLibre puts its own controls at the top end, Leaflet
46169
- * and OpenLayers at the top start, Google's zoom at the bottom end. Whichever
46170
- * corner this took would land on somebody's, which is why every one of those
46171
- * libraries made it a setting too.
46172
- *
46173
- * Logical corners rather than left and right, so a right-to-left page moves
46174
- * them without a consumer writing a second rule.
46175
- *
46176
- * Absent is the top end, which is this library's rule that a resting value is
46177
- * an attribute's absence: a default that reflected would write an attribute
46178
- * onto every host that no server sent and nobody asked for.
46179
- * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
46180
- * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
46181
- *
46182
- * Zero keeps it up, which is the default: a map's controls are how a keyboard
46183
- * reader operates it, and chrome that hides itself by default would be this
46184
- * component undoing its own argument. Set it for a display map nobody drives.
46185
46124
  * - `label`: Accessible name for the map, which is the one thing a consumer must write.
46186
46125
  *
46187
46126
  * There is no sensible default. "Map" names the widget rather than the place,
@@ -46194,15 +46133,50 @@ export type CustomElementsSolidJs = {
46194
46133
  * arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
46195
46134
  * rather than spelling them into the name, which would otherwise be read out
46196
46135
  * at every encounter.
46197
- * - `pan-label`/`panLabel`: What the controls are called, for a page not in English.
46198
- * - `pan-step`/`panStep`: How far one press moves the map, as a fraction of what is on screen.
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.
46154
+ * - `controls-placement`/`controlsPlacement`: Which corner the controls sit in.
46155
+ *
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.
46160
+ *
46161
+ * Logical corners rather than left and right, so a right-to-left page moves
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.
46165
+ * - `fullscreen-label`/`fullscreenLabel`: What the control that fills the screen is called.
46166
+ * - `idle-delay`/`idleDelay`: How long the reader may be still before the chrome hides, in milliseconds.
46167
+ *
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.
46199
46174
  *
46200
- * A fraction rather than a distance, because this frame does not know the
46201
- * scale of what is inside it: a quarter of the viewport is the same gesture at
46202
- * street level and at country level, and a consumer who wants metres can
46203
- * multiply by their own.
46204
- * - `zoom-in-label`/`zoomInLabel`: What the zoom controls are called.
46205
- * - `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.
46206
46180
  * - `whenSettled`: Resolves a frame after the first update, when transitions are switched on.
46207
46181
  *
46208
46182
  * **Named `whenSettled` because `settled` is taken four times over**, by
@@ -46244,9 +46218,9 @@ export type CustomElementsSolidJs = {
46244
46218
  *
46245
46219
  * Methods that can be called to access component functionality.
46246
46220
  *
46247
- * - `toggleFullscreen() => void`: Fills the screen with the frame, or comes back.
46248
- * - `pan(to: Way) => void`: Asks for the map to move, which the consumer answers.
46249
- * - `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.
46250
46224
  *
46251
46225
  * ## CSS Parts
46252
46226
  *