@swr-data-lab/components 1.13.0 → 1.13.2

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 (288) hide show
  1. package/dist/Autocomplete/Autocomplete.svelte +237 -0
  2. package/dist/Autocomplete/Autocomplete.svelte.d.ts +34 -0
  3. package/dist/Autocomplete/index.d.ts +2 -0
  4. package/dist/Button/Button.svelte +38 -0
  5. package/dist/Button/Button.svelte.d.ts +10 -0
  6. package/dist/Button/index.d.ts +2 -0
  7. package/dist/Caption/Caption.svelte +21 -0
  8. package/dist/Caption/Caption.svelte.d.ts +8 -0
  9. package/dist/Caption/index.js +2 -0
  10. package/dist/Card/Card.svelte +25 -0
  11. package/dist/Card/Card.svelte.d.ts +7 -0
  12. package/dist/Card/index.d.ts +2 -0
  13. package/dist/ChartFooter/ChartFooter.svelte +38 -0
  14. package/dist/ChartFooter/ChartFooter.svelte.d.ts +8 -0
  15. package/dist/ChartFooter/index.d.ts +2 -0
  16. package/{src → dist}/ChartHeader/ChartHeader.svelte +4 -12
  17. package/dist/ChartHeader/ChartHeader.svelte.d.ts +9 -0
  18. package/dist/ChartHeader/index.d.ts +2 -0
  19. package/{src → dist}/ChartList/ChartList.svelte +2 -16
  20. package/dist/ChartList/ChartList.svelte.d.ts +14 -0
  21. package/dist/ChartList/index.js +2 -0
  22. package/dist/Copy/Copy.svelte +21 -0
  23. package/dist/Copy/Copy.svelte.d.ts +8 -0
  24. package/dist/Copy/index.js +2 -0
  25. package/dist/DesignTokens/DesignTokens.svelte +58 -0
  26. package/dist/DesignTokens/DesignTokens.svelte.d.ts +7 -0
  27. package/dist/DesignTokens/Tokens.d.ts +26 -0
  28. package/dist/DesignTokens/Tokens.js +171 -0
  29. package/dist/DesignTokens/index.d.ts +8 -0
  30. package/{src → dist}/FormLabel/FormLabel.svelte +2 -9
  31. package/dist/FormLabel/FormLabel.svelte.d.ts +9 -0
  32. package/dist/FormLabel/index.js +2 -0
  33. package/{src → dist}/Headline/Headline.svelte +2 -7
  34. package/dist/Headline/Headline.svelte.d.ts +7 -0
  35. package/dist/Headline/index.js +2 -0
  36. package/dist/HighlightCard/HighlightCard.svelte +54 -0
  37. package/dist/HighlightCard/HighlightCard.svelte.d.ts +9 -0
  38. package/dist/HighlightCard/index.d.ts +2 -0
  39. package/dist/Input/Input.svelte +32 -0
  40. package/dist/Input/Input.svelte.d.ts +23 -0
  41. package/dist/Input/index.d.ts +2 -0
  42. package/dist/Logotype/Logotype.svelte.d.ts +26 -0
  43. package/dist/Middot/Middot.svelte.d.ts +26 -0
  44. package/dist/Middot/index.d.ts +2 -0
  45. package/dist/Note/Note.svelte +28 -0
  46. package/dist/Note/Note.svelte.d.ts +7 -0
  47. package/dist/Note/index.js +2 -0
  48. package/dist/Select/Select.svelte +39 -0
  49. package/dist/Select/Select.svelte.d.ts +4 -0
  50. package/{src/Select/Select.types.ts → dist/Select/Select.types.d.ts} +1 -2
  51. package/dist/Select/Select.types.js +1 -0
  52. package/dist/Select/index.d.ts +2 -0
  53. package/dist/Switcher/Switcher.svelte +111 -0
  54. package/dist/Switcher/Switcher.svelte.d.ts +21 -0
  55. package/dist/Switcher/index.d.ts +2 -0
  56. package/dist/assets/close-circle.svg.svelte.d.ts +26 -0
  57. package/dist/assets/grow.svg.svelte.d.ts +26 -0
  58. package/dist/assets/hand-pointer.svg.svelte.d.ts +26 -0
  59. package/dist/assets/shrink.svg.svelte.d.ts +26 -0
  60. package/dist/assets/tap.svg.svelte.d.ts +26 -0
  61. package/dist/assets/times-circle-solid.svg.svelte.d.ts +26 -0
  62. package/dist/index.d.ts +29 -0
  63. package/dist/maplibre/AttributionControl/AttributionControl.svelte +15 -0
  64. package/dist/maplibre/AttributionControl/AttributionControl.svelte.d.ts +8 -0
  65. package/dist/maplibre/AttributionControl/index.d.ts +2 -0
  66. package/dist/maplibre/GeocoderControl/GeocoderAPIs.d.ts +6 -0
  67. package/dist/maplibre/GeocoderControl/GeocoderAPIs.js +40 -0
  68. package/dist/maplibre/GeocoderControl/GeocoderControl.svelte +25 -0
  69. package/dist/maplibre/GeocoderControl/GeocoderControl.svelte.d.ts +27 -0
  70. package/dist/maplibre/GeocoderControl/index.d.ts +2 -0
  71. package/dist/maplibre/Map/FallbackStyle.d.ts +3 -0
  72. package/dist/maplibre/Map/FallbackStyle.js +15 -0
  73. package/dist/maplibre/Map/Map.svelte +91 -0
  74. package/dist/maplibre/Map/Map.svelte.d.ts +23 -0
  75. package/dist/maplibre/Map/index.d.ts +2 -0
  76. package/dist/maplibre/MapControl/MapControl.svelte +29 -0
  77. package/dist/maplibre/MapControl/MapControl.svelte.d.ts +11 -0
  78. package/dist/maplibre/MapControl/index.d.ts +2 -0
  79. package/dist/maplibre/MapStyle/SWRDataLabLight.d.ts +3 -0
  80. package/dist/maplibre/MapStyle/SWRDataLabLight.js +60 -0
  81. package/dist/maplibre/MapStyle/components/Admin.d.ts +1 -0
  82. package/dist/maplibre/MapStyle/components/Admin.js +170 -0
  83. package/dist/maplibre/MapStyle/components/Buildings.d.ts +1 -0
  84. package/dist/maplibre/MapStyle/components/Buildings.js +21 -0
  85. package/dist/maplibre/MapStyle/components/Landuse.d.ts +1 -0
  86. package/dist/maplibre/MapStyle/components/Landuse.js +497 -0
  87. package/dist/maplibre/MapStyle/components/Natural.d.ts +1 -0
  88. package/dist/maplibre/MapStyle/components/Natural.js +1 -0
  89. package/dist/maplibre/MapStyle/components/PlaceLabels.d.ts +4 -0
  90. package/dist/maplibre/MapStyle/components/PlaceLabels.js +194 -0
  91. package/dist/maplibre/MapStyle/components/Roads.d.ts +8 -0
  92. package/dist/maplibre/MapStyle/components/Roads.js +2327 -0
  93. package/dist/maplibre/MapStyle/components/Transit.d.ts +7 -0
  94. package/dist/maplibre/MapStyle/components/Transit.js +499 -0
  95. package/dist/maplibre/MapStyle/components/Walking.d.ts +1 -0
  96. package/dist/maplibre/MapStyle/components/Walking.js +1530 -0
  97. package/dist/maplibre/MapStyle/index.d.ts +2 -0
  98. package/dist/maplibre/MapStyle/tokens.d.ts +20 -0
  99. package/dist/maplibre/MapStyle/tokens.js +20 -0
  100. package/dist/maplibre/NavigationControl/NavigationControl.svelte +9 -0
  101. package/dist/maplibre/NavigationControl/NavigationControl.svelte.d.ts +12 -0
  102. package/dist/maplibre/NavigationControl/index.d.ts +2 -0
  103. package/dist/maplibre/ScaleControl/ScaleControl.svelte +9 -0
  104. package/dist/maplibre/ScaleControl/ScaleControl.svelte.d.ts +9 -0
  105. package/dist/maplibre/ScaleControl/index.d.ts +2 -0
  106. package/dist/maplibre/Source/MapSource.svelte +43 -0
  107. package/dist/maplibre/Source/MapSource.svelte.d.ts +13 -0
  108. package/dist/maplibre/Source/index.d.ts +2 -0
  109. package/dist/maplibre/Source/source.d.ts +28 -0
  110. package/dist/maplibre/Source/source.js +76 -0
  111. package/dist/maplibre/Tooltip/Tooltip.svelte +46 -0
  112. package/dist/maplibre/Tooltip/Tooltip.svelte.d.ts +25 -0
  113. package/dist/maplibre/Tooltip/index.d.ts +2 -0
  114. package/dist/maplibre/VectorLayer/VectorLayer.svelte +73 -0
  115. package/dist/maplibre/VectorLayer/VectorLayer.svelte.d.ts +21 -0
  116. package/dist/maplibre/VectorLayer/index.d.ts +2 -0
  117. package/dist/maplibre/VectorTileSource/VectorTileSource.svelte +13 -0
  118. package/dist/maplibre/VectorTileSource/VectorTileSource.svelte.d.ts +11 -0
  119. package/dist/maplibre/VectorTileSource/index.d.ts +2 -0
  120. package/dist/maplibre/WithLinkLocation/WithLinkLocation.svelte +44 -0
  121. package/dist/maplibre/WithLinkLocation/WithLinkLocation.svelte.d.ts +19 -0
  122. package/dist/maplibre/WithLinkLocation/index.d.ts +2 -0
  123. package/dist/maplibre/context.svelte.d.ts +33 -0
  124. package/dist/maplibre/context.svelte.js +73 -0
  125. package/{src/maplibre/types.ts → dist/maplibre/types.d.ts} +3 -5
  126. package/dist/maplibre/types.js +1 -0
  127. package/dist/maplibre/utils.d.ts +4 -0
  128. package/dist/maplibre/utils.js +34 -0
  129. package/dist/utils/formatDate.d.ts +5 -0
  130. package/dist/utils/formatNumber.d.ts +18 -0
  131. package/dist/utils/getColorsBetween.d.ts +9 -0
  132. package/dist/utils/getComparisonDiffs.d.ts +6 -0
  133. package/dist/utils/getEmbedContext.d.ts +7 -0
  134. package/dist/utils/getEmbedContext.js +27 -0
  135. package/dist/utils/getLaenderFromTopo.d.ts +10 -0
  136. package/dist/utils/getLaenderNicenameFromAgs.d.ts +7 -0
  137. package/dist/utils/isSvelteComponent.d.ts +7 -0
  138. package/dist/utils/prepareSophoraModel.d.ts +2 -0
  139. package/dist/utils/scrollIntoViewWithOffset.d.ts +7 -0
  140. package/dist/utils/slugify.d.ts +1 -0
  141. package/dist/utils/slugify.js +11 -0
  142. package/dist/utils/topoToGeo.d.ts +7 -0
  143. package/package.json +28 -7
  144. package/.storybook/blocks/Mermaid.jsx +0 -9
  145. package/.storybook/main.ts +0 -34
  146. package/.storybook/preview-head.html +0 -13
  147. package/.storybook/preview.ts +0 -47
  148. package/.storybook/vitest.setup.ts +0 -9
  149. package/src/Autocomplete/Autocomplete.stories.svelte +0 -61
  150. package/src/Autocomplete/Autocomplete.svelte +0 -237
  151. package/src/Button/Button.stories.svelte +0 -21
  152. package/src/Button/Button.svelte +0 -52
  153. package/src/Caption/Caption.stories.svelte +0 -24
  154. package/src/Caption/Caption.svelte +0 -29
  155. package/src/Card/Card.stories.svelte +0 -19
  156. package/src/Card/Card.svelte +0 -34
  157. package/src/ChartFooter/ChartFooter.stories.svelte +0 -32
  158. package/src/ChartFooter/ChartFooter.svelte +0 -46
  159. package/src/ChartHeader/ChartHeader.stories.svelte +0 -31
  160. package/src/ChartList/ChartList.stories.svelte +0 -48
  161. package/src/Copy/Copy.stories.svelte +0 -32
  162. package/src/Copy/Copy.svelte +0 -29
  163. package/src/DesignTokens/DesignTokens.svelte +0 -71
  164. package/src/DesignTokens/Tokens.ts +0 -186
  165. package/src/FormLabel/FormLabel.stories.svelte +0 -52
  166. package/src/Headline/Headline.stories.svelte +0 -17
  167. package/src/HighlightCard/HighlightCard.stories.svelte +0 -57
  168. package/src/HighlightCard/HighlightCard.svelte +0 -65
  169. package/src/Input/Input.svelte +0 -21
  170. package/src/Logotype/Logotype.stories.svelte +0 -16
  171. package/src/Middot/Middot.stories.svelte +0 -16
  172. package/src/Note/Note.stories.svelte +0 -23
  173. package/src/Note/Note.svelte +0 -38
  174. package/src/Select/Select.stories.svelte +0 -205
  175. package/src/Select/Select.svelte +0 -76
  176. package/src/Select/SelectStoriesTemplate.svelte +0 -31
  177. package/src/Switcher/Switcher.stories.svelte +0 -44
  178. package/src/Switcher/Switcher.svelte +0 -130
  179. package/src/maplibre/AttributionControl/AttributionControl.stories.svelte +0 -29
  180. package/src/maplibre/AttributionControl/AttributionControl.svelte +0 -45
  181. package/src/maplibre/GeocoderControl/GeocoderAPIs.ts +0 -49
  182. package/src/maplibre/GeocoderControl/GeocoderControl.stories.svelte +0 -78
  183. package/src/maplibre/GeocoderControl/GeocoderControl.svelte +0 -211
  184. package/src/maplibre/Map/FallbackStyle.ts +0 -18
  185. package/src/maplibre/Map/Map.stories.svelte +0 -118
  186. package/src/maplibre/Map/Map.svelte +0 -287
  187. package/src/maplibre/MapControl/MapControl.stories.svelte +0 -56
  188. package/src/maplibre/MapControl/MapControl.svelte +0 -41
  189. package/src/maplibre/MapStyle/SWRDataLabLight.stories.svelte +0 -41
  190. package/src/maplibre/MapStyle/SWRDataLabLight.ts +0 -72
  191. package/src/maplibre/MapStyle/components/Admin.ts +0 -173
  192. package/src/maplibre/MapStyle/components/Buildings.ts +0 -23
  193. package/src/maplibre/MapStyle/components/Landuse.ts +0 -499
  194. package/src/maplibre/MapStyle/components/Natural.ts +0 -1
  195. package/src/maplibre/MapStyle/components/PlaceLabels.ts +0 -199
  196. package/src/maplibre/MapStyle/components/Roads.ts +0 -2345
  197. package/src/maplibre/MapStyle/components/Transit.ts +0 -507
  198. package/src/maplibre/MapStyle/components/Walking.ts +0 -1538
  199. package/src/maplibre/MapStyle/tokens.ts +0 -21
  200. package/src/maplibre/NavigationControl/NavigationControl.stories.svelte +0 -39
  201. package/src/maplibre/NavigationControl/NavigationControl.svelte +0 -36
  202. package/src/maplibre/ScaleControl/ScaleControl.stories.svelte +0 -71
  203. package/src/maplibre/ScaleControl/ScaleControl.svelte +0 -25
  204. package/src/maplibre/Source/MapSource.stories.svelte +0 -9
  205. package/src/maplibre/Source/MapSource.svelte +0 -61
  206. package/src/maplibre/Source/source.ts +0 -89
  207. package/src/maplibre/Tooltip/Tooltip.stories.svelte +0 -192
  208. package/src/maplibre/Tooltip/Tooltip.svelte +0 -183
  209. package/src/maplibre/VectorLayer/VectorLayer.stories.svelte +0 -65
  210. package/src/maplibre/VectorLayer/VectorLayer.svelte +0 -146
  211. package/src/maplibre/VectorTileSource/VectorTileSource.stories.svelte +0 -46
  212. package/src/maplibre/VectorTileSource/VectorTileSource.svelte +0 -24
  213. package/src/maplibre/WithLinkLocation/WithLinkLocation.stories.svelte +0 -29
  214. package/src/maplibre/WithLinkLocation/WithLinkLocation.svelte +0 -83
  215. package/src/maplibre/context.svelte.ts +0 -89
  216. package/src/maplibre/utils.ts +0 -52
  217. package/src/utils/getEmbedContext.js +0 -28
  218. package/src/utils/slugify.ts +0 -12
  219. package/static/favicon.png +0 -0
  220. package/svelte.config.js +0 -18
  221. package/tsconfig.json +0 -19
  222. package/vite.config.ts +0 -6
  223. package/vitest.workspace.ts +0 -32
  224. /package/{src → dist}/Autocomplete/index.js +0 -0
  225. /package/{src → dist}/Button/index.js +0 -0
  226. /package/{src/Caption/index.ts → dist/Caption/index.d.ts} +0 -0
  227. /package/{src → dist}/Card/index.js +0 -0
  228. /package/{src → dist}/ChartFooter/ChartFooter.mdx +0 -0
  229. /package/{src → dist}/ChartFooter/index.js +0 -0
  230. /package/{src → dist}/ChartHeader/ChartHeader.mdx +0 -0
  231. /package/{src → dist}/ChartHeader/index.js +0 -0
  232. /package/{src → dist}/ChartList/ChartList.mdx +0 -0
  233. /package/{src/ChartList/index.ts → dist/ChartList/index.d.ts} +0 -0
  234. /package/{src/Copy/index.ts → dist/Copy/index.d.ts} +0 -0
  235. /package/{src → dist}/DesignTokens/DesignTokens.mdx +0 -0
  236. /package/{src → dist}/DesignTokens/index.js +0 -0
  237. /package/{src → dist}/FormLabel/FormLabel.mdx +0 -0
  238. /package/{src/FormLabel/index.ts → dist/FormLabel/index.d.ts} +0 -0
  239. /package/{src/Headline/index.ts → dist/Headline/index.d.ts} +0 -0
  240. /package/{src → dist}/HighlightCard/index.js +0 -0
  241. /package/{src → dist}/Input/index.js +0 -0
  242. /package/{src → dist}/Intro.mdx +0 -0
  243. /package/{src → dist}/Logotype/Logotype.svelte +0 -0
  244. /package/{src → dist}/Middot/Middot.svelte +0 -0
  245. /package/{src → dist}/Middot/index.js +0 -0
  246. /package/{src/Note/index.ts → dist/Note/index.d.ts} +0 -0
  247. /package/{src → dist}/Select/Select.mdx +0 -0
  248. /package/{src → dist}/Select/index.js +0 -0
  249. /package/{src → dist}/Select/mock_data/jobs.json +0 -0
  250. /package/{src → dist}/Switcher/Switcher.mdx +0 -0
  251. /package/{src → dist}/Switcher/index.js +0 -0
  252. /package/{src → dist}/app.d.ts +0 -0
  253. /package/{src → dist}/app.html +0 -0
  254. /package/{src → dist}/assets/close-circle.svg.svelte +0 -0
  255. /package/{src → dist}/assets/grow.svg.svelte +0 -0
  256. /package/{src → dist}/assets/hand-pointer.svg.svelte +0 -0
  257. /package/{src → dist}/assets/shrink.svg.svelte +0 -0
  258. /package/{src → dist}/assets/tap.svg.svelte +0 -0
  259. /package/{src → dist}/assets/times-circle-solid.svg.svelte +0 -0
  260. /package/{src → dist}/index.js +0 -0
  261. /package/{src → dist}/maplibre/AttributionControl/index.js +0 -0
  262. /package/{src → dist}/maplibre/GeocoderControl/index.js +0 -0
  263. /package/{src → dist}/maplibre/Map/index.js +0 -0
  264. /package/{src → dist}/maplibre/MapControl/MapControl.mdx +0 -0
  265. /package/{src → dist}/maplibre/MapControl/index.js +0 -0
  266. /package/{src → dist}/maplibre/MapStyle/SWRDataLabLight.mdx +0 -0
  267. /package/{src → dist}/maplibre/MapStyle/index.js +0 -0
  268. /package/{src → dist}/maplibre/Maplibre.mdx +0 -0
  269. /package/{src → dist}/maplibre/NavigationControl/index.js +0 -0
  270. /package/{src → dist}/maplibre/ScaleControl/index.js +0 -0
  271. /package/{src → dist}/maplibre/Source/index.js +0 -0
  272. /package/{src → dist}/maplibre/Tooltip/index.js +0 -0
  273. /package/{src → dist}/maplibre/VectorLayer/index.js +0 -0
  274. /package/{src → dist}/maplibre/VectorTileSource/VectorTileSource.mdx +0 -0
  275. /package/{src → dist}/maplibre/VectorTileSource/index.js +0 -0
  276. /package/{src → dist}/maplibre/WithLinkLocation/WithLinkLocation.mdx +0 -0
  277. /package/{src → dist}/maplibre/WithLinkLocation/index.js +0 -0
  278. /package/{src → dist}/styles/base.scss +0 -0
  279. /package/{src → dist}/utils/formatDate.js +0 -0
  280. /package/{src → dist}/utils/formatNumber.js +0 -0
  281. /package/{src → dist}/utils/getColorsBetween.js +0 -0
  282. /package/{src → dist}/utils/getComparisonDiffs.js +0 -0
  283. /package/{src → dist}/utils/getLaenderFromTopo.js +0 -0
  284. /package/{src → dist}/utils/getLaenderNicenameFromAgs.js +0 -0
  285. /package/{src → dist}/utils/isSvelteComponent.js +0 -0
  286. /package/{src → dist}/utils/prepareSophoraModel.js +0 -0
  287. /package/{src → dist}/utils/scrollIntoViewWithOffset.js +0 -0
  288. /package/{src → dist}/utils/topoToGeo.js +0 -0
@@ -0,0 +1,2 @@
1
+ export { SWRDataLabLight };
2
+ import SWRDataLabLight from './SWRDataLabLight';
@@ -0,0 +1,20 @@
1
+ declare const tokens: {
2
+ sans_regular: string[];
3
+ sans_medium: string[];
4
+ sans_bold: string[];
5
+ background: string;
6
+ water: string;
7
+ water_light: string;
8
+ marsh: string;
9
+ grass: string;
10
+ grass_dark: string;
11
+ street_primary: string;
12
+ street_primary_outline: string;
13
+ street_secondary: string;
14
+ street_secondary_outline: string;
15
+ street_tertiary: string;
16
+ street_tertiary_outline: string;
17
+ label_primary: string;
18
+ label_secondary: string;
19
+ };
20
+ export default tokens;
@@ -0,0 +1,20 @@
1
+ const tokens = {
2
+ sans_regular: ['SWR Sans Regular'],
3
+ sans_medium: ['SWR Sans Medium'],
4
+ sans_bold: ['SWR Sans Bold'],
5
+ background: 'hsl(0, 0%, 100%)',
6
+ water: 'hsl(210, 41%, 87%)',
7
+ water_light: 'hsl(210, 41%, 90%)',
8
+ marsh: 'hsl(200, 14%, 97%)',
9
+ grass: 'hsl(149, 37%, 97%)',
10
+ grass_dark: 'hsl(149, 37%, 93%)',
11
+ street_primary: 'hsl(0, 0%, 95%)',
12
+ street_primary_outline: 'hsla(0, 0%, 0%, 20%)',
13
+ street_secondary: 'hsl(0, 0%, 95%)',
14
+ street_secondary_outline: 'hsl(0, 0%, 50%)',
15
+ street_tertiary: 'hsl(0, 0%, 95%)',
16
+ street_tertiary_outline: 'hsl(0, 0%, 50%)',
17
+ label_primary: 'rgb(10, 10, 11)',
18
+ label_secondary: 'hsl(240, 2%, 20%)'
19
+ };
20
+ export default tokens;
@@ -0,0 +1,9 @@
1
+ <script lang="ts">import maplibre, {} from 'maplibre-gl';
2
+ import MapControl from '../MapControl/MapControl.svelte';
3
+ const { showCompass = false, visualizePitch = false, position = 'bottom-left' } = $props();
4
+ </script>
5
+
6
+ <MapControl control={new maplibre.NavigationControl({ showCompass, visualizePitch })} {position} />
7
+
8
+ <style>
9
+ </style>
@@ -0,0 +1,12 @@
1
+ import { type ControlPosition } from 'maplibre-gl';
2
+ interface NavigationControlProps {
3
+ showCompass?: boolean;
4
+ /**
5
+ * Show 3d tilt in the compass control. Requires `showCompass` to be `true`
6
+ */
7
+ visualizePitch?: boolean;
8
+ position?: ControlPosition;
9
+ }
10
+ declare const NavigationControl: import("svelte").Component<NavigationControlProps, {}, "">;
11
+ type NavigationControl = ReturnType<typeof NavigationControl>;
12
+ export default NavigationControl;
@@ -0,0 +1,2 @@
1
+ export default NavigationControl;
2
+ import NavigationControl from './NavigationControl.svelte';
@@ -0,0 +1,9 @@
1
+ <script lang="ts">import maplibre, {} from 'maplibre-gl';
2
+ import MapControl from '../MapControl/MapControl.svelte';
3
+ let { maxWidth = 100, unit = 'metric', position = 'bottom-left' } = $props();
4
+ </script>
5
+
6
+ <MapControl control={new maplibre.ScaleControl({ maxWidth, unit })} {position} />
7
+
8
+ <style>
9
+ </style>
@@ -0,0 +1,9 @@
1
+ import { type ControlPosition, type Unit } from 'maplibre-gl';
2
+ interface ScaleControlProps {
3
+ maxWidth?: number | undefined;
4
+ position?: ControlPosition;
5
+ unit?: Unit;
6
+ }
7
+ declare const ScaleControl: import("svelte").Component<ScaleControlProps, {}, "">;
8
+ type ScaleControl = ReturnType<typeof ScaleControl>;
9
+ export default ScaleControl;
@@ -0,0 +1,2 @@
1
+ export default ScaleControl;
2
+ import ScaleControl from './ScaleControl.svelte';
@@ -0,0 +1,43 @@
1
+ <script lang="ts">import { onDestroy } from 'svelte';
2
+ import {} from 'maplibre-gl';
3
+ import { getMapContext, createSourceContext } from '../context.svelte.js';
4
+ let { id, sourceSpec, source = $bindable(), children } = $props();
5
+ let firstRun = true;
6
+ // Get map context
7
+ const { map, styleLoaded } = $derived(getMapContext());
8
+ // Create source context
9
+ const sourceContext = createSourceContext();
10
+ // 1. Add the source to the map using the spec, then get the
11
+ // actual source object back from the map instance
12
+ $effect(() => {
13
+ if (map && styleLoaded) {
14
+ // See: https://svelte.dev/docs/svelte/$state#$state.snapshot
15
+ map.addSource(id, $state.snapshot(sourceSpec));
16
+ source = map.getSource(id);
17
+ firstRun = true;
18
+ }
19
+ });
20
+ // 2. Do extra stuff with the source object
21
+ $effect(() => {
22
+ if (source) {
23
+ }
24
+ });
25
+ $effect(() => {
26
+ source;
27
+ firstRun = false;
28
+ });
29
+ onDestroy(() => {
30
+ if (map && styleLoaded) {
31
+ const layers = map?.getStyle().layers;
32
+ layers
33
+ .filter((l) => l.type !== 'background' && l.source == id)
34
+ .forEach((l) => {
35
+ map?.removeLayer(l.id);
36
+ });
37
+ map.removeSource(id);
38
+ source = undefined;
39
+ }
40
+ });
41
+ </script>
42
+
43
+ {@render children?.()}
@@ -0,0 +1,13 @@
1
+ import { type Snippet } from 'svelte';
2
+ import { type Map, type SourceSpecification } from 'maplibre-gl';
3
+ type Source = maplibregl.VectorTileSource;
4
+ interface MapSourceProps {
5
+ id: string;
6
+ sourceSpec: SourceSpecification;
7
+ source?: Source;
8
+ onLoad?: (map: Map, url?: string, data?: string) => undefined;
9
+ children?: Snippet;
10
+ }
11
+ declare const MapSource: import("svelte").Component<MapSourceProps, {}, "source">;
12
+ type MapSource = ReturnType<typeof MapSource>;
13
+ export default MapSource;
@@ -0,0 +1,2 @@
1
+ export default MapSource;
2
+ import MapSource from './MapSource.svelte';
@@ -0,0 +1,28 @@
1
+ import type { Map, SourceSpecification } from 'maplibre-gl';
2
+ /**
3
+ * Add a source to the map.
4
+ *
5
+ * @param map - The map instance
6
+ * @param sourceId - The ID of the source to add
7
+ * @param source - The source specification object
8
+ * @param okToAdd - Callback to check if the source should still be added
9
+ * @param cb - Callback when the source has been added
10
+ *
11
+ * This properly handles the case where an old source with the same ID is still being removed.
12
+ */
13
+ export declare function addSource(map: Map, sourceId: string, source: SourceSpecification, okToAdd: (sourceId: string) => boolean, cb: () => void): void;
14
+ /**
15
+ * A helper function that removes a source from the map after all of the layers inside it have
16
+ * had a chance to remove themselves.
17
+ *
18
+ * @param {Readable<Map|undefined>} mapStore - The store containing the Map instance
19
+ * @param {string} sourceId - The ID of the source to remove
20
+ * @param {unknown} sourceObj - The source object that was originally added
21
+ *
22
+ * Waits one tick to ensure layers have a chance to be removed, then checks if the
23
+ * source with the given ID is still the same object as was originally added.
24
+ *
25
+ * If so, it removes the source from the map. This avoids removing a source that was
26
+ * already replaced by another source reusing the same ID.
27
+ */
28
+ export declare function removeSource(map: Map, sourceId: string, sourceObj: unknown): void;
@@ -0,0 +1,76 @@
1
+ import { tick } from 'svelte';
2
+ /**
3
+ * Add a source to the map.
4
+ *
5
+ * @param map - The map instance
6
+ * @param sourceId - The ID of the source to add
7
+ * @param source - The source specification object
8
+ * @param okToAdd - Callback to check if the source should still be added
9
+ * @param cb - Callback when the source has been added
10
+ *
11
+ * This properly handles the case where an old source with the same ID is still being removed.
12
+ */
13
+ export function addSource(map, sourceId, source, okToAdd, cb) {
14
+ // If there was an old source with the same ID, then remove it. This can happen when removing a source and adding a new source in quick succession.
15
+ let removed = false;
16
+ if (map.getSource(sourceId)) {
17
+ removed = true;
18
+ map.removeSource(sourceId);
19
+ }
20
+ const doAddSource = () => {
21
+ if (!okToAdd(sourceId)) {
22
+ // in case the component was destroyed or the id changed while waiting to call this
23
+ return;
24
+ }
25
+ map.addSource(sourceId, source);
26
+ cb();
27
+ };
28
+ if (removed) {
29
+ // Source removal happens quickly but asynchronously, and we have no way to really interlock on when it happens, so just loop until it does.
30
+ const waitForRemoval = () => {
31
+ if (!sourceId) {
32
+ return;
33
+ }
34
+ if (map.getSource(sourceId)) {
35
+ // The source hasn't been removed yet, so keep waiting.
36
+ setTimeout(waitForRemoval, 1);
37
+ }
38
+ else {
39
+ doAddSource();
40
+ }
41
+ };
42
+ waitForRemoval();
43
+ }
44
+ else {
45
+ // If we don't have an existing source to remove (i.e. the normal case) then
46
+ // just add the source right away.
47
+ doAddSource();
48
+ }
49
+ }
50
+ /**
51
+ * A helper function that removes a source from the map after all of the layers inside it have
52
+ * had a chance to remove themselves.
53
+ *
54
+ * @param {Readable<Map|undefined>} mapStore - The store containing the Map instance
55
+ * @param {string} sourceId - The ID of the source to remove
56
+ * @param {unknown} sourceObj - The source object that was originally added
57
+ *
58
+ * Waits one tick to ensure layers have a chance to be removed, then checks if the
59
+ * source with the given ID is still the same object as was originally added.
60
+ *
61
+ * If so, it removes the source from the map. This avoids removing a source that was
62
+ * already replaced by another source reusing the same ID.
63
+ */
64
+ export function removeSource(map, sourceId, sourceObj) {
65
+ tick().then(() => {
66
+ // Wait a tick so that the layers inside this source can all be removed.
67
+ // But make sure that the source wasn't already replaced with another source with the same ID.
68
+ if (!map.loaded()) {
69
+ return;
70
+ }
71
+ let remainingSource = map.getSource(sourceId);
72
+ if (remainingSource === sourceObj) {
73
+ map.removeSource(sourceId);
74
+ }
75
+ });
76
+ }
@@ -0,0 +1,46 @@
1
+ <script lang="ts">import { onDestroy } from 'svelte';
2
+ import maplibre, {} from 'maplibre-gl';
3
+ import { getMapContext } from '../context.svelte.js';
4
+ import { resetPopupEventListener } from '../utils';
5
+ let { position, children, offset = 20, maxWidth = 360, showCloseButton = false, closeOnClick = true, mouseEvents = false, onClose, onOpen } = $props();
6
+ const { map } = $derived(getMapContext());
7
+ let tooltip = new maplibre.Popup({
8
+ closeButton: showCloseButton,
9
+ closeOnClick: closeOnClick,
10
+ maxWidth: `${maxWidth}px`,
11
+ offset: offset
12
+ });
13
+ let el = $state();
14
+ $effect(() => {
15
+ if (position && el && map) {
16
+ tooltip.setLngLat(position).setDOMContent(el).addTo(map);
17
+ }
18
+ else {
19
+ tooltip.remove();
20
+ }
21
+ });
22
+ // Bind events
23
+ $effect(() => resetPopupEventListener(tooltip, 'open', onOpen));
24
+ $effect(() => resetPopupEventListener(tooltip, 'close', onClose));
25
+ onDestroy(() => tooltip.remove());
26
+ </script>
27
+
28
+ <div bind:this={el} class="container" class:mouseEvents>
29
+ {@render children?.()}
30
+ </div>
31
+
32
+ <style>
33
+ .container {
34
+ background: white;
35
+ padding: 0.75em;
36
+ border-radius: 2px;
37
+ border: 1px solid rgba(0, 0, 0, 0.75);
38
+ border-radius: var(--br-small);
39
+ filter: drop-shadow(2px 2px 2px rgba(0, 0, 0, 0.1));
40
+ pointer-events: none;
41
+ }
42
+
43
+ .mouseEvents {
44
+ pointer-events: all;
45
+ }
46
+ </style>
@@ -0,0 +1,25 @@
1
+ import { type Snippet } from 'svelte';
2
+ import { type Listener, type LngLatLike } from 'maplibre-gl';
3
+ interface TooltipProps {
4
+ position: LngLatLike | undefined;
5
+ children?: Snippet;
6
+ maxWidth?: number;
7
+ showCloseButton?: boolean;
8
+ /**
9
+ * Close the tooltip if the user clicks anywhere on the map
10
+ */
11
+ closeOnClick?: boolean;
12
+ /**
13
+ * y axis offset (px)
14
+ */
15
+ offset?: number;
16
+ /**
17
+ * Toggle mouse events on the tooltip element. Should be false if the tooltip appears on hover to avoid flickering.
18
+ */
19
+ mouseEvents?: boolean;
20
+ onClose?: Listener | undefined;
21
+ onOpen?: Listener | undefined;
22
+ }
23
+ declare const Tooltip: import("svelte").Component<TooltipProps, {}, "">;
24
+ type Tooltip = ReturnType<typeof Tooltip>;
25
+ export default Tooltip;
@@ -0,0 +1,2 @@
1
+ export default Tooltip;
2
+ import Tooltip from './Tooltip.svelte';
@@ -0,0 +1,73 @@
1
+ <script lang="ts">import { getMapContext } from '../context.svelte.js';
2
+ import { onDestroy } from 'svelte';
3
+ import { resetLayerEventListener } from '../utils.js';
4
+ const { id, sourceId, sourceLayer, visible = true, placeBelow = 'label-place-capital', type, paint, layout, hovered = $bindable(), selected = $bindable(), minZoom = 0, maxZoom = 24, onclick, onmousemove, onmouseleave } = $props();
5
+ const { map, styleLoaded } = $derived(getMapContext());
6
+ let beforeId = $state();
7
+ let prevSelected = $state();
8
+ let prevHovered = $state();
9
+ const layerSpec = {
10
+ id,
11
+ type,
12
+ source: sourceId,
13
+ 'source-layer': sourceLayer,
14
+ layout: $state.snapshot(layout) ?? {},
15
+ paint: $state.snapshot(paint) ?? {},
16
+ minzoom: minZoom,
17
+ maxzoom: maxZoom
18
+ };
19
+ $effect(() => {
20
+ if (map && styleLoaded) {
21
+ const style = map.getStyle();
22
+ beforeId = style.layers.find((l) => {
23
+ return l.id === placeBelow;
24
+ })?.id;
25
+ }
26
+ });
27
+ $effect(() => {
28
+ if (map && styleLoaded && beforeId) {
29
+ map.addLayer(layerSpec, beforeId);
30
+ }
31
+ });
32
+ $effect(() => resetLayerEventListener(map, 'click', id, onclick));
33
+ $effect(() => resetLayerEventListener(map, 'mousemove', id, onmousemove));
34
+ $effect(() => resetLayerEventListener(map, 'mouseleave', id, onmouseleave));
35
+ // Set hovered feature state
36
+ $effect(() => {
37
+ if (styleLoaded) {
38
+ if (hovered) {
39
+ if (prevHovered) {
40
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: prevHovered }, { hovered: false });
41
+ }
42
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: hovered.id }, { hovered: true });
43
+ prevHovered = hovered.id;
44
+ }
45
+ else {
46
+ if (prevHovered) {
47
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: prevHovered }, { hovered: false });
48
+ }
49
+ }
50
+ }
51
+ });
52
+ // Set selected feature state
53
+ $effect(() => {
54
+ if (styleLoaded) {
55
+ if (selected) {
56
+ if (prevSelected) {
57
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: prevSelected }, { selected: false });
58
+ }
59
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: selected.id }, { selected: true });
60
+ prevSelected = selected.id;
61
+ }
62
+ else {
63
+ if (prevSelected) {
64
+ map?.setFeatureState({ source: sourceId, sourceLayer: sourceLayer, id: prevSelected }, { selected: false });
65
+ }
66
+ }
67
+ }
68
+ });
69
+ onDestroy(() => {
70
+ if (map && map.getLayer(id))
71
+ map.removeLayer(id);
72
+ });
73
+ </script>
@@ -0,0 +1,21 @@
1
+ import type { CircleLayoutProps, CirclePaintProps, FillLayoutProps, FillPaintProps, LineLayoutProps, SymbolPaintProps, SymbolLayoutProps, LinePaintProps, MapGeoJSONFeature, MapLayerMouseEvent } from 'maplibre-gl';
2
+ interface VectorLayerProps {
3
+ id: string;
4
+ sourceId: string;
5
+ sourceLayer: string;
6
+ type: 'line' | 'fill' | 'circle' | 'symbol';
7
+ placeBelow: string;
8
+ visible?: boolean;
9
+ minZoom?: number;
10
+ maxZoom?: number;
11
+ paint?: LinePaintProps | FillPaintProps | CirclePaintProps | SymbolPaintProps;
12
+ layout?: LineLayoutProps | FillLayoutProps | CircleLayoutProps | SymbolLayoutProps;
13
+ hovered?: MapGeoJSONFeature | undefined;
14
+ selected?: MapGeoJSONFeature | undefined;
15
+ onclick: (e: MapLayerMouseEvent) => any;
16
+ onmousemove: (e: MapLayerMouseEvent) => any;
17
+ onmouseleave: (e: MapLayerMouseEvent) => any;
18
+ }
19
+ declare const VectorLayer: import("svelte").Component<VectorLayerProps, {}, "hovered" | "selected">;
20
+ type VectorLayer = ReturnType<typeof VectorLayer>;
21
+ export default VectorLayer;
@@ -0,0 +1,2 @@
1
+ export default VectorLayer;
2
+ import VectorLayer from './VectorLayer.svelte';
@@ -0,0 +1,13 @@
1
+ <script lang="ts">import {} from 'svelte';
2
+ import {} from 'maplibre-gl';
3
+ import MapSource from '../Source/MapSource.svelte';
4
+ const { minZoom = 0, maxZoom = 24, id, url } = $props();
5
+ const sourceSpec = {
6
+ type: 'vector',
7
+ tiles: [url],
8
+ maxzoom: maxZoom,
9
+ minzoom: minZoom
10
+ };
11
+ </script>
12
+
13
+ <MapSource {id} {sourceSpec} />
@@ -0,0 +1,11 @@
1
+ import { type Snippet } from 'svelte';
2
+ interface VectorTileSourceProps {
3
+ id: string;
4
+ url: string;
5
+ minZoom?: number;
6
+ maxZoom?: number;
7
+ children?: Snippet;
8
+ }
9
+ declare const VectorTileSource: import("svelte").Component<VectorTileSourceProps, {}, "">;
10
+ type VectorTileSource = ReturnType<typeof VectorTileSource>;
11
+ export default VectorTileSource;
@@ -0,0 +1,2 @@
1
+ export default VectorTileSource;
2
+ import VectorTileSource from './VectorTileSource.svelte';
@@ -0,0 +1,44 @@
1
+ <script lang="ts">import { onMount, setContext } from 'svelte';
2
+ import { MaptilerGeocoderAPI } from '../GeocoderControl/GeocoderAPIs';
3
+ import {} from '../types';
4
+ const { key, service = 'maptiler', countries = 'de', languages = 'de', urlParameter = 'location', children } = $props();
5
+ const countriesArr = Array.isArray(countries) ? countries : [countries];
6
+ const languagesArr = Array.isArray(languages) ? languages : [languages];
7
+ let geocoder;
8
+ if (service === 'maptiler') {
9
+ geocoder = new MaptilerGeocoderAPI(key);
10
+ }
11
+ let location = $state();
12
+ function bboxToArea(bbox) {
13
+ return (bbox[2] - bbox[0]) * (bbox[3] - bbox[1]);
14
+ }
15
+ onMount(async () => {
16
+ const params = new URLSearchParams(window.location.search);
17
+ if (params.has(urlParameter)) {
18
+ const config = {
19
+ countries: countriesArr.join(','),
20
+ language: languagesArr.join(','),
21
+ query: params.get(urlParameter)?.toString(),
22
+ limit: 1
23
+ };
24
+ const res = await geocoder.forwardGeocode(config);
25
+ if (res.features[0].bbox && res.features[0].geometry.type === 'Point') {
26
+ location = {
27
+ lat: res.features[0].geometry.coordinates[1],
28
+ lng: res.features[0].geometry.coordinates[0],
29
+ zoom: 11 - bboxToArea(res.features[0].bbox) * 5.5
30
+ };
31
+ }
32
+ }
33
+ else {
34
+ location = false;
35
+ }
36
+ });
37
+ $effect.pre(() => {
38
+ setContext('initialLocation', location);
39
+ });
40
+ </script>
41
+
42
+ {#if location !== undefined}
43
+ {@render children?.()}
44
+ {/if}
@@ -0,0 +1,19 @@
1
+ import { type Snippet } from 'svelte';
2
+ import { type GeocodingCountry, type GeocodingLanguage, type GeocodingService } from '../types';
3
+ interface WithLinkLocationProps {
4
+ service?: GeocodingService;
5
+ /**
6
+ * API key for selected geocoding `service`
7
+ */
8
+ key: string;
9
+ /**
10
+ * Limit search to one or more countries
11
+ */
12
+ countries?: GeocodingLanguage | GeocodingCountry[];
13
+ languages?: GeocodingLanguage | GeocodingLanguage[];
14
+ urlParameter?: string;
15
+ children: Snippet;
16
+ }
17
+ declare const WithLinkLocation: import("svelte").Component<WithLinkLocationProps, {}, "">;
18
+ type WithLinkLocation = ReturnType<typeof WithLinkLocation>;
19
+ export default WithLinkLocation;
@@ -0,0 +1,2 @@
1
+ export default WithLinkLocation;
2
+ import WithLinkLocation from './WithLinkLocation.svelte';
@@ -0,0 +1,33 @@
1
+ import type { Map as MapLibre, Marker, LayerSpecification } from 'maplibre-gl';
2
+ export declare class Box<T> {
3
+ value: T;
4
+ constructor(initialValue: T);
5
+ }
6
+ export declare class MapContext {
7
+ _map: MapLibre | null;
8
+ minzoom: number;
9
+ maxzoom: number;
10
+ styleLoaded: boolean;
11
+ private _listener?;
12
+ get map(): maplibregl.Map | null;
13
+ set map(value: maplibregl.Map | null);
14
+ private _onstyledata;
15
+ }
16
+ export declare class SourceContext {
17
+ _source: unknown;
18
+ loaded: boolean;
19
+ minzoom: number;
20
+ maxzoom: number;
21
+ get source(): unknown;
22
+ }
23
+ export declare class LayerContext {
24
+ layer: LayerSpecification;
25
+ }
26
+ export declare function setPopupTarget(value: Box<Marker | string | undefined>): void;
27
+ export declare function getPopupTarget(): Box<Marker | string> | undefined;
28
+ export declare function createMapContext(): MapContext;
29
+ export declare function getMapContext(): MapContext;
30
+ export declare function createSourceContext(): SourceContext;
31
+ export declare function getSourceContext(): SourceContext;
32
+ export declare function getLayerContext(): LayerContext;
33
+ export declare function setLayerContext(value: string): void;
@@ -0,0 +1,73 @@
1
+ import { getContext, setContext } from 'svelte';
2
+ const MAP_CONTEXT_KEY = Symbol.for('map-context');
3
+ const SOURCE_CONTEXT_KEY = Symbol.for('source-context');
4
+ const LAYER_CONTEXT_KEY = Symbol.for('layer-context');
5
+ const POPUP_TARGET_KEY = Symbol.for('popup-target');
6
+ export class Box {
7
+ value = $state();
8
+ constructor(initialValue) {
9
+ this.value = initialValue;
10
+ }
11
+ }
12
+ export class MapContext {
13
+ _map = $state(null);
14
+ minzoom = $state(0);
15
+ maxzoom = $state(24);
16
+ styleLoaded = $state(false);
17
+ _listener = undefined;
18
+ get map() {
19
+ return this._map;
20
+ }
21
+ set map(value) {
22
+ // Unbind any old event listeners
23
+ if (this._listener) {
24
+ this._map?.off('styledata', this._listener);
25
+ this._listener = undefined;
26
+ }
27
+ // Set new map instance and bind new event listeners
28
+ this._map = value;
29
+ if (this._map) {
30
+ this._listener = this._onstyledata.bind(this);
31
+ this._map.on('styledata', this._listener);
32
+ }
33
+ }
34
+ _onstyledata(e) {
35
+ this.styleLoaded = true;
36
+ }
37
+ }
38
+ export class SourceContext {
39
+ _source = $state();
40
+ loaded = $state(false);
41
+ minzoom = $state(0);
42
+ maxzoom = $state(24);
43
+ get source() {
44
+ return this._source;
45
+ }
46
+ }
47
+ export class LayerContext {
48
+ layer = $state();
49
+ }
50
+ export function setPopupTarget(value) {
51
+ setContext(POPUP_TARGET_KEY, value);
52
+ }
53
+ export function getPopupTarget() {
54
+ return getContext(POPUP_TARGET_KEY);
55
+ }
56
+ export function createMapContext() {
57
+ return setContext(MAP_CONTEXT_KEY, new MapContext());
58
+ }
59
+ export function getMapContext() {
60
+ return getContext(MAP_CONTEXT_KEY);
61
+ }
62
+ export function createSourceContext() {
63
+ return setContext(SOURCE_CONTEXT_KEY, new SourceContext());
64
+ }
65
+ export function getSourceContext() {
66
+ return getContext(SOURCE_CONTEXT_KEY);
67
+ }
68
+ export function getLayerContext() {
69
+ return getContext(LAYER_CONTEXT_KEY);
70
+ }
71
+ export function setLayerContext(value) {
72
+ setContext(LAYER_CONTEXT_KEY, value);
73
+ }