@panoramax/web-viewer 3.2.3 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/.gitlab-ci.yml +13 -6
  2. package/CHANGELOG.md +49 -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 +253 -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,35 @@
1
+ <a name="Panoramax.components.layout.BottomDrawer"></a>
2
+
3
+ ## Panoramax.components.layout.BottomDrawer ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.layout</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-bottom-drawer
7
+ **Slot**: `default` The drawer content
8
+
9
+ * [.BottomDrawer](#Panoramax.components.layout.BottomDrawer) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
10
+ * [new BottomDrawer()](#new_Panoramax.components.layout.BottomDrawer_new)
11
+ * [.properties](#Panoramax.components.layout.BottomDrawer+properties) : <code>Object</code>
12
+
13
+ <a name="new_Panoramax.components.layout.BottomDrawer_new"></a>
14
+
15
+ ### new BottomDrawer()
16
+ BottomDrawer layout offers a mobile-like drawer menu, coming from bottom of the screen.
17
+
18
+ **Example**
19
+ ```html
20
+ <pnx-bottom-drawer openness="opened">
21
+ <p>My drawer content</p>
22
+ </pnx-bottom-drawer>
23
+ ```
24
+ <a name="Panoramax.components.layout.BottomDrawer+properties"></a>
25
+
26
+ ### bottomDrawer.properties : <code>Object</code>
27
+ Component properties.
28
+
29
+ **Kind**: instance property of [<code>BottomDrawer</code>](#Panoramax.components.layout.BottomDrawer)
30
+ **Properties**
31
+
32
+ | Name | Type | Default | Description |
33
+ | --- | --- | --- | --- |
34
+ | [openness] | <code>string</code> | <code>&quot;half-opened&quot;</code> | How much the drawer should be opened (closed, half-opened, opened) |
35
+
@@ -0,0 +1,29 @@
1
+ <a name="Panoramax.components.layout.CorneredGrid"></a>
2
+
3
+ ## Panoramax.components.layout.CorneredGrid ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.layout</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-cornered-grid
7
+ **Slot**: `bg` The full size background component
8
+ **Slot**: `top-left` The top-left corner
9
+ **Slot**: `top` The top middle corner
10
+ **Slot**: `top-right` The top-right corner
11
+ **Slot**: `bottom-left` The bottom-left corner
12
+ **Slot**: `bottom` The bottom middle corner
13
+ **Slot**: `bottom-right` The bottom-right corner
14
+ <a name="new_Panoramax.components.layout.CorneredGrid_new"></a>
15
+
16
+ ### new CorneredGrid()
17
+ CorneredGrid layout offers a convenient way to display overlay widgets on top of a background component.
18
+ This is useful for showing buttons in corners over a map or picture display.
19
+ Grid layout is organised through many slots (background and corners) : two rows (top, bottom) and three columns (right, middle, left).
20
+
21
+ **Example**
22
+ ```html
23
+ <pnx-cornered-grid>
24
+ <pnx-map slot="bg" />
25
+ <pnx-button slot="top-left" />
26
+ <pnx-button slot="top-left" />
27
+ <pnx-legend slot="bottom" />
28
+ </pnx-cornered-grid>
29
+ ```
@@ -0,0 +1,45 @@
1
+ <a name="Panoramax.components.layout.Mini"></a>
2
+
3
+ ## Panoramax.components.layout.Mini ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.layout</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Emits**: [<code>expand</code>](#Panoramax.components.layout.Mini+event_expand)
7
+ **Element**: pnx-mini
8
+ **Slot**: `default` The component to display.
9
+
10
+ * [.Mini](#Panoramax.components.layout.Mini) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
11
+ * [new Mini()](#new_Panoramax.components.layout.Mini_new)
12
+ * [.properties](#Panoramax.components.layout.Mini+properties) : <code>Object</code>
13
+ * ["expand"](#Panoramax.components.layout.Mini+event_expand)
14
+
15
+ <a name="new_Panoramax.components.layout.Mini_new"></a>
16
+
17
+ ### new Mini()
18
+ Mini layout allows to show a reduced or collapsed component in a corner of a main component.
19
+ For example, show a reduced map on top of a photo display.
20
+
21
+ **Example**
22
+ ```html
23
+ <pnx-mini icon=${fa(faMap)} ._parent=${viewer}>
24
+ <pnx-map />
25
+ </pnx-mini>
26
+ ```
27
+ <a name="Panoramax.components.layout.Mini+properties"></a>
28
+
29
+ ### mini.properties : <code>Object</code>
30
+ Component properties.
31
+
32
+ **Kind**: instance property of [<code>Mini</code>](#Panoramax.components.layout.Mini)
33
+ **Properties**
34
+
35
+ | Name | Type | Default | Description |
36
+ | --- | --- | --- | --- |
37
+ | [icon] | <code>string</code> | | The icon to use in collapsed button. |
38
+ | [collapsed] | <code>boolean</code> | <code>false</code> | Collapsed displays only a simple button. |
39
+
40
+ <a name="Panoramax.components.layout.Mini+event_expand"></a>
41
+
42
+ ### "expand"
43
+ Event when user ask for component expand
44
+
45
+ **Kind**: event emitted by [<code>Mini</code>](#Panoramax.components.layout.Mini)
@@ -0,0 +1,45 @@
1
+ <a name="Panoramax.components.layout.Tabs"></a>
2
+
3
+ ## Panoramax.components.layout.Tabs ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.layout</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-tabs
7
+ **Slot**: `title` A single tab name
8
+ **Slot**: `content` A single tab content
9
+
10
+ * [.Tabs](#Panoramax.components.layout.Tabs) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
11
+ * [new Tabs()](#new_Panoramax.components.layout.Tabs_new)
12
+ * [.properties](#Panoramax.components.layout.Tabs+properties) : <code>Object</code>
13
+
14
+ <a name="new_Panoramax.components.layout.Tabs_new"></a>
15
+
16
+ ### new Tabs()
17
+ Tabs offers a nice paged content rendering based on tabs buttons.
18
+ The list of tab names are passed through `title` slots, and content using `content` slots.
19
+ Note that tab names and contents should respect a coherent order.
20
+
21
+ **Example**
22
+ ```html
23
+ <pnx-tabs>
24
+ <h4 slot="title">Tab 1</h4>
25
+ <div slot="content">Tab 1 content</div>
26
+
27
+ <h4 slot="title">Tab 2</h4>
28
+ <div slot="content">Tab 2 content</div>
29
+
30
+ <h4 slot="title">Tab 3</h4>
31
+ <div slot="content">Tab 3 content</div>
32
+ </pnx-tabs>
33
+ ```
34
+ <a name="Panoramax.components.layout.Tabs+properties"></a>
35
+
36
+ ### tabs.properties : <code>Object</code>
37
+ Component properties.
38
+
39
+ **Kind**: instance property of [<code>Tabs</code>](#Panoramax.components.layout.Tabs)
40
+ **Properties**
41
+
42
+ | Name | Type | Default | Description |
43
+ | --- | --- | --- | --- |
44
+ | [activeTabIndex] | <code>string</code> | <code>0</code> | The selected tab index |
45
+
@@ -0,0 +1,32 @@
1
+ <a name="Panoramax.components.menus.MapBackground"></a>
2
+
3
+ ## Panoramax.components.menus.MapBackground ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-map-background
7
+
8
+ * [.MapBackground](#Panoramax.components.menus.MapBackground) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new MapBackground()](#new_Panoramax.components.menus.MapBackground_new)
10
+ * [.properties](#Panoramax.components.menus.MapBackground+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.menus.MapBackground_new"></a>
13
+
14
+ ### new MapBackground()
15
+ Map Background menu allows user to select background.
16
+
17
+ **Example**
18
+ ```html
19
+ <pnx-map-background size="sm" _parent=${viewer} />
20
+ ```
21
+ <a name="Panoramax.components.menus.MapBackground+properties"></a>
22
+
23
+ ### mapBackground.properties : <code>Object</code>
24
+ Component properties.
25
+
26
+ **Kind**: instance property of [<code>MapBackground</code>](#Panoramax.components.menus.MapBackground)
27
+ **Properties**
28
+
29
+ | Name | Type | Default | Description |
30
+ | --- | --- | --- | --- |
31
+ | [size] | <code>string</code> | <code>&quot;md&quot;</code> | The size of the button (sm, md) |
32
+
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.MapFilters"></a>
2
+
3
+ ## Panoramax.components.menus.MapFilters ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-map-filters-menu
7
+ <a name="new_Panoramax.components.menus.MapFilters_new"></a>
8
+
9
+ ### new MapFilters()
10
+ Map Filters menu allows user to select map data they want displayed.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-map-filters-menu user-search="" _parent=${viewer} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.MapLayers"></a>
2
+
3
+ ## Panoramax.components.menus.MapLayers ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-map-layers-menu
7
+ <a name="new_Panoramax.components.menus.MapLayers_new"></a>
8
+
9
+ ### new MapLayers()
10
+ Map Layers menu allows user to select background and map theme.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-map-layers-menu _parent=${viewer} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.MapLegend"></a>
2
+
3
+ ## Panoramax.components.menus.MapLegend ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-map-legend
7
+ <a name="new_Panoramax.components.menus.MapLegend_new"></a>
8
+
9
+ ### new MapLegend()
10
+ Map legend displays information about map sources.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-map-legend ._parent=${viewer} />
15
+ ```
@@ -0,0 +1,16 @@
1
+ <a name="Panoramax.components.menus.PictureLegend"></a>
2
+
3
+ ## Panoramax.components.menus.PictureLegend ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-picture-legend
7
+ **Slot**: `editors` External links to map editors, or any tool that may be helpful. Defaults to OSM tools (iD & JOSM).
8
+ <a name="new_Panoramax.components.menus.PictureLegend_new"></a>
9
+
10
+ ### new PictureLegend()
11
+ Picture legend shows info about picture author, capture date, address, and access to metadata popup.
12
+
13
+ **Example**
14
+ ```html
15
+ <pnx-picture-legend ._parent=${viewer} />
16
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.PictureMetadata"></a>
2
+
3
+ ## Panoramax.components.menus.PictureMetadata ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-picture-metadata
7
+ <a name="new_Panoramax.components.menus.PictureMetadata_new"></a>
8
+
9
+ ### new PictureMetadata()
10
+ Picture metadata displays detailed info about a single picture (ID, capture context, EXIF attributes...).
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-picture-metadata ._parent=${viewer} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.PlayerOptions"></a>
2
+
3
+ ## Panoramax.components.menus.PlayerOptions ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-player-options
7
+ <a name="new_Panoramax.components.menus.PlayerOptions_new"></a>
8
+
9
+ ### new PlayerOptions()
10
+ Player Options menu displays player speed and contrast settings.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-player-options ._parent=${viewer} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.QualityScoreDoc"></a>
2
+
3
+ ## Panoramax.components.menus.QualityScoreDoc ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-quality-score-doc
7
+ <a name="new_Panoramax.components.menus.QualityScoreDoc_new"></a>
8
+
9
+ ### new QualityScoreDoc()
10
+ Quality Score Doc displays a synthetic summary of how Quality Score is computed.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-quality-score-doc ._t=${viewer._t} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.ReportForm"></a>
2
+
3
+ ## Panoramax.components.menus.ReportForm ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-report-form
7
+ <a name="new_Panoramax.components.menus.ReportForm_new"></a>
8
+
9
+ ### new ReportForm()
10
+ Report Form displays a form to send issues about pictures.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-report-form ._parent=${viewer} />
15
+ ```
@@ -0,0 +1,15 @@
1
+ <a name="Panoramax.components.menus.ShareMenu"></a>
2
+
3
+ ## Panoramax.components.menus.ShareMenu ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.menus</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-share-menu
7
+ <a name="new_Panoramax.components.menus.ShareMenu_new"></a>
8
+
9
+ ### new ShareMenu()
10
+ Share Menu displays links for quick picture sharing.
11
+
12
+ **Example**
13
+ ```html
14
+ <pnx-share-menu ._parent=${viewer} />
15
+ ```
@@ -0,0 +1,40 @@
1
+ <a name="Panoramax.components.ui.Button"></a>
2
+
3
+ ## Panoramax.components.ui.Button ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-button
7
+
8
+ * [.Button](#Panoramax.components.ui.Button) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new Button()](#new_Panoramax.components.ui.Button_new)
10
+ * [.properties](#Panoramax.components.ui.Button+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.ui.Button_new"></a>
13
+
14
+ ### new Button()
15
+ Button element displays a direct action button.
16
+ Binds to a HTML button, so you can use any events offered by it.
17
+
18
+ **Example**
19
+ ```html
20
+ <pnx-button kind="flat" size="l" @click=${() => alert("click!")}>
21
+ Click on me
22
+ </pnx-button>
23
+ ```
24
+ <a name="Panoramax.components.ui.Button+properties"></a>
25
+
26
+ ### button.properties : <code>Object</code>
27
+ Component properties.
28
+
29
+ **Kind**: instance property of [<code>Button</code>](#Panoramax.components.ui.Button)
30
+ **Properties**
31
+
32
+ | Name | Type | Default | Description |
33
+ | --- | --- | --- | --- |
34
+ | [active] | <code>boolean</code> | <code>false</code> | Whether the button is in an active state. |
35
+ | [kind] | <code>string</code> | <code>&quot;full&quot;</code> | The style variation of the button (full, outline, flat, superflat, inline, superinline) |
36
+ | [size] | <code>string</code> | <code>&quot;md&quot;</code> | The size of the button (sm, md, l, xl, xxl) |
37
+ | [disabled] | <code>boolean</code> | <code>false</code> | Whether the button is disabled. |
38
+ | [type] | <code>string</code> | | The button type (e.g., 'submit'). |
39
+ | [title] | <code>string</code> | | Tooltip text displayed when hovering over the button |
40
+
@@ -0,0 +1,36 @@
1
+ <a name="Panoramax.components.ui.ButtonGroup"></a>
2
+
3
+ ## Panoramax.components.ui.ButtonGroup ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-button-group
7
+
8
+ * [.ButtonGroup](#Panoramax.components.ui.ButtonGroup) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new ButtonGroup()](#new_Panoramax.components.ui.ButtonGroup_new)
10
+ * [.properties](#Panoramax.components.ui.ButtonGroup+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.ui.ButtonGroup_new"></a>
13
+
14
+ ### new ButtonGroup()
15
+ Button Group element allows to merge many button in a single bar.
16
+
17
+ **Example**
18
+ ```html
19
+ <pnx-button-group id="pnx-widget-player" dir="row" size="xl" class="pnx-print-hidden">
20
+ <pnx-button>B1</pnx-button>
21
+ <pnx-button>B2</pnx-button>
22
+ </pnx-button-group>
23
+ ```
24
+ <a name="Panoramax.components.ui.ButtonGroup+properties"></a>
25
+
26
+ ### buttonGroup.properties : <code>Object</code>
27
+ Component properties.
28
+
29
+ **Kind**: instance property of [<code>ButtonGroup</code>](#Panoramax.components.ui.ButtonGroup)
30
+ **Properties**
31
+
32
+ | Name | Type | Description |
33
+ | --- | --- | --- |
34
+ | [dir] | <code>string</code> | Group direction (row, column) |
35
+ | [size] | <code>string</code> | Group size (md, xl) |
36
+
@@ -0,0 +1,38 @@
1
+ <a name="Panoramax.components.ui.CopyButton"></a>
2
+
3
+ ## Panoramax.components.ui.CopyButton ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-copy-button
7
+
8
+ * [.CopyButton](#Panoramax.components.ui.CopyButton) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new CopyButton()](#new_Panoramax.components.ui.CopyButton_new)
10
+ * [.properties](#Panoramax.components.ui.CopyButton+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.ui.CopyButton_new"></a>
13
+
14
+ ### new CopyButton()
15
+ Copy Button element allows top copy in clipboard some text.
16
+
17
+ **Example**
18
+ ```html
19
+ <pnx-copy-button text="content to copy" ._t=${viewer._t}>
20
+ Copy me !
21
+ </pnx-copy-button>
22
+ ```
23
+ <a name="Panoramax.components.ui.CopyButton+properties"></a>
24
+
25
+ ### copyButton.properties : <code>Object</code>
26
+ Component properties.
27
+
28
+ **Kind**: instance property of [<code>CopyButton</code>](#Panoramax.components.ui.CopyButton)
29
+ **Properties**
30
+
31
+ | Name | Type | Default | Description |
32
+ | --- | --- | --- | --- |
33
+ | [text] | <code>string</code> | | Text to copy in clipboard on click (use either this parameter or input, not both) |
34
+ | [input] | <code>input</code> | | ID of a HTML input field to copy content from in clipboard (use either this parameter or text, not both) |
35
+ | [kind] | <code>string</code> | <code>&quot;full&quot;</code> | The style variation of the button (full, outline, flat, superflat, inline, superinline) |
36
+ | [size] | <code>string</code> | <code>&quot;md&quot;</code> | The size of the button (sm, md, l, xl, xxl) |
37
+ | [unstyled] | <code>boolean</code> | <code>false</code> | Disable all styling (for list group integration) |
38
+
@@ -0,0 +1,32 @@
1
+ <a name="Panoramax.components.ui.Grade"></a>
2
+
3
+ ## Panoramax.components.ui.Grade ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-grade
7
+
8
+ * [.Grade](#Panoramax.components.ui.Grade) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new Grade()](#new_Panoramax.components.ui.Grade_new)
10
+ * [.properties](#Panoramax.components.ui.Grade+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.ui.Grade_new"></a>
13
+
14
+ ### new Grade()
15
+ Grade element displays a 5-star rating.
16
+
17
+ **Example**
18
+ ```html
19
+ <pnx-grade stars="5" .t=${viewer._t} />
20
+ ```
21
+ <a name="Panoramax.components.ui.Grade+properties"></a>
22
+
23
+ ### grade.properties : <code>Object</code>
24
+ Component properties.
25
+
26
+ **Kind**: instance property of [<code>Grade</code>](#Panoramax.components.ui.Grade)
27
+ **Properties**
28
+
29
+ | Name | Type | Default | Description |
30
+ | --- | --- | --- | --- |
31
+ | [stars] | <code>number</code> | <code>0</code> | 1 to 5 grade (or 0 for unknown value) |
32
+
@@ -0,0 +1,45 @@
1
+ <a name="Panoramax.components.ui.LinkButton"></a>
2
+
3
+ ## Panoramax.components.ui.LinkButton ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-link-button
7
+
8
+ * [.LinkButton](#Panoramax.components.ui.LinkButton) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new LinkButton()](#new_Panoramax.components.ui.LinkButton_new)
10
+ * [.properties](#Panoramax.components.ui.LinkButton+properties) : <code>Object</code>
11
+
12
+ <a name="new_Panoramax.components.ui.LinkButton_new"></a>
13
+
14
+ ### new LinkButton()
15
+ Link Button element displays a HTML `<a>` anchor with a button style.
16
+
17
+ **Example**
18
+ ```html
19
+ <pnx-link-button
20
+ title="Redirect to other website"
21
+ kind="outline"
22
+ href="https://panoramax.fr"
23
+ target="_blank"
24
+ >
25
+ Click to go on Panoramax
26
+ </pnx-link-button>
27
+ ```
28
+ <a name="Panoramax.components.ui.LinkButton+properties"></a>
29
+
30
+ ### linkButton.properties : <code>Object</code>
31
+ Component properties.
32
+
33
+ **Kind**: instance property of [<code>LinkButton</code>](#Panoramax.components.ui.LinkButton)
34
+ **Properties**
35
+
36
+ | Name | Type | Default | Description |
37
+ | --- | --- | --- | --- |
38
+ | [href] | <code>string</code> | | The URL the button should navigate to when clicked |
39
+ | [target] | <code>string</code> | | Specifies where to open the linked document (e.g., '_blank') |
40
+ | [title] | <code>string</code> | | Tooltip text displayed when hovering over the button |
41
+ | [download] | <code>string</code> | | Indicates if the linked resource should be downloaded |
42
+ | [class] | <code>string</code> | | Custom CSS class for additional styling |
43
+ | [kind] | <code>string</code> | <code>&quot;full&quot;</code> | The style variation of the button (full, outline, flat, superflat) |
44
+ | [size] | <code>string</code> | <code>&quot;md&quot;</code> | The size of the button (sm, md, l, xl, xxl) |
45
+
@@ -0,0 +1,22 @@
1
+ <a name="Panoramax.components.ui.ListGroup"></a>
2
+
3
+ ## Panoramax.components.ui.ListGroup ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-list-group
7
+ **Slot**: `default` Any element you want to add in list.
8
+ <a name="new_Panoramax.components.ui.ListGroup_new"></a>
9
+
10
+ ### new ListGroup()
11
+ List Group element displays a menu having a list of rapid actions (links, buttons).
12
+
13
+ Note that you may only want to use basic HTML elements (`a`, `button`) instead of Panoramax ones.
14
+ The list group overrides style, so using `pnx-*` component may conflict on styling.
15
+
16
+ **Example**
17
+ ```html
18
+ <pnx-list-group>
19
+ <a href="https://web.site/">First link</a>
20
+ <button>Second button</button>
21
+ </pnx-list-group>
22
+ ```
@@ -0,0 +1,56 @@
1
+ <a name="Panoramax.components.ui.Loader"></a>
2
+
3
+ ## Panoramax.components.ui.Loader ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.ui</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Element**: pnx-loader
7
+
8
+ * [.Loader](#Panoramax.components.ui.Loader) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
9
+ * [new Loader()](#new_Panoramax.components.ui.Loader_new)
10
+ * [.properties](#Panoramax.components.ui.Loader+properties) : <code>Object</code>
11
+ * [.isVisible()](#Panoramax.components.ui.Loader+isVisible) ⇒ <code>boolean</code>
12
+ * [.dismiss([err], [errMeaningful], [next])](#Panoramax.components.ui.Loader+dismiss)
13
+
14
+ <a name="new_Panoramax.components.ui.Loader_new"></a>
15
+
16
+ ### new Loader()
17
+ Loader component display a full page covering for user waiting.
18
+
19
+ **Example**
20
+ ```html
21
+ <pnx-loader ._parent=${this.viewer} />
22
+ ```
23
+ <a name="Panoramax.components.ui.Loader+properties"></a>
24
+
25
+ ### loader.properties : <code>Object</code>
26
+ Component properties.
27
+
28
+ **Kind**: instance property of [<code>Loader</code>](#Panoramax.components.ui.Loader)
29
+ **Properties**
30
+
31
+ | Name | Type | Default | Description |
32
+ | --- | --- | --- | --- |
33
+ | [visible] | <code>boolean</code> | <code>true</code> | Is the loader visible to user ? |
34
+ | [no-label] | <code>boolean</code> | <code>false</code> | Set to true to avoid loading label display |
35
+ | [value] | <code>number</code> | | Progress bar percentage (0-100) |
36
+
37
+ <a name="Panoramax.components.ui.Loader+isVisible"></a>
38
+
39
+ ### loader.isVisible() ⇒ <code>boolean</code>
40
+ Is the loader currently visible ?
41
+
42
+ **Kind**: instance method of [<code>Loader</code>](#Panoramax.components.ui.Loader)
43
+ **Returns**: <code>boolean</code> - True if visible
44
+ <a name="Panoramax.components.ui.Loader+dismiss"></a>
45
+
46
+ ### loader.dismiss([err], [errMeaningful], [next])
47
+ Dismiss loader, or show error
48
+
49
+ **Kind**: instance method of [<code>Loader</code>](#Panoramax.components.ui.Loader)
50
+
51
+ | Param | Type | Default | Description |
52
+ | --- | --- | --- | --- |
53
+ | [err] | <code>object</code> | <code></code> | Optional error object to show in browser console |
54
+ | [errMeaningful] | <code>str</code> | <code></code> | Optional error message to show to user |
55
+ | [next] | <code>fct</code> | <code></code> | Optional function to run after loader dismiss |
56
+