@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
@@ -1,211 +0,0 @@
1
- <script lang="ts">
2
- import maplibre from 'maplibre-gl';
3
- import MaplibreGeocoder, { type MaplibreGeocoderApi } from '@maplibre/maplibre-gl-geocoder';
4
- import { MaptilerGeocoderAPI } from './GeocoderAPIs';
5
- import MapControl from '../MapControl/MapControl.svelte';
6
- import { type GeocodingCountry, type GeocodingLanguage, type GeocodingService } from '../types';
7
-
8
- interface GeocoderControlProps {
9
- service: GeocodingService;
10
- /**
11
- * API key for selected geocoding `service`
12
- */
13
- key: string;
14
- /**
15
- * Maximum number of suggestions to display
16
- */
17
- limit?: number;
18
- /**
19
- * Limit search to one or more countries
20
- */
21
- countries?: GeocodingCountry | GeocodingCountry[];
22
- /**
23
- * Limit search to one or more languages. The UI is localised to the first language specified if [available](https://github.com/maplibre/maplibre-gl-geocoder/blob/main/lib/localization.ts).
24
- */
25
- languages?: GeocodingLanguage | GeocodingLanguage[];
26
- /**
27
- * Overwrite the default input placeholder text
28
- */
29
- placeholder?: string;
30
- }
31
-
32
- const {
33
- key,
34
- service = 'maptiler',
35
- countries = 'de',
36
- languages = 'en',
37
- placeholder,
38
- limit = 3
39
- }: GeocoderControlProps = $props();
40
-
41
- const countriesArr = Array.isArray(countries) ? countries : [countries];
42
- const languagesArr = Array.isArray(languages) ? languages : [languages];
43
-
44
- // Future: initialise a different GeocoderAPI depending on "service"
45
- let geocoderAPI: MaplibreGeocoderApi = new MaptilerGeocoderAPI(key);
46
-
47
- const geocoder = new MaplibreGeocoder(geocoderAPI, {
48
- maplibregl: maplibre,
49
- language: languagesArr.join(','),
50
- countries: countriesArr.join(','),
51
- showResultsWhileTyping: true,
52
- showResultMarkers: false,
53
- placeholder,
54
- limit
55
- });
56
- </script>
57
-
58
- <MapControl control={geocoder} position="top-left" />
59
-
60
- <style>
61
- :global {
62
- .maplibregl-ctrl-geocoder {
63
- background-color: #fff;
64
- position: relative;
65
- width: 100%;
66
- z-index: 1;
67
- font-family: var(--swr-sans);
68
- font-size: var(--fs-small-1);
69
- border-radius: var(--br-small);
70
- border: 1px solid rgba(0, 0, 0, 0.75);
71
- box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.075);
72
- }
73
-
74
- .maplibre-gl-geocoder--error {
75
- font-size: var(--fs-small-2);
76
- color: var(--gray-dark-2);
77
- padding: 0.4em 0.65em;
78
- }
79
-
80
- .maplibregl-ctrl-geocoder--input {
81
- width: 100%;
82
- height: 100%;
83
- font-family: inherit;
84
- font-size: inherit;
85
- background-color: transparent;
86
- color: var(--gray-dark-5);
87
- border: 0;
88
- height: 1.85em;
89
- padding: 0 1.85em;
90
- padding-top: 0.1em;
91
- text-overflow: ellipsis;
92
- white-space: nowrap;
93
- overflow: hidden;
94
- }
95
-
96
- .maplibregl-ctrl-geocoder--input::placeholder {
97
- opacity: 1;
98
- color: var(--gray-dark-2);
99
- }
100
- .maplibregl-ctrl-geocoder--input:focus {
101
- color: var(--gray-dark-5);
102
- outline: 0;
103
- }
104
-
105
- .maplibregl-ctrl-geocoder .maplibregl-ctrl-geocoder--pin-right > * {
106
- display: none;
107
- position: absolute;
108
- z-index: 2;
109
- right: 0.5em;
110
- top: 50%;
111
- transform: translateY(-50%);
112
- border: 0;
113
- }
114
-
115
- /* Suggestions */
116
- .maplibregl-ctrl-geocoder .suggestions {
117
- background: white;
118
- border: 1px solid rgba(0, 0, 0, 0.75);
119
- box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.1);
120
- border-radius: var(--br-small);
121
- left: 0;
122
- list-style: none;
123
- position: absolute;
124
- width: 100%;
125
- top: calc(100% + 0.5em);
126
- z-index: 1000;
127
- overflow: hidden;
128
- }
129
-
130
- .maplibregl-ctrl-bottom-left .suggestions,
131
- .maplibregl-ctrl-bottom-right .suggestions {
132
- top: auto;
133
- bottom: 100%;
134
- }
135
-
136
- .maplibregl-ctrl-geocoder .suggestions > li > a {
137
- cursor: default;
138
- display: block;
139
- padding: 0.5em 0.75em;
140
- color: var(--gray-dark-5);
141
- padding-bottom: 0.5em;
142
- border-bottom: 1px solid var(--gray-light-3);
143
- }
144
- .maplibregl-ctrl-geocoder .suggestions > li:last-child > a {
145
- border-bottom: 0;
146
- }
147
-
148
- .maplibregl-ctrl-geocoder .suggestions > .active > a,
149
- .maplibregl-ctrl-geocoder .suggestions > li > a:hover {
150
- background: var(--gray-light-5);
151
- text-decoration: none;
152
- cursor: pointer;
153
- }
154
- .maplibregl-ctrl-geocoder .suggestions > .active .maplibregl-ctrl-geocoder--result-title,
155
- .maplibregl-ctrl-geocoder .suggestions > li > a:hover .maplibregl-ctrl-geocoder--result-title {
156
- text-decoration: underline;
157
- }
158
-
159
- .maplibregl-ctrl-geocoder--suggestion {
160
- display: flex;
161
- flex-direction: row;
162
- align-items: center;
163
- }
164
-
165
- .maplibregl-ctrl-geocoder--suggestion-info {
166
- display: flex;
167
- flex-direction: column;
168
- }
169
-
170
- .maplibregl-ctrl-geocoder--suggestion-match {
171
- font-weight: bold;
172
- }
173
-
174
- .maplibregl-ctrl-geocoder--suggestion-title,
175
- .maplibregl-ctrl-geocoder--suggestion-address,
176
- .maplibregl-ctrl-geocoder--result-address {
177
- text-overflow: ellipsis;
178
- overflow: hidden;
179
- white-space: nowrap;
180
- }
181
-
182
- .maplibregl-ctrl-geocoder--result-icon {
183
- display: none;
184
- }
185
- .maplibregl-ctrl-geocoder--result-title {
186
- font-weight: 600;
187
- letter-spacing: 0;
188
- }
189
- .maplibregl-ctrl-geocoder--result-address {
190
- font-size: var(--fs-small-2);
191
- color: var(--gray-dark-2);
192
- line-height: 1.3;
193
- }
194
-
195
- .maplibregl-ctrl-geocoder--icon {
196
- display: inline-block;
197
- position: absolute;
198
- top: 50%;
199
- transform: translateY(-50%);
200
- height: 1em;
201
- }
202
-
203
- .maplibregl-ctrl-geocoder--icon-close {
204
- right: 0;
205
- }
206
- .maplibregl-ctrl-geocoder--icon-search {
207
- left: 0.5em;
208
- height: 1.5em;
209
- }
210
- }
211
- </style>
@@ -1,18 +0,0 @@
1
- import type { StyleSpecification } from 'maplibre-gl';
2
-
3
- const style: StyleSpecification = {
4
- version: 8,
5
- name: 'default',
6
- sources: {},
7
- layers: [
8
- {
9
- id: 'background',
10
- type: 'background',
11
- paint: {
12
- 'background-color': 'lightgray'
13
- }
14
- }
15
- ]
16
- };
17
-
18
- export default style;
@@ -1,118 +0,0 @@
1
- <script context="module" lang="ts">
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import { within, expect } from 'storybook/test';
4
-
5
- import Map from './Map.svelte';
6
- import ScaleControl from '../ScaleControl/ScaleControl.svelte';
7
- import NavigationControl from '../NavigationControl/NavigationControl.svelte';
8
- import DesignTokens from '../../DesignTokens/DesignTokens.svelte';
9
- import AttributionControl from '../AttributionControl/AttributionControl.svelte';
10
- import GeocoderControl from '../GeocoderControl/GeocoderControl.svelte';
11
-
12
- import { SWRDataLabLight } from '../MapStyle';
13
-
14
- import { eclipse } from '@versatiles/style';
15
- const alternateStyle = eclipse({
16
- language: 'de',
17
- baseUrl: 'https://tiles.versatiles.org',
18
- glyphs: 'https://static.datenhub.net/maps/fonts/{fontstack}/{range}.pbf'
19
- });
20
-
21
- const { Story } = defineMeta({
22
- title: 'Maplibre/Map',
23
- component: Map
24
- });
25
- </script>
26
-
27
- <Story
28
- asChild
29
- name="Default"
30
- play={async ({ canvasElement, step }) => {
31
- const canvas = within(canvasElement);
32
- const containerEl = canvas.getByTestId('map-container');
33
-
34
- await step('Map canvas renders', async () => {
35
- const mapEl = containerEl.querySelector('.maplibregl-canvas');
36
- expect(mapEl).toBeTruthy();
37
- });
38
- await step('Scale control renders', async () => {
39
- const el = containerEl.querySelector('.maplibregl-ctrl-scale');
40
- expect(el).toBeTruthy();
41
- });
42
- await step('Scale renders expected value', async () => {
43
- const el = containerEl.querySelector('.maplibregl-ctrl-scale');
44
- expect(el).toHaveTextContent('100 km');
45
- });
46
- await step('Navigation control renders', async () => {
47
- const zoomInEl = containerEl.querySelector('.maplibregl-ctrl-zoom-in');
48
- const zoomOutEl = containerEl.querySelector('.maplibregl-ctrl-zoom-out');
49
- expect(zoomInEl).toBeTruthy();
50
- expect(zoomInEl).toHaveRole('button');
51
- expect(zoomOutEl).toBeTruthy();
52
- expect(zoomOutEl).toHaveRole('button');
53
- });
54
-
55
- await step('Attribution control renders', async () => {
56
- const el = containerEl.querySelector('.maplibregl-ctrl-attrib');
57
- expect(el).toBeTruthy();
58
- });
59
-
60
- await step('Geocoder control renders', async () => {
61
- const el = containerEl.querySelector('.maplibregl-ctrl-geocoder');
62
- expect(el).toBeTruthy();
63
- });
64
- }}
65
- >
66
- <div class="container">
67
- <DesignTokens>
68
- <Map style={SWRDataLabLight}>
69
- <ScaleControl />
70
- <AttributionControl />
71
- <NavigationControl showCompass visualizePitch />
72
- <GeocoderControl languages="de" service="maptiler" key="V32kPHZjMa0Mkn6YvSzA" />
73
- </Map>
74
- </DesignTokens>
75
- </div>
76
- </Story>
77
-
78
- <Story asChild name="Globe Projection">
79
- <div class="container dark">
80
- <DesignTokens>
81
- <Map
82
- style={SWRDataLabLight}
83
- showDebug
84
- projection={{ type: 'globe' }}
85
- pitch={52}
86
- initialLocation={{ lat: 51.3, lng: 10.2, zoom: 3.5 }}
87
- >
88
- <ScaleControl />
89
- <AttributionControl />
90
- <NavigationControl showCompass visualizePitch />
91
- <GeocoderControl languages="de" service="maptiler" key="V32kPHZjMa0Mkn6YvSzA" />
92
- </Map>
93
- </DesignTokens>
94
- </div>
95
- </Story>
96
-
97
- <Story asChild name="Alternate Style">
98
- <div class="container dark">
99
- <DesignTokens>
100
- <Map style={alternateStyle}>
101
- <ScaleControl />
102
- <AttributionControl />
103
- <NavigationControl showCompass visualizePitch />
104
- <GeocoderControl languages="de" service="maptiler" key="V32kPHZjMa0Mkn6YvSzA" />
105
- </Map>
106
- </DesignTokens>
107
- </div>
108
- </Story>
109
-
110
- <style>
111
- .container {
112
- width: 100%;
113
- height: 600px;
114
- }
115
- .dark {
116
- color: rgb(230, 230, 230);
117
- }
118
- </style>
@@ -1,287 +0,0 @@
1
- <script lang="ts">
2
- import maplibre, { type ProjectionSpecification, type StyleSpecification } from 'maplibre-gl';
3
- import { onMount, onDestroy, type Snippet, getContext, hasContext } from 'svelte';
4
- import { createMapContext } from '../context.svelte.js';
5
- import { type Location } from '../types';
6
- import FallbackStyle from './FallbackStyle';
7
-
8
- interface MapProps {
9
- style?: StyleSpecification | string;
10
- initialLocation?: Location;
11
- allowRotation?: boolean;
12
- allowZoom?: boolean;
13
- minZoom?: number;
14
- maxZoom?: number;
15
- zoom?: number;
16
- center?: maplibre.LngLat;
17
- pitch?: number;
18
- bearing?: number;
19
- loading?: boolean;
20
- projection?: ProjectionSpecification;
21
- showDebug?: boolean;
22
- options?: any;
23
- children?: Snippet;
24
- }
25
-
26
- let {
27
- children,
28
- options,
29
- style = FallbackStyle,
30
- minZoom = 0,
31
- maxZoom = 14.99,
32
- zoom = $bindable(),
33
- center = $bindable(),
34
- pitch = $bindable(0),
35
- bearing = $bindable(0),
36
- loading = $bindable(true),
37
- projection = { type: 'mercator' },
38
- allowRotation = false,
39
- allowZoom = true,
40
- showDebug = false,
41
- initialLocation = { lat: 51.3, lng: 10.2, zoom: 5 }
42
- }: MapProps = $props();
43
-
44
- let container: HTMLElement;
45
-
46
- const mapContext = createMapContext();
47
- if (getContext('initialLocation') !== undefined && getContext('initialLocation') !== false) {
48
- initialLocation = getContext('initialLocation');
49
- }
50
-
51
- onMount(() => {
52
- mapContext.map = new maplibre.Map({
53
- container,
54
- style,
55
- minZoom,
56
- maxZoom,
57
- pitch,
58
- bearing,
59
- attributionControl: false, // Added via component
60
- center: [initialLocation.lng, initialLocation.lat],
61
- zoom: initialLocation.zoom,
62
- ...options
63
- });
64
-
65
- mapContext.map.on('load', () => {
66
- zoom = mapContext.map?.getZoom();
67
- center = mapContext.map?.getCenter();
68
- pitch = mapContext.map?.getPitch();
69
- bearing = mapContext.map?.getBearing();
70
- });
71
-
72
- mapContext.map.on('moveend', () => {
73
- zoom = mapContext.map?.getZoom();
74
- center = mapContext.map?.getCenter();
75
- pitch = mapContext.map?.getPitch();
76
- bearing = mapContext.map?.getBearing();
77
- });
78
- });
79
-
80
- onDestroy(async () => {
81
- if (mapContext.map) mapContext.map.remove();
82
- });
83
-
84
- $effect(() => {
85
- if (mapContext.map) mapContext.map.setStyle(style);
86
- });
87
- $effect(() => {
88
- if (mapContext.styleLoaded) {
89
- mapContext.map?.setProjection(projection);
90
- }
91
- });
92
-
93
- $effect(() => {
94
- if (allowZoom === false) {
95
- mapContext.map?.scrollZoom.disable();
96
- } else {
97
- mapContext.map?.scrollZoom.enable();
98
- }
99
- });
100
- </script>
101
-
102
- <div bind:this={container} class="container" data-testid="map-container">
103
- {#if mapContext.map}
104
- {#if children}
105
- {@render children()}
106
- {/if}
107
- {/if}
108
- {#if showDebug}
109
- <pre class="debug">
110
- {Object.entries({ ...center, zoom, allowZoom, allowRotation })
111
- .map(([key, val]) => `${key}: ${val}`)
112
- .join('\n')}</pre>
113
- {/if}
114
- </div>
115
-
116
- <style>
117
- .container {
118
- width: 100%;
119
- height: 100%;
120
- }
121
-
122
- .debug {
123
- position: absolute;
124
- top: 0;
125
- right: 0;
126
- background: rgba(0, 0, 0, 0.9);
127
- color: white;
128
- z-index: 1000;
129
- padding: 2px;
130
- font-family: monospace;
131
- }
132
- :global {
133
- .maplibregl-map {
134
- overflow: hidden;
135
- position: relative;
136
- }
137
-
138
- .maplibregl-canvas {
139
- left: 0;
140
- position: absolute;
141
- top: 0;
142
- }
143
-
144
- .maplibregl-map:fullscreen {
145
- height: 100%;
146
- width: 100%;
147
- }
148
-
149
- .maplibregl-canvas-container.maplibregl-interactive {
150
- cursor: grab;
151
- user-select: none;
152
- }
153
-
154
- .maplibregl-canvas-container.maplibregl-interactive.maplibregl-track-pointer {
155
- cursor: pointer;
156
- }
157
-
158
- .maplibregl-canvas-container.maplibregl-interactive:active {
159
- cursor: grabbing;
160
- }
161
-
162
- .maplibregl-canvas-container.maplibregl-touch-zoom-rotate,
163
- .maplibregl-canvas-container.maplibregl-touch-zoom-rotate .maplibregl-canvas {
164
- touch-action: pan-x pan-y;
165
- }
166
-
167
- .maplibregl-canvas-container.maplibregl-touch-drag-pan,
168
- .maplibregl-canvas-container.maplibregl-touch-drag-pan .maplibregl-canvas {
169
- touch-action: pinch-zoom;
170
- }
171
-
172
- .maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan,
173
- .maplibregl-canvas-container.maplibregl-touch-zoom-rotate.maplibregl-touch-drag-pan
174
- .maplibregl-canvas {
175
- touch-action: none;
176
- }
177
- .maplibregl-ctrl-bottom-left,
178
- .maplibregl-ctrl-bottom-right,
179
- .maplibregl-ctrl-top-left,
180
- .maplibregl-ctrl-top-right {
181
- position: absolute;
182
- z-index: 2;
183
- display: flex;
184
- flex-flow: column;
185
- gap: 0.75em;
186
- align-items: flex-start;
187
- }
188
-
189
- .maplibregl-ctrl-top-left {
190
- left: 0.5em;
191
- top: 0.5em;
192
- }
193
-
194
- .maplibregl-ctrl-top-right {
195
- right: 0;
196
- top: 0;
197
- }
198
-
199
- .maplibregl-ctrl-bottom-left {
200
- bottom: 0.5em;
201
- left: 0.5em;
202
- }
203
-
204
- .maplibregl-ctrl-bottom-right {
205
- bottom: 0.5em;
206
- right: 0.5em;
207
- }
208
-
209
- .maplibregl-ctrl {
210
- pointer-events: auto;
211
- transform: translate(0);
212
- }
213
-
214
- .maplibregl-ctrl-group {
215
- background: white;
216
- border: 1px solid rgba(0, 0, 0, 0.75);
217
- box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.075);
218
- border-radius: var(--br-small);
219
- overflow: hidden;
220
- }
221
-
222
- .maplibregl-ctrl-group button {
223
- background-color: transparent;
224
- border: 0;
225
- box-sizing: border-box;
226
- cursor: pointer;
227
- display: block;
228
- height: 29px;
229
- outline: none;
230
- padding: 0;
231
- width: 29px;
232
- }
233
-
234
- .maplibregl-ctrl-group button + button {
235
- border-top: 1px solid rgba(0, 0, 0, 0.35);
236
- }
237
-
238
- .maplibregl-ctrl button .maplibregl-ctrl-icon {
239
- background-position: 50%;
240
- background-repeat: no-repeat;
241
- display: block;
242
- height: 100%;
243
- width: 100%;
244
- }
245
-
246
- .maplibregl-ctrl button:disabled {
247
- cursor: not-allowed;
248
- }
249
-
250
- .maplibregl-ctrl button:disabled .maplibregl-ctrl-icon {
251
- opacity: 0.5;
252
- }
253
-
254
- .maplibregl-ctrl button:not(:disabled):hover {
255
- background-color: var(--gray-light-5);
256
- }
257
-
258
- .maplibregl-ctrl-group button:focus:focus-visible {
259
- box-shadow: 0 0 2px 2px #0096ff;
260
- }
261
-
262
- .maplibregl-ctrl-group button:focus:not(:focus-visible) {
263
- box-shadow: none;
264
- }
265
-
266
- .maplibregl-ctrl-group button:focus:first-child {
267
- border-radius: 4px 4px 0 0;
268
- }
269
-
270
- .maplibregl-ctrl-group button:focus:last-child {
271
- border-radius: 0 0 4px 4px;
272
- }
273
-
274
- .maplibregl-ctrl-group button:focus:only-child {
275
- border-radius: inherit;
276
- }
277
- .maplibregl-marker {
278
- left: 0;
279
- top: 0;
280
- position: absolute;
281
- will-change: transform;
282
- }
283
- .maplibregl-marker path {
284
- fill: var(--violet-dark-5);
285
- }
286
- }
287
- </style>
@@ -1,56 +0,0 @@
1
- <script module lang="ts">
2
- import { defineMeta } from '@storybook/addon-svelte-csf';
3
- import MapControl from './MapControl.svelte';
4
- import { SWRDataLabLight } from '../MapStyle';
5
- import DesignTokens from '../../DesignTokens/DesignTokens.svelte';
6
- import Switcher from '../../Switcher/Switcher.svelte';
7
- import Map from '../Map/Map.svelte';
8
-
9
- type ThemeMap = {
10
- [key: string]: StyleSpecification;
11
- };
12
-
13
- import { eclipse } from '@versatiles/style';
14
- import type { StyleSpecification } from 'maplibre-gl';
15
- const eclipseStyle = eclipse({
16
- language: 'de',
17
- baseUrl: 'https://tiles.versatiles.org',
18
- glyphs: 'https://static.datenhub.net/maps/fonts/{fontstack}/{range}.pbf'
19
- });
20
-
21
- const { Story } = defineMeta({
22
- title: 'Maplibre/Control/MapControl',
23
- component: MapControl
24
- });
25
-
26
- const themes: ThemeMap = {
27
- 'SWRDL Light': SWRDataLabLight,
28
- Eclipse: eclipseStyle
29
- };
30
-
31
- let currentTheme = $state('SWRDL Light');
32
- </script>
33
-
34
- <Story asChild name="Custom HTML Control">
35
- <DesignTokens>
36
- <div class="container">
37
- <Map style={themes[currentTheme]} initialLocation={{ lat: 51, lng: 10, zoom: 20 }}>
38
- <MapControl position="top-left">
39
- <Switcher
40
- options={Object.keys(themes)}
41
- bind:value={currentTheme}
42
- label="Select theme"
43
- size="small"
44
- />
45
- </MapControl>
46
- </Map>
47
- </div>
48
- </DesignTokens>
49
- </Story>
50
-
51
- <style>
52
- .container {
53
- width: 500px;
54
- height: 300px;
55
- }
56
- </style>