@fusion.dev/helix 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.
@@ -69367,12 +69367,12 @@
69367
69367
  "type": {
69368
69368
  "text": "string | undefined"
69369
69369
  },
69370
- "description": "Which of the controls this frame draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.**\nEvery map library draws zoom controls and none of them draws pan buttons:\nMapLibre's navigation control is zoom and a compass, Leaflet's is zoom,\nGoogle's is zoom. So a consumer slotting one of those has our zoom twice\nover and our pan pad not at all, and a single switch would make them choose\nbetween a duplicate and nothing.\n\n`none` draws none of them, which is the right answer where the slotted map\nalready has controls a reader can find: what this family argues for is that\n*a* findable control exists, never that it is ours. The methods stay public\neither way, so a consumer drawing their own chrome can still drive the\nframe.\n\nAbsent is all three, which is this library's rule that a resting value is an\nattribute's absence, and it is what the stylesheet asks about: the layout\nrules are written against `[controls]:not([controls~=\"zoom\"])` rather than\nthe bare negation, or a frame that named no list at all would be laid out as\nthough it had dropped everything.",
69370
+ "description": "Which of the controls this surface draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.** A\nsurface a consumer brings often has zoom controls of its own and almost\nnever has pan buttons, so a single switch would make them choose between\na duplicate and nothing.\n\n`none` draws none of them, which is the right answer where what was\nslotted already has controls a reader can find: what this argues for is\nthat *a* findable control exists, never that it is ours. The methods stay\npublic either way, so a consumer drawing their own chrome can still drive\nthe surface.\n\nAbsent is all three, which is this library's rule that a resting value is\nan attribute's absence, and it is what the stylesheet asks about: the\nlayout rules are written against `[controls]:not([controls~=\"zoom\"])`\nrather than the bare negation, or a surface that named no list at all\nwould be laid out as though it had dropped everything.",
69371
69371
  "attribute": "controls",
69372
69372
  "reflects": true,
69373
69373
  "inheritedFrom": {
69374
- "name": "HelixHeadlessMap",
69375
- "module": "src/map/root/map-root.ts"
69374
+ "name": "MixinViewport",
69375
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69376
69376
  }
69377
69377
  },
69378
69378
  {
@@ -69381,12 +69381,12 @@
69381
69381
  "type": {
69382
69382
  "text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
69383
69383
  },
69384
- "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, and this is a collision\nrather than a taste: MapLibre puts its own controls at the top end, Leaflet\nand OpenLayers at the top start, Google's zoom at the bottom end. Whichever\ncorner this took would land on somebody's, which is why every one of those\nlibraries made it a setting too.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule.\n\nAbsent is the top end, which is this library's rule that a resting value is\nan attribute's absence: a default that reflected would write an attribute\nonto every host that no server sent and nobody asked for.",
69384
+ "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, which is a collision\nrather than a taste: whatever a consumer slots may put its own controls\nin any corner, and every library that draws some made this a setting for\nthe same reason.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule. Absent is the top end, a\nresting value being an attribute's absence: a default that reflected\nwould write an attribute onto every host that no server sent.",
69385
69385
  "attribute": "controls-placement",
69386
69386
  "reflects": true,
69387
69387
  "inheritedFrom": {
69388
- "name": "HelixHeadlessMap",
69389
- "module": "src/map/root/map-root.ts"
69388
+ "name": "MixinViewport",
69389
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69390
69390
  }
69391
69391
  },
69392
69392
  {
@@ -69399,8 +69399,8 @@
69399
69399
  "description": "What the control that fills the screen is called.",
69400
69400
  "attribute": "fullscreen-label",
69401
69401
  "inheritedFrom": {
69402
- "name": "HelixHeadlessMap",
69403
- "module": "src/map/root/map-root.ts"
69402
+ "name": "MixinViewport",
69403
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69404
69404
  }
69405
69405
  },
69406
69406
  {
@@ -69410,25 +69410,11 @@
69410
69410
  "text": "number"
69411
69411
  },
69412
69412
  "default": "0",
69413
- "description": "How long the reader may be still before the chrome hides, in milliseconds.\n\nZero keeps it up, which is the default: a map's controls are how a keyboard\nreader operates it, and chrome that hides itself by default would be this\ncomponent undoing its own argument. Set it for a display map nobody drives.",
69413
+ "description": "How long the reader may be still before the chrome hides, in milliseconds.\n\nZero keeps it up, which is the default: these controls are how a keyboard\nreader operates the surface, and chrome that hid itself by default would\nbe the component undoing its own argument. Set it for a display nobody\ndrives.",
69414
69414
  "attribute": "idle-delay",
69415
69415
  "inheritedFrom": {
69416
- "name": "HelixHeadlessMap",
69417
- "module": "src/map/root/map-root.ts"
69418
- }
69419
- },
69420
- {
69421
- "kind": "field",
69422
- "name": "label",
69423
- "type": {
69424
- "text": "string"
69425
- },
69426
- "default": "''",
69427
- "description": "Accessible name for the map, which is the one thing a consumer must write.\n\nThere is no sensible default. \"Map\" names the widget rather than the place,\nand a reader meeting three of them on a page learns nothing from hearing the\nsame word three times.",
69428
- "attribute": "label",
69429
- "inheritedFrom": {
69430
- "name": "HelixHeadlessMap",
69431
- "module": "src/map/root/map-root.ts"
69416
+ "name": "MixinViewport",
69417
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69432
69418
  }
69433
69419
  },
69434
69420
  {
@@ -69438,11 +69424,11 @@
69438
69424
  "text": "string"
69439
69425
  },
69440
69426
  "default": "'Pan {way}'",
69441
- "description": "What the controls are called, for a page not in English.",
69427
+ "description": "What one pan control is called, with `{way}` filled in.",
69442
69428
  "attribute": "pan-label",
69443
69429
  "inheritedFrom": {
69444
- "name": "HelixHeadlessMap",
69445
- "module": "src/map/root/map-root.ts"
69430
+ "name": "MixinViewport",
69431
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69446
69432
  }
69447
69433
  },
69448
69434
  {
@@ -69452,11 +69438,11 @@
69452
69438
  "text": "number"
69453
69439
  },
69454
69440
  "default": "0.25",
69455
- "description": "How far one press moves the map, as a fraction of what is on screen.\n\nA fraction rather than a distance, because this frame does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture at\nstreet level and at country level, and a consumer who wants metres can\nmultiply by their own.",
69441
+ "description": "How far one press moves the view, as a fraction of what is on screen.\n\nA fraction rather than a distance, because this surface does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture\nat any zoom, and a consumer who wants their own units multiplies by them.",
69456
69442
  "attribute": "pan-step",
69457
69443
  "inheritedFrom": {
69458
- "name": "HelixHeadlessMap",
69459
- "module": "src/map/root/map-root.ts"
69444
+ "name": "MixinViewport",
69445
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69460
69446
  }
69461
69447
  },
69462
69448
  {
@@ -69466,11 +69452,11 @@
69466
69452
  "text": "string"
69467
69453
  },
69468
69454
  "default": "'Zoom in'",
69469
- "description": "What the zoom controls are called.",
69455
+ "description": "What the control that zooms in is called.",
69470
69456
  "attribute": "zoom-in-label",
69471
69457
  "inheritedFrom": {
69472
- "name": "HelixHeadlessMap",
69473
- "module": "src/map/root/map-root.ts"
69458
+ "name": "MixinViewport",
69459
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69474
69460
  }
69475
69461
  },
69476
69462
  {
@@ -69480,11 +69466,11 @@
69480
69466
  "text": "string"
69481
69467
  },
69482
69468
  "default": "'Zoom out'",
69483
- "description": "What the zoom control that goes the other way is called.",
69469
+ "description": "What the control that zooms out is called.",
69484
69470
  "attribute": "zoom-out-label",
69485
69471
  "inheritedFrom": {
69486
- "name": "HelixHeadlessMap",
69487
- "module": "src/map/root/map-root.ts"
69472
+ "name": "MixinViewport",
69473
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69488
69474
  }
69489
69475
  },
69490
69476
  {
@@ -69493,12 +69479,12 @@
69493
69479
  "type": {
69494
69480
  "text": "boolean"
69495
69481
  },
69496
- "privacy": "private",
69482
+ "privacy": "protected",
69497
69483
  "default": "false",
69498
69484
  "description": "Whether the reader has been still long enough to hide the chrome.",
69499
69485
  "inheritedFrom": {
69500
- "name": "HelixHeadlessMap",
69501
- "module": "src/map/root/map-root.ts"
69486
+ "name": "MixinViewport",
69487
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69502
69488
  }
69503
69489
  },
69504
69490
  {
@@ -69507,74 +69493,94 @@
69507
69493
  "type": {
69508
69494
  "text": "boolean"
69509
69495
  },
69510
- "privacy": "private",
69496
+ "privacy": "protected",
69511
69497
  "default": "false",
69512
- "description": "Whether the frame is filling the screen.",
69498
+ "description": "Whether the surface is filling the screen.",
69513
69499
  "inheritedFrom": {
69514
- "name": "HelixHeadlessMap",
69515
- "module": "src/map/root/map-root.ts"
69500
+ "name": "MixinViewport",
69501
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69516
69502
  }
69517
69503
  },
69518
69504
  {
69519
69505
  "kind": "field",
69520
69506
  "name": "fullscreen",
69521
- "privacy": "private",
69507
+ "privacy": "protected",
69522
69508
  "readonly": true,
69523
69509
  "default": "new FullscreenController(this, (full) => { this.filled = full })",
69524
69510
  "inheritedFrom": {
69525
- "name": "HelixHeadlessMap",
69526
- "module": "src/map/root/map-root.ts"
69511
+ "name": "MixinViewport",
69512
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69527
69513
  }
69528
69514
  },
69529
69515
  {
69530
69516
  "kind": "field",
69531
69517
  "name": "idle",
69532
- "privacy": "private",
69518
+ "privacy": "protected",
69533
69519
  "readonly": true,
69534
69520
  "default": "new IdleController( this, () => this.idleDelay, (resting) => { this.resting = resting }, )",
69535
69521
  "inheritedFrom": {
69536
- "name": "HelixHeadlessMap",
69537
- "module": "src/map/root/map-root.ts"
69522
+ "name": "MixinViewport",
69523
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69524
+ }
69525
+ },
69526
+ {
69527
+ "kind": "field",
69528
+ "name": "controlsLabel",
69529
+ "type": {
69530
+ "text": "string"
69531
+ },
69532
+ "privacy": "protected",
69533
+ "description": "What the group of controls is called.\n\nA getter rather than a string in the template, so a family that is not a\nmap does not announce one. Not a property: what this group is called is a\nfact about the family rather than a choice a consumer makes per instance,\nand the labels a consumer does set are the ones on the controls\nthemselves.",
69534
+ "readonly": true,
69535
+ "inheritedFrom": {
69536
+ "name": "MixinViewport",
69537
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69538
69538
  }
69539
69539
  },
69540
69540
  {
69541
69541
  "kind": "method",
69542
- "name": "draws",
69543
- "privacy": "private",
69542
+ "name": "panEvent",
69543
+ "privacy": "protected",
69544
69544
  "return": {
69545
69545
  "type": {
69546
- "text": "boolean"
69546
+ "text": "Event"
69547
69547
  }
69548
69548
  },
69549
69549
  "parameters": [
69550
69550
  {
69551
- "name": "group",
69551
+ "name": "detail",
69552
69552
  "type": {
69553
- "text": "'pan' | 'zoom' | 'fullscreen'"
69553
+ "text": "ViewportPanDetail"
69554
69554
  }
69555
69555
  }
69556
69556
  ],
69557
- "description": "Whether a named group of controls is one this frame draws.",
69557
+ "description": "The pan event, built and not dispatched.\n\nA factory for the reason `MixinDismissible` has one: the surface is\nshared and the name is not. `Map` sends `helix-map-pan` because that is\nwhat a consumer of a map listens for, and the next family names its own.",
69558
69558
  "inheritedFrom": {
69559
- "name": "HelixHeadlessMap",
69560
- "module": "src/map/root/map-root.ts"
69559
+ "name": "MixinViewport",
69560
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69561
69561
  }
69562
69562
  },
69563
69563
  {
69564
69564
  "kind": "method",
69565
- "name": "toggleFullscreen",
69565
+ "name": "zoomEvent",
69566
+ "privacy": "protected",
69566
69567
  "return": {
69567
69568
  "type": {
69568
- "text": "void"
69569
+ "text": "Event"
69569
69570
  }
69570
69571
  },
69571
- "description": "Fills the screen with the frame, or comes back.",
69572
- "type": {
69573
- "text": "toggleFullscreen() => void"
69574
- },
69572
+ "parameters": [
69573
+ {
69574
+ "name": "detail",
69575
+ "type": {
69576
+ "text": "ViewportZoomDetail"
69577
+ }
69578
+ }
69579
+ ],
69580
+ "description": "The zoom event, built and not dispatched, for the same reason.",
69575
69581
  "inheritedFrom": {
69576
- "name": "HelixHeadlessMap",
69577
- "module": "src/map/root/map-root.ts"
69582
+ "name": "MixinViewport",
69583
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69578
69584
  }
69579
69585
  },
69580
69586
  {
@@ -69589,17 +69595,17 @@
69589
69595
  {
69590
69596
  "name": "to",
69591
69597
  "type": {
69592
- "text": "Way"
69598
+ "text": "ViewportWay"
69593
69599
  }
69594
69600
  }
69595
69601
  ],
69596
- "description": "Asks for the map to move, which the consumer answers.",
69597
- "type": {
69598
- "text": "pan(to: Way) => void"
69599
- },
69602
+ "description": "Asks for the view to move, which the consumer answers.",
69600
69603
  "inheritedFrom": {
69601
- "name": "HelixHeadlessMap",
69602
- "module": "src/map/root/map-root.ts"
69604
+ "name": "MixinViewport",
69605
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69606
+ },
69607
+ "type": {
69608
+ "text": "pan(to: ViewportWay) => void"
69603
69609
  }
69604
69610
  },
69605
69611
  {
@@ -69618,24 +69624,53 @@
69618
69624
  }
69619
69625
  }
69620
69626
  ],
69621
- "description": "Asks for the map to zoom, `1` in and `-1` out.",
69627
+ "description": "Asks for the view to zoom, `1` in and `-1` out.",
69628
+ "inheritedFrom": {
69629
+ "name": "MixinViewport",
69630
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69631
+ },
69622
69632
  "type": {
69623
69633
  "text": "zoom(by: number) => void"
69634
+ }
69635
+ },
69636
+ {
69637
+ "kind": "method",
69638
+ "name": "toggleFullscreen",
69639
+ "return": {
69640
+ "type": {
69641
+ "text": "void"
69642
+ }
69624
69643
  },
69644
+ "description": "Fills the screen with the surface, or comes back.",
69625
69645
  "inheritedFrom": {
69626
- "name": "HelixHeadlessMap",
69627
- "module": "src/map/root/map-root.ts"
69646
+ "name": "MixinViewport",
69647
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69648
+ },
69649
+ "type": {
69650
+ "text": "toggleFullscreen() => void"
69628
69651
  }
69629
69652
  },
69630
69653
  {
69631
- "kind": "field",
69632
- "name": "handleKeydown",
69654
+ "kind": "method",
69655
+ "name": "draws",
69633
69656
  "privacy": "private",
69634
- "readonly": true,
69635
- "description": "The arrow keys, which are the second way rather than the only one.\n\n`inlineStep` rather than a test against `ArrowLeft`, so the reader on a\nright-to-left page gets `end` from the key that points the way their text\nruns, which is what the pan buttons say too.",
69657
+ "return": {
69658
+ "type": {
69659
+ "text": "boolean"
69660
+ }
69661
+ },
69662
+ "parameters": [
69663
+ {
69664
+ "name": "group",
69665
+ "type": {
69666
+ "text": "'pan' | 'zoom' | 'fullscreen'"
69667
+ }
69668
+ }
69669
+ ],
69670
+ "description": "Whether a named group of controls is one this surface draws.",
69636
69671
  "inheritedFrom": {
69637
- "name": "HelixHeadlessMap",
69638
- "module": "src/map/root/map-root.ts"
69672
+ "name": "MixinViewport",
69673
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69639
69674
  }
69640
69675
  },
69641
69676
  {
@@ -69651,26 +69686,51 @@
69651
69686
  {
69652
69687
  "name": "way",
69653
69688
  "type": {
69654
- "text": "Way"
69689
+ "text": "ViewportWay"
69655
69690
  }
69656
69691
  }
69657
69692
  ],
69658
- "description": "What one pan button is called, with the way it goes filled in.\n\nLeft and right rather than start and end, because the label is read aloud\nand a reader knows which way left is. The event keeps the reading-order\nname, which is the one a right-to-left page needs.",
69693
+ "description": "What one pan control is called, with the way it goes filled in.\n\nLeft and right rather than start and end, because the label is read aloud\nand a reader knows which way left is. The event keeps the reading-order\nname, which is the one a right-to-left page needs.",
69659
69694
  "inheritedFrom": {
69660
- "name": "HelixHeadlessMap",
69661
- "module": "src/map/root/map-root.ts"
69695
+ "name": "MixinViewport",
69696
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69697
+ }
69698
+ },
69699
+ {
69700
+ "kind": "field",
69701
+ "name": "handleKeydown",
69702
+ "privacy": "protected",
69703
+ "readonly": true,
69704
+ "description": "The arrow keys, which are the second way rather than the only one.\n\n`inlineStep` rather than a test against `ArrowLeft`, so the reader on a\nright-to-left page moves the way their text runs, which is what the pan\ncontrols say too.\n\n**Only from the surface's own frame, and that is the difference between\none move and two.** What a consumer slots may answer the arrow keys\nitself, and a press relayed from inside it moves their view once on its\nown and once more on the event this would send. The rule is the region\nand the controls rather than the whole shadow root, because a family with\nits own focusable content in there, a list of notes beside a canvas,\nwould otherwise pan the surface out from under a reader arrowing through\nit.",
69705
+ "inheritedFrom": {
69706
+ "name": "MixinViewport",
69707
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69662
69708
  }
69663
69709
  },
69664
69710
  {
69665
69711
  "kind": "method",
69666
69712
  "name": "renderControls",
69667
- "privacy": "private",
69713
+ "privacy": "protected",
69668
69714
  "return": {
69669
69715
  "type": {
69670
69716
  "text": "TemplateResult | typeof nothing"
69671
69717
  }
69672
69718
  },
69673
- "description": "The controls, or nothing where a consumer kept none of them.\n\n**Written out rather than generated**, because a part name behind an\ninterpolation is a part the manifest cannot see: it would publish `pan-`\nand a consumer's `::part(pan-up)` would match nothing. The same cost\n`drawIcon` names for `Trend`.",
69719
+ "description": "The controls, or nothing where a consumer kept none of them.\n\n**Written out rather than generated**, because a part name behind an\ninterpolation is a part the manifest cannot see: a loop would publish\n`pan-` and a consumer's `::part(pan-up)` would match nothing.",
69720
+ "inheritedFrom": {
69721
+ "name": "MixinViewport",
69722
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
69723
+ }
69724
+ },
69725
+ {
69726
+ "kind": "field",
69727
+ "name": "label",
69728
+ "type": {
69729
+ "text": "string"
69730
+ },
69731
+ "default": "''",
69732
+ "description": "Accessible name for the map, which is the one thing a consumer must write.\n\nThere is no sensible default. \"Map\" names the widget rather than the place,\nand a reader meeting three of them on a page learns nothing from hearing the\nsame word three times.\n\n**The region is a tab stop**, so the keys are reachable however the controls\nare configured: the listener is on the region, and without a stop of its own\na frame at `controls=\"none\"` around a map with nothing focusable in it had\narrow keys no reader could ever press. `aria-keyshortcuts` says which keys\nrather than spelling them into the name, which would otherwise be read out\nat every encounter.",
69733
+ "attribute": "label",
69674
69734
  "inheritedFrom": {
69675
69735
  "name": "HelixHeadlessMap",
69676
69736
  "module": "src/map/root/map-root.ts"
@@ -70041,6 +70101,123 @@
70041
70101
  },
70042
70102
  "tagName": "helix-map",
70043
70103
  "customElement": true,
70104
+ "attributes": [
70105
+ {
70106
+ "name": "controls",
70107
+ "type": {
70108
+ "text": "string | undefined"
70109
+ },
70110
+ "description": "Which of the controls this surface draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.** A\nsurface a consumer brings often has zoom controls of its own and almost\nnever has pan buttons, so a single switch would make them choose between\na duplicate and nothing.\n\n`none` draws none of them, which is the right answer where what was\nslotted already has controls a reader can find: what this argues for is\nthat *a* findable control exists, never that it is ours. The methods stay\npublic either way, so a consumer drawing their own chrome can still drive\nthe surface.\n\nAbsent is all three, which is this library's rule that a resting value is\nan attribute's absence, and it is what the stylesheet asks about: the\nlayout rules are written against `[controls]:not([controls~=\"zoom\"])`\nrather than the bare negation, or a surface that named no list at all\nwould be laid out as though it had dropped everything.",
70111
+ "fieldName": "controls",
70112
+ "inheritedFrom": {
70113
+ "name": "MixinViewport",
70114
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70115
+ }
70116
+ },
70117
+ {
70118
+ "name": "controls-placement",
70119
+ "type": {
70120
+ "text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
70121
+ },
70122
+ "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, which is a collision\nrather than a taste: whatever a consumer slots may put its own controls\nin any corner, and every library that draws some made this a setting for\nthe same reason.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule. Absent is the top end, a\nresting value being an attribute's absence: a default that reflected\nwould write an attribute onto every host that no server sent.",
70123
+ "fieldName": "controlsPlacement",
70124
+ "inheritedFrom": {
70125
+ "name": "MixinViewport",
70126
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70127
+ }
70128
+ },
70129
+ {
70130
+ "name": "fullscreen-label",
70131
+ "type": {
70132
+ "text": "string"
70133
+ },
70134
+ "default": "'Fill the screen'",
70135
+ "description": "What the control that fills the screen is called.",
70136
+ "fieldName": "fullscreenLabel",
70137
+ "inheritedFrom": {
70138
+ "name": "MixinViewport",
70139
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70140
+ }
70141
+ },
70142
+ {
70143
+ "name": "idle-delay",
70144
+ "type": {
70145
+ "text": "number"
70146
+ },
70147
+ "default": "0",
70148
+ "description": "How long the reader may be still before the chrome hides, in milliseconds.\n\nZero keeps it up, which is the default: these controls are how a keyboard\nreader operates the surface, and chrome that hid itself by default would\nbe the component undoing its own argument. Set it for a display nobody\ndrives.",
70149
+ "fieldName": "idleDelay",
70150
+ "inheritedFrom": {
70151
+ "name": "MixinViewport",
70152
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70153
+ }
70154
+ },
70155
+ {
70156
+ "name": "pan-label",
70157
+ "type": {
70158
+ "text": "string"
70159
+ },
70160
+ "default": "'Pan {way}'",
70161
+ "description": "What one pan control is called, with `{way}` filled in.",
70162
+ "fieldName": "panLabel",
70163
+ "inheritedFrom": {
70164
+ "name": "MixinViewport",
70165
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70166
+ }
70167
+ },
70168
+ {
70169
+ "name": "pan-step",
70170
+ "type": {
70171
+ "text": "number"
70172
+ },
70173
+ "default": "0.25",
70174
+ "description": "How far one press moves the view, as a fraction of what is on screen.\n\nA fraction rather than a distance, because this surface does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture\nat any zoom, and a consumer who wants their own units multiplies by them.",
70175
+ "fieldName": "panStep",
70176
+ "inheritedFrom": {
70177
+ "name": "MixinViewport",
70178
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70179
+ }
70180
+ },
70181
+ {
70182
+ "name": "zoom-in-label",
70183
+ "type": {
70184
+ "text": "string"
70185
+ },
70186
+ "default": "'Zoom in'",
70187
+ "description": "What the control that zooms in is called.",
70188
+ "fieldName": "zoomInLabel",
70189
+ "inheritedFrom": {
70190
+ "name": "MixinViewport",
70191
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70192
+ }
70193
+ },
70194
+ {
70195
+ "name": "zoom-out-label",
70196
+ "type": {
70197
+ "text": "string"
70198
+ },
70199
+ "default": "'Zoom out'",
70200
+ "description": "What the control that zooms out is called.",
70201
+ "fieldName": "zoomOutLabel",
70202
+ "inheritedFrom": {
70203
+ "name": "MixinViewport",
70204
+ "module": "src/mixins/mixin-viewport/mixin-viewport.ts"
70205
+ }
70206
+ },
70207
+ {
70208
+ "name": "label",
70209
+ "type": {
70210
+ "text": "string"
70211
+ },
70212
+ "default": "''",
70213
+ "description": "Accessible name for the map, which is the one thing a consumer must write.\n\nThere is no sensible default. \"Map\" names the widget rather than the place,\nand a reader meeting three of them on a page learns nothing from hearing the\nsame word three times.\n\n**The region is a tab stop**, so the keys are reachable however the controls\nare configured: the listener is on the region, and without a stop of its own\na frame at `controls=\"none\"` around a map with nothing focusable in it had\narrow keys no reader could ever press. `aria-keyshortcuts` says which keys\nrather than spelling them into the name, which would otherwise be read out\nat every encounter.",
70214
+ "fieldName": "label",
70215
+ "inheritedFrom": {
70216
+ "name": "HelixHeadlessMap",
70217
+ "module": "src/map/root/map-root.ts"
70218
+ }
70219
+ }
70220
+ ],
70044
70221
  "slots": [
70045
70222
  {
70046
70223
  "description": "The map, which is the consumer's own.",
@@ -70181,123 +70358,6 @@
70181
70358
  }
70182
70359
  }
70183
70360
  ],
70184
- "attributes": [
70185
- {
70186
- "name": "controls",
70187
- "type": {
70188
- "text": "string | undefined"
70189
- },
70190
- "description": "Which of the controls this frame draws, as a list of what to keep.\n\n**A list rather than a switch, because the overlap is not symmetric.**\nEvery map library draws zoom controls and none of them draws pan buttons:\nMapLibre's navigation control is zoom and a compass, Leaflet's is zoom,\nGoogle's is zoom. So a consumer slotting one of those has our zoom twice\nover and our pan pad not at all, and a single switch would make them choose\nbetween a duplicate and nothing.\n\n`none` draws none of them, which is the right answer where the slotted map\nalready has controls a reader can find: what this family argues for is that\n*a* findable control exists, never that it is ours. The methods stay public\neither way, so a consumer drawing their own chrome can still drive the\nframe.\n\nAbsent is all three, which is this library's rule that a resting value is an\nattribute's absence, and it is what the stylesheet asks about: the layout\nrules are written against `[controls]:not([controls~=\"zoom\"])` rather than\nthe bare negation, or a frame that named no list at all would be laid out as\nthough it had dropped everything.",
70191
- "fieldName": "controls",
70192
- "inheritedFrom": {
70193
- "name": "HelixHeadlessMap",
70194
- "module": "src/map/root/map-root.ts"
70195
- }
70196
- },
70197
- {
70198
- "name": "controls-placement",
70199
- "type": {
70200
- "text": "'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined"
70201
- },
70202
- "description": "Which corner the controls sit in.\n\n**Configurable because there is no safe default**, and this is a collision\nrather than a taste: MapLibre puts its own controls at the top end, Leaflet\nand OpenLayers at the top start, Google's zoom at the bottom end. Whichever\ncorner this took would land on somebody's, which is why every one of those\nlibraries made it a setting too.\n\nLogical corners rather than left and right, so a right-to-left page moves\nthem without a consumer writing a second rule.\n\nAbsent is the top end, which is this library's rule that a resting value is\nan attribute's absence: a default that reflected would write an attribute\nonto every host that no server sent and nobody asked for.",
70203
- "fieldName": "controlsPlacement",
70204
- "inheritedFrom": {
70205
- "name": "HelixHeadlessMap",
70206
- "module": "src/map/root/map-root.ts"
70207
- }
70208
- },
70209
- {
70210
- "name": "fullscreen-label",
70211
- "type": {
70212
- "text": "string"
70213
- },
70214
- "default": "'Fill the screen'",
70215
- "description": "What the control that fills the screen is called.",
70216
- "fieldName": "fullscreenLabel",
70217
- "inheritedFrom": {
70218
- "name": "HelixHeadlessMap",
70219
- "module": "src/map/root/map-root.ts"
70220
- }
70221
- },
70222
- {
70223
- "name": "idle-delay",
70224
- "type": {
70225
- "text": "number"
70226
- },
70227
- "default": "0",
70228
- "description": "How long the reader may be still before the chrome hides, in milliseconds.\n\nZero keeps it up, which is the default: a map's controls are how a keyboard\nreader operates it, and chrome that hides itself by default would be this\ncomponent undoing its own argument. Set it for a display map nobody drives.",
70229
- "fieldName": "idleDelay",
70230
- "inheritedFrom": {
70231
- "name": "HelixHeadlessMap",
70232
- "module": "src/map/root/map-root.ts"
70233
- }
70234
- },
70235
- {
70236
- "name": "label",
70237
- "type": {
70238
- "text": "string"
70239
- },
70240
- "default": "''",
70241
- "description": "Accessible name for the map, which is the one thing a consumer must write.\n\nThere is no sensible default. \"Map\" names the widget rather than the place,\nand a reader meeting three of them on a page learns nothing from hearing the\nsame word three times.",
70242
- "fieldName": "label",
70243
- "inheritedFrom": {
70244
- "name": "HelixHeadlessMap",
70245
- "module": "src/map/root/map-root.ts"
70246
- }
70247
- },
70248
- {
70249
- "name": "pan-label",
70250
- "type": {
70251
- "text": "string"
70252
- },
70253
- "default": "'Pan {way}'",
70254
- "description": "What the controls are called, for a page not in English.",
70255
- "fieldName": "panLabel",
70256
- "inheritedFrom": {
70257
- "name": "HelixHeadlessMap",
70258
- "module": "src/map/root/map-root.ts"
70259
- }
70260
- },
70261
- {
70262
- "name": "pan-step",
70263
- "type": {
70264
- "text": "number"
70265
- },
70266
- "default": "0.25",
70267
- "description": "How far one press moves the map, as a fraction of what is on screen.\n\nA fraction rather than a distance, because this frame does not know the\nscale of what is inside it: a quarter of the viewport is the same gesture at\nstreet level and at country level, and a consumer who wants metres can\nmultiply by their own.",
70268
- "fieldName": "panStep",
70269
- "inheritedFrom": {
70270
- "name": "HelixHeadlessMap",
70271
- "module": "src/map/root/map-root.ts"
70272
- }
70273
- },
70274
- {
70275
- "name": "zoom-in-label",
70276
- "type": {
70277
- "text": "string"
70278
- },
70279
- "default": "'Zoom in'",
70280
- "description": "What the zoom controls are called.",
70281
- "fieldName": "zoomInLabel",
70282
- "inheritedFrom": {
70283
- "name": "HelixHeadlessMap",
70284
- "module": "src/map/root/map-root.ts"
70285
- }
70286
- },
70287
- {
70288
- "name": "zoom-out-label",
70289
- "type": {
70290
- "text": "string"
70291
- },
70292
- "default": "'Zoom out'",
70293
- "description": "What the zoom control that goes the other way is called.",
70294
- "fieldName": "zoomOutLabel",
70295
- "inheritedFrom": {
70296
- "name": "HelixHeadlessMap",
70297
- "module": "src/map/root/map-root.ts"
70298
- }
70299
- }
70300
- ],
70301
70361
  "events": [
70302
70362
  {
70303
70363
  "type": {