@panoramax/web-viewer 3.2.3 → 4.0.0-develop-39167b4d

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 (255) hide show
  1. package/.gitlab-ci.yml +13 -6
  2. package/CHANGELOG.md +53 -1
  3. package/CODE_OF_CONDUCT.md +1 -1
  4. package/README.md +1 -1
  5. package/build/editor.html +10 -1
  6. package/build/index.css +12 -12
  7. package/build/index.css.map +1 -1
  8. package/build/index.html +1 -1
  9. package/build/index.js +2126 -14
  10. package/build/index.js.map +1 -1
  11. package/build/map.html +1 -1
  12. package/build/photo.html +1 -0
  13. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff +0 -0
  14. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff2 +0 -0
  15. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff +0 -0
  16. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff2 +0 -0
  17. package/build/viewer.html +12 -1
  18. package/build/widgets.html +1 -0
  19. package/config/jest/mocks.js +201 -0
  20. package/config/paths.js +2 -0
  21. package/config/webpack.config.js +52 -0
  22. package/docs/03_URL_settings.md +14 -16
  23. package/docs/05_Compatibility.md +59 -76
  24. package/docs/09_Develop.md +46 -11
  25. package/docs/90_Releases.md +2 -2
  26. package/docs/images/class_diagram.drawio +60 -45
  27. package/docs/images/class_diagram.jpg +0 -0
  28. package/docs/images/screenshot.jpg +0 -0
  29. package/docs/index.md +135 -0
  30. package/docs/reference/components/core/Basic.md +196 -0
  31. package/docs/reference/components/core/CoverageMap.md +210 -0
  32. package/docs/reference/components/core/Editor.md +224 -0
  33. package/docs/reference/components/core/PhotoViewer.md +307 -0
  34. package/docs/reference/components/core/Viewer.md +350 -0
  35. package/docs/reference/components/layout/BottomDrawer.md +35 -0
  36. package/docs/reference/components/layout/CorneredGrid.md +29 -0
  37. package/docs/reference/components/layout/Mini.md +45 -0
  38. package/docs/reference/components/layout/Tabs.md +45 -0
  39. package/docs/reference/components/menus/MapBackground.md +32 -0
  40. package/docs/reference/components/menus/MapFilters.md +15 -0
  41. package/docs/reference/components/menus/MapLayers.md +15 -0
  42. package/docs/reference/components/menus/MapLegend.md +15 -0
  43. package/docs/reference/components/menus/PictureLegend.md +16 -0
  44. package/docs/reference/components/menus/PictureMetadata.md +15 -0
  45. package/docs/reference/components/menus/PlayerOptions.md +15 -0
  46. package/docs/reference/components/menus/QualityScoreDoc.md +15 -0
  47. package/docs/reference/components/menus/ReportForm.md +15 -0
  48. package/docs/reference/components/menus/ShareMenu.md +15 -0
  49. package/docs/reference/components/ui/Button.md +40 -0
  50. package/docs/reference/components/ui/ButtonGroup.md +36 -0
  51. package/docs/reference/components/ui/CopyButton.md +38 -0
  52. package/docs/reference/components/ui/Grade.md +32 -0
  53. package/docs/reference/components/ui/LinkButton.md +45 -0
  54. package/docs/reference/components/ui/ListGroup.md +22 -0
  55. package/docs/reference/components/ui/Loader.md +56 -0
  56. package/docs/reference/components/ui/Map.md +239 -0
  57. package/docs/reference/components/ui/MapMore.md +256 -0
  58. package/docs/reference/components/ui/Photo.md +385 -0
  59. package/docs/reference/components/ui/Popup.md +56 -0
  60. package/docs/reference/components/ui/ProgressBar.md +32 -0
  61. package/docs/reference/components/ui/QualityScore.md +45 -0
  62. package/docs/reference/components/ui/SearchBar.md +63 -0
  63. package/docs/reference/components/ui/TogglableGroup.md +39 -0
  64. package/docs/reference/components/ui/widgets/GeoSearch.md +32 -0
  65. package/docs/reference/components/ui/widgets/Legend.md +49 -0
  66. package/docs/reference/components/ui/widgets/MapFiltersButton.md +33 -0
  67. package/docs/reference/components/ui/widgets/MapLayersButton.md +15 -0
  68. package/docs/reference/components/ui/widgets/OSMEditors.md +15 -0
  69. package/docs/reference/components/ui/widgets/PictureLegendActions.md +32 -0
  70. package/docs/reference/components/ui/widgets/Player.md +33 -0
  71. package/docs/reference/components/ui/widgets/Zoom.md +15 -0
  72. package/docs/reference/utils/API.md +334 -0
  73. package/docs/reference/utils/InitParameters.md +68 -0
  74. package/docs/reference/utils/URLHandler.md +107 -0
  75. package/docs/reference.md +79 -0
  76. package/docs/shortcuts.md +11 -0
  77. package/docs/tutorials/aerial_imagery.md +19 -0
  78. package/docs/tutorials/authentication.md +10 -0
  79. package/docs/tutorials/custom_widgets.md +59 -0
  80. package/docs/tutorials/map_style.md +39 -0
  81. package/docs/tutorials/migrate_v4.md +153 -0
  82. package/docs/tutorials/synced_coverage.md +43 -0
  83. package/mkdocs.yml +66 -5
  84. package/package.json +22 -17
  85. package/public/editor.html +21 -29
  86. package/public/index.html +17 -12
  87. package/public/map.html +19 -18
  88. package/public/photo.html +55 -0
  89. package/public/viewer.html +22 -26
  90. package/public/widgets.html +306 -0
  91. package/scripts/doc.js +79 -0
  92. package/src/components/core/Basic.css +48 -0
  93. package/src/components/core/Basic.js +349 -0
  94. package/src/components/core/CoverageMap.css +9 -0
  95. package/src/components/core/CoverageMap.js +139 -0
  96. package/src/components/core/Editor.css +23 -0
  97. package/src/components/core/Editor.js +390 -0
  98. package/src/components/core/PhotoViewer.css +48 -0
  99. package/src/components/core/PhotoViewer.js +499 -0
  100. package/src/components/core/Viewer.css +98 -0
  101. package/src/components/core/Viewer.js +564 -0
  102. package/src/components/core/index.js +12 -0
  103. package/src/components/index.js +13 -0
  104. package/src/components/layout/BottomDrawer.js +257 -0
  105. package/src/components/layout/CorneredGrid.js +112 -0
  106. package/src/components/layout/Mini.js +117 -0
  107. package/src/components/layout/Tabs.js +133 -0
  108. package/src/components/layout/index.js +9 -0
  109. package/src/components/menus/MapBackground.js +106 -0
  110. package/src/components/menus/MapFilters.js +400 -0
  111. package/src/components/menus/MapLayers.js +143 -0
  112. package/src/components/menus/MapLegend.js +34 -0
  113. package/src/components/menus/PictureLegend.js +257 -0
  114. package/src/components/menus/PictureMetadata.js +317 -0
  115. package/src/components/menus/PlayerOptions.js +95 -0
  116. package/src/components/menus/QualityScoreDoc.js +36 -0
  117. package/src/components/menus/ReportForm.js +133 -0
  118. package/src/components/menus/Share.js +100 -0
  119. package/src/components/menus/index.js +15 -0
  120. package/src/components/styles.js +383 -0
  121. package/src/components/ui/Button.js +77 -0
  122. package/src/components/ui/ButtonGroup.css +57 -0
  123. package/src/components/ui/ButtonGroup.js +68 -0
  124. package/src/components/ui/CopyButton.js +106 -0
  125. package/src/components/ui/Grade.js +54 -0
  126. package/src/components/ui/LinkButton.js +67 -0
  127. package/src/components/ui/ListGroup.js +66 -0
  128. package/src/components/ui/Loader.js +203 -0
  129. package/src/components/{Map.css → ui/Map.css} +5 -17
  130. package/src/components/{Map.js → ui/Map.js} +148 -156
  131. package/src/components/ui/MapMore.js +324 -0
  132. package/src/components/{Photo.css → ui/Photo.css} +6 -6
  133. package/src/components/{Photo.js → ui/Photo.js} +313 -101
  134. package/src/components/ui/Popup.js +145 -0
  135. package/src/components/ui/ProgressBar.js +104 -0
  136. package/src/components/ui/QualityScore.js +147 -0
  137. package/src/components/ui/SearchBar.js +367 -0
  138. package/src/components/ui/TogglableGroup.js +157 -0
  139. package/src/components/ui/index.js +22 -0
  140. package/src/components/ui/widgets/GeoSearch.css +21 -0
  141. package/src/components/ui/widgets/GeoSearch.js +139 -0
  142. package/src/components/ui/widgets/Legend.js +113 -0
  143. package/src/components/ui/widgets/MapFiltersButton.js +104 -0
  144. package/src/components/ui/widgets/MapLayersButton.js +79 -0
  145. package/src/components/ui/widgets/OSMEditors.js +155 -0
  146. package/src/components/ui/widgets/PictureLegendActions.js +117 -0
  147. package/src/components/ui/widgets/Player.css +7 -0
  148. package/src/components/ui/widgets/Player.js +151 -0
  149. package/src/components/ui/widgets/Zoom.js +82 -0
  150. package/src/components/ui/widgets/index.js +13 -0
  151. package/src/img/loader_base.jpg +0 -0
  152. package/src/img/panoramax.svg +13 -0
  153. package/src/img/switch_big.svg +20 -10
  154. package/src/index.js +7 -9
  155. package/src/translations/br.json +1 -0
  156. package/src/translations/da.json +38 -15
  157. package/src/translations/de.json +5 -3
  158. package/src/translations/en.json +35 -15
  159. package/src/translations/eo.json +38 -15
  160. package/src/translations/es.json +1 -1
  161. package/src/translations/fr.json +36 -16
  162. package/src/translations/hu.json +1 -1
  163. package/src/translations/it.json +39 -16
  164. package/src/translations/ja.json +182 -1
  165. package/src/translations/nl.json +106 -6
  166. package/src/translations/pl.json +1 -1
  167. package/src/translations/sv.json +182 -0
  168. package/src/translations/zh_Hant.json +35 -14
  169. package/src/utils/API.js +109 -49
  170. package/src/utils/InitParameters.js +388 -0
  171. package/src/utils/PhotoAdapter.js +1 -0
  172. package/src/utils/URLHandler.js +362 -0
  173. package/src/utils/geocoder.js +152 -0
  174. package/src/utils/{I18n.js → i18n.js} +7 -3
  175. package/src/utils/index.js +11 -0
  176. package/src/utils/{Map.js → map.js} +256 -77
  177. package/src/utils/picture.js +442 -0
  178. package/src/utils/utils.js +324 -0
  179. package/src/utils/widgets.js +55 -0
  180. package/tests/components/core/Basic.test.js +121 -0
  181. package/tests/components/core/BasicMock.js +25 -0
  182. package/tests/components/core/CoverageMap.test.js +20 -0
  183. package/tests/components/core/Editor.test.js +20 -0
  184. package/tests/components/core/PhotoViewer.test.js +57 -0
  185. package/tests/components/core/Viewer.test.js +84 -0
  186. package/tests/components/core/__snapshots__/PhotoViewer.test.js.snap +73 -0
  187. package/tests/components/core/__snapshots__/Viewer.test.js.snap +145 -0
  188. package/tests/components/ui/CopyButton.test.js +52 -0
  189. package/tests/components/ui/Loader.test.js +55 -0
  190. package/tests/components/{Map.test.js → ui/Map.test.js} +73 -61
  191. package/tests/components/{Photo.test.js → ui/Photo.test.js} +97 -63
  192. package/tests/components/ui/Popup.test.js +26 -0
  193. package/tests/components/ui/QualityScore.test.js +18 -0
  194. package/tests/components/ui/SearchBar.test.js +110 -0
  195. package/tests/components/ui/__snapshots__/CopyButton.test.js.snap +33 -0
  196. package/tests/components/ui/__snapshots__/Loader.test.js.snap +56 -0
  197. package/tests/components/{__snapshots__ → ui/__snapshots__}/Map.test.js.snap +11 -38
  198. package/tests/components/{__snapshots__ → ui/__snapshots__}/Photo.test.js.snap +70 -6
  199. package/tests/components/ui/__snapshots__/Popup.test.js.snap +29 -0
  200. package/tests/components/ui/__snapshots__/QualityScore.test.js.snap +11 -0
  201. package/tests/components/ui/__snapshots__/SearchBar.test.js.snap +65 -0
  202. package/tests/utils/API.test.js +83 -83
  203. package/tests/utils/InitParameters.test.js +499 -0
  204. package/tests/utils/URLHandler.test.js +401 -0
  205. package/tests/utils/__snapshots__/API.test.js.snap +10 -0
  206. package/tests/utils/__snapshots__/URLHandler.test.js.snap +21 -0
  207. package/tests/utils/__snapshots__/{Map.test.js.snap → geocoder.test.js.snap} +1 -1
  208. package/tests/utils/__snapshots__/map.test.js.snap +11 -0
  209. package/tests/utils/__snapshots__/picture.test.js.snap +327 -0
  210. package/tests/utils/__snapshots__/widgets.test.js.snap +19 -0
  211. package/tests/utils/geocoder.test.js +37 -0
  212. package/tests/utils/{I18n.test.js → i18n.test.js} +8 -8
  213. package/tests/utils/map.test.js +126 -0
  214. package/tests/utils/picture.test.js +745 -0
  215. package/tests/utils/utils.test.js +288 -0
  216. package/tests/utils/widgets.test.js +31 -0
  217. package/docs/01_Start.md +0 -149
  218. package/docs/02_Usage.md +0 -831
  219. package/docs/04_Advanced_examples.md +0 -216
  220. package/src/Editor.css +0 -37
  221. package/src/Editor.js +0 -361
  222. package/src/StandaloneMap.js +0 -114
  223. package/src/Viewer.css +0 -203
  224. package/src/Viewer.js +0 -1246
  225. package/src/components/CoreView.css +0 -70
  226. package/src/components/CoreView.js +0 -175
  227. package/src/components/Loader.css +0 -74
  228. package/src/components/Loader.js +0 -120
  229. package/src/img/loader_hd.jpg +0 -0
  230. package/src/utils/Exif.js +0 -193
  231. package/src/utils/Utils.js +0 -631
  232. package/src/utils/Widgets.js +0 -562
  233. package/src/viewer/URLHash.js +0 -469
  234. package/src/viewer/Widgets.css +0 -880
  235. package/src/viewer/Widgets.js +0 -1470
  236. package/tests/Editor.test.js +0 -126
  237. package/tests/StandaloneMap.test.js +0 -45
  238. package/tests/Viewer.test.js +0 -366
  239. package/tests/__snapshots__/Editor.test.js.snap +0 -298
  240. package/tests/__snapshots__/StandaloneMap.test.js.snap +0 -30
  241. package/tests/__snapshots__/Viewer.test.js.snap +0 -195
  242. package/tests/components/CoreView.test.js +0 -92
  243. package/tests/components/Loader.test.js +0 -38
  244. package/tests/components/__snapshots__/Loader.test.js.snap +0 -15
  245. package/tests/utils/Exif.test.js +0 -124
  246. package/tests/utils/Map.test.js +0 -113
  247. package/tests/utils/Utils.test.js +0 -300
  248. package/tests/utils/Widgets.test.js +0 -107
  249. package/tests/utils/__snapshots__/Exif.test.js.snap +0 -43
  250. package/tests/utils/__snapshots__/Utils.test.js.snap +0 -41
  251. package/tests/utils/__snapshots__/Widgets.test.js.snap +0 -44
  252. package/tests/viewer/URLHash.test.js +0 -559
  253. package/tests/viewer/Widgets.test.js +0 -127
  254. package/tests/viewer/__snapshots__/URLHash.test.js.snap +0 -108
  255. package/tests/viewer/__snapshots__/Widgets.test.js.snap +0 -403
@@ -0,0 +1,239 @@
1
+ <a name="Panoramax.components.ui.Map"></a>
2
+
3
+ ## Panoramax.components.ui.Map ⇐ <code>[maplibregl.Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[maplibregl.Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/)</code>
6
+ **Emits**: [<code>background-changed</code>](#Panoramax.components.ui.Map+event_background-changed), [<code>users-changed</code>](#Panoramax.components.ui.Map+event_users-changed), [<code>sequence-hover</code>](#Panoramax.components.ui.Map+event_sequence-hover), [<code>sequence-click</code>](#Panoramax.components.ui.Map+event_sequence-click), [<code>picture-click</code>](#Panoramax.components.ui.Map+event_picture-click), [<code>ready</code>](#Panoramax.components.ui.Map+event_ready)
7
+
8
+ * [.Map](#Panoramax.components.ui.Map) ⇐ <code>[maplibregl.Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/)</code>
9
+ * [new Map(parent, container, [options])](#new_Panoramax.components.ui.Map_new)
10
+ * [.destroy()](#Panoramax.components.ui.Map+destroy)
11
+ * [.waitForEnoughMapLoaded()](#Panoramax.components.ui.Map+waitForEnoughMapLoaded) ⇒ <code>Promise</code>
12
+ * [.reloadVectorTiles()](#Panoramax.components.ui.Map+reloadVectorTiles)
13
+ * [.hasTwoBackgrounds()](#Panoramax.components.ui.Map+hasTwoBackgrounds) ⇒ <code>boolean</code>
14
+ * [.getBackground()](#Panoramax.components.ui.Map+getBackground) ⇒ <code>string</code>
15
+ * [.setBackground(bg)](#Panoramax.components.ui.Map+setBackground)
16
+ * [.getVisibleUsers()](#Panoramax.components.ui.Map+getVisibleUsers) ⇒ <code>Array.&lt;string&gt;</code>
17
+ * [.setVisibleUsers(visibleIds)](#Panoramax.components.ui.Map+setVisibleUsers)
18
+ * [.filterUserLayersContent(dataType, filter)](#Panoramax.components.ui.Map+filterUserLayersContent)
19
+ * [.displayPictureMarker(lon, lat, heading, [skipCenter])](#Panoramax.components.ui.Map+displayPictureMarker)
20
+ * [.reloadLayersStyles()](#Panoramax.components.ui.Map+reloadLayersStyles)
21
+ * [.addEventListener(type, listener)](#Panoramax.components.ui.Map+addEventListener)
22
+ * ["ready"](#Panoramax.components.ui.Map+event_ready)
23
+ * ["background-changed"](#Panoramax.components.ui.Map+event_background-changed)
24
+ * ["users-changed"](#Panoramax.components.ui.Map+event_users-changed)
25
+ * ["sequence-hover"](#Panoramax.components.ui.Map+event_sequence-hover)
26
+ * ["sequence-click"](#Panoramax.components.ui.Map+event_sequence-click)
27
+ * ["picture-click"](#Panoramax.components.ui.Map+event_picture-click)
28
+
29
+ <a name="new_Panoramax.components.ui.Map_new"></a>
30
+
31
+ ### new Map(parent, container, [options])
32
+ Map is the component showing pictures and sequences geolocation.
33
+
34
+ Note that all functions of [MapLibre GL JS class Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/) are also available.
35
+
36
+ A more complete version of Map (with filters & themes) is available through [MapMore class](MapMore.md/#Panoramax.components.ui.MapMore)
37
+
38
+ ⚠️ This class doesn't inherit from [EventTarget](https://developer.mozilla.org/fr/docs/Web/API/EventTarget), so it doesn't have `addEventListener` and `dispatchEvent` functions.
39
+ It uses instead [`on`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#on) and `fire` functions from MapLibre Map class.
40
+ `fire` function doesn't take directly [`Event`](https://developer.mozilla.org/fr/docs/Web/API/Event) objects, but a string and object data.
41
+ A shorthand `addEventListener` function is added for simpler usage.
42
+
43
+
44
+ | Param | Type | Default | Description |
45
+ | --- | --- | --- | --- |
46
+ | parent | [<code>Basic</code>](../core/Basic.md/#Panoramax.components.core.Basic) | | The parent view |
47
+ | container | <code>Element</code> | | The DOM element to create into |
48
+ | [options] | <code>object</code> | | The map options (any of [MapLibre GL settings](https://maplibre.org/maplibre-gl-js/docs/API/type-aliases/MapOptions/) or any supplementary option defined here) |
49
+ | [options.raster] | <code>object</code> | | The MapLibre raster source for aerial background. This must be a JSON object following [MapLibre raster source definition](https://maplibre.org/maplibre-style-spec/sources/#raster). |
50
+ | [options.background] | <code>string</code> | <code>&quot;streets&quot;</code> | Choose default map background to display (streets or aerial, if raster aerial background available). Defaults to street. |
51
+ | [options.attributionControl.customAttribution] | <code>string</code> | | To override default map attribution. |
52
+
53
+ **Example**
54
+ ```js
55
+ const map = new Panoramax.components.ui.Map(viewer, mapNode, {center: {lat: 48.7, lng: -1.7}});
56
+ ```
57
+ <a name="Panoramax.components.ui.Map+destroy"></a>
58
+
59
+ ### map.destroy()
60
+ Destroy any form of life in this component
61
+
62
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
63
+ <a name="Panoramax.components.ui.Map+waitForEnoughMapLoaded"></a>
64
+
65
+ ### map.waitForEnoughMapLoaded() ⇒ <code>Promise</code>
66
+ Helper to know when enough map background and Panoramax tiles are loaded for a proper display.
67
+
68
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
69
+ **Returns**: <code>Promise</code> - Resolves when enough is loaded
70
+ <a name="Panoramax.components.ui.Map+reloadVectorTiles"></a>
71
+
72
+ ### map.reloadVectorTiles()
73
+ Force refresh of vector tiles data
74
+
75
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
76
+ <a name="Panoramax.components.ui.Map+hasTwoBackgrounds"></a>
77
+
78
+ ### map.hasTwoBackgrounds() ⇒ <code>boolean</code>
79
+ Check if map offers aerial imagery as well as streets rendering.
80
+
81
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
82
+ **Returns**: <code>boolean</code> - True if aerial imagery is available for display
83
+ <a name="Panoramax.components.ui.Map+getBackground"></a>
84
+
85
+ ### map.getBackground() ⇒ <code>string</code>
86
+ Get the currently selected map background
87
+
88
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
89
+ **Returns**: <code>string</code> - aerial or streets
90
+ <a name="Panoramax.components.ui.Map+setBackground"></a>
91
+
92
+ ### map.setBackground(bg)
93
+ Change the shown background in map.
94
+
95
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
96
+ **Throws**:
97
+
98
+ - <code>Error</code> If not aerial imagery is available
99
+
100
+
101
+ | Param | Type | Description |
102
+ | --- | --- | --- |
103
+ | bg | <code>string</code> | The new background to display (aerial or streets) |
104
+
105
+ <a name="Panoramax.components.ui.Map+getVisibleUsers"></a>
106
+
107
+ ### map.getVisibleUsers() ⇒ <code>Array.&lt;string&gt;</code>
108
+ Get the currently visible users
109
+
110
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
111
+ **Returns**: <code>Array.&lt;string&gt;</code> - List of visible users
112
+ <a name="Panoramax.components.ui.Map+setVisibleUsers"></a>
113
+
114
+ ### map.setVisibleUsers(visibleIds)
115
+ Make given user layers visible on map, and hide all others (if any)
116
+
117
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
118
+
119
+ | Param | Type | Description |
120
+ | --- | --- | --- |
121
+ | visibleIds | <code>string</code> \| <code>Array.&lt;string&gt;</code> | The user layers IDs to display |
122
+
123
+ <a name="Panoramax.components.ui.Map+filterUserLayersContent"></a>
124
+
125
+ ### map.filterUserLayersContent(dataType, filter)
126
+ Filter the visible data content in all visible map layers
127
+
128
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
129
+
130
+ | Param | Type | Description |
131
+ | --- | --- | --- |
132
+ | dataType | <code>string</code> | sequences or pictures |
133
+ | filter | <code>object</code> | The MapLibre GL filter rule to apply |
134
+
135
+ <a name="Panoramax.components.ui.Map+displayPictureMarker"></a>
136
+
137
+ ### map.displayPictureMarker(lon, lat, heading, [skipCenter])
138
+ Shows on map a picture position and heading.
139
+
140
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
141
+
142
+ | Param | Type | Default | Description |
143
+ | --- | --- | --- | --- |
144
+ | lon | <code>number</code> | | The longitude |
145
+ | lat | <code>number</code> | | The latitude |
146
+ | heading | <code>number</code> | | The heading |
147
+ | [skipCenter] | <code>boolean</code> | <code>false</code> | Set to true to avoid map centering on marker |
148
+
149
+ <a name="Panoramax.components.ui.Map+reloadLayersStyles"></a>
150
+
151
+ ### map.reloadLayersStyles()
152
+ Forces reload of pictures/sequences layer styles.
153
+ This is useful after a map theme change.
154
+
155
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
156
+ <a name="Panoramax.components.ui.Map+addEventListener"></a>
157
+
158
+ ### map.addEventListener(type, listener)
159
+ Listen to map events.
160
+ This is a binder to [`on`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#on) and [`once`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#once) MapLibre GL functions.
161
+
162
+ **Kind**: instance method of [<code>Map</code>](#Panoramax.components.ui.Map)
163
+
164
+ | Param | Type | Default | Description |
165
+ | --- | --- | --- | --- |
166
+ | type | <code>string</code> | | The event type to listen for |
167
+ | listener | <code>function</code> | | The event handler |
168
+ | [options.once] | <code>boolean</code> | <code>false</code> | Set to true to only listen to first event. |
169
+
170
+ <a name="Panoramax.components.ui.Map+event_ready"></a>
171
+
172
+ ### "ready"
173
+ Event when map is ready to display.
174
+ This includes Maplibre initial load, enough map data display and styling.
175
+
176
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
177
+ <a name="Panoramax.components.ui.Map+event_background-changed"></a>
178
+
179
+ ### "background-changed"
180
+ Event for map background changes
181
+
182
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
183
+ **Properties**
184
+
185
+ | Name | Type | Description |
186
+ | --- | --- | --- |
187
+ | [background] | <code>string</code> | The new selected background (aerial, streets) |
188
+
189
+ <a name="Panoramax.components.ui.Map+event_users-changed"></a>
190
+
191
+ ### "users-changed"
192
+ Event for visible users changes
193
+
194
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
195
+ **Properties**
196
+
197
+ | Name | Type | Description |
198
+ | --- | --- | --- |
199
+ | [usersIds] | <code>Array.&lt;string&gt;</code> | The list of newly selected users |
200
+
201
+ <a name="Panoramax.components.ui.Map+event_sequence-hover"></a>
202
+
203
+ ### "sequence-hover"
204
+ Event when a sequence on map is hovered (not selected)
205
+
206
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
207
+ **Properties**
208
+
209
+ | Name | Type | Description |
210
+ | --- | --- | --- |
211
+ | seqId | <code>string</code> | The hovered sequence ID |
212
+
213
+ <a name="Panoramax.components.ui.Map+event_sequence-click"></a>
214
+
215
+ ### "sequence-click"
216
+ Event when a sequence on map is clicked
217
+
218
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
219
+ **Properties**
220
+
221
+ | Name | Type | Description |
222
+ | --- | --- | --- |
223
+ | seqId | <code>string</code> | The clicked sequence ID |
224
+ | coordinates | <code>maplibregl.LngLat</code> | The coordinates of user click |
225
+
226
+ <a name="Panoramax.components.ui.Map+event_picture-click"></a>
227
+
228
+ ### "picture-click"
229
+ Event when a picture on map is clicked
230
+
231
+ **Kind**: event emitted by [<code>Map</code>](#Panoramax.components.ui.Map)
232
+ **Properties**
233
+
234
+ | Name | Type | Description |
235
+ | --- | --- | --- |
236
+ | picId | <code>string</code> | The clicked picture ID |
237
+ | seqId | <code>string</code> | The clicked picture's sequence ID |
238
+ | feature | <code>object</code> | The GeoJSON feature of the picture |
239
+
@@ -0,0 +1,256 @@
1
+ <a name="Panoramax.components.ui.MapMore"></a>
2
+
3
+ ## Panoramax.components.ui.MapMore ⇐ [<code>Map</code>](Map.md/#Panoramax.components.ui.Map)
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: [<code>Map</code>](Map.md/#Panoramax.components.ui.Map)
6
+ **Emits**: [<code>background-changed</code>](Map.md/#Panoramax.components.ui.Map+event_background-changed), [<code>users-changed</code>](Map.md/#Panoramax.components.ui.Map+event_users-changed), [<code>sequence-hover</code>](Map.md/#Panoramax.components.ui.Map+event_sequence-hover), [<code>sequence-click</code>](Map.md/#Panoramax.components.ui.Map+event_sequence-click), [<code>picture-click</code>](Map.md/#Panoramax.components.ui.Map+event_picture-click), [<code>filters-changed</code>](#Panoramax.components.ui.MapMore+event_filters-changed)
7
+
8
+ * [.MapMore](#Panoramax.components.ui.MapMore) ⇐ [<code>Map</code>](Map.md/#Panoramax.components.ui.Map)
9
+ * [new MapMore(parent, container, [options])](#new_Panoramax.components.ui.MapMore_new)
10
+ * [.destroy()](Map.md/#Panoramax.components.ui.Map+destroy)
11
+ * [.waitForEnoughMapLoaded()](Map.md/#Panoramax.components.ui.Map+waitForEnoughMapLoaded) ⇒ <code>Promise</code>
12
+ * [.reloadVectorTiles()](Map.md/#Panoramax.components.ui.Map+reloadVectorTiles)
13
+ * [.hasTwoBackgrounds()](Map.md/#Panoramax.components.ui.Map+hasTwoBackgrounds) ⇒ <code>boolean</code>
14
+ * [.getBackground()](Map.md/#Panoramax.components.ui.Map+getBackground) ⇒ <code>string</code>
15
+ * [.setBackground(bg)](Map.md/#Panoramax.components.ui.Map+setBackground)
16
+ * [.getVisibleUsers()](Map.md/#Panoramax.components.ui.Map+getVisibleUsers) ⇒ <code>Array.&lt;string&gt;</code>
17
+ * [.setVisibleUsers(visibleIds)](Map.md/#Panoramax.components.ui.Map+setVisibleUsers)
18
+ * [.filterUserLayersContent(dataType, filter)](Map.md/#Panoramax.components.ui.Map+filterUserLayersContent)
19
+ * [.displayPictureMarker(lon, lat, heading, [skipCenter])](#Panoramax.components.ui.Map+displayPictureMarker)
20
+ * [.reloadLayersStyles()](Map.md/#Panoramax.components.ui.Map+reloadLayersStyles)
21
+ * [.addEventListener(type, listener)](Map.md/#Panoramax.components.ui.Map+addEventListener)
22
+ * ["filters-changed"](#Panoramax.components.ui.MapMore+event_filters-changed)
23
+ * ["ready"](Map.md/#Panoramax.components.ui.Map+event_ready)
24
+ * ["background-changed"](Map.md/#Panoramax.components.ui.Map+event_background-changed)
25
+ * ["users-changed"](Map.md/#Panoramax.components.ui.Map+event_users-changed)
26
+ * ["sequence-hover"](Map.md/#Panoramax.components.ui.Map+event_sequence-hover)
27
+ * ["sequence-click"](Map.md/#Panoramax.components.ui.Map+event_sequence-click)
28
+ * ["picture-click"](Map.md/#Panoramax.components.ui.Map+event_picture-click)
29
+
30
+ <a name="new_Panoramax.components.ui.MapMore_new"></a>
31
+
32
+ ### new MapMore(parent, container, [options])
33
+ MapMore is a more complete version of [Map UI component](Map.md/#Panoramax.components.ui.Map).
34
+
35
+ It offers advanced features like themes, filters and more.
36
+
37
+ Note that all functions of [MapLibre GL JS class Map](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/) are also available.
38
+
39
+ ⚠️ This class doesn't inherit from [EventTarget](https://developer.mozilla.org/fr/docs/Web/API/EventTarget), so it doesn't have `addEventListener` and `dispatchEvent` functions.
40
+ It uses instead [`on`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#on) and `fire` functions from MapLibre Map class.
41
+ `fire` function doesn't take directly [`Event`](https://developer.mozilla.org/fr/docs/Web/API/Event) objects, but a string and object data.
42
+
43
+
44
+ | Param | Type | Default | Description |
45
+ | --- | --- | --- | --- |
46
+ | parent | [<code>Basic</code>](../core/Basic.md/#Panoramax.components.core.Basic) | | The parent view |
47
+ | container | <code>Element</code> | | The DOM element to create into |
48
+ | [options] | <code>object</code> | | The map options (any of [MapLibre GL settings](https://maplibre.org/maplibre-gl-js/docs/API/type-aliases/MapOptions/) or any supplementary option defined here) |
49
+ | [options.raster] | <code>object</code> | | The MapLibre raster source for aerial background. This must be a JSON object following [MapLibre raster source definition](https://maplibre.org/maplibre-style-spec/sources/#raster). |
50
+ | [options.background] | <code>string</code> | <code>&quot;streets&quot;</code> | Choose default map background to display (streets or aerial, if raster aerial background available). Defaults to streets. |
51
+ | [options.theme] | <code>string</code> | <code>&quot;default&quot;</code> | The map theme (default, age, score, type) |
52
+
53
+ **Example**
54
+ ```js
55
+ const map = new Panoramax.components.ui.MapMore(viewer, mapNode, {center: {lat: 48.7, lng: -1.7}});
56
+ ```
57
+ <a name="Panoramax.components.ui.Map+destroy"></a>
58
+
59
+ ### mapMore.destroy()
60
+ Destroy any form of life in this component
61
+
62
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
63
+ <a name="Panoramax.components.ui.Map+waitForEnoughMapLoaded"></a>
64
+
65
+ ### mapMore.waitForEnoughMapLoaded() ⇒ <code>Promise</code>
66
+ Helper to know when enough map background and Panoramax tiles are loaded for a proper display.
67
+
68
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
69
+ **Returns**: <code>Promise</code> - Resolves when enough is loaded
70
+ <a name="Panoramax.components.ui.Map+reloadVectorTiles"></a>
71
+
72
+ ### mapMore.reloadVectorTiles()
73
+ Force refresh of vector tiles data
74
+
75
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
76
+ <a name="Panoramax.components.ui.Map+hasTwoBackgrounds"></a>
77
+
78
+ ### mapMore.hasTwoBackgrounds() ⇒ <code>boolean</code>
79
+ Check if map offers aerial imagery as well as streets rendering.
80
+
81
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
82
+ **Returns**: <code>boolean</code> - True if aerial imagery is available for display
83
+ <a name="Panoramax.components.ui.Map+getBackground"></a>
84
+
85
+ ### mapMore.getBackground() ⇒ <code>string</code>
86
+ Get the currently selected map background
87
+
88
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
89
+ **Returns**: <code>string</code> - aerial or streets
90
+ <a name="Panoramax.components.ui.Map+setBackground"></a>
91
+
92
+ ### mapMore.setBackground(bg)
93
+ Change the shown background in map.
94
+
95
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
96
+ **Throws**:
97
+
98
+ - <code>Error</code> If not aerial imagery is available
99
+
100
+
101
+ | Param | Type | Description |
102
+ | --- | --- | --- |
103
+ | bg | <code>string</code> | The new background to display (aerial or streets) |
104
+
105
+ <a name="Panoramax.components.ui.Map+getVisibleUsers"></a>
106
+
107
+ ### mapMore.getVisibleUsers() ⇒ <code>Array.&lt;string&gt;</code>
108
+ Get the currently visible users
109
+
110
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
111
+ **Returns**: <code>Array.&lt;string&gt;</code> - List of visible users
112
+ <a name="Panoramax.components.ui.Map+setVisibleUsers"></a>
113
+
114
+ ### mapMore.setVisibleUsers(visibleIds)
115
+ Make given user layers visible on map, and hide all others (if any)
116
+
117
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
118
+
119
+ | Param | Type | Description |
120
+ | --- | --- | --- |
121
+ | visibleIds | <code>string</code> \| <code>Array.&lt;string&gt;</code> | The user layers IDs to display |
122
+
123
+ <a name="Panoramax.components.ui.Map+filterUserLayersContent"></a>
124
+
125
+ ### mapMore.filterUserLayersContent(dataType, filter)
126
+ Filter the visible data content in all visible map layers
127
+
128
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
129
+
130
+ | Param | Type | Description |
131
+ | --- | --- | --- |
132
+ | dataType | <code>string</code> | sequences or pictures |
133
+ | filter | <code>object</code> | The MapLibre GL filter rule to apply |
134
+
135
+ <a name="Panoramax.components.ui.Map+displayPictureMarker"></a>
136
+
137
+ ### mapMore.displayPictureMarker(lon, lat, heading, [skipCenter])
138
+ Shows on map a picture position and heading.
139
+
140
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
141
+
142
+ | Param | Type | Default | Description |
143
+ | --- | --- | --- | --- |
144
+ | lon | <code>number</code> | | The longitude |
145
+ | lat | <code>number</code> | | The latitude |
146
+ | heading | <code>number</code> | | The heading |
147
+ | [skipCenter] | <code>boolean</code> | <code>false</code> | Set to true to avoid map centering on marker |
148
+
149
+ <a name="Panoramax.components.ui.Map+reloadLayersStyles"></a>
150
+
151
+ ### mapMore.reloadLayersStyles()
152
+ Forces reload of pictures/sequences layer styles.
153
+ This is useful after a map theme change.
154
+
155
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
156
+ <a name="Panoramax.components.ui.Map+addEventListener"></a>
157
+
158
+ ### mapMore.addEventListener(type, listener)
159
+ Listen to map events.
160
+ This is a binder to [`on`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#on) and [`once`](https://maplibre.org/maplibre-gl-js/docs/API/classes/Map/#once) MapLibre GL functions.
161
+
162
+ **Kind**: instance method of [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
163
+
164
+ | Param | Type | Default | Description |
165
+ | --- | --- | --- | --- |
166
+ | type | <code>string</code> | | The event type to listen for |
167
+ | listener | <code>function</code> | | The event handler |
168
+ | [options.once] | <code>boolean</code> | <code>false</code> | Set to true to only listen to first event. |
169
+
170
+ <a name="Panoramax.components.ui.MapMore+event_filters-changed"></a>
171
+
172
+ ### "filters-changed"
173
+ Event for filters changes
174
+
175
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
176
+ **Properties**
177
+
178
+ | Name | Type | Description |
179
+ | --- | --- | --- |
180
+ | [minDate] | <code>string</code> | The minimum date in time range (ISO format) |
181
+ | [maxDate] | <code>string</code> | The maximum date in time range (ISO format) |
182
+ | [pic_type] | <code>string</code> | Camera type (equirectangular, flat, null/empty string for both) |
183
+ | [camera] | <code>string</code> | Camera make and model |
184
+ | [theme] | <code>string</code> | Map theme |
185
+ | [qualityscore] | <code>Array.&lt;number&gt;</code> | QualityScore values, as a list of 1 to 5 grades |
186
+
187
+ <a name="Panoramax.components.ui.Map+event_ready"></a>
188
+
189
+ ### "ready"
190
+ Event when map is ready to display.
191
+ This includes Maplibre initial load, enough map data display and styling.
192
+
193
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
194
+ <a name="Panoramax.components.ui.Map+event_background-changed"></a>
195
+
196
+ ### "background-changed"
197
+ Event for map background changes
198
+
199
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
200
+ **Properties**
201
+
202
+ | Name | Type | Description |
203
+ | --- | --- | --- |
204
+ | [background] | <code>string</code> | The new selected background (aerial, streets) |
205
+
206
+ <a name="Panoramax.components.ui.Map+event_users-changed"></a>
207
+
208
+ ### "users-changed"
209
+ Event for visible users changes
210
+
211
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
212
+ **Properties**
213
+
214
+ | Name | Type | Description |
215
+ | --- | --- | --- |
216
+ | [usersIds] | <code>Array.&lt;string&gt;</code> | The list of newly selected users |
217
+
218
+ <a name="Panoramax.components.ui.Map+event_sequence-hover"></a>
219
+
220
+ ### "sequence-hover"
221
+ Event when a sequence on map is hovered (not selected)
222
+
223
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
224
+ **Properties**
225
+
226
+ | Name | Type | Description |
227
+ | --- | --- | --- |
228
+ | seqId | <code>string</code> | The hovered sequence ID |
229
+
230
+ <a name="Panoramax.components.ui.Map+event_sequence-click"></a>
231
+
232
+ ### "sequence-click"
233
+ Event when a sequence on map is clicked
234
+
235
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
236
+ **Properties**
237
+
238
+ | Name | Type | Description |
239
+ | --- | --- | --- |
240
+ | seqId | <code>string</code> | The clicked sequence ID |
241
+ | coordinates | <code>maplibregl.LngLat</code> | The coordinates of user click |
242
+
243
+ <a name="Panoramax.components.ui.Map+event_picture-click"></a>
244
+
245
+ ### "picture-click"
246
+ Event when a picture on map is clicked
247
+
248
+ **Kind**: event emitted by [<code>MapMore</code>](#Panoramax.components.ui.MapMore)
249
+ **Properties**
250
+
251
+ | Name | Type | Description |
252
+ | --- | --- | --- |
253
+ | picId | <code>string</code> | The clicked picture ID |
254
+ | seqId | <code>string</code> | The clicked picture's sequence ID |
255
+ | feature | <code>object</code> | The GeoJSON feature of the picture |
256
+