@k2b/ui 0.29.0 → 0.31.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 (243) hide show
  1. package/README.md +2 -2
  2. package/dist/base.css +2 -2
  3. package/dist/browser/actions/Dropdown.js +6 -3
  4. package/dist/browser/actions/Dropdown.js.map +1 -1
  5. package/dist/browser/actions/FilterChip.js +137 -7
  6. package/dist/browser/actions/FilterChip.js.map +1 -1
  7. package/dist/browser/actions/SegmentedControl.js +5 -9
  8. package/dist/browser/actions/SegmentedControl.js.map +1 -1
  9. package/dist/browser/actions/SpotlightSearch.js +6 -3
  10. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  11. package/dist/browser/actions/Tabs.js +5 -2
  12. package/dist/browser/actions/Tabs.js.map +1 -1
  13. package/dist/browser/actions/Toolbar.js +2 -0
  14. package/dist/browser/actions/Toolbar.js.map +1 -1
  15. package/dist/browser/actions/ViewTabs.js +294 -0
  16. package/dist/browser/actions/ViewTabs.js.map +1 -0
  17. package/dist/browser/actions/filter-messages.js +6 -2
  18. package/dist/browser/actions/filter-messages.js.map +1 -1
  19. package/dist/browser/actions/index.js +2 -1
  20. package/dist/browser/actions/index.js.map +1 -1
  21. package/dist/browser/chat/ChatComposer.js +1108 -604
  22. package/dist/browser/chat/ChatComposer.js.map +1 -1
  23. package/dist/browser/chat/ChatDecision.js +146 -84
  24. package/dist/browser/chat/ChatDecision.js.map +1 -1
  25. package/dist/browser/chat/ChatPrimitives.js +292 -159
  26. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  27. package/dist/browser/chat/chat-messages.js +8 -0
  28. package/dist/browser/chat/chat-messages.js.map +1 -1
  29. package/dist/browser/chat/command-search.js +26 -15
  30. package/dist/browser/chat/command-search.js.map +1 -1
  31. package/dist/browser/chat/index.js +4 -2
  32. package/dist/browser/chat/index.js.map +1 -1
  33. package/dist/browser/content/Calendar.js +143 -116
  34. package/dist/browser/content/Calendar.js.map +1 -1
  35. package/dist/browser/content/CalendarWeekView.js +291 -266
  36. package/dist/browser/content/CalendarWeekView.js.map +1 -1
  37. package/dist/browser/content/DataTable.js +224 -155
  38. package/dist/browser/content/DataTable.js.map +1 -1
  39. package/dist/browser/content/MapAttribution.js +27 -0
  40. package/dist/browser/content/MapAttribution.js.map +1 -0
  41. package/dist/browser/content/MapView.js +553 -0
  42. package/dist/browser/content/MapView.js.map +1 -0
  43. package/dist/browser/content/MapViewFrame.js +395 -0
  44. package/dist/browser/content/MapViewFrame.js.map +1 -0
  45. package/dist/browser/content/data-table-messages.js +4 -2
  46. package/dist/browser/content/data-table-messages.js.map +1 -1
  47. package/dist/browser/content/index.js +5 -0
  48. package/dist/browser/content/index.js.map +1 -1
  49. package/dist/browser/content/map-palette.js +39 -0
  50. package/dist/browser/content/map-palette.js.map +1 -0
  51. package/dist/browser/content/map-style.js +276 -0
  52. package/dist/browser/content/map-style.js.map +1 -0
  53. package/dist/browser/content/map-view-geometry.js +269 -0
  54. package/dist/browser/content/map-view-geometry.js.map +1 -0
  55. package/dist/browser/content/map-view-live.js +28 -0
  56. package/dist/browser/content/map-view-live.js.map +1 -0
  57. package/dist/browser/content/map-view-messages.js +53 -0
  58. package/dist/browser/content/map-view-messages.js.map +1 -0
  59. package/dist/browser/content/map-view-types.js +2 -0
  60. package/dist/browser/content/map-view-types.js.map +1 -0
  61. package/dist/browser/content/map-view-worker.js +10 -0
  62. package/dist/browser/feedback/MovedHint.js +197 -0
  63. package/dist/browser/feedback/MovedHint.js.map +1 -0
  64. package/dist/browser/feedback/dialog-core.js +85 -9
  65. package/dist/browser/feedback/dialog-core.js.map +1 -1
  66. package/dist/browser/feedback/index.js +1 -0
  67. package/dist/browser/feedback/index.js.map +1 -1
  68. package/dist/browser/feedback/prompts.js +6 -1
  69. package/dist/browser/feedback/prompts.js.map +1 -1
  70. package/dist/browser/inputs/DatePicker.js +337 -212
  71. package/dist/browser/inputs/DatePicker.js.map +1 -1
  72. package/dist/browser/inputs/date-picker.js +59 -5
  73. package/dist/browser/inputs/date-picker.js.map +1 -1
  74. package/dist/browser/intl/messages.js +12 -0
  75. package/dist/browser/intl/messages.js.map +1 -1
  76. package/dist/browser/intl/weekend.js +39 -0
  77. package/dist/browser/intl/weekend.js.map +1 -0
  78. package/dist/browser/layout/AppOverview.js +0 -1
  79. package/dist/browser/layout/AppOverview.js.map +1 -1
  80. package/dist/browser/layout/AppWorkspace.js +701 -476
  81. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  82. package/dist/browser/layout/PageTitle.js +3 -2
  83. package/dist/browser/layout/PageTitle.js.map +1 -1
  84. package/dist/browser/layout/SettingsModal.js +2 -2
  85. package/dist/browser/layout/SettingsModal.js.map +1 -1
  86. package/dist/browser/layout/SidebarSwitcher.js +13 -12
  87. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  88. package/dist/browser/layout/TabBar.js +1 -1
  89. package/dist/browser/layout/TabBar.js.map +1 -1
  90. package/dist/browser/layout/app-host-width.js +44 -0
  91. package/dist/browser/layout/app-host-width.js.map +1 -0
  92. package/dist/browser/layout/app-workspace-controller.js +331 -45
  93. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  94. package/dist/browser/layout/app-workspace-width.js +26 -0
  95. package/dist/browser/layout/app-workspace-width.js.map +1 -0
  96. package/dist/browser/layout/index.js +2 -1
  97. package/dist/browser/layout/index.js.map +1 -1
  98. package/dist/browser/surfaces/Placeholder.js +36 -13
  99. package/dist/browser/surfaces/Placeholder.js.map +1 -1
  100. package/dist/licenses/maplibre-gl.txt +116 -0
  101. package/dist/ssr/actions/Dropdown.js +5 -2
  102. package/dist/ssr/actions/Dropdown.js.map +1 -1
  103. package/dist/ssr/actions/FilterChip.js +59 -7
  104. package/dist/ssr/actions/FilterChip.js.map +1 -1
  105. package/dist/ssr/actions/SegmentedControl.js +1 -2
  106. package/dist/ssr/actions/SegmentedControl.js.map +1 -1
  107. package/dist/ssr/actions/SpotlightSearch.js +2 -2
  108. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  109. package/dist/ssr/actions/Tabs.js +2 -2
  110. package/dist/ssr/actions/Tabs.js.map +1 -1
  111. package/dist/ssr/actions/Toolbar.js +2 -0
  112. package/dist/ssr/actions/Toolbar.js.map +1 -1
  113. package/dist/ssr/actions/ViewTabs.js +211 -0
  114. package/dist/ssr/actions/ViewTabs.js.map +1 -0
  115. package/dist/ssr/actions/filter-messages.js +6 -2
  116. package/dist/ssr/actions/filter-messages.js.map +1 -1
  117. package/dist/ssr/actions/index.js +2 -1
  118. package/dist/ssr/actions/index.js.map +1 -1
  119. package/dist/ssr/chat/ChatComposer.js +546 -131
  120. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  121. package/dist/ssr/chat/ChatDecision.js +44 -19
  122. package/dist/ssr/chat/ChatDecision.js.map +1 -1
  123. package/dist/ssr/chat/ChatPrimitives.js +95 -24
  124. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  125. package/dist/ssr/chat/chat-messages.js +8 -0
  126. package/dist/ssr/chat/chat-messages.js.map +1 -1
  127. package/dist/ssr/chat/command-search.js +26 -15
  128. package/dist/ssr/chat/command-search.js.map +1 -1
  129. package/dist/ssr/chat/index.js +4 -2
  130. package/dist/ssr/chat/index.js.map +1 -1
  131. package/dist/ssr/content/Calendar.js +109 -100
  132. package/dist/ssr/content/Calendar.js.map +1 -1
  133. package/dist/ssr/content/CalendarWeekView.js +42 -28
  134. package/dist/ssr/content/CalendarWeekView.js.map +1 -1
  135. package/dist/ssr/content/DataTable.js +78 -31
  136. package/dist/ssr/content/DataTable.js.map +1 -1
  137. package/dist/ssr/content/MapAttribution.js +19 -0
  138. package/dist/ssr/content/MapAttribution.js.map +1 -0
  139. package/dist/ssr/content/MapView.js +474 -0
  140. package/dist/ssr/content/MapView.js.map +1 -0
  141. package/dist/ssr/content/MapViewFrame.js +193 -0
  142. package/dist/ssr/content/MapViewFrame.js.map +1 -0
  143. package/dist/ssr/content/data-table-messages.js +4 -2
  144. package/dist/ssr/content/data-table-messages.js.map +1 -1
  145. package/dist/ssr/content/index.js +5 -0
  146. package/dist/ssr/content/index.js.map +1 -1
  147. package/dist/ssr/content/map-palette.js +39 -0
  148. package/dist/ssr/content/map-palette.js.map +1 -0
  149. package/dist/ssr/content/map-style.js +276 -0
  150. package/dist/ssr/content/map-style.js.map +1 -0
  151. package/dist/ssr/content/map-view-geometry.js +269 -0
  152. package/dist/ssr/content/map-view-geometry.js.map +1 -0
  153. package/dist/ssr/content/map-view-live.js +1 -0
  154. package/dist/ssr/content/map-view-messages.js +53 -0
  155. package/dist/ssr/content/map-view-messages.js.map +1 -0
  156. package/dist/ssr/content/map-view-types.js +2 -0
  157. package/dist/ssr/content/map-view-types.js.map +1 -0
  158. package/dist/ssr/feedback/MovedHint.js +166 -0
  159. package/dist/ssr/feedback/MovedHint.js.map +1 -0
  160. package/dist/ssr/feedback/dialog-core.js +85 -9
  161. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  162. package/dist/ssr/feedback/index.js +1 -0
  163. package/dist/ssr/feedback/index.js.map +1 -1
  164. package/dist/ssr/feedback/prompts.js +6 -1
  165. package/dist/ssr/feedback/prompts.js.map +1 -1
  166. package/dist/ssr/inputs/DatePicker.js +138 -69
  167. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  168. package/dist/ssr/inputs/date-picker.js +59 -5
  169. package/dist/ssr/inputs/date-picker.js.map +1 -1
  170. package/dist/ssr/intl/messages.js +12 -0
  171. package/dist/ssr/intl/messages.js.map +1 -1
  172. package/dist/ssr/intl/weekend.js +39 -0
  173. package/dist/ssr/intl/weekend.js.map +1 -0
  174. package/dist/ssr/layout/AppOverview.js +0 -1
  175. package/dist/ssr/layout/AppOverview.js.map +1 -1
  176. package/dist/ssr/layout/AppWorkspace.js +216 -44
  177. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  178. package/dist/ssr/layout/PageTitle.js +3 -2
  179. package/dist/ssr/layout/PageTitle.js.map +1 -1
  180. package/dist/ssr/layout/SettingsModal.js +2 -2
  181. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  182. package/dist/ssr/layout/SidebarSwitcher.js +13 -12
  183. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  184. package/dist/ssr/layout/TabBar.js +1 -1
  185. package/dist/ssr/layout/TabBar.js.map +1 -1
  186. package/dist/ssr/layout/app-host-width.js +44 -0
  187. package/dist/ssr/layout/app-host-width.js.map +1 -0
  188. package/dist/ssr/layout/app-workspace-controller.js +331 -45
  189. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  190. package/dist/ssr/layout/app-workspace-width.js +26 -0
  191. package/dist/ssr/layout/app-workspace-width.js.map +1 -0
  192. package/dist/ssr/layout/index.js +2 -1
  193. package/dist/ssr/layout/index.js.map +1 -1
  194. package/dist/ssr/surfaces/Placeholder.js +24 -7
  195. package/dist/ssr/surfaces/Placeholder.js.map +1 -1
  196. package/dist/styles.css +1 -1
  197. package/dist/types/actions/Dropdown.d.ts +4 -0
  198. package/dist/types/actions/FilterChip.d.ts +22 -0
  199. package/dist/types/actions/ViewTabs.d.ts +30 -0
  200. package/dist/types/actions/filter-messages.d.ts +2 -0
  201. package/dist/types/actions/index.d.ts +4 -2
  202. package/dist/types/chat/ChatComposer.d.ts +52 -0
  203. package/dist/types/chat/ChatDecision.d.ts +18 -2
  204. package/dist/types/chat/ChatPrimitives.d.ts +10 -0
  205. package/dist/types/chat/chat-messages.d.ts +4 -0
  206. package/dist/types/chat/command-search.d.ts +2 -0
  207. package/dist/types/chat/index.d.ts +9 -8
  208. package/dist/types/content/DataTable.d.ts +3 -0
  209. package/dist/types/content/MapAttribution.d.ts +6 -0
  210. package/dist/types/content/MapView.d.ts +5 -0
  211. package/dist/types/content/MapViewFrame.d.ts +31 -0
  212. package/dist/types/content/data-table-messages.d.ts +1 -0
  213. package/dist/types/content/index.d.ts +6 -0
  214. package/dist/types/content/map-palette.d.ts +58 -0
  215. package/dist/types/content/map-style.d.ts +29 -0
  216. package/dist/types/content/map-view-geometry.d.ts +55 -0
  217. package/dist/types/content/map-view-live.d.ts +2 -0
  218. package/dist/types/content/map-view-messages.d.ts +21 -0
  219. package/dist/types/content/map-view-types.d.ts +61 -0
  220. package/dist/types/feedback/MovedHint.d.ts +25 -0
  221. package/dist/types/feedback/dialog-core.d.ts +6 -2
  222. package/dist/types/feedback/index.d.ts +2 -0
  223. package/dist/types/feedback/prompts.d.ts +2 -0
  224. package/dist/types/inputs/DatePicker.d.ts +7 -0
  225. package/dist/types/inputs/date-picker.d.ts +25 -1
  226. package/dist/types/intl/messages.d.ts +6 -0
  227. package/dist/types/intl/weekend.d.ts +12 -0
  228. package/dist/types/layout/AppWorkspace.d.ts +48 -8
  229. package/dist/types/layout/app-host-width.d.ts +6 -0
  230. package/dist/types/layout/app-workspace-width.d.ts +13 -0
  231. package/dist/types/layout/index.d.ts +3 -2
  232. package/dist/types/surfaces/Placeholder.d.ts +2 -1
  233. package/map-glyphs/IBM Plex Sans Medium/0-255.pbf +0 -0
  234. package/map-glyphs/IBM Plex Sans Medium/1024-1279.pbf +0 -0
  235. package/map-glyphs/IBM Plex Sans Medium/256-511.pbf +0 -0
  236. package/map-glyphs/IBM Plex Sans Medium/512-767.pbf +0 -0
  237. package/map-glyphs/IBM Plex Sans Medium/768-1023.pbf +0 -0
  238. package/map-glyphs/IBM Plex Sans Medium/7680-7935.pbf +0 -0
  239. package/map-glyphs/IBM Plex Sans Medium/8192-8447.pbf +0 -0
  240. package/map-glyphs/IBM Plex Sans Medium/8448-8703.pbf +0 -0
  241. package/map-glyphs/IBM Plex Sans Medium/8704-8959.pbf +0 -0
  242. package/map-glyphs/OFL.txt +93 -0
  243. package/package.json +11 -6
@@ -0,0 +1,395 @@
1
+ import { template as _$template } from "solid-js/web";
2
+ import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
+ import { mergeProps as _$mergeProps } from "solid-js/web";
4
+ import { className as _$className } from "solid-js/web";
5
+ import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
6
+ import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
7
+ import { memo as _$memo } from "solid-js/web";
8
+ import { setAttribute as _$setAttribute } from "solid-js/web";
9
+ import { style as _$style } from "solid-js/web";
10
+ import { effect as _$effect } from "solid-js/web";
11
+ import { getNextElement as _$getNextElement } from "solid-js/web";
12
+ import { getNextMarker as _$getNextMarker } from "solid-js/web";
13
+ import { insert as _$insert } from "solid-js/web";
14
+ import { createComponent as _$createComponent } from "solid-js/web";
15
+ var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-map-view__fit><svg class=k2b-map-view__geometry preserveAspectRatio=none overflow=visible aria-hidden=true><!$><!/><!$><!/><!$><!/></svg><!$><!/><div class=k2b-map-view__pins role=group>`),
16
+ _tmpl$2 = /*#__PURE__*/_$template(`<svg><path class=k2b-map-view__area vector-effect=non-scaling-stroke></svg>`, false, true, false),
17
+ _tmpl$3 = /*#__PURE__*/_$template(`<svg><path class=k2b-map-view__casing vector-effect=non-scaling-stroke></svg>`, false, true, false),
18
+ _tmpl$4 = /*#__PURE__*/_$template(`<svg><g class=k2b-map-view__line><!$><!/><path class=k2b-map-view__stroke vector-effect=non-scaling-stroke></svg>`, false, true, false),
19
+ _tmpl$5 = /*#__PURE__*/_$template(`<svg><circle class=k2b-map-view__accuracy vector-effect=non-scaling-stroke></svg>`, false, true, false),
20
+ _tmpl$6 = /*#__PURE__*/_$template(`<span class=k2b-map-view__me role=img>`),
21
+ _tmpl$7 = /*#__PURE__*/_$template(`<span class=k2b-map-view__pin role=img><span aria-hidden=true>`),
22
+ _tmpl$8 = /*#__PURE__*/_$template(`<button type=button class=k2b-map-view__pin><span aria-hidden=true>`),
23
+ _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-map-view__scale><span></span><div>`),
24
+ _tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-map-view__foot-row><!$><!/><div class=k2b-map-view__attribution>`),
25
+ _tmpl$1 = /*#__PURE__*/_$template(`<div data-state=static role=region><span class=k2b-sr-only></span><!$><!/><div class=k2b-map-view__foot>`);
26
+ import { createMemo, For, Show } from "solid-js";
27
+ import { DEFAULT_PADDING, EARTH_CIRCUMFERENCE, isStop, linePoints, mapFrame, pinHitRadii, pinOffsets, projectPoint, scaleBar, sortMarkers, unprojectPoint } from "./map-view-geometry";
28
+ import { useMapViewMessages } from "./map-view-messages";
29
+ const S = 1e6;
30
+ export const mapNumber = value => String(Number(value.toFixed(6)));
31
+ export const selectedMarker = (markers, selectedId) => selectedId !== undefined ? markers.find(marker => marker.id === selectedId) : markers.find(marker => marker.selected);
32
+
33
+ /** The CSS form of fitCamera's width rule, so the server lays out exactly what MapLibre shows. */
34
+ const fittedWidth = (frame, padding) => `max(min(100% - ${2 * padding}px, ${frame.referenceWidth}px), ${frame.minWidth}px)`;
35
+ export function frameStyle(frame, padding) {
36
+ return {
37
+ left: "50%",
38
+ top: "50%",
39
+ width: fittedWidth(frame, padding),
40
+ "aspect-ratio": `${frame.spanX} / ${frame.spanY}`,
41
+ transform: "translate(-50%, -50%)"
42
+ };
43
+ }
44
+ const pointInFrame = (point, frame) => {
45
+ const p = projectPoint(point);
46
+ return {
47
+ x: (p.x - frame.minX) / frame.spanX,
48
+ y: (p.y - frame.minY) / frame.spanY
49
+ };
50
+ };
51
+ const positionStyle = (point, frame) => {
52
+ const p = pointInFrame(point, frame);
53
+ return {
54
+ left: `${mapNumber(p.x * 100)}%`,
55
+ top: `${mapNumber(p.y * 100)}%`
56
+ };
57
+ };
58
+ const path = (points, frame, closed = false) => points.map((point, index) => {
59
+ const p = projectPoint(point);
60
+ return `${index ? "L" : "M"}${mapNumber((p.x - frame.minX) * S)} ${mapNumber((p.y - frame.minY) * S)}`;
61
+ }).join(" ") + (closed && points.length ? " Z" : "");
62
+ export function MapGeometry(props) {
63
+ const messages = useMapViewMessages();
64
+ const markers = createMemo(() => sortMarkers(props.markers ?? []));
65
+ const markerIds = createMemo(() => markers().map(marker => marker.id));
66
+ const markersById = createMemo(() => new Map(markers().map(marker => [marker.id, marker])));
67
+ const offsets = createMemo(() => pinOffsets(markers(), props.frame, props.zoomFactor, props.ownLocation?.point));
68
+ const hitRadii = createMemo(() => pinHitRadii(markers(), props.frame, offsets(), props.zoomFactor));
69
+ // Input order decides the fallback selection, as in MapView; sorting is only for drawing and keys.
70
+ const selected = createMemo(() => selectedMarker(props.markers ?? [], props.selectedId));
71
+ const keydown = (event, id) => {
72
+ const index = markerIds().indexOf(id);
73
+ let next;
74
+ switch (event.key) {
75
+ case "ArrowRight":
76
+ case "ArrowDown":
77
+ next = (index + 1) % markers().length;
78
+ break;
79
+ case "ArrowLeft":
80
+ case "ArrowUp":
81
+ next = (index + markers().length - 1) % markers().length;
82
+ break;
83
+ case "Home":
84
+ next = 0;
85
+ break;
86
+ case "End":
87
+ next = markers().length - 1;
88
+ break;
89
+ default:
90
+ return;
91
+ }
92
+ event.preventDefault();
93
+ event.stopPropagation();
94
+ const target = markers()[next];
95
+ if (target) {
96
+ event.currentTarget.parentElement?.querySelectorAll(".k2b-map-view__pin")[next]?.focus({
97
+ preventScroll: true
98
+ });
99
+ props.onSelect?.(target.id);
100
+ }
101
+ };
102
+ return (() => {
103
+ var _el$ = _$getNextElement(_tmpl$),
104
+ _el$2 = _el$.firstChild,
105
+ _el$3 = _el$2.firstChild,
106
+ [_el$4, _co$] = _$getNextMarker(_el$3.nextSibling),
107
+ _el$5 = _el$4.nextSibling,
108
+ [_el$6, _co$2] = _$getNextMarker(_el$5.nextSibling),
109
+ _el$7 = _el$6.nextSibling,
110
+ [_el$8, _co$3] = _$getNextMarker(_el$7.nextSibling),
111
+ _el$0 = _el$2.nextSibling,
112
+ [_el$1, _co$4] = _$getNextMarker(_el$0.nextSibling),
113
+ _el$9 = _el$1.nextSibling;
114
+ _$insert(_el$2, _$createComponent(For, {
115
+ get each() {
116
+ return props.areas;
117
+ },
118
+ children: area => (() => {
119
+ var _el$10 = _$getNextElement(_tmpl$2);
120
+ _$effect(_p$ => {
121
+ var _v$4 = area.tone ?? "accent",
122
+ _v$5 = path(area.polygon, props.frame, true);
123
+ _v$4 !== _p$.e && _$setAttribute(_el$10, "data-tone", _p$.e = _v$4);
124
+ _v$5 !== _p$.t && _$setAttribute(_el$10, "d", _p$.t = _v$5);
125
+ return _p$;
126
+ }, {
127
+ e: undefined,
128
+ t: undefined
129
+ });
130
+ return _el$10;
131
+ })()
132
+ }), _el$4, _co$);
133
+ _$insert(_el$2, _$createComponent(For, {
134
+ get each() {
135
+ return props.lines;
136
+ },
137
+ children: line => (() => {
138
+ var _el$11 = _$getNextElement(_tmpl$4),
139
+ _el$14 = _el$11.firstChild,
140
+ [_el$15, _co$5] = _$getNextMarker(_el$14.nextSibling),
141
+ _el$13 = _el$15.nextSibling;
142
+ _$insert(_el$11, _$createComponent(Show, {
143
+ get when() {
144
+ return !line.tone || line.tone === "accent" || line.tone === "preview";
145
+ },
146
+ get children() {
147
+ var _el$12 = _$getNextElement(_tmpl$3);
148
+ _$effect(() => _$setAttribute(_el$12, "d", path(linePoints(line), props.frame)));
149
+ return _el$12;
150
+ }
151
+ }), _el$15, _co$5);
152
+ _$effect(_p$ => {
153
+ var _v$6 = line.tone ?? "accent",
154
+ _v$7 = path(linePoints(line), props.frame);
155
+ _v$6 !== _p$.e && _$setAttribute(_el$11, "data-tone", _p$.e = _v$6);
156
+ _v$7 !== _p$.t && _$setAttribute(_el$13, "d", _p$.t = _v$7);
157
+ return _p$;
158
+ }, {
159
+ e: undefined,
160
+ t: undefined
161
+ });
162
+ return _el$11;
163
+ })()
164
+ }), _el$6, _co$2);
165
+ _$insert(_el$2, _$createComponent(Show, {
166
+ get when() {
167
+ return props.ownLocation;
168
+ },
169
+ children: location => {
170
+ const p = () => projectPoint(location().point);
171
+ return (() => {
172
+ var _el$16 = _$getNextElement(_tmpl$5);
173
+ _$effect(_p$ => {
174
+ var _v$8 = mapNumber((p().x - props.frame.minX) * S),
175
+ _v$9 = mapNumber((p().y - props.frame.minY) * S),
176
+ _v$0 = mapNumber((location().accuracyMeters ?? 0) / (EARTH_CIRCUMFERENCE * Math.cos(location().point.lat * Math.PI / 180)) * S);
177
+ _v$8 !== _p$.e && _$setAttribute(_el$16, "cx", _p$.e = _v$8);
178
+ _v$9 !== _p$.t && _$setAttribute(_el$16, "cy", _p$.t = _v$9);
179
+ _v$0 !== _p$.a && _$setAttribute(_el$16, "r", _p$.a = _v$0);
180
+ return _p$;
181
+ }, {
182
+ e: undefined,
183
+ t: undefined,
184
+ a: undefined
185
+ });
186
+ return _el$16;
187
+ })();
188
+ }
189
+ }), _el$8, _co$3);
190
+ _$insert(_el$, _$createComponent(Show, {
191
+ get when() {
192
+ return props.ownLocation;
193
+ },
194
+ children: location => (() => {
195
+ var _el$17 = _$getNextElement(_tmpl$6);
196
+ _$effect(_p$ => {
197
+ var _v$1 = messages().ownLocation,
198
+ _v$10 = positionStyle(location().point, props.frame);
199
+ _v$1 !== _p$.e && _$setAttribute(_el$17, "aria-label", _p$.e = _v$1);
200
+ _p$.t = _$style(_el$17, _v$10, _p$.t);
201
+ return _p$;
202
+ }, {
203
+ e: undefined,
204
+ t: undefined
205
+ });
206
+ return _el$17;
207
+ })()
208
+ }), _el$1, _co$4);
209
+ _$insert(_el$9, _$createComponent(For, {
210
+ get each() {
211
+ return markerIds();
212
+ },
213
+ children: id => {
214
+ const marker = () => markersById().get(id);
215
+ const name = () => marker().mark === undefined ? marker().label : `${marker().mark} ${marker().label}`;
216
+ const style = () => ({
217
+ ...positionStyle(marker().point, props.frame),
218
+ "--k2b-map-pin-dx": `${mapNumber(offsets().get(marker().id)?.dx ?? 0)}px`,
219
+ "--k2b-map-pin-dy": `${mapNumber(offsets().get(marker().id)?.dy ?? 0)}px`,
220
+ "--k2b-map-pin-hit": `${mapNumber(hitRadii().get(marker().id) ?? 22)}px`
221
+ });
222
+ if (!props.interactive) return (() => {
223
+ var _el$18 = _$getNextElement(_tmpl$7),
224
+ _el$19 = _el$18.firstChild;
225
+ _$insert(_el$19, () => marker().mark);
226
+ _$effect(_p$ => {
227
+ var _v$11 = marker().id,
228
+ _v$12 = marker().tone ?? "accent",
229
+ _v$13 = isStop(marker()) || undefined,
230
+ _v$14 = marker().mark === undefined || undefined,
231
+ _v$15 = selected()?.id === marker().id || undefined,
232
+ _v$16 = style(),
233
+ _v$17 = name();
234
+ _v$11 !== _p$.e && _$setAttribute(_el$18, "data-id", _p$.e = _v$11);
235
+ _v$12 !== _p$.t && _$setAttribute(_el$18, "data-tone", _p$.t = _v$12);
236
+ _v$13 !== _p$.a && _$setAttribute(_el$18, "data-stop", _p$.a = _v$13);
237
+ _v$14 !== _p$.o && _$setAttribute(_el$18, "data-drop", _p$.o = _v$14);
238
+ _v$15 !== _p$.i && _$setAttribute(_el$18, "data-selected", _p$.i = _v$15);
239
+ _p$.n = _$style(_el$18, _v$16, _p$.n);
240
+ _v$17 !== _p$.s && _$setAttribute(_el$18, "aria-label", _p$.s = _v$17);
241
+ return _p$;
242
+ }, {
243
+ e: undefined,
244
+ t: undefined,
245
+ a: undefined,
246
+ o: undefined,
247
+ i: undefined,
248
+ n: undefined,
249
+ s: undefined
250
+ });
251
+ return _el$18;
252
+ })();
253
+ return (() => {
254
+ var _el$20 = _$getNextElement(_tmpl$8),
255
+ _el$21 = _el$20.firstChild;
256
+ _el$20.$$click = () => props.onSelect?.(marker().id);
257
+ _el$20.$$keydown = event => keydown(event, id);
258
+ _$insert(_el$21, () => marker().mark);
259
+ _$effect(_p$ => {
260
+ var _v$18 = marker().id,
261
+ _v$19 = marker().tone ?? "accent",
262
+ _v$20 = isStop(marker()) || undefined,
263
+ _v$21 = marker().mark === undefined || undefined,
264
+ _v$22 = style(),
265
+ _v$23 = name(),
266
+ _v$24 = selected()?.id === marker().id,
267
+ _v$25 = (selected() ?? markers()[0])?.id === marker().id ? 0 : -1;
268
+ _v$18 !== _p$.e && _$setAttribute(_el$20, "data-id", _p$.e = _v$18);
269
+ _v$19 !== _p$.t && _$setAttribute(_el$20, "data-tone", _p$.t = _v$19);
270
+ _v$20 !== _p$.a && _$setAttribute(_el$20, "data-stop", _p$.a = _v$20);
271
+ _v$21 !== _p$.o && _$setAttribute(_el$20, "data-drop", _p$.o = _v$21);
272
+ _p$.i = _$style(_el$20, _v$22, _p$.i);
273
+ _v$23 !== _p$.n && _$setAttribute(_el$20, "aria-label", _p$.n = _v$23);
274
+ _v$24 !== _p$.s && _$setAttribute(_el$20, "aria-pressed", _p$.s = _v$24);
275
+ _v$25 !== _p$.h && _$setAttribute(_el$20, "tabindex", _p$.h = _v$25);
276
+ return _p$;
277
+ }, {
278
+ e: undefined,
279
+ t: undefined,
280
+ a: undefined,
281
+ o: undefined,
282
+ i: undefined,
283
+ n: undefined,
284
+ s: undefined,
285
+ h: undefined
286
+ });
287
+ _$runHydrationEvents();
288
+ return _el$20;
289
+ })();
290
+ }
291
+ }));
292
+ _$effect(_p$ => {
293
+ var _v$ = props.boxStyle ?? frameStyle(props.frame, props.padding ?? DEFAULT_PADDING),
294
+ _v$2 = `0 0 ${mapNumber(props.frame.spanX * S)} ${mapNumber(props.frame.spanY * S)}`,
295
+ _v$3 = messages().pins;
296
+ _p$.e = _$style(_el$, _v$, _p$.e);
297
+ _v$2 !== _p$.t && _$setAttribute(_el$2, "viewBox", _p$.t = _v$2);
298
+ _v$3 !== _p$.a && _$setAttribute(_el$9, "aria-label", _p$.a = _v$3);
299
+ return _p$;
300
+ }, {
301
+ e: undefined,
302
+ t: undefined,
303
+ a: undefined
304
+ });
305
+ return _el$;
306
+ })();
307
+ }
308
+ export function referenceScale(frame, padding) {
309
+ const center = unprojectPoint(frame.minX + frame.spanX / 2, frame.minY + frame.spanY / 2);
310
+ const spanMeters = frame.spanX * EARTH_CIRCUMFERENCE * Math.cos(center.lat * Math.PI / 180);
311
+ const bar = scaleBar(spanMeters / frame.referenceWidth);
312
+ return {
313
+ label: bar.label,
314
+ width: `calc(${fittedWidth(frame, padding)} * ${bar.meters / spanMeters})`
315
+ };
316
+ }
317
+ export function MapScaleBar(props) {
318
+ return (() => {
319
+ var _el$22 = _$getNextElement(_tmpl$9),
320
+ _el$23 = _el$22.firstChild;
321
+ _$insert(_el$23, () => props.scale.label);
322
+ _$effect(_$p => _$setStyleProperty(_el$22, "width", props.scale.width));
323
+ return _el$22;
324
+ })();
325
+ }
326
+ /** The scale bar and the attribution share the bottom row, so a long attribution wraps before it covers the scale. */
327
+ export function MapFootRow(props) {
328
+ return (() => {
329
+ var _el$24 = _$getNextElement(_tmpl$0),
330
+ _el$26 = _el$24.firstChild,
331
+ [_el$27, _co$6] = _$getNextMarker(_el$26.nextSibling),
332
+ _el$25 = _el$27.nextSibling;
333
+ _$insert(_el$24, _$createComponent(Show, {
334
+ get when() {
335
+ return props.scale;
336
+ },
337
+ children: scale => _$createComponent(MapScaleBar, {
338
+ get scale() {
339
+ return scale();
340
+ }
341
+ })
342
+ }), _el$27, _co$6);
343
+ _$insert(_el$25, () => props.children);
344
+ return _el$24;
345
+ })();
346
+ }
347
+ /** Geometry without a browser, a canvas, or a network dependency; suitable for server rendering and PDF output. */
348
+ export function MapViewFrame(props) {
349
+ const messages = useMapViewMessages();
350
+ const frame = createMemo(() => mapFrame(props, props.height, props.padding ?? DEFAULT_PADDING));
351
+ return (() => {
352
+ var _el$28 = _$getNextElement(_tmpl$1),
353
+ _el$29 = _el$28.firstChild,
354
+ _el$31 = _el$29.nextSibling,
355
+ [_el$32, _co$7] = _$getNextMarker(_el$31.nextSibling),
356
+ _el$30 = _el$32.nextSibling;
357
+ _$insert(_el$29, () => messages().summary({
358
+ count: props.markers?.length ?? 0
359
+ }));
360
+ _$insert(_el$28, _$createComponent(Show, {
361
+ get when() {
362
+ return frame();
363
+ },
364
+ children: value => _$createComponent(MapGeometry, _$mergeProps(props, {
365
+ get frame() {
366
+ return value();
367
+ }
368
+ }))
369
+ }), _el$32, _co$7);
370
+ _$insert(_el$30, _$createComponent(MapFootRow, {
371
+ get scale() {
372
+ return _$memo(() => !!frame())() ? referenceScale(frame(), props.padding ?? DEFAULT_PADDING) : undefined;
373
+ },
374
+ get children() {
375
+ return props.attribution;
376
+ }
377
+ }));
378
+ _$effect(_p$ => {
379
+ var _v$26 = `k2b-map-view${props.class ? ` ${props.class}` : ""}`,
380
+ _v$27 = `${props.height}px`,
381
+ _v$28 = messages().mapLabel;
382
+ _v$26 !== _p$.e && _$className(_el$28, _p$.e = _v$26);
383
+ _v$27 !== _p$.t && _$setStyleProperty(_el$28, "height", _p$.t = _v$27);
384
+ _v$28 !== _p$.a && _$setAttribute(_el$28, "aria-label", _p$.a = _v$28);
385
+ return _p$;
386
+ }, {
387
+ e: undefined,
388
+ t: undefined,
389
+ a: undefined
390
+ });
391
+ return _el$28;
392
+ })();
393
+ }
394
+ _$delegateEvents(["keydown", "click"]);
395
+ //# sourceMappingURL=MapViewFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/MapViewFrame.tsx"],"sourcesContent":["import { createMemo, For, type JSX, Show } from \"solid-js\";\nimport {\n DEFAULT_PADDING,\n EARTH_CIRCUMFERENCE,\n isStop,\n linePoints,\n type MapFrame,\n mapFrame,\n pinHitRadii,\n pinOffsets,\n projectPoint,\n scaleBar,\n sortMarkers,\n unprojectPoint,\n} from \"./map-view-geometry\";\nimport { useMapViewMessages } from \"./map-view-messages\";\nimport type { MapViewFrameProps, MapViewMarker, MapViewPoint } from \"./map-view-types\";\n\nexport type { MapViewFrameProps } from \"./map-view-types\";\n\nconst S = 1e6;\nexport const mapNumber = (value: number): string => String(Number(value.toFixed(6)));\nexport const selectedMarker = (markers: MapViewMarker[], selectedId?: string): MapViewMarker | undefined =>\n selectedId !== undefined ? markers.find((marker) => marker.id === selectedId) : markers.find((marker) => marker.selected);\n\n/** The CSS form of fitCamera's width rule, so the server lays out exactly what MapLibre shows. */\nconst fittedWidth = (frame: MapFrame, padding: number): string =>\n `max(min(100% - ${2 * padding}px, ${frame.referenceWidth}px), ${frame.minWidth}px)`;\n\nexport function frameStyle(frame: MapFrame, padding: number): JSX.CSSProperties {\n return {\n left: \"50%\",\n top: \"50%\",\n width: fittedWidth(frame, padding),\n \"aspect-ratio\": `${frame.spanX} / ${frame.spanY}`,\n transform: \"translate(-50%, -50%)\",\n };\n}\nconst pointInFrame = (point: MapViewPoint, frame: MapFrame) => {\n const p = projectPoint(point);\n return { x: (p.x - frame.minX) / frame.spanX, y: (p.y - frame.minY) / frame.spanY };\n};\nconst positionStyle = (point: MapViewPoint, frame: MapFrame): JSX.CSSProperties => {\n const p = pointInFrame(point, frame);\n return { left: `${mapNumber(p.x * 100)}%`, top: `${mapNumber(p.y * 100)}%` };\n};\nconst path = (points: MapViewPoint[], frame: MapFrame, closed = false): string =>\n points\n .map((point, index) => {\n const p = projectPoint(point);\n return `${index ? \"L\" : \"M\"}${mapNumber((p.x - frame.minX) * S)} ${mapNumber((p.y - frame.minY) * S)}`;\n })\n .join(\" \") + (closed && points.length ? \" Z\" : \"\");\n\nexport function MapGeometry(\n props: MapViewFrameProps & {\n frame: MapFrame;\n boxStyle?: JSX.CSSProperties;\n onSelect?: (id: string) => void;\n /** Pins are buttons in MapView; the standalone frame draws them as labelled images, never focusable. */\n interactive?: boolean;\n /** 2^(live zoom - fitted zoom), so pin separation follows the person's zoom; 1 until then. */\n zoomFactor?: number;\n },\n): JSX.Element {\n const messages = useMapViewMessages();\n const markers = createMemo(() => sortMarkers(props.markers ?? []));\n const markerIds = createMemo(() => markers().map((marker) => marker.id));\n const markersById = createMemo(() => new Map(markers().map((marker) => [marker.id, marker])));\n const offsets = createMemo(() => pinOffsets(markers(), props.frame, props.zoomFactor, props.ownLocation?.point));\n const hitRadii = createMemo(() => pinHitRadii(markers(), props.frame, offsets(), props.zoomFactor));\n // Input order decides the fallback selection, as in MapView; sorting is only for drawing and keys.\n const selected = createMemo(() => selectedMarker(props.markers ?? [], props.selectedId));\n const keydown = (event: KeyboardEvent & { currentTarget: HTMLButtonElement }, id: string) => {\n const index = markerIds().indexOf(id);\n let next: number;\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\":\n next = (index + 1) % markers().length;\n break;\n case \"ArrowLeft\":\n case \"ArrowUp\":\n next = (index + markers().length - 1) % markers().length;\n break;\n case \"Home\":\n next = 0;\n break;\n case \"End\":\n next = markers().length - 1;\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const target = markers()[next];\n if (target) {\n event.currentTarget.parentElement?.querySelectorAll<HTMLButtonElement>(\".k2b-map-view__pin\")[next]?.focus({ preventScroll: true });\n props.onSelect?.(target.id);\n }\n };\n return (\n <div class=\"k2b-map-view__fit\" style={props.boxStyle ?? frameStyle(props.frame, props.padding ?? DEFAULT_PADDING)}>\n <svg\n class=\"k2b-map-view__geometry\"\n viewBox={`0 0 ${mapNumber(props.frame.spanX * S)} ${mapNumber(props.frame.spanY * S)}`}\n preserveAspectRatio=\"none\"\n overflow=\"visible\"\n aria-hidden=\"true\"\n >\n <For each={props.areas}>\n {(area) => (\n <path\n class=\"k2b-map-view__area\"\n data-tone={area.tone ?? \"accent\"}\n d={path(area.polygon, props.frame, true)}\n vector-effect=\"non-scaling-stroke\"\n />\n )}\n </For>\n <For each={props.lines}>\n {(line) => (\n <g class=\"k2b-map-view__line\" data-tone={line.tone ?? \"accent\"}>\n <Show when={!line.tone || line.tone === \"accent\" || line.tone === \"preview\"}>\n <path class=\"k2b-map-view__casing\" d={path(linePoints(line), props.frame)} vector-effect=\"non-scaling-stroke\" />\n </Show>\n <path class=\"k2b-map-view__stroke\" d={path(linePoints(line), props.frame)} vector-effect=\"non-scaling-stroke\" />\n </g>\n )}\n </For>\n <Show when={props.ownLocation}>\n {(location) => {\n const p = () => projectPoint(location().point);\n return (\n <circle\n class=\"k2b-map-view__accuracy\"\n cx={mapNumber((p().x - props.frame.minX) * S)}\n cy={mapNumber((p().y - props.frame.minY) * S)}\n r={mapNumber(\n ((location().accuracyMeters ?? 0) / (EARTH_CIRCUMFERENCE * Math.cos((location().point.lat * Math.PI) / 180))) * S,\n )}\n vector-effect=\"non-scaling-stroke\"\n />\n );\n }}\n </Show>\n </svg>\n <Show when={props.ownLocation}>\n {(location) => (\n <span\n class=\"k2b-map-view__me\"\n role=\"img\"\n aria-label={messages().ownLocation}\n style={positionStyle(location().point, props.frame)}\n />\n )}\n </Show>\n <div class=\"k2b-map-view__pins\" role=\"group\" aria-label={messages().pins}>\n <For each={markerIds()}>\n {(id) => {\n const marker = () => markersById().get(id)!;\n const name = () => (marker().mark === undefined ? marker().label : `${marker().mark} ${marker().label}`);\n const style = () => ({\n ...positionStyle(marker().point, props.frame),\n \"--k2b-map-pin-dx\": `${mapNumber(offsets().get(marker().id)?.dx ?? 0)}px`,\n \"--k2b-map-pin-dy\": `${mapNumber(offsets().get(marker().id)?.dy ?? 0)}px`,\n \"--k2b-map-pin-hit\": `${mapNumber(hitRadii().get(marker().id) ?? 22)}px`,\n });\n if (!props.interactive)\n return (\n <span\n class=\"k2b-map-view__pin\"\n data-id={marker().id}\n data-tone={marker().tone ?? \"accent\"}\n data-stop={isStop(marker()) || undefined}\n data-drop={marker().mark === undefined || undefined}\n data-selected={selected()?.id === marker().id || undefined}\n style={style()}\n role=\"img\"\n aria-label={name()}\n >\n <span aria-hidden=\"true\">{marker().mark}</span>\n </span>\n );\n return (\n <button\n type=\"button\"\n class=\"k2b-map-view__pin\"\n data-id={marker().id}\n data-tone={marker().tone ?? \"accent\"}\n data-stop={isStop(marker()) || undefined}\n data-drop={marker().mark === undefined || undefined}\n style={style()}\n aria-label={name()}\n aria-pressed={selected()?.id === marker().id}\n tabIndex={(selected() ?? markers()[0])?.id === marker().id ? 0 : -1}\n onKeyDown={(event) => keydown(event, id)}\n onClick={() => props.onSelect?.(marker().id)}\n >\n <span aria-hidden=\"true\">{marker().mark}</span>\n </button>\n );\n }}\n </For>\n </div>\n </div>\n );\n}\nexport type MapScale = { label: string; width: string };\nexport function referenceScale(frame: MapFrame, padding: number): MapScale {\n const center = unprojectPoint(frame.minX + frame.spanX / 2, frame.minY + frame.spanY / 2);\n const spanMeters = frame.spanX * EARTH_CIRCUMFERENCE * Math.cos((center.lat * Math.PI) / 180);\n const bar = scaleBar(spanMeters / frame.referenceWidth);\n return { label: bar.label, width: `calc(${fittedWidth(frame, padding)} * ${bar.meters / spanMeters})` };\n}\nexport function MapScaleBar(props: { scale: MapScale }): JSX.Element {\n return (\n <div class=\"k2b-map-view__scale\" style={{ width: props.scale.width }}>\n <span>{props.scale.label}</span>\n <div />\n </div>\n );\n}\n/** The scale bar and the attribution share the bottom row, so a long attribution wraps before it covers the scale. */\nexport function MapFootRow(props: { scale?: MapScale; children?: JSX.Element }): JSX.Element {\n return (\n <div class=\"k2b-map-view__foot-row\">\n <Show when={props.scale}>{(scale) => <MapScaleBar scale={scale()} />}</Show>\n <div class=\"k2b-map-view__attribution\">{props.children}</div>\n </div>\n );\n}\n/** Geometry without a browser, a canvas, or a network dependency; suitable for server rendering and PDF output. */\nexport function MapViewFrame(props: MapViewFrameProps): JSX.Element {\n const messages = useMapViewMessages();\n const frame = createMemo(() => mapFrame(props, props.height, props.padding ?? DEFAULT_PADDING));\n return (\n <div\n class={`k2b-map-view${props.class ? ` ${props.class}` : \"\"}`}\n style={{ height: `${props.height}px` }}\n data-state=\"static\"\n role=\"region\"\n aria-label={messages().mapLabel}\n >\n <span class=\"k2b-sr-only\">{messages().summary({ count: props.markers?.length ?? 0 })}</span>\n <Show when={frame()}>{(value) => <MapGeometry {...props} frame={value()} />}</Show>\n <div class=\"k2b-map-view__foot\">\n <MapFootRow scale={frame() ? referenceScale(frame()!, props.padding ?? DEFAULT_PADDING) : undefined}>\n {props.attribution}\n </MapFootRow>\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,12 +6,14 @@ const dataTableMessages = i18n.define({
6
6
  en: {
7
7
  dataTable: "Data table",
8
8
  noColumns: "No columns.",
9
- noRecords: "No records"
9
+ noRecords: "No records",
10
+ loadingRows: "Loading rows"
10
11
  },
11
12
  de: {
12
13
  dataTable: "Datentabelle",
13
14
  noColumns: "Keine Spalten.",
14
- noRecords: "Keine Einträge"
15
+ noRecords: "Keine Einträge",
16
+ loadingRows: "Zeilen werden geladen"
15
17
  }
16
18
  }
17
19
  });
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/data-table-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst dataTableMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n dataTable: \"Data table\",\n noColumns: \"No columns.\",\n noRecords: \"No records\",\n },\n de: {\n dataTable: \"Datentabelle\",\n noColumns: \"Keine Spalten.\",\n noRecords: \"Keine Einträge\",\n },\n },\n});\n\nexport type DataTableMessages = ReturnType<(typeof dataTableMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useDataTableMessages = (): (() => DataTableMessages) => {\n const locale = useLocale();\n return () => dataTableMessages.resolve([locale()]).t;\n};\n\nexport const checkDataTableMessages = () => dataTableMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;EACpC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,aAAa;MACxB,SAAS,EAAE;IACb,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,cAAc;MACzB,SAAS,EAAE,gBAAgB;MAC3B,SAAS,EAAE;IACb;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,oBAAoB,GAAG,MAAiC;EACnE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,OAAO,MAAM,sBAAsB,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/data-table-messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"../intl/locale\";\n\nconst dataTableMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n dataTable: \"Data table\",\n noColumns: \"No columns.\",\n noRecords: \"No records\",\n loadingRows: \"Loading rows\",\n },\n de: {\n dataTable: \"Datentabelle\",\n noColumns: \"Keine Spalten.\",\n noRecords: \"Keine Einträge\",\n loadingRows: \"Zeilen werden geladen\",\n },\n },\n});\n\nexport type DataTableMessages = ReturnType<(typeof dataTableMessages)[\"resolve\"]>[\"t\"];\n\n/** Resolved from the inherited render locale. */\nexport const useDataTableMessages = (): (() => DataTableMessages) => {\n const locale = useLocale();\n return () => dataTableMessages.resolve([locale()]).t;\n};\n\nexport const checkDataTableMessages = () => dataTableMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,gBAAgB;AAE1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;EACpC,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,aAAa;MACxB,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE;IACf,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,cAAc;MACzB,SAAS,EAAE,gBAAgB;MAC3B,SAAS,EAAE,gBAAgB;MAC3B,WAAW,EAAE;IACf;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,oBAAoB,GAAG,MAAiC;EACnE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,OAAO,MAAM,sBAAsB,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -20,8 +20,13 @@ export { Kbd } from "./Kbd";
20
20
  export { LabelChip } from "./LabelChip";
21
21
  export { default as Lightbox } from "./Lightbox";
22
22
  export { default as LogEntriesTable } from "./LogEntriesTable";
23
+ export { MapAttribution } from "./MapAttribution";
24
+ export { MapView } from "./MapView";
25
+ export { MapViewFrame } from "./MapViewFrame";
23
26
  export { default as MarkdownView, renderSafeMarkdown } from "./MarkdownView";
24
27
  export { MessageRow, MessageSystemRow, startsMessageGroup } from "./MessageRow";
28
+ export { mapPalette } from "./map-palette";
29
+ export { mapAttribution, mapStyle } from "./map-style";
25
30
  export { MARKDOWN_CALLOUT_CLASSES, MARKDOWN_CALLOUT_ICON_ATTRIBUTES, markdownInfoBlocks, renderMarkdownInfoBlock, scanMarkdownInfoBlock } from "./markdown-info-blocks";
26
31
  export { markdownLinkReference, markdownReferenceIcon, markdownReferenceType, markdownReferenceTypeLabel, markStandaloneLinks, renderMarkdownLink } from "./markdown-links";
27
32
  export { Pagination } from "./Pagination";
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["content/index.ts"],"sourcesContent":["export type {\n CalendarAttendee,\n CalendarCommand,\n CalendarController,\n CalendarCustomView,\n CalendarDayBadge,\n CalendarEvent,\n CalendarEventColor,\n CalendarEventRenderContext,\n CalendarEventTimeChange,\n CalendarExternalDrag,\n CalendarLabels,\n CalendarProps,\n CalendarQuickCreateControls,\n CalendarRange,\n CalendarRecurrence,\n CalendarResource,\n CalendarSelectionControls,\n CalendarView,\n} from \"./Calendar\";\nexport { default as Calendar } from \"./Calendar\";\n\nexport type { ChartKind, ChartLabels, ChartProps, ChartRenderOptions } from \"./Chart\";\nexport { default as Chart } from \"./Chart\";\nexport type { ChartExplorerColumn, ChartExplorerProps, ChartLegendEntry } from \"./ChartExplorer\";\nexport { ChartExplorer } from \"./ChartExplorer\";\nexport type { ChartExplorerControlsProps } from \"./ChartExplorerControls\";\nexport { ChartExplorerControls } from \"./ChartExplorerControls\";\nexport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nexport { ChartSnapshotView } from \"./ChartSnapshotView\";\nexport type { CodeDisplayLanguage, CodeDisplayProps } from \"./CodeDisplay\";\nexport { default as CodeDisplay } from \"./CodeDisplay\";\nexport { type ChartCursor, createChartCursor } from \"./chart-cursor\";\nexport type {\n ChartExplorerCharts,\n ChartExplorerController,\n ChartExplorerData,\n ChartExplorerOptions,\n ChartExplorerRequest,\n ChartExplorerRow,\n ChartExplorerSnapshot,\n} from \"./chart-explorer\";\nexport { createChartExplorer } from \"./chart-explorer\";\nexport type { ChartDatumRef, ChartSelection, ChartTooltip, ChartTooltipFormatter } from \"./chart-inspection-core\";\nexport type { ChartSnapshot } from \"./chart-snapshot\";\nexport { prepareChartSnapshot } from \"./chart-snapshot\";\nexport type {\n StateTimelineChartOptions,\n StateTimelineDomain,\n StateTimelineInterval,\n StateTimelineRow,\n StateTimelineState,\n} from \"./chart-state-timeline\";\nexport { type CollectionSelection, createCollectionSelection, type SelectionModifiers } from \"./collection-selection\";\nexport type {\n DataTableColumn,\n DataTableControlsProps,\n DataTableFooter,\n DataTableHeaderProps,\n DataTablePanelFooterProps,\n DataTablePanelProps,\n DataTableProps,\n DataTableRenderCell,\n DataTableRenderHeader,\n DataTableSort,\n} from \"./DataTable\";\nexport { default as DataTable } from \"./DataTable\";\nexport type { DocCodeHighlighter, DocCodeProps, DocConcept, DocNoteVariant, DocRow } from \"./Docs\";\nexport { DocCode, DocConceptGrid, DocInlineCode, DocLead, DocNote, DocPage, DocRows, DocSection } from \"./Docs\";\nexport { FileBrowserPanel, type FileBrowserPanelProps, type FileSource, openFileBrowser } from \"./FileBrowser\";\nexport { FileGrid, type FileGridProps } from \"./FileGrid\";\nexport { default as FileTree, type FileTreeActions, type FileTreeEntry, type FileTreeProps } from \"./FileTree\";\nexport { type FileType, FileTypeIcon, type FileTypeIconProps, fileTypeOf } from \"./FileTypeIcon\";\nexport {\n canPreviewFile,\n default as FileView,\n type FileViewContent,\n type FileViewFile,\n type FileViewPreviewKind,\n type FileViewProps,\n type FileViewRenderer,\n type FileViewRendererProps,\n formatFileViewSize,\n getFileViewPreviewKind,\n} from \"./FileView\";\nexport type { KbdProps } from \"./Kbd\";\nexport { Kbd } from \"./Kbd\";\nexport type { LabelChipProps } from \"./LabelChip\";\nexport { LabelChip } from \"./LabelChip\";\nexport type { LightboxAction, LightboxImage } from \"./Lightbox\";\nexport { default as Lightbox } from \"./Lightbox\";\nexport type { LogTableEntry } from \"./LogEntriesTable\";\nexport { default as LogEntriesTable } from \"./LogEntriesTable\";\nexport { default as MarkdownView, type MarkdownRenderOptions, type MarkdownViewProps, renderSafeMarkdown } from \"./MarkdownView\";\nexport type {\n MessageGroupEntry,\n MessageRowAction,\n MessageRowAttachment,\n MessageRowAuthor,\n MessageRowFile,\n MessageRowMedia,\n MessageRowProgress,\n MessageRowProps,\n MessageRowQuote,\n MessageRowReaction,\n MessageRowStatus,\n MessageRowThread,\n MessageSystemRowProps,\n} from \"./MessageRow\";\nexport { MessageRow, MessageSystemRow, startsMessageGroup } from \"./MessageRow\";\nexport {\n MARKDOWN_CALLOUT_CLASSES,\n MARKDOWN_CALLOUT_ICON_ATTRIBUTES,\n type MarkdownInfoBlock,\n type MarkdownInfoBlockRenderInput,\n type MarkdownInfoBlockType,\n markdownInfoBlocks,\n renderMarkdownInfoBlock,\n scanMarkdownInfoBlock,\n} from \"./markdown-info-blocks\";\nexport {\n type MarkdownLinkInput,\n type MarkdownReference,\n type MarkdownReferenceKind,\n type MarkdownReferenceType,\n markdownLinkReference,\n markdownReferenceIcon,\n markdownReferenceType,\n markdownReferenceTypeLabel,\n markStandaloneLinks,\n renderMarkdownLink,\n} from \"./markdown-links\";\nexport { Pagination, type PaginationProps } from \"./Pagination\";\nexport type { PdfPreviewProps, PdfPreviewRequest } from \"./PdfPreview\";\nexport { default as PdfPreview } from \"./PdfPreview\";\nexport type { RangeOption, RangePickerProps } from \"./RangePicker\";\nexport { default as RangePicker } from \"./RangePicker\";\nexport { ReactionBar, type ReactionBarItem, type ReactionBarProps } from \"./ReactionBar\";\nexport type {\n ReferenceChipObjectProps,\n ReferenceChipPersonProps,\n ReferenceChipProps,\n ReferenceChipTimeProps,\n} from \"./ReferenceChip\";\nexport { REFERENCE_CHIP_MAX_CHARACTERS, ReferenceChip, truncateMiddle } from \"./ReferenceChip\";\nexport type { StepsProps } from \"./Steps\";\nexport { Steps } from \"./Steps\";\nexport type { StructuredDataPreviewMode, StructuredDataPreviewProps, StructuredDataValue } from \"./StructuredDataPreview\";\nexport { default as StructuredDataPreview, isStructuredDataValue } from \"./StructuredDataPreview\";\nexport type { TimelineColor, TimelineController, TimelineItem, TimelineProps } from \"./Timeline\";\nexport { default as Timeline } from \"./Timeline\";\nexport { VideoPlayer, type VideoPlayerProps } from \"./VideoPlayer\";\nexport type { VirtualFeedController, VirtualFeedProps, VirtualFeedScrollOptions } from \"./VirtualFeed\";\nexport { VirtualFeed } from \"./VirtualFeed\";\nexport type { ZoomPanAction, ZoomPanFullscreen, ZoomPanViewportProps } from \"./ZoomPanViewport\";\nexport { ZoomPanViewport } from \"./ZoomPanViewport\";\n"],"mappings":"AAoBA,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAGhD,SAAS,OAAO,IAAI,KAAK,QAAQ,SAAS;AAE1C,SAAS,aAAa,QAAQ,iBAAiB;AAE/C,SAAS,qBAAqB,QAAQ,yBAAyB;AAC/D,SAAS,mBAAmB,QAAuC,uBAAuB;AAC1F,SAAS,iBAAiB,QAAQ,qBAAqB;AAEvD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAA2B,iBAAiB,QAAQ,gBAAgB;AAUpE,SAAS,mBAAmB,QAAQ,kBAAkB;AAGtD,SAAS,oBAAoB,QAAQ,kBAAkB;AAQvD,SAAmC,yBAAyB,QAAiC,wBAAwB;AAarH,SAAS,OAAO,IAAI,SAAS,QAAQ,aAAa;AAElD,SAAS,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,QAAQ;AAC/G,SAAS,gBAAgB,EAA+C,eAAe,QAAQ,eAAe;AAC9G,SAAS,QAAQ,QAA4B,YAAY;AACzD,SAAS,OAAO,IAAI,QAAQ,QAAsE,YAAY;AAC9G,SAAwB,YAAY,EAA0B,UAAU,QAAQ,gBAAgB;AAChG,SACE,cAAc,EACd,OAAO,IAAI,QAAQ,EAOnB,kBAAkB,EAClB,sBAAsB,QACjB,YAAY;AAEnB,SAAS,GAAG,QAAQ,OAAO;AAE3B,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAEhD,SAAS,OAAO,IAAI,eAAe,QAAQ,mBAAmB;AAC9D,SAAS,OAAO,IAAI,YAAY,EAAsD,kBAAkB,QAAQ,gBAAgB;AAgBhI,SAAS,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,QAAQ,cAAc;AAC/E,SACE,wBAAwB,EACxB,gCAAgC,EAIhC,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,QAChB,wBAAwB;AAC/B,SAKE,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,QACb,kBAAkB;AACzB,SAAS,UAAU,QAA8B,cAAc;AAE/D,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAEpD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAAS,WAAW,QAAqD,eAAe;AAOxF,SAAS,6BAA6B,EAAE,aAAa,EAAE,cAAc,QAAQ,iBAAiB;AAE9F,SAAS,KAAK,QAAQ,SAAS;AAE/B,SAAS,OAAO,IAAI,qBAAqB,EAAE,qBAAqB,QAAQ,yBAAyB;AAEjG,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAChD,SAAS,WAAW,QAA+B,eAAe;AAElE,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,eAAe,QAAQ,mBAAmB","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["content/index.ts"],"sourcesContent":["export type {\n CalendarAttendee,\n CalendarCommand,\n CalendarController,\n CalendarCustomView,\n CalendarDayBadge,\n CalendarEvent,\n CalendarEventColor,\n CalendarEventRenderContext,\n CalendarEventTimeChange,\n CalendarExternalDrag,\n CalendarLabels,\n CalendarProps,\n CalendarQuickCreateControls,\n CalendarRange,\n CalendarRecurrence,\n CalendarResource,\n CalendarSelectionControls,\n CalendarView,\n} from \"./Calendar\";\nexport { default as Calendar } from \"./Calendar\";\n\nexport type { ChartKind, ChartLabels, ChartProps, ChartRenderOptions } from \"./Chart\";\nexport { default as Chart } from \"./Chart\";\nexport type { ChartExplorerColumn, ChartExplorerProps, ChartLegendEntry } from \"./ChartExplorer\";\nexport { ChartExplorer } from \"./ChartExplorer\";\nexport type { ChartExplorerControlsProps } from \"./ChartExplorerControls\";\nexport { ChartExplorerControls } from \"./ChartExplorerControls\";\nexport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nexport { ChartSnapshotView } from \"./ChartSnapshotView\";\nexport type { CodeDisplayLanguage, CodeDisplayProps } from \"./CodeDisplay\";\nexport { default as CodeDisplay } from \"./CodeDisplay\";\nexport { type ChartCursor, createChartCursor } from \"./chart-cursor\";\nexport type {\n ChartExplorerCharts,\n ChartExplorerController,\n ChartExplorerData,\n ChartExplorerOptions,\n ChartExplorerRequest,\n ChartExplorerRow,\n ChartExplorerSnapshot,\n} from \"./chart-explorer\";\nexport { createChartExplorer } from \"./chart-explorer\";\nexport type { ChartDatumRef, ChartSelection, ChartTooltip, ChartTooltipFormatter } from \"./chart-inspection-core\";\nexport type { ChartSnapshot } from \"./chart-snapshot\";\nexport { prepareChartSnapshot } from \"./chart-snapshot\";\nexport type {\n StateTimelineChartOptions,\n StateTimelineDomain,\n StateTimelineInterval,\n StateTimelineRow,\n StateTimelineState,\n} from \"./chart-state-timeline\";\nexport { type CollectionSelection, createCollectionSelection, type SelectionModifiers } from \"./collection-selection\";\nexport type {\n DataTableColumn,\n DataTableControlsProps,\n DataTableFooter,\n DataTableHeaderProps,\n DataTablePanelFooterProps,\n DataTablePanelProps,\n DataTableProps,\n DataTableRenderCell,\n DataTableRenderHeader,\n DataTableSort,\n} from \"./DataTable\";\nexport { default as DataTable } from \"./DataTable\";\nexport type { DocCodeHighlighter, DocCodeProps, DocConcept, DocNoteVariant, DocRow } from \"./Docs\";\nexport { DocCode, DocConceptGrid, DocInlineCode, DocLead, DocNote, DocPage, DocRows, DocSection } from \"./Docs\";\nexport { FileBrowserPanel, type FileBrowserPanelProps, type FileSource, openFileBrowser } from \"./FileBrowser\";\nexport { FileGrid, type FileGridProps } from \"./FileGrid\";\nexport { default as FileTree, type FileTreeActions, type FileTreeEntry, type FileTreeProps } from \"./FileTree\";\nexport { type FileType, FileTypeIcon, type FileTypeIconProps, fileTypeOf } from \"./FileTypeIcon\";\nexport {\n canPreviewFile,\n default as FileView,\n type FileViewContent,\n type FileViewFile,\n type FileViewPreviewKind,\n type FileViewProps,\n type FileViewRenderer,\n type FileViewRendererProps,\n formatFileViewSize,\n getFileViewPreviewKind,\n} from \"./FileView\";\nexport type { KbdProps } from \"./Kbd\";\nexport { Kbd } from \"./Kbd\";\nexport type { LabelChipProps } from \"./LabelChip\";\nexport { LabelChip } from \"./LabelChip\";\nexport type { LightboxAction, LightboxImage } from \"./Lightbox\";\nexport { default as Lightbox } from \"./Lightbox\";\nexport type { LogTableEntry } from \"./LogEntriesTable\";\nexport { default as LogEntriesTable } from \"./LogEntriesTable\";\nexport { MapAttribution } from \"./MapAttribution\";\nexport { MapView } from \"./MapView\";\nexport { MapViewFrame } from \"./MapViewFrame\";\nexport { default as MarkdownView, type MarkdownRenderOptions, type MarkdownViewProps, renderSafeMarkdown } from \"./MarkdownView\";\nexport type {\n MessageGroupEntry,\n MessageRowAction,\n MessageRowAttachment,\n MessageRowAuthor,\n MessageRowFile,\n MessageRowMedia,\n MessageRowProgress,\n MessageRowProps,\n MessageRowQuote,\n MessageRowReaction,\n MessageRowStatus,\n MessageRowThread,\n MessageSystemRowProps,\n} from \"./MessageRow\";\nexport { MessageRow, MessageSystemRow, startsMessageGroup } from \"./MessageRow\";\nexport { type MapPaletteColors, type MapTheme, mapPalette } from \"./map-palette\";\nexport { type MapStyleOptions, mapAttribution, mapStyle } from \"./map-style\";\nexport type {\n MapViewArea,\n MapViewFit,\n MapViewFrameProps,\n MapViewLine,\n MapViewLineTone,\n MapViewMarker,\n MapViewOwnLocation,\n MapViewPoint,\n MapViewProps,\n MapViewStyle,\n MapViewStyleSource,\n MapViewTone,\n} from \"./map-view-types\";\nexport {\n MARKDOWN_CALLOUT_CLASSES,\n MARKDOWN_CALLOUT_ICON_ATTRIBUTES,\n type MarkdownInfoBlock,\n type MarkdownInfoBlockRenderInput,\n type MarkdownInfoBlockType,\n markdownInfoBlocks,\n renderMarkdownInfoBlock,\n scanMarkdownInfoBlock,\n} from \"./markdown-info-blocks\";\nexport {\n type MarkdownLinkInput,\n type MarkdownReference,\n type MarkdownReferenceKind,\n type MarkdownReferenceType,\n markdownLinkReference,\n markdownReferenceIcon,\n markdownReferenceType,\n markdownReferenceTypeLabel,\n markStandaloneLinks,\n renderMarkdownLink,\n} from \"./markdown-links\";\nexport { Pagination, type PaginationProps } from \"./Pagination\";\nexport type { PdfPreviewProps, PdfPreviewRequest } from \"./PdfPreview\";\nexport { default as PdfPreview } from \"./PdfPreview\";\nexport type { RangeOption, RangePickerProps } from \"./RangePicker\";\nexport { default as RangePicker } from \"./RangePicker\";\nexport { ReactionBar, type ReactionBarItem, type ReactionBarProps } from \"./ReactionBar\";\nexport type {\n ReferenceChipObjectProps,\n ReferenceChipPersonProps,\n ReferenceChipProps,\n ReferenceChipTimeProps,\n} from \"./ReferenceChip\";\nexport { REFERENCE_CHIP_MAX_CHARACTERS, ReferenceChip, truncateMiddle } from \"./ReferenceChip\";\nexport type { StepsProps } from \"./Steps\";\nexport { Steps } from \"./Steps\";\nexport type { StructuredDataPreviewMode, StructuredDataPreviewProps, StructuredDataValue } from \"./StructuredDataPreview\";\nexport { default as StructuredDataPreview, isStructuredDataValue } from \"./StructuredDataPreview\";\nexport type { TimelineColor, TimelineController, TimelineItem, TimelineProps } from \"./Timeline\";\nexport { default as Timeline } from \"./Timeline\";\nexport { VideoPlayer, type VideoPlayerProps } from \"./VideoPlayer\";\nexport type { VirtualFeedController, VirtualFeedProps, VirtualFeedScrollOptions } from \"./VirtualFeed\";\nexport { VirtualFeed } from \"./VirtualFeed\";\nexport type { ZoomPanAction, ZoomPanFullscreen, ZoomPanViewportProps } from \"./ZoomPanViewport\";\nexport { ZoomPanViewport } from \"./ZoomPanViewport\";\n"],"mappings":"AAoBA,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAGhD,SAAS,OAAO,IAAI,KAAK,QAAQ,SAAS;AAE1C,SAAS,aAAa,QAAQ,iBAAiB;AAE/C,SAAS,qBAAqB,QAAQ,yBAAyB;AAC/D,SAAS,mBAAmB,QAAuC,uBAAuB;AAC1F,SAAS,iBAAiB,QAAQ,qBAAqB;AAEvD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAA2B,iBAAiB,QAAQ,gBAAgB;AAUpE,SAAS,mBAAmB,QAAQ,kBAAkB;AAGtD,SAAS,oBAAoB,QAAQ,kBAAkB;AAQvD,SAAmC,yBAAyB,QAAiC,wBAAwB;AAarH,SAAS,OAAO,IAAI,SAAS,QAAQ,aAAa;AAElD,SAAS,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,QAAQ,QAAQ;AAC/G,SAAS,gBAAgB,EAA+C,eAAe,QAAQ,eAAe;AAC9G,SAAS,QAAQ,QAA4B,YAAY;AACzD,SAAS,OAAO,IAAI,QAAQ,QAAsE,YAAY;AAC9G,SAAwB,YAAY,EAA0B,UAAU,QAAQ,gBAAgB;AAChG,SACE,cAAc,EACd,OAAO,IAAI,QAAQ,EAOnB,kBAAkB,EAClB,sBAAsB,QACjB,YAAY;AAEnB,SAAS,GAAG,QAAQ,OAAO;AAE3B,SAAS,SAAS,QAAQ,aAAa;AAEvC,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAEhD,SAAS,OAAO,IAAI,eAAe,QAAQ,mBAAmB;AAC9D,SAAS,cAAc,QAAQ,kBAAkB;AACjD,SAAS,OAAO,QAAQ,WAAW;AACnC,SAAS,YAAY,QAAQ,gBAAgB;AAC7C,SAAS,OAAO,IAAI,YAAY,EAAsD,kBAAkB,QAAQ,gBAAgB;AAgBhI,SAAS,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,QAAQ,cAAc;AAC/E,SAA+C,UAAU,QAAQ,eAAe;AAChF,SAA+B,cAAc,EAAE,QAAQ,QAAQ,aAAa;AAe5E,SACE,wBAAwB,EACxB,gCAAgC,EAIhC,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,QAChB,wBAAwB;AAC/B,SAKE,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,QACb,kBAAkB;AACzB,SAAS,UAAU,QAA8B,cAAc;AAE/D,SAAS,OAAO,IAAI,UAAU,QAAQ,cAAc;AAEpD,SAAS,OAAO,IAAI,WAAW,QAAQ,eAAe;AACtD,SAAS,WAAW,QAAqD,eAAe;AAOxF,SAAS,6BAA6B,EAAE,aAAa,EAAE,cAAc,QAAQ,iBAAiB;AAE9F,SAAS,KAAK,QAAQ,SAAS;AAE/B,SAAS,OAAO,IAAI,qBAAqB,EAAE,qBAAqB,QAAQ,yBAAyB;AAEjG,SAAS,OAAO,IAAI,QAAQ,QAAQ,YAAY;AAChD,SAAS,WAAW,QAA+B,eAAe;AAElE,SAAS,WAAW,QAAQ,eAAe;AAE3C,SAAS,eAAe,QAAQ,mBAAmB","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ /** The map image colours. Each key is also the CSS token `--k2b-map-<kebab-key>` on `.k2b-map-view`. */
2
+
3
+ /**
4
+ * Plain data so a server can build the style JSON without CSS. The accent stays with the host's
5
+ * pins and lines; the map image only uses calm land, water, green, and road tones.
6
+ */
7
+ export const mapPalette = {
8
+ light: {
9
+ land: "#f1efe9",
10
+ green: "#e3ecd9",
11
+ water: "#cfe3f3",
12
+ building: "#e8e5dd",
13
+ road: "#ffffff",
14
+ roadCasing: "#dcd8ce",
15
+ motorway: "#f6c76b",
16
+ motorwayCasing: "#d9a443",
17
+ rail: "#c4bfb4",
18
+ boundary: "#aea89c",
19
+ label: "#52525b",
20
+ labelStrong: "#27272a",
21
+ waterLabel: "#3a6383"
22
+ },
23
+ dark: {
24
+ land: "#1a1f26",
25
+ green: "#1c2a22",
26
+ water: "#14283a",
27
+ building: "#20262e",
28
+ road: "#2c333d",
29
+ roadCasing: "#222830",
30
+ motorway: "#5d6470",
31
+ motorwayCasing: "#444a54",
32
+ rail: "#39404a",
33
+ boundary: "#4f5763",
34
+ label: "#a1a1aa",
35
+ labelStrong: "#e4e4e7",
36
+ waterLabel: "#8fb5d3"
37
+ }
38
+ };
39
+ //# sourceMappingURL=map-palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["content/map-palette.ts"],"sourcesContent":["/** The map image colours. Each key is also the CSS token `--k2b-map-<kebab-key>` on `.k2b-map-view`. */\nexport type MapPaletteColors = {\n /** Background land, also behind the server frame before the map image arrives. */\n land: string;\n /** Woods, grass, and city green; large protected areas stay plain land. */\n green: string;\n water: string;\n building: string;\n road: string;\n roadCasing: string;\n motorway: string;\n motorwayCasing: string;\n /** Rail lines and footpaths. */\n rail: string;\n boundary: string;\n /** Streets, suburbs, villages, and states. */\n label: string;\n /** Cities, towns, and countries. */\n labelStrong: string;\n waterLabel: string;\n};\nexport type MapTheme = \"light\" | \"dark\";\n\n/**\n * Plain data so a server can build the style JSON without CSS. The accent stays with the host's\n * pins and lines; the map image only uses calm land, water, green, and road tones.\n */\nexport const mapPalette = {\n light: {\n land: \"#f1efe9\",\n green: \"#e3ecd9\",\n water: \"#cfe3f3\",\n building: \"#e8e5dd\",\n road: \"#ffffff\",\n roadCasing: \"#dcd8ce\",\n motorway: \"#f6c76b\",\n motorwayCasing: \"#d9a443\",\n rail: \"#c4bfb4\",\n boundary: \"#aea89c\",\n label: \"#52525b\",\n labelStrong: \"#27272a\",\n waterLabel: \"#3a6383\",\n },\n dark: {\n land: \"#1a1f26\",\n green: \"#1c2a22\",\n water: \"#14283a\",\n building: \"#20262e\",\n road: \"#2c333d\",\n roadCasing: \"#222830\",\n motorway: \"#5d6470\",\n motorwayCasing: \"#444a54\",\n rail: \"#39404a\",\n boundary: \"#4f5763\",\n label: \"#a1a1aa\",\n labelStrong: \"#e4e4e7\",\n waterLabel: \"#8fb5d3\",\n },\n} as const satisfies Record<MapTheme, MapPaletteColors>;\n"],"mappings":"AAAA;;AAuBA;AACA;AACA;AACA;AACA,OAAO,MAAM,UAAU,GAAG;EACxB,KAAK,EAAE;IACL,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,SAAS;IACzB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE;EACd,CAAC;EACD,IAAI,EAAE;IACJ,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,cAAc,EAAE,SAAS;IACzB,IAAI,EAAE,SAAS;IACf,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE;EACd;AACF,CAAuD","ignoreList":[]}