@fusion.dev/helix-headless 0.104.1 → 0.106.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/custom-elements.json +10386 -3813
  2. package/dist/accordion/item/accordion-item.d.ts +17 -16
  3. package/dist/accordion/root/accordion-root.d.ts +13 -17
  4. package/dist/announcement/root/announcement-root.d.ts +24 -31
  5. package/dist/app-header/root/app-header-root.d.ts +14 -14
  6. package/dist/area-chart/root/area-chart-root.d.ts +29 -48
  7. package/dist/avatar/group/avatar-group.d.ts +6 -8
  8. package/dist/avatar/root/avatar-root.d.ts +11 -11
  9. package/dist/badge/root/badge-root.d.ts +14 -15
  10. package/dist/bar-chart/root/bar-chart-root.d.ts +40 -44
  11. package/dist/blockquote/root/blockquote-root.d.ts +5 -7
  12. package/dist/breadcrumbs/breadcrumb/breadcrumb.d.ts +25 -33
  13. package/dist/breadcrumbs/root/breadcrumbs-root.d.ts +12 -11
  14. package/dist/button/root/button-root.d.ts +16 -17
  15. package/dist/button-group/root/button-group-root.d.ts +9 -10
  16. package/dist/callout/root/callout-root.d.ts +10 -15
  17. package/dist/canvas/edge/canvas-edge.d.ts +21 -21
  18. package/dist/canvas/node/canvas-node.d.ts +43 -45
  19. package/dist/canvas/root/canvas-root.d.ts +100 -99
  20. package/dist/card/root/card-root.d.ts +10 -12
  21. package/dist/carousel/root/carousel-root.d.ts +32 -33
  22. package/dist/chat/composer/chat-composer.d.ts +24 -26
  23. package/dist/chat/message/chat-message.d.ts +30 -33
  24. package/dist/chat/root/chat-root.d.ts +63 -80
  25. package/dist/checkbox/root/checkbox-root.d.ts +30 -32
  26. package/dist/checkbox-group/root/checkbox-group-root.d.ts +25 -25
  27. package/dist/code/root/code-root.d.ts +6 -10
  28. package/dist/code-block/root/code-block-root.d.ts +35 -48
  29. package/dist/color-input/root/color-input-root.d.ts +62 -56
  30. package/dist/color-input/root/color-input-root.js +3 -0
  31. package/dist/color-picker/root/color-picker-root.d.ts +61 -49
  32. package/dist/color-picker/root/color-picker-root.js +4 -0
  33. package/dist/combobox/root/combobox-root.d.ts +52 -53
  34. package/dist/command/root/command-root.d.ts +40 -40
  35. package/dist/command/root/command-root.js +1 -0
  36. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  37. package/dist/data-table/root/data-table-root.d.ts +106 -107
  38. package/dist/date-input/root/date-input-root.d.ts +54 -53
  39. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  40. package/dist/description-list/item/description-list-item.d.ts +7 -7
  41. package/dist/description-list/root/description-list-root.d.ts +10 -15
  42. package/dist/dialog/root/dialog-root.d.ts +22 -19
  43. package/dist/divider/root/divider-root.d.ts +12 -13
  44. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  45. package/dist/drawer/root/drawer-root.d.ts +19 -18
  46. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  47. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  48. package/dist/element-events.generated.js +19 -1
  49. package/dist/empty/root/empty-root.d.ts +16 -19
  50. package/dist/file-input/root/file-input-root.d.ts +32 -32
  51. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  52. package/dist/filter-input/field/filter-field.d.ts +25 -31
  53. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  54. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  55. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  56. package/dist/format-date/root/format-date-root.d.ts +19 -27
  57. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  58. package/dist/icon/root/icon-root.d.ts +21 -23
  59. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  60. package/dist/image/root/image-root.d.ts +30 -30
  61. package/dist/input/root/input-root.d.ts +36 -35
  62. package/dist/kbd/root/kbd-root.d.ts +13 -15
  63. package/dist/legend/root/legend-root.d.ts +18 -16
  64. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  65. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  66. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  67. package/dist/list/item/list-item.d.ts +17 -22
  68. package/dist/list/root/list-root.d.ts +6 -7
  69. package/dist/listbox/root/listbox-root.d.ts +42 -41
  70. package/dist/loader/root/loader-root.d.ts +16 -20
  71. package/dist/map/area/map-area.d.ts +48 -0
  72. package/dist/map/area/map-area.js +40 -0
  73. package/dist/map/buildings/map-buildings.d.ts +45 -0
  74. package/dist/map/buildings/map-buildings.js +37 -0
  75. package/dist/map/contours/map-contours.d.ts +61 -0
  76. package/dist/map/contours/map-contours.js +54 -0
  77. package/dist/map/index.d.ts +14 -0
  78. package/dist/map/index.js +10 -0
  79. package/dist/map/landcover/map-landcover.d.ts +47 -0
  80. package/dist/map/landcover/map-landcover.js +37 -0
  81. package/dist/map/marker/map-marker.d.ts +120 -0
  82. package/dist/map/marker/map-marker.js +109 -0
  83. package/dist/map/points/map-points.d.ts +139 -0
  84. package/dist/map/points/map-points.js +161 -0
  85. package/dist/map/position/map-position.d.ts +70 -0
  86. package/dist/map/position/map-position.js +89 -0
  87. package/dist/map/raster/map-raster.d.ts +84 -0
  88. package/dist/map/raster/map-raster.js +96 -0
  89. package/dist/map/root/map-root.d.ts +269 -52
  90. package/dist/map/root/map-root.js +473 -5
  91. package/dist/map/route/map-route.d.ts +73 -0
  92. package/dist/map/route/map-route.js +52 -0
  93. package/dist/map/terrain/map-terrain.d.ts +68 -0
  94. package/dist/map/terrain/map-terrain.js +58 -0
  95. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  96. package/dist/menu/item/menu-item.d.ts +30 -31
  97. package/dist/menu/root/menu-root.d.ts +25 -29
  98. package/dist/meter/root/meter-root.d.ts +22 -21
  99. package/dist/navigation/root/navigation-root.d.ts +13 -16
  100. package/dist/notifications/group/notification-group.d.ts +27 -28
  101. package/dist/notifications/notification/notification.d.ts +35 -42
  102. package/dist/notifications/root/notifications-root.d.ts +22 -24
  103. package/dist/number-input/root/number-input-root.d.ts +46 -50
  104. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  105. package/dist/option/group/option-group.d.ts +11 -11
  106. package/dist/option/root/option-root.d.ts +28 -33
  107. package/dist/outline/root/outline-root.d.ts +18 -17
  108. package/dist/pagination/root/pagination-root.d.ts +37 -39
  109. package/dist/pagination/size/pagination-size.d.ts +37 -43
  110. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  111. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  112. package/dist/popover/root/popover-root.d.ts +16 -21
  113. package/dist/progress/root/progress-root.d.ts +16 -14
  114. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  115. package/dist/quote/root/quote-root.d.ts +5 -6
  116. package/dist/radio/group/radio-group.d.ts +26 -28
  117. package/dist/radio/root/radio-root.d.ts +24 -28
  118. package/dist/rating/root/rating-root.d.ts +27 -30
  119. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  120. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  121. package/dist/select/root/select-root.d.ts +41 -44
  122. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  123. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  124. package/dist/slider/root/slider-root.d.ts +36 -39
  125. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  126. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  127. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  128. package/dist/splitter/root/splitter-root.d.ts +37 -41
  129. package/dist/stat/group/stat-group.d.ts +4 -4
  130. package/dist/stat/root/stat-root.d.ts +8 -9
  131. package/dist/steps/root/steps-root.d.ts +11 -14
  132. package/dist/steps/step/step.d.ts +22 -29
  133. package/dist/switch/root/switch-root.d.ts +20 -24
  134. package/dist/table/cell/table-cell.d.ts +18 -8
  135. package/dist/table/cell/table-cell.js +5 -1
  136. package/dist/table/column/table-column.d.ts +62 -55
  137. package/dist/table/root/table-root.d.ts +16 -17
  138. package/dist/table/row/table-row.d.ts +3 -3
  139. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  140. package/dist/tabs/root/tabs-root.d.ts +19 -17
  141. package/dist/tabs/tab/tab.d.ts +6 -6
  142. package/dist/tag/root/tag-root.d.ts +11 -12
  143. package/dist/textarea/root/textarea-root.d.ts +29 -32
  144. package/dist/time-input/root/time-input-root.d.ts +70 -69
  145. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  146. package/dist/timeline/item/timeline-item.d.ts +18 -24
  147. package/dist/timeline/root/timeline-root.d.ts +13 -21
  148. package/dist/toast/item/toast-item.d.ts +21 -22
  149. package/dist/toast/root/toast-root.d.ts +18 -23
  150. package/dist/toggle/group/toggle-group.d.ts +23 -25
  151. package/dist/toggle/root/toggle-root.d.ts +8 -8
  152. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  153. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  154. package/dist/tour/root/tour-root.d.ts +24 -26
  155. package/dist/tour/stop/tour-stop.d.ts +39 -48
  156. package/dist/tree/item/tree-item.d.ts +23 -25
  157. package/dist/tree/root/tree-root.d.ts +13 -12
  158. package/dist/trend/root/trend-root.d.ts +18 -19
  159. package/dist/video/root/video-root.d.ts +108 -101
  160. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  161. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  162. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  163. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  164. package/package.json +5 -5
  165. package/types/jsx.d.ts +14011 -11983
  166. package/types/svelte.d.ts +10 -0
  167. package/types/vue.d.ts +2143 -1497
@@ -1,5 +1,5 @@
1
- import { HelixElement, type ViewportControlsPlacement, type ViewportPanDetail, type ViewportZoomDetail } from '@fusion.dev/helix-core';
2
- import { type PropertyValues, type TemplateResult } from 'lit';
1
+ import { HelixElement, KeyboardNavigationController, type ViewportControlsPlacement, type ViewportPanDetail, type ViewportZoomDetail } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
4
  * What `ViewportControlsPlacement` is called for a map.
5
5
  *
@@ -7,34 +7,53 @@ import { type PropertyValues, type TemplateResult } from 'lit';
7
7
  * imported this before the surface was shared still has it.
8
8
  */
9
9
  export type MapControlsPlacement = ViewportControlsPlacement;
10
+ /** How the map draws the ground: the themed map, imagery under its roads and names, or imagery alone. */
11
+ export type MapType = 'hybrid' | 'satellite' | 'standard';
10
12
  declare const HelixHeadlessMap_base: (new (...args: any[]) => import("@fusion.dev/helix-core").ViewportElement) & typeof HelixElement;
11
13
  /**
12
- * @summary A frame around somebody else's map.
14
+ * @summary A frame around a map drawn by another library.
13
15
  *
14
16
  * @description
15
- * **Helix draws no map.** There are no tiles here, no projection and no
16
- * network, and there should not be: a tile renderer is a library, and what a
17
- * design system can add to MapLibre or Leaflet is the frame. The consumer slots
18
- * their map and this owns the box, the name, the controls and the way out,
19
- * which is the shape `VideoPlaylist` uses for a player it never renders.
17
+ * Wraps a map drawn by MapLibre, Leaflet, or another renderer. The frame adds
18
+ * a name for the map, a column of controls, and a strip for the map credit.
19
+ * Helix does not draw the map itself.
20
20
  *
21
- * **The accessibility argument is the reason this exists**, and it was measured
22
- * rather than assumed: a map embedded the ordinary way is a canvas with no role
23
- * and no name, and it has *no node at all* in the accessibility tree. A reader
24
- * using a screen reader does not walk past it so much as never meet it. A named
25
- * region with controls in it is the whole of the difference.
21
+ * The controls are one column, and `controls` names which ones: `fullscreen`,
22
+ * `layers`, `tilt`, `zoom`, and `compass`, top to bottom. `zoom compass
23
+ * fullscreen` by default. The compass's needle points north as the map turns,
24
+ * and pressing it turns the map to face north.
26
25
  *
27
- * **The controls are buttons, and that is a deliberate choice against arrow
28
- * keys.** Arrows work here too, but what a screen reader does with them is not
29
- * ours to decide: macOS passes them through, Windows readers hold them for
30
- * their own reading mode unless a page takes `role="application"`, which costs
31
- * the reader their normal way of reading everything else in the frame. A button
32
- * is findable and operable in every screen reader on every platform without
33
- * that bargain, so panning and zooming are buttons first and keys second.
26
+ * Add `pan` and `rotate` for buttons around the compass that move and turn the
27
+ * map. Dragging is otherwise the only way a pointer moves the map, so add them
28
+ * where the map has to be usable without dragging, as WCAG 2.2 asks at level
29
+ * AA. The arrow keys pan the map and Shift with Left or Right turns it either
30
+ * way.
34
31
  *
35
- * **Nothing here moves the map.** Both controls ask, through `helix-map-pan`
36
- * and `helix-map-zoom`, and the consumer answers against whatever they slotted.
37
- * A frame that moved the map would have to know whose map it was.
32
+ * The pan and zoom buttons and the arrow keys send `helix-map-pan` and
33
+ * `helix-map-zoom`. Move your map in response, or connect it with
34
+ * `connectMap` from `@fusion.dev/helix-map`, which does this for you.
35
+ *
36
+ * Add `tilt` to `controls` for the 3D button, which a map with 3D buildings
37
+ * or terrain needs. It is a toggle. Pressed, it tilts the map 50 degrees, and
38
+ * `connectMap` raises the buildings and the ground. Pressed again, it makes the
39
+ * map flat, and lays them flat too. Shift with Up or Down tilts the map in
40
+ * steps. Turning and tilting send `helix-map-rotate` and `helix-map-tilt`,
41
+ * which `connectMap` answers on MapLibre. Leaflet draws maps flat and does not
42
+ * rotate.
43
+ *
44
+ * Add `layers` to `controls` for a layers button. It opens a menu with a tile
45
+ * for each layer, which sets the layer's `hidden` attribute. Layers with the
46
+ * same `group`, such as a route and its dotted legs, share one tile.
47
+ *
48
+ * Imagery, a `helix-map-raster` with `ground`, is a map type and not a tile.
49
+ * The menu opens with a card for each type, Standard, Hybrid, and Satellite,
50
+ * with a picture of the map in it, and `map-type` says which is chosen.
51
+ * Standard hides the imagery, Hybrid draws it under the roads and names, and
52
+ * Satellite draws it alone. `connectMap` does not draw a hidden layer, so a layer you write with
53
+ * `hidden` starts turned off.
54
+ *
55
+ * Markers, routes, areas, live positions, and points layers go inside the
56
+ * frame as child elements.
38
57
  *
39
58
  * @since 0.100.0
40
59
  * @status experimental
@@ -42,47 +61,230 @@ declare const HelixHeadlessMap_base: (new (...args: any[]) => import("@fusion.de
42
61
  * @aliases Map frame, Map container, Geo
43
62
  * @documentation https://fusion.dev/helix/components/map
44
63
  *
45
- * @slot - The map, which is the consumer's own.
46
- * @slot attribution - Whoever the tiles belong to, which most licenses require you to say.
47
- * @slot footer - Chrome below the map, such as a legend or a scale.
48
- * @slot header - Chrome above the map, such as a title or a search field.
64
+ * @slot - The element your renderer draws the map in, and the map's markers, routes, areas, positions, and points layers.
65
+ * @slot attribution - The map credit, which most tile licenses require.
66
+ * @slot footer - Content below the map, such as a legend or a scale.
67
+ * @slot header - Content above the map, such as a title or a search field.
49
68
  *
50
- * @event {HelixMapPanEvent} helix-map-pan - The reader asked the map to move. Answer it against your own map.
51
- * @event {HelixMapZoomEvent} helix-map-zoom - The reader asked the map to zoom, by a direction rather than to a level.
69
+ * @event {HelixActivateEvent} helix-activate - A marker was pressed. The value is the marker's `name`, or its `label` if it has no name. A cluster sends `helix-map-cluster` instead.
70
+ * @event {HelixMapClusterEvent} helix-map-cluster - A cluster was pressed. Sent from the marker that shows the cluster, with the names of its places.
71
+ * @event {HelixMapPanEvent} helix-map-pan - A pan button or arrow key was pressed. Move your map in response.
72
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - Clustering was turned on or off. Used by `connectMap`; pages do not need to listen for it.
73
+ * @event {HelixMapRotateEvent} helix-map-rotate - A rotate or Face north button, or Shift with Left or Right, was pressed. Turn your map in response.
74
+ * @event {HelixMapTiltEvent} helix-map-tilt - The 3D button, or Shift with Up or Down, was pressed. Tilt your map in response.
75
+ * @event {HelixMapZoomEvent} helix-map-zoom - A zoom button or key was pressed, with a direction. Zoom your map in response.
52
76
  *
53
- * @csspart attribution - The strip the credit sits in, under the map.
54
- * @csspart controls - The group the pan and zoom buttons sit in.
55
- * @csspart footer - The strip below the map, for what a consumer slots there.
56
- * @csspart fullscreen - The button that fills the screen.
57
- * @csspart header - The strip above the map, for what a consumer slots there.
58
- * @csspart pan-down - The button that moves the map down.
59
- * @csspart pan-end - The button that moves the map the way the text ends, which is right on an English page.
60
- * @csspart pan-start - The button that moves the map the way the text starts, which is left on an English page.
61
- * @csspart pan-up - The button that moves the map up.
62
- * @csspart region - The named region the map is slotted into.
77
+ * @csspart attribution - The strip under the map that holds the credit.
78
+ * @csspart compass - The compass and the pan and rotate buttons around it.
79
+ * @csspart controls - The column of buttons that move the map.
80
+ * @csspart face-north - The compass: its needle points north as the map turns, and pressing it turns the map to face north.
81
+ * @csspart footer - The strip below the map.
82
+ * @csspart fullscreen - The button that makes the map fill the screen.
83
+ * @csspart header - The strip above the map.
84
+ * @csspart layer - One entry in the list of the map's layers.
85
+ * @csspart layer-choice - One layer's tile in the layers menu, pressed while the layer is shown.
86
+ * @csspart layer-choices - The layer tiles in the layers menu, under the map types.
87
+ * @csspart layer-icon - The picture on a layer's tile, drawn for its kind: a line for a route, a peak for terrain.
88
+ * @csspart layer-name - The name on a layer's tile.
89
+ * @csspart layers - The list of the map's shown layers, such as routes, areas, and points, read by screen readers.
90
+ * @csspart layers-menu - The menu of the map's layers, which the layers button opens.
91
+ * @csspart layers-toggle - The button that opens and closes the layers menu.
92
+ * @csspart map-type - One map type's card in the layers menu: a radio button, its picture, and its name.
93
+ * @csspart map-type-name - The name on a map type's card.
94
+ * @csspart map-type-preview - The picture of the map on a map type's card.
95
+ * @csspart map-types - The map-type cards at the top of the layers menu, where the map has imagery.
96
+ * @csspart needle - The compass needle, turned to point north.
97
+ * @csspart pan-down - The button that pans the map down.
98
+ * @csspart pan-end - The button that pans toward the end of a line of text: right in English.
99
+ * @csspart pan-start - The button that pans toward the start of a line of text: left in English.
100
+ * @csspart pan-up - The button that pans the map up.
101
+ * @csspart region - The named region the map sits in.
102
+ * @csspart rotate-left - The button that turns the map counterclockwise.
103
+ * @csspart rotate-right - The button that turns the map clockwise.
104
+ * @csspart tilt - The 3D button, which tilts the map and makes it flat again. Pressed while the map is tilted.
63
105
  * @csspart viewport - The box the map is drawn in.
64
106
  * @csspart zoom-in - The button that zooms in.
65
107
  * @csspart zoom-out - The button that zooms out.
66
108
  *
67
- * @cssstate fullscreen - While the frame fills the screen.
68
- * @cssstate idle - While the reader has been still long enough to hide the chrome.
109
+ * @cssproperty --map-needle-turn - How far the needle turns to point north, as an angle. The frame writes it from `bearing`.
110
+ *
111
+ * @cssstate fullscreen - The map fills the screen.
112
+ * @cssstate idle - The user has been still long enough for the header and footer to fade.
69
113
  */
70
114
  export declare class HelixHeadlessMap extends HelixHeadlessMap_base {
71
115
  /**
72
- * Accessible name for the map, which is the one thing a consumer must write.
116
+ * The map's rotation, in degrees clockwise from north. `connectMap` keeps it
117
+ * current, and the Face north button's needle turns with it.
118
+ */
119
+ bearing: number;
120
+ /**
121
+ * Combines markers that would overlap into one count. Counts split apart as
122
+ * the map zooms in, and pressing one zooms in to its places.
123
+ */
124
+ cluster: boolean;
125
+ /** The Face north button's label. */
126
+ faceNorthLabel: string;
127
+ /** The Hybrid map type's name. */
128
+ hybridLabel: string;
129
+ /**
130
+ * The map's name, read by screen readers. Name the place, such as "Delivery
131
+ * area", so that several maps on one page can be told apart. Required.
132
+ */
133
+ label: string;
134
+ /**
135
+ * The name of the layers button and menu, and of the list of the map's
136
+ * layers, such as routes, areas, and points, read by screen readers.
137
+ */
138
+ layersLabel: string;
139
+ /**
140
+ * @internal Pictures of the map in each map type, written by the connector
141
+ * when the layers menu opens.
142
+ */
143
+ mapPreviews: Partial<Record<MapType, string>>;
144
+ /**
145
+ * How the map draws the ground, where it has imagery: `hybrid` for imagery
146
+ * under the roads and names, and `satellite` for imagery alone. Absent is
147
+ * the standard, themed map. The layers menu chooses it.
148
+ */
149
+ mapType?: 'hybrid' | 'satellite' | undefined;
150
+ /** The name of the map types in the layers menu, read by screen readers. */
151
+ mapTypeLabel: string;
152
+ /**
153
+ * How far the map is tilted, in degrees from looking straight down.
154
+ * `connectMap` keeps it current, and the 3D button is pressed while it is
155
+ * above `0`.
156
+ */
157
+ pitch: number;
158
+ /** The rotate left button's label. */
159
+ rotateLeftLabel: string;
160
+ /** The rotate right button's label. */
161
+ rotateRightLabel: string;
162
+ /** The Satellite map type's name. */
163
+ satelliteLabel: string;
164
+ /** The Standard map type's name. */
165
+ standardLabel: string;
166
+ /** The 3D button's label. */
167
+ tiltLabel: string;
168
+ /**
169
+ * The routes and areas among the frame's children, in the order they are
170
+ * written, which is the order the list names them in.
171
+ */
172
+ private get layers();
173
+ /** Whether the layers menu is open. */
174
+ private layersOpen;
175
+ private hiding?;
176
+ /** Closes the layers menu on a press anywhere outside the frame. */
177
+ private readonly handleOutside;
178
+ /**
179
+ * Keys pressed in the layers menu. Escape closes it and returns to its
180
+ * button, and no key reaches the region, where the arrows would pan the map.
181
+ */
182
+ private readonly handleMenuKeydown;
183
+ /**
184
+ * The imagery among the layers: raster layers drawn as the ground, which the
185
+ * map types show and hide rather than a tile of their own.
186
+ */
187
+ private get imagery();
188
+ /** A map type's name on its card. */
189
+ private nameOf;
190
+ /** Shows or hides layers, which `connectMap` draws or takes off the map. */
191
+ private showLayers;
192
+ /**
193
+ * The layers menu's entries, in the order the layers are written: a layer
194
+ * of its own, or every layer in a group, at the place of the first.
195
+ */
196
+ private get layerEntries();
197
+ /**
198
+ * A route or area renamed, or its description changed, which the list says
199
+ * and a slot change does not report.
200
+ */
201
+ private readonly handlePartChange;
202
+ /**
203
+ * The markers among the frame's children, in the order they are written,
204
+ * which is the order the arrow keys walk them in.
205
+ */
206
+ private get markers();
207
+ /**
208
+ * The marker the map's one tab stop is on, by position among the markers:
209
+ * the one a reader last reached, and the first before they have reached any.
210
+ */
211
+ private stop;
212
+ protected readonly keys: KeyboardNavigationController;
213
+ /** The marker a press or a click came from, where it came from one. */
214
+ private markerOf;
215
+ /** Moves the tab stop to the marker focus arrived at. */
216
+ private readonly handleFocusIn;
217
+ /**
218
+ * Says a marker was pressed, by click, Enter or Space: a place by its name,
219
+ * and a cluster as a cluster, from the marker it is drawn as.
220
+ */
221
+ private activate;
222
+ private readonly handleClick;
223
+ /**
224
+ * **Enter on the press and Space on the release**, as a native button
225
+ * takes them, and a key held down says it once: auto-repeat sent a travel
226
+ * thirty times a second, each restarting the last.
227
+ */
228
+ private readonly handleMarkerKeydown;
229
+ private readonly handleMarkerKeyup;
230
+ /** A marker added or taken away is a walk of a different length. */
231
+ private readonly handleSlotChange;
232
+ connectedCallback(): void;
233
+ disconnectedCallback(): void;
234
+ /**
235
+ * Puts the tab stop on one marker and takes it off the rest, the roving
236
+ * pattern the toolbar uses: every marker at `-1` is a map whose places the
237
+ * keyboard cannot reach, and every one at `0` is a Tab press per place.
238
+ */
239
+ protected updated(changed: PropertyValues): void;
240
+ /** Turns the map by some degrees, clockwise where positive. */
241
+ rotate(by: number): void;
242
+ /** Turns the map to face north. */
243
+ faceNorth(): void;
244
+ /** Tilts the map by some degrees, toward the horizon where positive. */
245
+ tilt(by: number): void;
246
+ /** Tilts the map to some degrees from looking straight down. `0` makes it flat. */
247
+ tiltTo(to: number): void;
248
+ /**
249
+ * The layers button and its menu: a tile for each layer or group, in the
250
+ * order they are written, with its picture and name, pressed while it is
251
+ * shown. A group's tile is pressed while any of its layers is shown.
252
+ */
253
+ private renderLayersMenu;
254
+ /**
255
+ * The map types, as cards with a picture of the map in each: Standard,
256
+ * Hybrid, and Satellite. One is chosen, so they are radio buttons, and the
257
+ * arrow keys move between them as a group of radios does.
258
+ */
259
+ private renderMapTypes;
260
+ /**
261
+ * The compass, and the pan and rotate buttons around it where `controls`
262
+ * names them.
73
263
  *
74
- * There is no sensible default. "Map" names the widget rather than the place,
75
- * and a reader meeting three of them on a page learns nothing from hearing the
76
- * same word three times.
264
+ * **One control for which way the map faces and where it goes.** The needle
265
+ * turns with the map and points north; pressing it turns the map back. The
266
+ * arrows around it are the way to move and turn the map without dragging,
267
+ * which a pointer otherwise needs.
268
+ */
269
+ private renderCompass;
270
+ /**
271
+ * The controls, in one column in the order they are read: fullscreen, the
272
+ * layers, 3D, zoom, and the compass with the arrows round it, last, where
273
+ * the room its arrows take is below the column and not inside it.
77
274
  *
78
- * **The region is a tab stop**, so the keys are reachable however the controls
79
- * are configured: the listener is on the region, and without a stop of its own
80
- * a frame at `controls="none"` around a map with nothing focusable in it had
81
- * arrow keys no reader could ever press. `aria-keyshortcuts` says which keys
82
- * rather than spelling them into the name, which would otherwise be read out
83
- * at every encounter.
275
+ * **Drawn here, not by the surface**, which lays its pad out for a board:
276
+ * a map's arrows belong round its compass, and the reading order is the
277
+ * column's, top to bottom.
84
278
  */
85
- label: string;
279
+ protected renderControls(): TemplateResult | typeof nothing;
280
+ /** The controls the map draws while `controls` is absent. */
281
+ protected get restingControls(): string;
282
+ /** Whether the compass is drawn: named, or asked for by the arrows round it. */
283
+ private get drawsCompass();
284
+ /** The keys the region answers, which the compass and `tilt` add to. */
285
+ private get keyShortcuts();
286
+ /** Shift with the arrow keys: left and right rotate, and up and down tilt in steps. */
287
+ protected handleMoreKeys(event: KeyboardEvent): boolean;
86
288
  /** The events this family names, the surface naming none of its own. */
87
289
  protected panEvent(detail: ViewportPanDetail): Event;
88
290
  protected zoomEvent(detail: ViewportZoomDetail): Event;
@@ -95,6 +297,21 @@ export declare class HelixHeadlessMap extends HelixHeadlessMap_base {
95
297
  */
96
298
  protected get restingControlsLabel(): string;
97
299
  protected willUpdate(changed: PropertyValues): void;
300
+ /**
301
+ * The routes and areas, named, for a reader who cannot see the map.
302
+ *
303
+ * **What the renderer draws is a picture to a screen reader**, so a route
304
+ * from the depot or a delivery zone is not on the page at all until this
305
+ * says it is. A list rather than a live region, because the reader should
306
+ * find it when they come to the map rather than be told about it as it
307
+ * changes. Nothing where there are none, so a map with only markers says
308
+ * no more than it did.
309
+ *
310
+ * **Written once the frame knows its children**, which is in the browser:
311
+ * the server renders the frame before it has any, and a route is only on
312
+ * the page once a renderer has drawn it, which is later still.
313
+ */
314
+ protected renderLayers(): TemplateResult | typeof nothing;
98
315
  /**
99
316
  * The frame, with each region in a box of its own.
100
317
  *