@panoramax/web-viewer 4.4.0-develop-3839b5a4 → 4.4.0-develop-f91f6758

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 (341) hide show
  1. package/{src → build}/components/core/Basic.js +22 -16
  2. package/{src → build}/components/core/CoverageMap.js +19 -14
  3. package/{src → build}/components/core/Editor.js +16 -16
  4. package/{src → build}/components/core/PhotoViewer.js +30 -29
  5. package/{src → build}/components/core/Viewer.js +21 -20
  6. package/build/components/core/index.js +10 -0
  7. package/build/components/index.js +11 -0
  8. package/build/components/index_photoviewer.js +6 -0
  9. package/{src → build}/components/layout/BottomDrawer.js +4 -4
  10. package/{src → build}/components/layout/CorneredGrid.js +1 -1
  11. package/{src → build}/components/layout/Mini.js +5 -4
  12. package/{src → build}/components/layout/Tabs.js +1 -1
  13. package/build/components/layout/index.js +9 -0
  14. package/{src → build}/components/menus/LocationPrecisionDoc.js +4 -6
  15. package/{src → build}/components/menus/MapBackground.js +4 -6
  16. package/{src → build}/components/menus/MapFilters.js +16 -21
  17. package/{src → build}/components/menus/MapLayers.js +20 -24
  18. package/{src → build}/components/menus/MapLegend.js +3 -4
  19. package/{src → build}/components/menus/MiniPictureLegend.js +3 -4
  20. package/{src → build}/components/menus/PictureLegend.js +10 -15
  21. package/{src → build}/components/menus/PictureMetadata.js +12 -19
  22. package/{src → build}/components/menus/PlayerOptions.js +5 -7
  23. package/{src → build}/components/menus/QualityScoreDoc.js +3 -4
  24. package/{src → build}/components/menus/ReportForm.js +8 -9
  25. package/{src → build}/components/menus/SemanticsDoc.js +3 -4
  26. package/{src → build}/components/menus/SemanticsDownload.js +3 -3
  27. package/{src → build}/components/menus/SemanticsFilters.js +7 -8
  28. package/{src → build}/components/menus/SemanticsList.js +11 -18
  29. package/{src → build}/components/menus/SemanticsMetadata.js +8 -11
  30. package/{src → build}/components/menus/Share.js +6 -7
  31. package/build/components/menus/index.js +22 -0
  32. package/build/components/menus/index_photoviewer.js +11 -0
  33. package/{src → build}/components/styles.js +0 -2
  34. package/{src → build}/components/ui/AnnotationsSwitch.js +6 -8
  35. package/{src → build}/components/ui/Button.js +1 -1
  36. package/{src → build}/components/ui/ButtonGroup.js +2 -1
  37. package/{src → build}/components/ui/CopyButton.js +4 -6
  38. package/{src → build}/components/ui/Grade.js +5 -5
  39. package/{src → build}/components/ui/GradeFilter.js +3 -3
  40. package/{src → build}/components/ui/IconSwitch.js +1 -1
  41. package/{src → build}/components/ui/LinkButton.js +1 -1
  42. package/{src → build}/components/ui/ListGroup.js +3 -3
  43. package/{src → build}/components/ui/ListItem.js +1 -1
  44. package/{src → build}/components/ui/Loader.js +8 -7
  45. package/{src → build}/components/ui/Map.js +38 -26
  46. package/{src → build}/components/ui/MapMore.js +7 -7
  47. package/{src → build}/components/ui/Photo.js +29 -27
  48. package/{src → build}/components/ui/Popup.js +4 -4
  49. package/{src → build}/components/ui/QualityScore.js +4 -4
  50. package/{src → build}/components/ui/SearchBar.js +6 -7
  51. package/{src → build}/components/ui/SemanticsEditor.js +14 -15
  52. package/{src → build}/components/ui/SemanticsTable.js +4 -5
  53. package/{src → build}/components/ui/Switch.js +1 -1
  54. package/{src → build}/components/ui/TogglableGroup.js +4 -4
  55. package/build/components/ui/index.js +29 -0
  56. package/build/components/ui/index_photoviewer.js +21 -0
  57. package/{src → build}/components/ui/widgets/CopyCoordinates.js +5 -5
  58. package/{src → build}/components/ui/widgets/GeoSearch.js +10 -10
  59. package/{src → build}/components/ui/widgets/Legend.js +9 -8
  60. package/{src → build}/components/ui/widgets/LevelSelect.js +9 -7
  61. package/{src → build}/components/ui/widgets/MapFiltersButton.js +5 -5
  62. package/{src → build}/components/ui/widgets/MapLayersButton.js +5 -5
  63. package/{src → build}/components/ui/widgets/OSMEditors.js +8 -8
  64. package/{src → build}/components/ui/widgets/PictureLegendActions.js +4 -4
  65. package/{src → build}/components/ui/widgets/Player.js +6 -7
  66. package/{src → build}/components/ui/widgets/SemanticsFiltersButton.js +6 -7
  67. package/{src → build}/components/ui/widgets/Zoom.js +6 -6
  68. package/build/components/ui/widgets/index.js +16 -0
  69. package/build/components/ui/widgets/index_photoviewer.js +7 -0
  70. package/build/editor.html +94 -10
  71. package/{src → build}/img/arrow_triangle.svg +0 -1
  72. package/{src → build}/img/arrow_turn.svg +0 -1
  73. package/build/index.html +111 -1
  74. package/build/index.js +6 -95
  75. package/build/index_photoviewer.js +4 -0
  76. package/build/map.html +97 -1
  77. package/build/package.json +141 -0
  78. package/build/photo.html +85 -1
  79. package/build/servers.js +3 -4
  80. package/{src → build}/utils/API.js +33 -33
  81. package/{src → build}/utils/InitParameters.js +11 -9
  82. package/{src → build}/utils/MapStyleComposer.js +39 -37
  83. package/{src → build}/utils/PhotoAdapter.js +1 -0
  84. package/{src → build}/utils/PresetsManager.js +4 -4
  85. package/{src → build}/utils/SemanticsMapProtocol.js +3 -4
  86. package/{src → build}/utils/URLHandler.js +16 -14
  87. package/{src → build}/utils/geocoder.js +5 -5
  88. package/{src → build}/utils/i18n.js +21 -20
  89. package/build/utils/index.js +17 -0
  90. package/build/utils/index_photoviewer.js +14 -0
  91. package/{src → build}/utils/indoor.js +9 -5
  92. package/{src → build}/utils/map.js +15 -11
  93. package/{src → build}/utils/picture.js +22 -17
  94. package/{src → build}/utils/semantics.js +9 -5
  95. package/{src → build}/utils/utils.js +8 -4
  96. package/{src → build}/utils/widgets.js +2 -2
  97. package/build/viewer.html +120 -35
  98. package/build/viewer_indoor.html +90 -8
  99. package/build/widgets.html +410 -1
  100. package/package.json +81 -204
  101. package/.dockerignore +0 -7
  102. package/.gitlab-ci.yml +0 -78
  103. package/CHANGELOG.md +0 -853
  104. package/CODE_OF_CONDUCT.md +0 -134
  105. package/Dockerfile +0 -14
  106. package/build/index.css +0 -36
  107. package/build/index.css.map +0 -1
  108. package/build/index.js.map +0 -1
  109. package/build/photoviewer.css +0 -36
  110. package/build/photoviewer.css.map +0 -1
  111. package/build/photoviewer.js +0 -86
  112. package/build/photoviewer.js.map +0 -1
  113. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff +0 -0
  114. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff2 +0 -0
  115. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff +0 -0
  116. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff2 +0 -0
  117. package/config/env.js +0 -104
  118. package/config/getHttpsConfig.js +0 -69
  119. package/config/getPackageJson.js +0 -25
  120. package/config/jest/babelTransform.js +0 -29
  121. package/config/jest/cssTransform.js +0 -14
  122. package/config/jest/fileTransform.js +0 -40
  123. package/config/jest/mocks.js +0 -230
  124. package/config/modules.js +0 -134
  125. package/config/paths.js +0 -76
  126. package/config/pnpTs.js +0 -35
  127. package/config/webpack/persistentCache/createEnvironmentHash.js +0 -9
  128. package/config/webpack.config.js +0 -825
  129. package/config/webpackDevServer.config.js +0 -131
  130. package/docs/03_URL_settings.md +0 -218
  131. package/docs/05_Compatibility.md +0 -83
  132. package/docs/09_Develop.md +0 -141
  133. package/docs/90_Releases.md +0 -27
  134. package/docs/images/class_diagram.drawio +0 -144
  135. package/docs/images/class_diagram.jpg +0 -0
  136. package/docs/images/comparative_3drender.jpg +0 -0
  137. package/docs/images/indoor_level.png +0 -0
  138. package/docs/images/screenshot.jpg +0 -0
  139. package/docs/index.md +0 -159
  140. package/docs/reference/components/core/Basic.md +0 -211
  141. package/docs/reference/components/core/CoverageMap.md +0 -220
  142. package/docs/reference/components/core/Editor.md +0 -252
  143. package/docs/reference/components/core/PhotoViewer.md +0 -320
  144. package/docs/reference/components/core/Viewer.md +0 -398
  145. package/docs/reference/components/layout/BottomDrawer.md +0 -35
  146. package/docs/reference/components/layout/CorneredGrid.md +0 -29
  147. package/docs/reference/components/layout/Mini.md +0 -45
  148. package/docs/reference/components/layout/Tabs.md +0 -46
  149. package/docs/reference/components/menus/LocationPrecisionDoc.md +0 -15
  150. package/docs/reference/components/menus/MapBackground.md +0 -32
  151. package/docs/reference/components/menus/MapFilters.md +0 -37
  152. package/docs/reference/components/menus/MapLayers.md +0 -15
  153. package/docs/reference/components/menus/MapLegend.md +0 -32
  154. package/docs/reference/components/menus/MiniPictureLegend.md +0 -15
  155. package/docs/reference/components/menus/PictureLegend.md +0 -45
  156. package/docs/reference/components/menus/PictureMetadata.md +0 -32
  157. package/docs/reference/components/menus/PlayerOptions.md +0 -15
  158. package/docs/reference/components/menus/QualityScoreDoc.md +0 -15
  159. package/docs/reference/components/menus/ReportForm.md +0 -15
  160. package/docs/reference/components/menus/SemanticsDoc.md +0 -15
  161. package/docs/reference/components/menus/SemanticsDownload.md +0 -15
  162. package/docs/reference/components/menus/SemanticsFilters.md +0 -33
  163. package/docs/reference/components/menus/SemanticsList.md +0 -97
  164. package/docs/reference/components/menus/SemanticsMetadata.md +0 -15
  165. package/docs/reference/components/menus/ShareMenu.md +0 -32
  166. package/docs/reference/components/ui/AnnotationsSwitch.md +0 -32
  167. package/docs/reference/components/ui/Button.md +0 -40
  168. package/docs/reference/components/ui/ButtonGroup.md +0 -36
  169. package/docs/reference/components/ui/CopyButton.md +0 -41
  170. package/docs/reference/components/ui/Grade.md +0 -32
  171. package/docs/reference/components/ui/GradeFilter.md +0 -42
  172. package/docs/reference/components/ui/IconSwitch.md +0 -53
  173. package/docs/reference/components/ui/LinkButton.md +0 -45
  174. package/docs/reference/components/ui/ListGroup.md +0 -22
  175. package/docs/reference/components/ui/ListItem.md +0 -39
  176. package/docs/reference/components/ui/Loader.md +0 -56
  177. package/docs/reference/components/ui/Map.md +0 -150
  178. package/docs/reference/components/ui/MapMore.md +0 -150
  179. package/docs/reference/components/ui/Photo.md +0 -495
  180. package/docs/reference/components/ui/Popup.md +0 -56
  181. package/docs/reference/components/ui/ProgressBar.md +0 -32
  182. package/docs/reference/components/ui/QualityScore.md +0 -45
  183. package/docs/reference/components/ui/SearchBar.md +0 -63
  184. package/docs/reference/components/ui/SemanticsEditor.md +0 -113
  185. package/docs/reference/components/ui/SemanticsTable.md +0 -32
  186. package/docs/reference/components/ui/Switch.md +0 -49
  187. package/docs/reference/components/ui/TogglableGroup.md +0 -39
  188. package/docs/reference/components/ui/widgets/CopyCoordinates.md +0 -32
  189. package/docs/reference/components/ui/widgets/GeoSearch.md +0 -36
  190. package/docs/reference/components/ui/widgets/Legend.md +0 -58
  191. package/docs/reference/components/ui/widgets/LevelSelect.md +0 -16
  192. package/docs/reference/components/ui/widgets/MapFiltersButton.md +0 -37
  193. package/docs/reference/components/ui/widgets/MapLayersButton.md +0 -15
  194. package/docs/reference/components/ui/widgets/OSMEditors.md +0 -15
  195. package/docs/reference/components/ui/widgets/PictureLegendActions.md +0 -32
  196. package/docs/reference/components/ui/widgets/Player.md +0 -34
  197. package/docs/reference/components/ui/widgets/SemanticsFiltersButton.md +0 -15
  198. package/docs/reference/components/ui/widgets/Zoom.md +0 -15
  199. package/docs/reference/utils/API.md +0 -389
  200. package/docs/reference/utils/InitParameters.md +0 -68
  201. package/docs/reference/utils/MapStyleComposer.md +0 -408
  202. package/docs/reference/utils/PanoraMapProtocol.md +0 -28
  203. package/docs/reference/utils/PresetsManager.md +0 -43
  204. package/docs/reference/utils/SemanticsMapProtocol.md +0 -43
  205. package/docs/reference/utils/URLHandler.md +0 -114
  206. package/docs/reference.md +0 -99
  207. package/docs/shortcuts.md +0 -11
  208. package/docs/tutorials/aerial_imagery.md +0 -21
  209. package/docs/tutorials/authentication.md +0 -10
  210. package/docs/tutorials/custom_widgets.md +0 -59
  211. package/docs/tutorials/indoor_maps.md +0 -50
  212. package/docs/tutorials/map_style.md +0 -83
  213. package/docs/tutorials/migrate_v4.md +0 -153
  214. package/docs/tutorials/migrate_v5.md +0 -103
  215. package/docs/tutorials/semantics_overlays.md +0 -74
  216. package/docs/tutorials/synced_coverage.md +0 -43
  217. package/mkdocs.yml +0 -131
  218. package/public/editor.html +0 -53
  219. package/public/index.html +0 -70
  220. package/public/map.html +0 -55
  221. package/public/photo.html +0 -43
  222. package/public/servers.js +0 -15
  223. package/public/viewer.html +0 -79
  224. package/public/viewer_indoor.html +0 -48
  225. package/public/widgets.html +0 -366
  226. package/scripts/build.js +0 -217
  227. package/scripts/doc.js +0 -79
  228. package/scripts/start.js +0 -172
  229. package/scripts/test.js +0 -52
  230. package/src/components/core/index.js +0 -12
  231. package/src/components/index.js +0 -13
  232. package/src/components/index_photoviewer.js +0 -8
  233. package/src/components/layout/index.js +0 -9
  234. package/src/components/menus/index.js +0 -22
  235. package/src/components/menus/index_photoviewer.js +0 -13
  236. package/src/components/ui/index.js +0 -29
  237. package/src/components/ui/index_photoviewer.js +0 -23
  238. package/src/components/ui/widgets/index.js +0 -16
  239. package/src/components/ui/widgets/index_photoviewer.js +0 -9
  240. package/src/index.js +0 -8
  241. package/src/index_photoviewer.js +0 -6
  242. package/src/utils/index.js +0 -17
  243. package/src/utils/index_photoviewer.js +0 -16
  244. package/tests/components/core/Basic.test.js +0 -168
  245. package/tests/components/core/BasicMock.js +0 -25
  246. package/tests/components/core/CoverageMap.test.js +0 -20
  247. package/tests/components/core/Editor.test.js +0 -20
  248. package/tests/components/core/PhotoViewer.test.js +0 -57
  249. package/tests/components/core/Viewer.test.js +0 -85
  250. package/tests/components/core/__snapshots__/PhotoViewer.test.js.snap +0 -96
  251. package/tests/components/core/__snapshots__/Viewer.test.js.snap +0 -188
  252. package/tests/components/ui/CopyButton.test.js +0 -52
  253. package/tests/components/ui/Loader.test.js +0 -55
  254. package/tests/components/ui/Map.test.js +0 -145
  255. package/tests/components/ui/Photo.test.js +0 -437
  256. package/tests/components/ui/Popup.test.js +0 -26
  257. package/tests/components/ui/QualityScore.test.js +0 -18
  258. package/tests/components/ui/SearchBar.test.js +0 -110
  259. package/tests/components/ui/__snapshots__/CopyButton.test.js.snap +0 -33
  260. package/tests/components/ui/__snapshots__/Loader.test.js.snap +0 -56
  261. package/tests/components/ui/__snapshots__/Map.test.js.snap +0 -16
  262. package/tests/components/ui/__snapshots__/Photo.test.js.snap +0 -263
  263. package/tests/components/ui/__snapshots__/Popup.test.js.snap +0 -29
  264. package/tests/components/ui/__snapshots__/QualityScore.test.js.snap +0 -11
  265. package/tests/components/ui/__snapshots__/SearchBar.test.js.snap +0 -65
  266. package/tests/data/Map_geocoder_ban.json +0 -36
  267. package/tests/data/Map_geocoder_nominatim.json +0 -41
  268. package/tests/data/Viewer_pictures_1.json +0 -148
  269. package/tests/setupTests.js +0 -5
  270. package/tests/utils/API.test.js +0 -752
  271. package/tests/utils/InitParameters.test.js +0 -599
  272. package/tests/utils/MapStyleComposer.test.js +0 -697
  273. package/tests/utils/PresetsManager.test.js +0 -123
  274. package/tests/utils/URLHandler.test.js +0 -587
  275. package/tests/utils/__snapshots__/API.test.js.snap +0 -40
  276. package/tests/utils/__snapshots__/MapStyleComposer.test.js.snap +0 -767
  277. package/tests/utils/__snapshots__/URLHandler.test.js.snap +0 -21
  278. package/tests/utils/__snapshots__/geocoder.test.js.snap +0 -37
  279. package/tests/utils/__snapshots__/map.test.js.snap +0 -1249
  280. package/tests/utils/__snapshots__/picture.test.js.snap +0 -327
  281. package/tests/utils/__snapshots__/widgets.test.js.snap +0 -19
  282. package/tests/utils/geocoder.test.js +0 -37
  283. package/tests/utils/i18n.test.js +0 -111
  284. package/tests/utils/map.test.js +0 -200
  285. package/tests/utils/picture.test.js +0 -745
  286. package/tests/utils/semantics.test.js +0 -174
  287. package/tests/utils/utils.test.js +0 -358
  288. package/tests/utils/widgets.test.js +0 -31
  289. /package/{src → build}/components/core/Basic.css +0 -0
  290. /package/{src → build}/components/core/CoverageMap.css +0 -0
  291. /package/{src → build}/components/core/Editor.css +0 -0
  292. /package/{src → build}/components/core/PhotoViewer.css +0 -0
  293. /package/{src → build}/components/core/Viewer.css +0 -0
  294. /package/{src → build}/components/ui/ButtonGroup.css +0 -0
  295. /package/{src → build}/components/ui/Map.css +0 -0
  296. /package/{src → build}/components/ui/Photo.css +0 -0
  297. /package/{src → build}/components/ui/ProgressBar.js +0 -0
  298. /package/{src → build}/components/ui/widgets/GeoSearch.css +0 -0
  299. /package/{src → build}/components/ui/widgets/LevelSelect.css +0 -0
  300. /package/{src → build}/components/ui/widgets/Player.css +0 -0
  301. /package/{public → build}/favicon.ico +0 -0
  302. /package/{src → build}/img/arrow_360.svg +0 -0
  303. /package/{src → build}/img/arrow_flat.svg +0 -0
  304. /package/{src → build}/img/bg_aerial.jpg +0 -0
  305. /package/{src → build}/img/bg_streets.jpg +0 -0
  306. /package/{src → build}/img/loader_base.jpg +0 -0
  307. /package/{src → build}/img/logo_dead.svg +0 -0
  308. /package/{src → build}/img/marker.svg +0 -0
  309. /package/{src → build}/img/marker_blue.svg +0 -0
  310. /package/{src → build}/img/osm.svg +0 -0
  311. /package/{src → build}/img/panoramax.svg +0 -0
  312. /package/{src → build}/img/switch_big.svg +0 -0
  313. /package/{src → build}/img/switch_mini.svg +0 -0
  314. /package/{src → build}/img/wd.svg +0 -0
  315. /package/{src → build}/translations/ar.json +0 -0
  316. /package/{src → build}/translations/be.json +0 -0
  317. /package/{src → build}/translations/br.json +0 -0
  318. /package/{src → build}/translations/cy.json +0 -0
  319. /package/{src → build}/translations/da.json +0 -0
  320. /package/{src → build}/translations/de.json +0 -0
  321. /package/{src → build}/translations/en.json +0 -0
  322. /package/{src → build}/translations/eo.json +0 -0
  323. /package/{src → build}/translations/es.json +0 -0
  324. /package/{src → build}/translations/fi.json +0 -0
  325. /package/{src → build}/translations/fr.json +0 -0
  326. /package/{src → build}/translations/hu.json +0 -0
  327. /package/{src → build}/translations/it.json +0 -0
  328. /package/{src → build}/translations/ja.json +0 -0
  329. /package/{src → build}/translations/ko.json +0 -0
  330. /package/{src → build}/translations/nl.json +0 -0
  331. /package/{src → build}/translations/nn.json +0 -0
  332. /package/{src → build}/translations/pl.json +0 -0
  333. /package/{src → build}/translations/pt.json +0 -0
  334. /package/{src → build}/translations/pt_BR.json +0 -0
  335. /package/{src → build}/translations/sv.json +0 -0
  336. /package/{src → build}/translations/ti.json +0 -0
  337. /package/{src → build}/translations/tr.json +0 -0
  338. /package/{src → build}/translations/uk.json +0 -0
  339. /package/{src → build}/translations/zh_Hant.json +0 -0
  340. /package/{src → build}/utils/PanoraMapProtocol.js +0 -0
  341. /package/{src → build}/utils/services.js +0 -0
@@ -1,697 +0,0 @@
1
- import MapStyleComposer from "../../src/utils/MapStyleComposer";
2
-
3
- const createParent = () => ({
4
- map: {
5
- _semMapProtocol: {
6
- clearCache: jest.fn(),
7
- },
8
- setStyle: jest.fn(),
9
- getStyle: jest.fn(),
10
- },
11
- });
12
-
13
- const getLayersRange = () => ({
14
- basemaps: {
15
- streets: { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] },
16
- aerial: { sources: { ign: { type: "raster" } }, layers: [{ id: "ign" }] }
17
- },
18
- dataUnderlays: {
19
- du1: { sources: { du1: { type: "vector" } }, layers: [{ id: "du1" }] },
20
- du2: { sources: { du2: { type: "vector" } }, layers: [{ id: "du2" }] },
21
- },
22
- panoramax: {
23
- default: { sources: { geovisio: { type: "vector" } }, layers: [{ id: "geovisio_pictures" }] },
24
- metacatalog: { sources: { geovisio_mc: { type: "vector" } }, layers: [{ id: "geovisio_pictures" }] },
25
- "1234-5678-9101": { sources: { geovisio_u1: { type: "vector" } }, layers: [{ id: "geovisio_pictures" }] },
26
- },
27
- dataOverlays: {
28
- do1: { sources: { do1: { type: "vector" } }, layers: [{ id: "do1" }] },
29
- do2: { sources: { do2: { type: "vector" } }, layers: [{ id: "do2" }] },
30
- },
31
- });
32
-
33
- describe("constructor", () => {
34
- it("works", () => {
35
- const p = createParent();
36
- const msc = new MapStyleComposer(p);
37
- expect(msc.layerRanges).toMatchSnapshot();
38
- expect(msc.basemap).toBeNull();
39
- expect(msc.dataUnderlays).toEqual(new Set());
40
- expect(msc.panoramax).toBeNull();
41
- expect(msc.dataOverlays).toEqual(new Set());
42
- expect(msc.panoramaxFilters).toEqual({});
43
- expect(msc.panoramaxTheme).toBe("default");
44
- });
45
- });
46
-
47
- describe("getMapStyle", () => {
48
- it("works with defaults", () => {
49
- const p = createParent();
50
- const msc = new MapStyleComposer(p);
51
- expect(msc.getMapStyle()).toMatchSnapshot();
52
- });
53
-
54
- it("works with complete data", () => {
55
- const p = createParent();
56
- const msc = new MapStyleComposer(p);
57
- msc.layerRanges = getLayersRange();
58
- msc.basemap = "aerial";
59
- msc.dataUnderlays = new Set(["du1", "du2"]);
60
- msc.panoramax = "metacatalog";
61
- msc.dataOverlays = new Set(["do1", "do2"]);
62
- msc.detachedSources = { ds1: { type: "vector" } };
63
- expect(msc.getMapStyle()).toMatchSnapshot();
64
- });
65
- });
66
-
67
- describe("registerSource", () => {
68
- it("works with unknown source", () => {
69
- const p = createParent();
70
- const msc = new MapStyleComposer(p);
71
- msc.layerRanges = getLayersRange();
72
- msc.registerSource("unknownsource", { type: "vector", bla: "bla" });
73
- expect(msc.detachedSources.unknownsource).toEqual({ type: "vector", bla: "bla" });
74
- });
75
-
76
- it("works with existing source", () => {
77
- const p = createParent();
78
- const msc = new MapStyleComposer(p);
79
- msc.layerRanges = getLayersRange();
80
- msc.registerSource("do1", msc.layerRanges.dataOverlays.do1.sources.do1);
81
- expect(msc.detachedSources).toEqual({});
82
- });
83
- });
84
-
85
- describe("registerLayer", () => {
86
- it("works for overlays", () => {
87
- const p = createParent();
88
- const msc = new MapStyleComposer(p);
89
- msc.layerRanges.dataOverlays = {
90
- tfsigns: {
91
- sources: { tfsigns: { type: "vector" } }
92
- }
93
- };
94
- msc.registerLayer({ id: "tf1", source: "tfsigns" });
95
- expect(msc.layerRanges.dataOverlays).toMatchSnapshot();
96
- });
97
-
98
- it("works for underlays", () => {
99
- const p = createParent();
100
- const msc = new MapStyleComposer(p);
101
- msc.layerRanges.dataUnderlays = {
102
- tfsigns: {
103
- sources: { tfsigns: { type: "vector" } }
104
- }
105
- };
106
- msc.registerLayer({ id: "tf1", source: "tfsigns" }, "toto");
107
- expect(msc.layerRanges.dataUnderlays).toMatchSnapshot();
108
- });
109
-
110
- it("works for indoor", () => {
111
- const p = createParent();
112
- const msc = new MapStyleComposer(p);
113
- msc.layerRanges.dataUnderlays = {
114
- indoorequal: {
115
- sources: { indoorequal: { type: "vector" } }
116
- }
117
- };
118
- msc.registerLayer({ id: "indoor-area", source: "indoorequal" });
119
- expect(msc.layerRanges.dataUnderlays).toMatchSnapshot();
120
- });
121
-
122
- it("works with detached source", () => {
123
- const p = createParent();
124
- const msc = new MapStyleComposer(p);
125
- msc.detachedSources = { ds1: { type: "vector" } };
126
- msc.registerLayer({ id: "somelayer", source: "ds1" });
127
- expect(msc.layerRanges.dataOverlays).toMatchSnapshot();
128
- expect(msc.detachedSources).toEqual({});
129
- });
130
- });
131
-
132
- describe("addBasemap", () => {
133
- it("works with obj style", async () => {
134
- const p = createParent();
135
- const msc = new MapStyleComposer(p);
136
- msc.dispatchEvent = jest.fn();
137
- msc.switchBasemap = jest.fn();
138
- await msc.addBasemap("streets", { sources: { bla: { type: "vector" } }, layers: [{ id: "streets" }] });
139
- expect(msc.layerRanges.basemaps).toMatchSnapshot();
140
- expect(msc.dispatchEvent.mock.calls).toEqual([[new CustomEvent("basemap-added")]]);
141
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("basemap-added");
142
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ basemap: "streets" });
143
- expect(msc.switchBasemap.mock.calls).toEqual([]);
144
- });
145
-
146
- it("works with str style", async () => {
147
- const p = createParent();
148
- const msc = new MapStyleComposer(p);
149
- msc.dispatchEvent = jest.fn();
150
- msc.switchBasemap = jest.fn();
151
- global.fetch = () => Promise.resolve({ json: () => ({ sources: { bla: { type: "vector" } }, layers: [{ id: "streets" }] }) });
152
- await msc.addBasemap("streets", "https://panoramax.fr/style.json");
153
- expect(msc.layerRanges.basemaps).toMatchSnapshot();
154
- expect(msc.dispatchEvent.mock.calls).toEqual([[new CustomEvent("basemap-added")]]);
155
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("basemap-added");
156
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ basemap: "streets" });
157
- expect(msc.switchBasemap.mock.calls).toEqual([]);
158
- });
159
-
160
- it("switches on basemap", async () => {
161
- const p = createParent();
162
- const msc = new MapStyleComposer(p);
163
- msc.switchBasemap = jest.fn();
164
- await msc.addBasemap("streets", { sources: { bla: { type: "vector" } }, layers: [{ id: "streets" }] }, true);
165
- expect(msc.switchBasemap.mock.calls).toEqual([["streets"]]);
166
- });
167
- });
168
-
169
- describe("switchBasemap", () => {
170
- it("works", async () => {
171
- const p = createParent();
172
- const msc = new MapStyleComposer(p);
173
- msc.layerRanges = getLayersRange();
174
- msc.dispatchEvent = jest.fn();
175
- msc.updateMapStyle = jest.fn();
176
- expect(msc.basemap).toBeNull();
177
-
178
- await msc.switchBasemap("streets");
179
-
180
- expect(msc.basemap).toBe("streets");
181
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
182
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
183
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("basemap-changed");
184
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ basemap: "streets" });
185
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
186
- });
187
-
188
- it("waits for basemap to be ready", async () => {
189
- const p = createParent();
190
- const msc = new MapStyleComposer(p);
191
- msc.dispatchEvent = jest.fn();
192
- msc.updateMapStyle = jest.fn();
193
- expect(msc.basemap).toBeNull();
194
-
195
- // Delay basemap availability
196
- setTimeout(() => {
197
- msc.layerRanges.basemaps.streets = getLayersRange().basemaps.streets;
198
- }, 1000);
199
-
200
- await msc.switchBasemap("streets");
201
-
202
- expect(msc.basemap).toBe("streets");
203
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
204
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
205
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("basemap-changed");
206
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ basemap: "streets" });
207
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
208
- });
209
-
210
- it("skips if already selected", async () => {
211
- const p = createParent();
212
- const msc = new MapStyleComposer(p);
213
- msc.layerRanges = getLayersRange();
214
- msc.dispatchEvent = jest.fn();
215
- msc.updateMapStyle = jest.fn();
216
- msc.basemap = "streets";
217
-
218
- await msc.switchBasemap("streets");
219
-
220
- expect(msc.basemap).toBe("streets");
221
- expect(msc.dispatchEvent.mock.calls.length).toEqual(0);
222
- expect(msc.updateMapStyle.mock.calls.length).toEqual(0);
223
- });
224
- });
225
-
226
- describe("hasManyBasemaps", () => {
227
- it("works with no basemaps", () => {
228
- const p = createParent();
229
- const msc = new MapStyleComposer(p);
230
- expect(msc.hasManyBasemaps()).toBe(false);
231
- });
232
-
233
- it("works with single basemap", () => {
234
- const p = createParent();
235
- const msc = new MapStyleComposer(p);
236
- msc.layerRanges.basemaps = { streets: getLayersRange().basemaps.streets };
237
- expect(msc.hasManyBasemaps()).toBe(false);
238
- });
239
-
240
- it("works with many basemaps", () => {
241
- const p = createParent();
242
- const msc = new MapStyleComposer(p);
243
- msc.layerRanges = getLayersRange();
244
- expect(msc.hasManyBasemaps()).toBe(true);
245
- });
246
- });
247
-
248
- describe("hasStreetsAerialBasemaps", () => {
249
- it("works with no basemaps", () => {
250
- const p = createParent();
251
- const msc = new MapStyleComposer(p);
252
- expect(msc.hasStreetsAerialBasemaps()).toBe(false);
253
- });
254
-
255
- it("works with single basemap", () => {
256
- const p = createParent();
257
- const msc = new MapStyleComposer(p);
258
- msc.layerRanges.basemaps = { streets: getLayersRange().basemaps.streets };
259
- expect(msc.hasStreetsAerialBasemaps()).toBe(false);
260
- });
261
-
262
- it("works with many basemaps", () => {
263
- const p = createParent();
264
- const msc = new MapStyleComposer(p);
265
- msc.layerRanges = getLayersRange();
266
- expect(msc.hasStreetsAerialBasemaps()).toBe(true);
267
- });
268
- });
269
-
270
- describe("hasComplementaryBasemaps", () => {
271
- it("works with no basemaps", () => {
272
- const p = createParent();
273
- const msc = new MapStyleComposer(p);
274
- expect(msc.hasComplementaryBasemaps()).toBe(false);
275
- });
276
-
277
- it("works with 1 other basemap", () => {
278
- const p = createParent();
279
- const msc = new MapStyleComposer(p);
280
- msc.layerRanges.basemaps = { notstreets: getLayersRange().basemaps.streets };
281
- expect(msc.hasComplementaryBasemaps()).toBe(true);
282
- });
283
-
284
- it("works with main basemaps", () => {
285
- const p = createParent();
286
- const msc = new MapStyleComposer(p);
287
- msc.layerRanges = getLayersRange();
288
- expect(msc.hasComplementaryBasemaps()).toBe(false);
289
- });
290
-
291
- it("works with main basemaps & other", () => {
292
- const p = createParent();
293
- const msc = new MapStyleComposer(p);
294
- msc.layerRanges = getLayersRange();
295
- msc.layerRanges.basemaps.notstreets = msc.layerRanges.basemaps.streets;
296
- expect(msc.hasComplementaryBasemaps()).toBe(true);
297
- });
298
- });
299
-
300
- describe("addDataUnderlay", () => {
301
- it("works with obj style", () => {
302
- const p = createParent();
303
- const msc = new MapStyleComposer(p);
304
- msc.dispatchEvent = jest.fn();
305
- msc.switchDataUnderlayVisibility = jest.fn();
306
- msc.addDataUnderlay("bla", { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] });
307
- expect(msc.layerRanges.dataUnderlays).toMatchSnapshot();
308
- expect(msc.dispatchEvent.mock.calls).toEqual([[new CustomEvent("dataunderlay-added")]]);
309
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataunderlay-added");
310
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataUnderlay: "bla" });
311
- expect(msc.switchDataUnderlayVisibility.mock.calls).toEqual([]);
312
- });
313
-
314
- it("switches on", () => {
315
- const p = createParent();
316
- const msc = new MapStyleComposer(p);
317
- msc.switchDataUnderlayVisibility = jest.fn();
318
- msc.addDataUnderlay("bla", { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] }, true);
319
- expect(msc.switchDataUnderlayVisibility.mock.calls).toEqual([["bla", true]]);
320
- });
321
- });
322
-
323
- describe("switchDataUnderlayVisibility", () => {
324
- it("switches on", async () => {
325
- const p = createParent();
326
- const msc = new MapStyleComposer(p);
327
- msc.layerRanges = getLayersRange();
328
- msc.dispatchEvent = jest.fn();
329
- msc.updateMapStyle = jest.fn();
330
- expect(msc.dataUnderlays.size).toBe(0);
331
-
332
- await msc.switchDataUnderlayVisibility("du1", true);
333
-
334
- expect([...msc.dataUnderlays]).toEqual(["du1"]);
335
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
336
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
337
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataunderlay-changed");
338
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataUnderlay: "du1", visible: true });
339
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
340
- });
341
-
342
- it("waits for layer to be ready", async () => {
343
- const p = createParent();
344
- const msc = new MapStyleComposer(p);
345
- msc.dispatchEvent = jest.fn();
346
- msc.updateMapStyle = jest.fn();
347
- expect(msc.dataUnderlays.size).toBe(0);
348
-
349
- // Delay layer availability
350
- setTimeout(() => {
351
- msc.layerRanges.dataUnderlays.du1 = getLayersRange().dataUnderlays.du1;
352
- }, 1000);
353
-
354
- await msc.switchDataUnderlayVisibility("du1", true);
355
-
356
- expect([...msc.dataUnderlays]).toEqual(["du1"]);
357
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
358
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
359
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataunderlay-changed");
360
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataUnderlay: "du1", visible: true });
361
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
362
- });
363
-
364
- it("switches off", async () => {
365
- const p = createParent();
366
- const msc = new MapStyleComposer(p);
367
- msc.layerRanges = getLayersRange();
368
- msc.dispatchEvent = jest.fn();
369
- msc.updateMapStyle = jest.fn();
370
- msc.dataUnderlays = new Set(["du1"]);
371
-
372
- await msc.switchDataUnderlayVisibility("du1", false);
373
-
374
- expect(msc.dataUnderlays.size).toBe(0);
375
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
376
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
377
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataunderlay-changed");
378
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataUnderlay: "du1", visible: false });
379
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
380
- });
381
- });
382
-
383
- describe("addPanoramaxEndpoint", () => {
384
- it("works with obj style", () => {
385
- const p = createParent();
386
- const msc = new MapStyleComposer(p);
387
- msc.dispatchEvent = jest.fn();
388
- msc.switchPanoramaxEndpoint = jest.fn();
389
- msc.addPanoramaxEndpoint("bla", { sources: { bla: { type: "vector", tiles: ["https://panoramax.fr/x/y/z"] } }, layers: [{ id: "bla" }] });
390
- expect(msc.layerRanges.panoramax).toMatchSnapshot();
391
- expect(msc.dispatchEvent.mock.calls).toEqual([[new CustomEvent("panoramax-added")]]);
392
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("panoramax-added");
393
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ endpoint: "bla" });
394
- expect(msc.switchPanoramaxEndpoint.mock.calls).toEqual([]);
395
- });
396
-
397
- it("switches on", () => {
398
- const p = createParent();
399
- const msc = new MapStyleComposer(p);
400
- msc.switchPanoramaxEndpoint = jest.fn();
401
- msc.addPanoramaxEndpoint("bla", { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] }, true);
402
- expect(msc.switchPanoramaxEndpoint.mock.calls).toEqual([["bla"]]);
403
- });
404
- });
405
-
406
- describe("switchPanoramaxEndpoint", () => {
407
- it("switches on", async () => {
408
- const p = createParent();
409
- const msc = new MapStyleComposer(p);
410
- msc.layerRanges = getLayersRange();
411
- msc.dispatchEvent = jest.fn();
412
- msc.updateMapStyle = jest.fn();
413
- expect(msc.panoramax).toBeNull();
414
-
415
- await msc.switchPanoramaxEndpoint("default");
416
-
417
- expect(msc.panoramax).toEqual("default");
418
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
419
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
420
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("panoramax-changed");
421
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ endpoint: "default" });
422
- expect(msc.updateMapStyle.mock.calls).toEqual([[true]]);
423
- });
424
-
425
- it("waits for layer to be ready", async () => {
426
- const p = createParent();
427
- const msc = new MapStyleComposer(p);
428
- msc.dispatchEvent = jest.fn();
429
- msc.updateMapStyle = jest.fn();
430
- expect(msc.panoramax).toBeNull();
431
-
432
- // Delay layer availability
433
- setTimeout(() => {
434
- msc.layerRanges.panoramax.default = getLayersRange().panoramax.default;
435
- }, 1000);
436
-
437
- await msc.switchPanoramaxEndpoint("default");
438
-
439
- expect(msc.panoramax).toEqual("default");
440
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
441
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
442
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("panoramax-changed");
443
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ endpoint: "default" });
444
- expect(msc.updateMapStyle.mock.calls).toEqual([[true]]);
445
- });
446
-
447
- it("skips if already selected", async () => {
448
- const p = createParent();
449
- const msc = new MapStyleComposer(p);
450
- msc.layerRanges = getLayersRange();
451
- msc.dispatchEvent = jest.fn();
452
- msc.updateMapStyle = jest.fn();
453
- msc.panoramax = "default";
454
-
455
- await msc.switchPanoramaxEndpoint("default");
456
-
457
- expect(msc.panoramax).toEqual("default");
458
- expect(msc.dispatchEvent.mock.calls.length).toEqual(0);
459
- expect(msc.updateMapStyle.mock.calls.length).toEqual(0);
460
- });
461
- });
462
-
463
- describe("isPanoramaxEndpointSingleUser", () => {
464
- const p = createParent();
465
- const msc = new MapStyleComposer(p);
466
-
467
- it("works with null-like", () => {
468
- msc.panoramax = null;
469
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(false);
470
- msc.panoramax = undefined;
471
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(false);
472
- msc.panoramax = "";
473
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(false);
474
- });
475
-
476
- it("works with general endpoints", () => {
477
- msc.panoramax = "default";
478
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(false);
479
- msc.panoramax = "metacatalog";
480
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(false);
481
- });
482
-
483
- it("works with user-specific endpoint", () => {
484
- msc.panoramax = "1234-4567-8910-1112";
485
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(true);
486
- msc.panoramax = "metacatalog_1234-4567-8910-1112";
487
- expect(msc.isPanoramaxEndpointSingleUser()).toBe(true);
488
- });
489
- });
490
-
491
- describe("setPanoramaxTheme", () => {
492
- it("works", () => {
493
- const p = createParent();
494
- const msc = new MapStyleComposer(p);
495
- msc.dispatchEvent = jest.fn();
496
- msc.updateMapStyle = jest.fn();
497
- expect(msc.panoramaxTheme).toBe("default");
498
-
499
- msc.setPanoramaxTheme("age");
500
-
501
- expect(msc.panoramaxTheme).toEqual("age");
502
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
503
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
504
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("theme-changed");
505
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ theme: "age" });
506
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
507
- });
508
-
509
- it("skips if already selected", () => {
510
- const p = createParent();
511
- const msc = new MapStyleComposer(p);
512
- msc.dispatchEvent = jest.fn();
513
- msc.updateMapStyle = jest.fn();
514
- expect(msc.panoramaxTheme).toBe("default");
515
-
516
- msc.setPanoramaxTheme("default");
517
-
518
- expect(msc.panoramaxTheme).toEqual("default");
519
- expect(msc.dispatchEvent.mock.calls.length).toEqual(0);
520
- expect(msc.updateMapStyle.mock.calls.length).toEqual(0);
521
- });
522
- });
523
-
524
- describe("setPanoramaxFilters", () => {
525
- it("works", () => {
526
- const p = createParent();
527
- const msc = new MapStyleComposer(p);
528
- msc.dispatchEvent = jest.fn();
529
- msc.updateMapStyle = jest.fn();
530
- expect(msc.panoramaxFilters).toEqual({});
531
-
532
- msc.setPanoramaxFilters({ gps: [1] });
533
-
534
- expect(msc.panoramaxFilters).toEqual({ gps: [1] });
535
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
536
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
537
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("filters-changed");
538
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ gps: [1] });
539
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
540
- });
541
- });
542
-
543
- describe("addDataOverlay", () => {
544
- it("works with obj style", () => {
545
- const p = createParent();
546
- const msc = new MapStyleComposer(p);
547
- msc.dispatchEvent = jest.fn();
548
- msc.switchDataOverlayVisibility = jest.fn();
549
- msc.addDataOverlay("bla", { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] });
550
- expect(msc.layerRanges.dataOverlays).toMatchSnapshot();
551
- expect(msc.dispatchEvent.mock.calls).toEqual([[new CustomEvent("dataoverlay-added")]]);
552
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataoverlay-added");
553
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataOverlay: "bla" });
554
- expect(msc.switchDataOverlayVisibility.mock.calls).toEqual([]);
555
- });
556
-
557
- it("switches on", () => {
558
- const p = createParent();
559
- const msc = new MapStyleComposer(p);
560
- msc.switchDataOverlayVisibility = jest.fn();
561
- msc.addDataOverlay("bla", { sources: { bla: { type: "vector" } }, layers: [{ id: "bla" }] }, true);
562
- expect(msc.switchDataOverlayVisibility.mock.calls).toEqual([["bla", true]]);
563
- });
564
- });
565
-
566
- describe("switchDataOverlayVisibility", () => {
567
- it("switches on", async () => {
568
- const p = createParent();
569
- const msc = new MapStyleComposer(p);
570
- msc.layerRanges = getLayersRange();
571
- msc.dispatchEvent = jest.fn();
572
- msc.updateMapStyle = jest.fn();
573
- expect(msc.dataOverlays.size).toBe(0);
574
-
575
- await msc.switchDataOverlayVisibility("do1", true);
576
-
577
- expect([...msc.dataOverlays]).toEqual(["do1"]);
578
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
579
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
580
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataoverlay-changed");
581
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataOverlay: "do1", visible: true });
582
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
583
- });
584
-
585
- it("waits for layer to be ready", async () => {
586
- const p = createParent();
587
- const msc = new MapStyleComposer(p);
588
- msc.dispatchEvent = jest.fn();
589
- msc.updateMapStyle = jest.fn();
590
- expect(msc.dataOverlays.size).toBe(0);
591
-
592
- // Delay layer availability
593
- setTimeout(() => {
594
- msc.layerRanges.dataOverlays.do1 = getLayersRange().dataOverlays.do1;
595
- }, 1000);
596
-
597
- await msc.switchDataOverlayVisibility("do1", true);
598
-
599
- expect([...msc.dataOverlays]).toEqual(["do1"]);
600
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
601
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
602
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataoverlay-changed");
603
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataOverlay: "do1", visible: true });
604
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
605
- });
606
-
607
- it("switches off", async () => {
608
- const p = createParent();
609
- const msc = new MapStyleComposer(p);
610
- msc.layerRanges = getLayersRange();
611
- msc.dispatchEvent = jest.fn();
612
- msc.updateMapStyle = jest.fn();
613
- msc.dataOverlays = new Set(["do1"]);
614
-
615
- await msc.switchDataOverlayVisibility("do1", false);
616
-
617
- expect(msc.dataOverlays.size).toBe(0);
618
- expect(msc.dispatchEvent.mock.calls.length).toEqual(1);
619
- expect(msc.dispatchEvent.mock.calls[0].length).toEqual(1);
620
- expect(msc.dispatchEvent.mock.calls[0][0].type).toEqual("dataoverlay-changed");
621
- expect(msc.dispatchEvent.mock.calls[0][0].detail).toEqual({ dataOverlay: "do1", visible: false });
622
- expect(msc.updateMapStyle.mock.calls).toEqual([[]]);
623
- });
624
- });
625
-
626
- describe("_createManyBasemaps", () => {
627
- it("handles classic style URL", () => {
628
- const p = createParent();
629
- const msc = new MapStyleComposer(p);
630
- msc.addBasemap = jest.fn();
631
- const basemaps = { mybasemap: "https://path.to/vector/style.json" };
632
- msc._createManyBasemaps(basemaps);
633
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
634
- });
635
-
636
- it("handles classic style JSON", () => {
637
- const p = createParent();
638
- const msc = new MapStyleComposer(p);
639
- msc.addBasemap = jest.fn();
640
- const basemaps = { mybasemap: {
641
- sources: {
642
- "raster-tiles": {
643
- "type": "raster",
644
- "tiles": ["https://tile.openstreetmap.bzh/br/{z}/{x}/{y}.png"],
645
- "tileSize": 256,
646
- "minzoom": 0,
647
- "maxzoom": 19,
648
- }
649
- },
650
- "layers": [
651
- {
652
- "id": "simple-tiles",
653
- "type": "raster",
654
- "source": "raster-tiles",
655
- }
656
- ]
657
- }};
658
- msc._createManyBasemaps(basemaps);
659
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
660
- });
661
-
662
- it("handles classic TMS shorthand", () => {
663
- const p = createParent();
664
- const msc = new MapStyleComposer(p);
665
- msc.addBasemap = jest.fn();
666
- const basemaps = { mybasemap: "https://path.to/tms/{z}/{x}/{y}.png" };
667
- msc._createManyBasemaps(basemaps);
668
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
669
- });
670
-
671
- it("handles classic TMS shorthand with maxzoom definition", () => {
672
- const p = createParent();
673
- const msc = new MapStyleComposer(p);
674
- msc.addBasemap = jest.fn();
675
- const basemaps = { mybasemap: "https://path.to/tms/{z:18}/{x}/{y}.png" };
676
- msc._createManyBasemaps(basemaps);
677
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
678
- });
679
-
680
- it("handles classic TMS shorthand with OSM attribution", () => {
681
- const p = createParent();
682
- const msc = new MapStyleComposer(p);
683
- msc.addBasemap = jest.fn();
684
- const basemaps = { mybasemap: "https://tile.openstreetmap.fr/tms/{z}/{x}/{y}.png" };
685
- msc._createManyBasemaps(basemaps);
686
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
687
- });
688
-
689
- it("switches on selected background", () => {
690
- const p = createParent();
691
- const msc = new MapStyleComposer(p);
692
- msc.addBasemap = jest.fn();
693
- const basemaps = { mybasemap: "https://path.to/vector/style.json" };
694
- msc._createManyBasemaps(basemaps, "mybasemap");
695
- expect(msc.addBasemap.mock.calls).toMatchSnapshot();
696
- });
697
- });