@panoramax/web-viewer 3.2.3-develop-f219e404 → 3.2.3-develop-6257391e

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 (221) hide show
  1. package/.gitlab-ci.yml +3 -0
  2. package/CHANGELOG.md +19 -0
  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 +2 -2
  7. package/build/index.css.map +1 -1
  8. package/build/index.html +1 -1
  9. package/build/index.js +1682 -5
  10. package/build/index.js.map +1 -1
  11. package/build/map.html +1 -1
  12. package/build/viewer.html +10 -1
  13. package/build/widgets.html +1 -0
  14. package/config/jest/mocks.js +172 -0
  15. package/config/paths.js +1 -0
  16. package/config/webpack.config.js +26 -0
  17. package/docs/03_URL_settings.md +3 -11
  18. package/docs/05_Compatibility.md +59 -76
  19. package/docs/09_Develop.md +30 -11
  20. package/docs/90_Releases.md +2 -2
  21. package/docs/images/class_diagram.drawio +28 -28
  22. package/docs/images/class_diagram.jpg +0 -0
  23. package/docs/index.md +112 -0
  24. package/docs/reference/components/core/Basic.md +153 -0
  25. package/docs/reference/components/core/CoverageMap.md +160 -0
  26. package/docs/reference/components/core/Editor.md +172 -0
  27. package/docs/reference/components/core/Viewer.md +288 -0
  28. package/docs/reference/components/layout/CorneredGrid.md +29 -0
  29. package/docs/reference/components/layout/Mini.md +45 -0
  30. package/docs/reference/components/menus/MapBackground.md +32 -0
  31. package/docs/reference/components/menus/MapFilters.md +15 -0
  32. package/docs/reference/components/menus/MapLayers.md +15 -0
  33. package/docs/reference/components/menus/MapLegend.md +15 -0
  34. package/docs/reference/components/menus/PictureLegend.md +15 -0
  35. package/docs/reference/components/menus/PictureMetadata.md +15 -0
  36. package/docs/reference/components/menus/PlayerOptions.md +15 -0
  37. package/docs/reference/components/menus/QualityScoreDoc.md +15 -0
  38. package/docs/reference/components/menus/ReportForm.md +15 -0
  39. package/docs/reference/components/menus/ShareMenu.md +15 -0
  40. package/docs/reference/components/ui/Button.md +39 -0
  41. package/docs/reference/components/ui/ButtonGroup.md +36 -0
  42. package/docs/reference/components/ui/CopyButton.md +35 -0
  43. package/docs/reference/components/ui/Grade.md +32 -0
  44. package/docs/reference/components/ui/LinkButton.md +44 -0
  45. package/docs/reference/components/ui/Loader.md +54 -0
  46. package/docs/reference/components/ui/Map.md +214 -0
  47. package/docs/reference/components/ui/MapMore.md +233 -0
  48. package/docs/reference/components/ui/Photo.md +369 -0
  49. package/docs/reference/components/ui/Popup.md +56 -0
  50. package/docs/reference/components/ui/QualityScore.md +45 -0
  51. package/docs/reference/components/ui/SearchBar.md +63 -0
  52. package/docs/reference/components/ui/TogglableGroup.md +39 -0
  53. package/docs/reference/components/ui/widgets/GeoSearch.md +32 -0
  54. package/docs/reference/components/ui/widgets/Legend.md +32 -0
  55. package/docs/reference/components/ui/widgets/MapFiltersButton.md +33 -0
  56. package/docs/reference/components/ui/widgets/MapLayersButton.md +15 -0
  57. package/docs/reference/components/ui/widgets/Player.md +32 -0
  58. package/docs/reference/components/ui/widgets/Share.md +15 -0
  59. package/docs/reference/components/ui/widgets/Zoom.md +15 -0
  60. package/docs/reference/utils/API.md +311 -0
  61. package/docs/reference/utils/InitParameters.md +67 -0
  62. package/docs/reference/utils/URLHandler.md +102 -0
  63. package/docs/reference.md +73 -0
  64. package/docs/shortcuts.md +11 -0
  65. package/docs/tutorials/aerial_imagery.md +19 -0
  66. package/docs/tutorials/authentication.md +10 -0
  67. package/docs/tutorials/custom_widgets.md +64 -0
  68. package/docs/tutorials/map_style.md +27 -0
  69. package/docs/tutorials/migrate_v4.md +122 -0
  70. package/docs/tutorials/synced_coverage.md +42 -0
  71. package/mkdocs.yml +60 -5
  72. package/package.json +10 -7
  73. package/public/editor.html +21 -29
  74. package/public/index.html +3 -3
  75. package/public/map.html +19 -18
  76. package/public/viewer.html +18 -24
  77. package/public/widgets.html +265 -0
  78. package/scripts/doc.js +77 -0
  79. package/src/components/core/Basic.css +44 -0
  80. package/src/components/core/Basic.js +258 -0
  81. package/src/components/core/CoverageMap.css +9 -0
  82. package/src/components/core/CoverageMap.js +105 -0
  83. package/src/components/core/Editor.css +23 -0
  84. package/src/components/core/Editor.js +354 -0
  85. package/src/components/core/Viewer.css +109 -0
  86. package/src/components/core/Viewer.js +707 -0
  87. package/src/components/core/index.js +11 -0
  88. package/src/components/index.js +13 -0
  89. package/src/components/layout/CorneredGrid.js +109 -0
  90. package/src/components/layout/Mini.js +117 -0
  91. package/src/components/layout/index.js +7 -0
  92. package/src/components/menus/MapBackground.js +106 -0
  93. package/src/components/menus/MapFilters.js +386 -0
  94. package/src/components/menus/MapLayers.js +143 -0
  95. package/src/components/menus/MapLegend.js +54 -0
  96. package/src/components/menus/PictureLegend.js +103 -0
  97. package/src/components/menus/PictureMetadata.js +188 -0
  98. package/src/components/menus/PlayerOptions.js +96 -0
  99. package/src/components/menus/QualityScoreDoc.js +36 -0
  100. package/src/components/menus/ReportForm.js +133 -0
  101. package/src/components/menus/Share.js +228 -0
  102. package/src/components/menus/index.js +15 -0
  103. package/src/components/styles.js +365 -0
  104. package/src/components/ui/Button.js +75 -0
  105. package/src/components/ui/ButtonGroup.css +49 -0
  106. package/src/components/ui/ButtonGroup.js +68 -0
  107. package/src/components/ui/CopyButton.js +71 -0
  108. package/src/components/ui/Grade.js +54 -0
  109. package/src/components/ui/LinkButton.js +68 -0
  110. package/src/components/ui/Loader.js +188 -0
  111. package/src/components/{Map.css → ui/Map.css} +5 -17
  112. package/src/components/{Map.js → ui/Map.js} +114 -138
  113. package/src/components/ui/MapMore.js +324 -0
  114. package/src/components/{Photo.css → ui/Photo.css} +6 -6
  115. package/src/components/{Photo.js → ui/Photo.js} +279 -90
  116. package/src/components/ui/Popup.js +145 -0
  117. package/src/components/ui/QualityScore.js +152 -0
  118. package/src/components/ui/SearchBar.js +363 -0
  119. package/src/components/ui/TogglableGroup.js +162 -0
  120. package/src/components/ui/index.js +20 -0
  121. package/src/components/ui/widgets/GeoSearch.css +21 -0
  122. package/src/components/ui/widgets/GeoSearch.js +139 -0
  123. package/src/components/ui/widgets/Legend.js +51 -0
  124. package/src/components/ui/widgets/MapFiltersButton.js +104 -0
  125. package/src/components/ui/widgets/MapLayersButton.js +79 -0
  126. package/src/components/ui/widgets/Player.css +7 -0
  127. package/src/components/ui/widgets/Player.js +148 -0
  128. package/src/components/ui/widgets/Share.js +30 -0
  129. package/src/components/ui/widgets/Zoom.js +82 -0
  130. package/src/components/ui/widgets/index.js +12 -0
  131. package/src/img/panoramax.svg +13 -0
  132. package/src/img/switch_big.svg +20 -10
  133. package/src/index.js +6 -9
  134. package/src/translations/da.json +1 -1
  135. package/src/translations/de.json +1 -1
  136. package/src/translations/en.json +5 -3
  137. package/src/translations/eo.json +1 -1
  138. package/src/translations/es.json +1 -1
  139. package/src/translations/fr.json +5 -3
  140. package/src/translations/hu.json +1 -1
  141. package/src/translations/it.json +1 -1
  142. package/src/translations/ja.json +1 -1
  143. package/src/translations/nl.json +1 -1
  144. package/src/translations/pl.json +1 -1
  145. package/src/translations/sv.json +33 -3
  146. package/src/translations/zh_Hant.json +1 -1
  147. package/src/utils/API.js +74 -42
  148. package/src/utils/InitParameters.js +354 -0
  149. package/src/utils/URLHandler.js +364 -0
  150. package/src/utils/geocoder.js +116 -0
  151. package/src/utils/{I18n.js → i18n.js} +3 -1
  152. package/src/utils/index.js +11 -0
  153. package/src/utils/{Map.js → map.js} +216 -80
  154. package/src/utils/picture.js +433 -0
  155. package/src/utils/utils.js +315 -0
  156. package/src/utils/widgets.js +93 -0
  157. package/tests/components/ui/CopyButton.test.js +52 -0
  158. package/tests/components/ui/Loader.test.js +54 -0
  159. package/tests/components/{Map.test.js → ui/Map.test.js} +19 -61
  160. package/tests/components/{Photo.test.js → ui/Photo.test.js} +89 -57
  161. package/tests/components/ui/Popup.test.js +24 -0
  162. package/tests/components/ui/QualityScore.test.js +17 -0
  163. package/tests/components/ui/SearchBar.test.js +107 -0
  164. package/tests/components/ui/__snapshots__/CopyButton.test.js.snap +34 -0
  165. package/tests/components/ui/__snapshots__/Loader.test.js.snap +56 -0
  166. package/tests/components/{__snapshots__ → ui/__snapshots__}/Map.test.js.snap +11 -38
  167. package/tests/components/{__snapshots__ → ui/__snapshots__}/Photo.test.js.snap +57 -4
  168. package/tests/components/ui/__snapshots__/Popup.test.js.snap +29 -0
  169. package/tests/components/ui/__snapshots__/QualityScore.test.js.snap +11 -0
  170. package/tests/components/ui/__snapshots__/SearchBar.test.js.snap +65 -0
  171. package/tests/utils/API.test.js +1 -14
  172. package/tests/utils/InitParameters.test.js +485 -0
  173. package/tests/utils/URLHandler.test.js +350 -0
  174. package/tests/utils/__snapshots__/URLHandler.test.js.snap +21 -0
  175. package/tests/utils/__snapshots__/picture.test.js.snap +315 -0
  176. package/tests/utils/__snapshots__/widgets.test.js.snap +19 -0
  177. package/tests/utils/geocoder.test.js +37 -0
  178. package/tests/utils/{I18n.test.js → i18n.test.js} +1 -1
  179. package/tests/utils/map.test.js +67 -0
  180. package/tests/utils/picture.test.js +745 -0
  181. package/tests/utils/utils.test.js +288 -0
  182. package/tests/utils/widgets.test.js +90 -0
  183. package/docs/01_Start.md +0 -149
  184. package/docs/02_Usage.md +0 -831
  185. package/docs/04_Advanced_examples.md +0 -216
  186. package/src/Editor.css +0 -37
  187. package/src/Editor.js +0 -361
  188. package/src/StandaloneMap.js +0 -114
  189. package/src/Viewer.css +0 -203
  190. package/src/Viewer.js +0 -1246
  191. package/src/components/CoreView.css +0 -70
  192. package/src/components/CoreView.js +0 -175
  193. package/src/components/Loader.css +0 -74
  194. package/src/components/Loader.js +0 -120
  195. package/src/utils/Exif.js +0 -193
  196. package/src/utils/Utils.js +0 -631
  197. package/src/utils/Widgets.js +0 -562
  198. package/src/viewer/URLHash.js +0 -469
  199. package/src/viewer/Widgets.css +0 -880
  200. package/src/viewer/Widgets.js +0 -1470
  201. package/tests/Editor.test.js +0 -126
  202. package/tests/StandaloneMap.test.js +0 -45
  203. package/tests/Viewer.test.js +0 -366
  204. package/tests/__snapshots__/Editor.test.js.snap +0 -298
  205. package/tests/__snapshots__/StandaloneMap.test.js.snap +0 -30
  206. package/tests/__snapshots__/Viewer.test.js.snap +0 -195
  207. package/tests/components/CoreView.test.js +0 -92
  208. package/tests/components/Loader.test.js +0 -38
  209. package/tests/components/__snapshots__/Loader.test.js.snap +0 -15
  210. package/tests/utils/Exif.test.js +0 -124
  211. package/tests/utils/Map.test.js +0 -113
  212. package/tests/utils/Utils.test.js +0 -300
  213. package/tests/utils/Widgets.test.js +0 -107
  214. package/tests/utils/__snapshots__/Exif.test.js.snap +0 -43
  215. package/tests/utils/__snapshots__/Utils.test.js.snap +0 -41
  216. package/tests/utils/__snapshots__/Widgets.test.js.snap +0 -44
  217. package/tests/viewer/URLHash.test.js +0 -559
  218. package/tests/viewer/Widgets.test.js +0 -127
  219. package/tests/viewer/__snapshots__/URLHash.test.js.snap +0 -108
  220. package/tests/viewer/__snapshots__/Widgets.test.js.snap +0 -403
  221. /package/tests/utils/__snapshots__/{Map.test.js.snap → geocoder.test.js.snap} +0 -0
@@ -1,94 +1,94 @@
1
- <mxfile host="app.diagrams.net" modified="2024-03-25T13:20:49.245Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0" etag="r1p7scxPnhYybEiXE-8z" version="23.1.2" type="device">
1
+ <mxfile host="app.diagrams.net" modified="2025-03-17T12:37:16.267Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:136.0) Gecko/20100101 Firefox/136.0" etag="SUUWP6lveJk2cUhdSDGS" version="24.1.0" type="device">
2
2
  <diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">
3
- <mxGraphModel dx="1018" dy="574" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
3
+ <mxGraphModel dx="890" dy="496" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
4
4
  <root>
5
5
  <mxCell id="WIyWlLk6GJQsqaUBKTNV-0" />
6
6
  <mxCell id="WIyWlLk6GJQsqaUBKTNV-1" parent="WIyWlLk6GJQsqaUBKTNV-0" />
7
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-1" value="CoreView" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
7
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-1" value="Basic" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
8
8
  <mxGeometry x="20" y="40" width="160" height="34" as="geometry" />
9
9
  </mxCell>
10
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-1">
10
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-3" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-1" vertex="1">
11
11
  <mxGeometry y="26" width="160" height="8" as="geometry" />
12
12
  </mxCell>
13
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-9" value="Viewer" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
13
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-9" value="Viewer" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
14
14
  <mxGeometry x="20" y="160" width="160" height="34" as="geometry" />
15
15
  </mxCell>
16
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-10" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-9">
16
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-10" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-9" vertex="1">
17
17
  <mxGeometry y="26" width="160" height="8" as="geometry" />
18
18
  </mxCell>
19
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-11" value="StandaloneMap" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
19
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-11" value="CoverageMap" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
20
20
  <mxGeometry x="200" y="160" width="160" height="34" as="geometry" />
21
21
  </mxCell>
22
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-12" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-11">
22
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-12" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-11" vertex="1">
23
23
  <mxGeometry y="26" width="160" height="8" as="geometry" />
24
24
  </mxCell>
25
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-13" value="Editor" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
25
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-13" value="Editor" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
26
26
  <mxGeometry x="380" y="160" width="160" height="34" as="geometry" />
27
27
  </mxCell>
28
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-13">
28
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-13" vertex="1">
29
29
  <mxGeometry y="26" width="160" height="8" as="geometry" />
30
30
  </mxCell>
31
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-15" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-9" target="-sBJLWWXFzCuZ66xZKHM-1">
31
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-15" value="Extends" style="endArrow=block;endSize=16;endFill=0;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-9" target="-sBJLWWXFzCuZ66xZKHM-1" edge="1">
32
32
  <mxGeometry width="160" relative="1" as="geometry">
33
33
  <mxPoint x="310" y="260" as="sourcePoint" />
34
34
  <mxPoint x="470" y="260" as="targetPoint" />
35
35
  </mxGeometry>
36
36
  </mxCell>
37
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-17" value="" style="endArrow=none;html=1;rounded=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
37
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-17" value="" style="endArrow=none;html=1;rounded=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" edge="1">
38
38
  <mxGeometry width="50" height="50" relative="1" as="geometry">
39
39
  <mxPoint x="100" y="140" as="sourcePoint" />
40
40
  <mxPoint x="460" y="140" as="targetPoint" />
41
41
  </mxGeometry>
42
42
  </mxCell>
43
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-19" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-11">
43
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-19" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-11" edge="1">
44
44
  <mxGeometry width="50" height="50" relative="1" as="geometry">
45
45
  <mxPoint x="370" y="290" as="sourcePoint" />
46
46
  <mxPoint x="280" y="140" as="targetPoint" />
47
47
  </mxGeometry>
48
48
  </mxCell>
49
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-20" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13">
49
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-20" value="" style="endArrow=none;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13" edge="1">
50
50
  <mxGeometry width="50" height="50" relative="1" as="geometry">
51
51
  <mxPoint x="290" y="170" as="sourcePoint" />
52
52
  <mxPoint x="460" y="140" as="targetPoint" />
53
53
  </mxGeometry>
54
54
  </mxCell>
55
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-22" value="Views" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
55
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-22" value="components.core" style="swimlane;whiteSpace=wrap;html=1;startSize=23;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
56
56
  <mxGeometry x="10" y="10" width="540" height="200" as="geometry" />
57
57
  </mxCell>
58
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-23" value="Components" style="swimlane;whiteSpace=wrap;html=1;" vertex="1" parent="WIyWlLk6GJQsqaUBKTNV-1">
58
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-23" value="components.ui" style="swimlane;whiteSpace=wrap;html=1;" parent="WIyWlLk6GJQsqaUBKTNV-1" vertex="1">
59
59
  <mxGeometry x="10" y="230" width="540" height="90" as="geometry" />
60
60
  </mxCell>
61
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-26" value="Photo" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-23">
61
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-26" value="Photo" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="-sBJLWWXFzCuZ66xZKHM-23" vertex="1">
62
62
  <mxGeometry x="10" y="40" width="160" height="34" as="geometry" />
63
63
  </mxCell>
64
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-26">
64
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-26" vertex="1">
65
65
  <mxGeometry y="26" width="160" height="8" as="geometry" />
66
66
  </mxCell>
67
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-28" value="Loader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-23">
67
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-28" value="Loader" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="-sBJLWWXFzCuZ66xZKHM-23" vertex="1">
68
68
  <mxGeometry x="370" y="40" width="160" height="34" as="geometry" />
69
69
  </mxCell>
70
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-29" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-28">
70
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-29" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-28" vertex="1">
71
71
  <mxGeometry y="26" width="160" height="8" as="geometry" />
72
72
  </mxCell>
73
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-24" value="Map" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-23">
73
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-24" value="Map" style="swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;" parent="-sBJLWWXFzCuZ66xZKHM-23" vertex="1">
74
74
  <mxGeometry x="190" y="40" width="160" height="34" as="geometry" />
75
75
  </mxCell>
76
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-25" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" vertex="1" parent="-sBJLWWXFzCuZ66xZKHM-24">
76
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-25" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="-sBJLWWXFzCuZ66xZKHM-24" vertex="1">
77
77
  <mxGeometry y="26" width="160" height="8" as="geometry" />
78
78
  </mxCell>
79
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-30" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-9" target="-sBJLWWXFzCuZ66xZKHM-24">
79
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-30" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-9" target="-sBJLWWXFzCuZ66xZKHM-24" edge="1">
80
80
  <mxGeometry width="160" relative="1" as="geometry">
81
81
  <mxPoint x="370" y="300" as="sourcePoint" />
82
82
  <mxPoint x="234" y="272" as="targetPoint" />
83
83
  </mxGeometry>
84
84
  </mxCell>
85
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-31" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.506;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-10" target="-sBJLWWXFzCuZ66xZKHM-26">
85
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-31" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.506;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-10" target="-sBJLWWXFzCuZ66xZKHM-26" edge="1">
86
86
  <mxGeometry width="160" relative="1" as="geometry">
87
87
  <mxPoint x="370" y="300" as="sourcePoint" />
88
88
  <mxPoint x="530" y="300" as="targetPoint" />
89
89
  </mxGeometry>
90
90
  </mxCell>
91
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-32" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-1" target="-sBJLWWXFzCuZ66xZKHM-28">
91
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-32" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-1" target="-sBJLWWXFzCuZ66xZKHM-28" edge="1">
92
92
  <mxGeometry x="0.3304" width="160" relative="1" as="geometry">
93
93
  <mxPoint x="111" y="204" as="sourcePoint" />
94
94
  <mxPoint x="290" y="280" as="targetPoint" />
@@ -99,20 +99,20 @@
99
99
  <mxPoint as="offset" />
100
100
  </mxGeometry>
101
101
  </mxCell>
102
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-38" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13" target="-sBJLWWXFzCuZ66xZKHM-24">
102
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-38" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13" target="-sBJLWWXFzCuZ66xZKHM-24" edge="1">
103
103
  <mxGeometry width="160" relative="1" as="geometry">
104
104
  <mxPoint x="320" y="390" as="sourcePoint" />
105
105
  <mxPoint x="480" y="390" as="targetPoint" />
106
106
  </mxGeometry>
107
107
  </mxCell>
108
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-39" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-11" target="-sBJLWWXFzCuZ66xZKHM-24">
108
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-39" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-11" target="-sBJLWWXFzCuZ66xZKHM-24" edge="1">
109
109
  <mxGeometry x="-0.5789" width="160" relative="1" as="geometry">
110
110
  <mxPoint x="210" y="360" as="sourcePoint" />
111
111
  <mxPoint x="240" y="270" as="targetPoint" />
112
112
  <mxPoint as="offset" />
113
113
  </mxGeometry>
114
114
  </mxCell>
115
- <mxCell id="-sBJLWWXFzCuZ66xZKHM-41" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13" target="-sBJLWWXFzCuZ66xZKHM-26">
115
+ <mxCell id="-sBJLWWXFzCuZ66xZKHM-41" value="Use" style="endArrow=open;endSize=12;dashed=1;html=1;rounded=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" parent="WIyWlLk6GJQsqaUBKTNV-1" source="-sBJLWWXFzCuZ66xZKHM-13" target="-sBJLWWXFzCuZ66xZKHM-26" edge="1">
116
116
  <mxGeometry width="160" relative="1" as="geometry">
117
117
  <mxPoint x="150" y="370" as="sourcePoint" />
118
118
  <mxPoint x="310" y="370" as="targetPoint" />
Binary file
package/docs/index.md ADDED
@@ -0,0 +1,112 @@
1
+ # Web viewer documentation
2
+
3
+ Welcome to Panoramax __Web Viewer__ documentation ! It will help you through all phases of setup, run and develop on Panoramax JS pictures viewer.
4
+
5
+ ![Web viewer screenshots](./images/screenshot.jpg)
6
+
7
+ !!! note
8
+
9
+ If at some point you're lost or need help, you can contact us through [issues](https://gitlab.com/panoramax/clients/web-viewer/-/issues) or by [email](mailto:panoramax@panoramax.fr).
10
+
11
+ ## Install
12
+
13
+ Many options are available for installing the viewer.
14
+
15
+ === ":simple-npm: NPM"
16
+
17
+ Panoramax viewer is available on NPM as [@panoramax/web-viewer](https://www.npmjs.com/package/@panoramax/web-viewer) package.
18
+
19
+ ```bash
20
+ npm install @panoramax/web-viewer
21
+ ```
22
+
23
+ If you want the latest version (corresponding to the `develop` git branch), you can use the `develop` NPM dist-tag:
24
+
25
+ ```bash
26
+ npm install @panoramax/web-viewer@develop
27
+ ```
28
+
29
+ === ":material-web: Hosted"
30
+
31
+ You can rely on various providers offering hosted NPM packages, for example JSDelivr.
32
+
33
+ ```html
34
+ <!-- You may use another version than 4.0.0, just change the release in URL -->
35
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@panoramax/web-viewer@4.0.0/build/index.css" />
36
+ <script src="https://cdn.jsdelivr.net/npm/@panoramax/web-viewer@4.0.0/build/index.js"></script>
37
+ ```
38
+
39
+ === ":material-code-tags: Source code"
40
+
41
+ You can install and use Panoramax web client based on code provided in this repository.
42
+
43
+ This library relies on any recent __Node.js__ version, which should be installed on your computer. Then, you can build the library using these commands:
44
+
45
+ ```bash
46
+ git clone https://gitlab.com/panoramax/clients/web-viewer.git
47
+ cd web-viewer/
48
+ npm install
49
+ npm build
50
+ ```
51
+
52
+
53
+ ## Basic usage
54
+
55
+ First, you need to import Panoramax code:
56
+
57
+ === ":fontawesome-brands-js: Old-school JS"
58
+
59
+ Make sure to have both JS and CSS code available in your HTML `head` part:
60
+
61
+ ```html
62
+ <!-- Change the actual path depending of where you installed the library -->
63
+ <link rel="stylesheet" type="text/css" href="web-viewer/build/index.css" />
64
+ <script src="web-viewer/build/index.js"></script>
65
+ ```
66
+
67
+ === ":fontawesome-brands-node-js: New-style JS"
68
+
69
+ Make sure to import both JS and CSS in your code:
70
+
71
+ ```js
72
+ import Panoramax from '@panoramax/web-viewer';
73
+ import '@panoramax/web-viewer/build/index.css';
74
+ ```
75
+
76
+ Once ready, you can create for example a viewer. We use web components to do so, you can create it in HTML or in other web components:
77
+
78
+ ```html
79
+ <pnx-viewer
80
+ endpoint="https://api.panoramax.xyz/api"
81
+ />
82
+ ```
83
+
84
+ [Many options are available to configure it finely](./reference/components/core/Viewer.md).
85
+
86
+ Beyond classic viewer, other widgets are available and [can be tested online](https://viewer.geovisio.fr/).
87
+
88
+ __Coverage map__
89
+
90
+ A simple map for showing Panoramax data availability.
91
+
92
+ ```html
93
+ <pnx-coverage-map
94
+ endpoint="https://api.panoramax.xyz/api"
95
+ />
96
+ ```
97
+
98
+ [Many options are available as well](./reference/components/core/CoverageMap.md).
99
+
100
+ __Editor__
101
+
102
+ A map and photo viewer, focused on a single sequence, for previewing edits made to it.
103
+
104
+ ```html
105
+ <pnx-editor
106
+ endpoint="https://panoramax.openstreetmap.fr/api"
107
+ sequence="id-to-an-existing-sequence"
108
+ picture="id-to-a-picture-in-this-sequence"
109
+ />
110
+ ```
111
+
112
+ [Many options are available as well](./reference/components/core/Editor.md).
@@ -0,0 +1,153 @@
1
+ <a name="Panoramax.components.core.Basic"></a>
2
+
3
+ ## Panoramax.components.core.Basic ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
4
+ **Kind**: static class of <code>Panoramax.components.core</code>
5
+ **Extends**: <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
6
+ **Emits**: [<code>select</code>](#Panoramax.components.core.Basic+event_select), [<code>ready</code>](#Panoramax.components.core.Basic+event_ready), [<code>broken</code>](#Panoramax.components.core.Basic+event_broken), [<code>menu-opened</code>](#Panoramax.components.core.Basic+event_menu-opened)
7
+ **Properties**
8
+
9
+ | Name | Type | Description |
10
+ | --- | --- | --- |
11
+ | loader | [<code>Loader</code>](../ui/Loader.md/#Panoramax.components.ui.Loader) | The loader screen |
12
+ | api | [<code>API</code>](../../utils/API.md/#Panoramax.utils.API) | The API manager |
13
+
14
+
15
+ * [.Basic](#Panoramax.components.core.Basic) ⇐ <code>[lit.LitElement](https://lit.dev/docs/api/LitElement/)</code>
16
+ * [new Basic()](#new_Panoramax.components.core.Basic_new)
17
+ * [.properties](#Panoramax.components.core.Basic+properties) : <code>Object</code>
18
+ * [.onceReady()](#Panoramax.components.core.Basic+onceReady) ⇒ <code>Promise</code>
19
+ * [.onceAPIReady()](#Panoramax.components.core.Basic+onceAPIReady) ⇒ <code>Promise</code>
20
+ * [.getClassName()](#Panoramax.components.core.Basic+getClassName) ⇒ <code>string</code>
21
+ * [.select([seqId], [picId], [force])](#Panoramax.components.core.Basic+select)
22
+ * [.isWidthSmall()](#Panoramax.components.core.Basic+isWidthSmall) ⇒ <code>boolean</code>
23
+ * [.isHeightSmall()](#Panoramax.components.core.Basic+isHeightSmall) ⇒ <code>boolean</code>
24
+ * ["menu-opened"](#Panoramax.components.core.Basic+event_menu-opened)
25
+ * ["select"](#Panoramax.components.core.Basic+event_select)
26
+ * ["ready"](#Panoramax.components.core.Basic+event_ready)
27
+ * ["broken"](#Panoramax.components.core.Basic+event_broken)
28
+
29
+ <a name="new_Panoramax.components.core.Basic_new"></a>
30
+
31
+ ### new Basic()
32
+ Basic core component is a basic container for common functions through all core components.
33
+ It is not intended to be used directly, it's only to be extended by other core components.
34
+
35
+ <a name="Panoramax.components.core.Basic+properties"></a>
36
+
37
+ ### basic.properties : <code>Object</code>
38
+ Component properties.
39
+
40
+ **Kind**: instance mixin of [<code>Basic</code>](#Panoramax.components.core.Basic)
41
+ **Properties**
42
+
43
+ | Name | Type | Default | Description |
44
+ | --- | --- | --- | --- |
45
+ | [picture] | <code>string</code> | | The picture ID to display |
46
+ | [sequence] | <code>string</code> | | The sequence ID of the picture displayed |
47
+ | [fetchOptions] | <code>object</code> | | Set custom options for fetch calls made against API ([same syntax as fetch options parameter](https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters)) |
48
+ | [users] | <code>Array.&lt;string&gt;</code> | <code>[geovisio]</code> | List of users IDs to use for map display (defaults to general map, identified as "geovisio") |
49
+ | [style] | <code>string</code> \| <code>object</code> | | The map's MapLibre style. This can be an a JSON object conforming to the schema described in the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/), or a URL string pointing to one. Defaults to OSM vector tiles. |
50
+ | [lang] | <code>string</code> | | To override language used for labels. Defaults to using user's preferred languages. |
51
+ | endpoint | <code>string</code> | | URL to API to use (must be a [STAC API](https://github.com/radiantearth/stac-api-spec/blob/main/overview.md)) |
52
+
53
+ <a name="Panoramax.components.core.Basic+onceReady"></a>
54
+
55
+ ### basic.onceReady() ⇒ <code>Promise</code>
56
+ Waits for component to have its first loading done.
57
+
58
+ Each inheriting class must override this method.
59
+
60
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
61
+ **Fulfil**: <code>null</code> When initialization is complete.
62
+ **Reject**: <code>string</code> Error message
63
+ <a name="Panoramax.components.core.Basic+onceAPIReady"></a>
64
+
65
+ ### basic.onceAPIReady() ⇒ <code>Promise</code>
66
+ Waits for initial API setup.
67
+
68
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
69
+ **Fulfil**: <code>null</code> When API is ready.
70
+ **Reject**: <code>string</code> Error message
71
+ <a name="Panoramax.components.core.Basic+getClassName"></a>
72
+
73
+ ### basic.getClassName() ⇒ <code>string</code>
74
+ This allows to retrieve an always correct class name.
75
+ This is crap, but avoids issues with Webpack & so on.
76
+
77
+ Each inheriting class must override this method.
78
+
79
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
80
+ **Returns**: <code>string</code> - The class name (for example "Basic")
81
+ <a name="Panoramax.components.core.Basic+select"></a>
82
+
83
+ ### basic.select([seqId], [picId], [force])
84
+ Change the currently picture and/or sequence.
85
+ Calling the method without parameters unselects.
86
+
87
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
88
+
89
+ | Param | Type | Default | Description |
90
+ | --- | --- | --- | --- |
91
+ | [seqId] | <code>string</code> | <code>null</code> | The sequence UUID |
92
+ | [picId] | <code>string</code> | <code>null</code> | The picture UUID |
93
+ | [force] | <code>boolean</code> | <code>false</code> | Force select even if already selected |
94
+
95
+ <a name="Panoramax.components.core.Basic+isWidthSmall"></a>
96
+
97
+ ### basic.isWidthSmall() ⇒ <code>boolean</code>
98
+ Is the view running in a small container (small embed or smartphone)
99
+
100
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
101
+ **Returns**: <code>boolean</code> - True if container is small
102
+ <a name="Panoramax.components.core.Basic+isHeightSmall"></a>
103
+
104
+ ### basic.isHeightSmall() ⇒ <code>boolean</code>
105
+ Is the view running in a small-height container (small embed or smartphone)
106
+
107
+ **Kind**: instance method of [<code>Basic</code>](#Panoramax.components.core.Basic)
108
+ **Returns**: <code>boolean</code> - True if container height is small
109
+ <a name="Panoramax.components.core.Basic+event_menu-opened"></a>
110
+
111
+ ### "menu-opened"
112
+ Event for overlaying menu opening
113
+
114
+ **Kind**: event emitted by [<code>Basic</code>](#Panoramax.components.core.Basic)
115
+ **Properties**
116
+
117
+ | Name | Type | Description |
118
+ | --- | --- | --- |
119
+ | detail.menu | <code>Element</code> | The opened menu |
120
+
121
+ <a name="Panoramax.components.core.Basic+event_select"></a>
122
+
123
+ ### "select"
124
+ Event for sequence/picture selection
125
+
126
+ **Kind**: event emitted by [<code>Basic</code>](#Panoramax.components.core.Basic)
127
+ **Properties**
128
+
129
+ | Name | Type | Description |
130
+ | --- | --- | --- |
131
+ | detail.seqId | <code>string</code> | The selected sequence ID |
132
+ | detail.picId | <code>string</code> | The selected picture ID (or null if not a precise picture clicked) |
133
+ | [detail.prevSeqId] | <code>string</code> | The previously selected sequence ID (or null if none) |
134
+ | [detail.prevPicId] | <code>string</code> | The previously selected picture ID (or null if none) |
135
+
136
+ <a name="Panoramax.components.core.Basic+event_ready"></a>
137
+
138
+ ### "ready"
139
+ Event for component being ready to use (API loaded)
140
+
141
+ **Kind**: event emitted by [<code>Basic</code>](#Panoramax.components.core.Basic)
142
+ <a name="Panoramax.components.core.Basic+event_broken"></a>
143
+
144
+ ### "broken"
145
+ Event for viewer failing to initially load
146
+
147
+ **Kind**: event emitted by [<code>Basic</code>](#Panoramax.components.core.Basic)
148
+ **Properties**
149
+
150
+ | Name | Type | Description |
151
+ | --- | --- | --- |
152
+ | detail.error | <code>string</code> | The user-friendly error message to display |
153
+
@@ -0,0 +1,160 @@
1
+ <a name="Panoramax.components.core.CoverageMap"></a>
2
+
3
+ ## Panoramax.components.core.CoverageMap ⇐ [<code>Basic</code>](Basic.md/#Panoramax.components.core.Basic)
4
+ **Kind**: static class of <code>Panoramax.components.core</code>
5
+ **Extends**: [<code>Basic</code>](Basic.md/#Panoramax.components.core.Basic)
6
+ **Emits**: [<code>select</code>](Basic.md/#Panoramax.components.core.Basic+event_select), [<code>ready</code>](Basic.md/#Panoramax.components.core.Basic+event_ready), [<code>broken</code>](Basic.md/#Panoramax.components.core.Basic+event_broken)
7
+ **Element**: pnx-coverage-map
8
+ **Properties**
9
+
10
+ | Name | Type | Description |
11
+ | --- | --- | --- |
12
+ | loader | [<code>Loader</code>](../ui/Loader.md/#Panoramax.components.ui.Loader) | The loader screen |
13
+ | api | [<code>API</code>](../../utils/API.md/#Panoramax.utils.API) | The API manager |
14
+ | map | [<code>Map</code>](../ui/Map.md/#Panoramax.components.ui.Map) | The MapLibre GL map itself |
15
+
16
+
17
+ * [.CoverageMap](#Panoramax.components.core.CoverageMap) ⇐ [<code>Basic</code>](Basic.md/#Panoramax.components.core.Basic)
18
+ * [new CoverageMap()](#new_Panoramax.components.core.CoverageMap_new)
19
+ * [.properties](Basic.md/#Panoramax.components.core.Basic+properties) : <code>Object</code>
20
+ * [.onceReady()](Basic.md/#Panoramax.components.core.Basic+onceReady) ⇒ <code>Promise</code>
21
+ * [.onceAPIReady()](Basic.md/#Panoramax.components.core.Basic+onceAPIReady) ⇒ <code>Promise</code>
22
+ * [.getClassName()](Basic.md/#Panoramax.components.core.Basic+getClassName) ⇒ <code>string</code>
23
+ * [.select([seqId], [picId], [force])](#Panoramax.components.core.Basic+select)
24
+ * [.isWidthSmall()](Basic.md/#Panoramax.components.core.Basic+isWidthSmall) ⇒ <code>boolean</code>
25
+ * [.isHeightSmall()](Basic.md/#Panoramax.components.core.Basic+isHeightSmall) ⇒ <code>boolean</code>
26
+ * ["menu-opened"](Basic.md/#Panoramax.components.core.Basic+event_menu-opened)
27
+ * ["select"](Basic.md/#Panoramax.components.core.Basic+event_select)
28
+ * ["ready"](Basic.md/#Panoramax.components.core.Basic+event_ready)
29
+ * ["broken"](Basic.md/#Panoramax.components.core.Basic+event_broken)
30
+
31
+ <a name="new_Panoramax.components.core.CoverageMap_new"></a>
32
+
33
+ ### new CoverageMap()
34
+ Coverage Map is a basic map showing Panoramax coverage.
35
+
36
+ **Example**
37
+ ```html
38
+ <pnx-coverage-map
39
+ endpoint="https://panoramax.openstreetmap.fr/"
40
+ />
41
+ ```
42
+ <a name="Panoramax.components.core.Basic+properties"></a>
43
+
44
+ ### coverageMap.properties : <code>Object</code>
45
+ Component properties.
46
+
47
+ **Kind**: instance mixin of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
48
+ **Properties**
49
+
50
+ | Name | Type | Default | Description |
51
+ | --- | --- | --- | --- |
52
+ | [picture] | <code>string</code> | | The picture ID to display |
53
+ | [sequence] | <code>string</code> | | The sequence ID of the picture displayed |
54
+ | [fetchOptions] | <code>object</code> | | Set custom options for fetch calls made against API ([same syntax as fetch options parameter](https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters)) |
55
+ | [users] | <code>Array.&lt;string&gt;</code> | <code>[geovisio]</code> | List of users IDs to use for map display (defaults to general map, identified as "geovisio") |
56
+ | [style] | <code>string</code> \| <code>object</code> | | The map's MapLibre style. This can be an a JSON object conforming to the schema described in the [MapLibre Style Specification](https://maplibre.org/maplibre-gl-js-docs/style-spec/), or a URL string pointing to one. Defaults to OSM vector tiles. |
57
+ | [lang] | <code>string</code> | | To override language used for labels. Defaults to using user's preferred languages. |
58
+ | endpoint | <code>string</code> | | URL to API to use (must be a [STAC API](https://github.com/radiantearth/stac-api-spec/blob/main/overview.md)) |
59
+
60
+ <a name="Panoramax.components.core.Basic+onceReady"></a>
61
+
62
+ ### coverageMap.onceReady() ⇒ <code>Promise</code>
63
+ Waits for component to have its first loading done.
64
+
65
+ Each inheriting class must override this method.
66
+
67
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
68
+ **Fulfil**: <code>null</code> When initialization is complete.
69
+ **Reject**: <code>string</code> Error message
70
+ <a name="Panoramax.components.core.Basic+onceAPIReady"></a>
71
+
72
+ ### coverageMap.onceAPIReady() ⇒ <code>Promise</code>
73
+ Waits for initial API setup.
74
+
75
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
76
+ **Fulfil**: <code>null</code> When API is ready.
77
+ **Reject**: <code>string</code> Error message
78
+ <a name="Panoramax.components.core.Basic+getClassName"></a>
79
+
80
+ ### coverageMap.getClassName() ⇒ <code>string</code>
81
+ This allows to retrieve an always correct class name.
82
+ This is crap, but avoids issues with Webpack & so on.
83
+
84
+ Each inheriting class must override this method.
85
+
86
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
87
+ **Returns**: <code>string</code> - The class name (for example "Basic")
88
+ <a name="Panoramax.components.core.Basic+select"></a>
89
+
90
+ ### coverageMap.select([seqId], [picId], [force])
91
+ Change the currently picture and/or sequence.
92
+ Calling the method without parameters unselects.
93
+
94
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
95
+
96
+ | Param | Type | Default | Description |
97
+ | --- | --- | --- | --- |
98
+ | [seqId] | <code>string</code> | <code>null</code> | The sequence UUID |
99
+ | [picId] | <code>string</code> | <code>null</code> | The picture UUID |
100
+ | [force] | <code>boolean</code> | <code>false</code> | Force select even if already selected |
101
+
102
+ <a name="Panoramax.components.core.Basic+isWidthSmall"></a>
103
+
104
+ ### coverageMap.isWidthSmall() ⇒ <code>boolean</code>
105
+ Is the view running in a small container (small embed or smartphone)
106
+
107
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
108
+ **Returns**: <code>boolean</code> - True if container is small
109
+ <a name="Panoramax.components.core.Basic+isHeightSmall"></a>
110
+
111
+ ### coverageMap.isHeightSmall() ⇒ <code>boolean</code>
112
+ Is the view running in a small-height container (small embed or smartphone)
113
+
114
+ **Kind**: instance method of [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
115
+ **Returns**: <code>boolean</code> - True if container height is small
116
+ <a name="Panoramax.components.core.Basic+event_menu-opened"></a>
117
+
118
+ ### "menu-opened"
119
+ Event for overlaying menu opening
120
+
121
+ **Kind**: event emitted by [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
122
+ **Properties**
123
+
124
+ | Name | Type | Description |
125
+ | --- | --- | --- |
126
+ | detail.menu | <code>Element</code> | The opened menu |
127
+
128
+ <a name="Panoramax.components.core.Basic+event_select"></a>
129
+
130
+ ### "select"
131
+ Event for sequence/picture selection
132
+
133
+ **Kind**: event emitted by [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
134
+ **Properties**
135
+
136
+ | Name | Type | Description |
137
+ | --- | --- | --- |
138
+ | detail.seqId | <code>string</code> | The selected sequence ID |
139
+ | detail.picId | <code>string</code> | The selected picture ID (or null if not a precise picture clicked) |
140
+ | [detail.prevSeqId] | <code>string</code> | The previously selected sequence ID (or null if none) |
141
+ | [detail.prevPicId] | <code>string</code> | The previously selected picture ID (or null if none) |
142
+
143
+ <a name="Panoramax.components.core.Basic+event_ready"></a>
144
+
145
+ ### "ready"
146
+ Event for component being ready to use (API loaded)
147
+
148
+ **Kind**: event emitted by [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
149
+ <a name="Panoramax.components.core.Basic+event_broken"></a>
150
+
151
+ ### "broken"
152
+ Event for viewer failing to initially load
153
+
154
+ **Kind**: event emitted by [<code>CoverageMap</code>](#Panoramax.components.core.CoverageMap)
155
+ **Properties**
156
+
157
+ | Name | Type | Description |
158
+ | --- | --- | --- |
159
+ | detail.error | <code>string</code> | The user-friendly error message to display |
160
+