@fusion.dev/helix-headless 0.105.0 → 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 (162) hide show
  1. package/custom-elements.json +7324 -3890
  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 +52 -56
  30. package/dist/color-picker/root/color-picker-root.d.ts +49 -49
  31. package/dist/combobox/root/combobox-root.d.ts +52 -53
  32. package/dist/command/root/command-root.d.ts +35 -40
  33. package/dist/copy-button/root/copy-button-root.d.ts +24 -26
  34. package/dist/data-table/root/data-table-root.d.ts +106 -107
  35. package/dist/date-input/root/date-input-root.d.ts +54 -53
  36. package/dist/date-picker/root/date-picker-root.d.ts +25 -21
  37. package/dist/description-list/item/description-list-item.d.ts +7 -7
  38. package/dist/description-list/root/description-list-root.d.ts +10 -15
  39. package/dist/dialog/root/dialog-root.d.ts +22 -19
  40. package/dist/divider/root/divider-root.d.ts +12 -13
  41. package/dist/donut-chart/root/donut-chart-root.d.ts +19 -20
  42. package/dist/drawer/root/drawer-root.d.ts +19 -18
  43. package/dist/drilldown/item/drilldown-item.d.ts +28 -28
  44. package/dist/drilldown/root/drilldown-root.d.ts +22 -28
  45. package/dist/element-events.generated.js +7 -0
  46. package/dist/empty/root/empty-root.d.ts +16 -19
  47. package/dist/file-input/root/file-input-root.d.ts +32 -32
  48. package/dist/filter-input/chip/filter-chip.d.ts +36 -39
  49. package/dist/filter-input/field/filter-field.d.ts +25 -31
  50. package/dist/filter-input/menu/filter-menu.d.ts +50 -47
  51. package/dist/filter-input/operator/filter-operator.d.ts +15 -20
  52. package/dist/filter-input/root/filter-input-root.d.ts +80 -98
  53. package/dist/format-date/root/format-date-root.d.ts +19 -27
  54. package/dist/heatmap/root/heatmap-root.d.ts +40 -41
  55. package/dist/icon/root/icon-root.d.ts +21 -23
  56. package/dist/icon-button/root/icon-button-root.d.ts +12 -14
  57. package/dist/image/root/image-root.d.ts +30 -30
  58. package/dist/input/root/input-root.d.ts +36 -35
  59. package/dist/kbd/root/kbd-root.d.ts +13 -15
  60. package/dist/legend/root/legend-root.d.ts +18 -16
  61. package/dist/lightbox/item/lightbox-item.d.ts +13 -15
  62. package/dist/lightbox/root/lightbox-root.d.ts +40 -41
  63. package/dist/line-chart/root/line-chart-root.d.ts +20 -29
  64. package/dist/list/item/list-item.d.ts +17 -22
  65. package/dist/list/root/list-root.d.ts +6 -7
  66. package/dist/listbox/root/listbox-root.d.ts +42 -41
  67. package/dist/loader/root/loader-root.d.ts +16 -20
  68. package/dist/map/area/map-area.d.ts +6 -0
  69. package/dist/map/area/map-area.js +3 -0
  70. package/dist/map/buildings/map-buildings.d.ts +45 -0
  71. package/dist/map/buildings/map-buildings.js +37 -0
  72. package/dist/map/contours/map-contours.d.ts +61 -0
  73. package/dist/map/contours/map-contours.js +54 -0
  74. package/dist/map/index.d.ts +7 -0
  75. package/dist/map/index.js +5 -0
  76. package/dist/map/landcover/map-landcover.d.ts +47 -0
  77. package/dist/map/landcover/map-landcover.js +37 -0
  78. package/dist/map/marker/map-marker.d.ts +11 -4
  79. package/dist/map/marker/map-marker.js +13 -1
  80. package/dist/map/points/map-points.d.ts +7 -1
  81. package/dist/map/points/map-points.js +3 -0
  82. package/dist/map/raster/map-raster.d.ts +84 -0
  83. package/dist/map/raster/map-raster.js +96 -0
  84. package/dist/map/root/map-root.d.ts +169 -7
  85. package/dist/map/root/map-root.js +352 -4
  86. package/dist/map/route/map-route.d.ts +6 -0
  87. package/dist/map/route/map-route.js +3 -0
  88. package/dist/map/terrain/map-terrain.d.ts +68 -0
  89. package/dist/map/terrain/map-terrain.js +58 -0
  90. package/dist/megamenu/root/megamenu-root.d.ts +27 -25
  91. package/dist/menu/item/menu-item.d.ts +30 -31
  92. package/dist/menu/root/menu-root.d.ts +25 -29
  93. package/dist/meter/root/meter-root.d.ts +22 -21
  94. package/dist/navigation/root/navigation-root.d.ts +13 -16
  95. package/dist/notifications/group/notification-group.d.ts +27 -28
  96. package/dist/notifications/notification/notification.d.ts +35 -42
  97. package/dist/notifications/root/notifications-root.d.ts +22 -24
  98. package/dist/number-input/root/number-input-root.d.ts +46 -50
  99. package/dist/object-inspector/root/object-inspector-root.d.ts +46 -58
  100. package/dist/option/group/option-group.d.ts +11 -11
  101. package/dist/option/root/option-root.d.ts +28 -33
  102. package/dist/outline/root/outline-root.d.ts +18 -17
  103. package/dist/pagination/root/pagination-root.d.ts +37 -39
  104. package/dist/pagination/size/pagination-size.d.ts +37 -43
  105. package/dist/pagination/summary/pagination-summary.d.ts +12 -14
  106. package/dist/pin-input/root/pin-input-root.d.ts +32 -38
  107. package/dist/popover/root/popover-root.d.ts +16 -21
  108. package/dist/progress/root/progress-root.d.ts +16 -14
  109. package/dist/qr-code/root/qr-code-root.d.ts +22 -25
  110. package/dist/quote/root/quote-root.d.ts +5 -6
  111. package/dist/radio/group/radio-group.d.ts +26 -28
  112. package/dist/radio/root/radio-root.d.ts +24 -28
  113. package/dist/rating/root/rating-root.d.ts +27 -30
  114. package/dist/scatter-chart/root/scatter-chart-root.d.ts +43 -55
  115. package/dist/scroll-area/root/scroll-area-root.d.ts +15 -21
  116. package/dist/select/root/select-root.d.ts +41 -44
  117. package/dist/skeleton/root/skeleton-root.d.ts +7 -8
  118. package/dist/skip-link/root/skip-link-root.d.ts +21 -28
  119. package/dist/slider/root/slider-root.d.ts +36 -39
  120. package/dist/sparkline/root/sparkline-root.d.ts +22 -28
  121. package/dist/speed-dial/item/speed-dial-item.d.ts +21 -21
  122. package/dist/speed-dial/root/speed-dial-root.d.ts +25 -27
  123. package/dist/splitter/root/splitter-root.d.ts +37 -41
  124. package/dist/stat/group/stat-group.d.ts +4 -4
  125. package/dist/stat/root/stat-root.d.ts +8 -9
  126. package/dist/steps/root/steps-root.d.ts +11 -14
  127. package/dist/steps/step/step.d.ts +22 -29
  128. package/dist/switch/root/switch-root.d.ts +20 -24
  129. package/dist/table/cell/table-cell.d.ts +18 -8
  130. package/dist/table/cell/table-cell.js +5 -1
  131. package/dist/table/column/table-column.d.ts +62 -55
  132. package/dist/table/root/table-root.d.ts +16 -17
  133. package/dist/table/row/table-row.d.ts +3 -3
  134. package/dist/tabs/panel/tab-panel.d.ts +3 -3
  135. package/dist/tabs/root/tabs-root.d.ts +19 -17
  136. package/dist/tabs/tab/tab.d.ts +6 -6
  137. package/dist/tag/root/tag-root.d.ts +11 -12
  138. package/dist/textarea/root/textarea-root.d.ts +29 -32
  139. package/dist/time-input/root/time-input-root.d.ts +70 -69
  140. package/dist/time-picker/root/time-picker-root.d.ts +58 -66
  141. package/dist/timeline/item/timeline-item.d.ts +18 -24
  142. package/dist/timeline/root/timeline-root.d.ts +13 -21
  143. package/dist/toast/item/toast-item.d.ts +21 -22
  144. package/dist/toast/root/toast-root.d.ts +18 -23
  145. package/dist/toggle/group/toggle-group.d.ts +23 -25
  146. package/dist/toggle/root/toggle-root.d.ts +8 -8
  147. package/dist/toolbar/root/toolbar-root.d.ts +7 -10
  148. package/dist/tooltip/root/tooltip-root.d.ts +41 -47
  149. package/dist/tour/root/tour-root.d.ts +24 -26
  150. package/dist/tour/stop/tour-stop.d.ts +39 -48
  151. package/dist/tree/item/tree-item.d.ts +23 -25
  152. package/dist/tree/root/tree-root.d.ts +13 -12
  153. package/dist/trend/root/trend-root.d.ts +18 -19
  154. package/dist/video/root/video-root.d.ts +108 -101
  155. package/dist/video-playlist/item/video-playlist-item.d.ts +23 -28
  156. package/dist/video-playlist/menu/video-playlist-menu.d.ts +17 -21
  157. package/dist/video-playlist/root/video-playlist-root.d.ts +21 -25
  158. package/dist/virtual-list/root/virtual-list-root.d.ts +27 -26
  159. package/package.json +5 -5
  160. package/types/jsx.d.ts +10363 -9520
  161. package/types/svelte.d.ts +5 -0
  162. package/types/vue.d.ts +1440 -1032
@@ -3,22 +3,22 @@ import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  import { HelixHeadlessOption } from '../../option/root/option-root.js';
4
4
  declare const HelixHeadlessListbox_base: (new (...args: any[]) => import("@fusion.dev/helix-core").CollectionElement) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinControllerValueInterface) & (new (...args: any[]) => import("@fusion.dev/helix-core").MixinFieldInterface) & typeof HelixFormElement;
5
5
  /**
6
- * @summary A list of options, one or several of which are the answer.
6
+ * @summary A list of options, from which you choose one or several.
7
7
  *
8
8
  * @description
9
- * **The listbox is the control and the options are its vocabulary.** A Select
10
- * is this with a trigger in front of it, a Combobox is this with a text input,
11
- * and a command palette is this again: they differ in what opens the list and
12
- * what filters it, not in what the list is.
9
+ * The listbox is the control, and options are its items. A Select is a listbox
10
+ * with a trigger in front of it, a Combobox is a listbox with a text input, and
11
+ * a command palette is a listbox in a dialog. They differ only in what opens
12
+ * the list and what filters it.
13
13
  *
14
- * **`value` is comma separated when `multiple` is set**, the way
15
- * `Checkbox.Group`'s is, and a string because that is what `MixinControllerValue`
16
- * holds. The form is sent one entry per answer, as a native `<select multiple>`
17
- * sends it, so a server never has to know to split on a comma.
14
+ * With `multiple` set, `value` is a comma-separated string, like
15
+ * `Checkbox.Group`'s, because `MixinControllerValue` holds a string. The form
16
+ * receives one entry per selected option, as a native `<select multiple>` sends
17
+ * it, so your server does not split on commas.
18
18
  *
19
- * **Chosen and active are two different things.** Chosen is the answer; active
20
- * is where the keyboard is. Only the second moves with the arrows, and
21
- * `aria-activedescendant` names it while focus stays on the list.
19
+ * Selected and active are separate. The selected option is the value. The
20
+ * active option is where the keyboard is: the arrow keys move it, and
21
+ * `aria-activedescendant` points to it while focus stays on the list.
22
22
  *
23
23
  * @since 0.1.0
24
24
  * @status stable
@@ -27,28 +27,28 @@ declare const HelixHeadlessListbox_base: (new (...args: any[]) => import("@fusio
27
27
  * @documentation https://fusion.dev/helix/components/listbox
28
28
  *
29
29
  * @slot - The options, and any groups of them.
30
- * @slot filter-icon - The mark in the filter's field. Left empty, a magnifier is drawn.
31
- * @slot hint - Richer than a string.
32
- * @slot label - Richer than a string.
30
+ * @slot filter-icon - The icon in the filter field. Defaults to a magnifying glass.
31
+ * @slot hint - The hint, for content richer than plain text.
32
+ * @slot label - The label, for content richer than plain text.
33
33
  *
34
- * @event {Event} change - Announced once the value has moved.
35
- * @event {HelixBeforeChangeEvent} helix-before-change - Fired when the answer changes, and cancelable.
36
- * @event {HelixFilterEvent} helix-filter - Fired before the list narrows, and cancelable.
37
- * @event {Event} input - Announced once the value has moved.
34
+ * @event {Event} change - Fired after the value changes.
35
+ * @event {HelixBeforeChangeEvent} helix-before-change - Fired when the value is about to change, and cancelable.
36
+ * @event {HelixFilterEvent} helix-filter - Fired before the list is filtered, and cancelable.
37
+ * @event {Event} input - Fired after the value changes.
38
38
  *
39
- * @csspart empty - Shown when a filter has hidden everything.
40
- * @csspart feedback - What is wrong with it.
41
- * @csspart filter-icon - The mark beside that field.
42
- * @csspart filter-mark - The glyph beside the filter field, where none is slotted.
39
+ * @csspart empty - The text shown when the filter hides every option.
40
+ * @csspart feedback - The message that says what is wrong with the value.
41
+ * @csspart filter-icon - The icon beside the filter field.
42
+ * @csspart filter-mark - The default icon beside the filter field, shown when none is slotted.
43
43
  * @csspart hint - Help under the list.
44
- * @csspart items - The list itself.
45
- * @csspart label - The question, over the list.
46
- * @csspart live - The empty and loading lines again, in a region a screen reader hears when they change. Visually hidden in the styled tier.
47
- * @csspart loading - Shown while the options are still on their way.
48
- * @csspart search - The region holding the field that narrows the list.
49
- * @csspart search-field - The field itself.
44
+ * @csspart items - The list of options.
45
+ * @csspart label - The label above the list.
46
+ * @csspart live - A copy of the empty and loading text, in a region that screen readers announce when it changes. Visually hidden in the styled tier.
47
+ * @csspart loading - The text shown while the options load.
48
+ * @csspart search - The region that holds the filter field.
49
+ * @csspart search-field - The filter field.
50
50
  *
51
- * @cssstate invalid - While there is feedback to show: the platform's verdict, or the consumer's `feedback`.
51
+ * @cssstate invalid - The control has an error to show, from the browser's validation or from your `feedback`.
52
52
  */
53
53
  export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
54
54
  protected readonly aria: AriaForwardController;
@@ -62,11 +62,11 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
62
62
  */
63
63
  autocomplete: string;
64
64
  /**
65
- * What to start narrowed to, where nothing declared it.
65
+ * The filter text the list starts with, when `filter` is not set.
66
66
  */
67
67
  defaultFilter: string;
68
68
  /**
69
- * What is shown when a filter has hidden every option.
69
+ * The text shown when the filter hides every option.
70
70
  *
71
71
  * From `MixinCollection`, which every collection in the library now shares,
72
72
  * and re-declared here only to keep this list's own wording: "No matches" is
@@ -77,7 +77,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
77
77
  /** What the list is narrowed to, whoever set it. */
78
78
  private filterState;
79
79
  /**
80
- * What the list is narrowed to, if anything.
80
+ * The text the list is filtered by, if any.
81
81
  *
82
82
  * Filtering hides rather than removes, so nothing about the value changes and
83
83
  * the list is still the consumer's own elements in their own order. Reading
@@ -87,7 +87,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
87
87
  get filter(): string;
88
88
  set filter(next: string);
89
89
  /**
90
- * Whether the list renders a field for narrowing itself.
90
+ * Whether the list shows a field for filtering it.
91
91
  *
92
92
  * The field lives here rather than in whatever frames the list, because the
93
93
  * filtering already does: `filter`, the empty state and the keyboard are all
@@ -96,11 +96,11 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
96
96
  */
97
97
  filterable: boolean;
98
98
  /**
99
- * Placeholder for the field that narrows the list.
99
+ * Placeholder text for the filter field.
100
100
  */
101
101
  filterLabel: string;
102
102
  /**
103
- * Whether more than one option can be the answer.
103
+ * Whether more than one option can be chosen.
104
104
  */
105
105
  multiple: boolean;
106
106
  /**
@@ -151,14 +151,15 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
151
151
  get selectedIndex(): number;
152
152
  set selectedIndex(at: number);
153
153
  /**
154
- * Which kind of chooser this is, in the platform's two words.
154
+ * The kind of list, as the platform names it: `select-one` or
155
+ * `select-multiple`.
155
156
  *
156
157
  * Derived rather than declared, because `multiple` already decides it and a
157
158
  * second property could disagree.
158
159
  */
159
160
  get type(): string;
160
161
  /**
161
- * Every option, in the order a reader meets them.
162
+ * Every option, in the order they appear.
162
163
  *
163
164
  * Descendants rather than children, because a group puts a level between the
164
165
  * list and its options and the keyboard has to move through a grouped list
@@ -179,7 +180,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
179
180
  private get groups();
180
181
  /** The options a filter has left showing. */
181
182
  private get shown();
182
- /** The chosen values, which is a list whether or not `multiple` is set. */
183
+ /** The chosen values, as an array whether or not `multiple` is set. */
183
184
  get values(): string[];
184
185
  /**
185
186
  * Applies a choice, announcing first so a listener can refuse it.
@@ -219,7 +220,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
219
220
  */
220
221
  navigate(event: KeyboardEvent): void;
221
222
  /**
222
- * Brings the chosen option to rest in the middle of the list.
223
+ * Scrolls the chosen option to the middle of the list.
223
224
  *
224
225
  * A method rather than something this does on its own, because a listbox
225
226
  * opening on its answer usually wants it merely *visible* and the browser
@@ -266,7 +267,7 @@ export declare class HelixHeadlessListbox extends HelixHeadlessListbox_base {
266
267
  * their answer moved when it did not is worse than telling them nothing.
267
268
  */
268
269
  private readonly handleFilter;
269
- /** Requests a narrowing, and reports whether the request stood. */
270
+ /** Requests a new filter, and returns whether the request went through. */
270
271
  requestFilter(next: string): boolean;
271
272
  /**
272
273
  * Sends the keys that belong to the list to the list.
@@ -1,28 +1,23 @@
1
1
  import { HelixElement } from '@fusion.dev/helix-core';
2
2
  import { type PropertyValues, type TemplateResult } from 'lit';
3
3
  /**
4
- * @summary Says that something indeterminate is in progress.
4
+ * @summary Shows that work of unknown length is in progress.
5
5
  *
6
6
  * @description
7
- * Two concentric circles rather than one arc: the track is what makes the
8
- * moving part read as a proportion of a whole rather than as a shape drifting
9
- * on its own, and it costs one element.
7
+ * Draws two concentric circles: a track and a moving arc. The track shows the
8
+ * arc as a proportion of a whole, and costs one element.
10
9
  *
11
- * **The center is a slot and is empty by default.** A loader with a mark in the
12
- * middle is a brand's loader, and this library does not know whose. The slot is
13
- * the capability; the logo is the application's, put in once wherever the app
14
- * wraps it. Nothing is rendered when nothing is slotted, so an unbranded loader
15
- * is still two circles and no extra box.
10
+ * **The center is a slot, empty by default.** Put your logo there once, where
11
+ * your app wraps the loader. When nothing is slotted, nothing extra is
12
+ * rendered.
16
13
  *
17
- * What is slotted does not turn. Only the arc moves, because a mark rotating
18
- * with it stops reading as a mark and becomes part of the animation, and a
19
- * wordmark upside down twice a second is worse than no wordmark.
14
+ * Slotted content does not rotate. Only the arc moves, so a logo stays
15
+ * readable.
20
16
  *
21
- * The semantics are on the host through `ElementInternals`, not on an inner
22
- * span. A `role` written into the shadow root announces correctly but leaves
23
- * the host itself anonymous to anything walking the light DOM, and a `role`
24
- * written onto the host as an attribute is one a React consumer's server markup
25
- * never had.
17
+ * The role is set on the host through `ElementInternals`. A `role` in the
18
+ * shadow root would leave the host itself without a role in the light DOM, and
19
+ * a `role` attribute on the host would be missing from React server-rendered
20
+ * markup.
26
21
  *
27
22
  * @since 0.1.0
28
23
  * @status stable
@@ -30,16 +25,17 @@ import { type PropertyValues, type TemplateResult } from 'lit';
30
25
  * @aliases Spinner, Busy, Activity
31
26
  * @documentation https://fusion.dev/helix/components/loader
32
27
  *
33
- * @slot - A mark to sit still at the center, usually a logo. Empty by default.
28
+ * @slot - An icon or logo that stays still at the center. Empty by default.
34
29
  *
35
30
  * @csspart indicator - The arc that turns.
36
- * @csspart mark - The region holding what was slotted at the center.
31
+ * @csspart mark - The region that holds the slotted content at the center.
37
32
  * @csspart svg - The rotating circle pair.
38
33
  * @csspart track - The full circle behind the indicator.
39
34
  */
40
35
  export declare class HelixHeadlessLoader extends HelixElement {
41
36
  /**
42
- * Accessible name, announced while the work is outstanding.
37
+ * The loader's name, announced by screen readers while the work is in
38
+ * progress.
43
39
  */
44
40
  label: string;
45
41
  protected willUpdate(changed: PropertyValues): void;
@@ -20,6 +20,12 @@ import { type MapPoint } from '../route/map-route.js';
20
20
  export declare class HelixHeadlessMapArea extends HelixElement {
21
21
  /** More about the area. Read after its label in the frame's list. */
22
22
  description?: string;
23
+ /**
24
+ * A name this layer shares with other layers, such as a route and its
25
+ * dotted legs. The layers menu shows layers in the same group as one entry,
26
+ * named by the first of them, and its checkbox shows or hides them all.
27
+ */
28
+ group?: string;
23
29
  /** Marks this as a layer for the frame and the connector, whatever its tag. */
24
30
  readonly isMapLayer = true;
25
31
  /** @internal Which kind of layer, which is how the connector draws it. */
@@ -25,6 +25,9 @@ let HelixHeadlessMapArea = class HelixHeadlessMapArea extends HelixElement {
25
25
  __decorate([
26
26
  property()
27
27
  ], HelixHeadlessMapArea.prototype, "description", void 0);
28
+ __decorate([
29
+ property()
30
+ ], HelixHeadlessMapArea.prototype, "group", void 0);
28
31
  __decorate([
29
32
  property()
30
33
  ], HelixHeadlessMapArea.prototype, "label", void 0);
@@ -0,0 +1,45 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ /**
4
+ * @summary The buildings on a map, raised to their real heights in 3D.
5
+ *
6
+ * @description
7
+ * `connectMap` raises the buildings in the map's tiles to the heights the tiles
8
+ * record, under the map's place names. Tilt the map to see the heights. The
9
+ * buildings appear from zoom 13, where the tiles start to carry them.
10
+ *
11
+ * MapLibre draws the buildings. Leaflet draws maps flat, so a Leaflet map shows
12
+ * none. The frame lists the layer by its `label` for screen readers.
13
+ *
14
+ * @since 0.105.0
15
+ * @status experimental
16
+ * @category media
17
+ * @aliases 3D buildings, Extrusion
18
+ * @documentation https://fusion.dev/helix/components/map
19
+ *
20
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The layer's name or color changed. Used by `connectMap`; pages do not need to listen for it.
21
+ */
22
+ export declare class HelixHeadlessMapBuildings extends HelixElement {
23
+ /** More about the buildings. Read after the label in the frame's list. */
24
+ description?: string;
25
+ /**
26
+ * A name this layer shares with other layers, such as a route and its
27
+ * dotted legs. The layers menu shows layers in the same group as one entry,
28
+ * named by the first of them, and its checkbox shows or hides them all.
29
+ */
30
+ group?: string;
31
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
32
+ readonly isMapLayer = true;
33
+ /** @internal Which kind of layer, which is how the connector draws it. */
34
+ readonly layerKind: 'buildings';
35
+ /** The layer's name in the frame's list. */
36
+ label: string;
37
+ /** Tells the frame and the connector the layer was renamed or recolored. */
38
+ protected updated(changed: PropertyValues): void;
39
+ protected render(): typeof nothing;
40
+ }
41
+ declare global {
42
+ interface HTMLElementTagNameMap {
43
+ 'helix-headless-map-buildings': HelixHeadlessMapBuildings;
44
+ }
45
+ }
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ let HelixHeadlessMapBuildings = class HelixHeadlessMapBuildings extends HelixElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.isMapLayer = true;
14
+ this.layerKind = 'buildings';
15
+ this.label = '3D buildings';
16
+ }
17
+ updated(changed) {
18
+ super.updated(changed);
19
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
20
+ }
21
+ render() {
22
+ return nothing;
23
+ }
24
+ };
25
+ __decorate([
26
+ property()
27
+ ], HelixHeadlessMapBuildings.prototype, "description", void 0);
28
+ __decorate([
29
+ property()
30
+ ], HelixHeadlessMapBuildings.prototype, "group", void 0);
31
+ __decorate([
32
+ property()
33
+ ], HelixHeadlessMapBuildings.prototype, "label", void 0);
34
+ HelixHeadlessMapBuildings = __decorate([
35
+ customElement('helix-headless-map-buildings')
36
+ ], HelixHeadlessMapBuildings);
37
+ export { HelixHeadlessMapBuildings };
@@ -0,0 +1,61 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ import type { MapTerrainEncoding } from '../terrain/map-terrain.js';
4
+ /**
5
+ * @summary Contour lines on a map, each at one height, labeled at every fifth.
6
+ *
7
+ * @description
8
+ * `connectMap` traces lines of equal height from elevation tiles, the same
9
+ * tiles `helix-map-terrain` reads, and draws them under the roads. The lines
10
+ * are closer together as the map zooms in, and every fifth, the index line,
11
+ * is heavier and labeled with its height. They show from zoom 9.
12
+ *
13
+ * Set `src` to an elevation tile URL with `{z}`, `{x}`, and `{y}` in it, and
14
+ * `encoding` to how its tiles store heights. Set `unit` to `feet` to label
15
+ * the heights in feet. Put the provider's credit in `attribution`.
16
+ *
17
+ * MapLibre draws the lines. The frame lists the layer by its `label` for
18
+ * screen readers.
19
+ *
20
+ * @since 0.105.0
21
+ * @status experimental
22
+ * @category media
23
+ * @aliases Contours, Topographic lines, Elevation lines, Isolines
24
+ * @documentation https://fusion.dev/helix/components/map
25
+ *
26
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The tiles, the unit, or the layer's name or color changed. Used by `connectMap`; pages do not need to listen for it.
27
+ */
28
+ export declare class HelixHeadlessMapContours extends HelixElement {
29
+ /** The elevation provider's credit, shown in the frame's footer. Links in it stay links. */
30
+ attribution?: string;
31
+ /** More about the lines. Read after the label in the frame's list. */
32
+ description?: string;
33
+ /** How the tiles store heights in their colors: `terrarium` or `mapbox`. */
34
+ encoding: MapTerrainEncoding;
35
+ /**
36
+ * A name this layer shares with other layers, such as a route and its
37
+ * dotted legs. The layers menu shows layers in the same group as one entry,
38
+ * named by the first of them, and its checkbox shows or hides them all.
39
+ */
40
+ group?: string;
41
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
42
+ readonly isMapLayer = true;
43
+ /** @internal Which kind of layer, which is how the connector draws it. */
44
+ readonly layerKind: 'contours';
45
+ /** The layer's name in the frame's list. */
46
+ label: string;
47
+ /** The deepest zoom the provider has tiles for. */
48
+ maxZoom?: number;
49
+ /** One elevation tile URL with `{z}`, `{x}`, and `{y}` in it. */
50
+ src?: string;
51
+ /** The unit the heights are labeled in: `meters` or `feet`. */
52
+ unit: 'feet' | 'meters';
53
+ /** Tells the frame and the connector the layer changed. */
54
+ protected updated(changed: PropertyValues): void;
55
+ protected render(): typeof nothing;
56
+ }
57
+ declare global {
58
+ interface HTMLElementTagNameMap {
59
+ 'helix-headless-map-contours': HelixHeadlessMapContours;
60
+ }
61
+ }
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ let HelixHeadlessMapContours = class HelixHeadlessMapContours extends HelixElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.encoding = 'terrarium';
14
+ this.isMapLayer = true;
15
+ this.layerKind = 'contours';
16
+ this.label = 'Contour lines';
17
+ this.unit = 'meters';
18
+ }
19
+ updated(changed) {
20
+ super.updated(changed);
21
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
22
+ }
23
+ render() {
24
+ return nothing;
25
+ }
26
+ };
27
+ __decorate([
28
+ property()
29
+ ], HelixHeadlessMapContours.prototype, "attribution", void 0);
30
+ __decorate([
31
+ property()
32
+ ], HelixHeadlessMapContours.prototype, "description", void 0);
33
+ __decorate([
34
+ property()
35
+ ], HelixHeadlessMapContours.prototype, "encoding", void 0);
36
+ __decorate([
37
+ property()
38
+ ], HelixHeadlessMapContours.prototype, "group", void 0);
39
+ __decorate([
40
+ property()
41
+ ], HelixHeadlessMapContours.prototype, "label", void 0);
42
+ __decorate([
43
+ property({ attribute: 'max-zoom', type: Number })
44
+ ], HelixHeadlessMapContours.prototype, "maxZoom", void 0);
45
+ __decorate([
46
+ property()
47
+ ], HelixHeadlessMapContours.prototype, "src", void 0);
48
+ __decorate([
49
+ property()
50
+ ], HelixHeadlessMapContours.prototype, "unit", void 0);
51
+ HelixHeadlessMapContours = __decorate([
52
+ customElement('helix-headless-map-contours')
53
+ ], HelixHeadlessMapContours);
54
+ export { HelixHeadlessMapContours };
@@ -1,8 +1,15 @@
1
1
  export { HelixHeadlessMapArea } from './area/map-area.js';
2
+ export { HelixHeadlessMapBuildings } from './buildings/map-buildings.js';
3
+ export { HelixHeadlessMapContours } from './contours/map-contours.js';
4
+ export { HelixHeadlessMapLandcover } from './landcover/map-landcover.js';
2
5
  export { HelixHeadlessMapMarker } from './marker/map-marker.js';
3
6
  export type { MapPointsCollection, MapPointsInView, MapPointsPlace, } from './points/map-points.js';
4
7
  export { HelixHeadlessMapPoints } from './points/map-points.js';
5
8
  export { HelixHeadlessMapPosition } from './position/map-position.js';
9
+ export { HelixHeadlessMapRaster } from './raster/map-raster.js';
10
+ export type { MapType } from './root/map-root.js';
6
11
  export { HelixHeadlessMap } from './root/map-root.js';
7
12
  export type { MapPoint } from './route/map-route.js';
8
13
  export { HelixHeadlessMapRoute } from './route/map-route.js';
14
+ export type { MapTerrainEncoding } from './terrain/map-terrain.js';
15
+ export { HelixHeadlessMapTerrain } from './terrain/map-terrain.js';
package/dist/map/index.js CHANGED
@@ -1,6 +1,11 @@
1
1
  export { HelixHeadlessMapArea } from './area/map-area.js';
2
+ export { HelixHeadlessMapBuildings } from './buildings/map-buildings.js';
3
+ export { HelixHeadlessMapContours } from './contours/map-contours.js';
4
+ export { HelixHeadlessMapLandcover } from './landcover/map-landcover.js';
2
5
  export { HelixHeadlessMapMarker } from './marker/map-marker.js';
3
6
  export { HelixHeadlessMapPoints } from './points/map-points.js';
4
7
  export { HelixHeadlessMapPosition } from './position/map-position.js';
8
+ export { HelixHeadlessMapRaster } from './raster/map-raster.js';
5
9
  export { HelixHeadlessMap } from './root/map-root.js';
6
10
  export { HelixHeadlessMapRoute } from './route/map-route.js';
11
+ export { HelixHeadlessMapTerrain } from './terrain/map-terrain.js';
@@ -0,0 +1,47 @@
1
+ import { HelixElement } from '@fusion.dev/helix-core';
2
+ import { nothing, type PropertyValues } from 'lit';
3
+ /**
4
+ * @summary What covers the ground on a map: forest, grass, farmland, wetland, sand, rock, and ice.
5
+ *
6
+ * @description
7
+ * `connectMap` colors the ground by what covers it, from the land cover in
8
+ * the map's own tiles: forest and grass in greens, farmland in wheat,
9
+ * wetland in teal, sand in tan, rock in gray, and ice in pale blue. Each is
10
+ * mixed into the map's land color, so the colors sit in a light or a dark
11
+ * theme. It draws over the map's parks, and under its water and roads.
12
+ *
13
+ * MapLibre draws it, from tiles in the OpenMapTiles schema. The frame lists
14
+ * the layer by its `label` for screen readers.
15
+ *
16
+ * @since 0.105.0
17
+ * @status experimental
18
+ * @category media
19
+ * @aliases Land cover, Land use, Vegetation, Ground cover
20
+ * @documentation https://fusion.dev/helix/components/map
21
+ *
22
+ * @event {HelixMapPartChangeEvent} helix-map-part-change - The layer's name or color changed. Used by `connectMap`; pages do not need to listen for it.
23
+ */
24
+ export declare class HelixHeadlessMapLandcover extends HelixElement {
25
+ /** More about the land cover. Read after the label in the frame's list. */
26
+ description?: string;
27
+ /**
28
+ * A name this layer shares with other layers, such as a route and its
29
+ * dotted legs. The layers menu shows layers in the same group as one entry,
30
+ * named by the first of them, and its checkbox shows or hides them all.
31
+ */
32
+ group?: string;
33
+ /** Marks this as a layer for the frame and the connector, whatever its tag. */
34
+ readonly isMapLayer = true;
35
+ /** @internal Which kind of layer, which is how the connector draws it. */
36
+ readonly layerKind: 'landcover';
37
+ /** The layer's name in the frame's list. */
38
+ label: string;
39
+ /** Tells the frame and the connector the layer was renamed or recolored. */
40
+ protected updated(changed: PropertyValues): void;
41
+ protected render(): typeof nothing;
42
+ }
43
+ declare global {
44
+ interface HTMLElementTagNameMap {
45
+ 'helix-headless-map-landcover': HelixHeadlessMapLandcover;
46
+ }
47
+ }
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { customElement, HelixElement, HelixMapPartChangeEvent } from '@fusion.dev/helix-core';
8
+ import { nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ let HelixHeadlessMapLandcover = class HelixHeadlessMapLandcover extends HelixElement {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.isMapLayer = true;
14
+ this.layerKind = 'landcover';
15
+ this.label = 'Land cover';
16
+ }
17
+ updated(changed) {
18
+ super.updated(changed);
19
+ this.dispatchEvent(new HelixMapPartChangeEvent({ kind: 'layer' }));
20
+ }
21
+ render() {
22
+ return nothing;
23
+ }
24
+ };
25
+ __decorate([
26
+ property()
27
+ ], HelixHeadlessMapLandcover.prototype, "description", void 0);
28
+ __decorate([
29
+ property()
30
+ ], HelixHeadlessMapLandcover.prototype, "group", void 0);
31
+ __decorate([
32
+ property()
33
+ ], HelixHeadlessMapLandcover.prototype, "label", void 0);
34
+ HelixHeadlessMapLandcover = __decorate([
35
+ customElement('helix-headless-map-landcover')
36
+ ], HelixHeadlessMapLandcover);
37
+ export { HelixHeadlessMapLandcover };
@@ -29,6 +29,7 @@ import { type PropertyValues, type TemplateResult } from 'lit';
29
29
  * @csspart marker - The button, holding the point and the name.
30
30
  * @csspart point - The dot on the place, holding the icon if there is one.
31
31
  *
32
+ * @cssstate behind - On the far side of a globe, out of sight until the globe turns it into view.
32
33
  * @cssstate cluster - Shows several markers as one count.
33
34
  * @cssstate clustered - Hidden inside another marker's cluster.
34
35
  * @cssstate current - Holds the map's tab stop.
@@ -49,6 +50,12 @@ export declare class HelixHeadlessMapMarker extends HelixElement {
49
50
  * Empty while it stands only for itself.
50
51
  */
51
52
  gathered: string[];
53
+ /**
54
+ * @internal Whether the place is on the far side of a globe, written by the
55
+ * connector. It is hidden meanwhile, and stays in the frame's walk, so a
56
+ * reader reaching it turns the globe to show it.
57
+ */
58
+ behind: boolean;
52
59
  /**
53
60
  * @internal Whether this stands fanned out from a spot it shares with
54
61
  * other places, written by the connector when their cluster is pressed and
@@ -62,9 +69,9 @@ export declare class HelixHeadlessMapMarker extends HelixElement {
62
69
  */
63
70
  gatheredBy: HelixHeadlessMapMarker | undefined;
64
71
  /**
65
- * Marks this as a map marker for the frame and the connector, which find
66
- * their markers among the frame's children by this rather than by tag, so a
67
- * styled marker and a headless one are the same thing to them.
72
+ * Marks the element as a map marker. The frame and the connector find
73
+ * markers among the frame's children by this flag, so they treat a styled
74
+ * marker and a headless one the same way.
68
75
  */
69
76
  readonly isMapMarker = true;
70
77
  /** The place's name. Shown next to the marker and read by screen readers. */
@@ -102,7 +109,7 @@ export declare class HelixHeadlessMapMarker extends HelixElement {
102
109
  * faded, so the connector can ask before the name is ever shown.
103
110
  */
104
111
  extent(): number;
105
- /** Focuses the button rather than the host, which draws no box of its own. */
112
+ /** Focuses the marker's button. The host draws no box of its own. */
106
113
  focus(options?: FocusOptions): void;
107
114
  protected render(): TemplateResult;
108
115
  }