@panoramax/web-viewer 3.2.3 → 4.0.0-develop-9f9cf858

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 +56 -1
  3. package/CODE_OF_CONDUCT.md +1 -1
  4. package/README.md +1 -1
  5. package/build/editor.html +10 -1
  6. package/build/index.css +12 -12
  7. package/build/index.css.map +1 -1
  8. package/build/index.html +1 -1
  9. package/build/index.js +2126 -14
  10. package/build/index.js.map +1 -1
  11. package/build/map.html +1 -1
  12. package/build/photo.html +1 -0
  13. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff +0 -0
  14. package/build/static/media/atkinson-hyperlegible-next-latin-400-normal..woff2 +0 -0
  15. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff +0 -0
  16. package/build/static/media/atkinson-hyperlegible-next-latin-ext-400-normal..woff2 +0 -0
  17. package/build/viewer.html +12 -1
  18. package/build/widgets.html +1 -0
  19. package/config/jest/mocks.js +201 -0
  20. package/config/paths.js +2 -0
  21. package/config/webpack.config.js +52 -0
  22. package/docs/03_URL_settings.md +14 -16
  23. package/docs/05_Compatibility.md +59 -76
  24. package/docs/09_Develop.md +46 -11
  25. package/docs/90_Releases.md +2 -2
  26. package/docs/images/class_diagram.drawio +60 -45
  27. package/docs/images/class_diagram.jpg +0 -0
  28. package/docs/images/screenshot.jpg +0 -0
  29. package/docs/index.md +135 -0
  30. package/docs/reference/components/core/Basic.md +196 -0
  31. package/docs/reference/components/core/CoverageMap.md +210 -0
  32. package/docs/reference/components/core/Editor.md +224 -0
  33. package/docs/reference/components/core/PhotoViewer.md +307 -0
  34. package/docs/reference/components/core/Viewer.md +350 -0
  35. package/docs/reference/components/layout/BottomDrawer.md +35 -0
  36. package/docs/reference/components/layout/CorneredGrid.md +29 -0
  37. package/docs/reference/components/layout/Mini.md +45 -0
  38. package/docs/reference/components/layout/Tabs.md +45 -0
  39. package/docs/reference/components/menus/MapBackground.md +32 -0
  40. package/docs/reference/components/menus/MapFilters.md +15 -0
  41. package/docs/reference/components/menus/MapLayers.md +15 -0
  42. package/docs/reference/components/menus/MapLegend.md +15 -0
  43. package/docs/reference/components/menus/PictureLegend.md +16 -0
  44. package/docs/reference/components/menus/PictureMetadata.md +15 -0
  45. package/docs/reference/components/menus/PlayerOptions.md +15 -0
  46. package/docs/reference/components/menus/QualityScoreDoc.md +15 -0
  47. package/docs/reference/components/menus/ReportForm.md +15 -0
  48. package/docs/reference/components/menus/ShareMenu.md +15 -0
  49. package/docs/reference/components/ui/Button.md +40 -0
  50. package/docs/reference/components/ui/ButtonGroup.md +36 -0
  51. package/docs/reference/components/ui/CopyButton.md +38 -0
  52. package/docs/reference/components/ui/Grade.md +32 -0
  53. package/docs/reference/components/ui/LinkButton.md +45 -0
  54. package/docs/reference/components/ui/ListGroup.md +22 -0
  55. package/docs/reference/components/ui/Loader.md +56 -0
  56. package/docs/reference/components/ui/Map.md +239 -0
  57. package/docs/reference/components/ui/MapMore.md +256 -0
  58. package/docs/reference/components/ui/Photo.md +385 -0
  59. package/docs/reference/components/ui/Popup.md +56 -0
  60. package/docs/reference/components/ui/ProgressBar.md +32 -0
  61. package/docs/reference/components/ui/QualityScore.md +45 -0
  62. package/docs/reference/components/ui/SearchBar.md +63 -0
  63. package/docs/reference/components/ui/TogglableGroup.md +39 -0
  64. package/docs/reference/components/ui/widgets/GeoSearch.md +32 -0
  65. package/docs/reference/components/ui/widgets/Legend.md +49 -0
  66. package/docs/reference/components/ui/widgets/MapFiltersButton.md +33 -0
  67. package/docs/reference/components/ui/widgets/MapLayersButton.md +15 -0
  68. package/docs/reference/components/ui/widgets/OSMEditors.md +15 -0
  69. package/docs/reference/components/ui/widgets/PictureLegendActions.md +32 -0
  70. package/docs/reference/components/ui/widgets/Player.md +33 -0
  71. package/docs/reference/components/ui/widgets/Zoom.md +15 -0
  72. package/docs/reference/utils/API.md +334 -0
  73. package/docs/reference/utils/InitParameters.md +68 -0
  74. package/docs/reference/utils/URLHandler.md +107 -0
  75. package/docs/reference.md +79 -0
  76. package/docs/shortcuts.md +11 -0
  77. package/docs/tutorials/aerial_imagery.md +19 -0
  78. package/docs/tutorials/authentication.md +10 -0
  79. package/docs/tutorials/custom_widgets.md +59 -0
  80. package/docs/tutorials/map_style.md +39 -0
  81. package/docs/tutorials/migrate_v4.md +153 -0
  82. package/docs/tutorials/synced_coverage.md +43 -0
  83. package/mkdocs.yml +66 -5
  84. package/package.json +22 -17
  85. package/public/editor.html +21 -29
  86. package/public/index.html +17 -12
  87. package/public/map.html +19 -18
  88. package/public/photo.html +55 -0
  89. package/public/viewer.html +22 -26
  90. package/public/widgets.html +306 -0
  91. package/scripts/doc.js +79 -0
  92. package/src/components/core/Basic.css +48 -0
  93. package/src/components/core/Basic.js +349 -0
  94. package/src/components/core/CoverageMap.css +9 -0
  95. package/src/components/core/CoverageMap.js +139 -0
  96. package/src/components/core/Editor.css +23 -0
  97. package/src/components/core/Editor.js +390 -0
  98. package/src/components/core/PhotoViewer.css +48 -0
  99. package/src/components/core/PhotoViewer.js +499 -0
  100. package/src/components/core/Viewer.css +98 -0
  101. package/src/components/core/Viewer.js +564 -0
  102. package/src/components/core/index.js +12 -0
  103. package/src/components/index.js +13 -0
  104. package/src/components/layout/BottomDrawer.js +257 -0
  105. package/src/components/layout/CorneredGrid.js +112 -0
  106. package/src/components/layout/Mini.js +117 -0
  107. package/src/components/layout/Tabs.js +133 -0
  108. package/src/components/layout/index.js +9 -0
  109. package/src/components/menus/MapBackground.js +106 -0
  110. package/src/components/menus/MapFilters.js +400 -0
  111. package/src/components/menus/MapLayers.js +143 -0
  112. package/src/components/menus/MapLegend.js +34 -0
  113. package/src/components/menus/PictureLegend.js +257 -0
  114. package/src/components/menus/PictureMetadata.js +317 -0
  115. package/src/components/menus/PlayerOptions.js +95 -0
  116. package/src/components/menus/QualityScoreDoc.js +36 -0
  117. package/src/components/menus/ReportForm.js +133 -0
  118. package/src/components/menus/Share.js +100 -0
  119. package/src/components/menus/index.js +15 -0
  120. package/src/components/styles.js +383 -0
  121. package/src/components/ui/Button.js +77 -0
  122. package/src/components/ui/ButtonGroup.css +57 -0
  123. package/src/components/ui/ButtonGroup.js +68 -0
  124. package/src/components/ui/CopyButton.js +106 -0
  125. package/src/components/ui/Grade.js +54 -0
  126. package/src/components/ui/LinkButton.js +67 -0
  127. package/src/components/ui/ListGroup.js +66 -0
  128. package/src/components/ui/Loader.js +203 -0
  129. package/src/components/{Map.css → ui/Map.css} +5 -17
  130. package/src/components/{Map.js → ui/Map.js} +148 -156
  131. package/src/components/ui/MapMore.js +324 -0
  132. package/src/components/{Photo.css → ui/Photo.css} +6 -6
  133. package/src/components/{Photo.js → ui/Photo.js} +313 -101
  134. package/src/components/ui/Popup.js +145 -0
  135. package/src/components/ui/ProgressBar.js +104 -0
  136. package/src/components/ui/QualityScore.js +147 -0
  137. package/src/components/ui/SearchBar.js +367 -0
  138. package/src/components/ui/TogglableGroup.js +157 -0
  139. package/src/components/ui/index.js +22 -0
  140. package/src/components/ui/widgets/GeoSearch.css +21 -0
  141. package/src/components/ui/widgets/GeoSearch.js +139 -0
  142. package/src/components/ui/widgets/Legend.js +113 -0
  143. package/src/components/ui/widgets/MapFiltersButton.js +104 -0
  144. package/src/components/ui/widgets/MapLayersButton.js +79 -0
  145. package/src/components/ui/widgets/OSMEditors.js +155 -0
  146. package/src/components/ui/widgets/PictureLegendActions.js +117 -0
  147. package/src/components/ui/widgets/Player.css +7 -0
  148. package/src/components/ui/widgets/Player.js +151 -0
  149. package/src/components/ui/widgets/Zoom.js +82 -0
  150. package/src/components/ui/widgets/index.js +13 -0
  151. package/src/img/loader_base.jpg +0 -0
  152. package/src/img/panoramax.svg +13 -0
  153. package/src/img/switch_big.svg +20 -10
  154. package/src/index.js +7 -9
  155. package/src/translations/br.json +1 -0
  156. package/src/translations/da.json +38 -15
  157. package/src/translations/de.json +5 -3
  158. package/src/translations/en.json +35 -15
  159. package/src/translations/eo.json +38 -15
  160. package/src/translations/es.json +1 -1
  161. package/src/translations/fr.json +36 -16
  162. package/src/translations/hu.json +1 -1
  163. package/src/translations/it.json +39 -16
  164. package/src/translations/ja.json +182 -1
  165. package/src/translations/nl.json +106 -6
  166. package/src/translations/pl.json +1 -1
  167. package/src/translations/sv.json +182 -0
  168. package/src/translations/zh_Hant.json +35 -14
  169. package/src/utils/API.js +109 -49
  170. package/src/utils/InitParameters.js +388 -0
  171. package/src/utils/PhotoAdapter.js +1 -0
  172. package/src/utils/URLHandler.js +362 -0
  173. package/src/utils/geocoder.js +152 -0
  174. package/src/utils/{I18n.js → i18n.js} +7 -3
  175. package/src/utils/index.js +11 -0
  176. package/src/utils/{Map.js → map.js} +256 -77
  177. package/src/utils/picture.js +442 -0
  178. package/src/utils/utils.js +324 -0
  179. package/src/utils/widgets.js +55 -0
  180. package/tests/components/core/Basic.test.js +121 -0
  181. package/tests/components/core/BasicMock.js +25 -0
  182. package/tests/components/core/CoverageMap.test.js +20 -0
  183. package/tests/components/core/Editor.test.js +20 -0
  184. package/tests/components/core/PhotoViewer.test.js +57 -0
  185. package/tests/components/core/Viewer.test.js +84 -0
  186. package/tests/components/core/__snapshots__/PhotoViewer.test.js.snap +73 -0
  187. package/tests/components/core/__snapshots__/Viewer.test.js.snap +145 -0
  188. package/tests/components/ui/CopyButton.test.js +52 -0
  189. package/tests/components/ui/Loader.test.js +55 -0
  190. package/tests/components/{Map.test.js → ui/Map.test.js} +73 -61
  191. package/tests/components/{Photo.test.js → ui/Photo.test.js} +97 -63
  192. package/tests/components/ui/Popup.test.js +26 -0
  193. package/tests/components/ui/QualityScore.test.js +18 -0
  194. package/tests/components/ui/SearchBar.test.js +110 -0
  195. package/tests/components/ui/__snapshots__/CopyButton.test.js.snap +33 -0
  196. package/tests/components/ui/__snapshots__/Loader.test.js.snap +56 -0
  197. package/tests/components/{__snapshots__ → ui/__snapshots__}/Map.test.js.snap +11 -38
  198. package/tests/components/{__snapshots__ → ui/__snapshots__}/Photo.test.js.snap +70 -6
  199. package/tests/components/ui/__snapshots__/Popup.test.js.snap +29 -0
  200. package/tests/components/ui/__snapshots__/QualityScore.test.js.snap +11 -0
  201. package/tests/components/ui/__snapshots__/SearchBar.test.js.snap +65 -0
  202. package/tests/utils/API.test.js +83 -83
  203. package/tests/utils/InitParameters.test.js +499 -0
  204. package/tests/utils/URLHandler.test.js +401 -0
  205. package/tests/utils/__snapshots__/API.test.js.snap +10 -0
  206. package/tests/utils/__snapshots__/URLHandler.test.js.snap +21 -0
  207. package/tests/utils/__snapshots__/{Map.test.js.snap → geocoder.test.js.snap} +1 -1
  208. package/tests/utils/__snapshots__/map.test.js.snap +11 -0
  209. package/tests/utils/__snapshots__/picture.test.js.snap +327 -0
  210. package/tests/utils/__snapshots__/widgets.test.js.snap +19 -0
  211. package/tests/utils/geocoder.test.js +37 -0
  212. package/tests/utils/{I18n.test.js → i18n.test.js} +8 -8
  213. package/tests/utils/map.test.js +126 -0
  214. package/tests/utils/picture.test.js +745 -0
  215. package/tests/utils/utils.test.js +288 -0
  216. package/tests/utils/widgets.test.js +31 -0
  217. package/docs/01_Start.md +0 -149
  218. package/docs/02_Usage.md +0 -831
  219. package/docs/04_Advanced_examples.md +0 -216
  220. package/src/Editor.css +0 -37
  221. package/src/Editor.js +0 -361
  222. package/src/StandaloneMap.js +0 -114
  223. package/src/Viewer.css +0 -203
  224. package/src/Viewer.js +0 -1246
  225. package/src/components/CoreView.css +0 -70
  226. package/src/components/CoreView.js +0 -175
  227. package/src/components/Loader.css +0 -74
  228. package/src/components/Loader.js +0 -120
  229. package/src/img/loader_hd.jpg +0 -0
  230. package/src/utils/Exif.js +0 -193
  231. package/src/utils/Utils.js +0 -631
  232. package/src/utils/Widgets.js +0 -562
  233. package/src/viewer/URLHash.js +0 -469
  234. package/src/viewer/Widgets.css +0 -880
  235. package/src/viewer/Widgets.js +0 -1470
  236. package/tests/Editor.test.js +0 -126
  237. package/tests/StandaloneMap.test.js +0 -45
  238. package/tests/Viewer.test.js +0 -366
  239. package/tests/__snapshots__/Editor.test.js.snap +0 -298
  240. package/tests/__snapshots__/StandaloneMap.test.js.snap +0 -30
  241. package/tests/__snapshots__/Viewer.test.js.snap +0 -195
  242. package/tests/components/CoreView.test.js +0 -92
  243. package/tests/components/Loader.test.js +0 -38
  244. package/tests/components/__snapshots__/Loader.test.js.snap +0 -15
  245. package/tests/utils/Exif.test.js +0 -124
  246. package/tests/utils/Map.test.js +0 -113
  247. package/tests/utils/Utils.test.js +0 -300
  248. package/tests/utils/Widgets.test.js +0 -107
  249. package/tests/utils/__snapshots__/Exif.test.js.snap +0 -43
  250. package/tests/utils/__snapshots__/Utils.test.js.snap +0 -41
  251. package/tests/utils/__snapshots__/Widgets.test.js.snap +0 -44
  252. package/tests/viewer/URLHash.test.js +0 -559
  253. package/tests/viewer/Widgets.test.js +0 -127
  254. package/tests/viewer/__snapshots__/URLHash.test.js.snap +0 -108
  255. package/tests/viewer/__snapshots__/Widgets.test.js.snap +0 -403
@@ -1,880 +0,0 @@
1
- /****************************************
2
- * Style for map/viewer unified widgets *
3
- ****************************************/
4
-
5
- /* Colors */
6
- :root {
7
- --widget-bg: var(--white);
8
- --widget-bg-hover: var(--grey);
9
- --widget-bg-active: var(--blue);
10
- --widget-bg-inactive: var(--grey-semi-dark);
11
- --widget-bg-primary: var(--blue-semi);
12
- --widget-bg-primary-hover: #e0e7ff;
13
- --widget-border-div: var(--grey-pale);
14
- --widget-border-btn: var(--blue);
15
- --widget-font: var(--grey-dark);
16
- --widget-font-active: var(--white);
17
- --widget-font-btn-inactive: var(--grey-semi-dark);
18
- --widget-font-btn-indirect: var(--grey-dark);
19
- --widget-font-btn-direct: var(--blue);
20
- }
21
-
22
-
23
- /***********************************************
24
- * Positioning utilities
25
- */
26
-
27
- .gvs-corner-space {
28
- display: flex;
29
- justify-content: space-between;
30
- width: 100%;
31
- height: 50%;
32
- z-index: 10;
33
- visibility: hidden;
34
- position: relative;
35
- }
36
-
37
- .gvs-main .gvs-corner-space {
38
- padding: 10px;
39
- }
40
-
41
- .gvs-corner {
42
- display: flex;
43
- gap: 10px;
44
- }
45
-
46
- .gvs-main .gvs-corner {
47
- width: 33%;
48
- }
49
-
50
- .gvs-corner > * {
51
- visibility: visible;
52
- }
53
-
54
- #gvs-corner-main-top-middle { align-items: start; justify-content: center; }
55
- #gvs-corner-main-top-left { flex-direction: row; align-items: start; }
56
- #gvs-corner-main-top-right { flex-direction: column; align-items: end; }
57
-
58
- #gvs-corner-main-bottom-right,
59
- #gvs-corner-mini-bottom-left,
60
- #gvs-corner-mini-bottom-right {
61
- flex-direction: column-reverse;
62
- align-items: end;
63
- }
64
-
65
- #gvs-corner-main-bottom-left {
66
- flex-direction: column-reverse;
67
- align-items: start;
68
- }
69
-
70
- @container (max-width: 576px) {
71
- #gvs-corner-main-top-right .gvs-group-btnpanel button {
72
- margin-bottom: 0;
73
- }
74
-
75
- #gvs-corner-main-top-right .gvs-group-btnpanel .gvs-panel {
76
- right: 50px;
77
- left: unset;
78
- top: 0;
79
- bottom: unset;
80
- }
81
-
82
- #gvs-filter-search-user-panel {
83
- top: 35px !important;
84
- left: 0px !important;
85
- right: unset !important;
86
- bottom: unset !important;
87
- }
88
- }
89
-
90
-
91
- /***********************************************
92
- * Reusable styles
93
- */
94
-
95
- .gvs { font-family: sans-serif; }
96
-
97
- .gvs-widget-bg {
98
- border: 1px solid var(--widget-border-div);
99
- border-radius: 5px;
100
- background-color: var(--widget-bg);
101
- color: var(--widget-font);
102
- }
103
-
104
- .gvs-mini .gvs-corner .gvs-widget-bg { box-shadow: none; }
105
- .gvs-widget-bg a { color: var(--widget-font-btn-direct); }
106
- .gvs-widget-bg button.gvs-btn-link {
107
- color: var(--widget-font-btn-direct);
108
- background: none;
109
- border: none;
110
- cursor: pointer;
111
- }
112
-
113
- .gvs-hidden,
114
- .gvs-focus-map .gvs-only-psv,
115
- .gvs-mini-hidden .gvs-only-mini,
116
- .gvs:not(.gvs-mini-hidden) .gvs-only-mini-hidden,
117
- .gvs:not(.gvs-focus-map) .gvs-only-map {
118
- display: none !important;
119
- }
120
-
121
- .gvs-input-btn {
122
- display: flex;
123
- flex-direction: row;
124
- width: 100%;
125
- gap: 5px;
126
- justify-content: space-between;
127
- align-items: center;
128
- flex-wrap: wrap;
129
- white-space: nowrap;
130
- }
131
-
132
- span.gvs-input-btn {
133
- display: inline-block;
134
- width: unset;
135
- vertical-align: middle;
136
- }
137
-
138
- .gvs-input-btn a,
139
- .gvs-input-btn input[type=reset],
140
- .gvs-input-btn button {
141
- font-size: 0.9em;
142
- flex-grow: 1;
143
- flex-shrink: 1;
144
- text-align: center;
145
- background-color: var(--widget-bg-primary);
146
- border: none;
147
- padding: 5px;
148
- font-weight: 600;
149
- flex-basis: 30%;
150
- line-height: 18px;
151
- justify-content: center;
152
- display: flex;
153
- gap: 5px;
154
- color: var(--widget-font-btn-direct);
155
- border-radius: 8px;
156
- cursor: pointer;
157
- text-decoration: none;
158
-
159
- display: flex;
160
- align-items: center;
161
- gap: 5px;
162
- }
163
-
164
- .gvs-input-btn input:not([type=reset]), .gvs-input-btn textarea {
165
- font-size: 0.7em;
166
- width: 100%;
167
- font-family: 'Courier New', Courier, monospace;
168
- }
169
-
170
- .gvs textarea {
171
- background-color: var(--widget-bg);
172
- color: var(--widget-font);
173
- border: 1px solid var(--widget-border-div);
174
- border-radius: 10px;
175
- padding: 5px;
176
- width: 100%;
177
- }
178
-
179
- .gvs-input-btn textarea {
180
- font-size: 0.8em;
181
- height: 50px;
182
- }
183
-
184
- .gvs-input-btn button:not(:disabled):hover,
185
- .gvs-input-btn input[type=reset]:hover,
186
- .gvs-input-btn a.gvs-link-btn:hover {
187
- background-color: var(--widget-bg-primary-hover);
188
- }
189
-
190
- .gvs-input-btn button.gvs-btn-active,
191
- .gvs-input-btn button.gvs-btn-active:hover {
192
- background-color: var(--widget-bg-active);
193
- border-color: var(--widget-bg-active);
194
- color: var(--widget-font-active);
195
- }
196
-
197
- .gvs-input-btn a svg,
198
- .gvs-input-btn button svg {
199
- height: 18px;
200
- }
201
-
202
- .gvs-input-group {
203
- display: flex;
204
- flex-direction: row;
205
- align-items: center;
206
- gap: 5px;
207
- }
208
-
209
- .gvs-input-range {
210
- display: flex;
211
- justify-content: space-between;
212
- gap: 10px;
213
- align-items: center;
214
- width: 100%;
215
- }
216
-
217
- /* Checkbox looking like buttons */
218
- .gvs-input-group.gvs-checkbox-btns {
219
- gap: 0;
220
- }
221
- .gvs-checkbox-btns label {
222
- display: inline-block;
223
- padding: 2px 7px;
224
- background: none;
225
- border: 1px solid var(--widget-border-btn);
226
- color: var(--widget-font-btn-direct);
227
- cursor: pointer;
228
- font-size: 16px;
229
- text-decoration: none;
230
- border-left-width: 0px;
231
- }
232
- .gvs-checkbox-btns label:hover {
233
- background-color: var(--widget-bg-hover);
234
- }
235
- .gvs-checkbox-btns label:first-of-type {
236
- border-top-left-radius: 8px;
237
- border-bottom-left-radius: 8px;
238
- border-left-width: 1px;
239
- }
240
- .gvs-checkbox-btns label:last-of-type {
241
- border-top-right-radius: 8px;
242
- border-bottom-right-radius: 8px;
243
- }
244
- .gvs-checkbox-btns input[type="checkbox"] { display: none; }
245
- .gvs-checkbox-btns input[type="checkbox"]:checked + label {
246
- background-color: var(--widget-bg-active);
247
- color: var(--widget-font-active);
248
- }
249
- .gvs-checkbox-btns input[type="checkbox"]:checked + label:first-of-type {
250
- border-right-color: white;
251
- }
252
-
253
- /* Input shortcuts */
254
- .gvs-input-shortcuts {
255
- margin-top: -10px;
256
- margin-bottom: 5px;
257
- }
258
- .gvs-input-shortcuts button {
259
- border: none;
260
- height: 20px;
261
- line-height: 20px;
262
- font-size: 11px;
263
- padding: 0 8px;
264
- vertical-align: middle;
265
- background-color: var(--grey-pale);
266
- color: var(--black);
267
- border-radius: 10px;
268
- cursor: pointer;
269
- }
270
- .gvs-input-shortcuts button:hover {
271
- background-color: #d9dcd9;
272
- }
273
-
274
-
275
- /* Group */
276
- .gvs-group {
277
- display: flex;
278
- align-items: stretch;
279
- align-content: stretch;
280
- }
281
-
282
- .gvs-group-vertical { flex-direction: column; }
283
- .gvs-group-horizontal { flex-direction: row; }
284
-
285
- .gvs-group.gvs-group-btnpanel {
286
- display: block;
287
- position: relative;
288
- box-shadow: none;
289
- }
290
- .gvs-bottom.gvs-right .gvs-group.gvs-group-btnpanel { flex-direction: row-reverse; align-items: end; }
291
- .gvs-top.gvs-left .gvs-group.gvs-group-btnpanel { flex-direction: column; align-items: start; }
292
-
293
-
294
- /* Panel */
295
- .gvs-panel {
296
- position: absolute;
297
- transition: opacity 0.2s;
298
- padding: 15px;
299
- z-index: 100;
300
- width: 250px;
301
- border-radius: 25px;
302
- }
303
-
304
- .gvs-panel.gvs-hidden {
305
- opacity: 0;
306
- display: block !important;
307
- pointer-events: none;
308
- }
309
-
310
- .gvs-top.gvs-middle .gvs-panel { top: 44px; left: calc((100% - 300px)/2); right: calc((100% - 300px)/2); }
311
- .gvs-top.gvs-left .gvs-panel { top: 65px; left: 0; }
312
- .gvs-bottom.gvs-right .gvs-panel { bottom: 0; right: 65px; }
313
-
314
-
315
- /* Button */
316
- .gvs-btn {
317
- min-width: 38px;
318
- height: 38px;
319
- cursor: pointer;
320
- line-height: 38px;
321
- font-weight: bold;
322
- font-size: 1.3em;
323
- text-align: center;
324
- display: flex;
325
- justify-content: center;
326
- align-items: center;
327
- white-space: nowrap;
328
- }
329
-
330
- a.gvs-btn { text-decoration: none; }
331
-
332
- .gvs-btn.gvs-btn-large {
333
- width: 56px;
334
- height: 56px;
335
- border-radius: 28px;
336
- line-height: 56px;
337
- }
338
-
339
- .gvs-btn:not(:disabled):hover { background-color: var(--widget-bg-hover); }
340
- .gvs-mini .gvs-corner .gvs-btn { border-radius: 10px; }
341
- .gvs-btn:disabled { color: var(--widget-bg-inactive); }
342
-
343
-
344
-
345
- /* Button in group */
346
- .gvs-group { border-radius: 7px; }
347
- .gvs-group.gvs-group-large { border-radius: 21px; }
348
- .gvs-group:not(.gvs-group-btnpanel) .gvs-btn { box-shadow: none; }
349
-
350
- .gvs-group.gvs-group-vertical .gvs-btn {
351
- border-radius: 0px;
352
- border-bottom-width: 0px;
353
- border-top-width: 0px;
354
- }
355
-
356
- .gvs-group.gvs-group-vertical .gvs-btn:first-child {
357
- border-top-right-radius: 7px;
358
- border-top-left-radius: 7px;
359
- border-top-width: 1px;
360
- }
361
-
362
- .gvs-group.gvs-group-vertical .gvs-btn:last-child {
363
- border-bottom-right-radius: 7px;
364
- border-bottom-left-radius: 7px;
365
- border-bottom-width: 1px;
366
- }
367
-
368
- .gvs-group.gvs-group-horizontal .gvs-btn {
369
- border-radius: 0px;
370
- border-right-width: 0px;
371
- border-left-width: 0px;
372
- }
373
-
374
- .gvs-group.gvs-group-horizontal .gvs-btn:first-child {
375
- border-bottom-left-radius: 7px;
376
- border-top-left-radius: 7px;
377
- border-left-width: 1px;
378
- }
379
-
380
- .gvs-group.gvs-group-horizontal .gvs-btn:last-child {
381
- border-bottom-right-radius: 7px;
382
- border-top-right-radius: 7px;
383
- border-right-width: 1px;
384
- }
385
-
386
-
387
- /* Expandable button */
388
- .gvs-btn-expandable {
389
- min-width: 40px;
390
- height: 40px;
391
- border-radius: 20px;
392
- padding: 0 10px;
393
- display: flex;
394
- align-items: center;
395
- gap: 8px;
396
- font-weight: 400;
397
- font-size: 16px;
398
- }
399
-
400
- .gvs-btn-expandable svg:last-child { transition: rotate 0.2s; }
401
- .gvs-btn-expandable:has(+ .gvs-panel:not(.gvs-hidden)) svg:last-child:not(:first-child) { rotate: 180deg; }
402
-
403
-
404
- /* Search bar */
405
- .gvs-search-bar {
406
- display: flex;
407
- align-items: center;
408
- justify-content: space-between;
409
- height: 30px;
410
- border-radius: 15px;
411
- position: relative;
412
- max-width: 100vw;
413
- }
414
-
415
- .gvs-search-bar input {
416
- background: none;
417
- border: none !important;
418
- outline: none;
419
- height: 20px;
420
- width: calc(100% - 30px);
421
- transition: width 0.2s ease-in-out;
422
- }
423
-
424
- .gvs-search-bar.gvs-search-bar-reducable {
425
- max-width: 75vw;
426
- padding-left: 10px;
427
- padding-right: 4px;
428
- }
429
-
430
- .gvs-search-bar.gvs-search-bar-reducable.gvs-search-bar-reduced input {
431
- width: 0px !important;
432
- padding-left: 6px;
433
- }
434
-
435
- .gvs-search-bar.gvs-search-bar-reducable.gvs-search-bar-reduced input:not(:first-child) {
436
- border-left: 1px solid var(--widget-border-div);
437
- }
438
-
439
- .gvs-search-bar-icon {
440
- width: 14px;
441
- margin-right: 10px;
442
- text-align: center;
443
- display: inline-block;
444
- cursor: pointer;
445
- }
446
-
447
- .gvs-search-bar-icon svg { pointer-events: none; }
448
-
449
- .gvs-search-bar-results {
450
- position: absolute;
451
- top: 35px;
452
- list-style: none;
453
- margin: 0;
454
- padding: 0;
455
- max-width: calc(100% - 20px);
456
- }
457
-
458
- .gvs-search-bar-result,
459
- .gvs-search-empty {
460
- display: block;
461
- padding: 5px 15px;
462
- white-space: nowrap;
463
- overflow: hidden;
464
- text-overflow: ellipsis;
465
- cursor: pointer;
466
- border-radius: 0;
467
- }
468
-
469
- .gvs-search-bar-result:hover {
470
- background-color: var(--widget-bg-hover);
471
- }
472
-
473
- .gvs-search-bar-result:first-child {
474
- border-top-right-radius: 25px;
475
- border-top-left-radius: 25px;
476
- padding-top: 15px;
477
- }
478
-
479
- .gvs-search-bar-result:last-child {
480
- border-bottom-right-radius: 25px;
481
- border-bottom-left-radius: 25px;
482
- padding-bottom: 15px;
483
- }
484
-
485
-
486
- /* Inputs */
487
- .gvs-panel select,
488
- .gvs-panel input:not(.gvs-search-bar),
489
- .gvs-popup select,
490
- .gvs-popup input:not(.gvs-search-bar) {
491
- background-color: var(--widget-bg);
492
- color: var(--widget-font);
493
- border: 1px solid var(--widget-border-div);
494
- border-radius: 20px;
495
- font-size: 16px;
496
- padding: 2px 10px;
497
- }
498
-
499
- .gvs-popup form .gvs-input-group.gvs-input-group-inline {
500
- margin-bottom: 10px;
501
- }
502
-
503
- .gvs-popup form .gvs-input-group.gvs-input-group-inline input {
504
- padding: 0;
505
- margin: 0 0 0 10px;
506
- }
507
-
508
- .gvs-popup form .gvs-input-group:not(.gvs-input-group-inline) {
509
- flex-direction: column;
510
- align-items: start;
511
- margin: 0 0 10px 0;
512
- }
513
-
514
- .gvs-popup form .gvs-input-group:not(.gvs-input-group-inline) select,
515
- .gvs-popup form .gvs-input-group:not(.gvs-input-group-inline) input {
516
- width: 100%;
517
- }
518
-
519
- .gvs-popup form .gvs-input-group label svg {
520
- margin-right: 5px;
521
- }
522
-
523
- /* Grades */
524
- .gvs-grade {
525
- color: var(--orange);
526
- }
527
-
528
-
529
- /***********************************************
530
- * Per-component styles
531
- */
532
-
533
- /* Legend */
534
- #gvs-widget-legend {
535
- display: block;
536
- font-family: sans-serif;
537
- padding: 5px 10px;
538
- border-radius: 20px;
539
- position: relative;
540
- }
541
-
542
- #gvs-widget-mini-legend {
543
- padding: 2px 7px;
544
- border-bottom-right-radius: 10px;
545
- border-top-right-radius: 0px;
546
- border-bottom-left-radius: 0px;
547
- display: inline-block;
548
- font-size: 0.8em;
549
- margin-left: 10px;
550
- }
551
-
552
- #gvs-widget-mini-legend a,
553
- #gvs-widget-legend a {
554
- color: var(--widget-font-btn-indirect);
555
- }
556
-
557
-
558
- /* Expand/hide main legend */
559
- #gvs-legend-toggle {
560
- border-radius: 19px;
561
- position: absolute;
562
- right: -5px;
563
- bottom: -5px;
564
- visibility: visible;
565
- box-shadow: 0px 0px 5px #0091EA;
566
- }
567
-
568
- /* Expand/Hide mini-widget buttons */
569
- #gvs-mini-hide,
570
- #gvs-mini-expand {
571
- border-bottom-right-radius: 0px;
572
- border-top-left-radius: 0px;
573
- font-size: 12px;
574
- font-weight: 400;
575
- line-height: 18px;
576
- color: var(--widget-font-btn-indirect);
577
- }
578
-
579
- #gvs-mini-expand {
580
- width: unset;
581
- text-decoration: underline;
582
- padding: 0 8px;
583
- }
584
-
585
- #gvs-mini-hide img,
586
- #gvs-mini-expand img {
587
- width: 20px;
588
- vertical-align: middle;
589
- }
590
-
591
- #gvs-mini-expand img {
592
- margin-left: 5px;
593
- }
594
-
595
- @container (max-width: 576px) {
596
- #gvs-corner-main-bottom-right {
597
- padding-bottom: 100px;
598
- }
599
- #gvs-widget-legend {
600
- position: absolute;
601
- bottom: 10px;
602
- padding-right: 40px;
603
- margin-bottom: 5px;
604
- margin-right: 5px;
605
- max-width: 45vw;
606
- }
607
- .gvs-iframed #gvs-widget-legend {
608
- width: 100%;
609
- }
610
- #gvs-mini-hide,
611
- #gvs-mini-expand {
612
- width: 32px;
613
- height: 32px;
614
- line-height: unset;
615
- font-size: unset;
616
- }
617
-
618
- #gvs-mini-hide img,
619
- #gvs-mini-expand img {
620
- width: 18px;
621
- }
622
-
623
- #gvs-mini-expand img {
624
- margin-left: 0;
625
- visibility: visible;
626
- }
627
- }
628
-
629
-
630
- /* Geocoder search bar */
631
- #gvs-widget-search-bar {
632
- height: 40px;
633
- border-radius: 20px;
634
- padding-left: 10px;
635
- padding-right: 4px;
636
- }
637
-
638
- #gvs-widget-search-bar input {
639
- font-size: 1.0em;
640
- width: 310px;
641
- max-width: calc(75vw - 60px);
642
- }
643
-
644
- #gvs-widget-search-bar .gvs-search-bar-results { top: 45px; }
645
-
646
- #gvs-widget-search-bar .maplibregl-ctrl.maplibregl-ctrl-group {
647
- box-shadow: none;
648
- background: none;
649
- margin-left: -5px;
650
- }
651
-
652
- #gvs-widget-search-bar button.maplibregl-ctrl-geolocate {
653
- border-radius: 15px;
654
- }
655
-
656
-
657
- /* Filters */
658
- #gvs-filter { margin-bottom: 5px; }
659
- .gvs-filters-active {
660
- width: 15px;
661
- height: 15px;
662
- border-radius: 8px;
663
- border: 3px solid white;
664
- position: absolute;
665
- left: 20px;
666
- top: 5px;
667
- background-color: var(--orange);
668
- }
669
- #gvs-filter-panel {
670
- width: 350px;
671
- max-width: 350px;
672
- padding: 0;
673
- }
674
- #gvs-filter-panel .gvs-filter-active {
675
- background-color: var(--widget-bg-active);
676
- border-color: var(--widget-bg-active);
677
- color: var(--widget-font-active);
678
- }
679
- #gvs-filter-panel input[type=date] {
680
- min-width: 0;
681
- flex-grow: 2;
682
- padding: 2px 0;
683
- text-align: center;
684
- }
685
- #gvs-filter-camera-model, #gvs-filter-search-user { width: 100%; }
686
- #gvs-filter-search-user.gvs-filter-active input {
687
- color: var(--widget-font-active);
688
- background: none;
689
- }
690
- .gvs-filter-block {
691
- position: relative;
692
- padding: 10px 15px;
693
- border-bottom: 2px solid var(--widget-border-div);
694
- }
695
- .gvs-filter-block:first-child {
696
- padding-top: 15px;
697
- }
698
- .gvs-filter-block:last-child {
699
- border-bottom: none;
700
- padding-bottom: 15px;
701
- }
702
- .gvs-filter-zoomin {
703
- z-index: 10;
704
- background-color: rgba(255,255,255,0.8);
705
- text-align: center;
706
- font-weight: bold;
707
- position: absolute;
708
- top: 0;
709
- right: 0;
710
- left: 0;
711
- bottom: 0;
712
- display: flex;
713
- justify-content: center;
714
- align-items: center;
715
- border-radius: 25px;
716
- }
717
-
718
- #gvs-filter-qualityscore {
719
- gap: 0px;
720
- justify-content: center;
721
- height: 42px;
722
- }
723
-
724
- .gvs-qualityscore, #gvs-filter-qualityscore label {
725
- font-size: 18px;
726
- width: 25px;
727
- height: 30px;
728
- line-height: 26px;
729
- display: inline-block;
730
- border: 1px solid white;
731
- text-align: center;
732
- background-color: gray;
733
- color: rgba(255,255,255,0.9);
734
- font-family: sans-serif;
735
- font-weight: bold;
736
- vertical-align: middle;
737
- }
738
- #gvs-filter-qualityscore label { cursor: pointer; }
739
- #gvs-filter-qualityscore label:hover {
740
- width: 28px;
741
- height: 35px;
742
- line-height: 30px;
743
- border-radius: 3px;
744
- font-size: 22px;
745
- color: white;
746
- border: 2px solid white;
747
- }
748
- .gvs-qualityscore:first-of-type,
749
- #gvs-filter-qualityscore label:first-of-type {
750
- border-top-left-radius: 8px;
751
- border-bottom-left-radius: 8px;
752
- }
753
- .gvs-qualityscore:last-of-type,
754
- #gvs-filter-qualityscore label:last-of-type {
755
- border-top-right-radius: 8px;
756
- border-bottom-right-radius: 8px;
757
- }
758
- #gvs-filter-qualityscore input[type="checkbox"] { display: none; }
759
- .gvs-qualityscore-selected,
760
- #gvs-filter-qualityscore input[type="checkbox"]:checked + label {
761
- width: 30px;
762
- height: 42px;
763
- line-height: 37px;
764
- border-radius: 8px;
765
- font-size: 27px;
766
- color: white;
767
- border: 2px solid white;
768
- }
769
-
770
-
771
- /* Map layers */
772
- #gvs-map-bg {
773
- justify-content: space-evenly;
774
- margin: 10px 0 15px 0;
775
- }
776
- #gvs-map-bg input { display: none; }
777
- #gvs-map-bg label { cursor: pointer; }
778
-
779
- #gvs-map-bg img {
780
- width: 44px;
781
- border-radius: 5px;
782
- vertical-align: middle;
783
- margin-right: 5px;
784
- border: 2px solid var(--widget-bg);
785
- }
786
-
787
- #gvs-map-bg input:checked + label img {
788
- outline: 3px solid var(--widget-border-btn);
789
- }
790
-
791
- #gvs-map-layers { margin-bottom: 5px; }
792
- #gvs-map-layers-panel { right: 0; }
793
-
794
- .gvs-map-theme-legend {
795
- display: flex;
796
- flex-wrap: wrap;
797
- margin-top: 5px;
798
- justify-content: space-evenly;
799
- }
800
-
801
- .gvs-map-theme-legend .gvs-map-theme-legend-entry {
802
- margin: 10px 8px 5px 0px;
803
- line-height: 12px;
804
- display: flex;
805
- align-items: center;
806
- font-size: 1.0em;
807
- }
808
-
809
- .gvs-map-theme-color {
810
- display: inline-block;
811
- width: 15px;
812
- height: 15px;
813
- border-radius: 3px;
814
- margin-right: 5px;
815
- }
816
-
817
- #gvs-map-theme-legend-score {
818
- justify-content: center;
819
- gap: 0;
820
- }
821
-
822
-
823
- /* Player */
824
- #gvs-widget-player { justify-content: center; }
825
- #gvs-player-prev,
826
- #gvs-player-play,
827
- #gvs-player-next {
828
- color: var(--widget-font-btn-direct);
829
- }
830
-
831
- #gvs-player-prev:disabled,
832
- #gvs-player-play:disabled,
833
- #gvs-player-next:disabled {
834
- color: var(--widget-font-btn-inactive);
835
- }
836
-
837
- #gvs-player-more-panel {
838
- display: flex;
839
- top: 56px;
840
- }
841
-
842
- .gvs-player-options {
843
- width: 280px;
844
- }
845
-
846
- .gvs-player-options.gvs-hidden {
847
- display: flex !important;
848
- }
849
-
850
- #gvs-player-contrast {
851
- margin-left: 10px;
852
- display: inline-block;
853
- padding: 2px 7px;
854
- background: none;
855
- border: 1px solid var(--widget-border-btn);
856
- border-radius: 8px;
857
- color: var(--widget-font-btn-direct);
858
- cursor: pointer;
859
- font-size: 1em;
860
- text-decoration: none;
861
- }
862
-
863
- #gvs-player-contrast.gvs-btn-active {
864
- background-color: var(--widget-bg-active);
865
- border-color: var(--widget-bg-active);
866
- color: var(--widget-font-active);
867
- }
868
-
869
-
870
- /* Share panel */
871
- #gvs-share-panel {
872
- right: 66px;
873
- bottom: 0px;
874
- }
875
-
876
-
877
- /* Zoom */
878
- #gvs-widget-zoom button {
879
- color: var(--widget-font-btn-direct);
880
- }